@deephaven/embed-widget 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/build/assets/{App-B2pAGQHM.js → App-DFqGoHYq.js} +2 -2
  2. package/build/assets/{App-B2pAGQHM.js.map → App-DFqGoHYq.js.map} +1 -1
  3. package/build/assets/{Chart-D0mvOQeR.js → Chart-BAZStsT0.js} +2 -2
  4. package/build/assets/{Chart-D0mvOQeR.js.map → Chart-BAZStsT0.js.map} +1 -1
  5. package/build/assets/{IrisGrid-BAEWjqsP.js → IrisGrid-CyXfKXgA.js} +2 -2
  6. package/build/assets/{IrisGrid-BAEWjqsP.js.map → IrisGrid-CyXfKXgA.js.map} +1 -1
  7. package/build/assets/{IrisGridThemeProvider-BASQ6h4_.js → IrisGridThemeProvider-CAY_rTT5.js} +2 -2
  8. package/build/assets/{IrisGridThemeProvider-BASQ6h4_.js.map → IrisGridThemeProvider-CAY_rTT5.js.map} +1 -1
  9. package/build/assets/{LocalWorkspaceStorage-mvICFrlR.js → LocalWorkspaceStorage-CcbJLfPu.js} +2 -2
  10. package/build/assets/{LocalWorkspaceStorage-mvICFrlR.js.map → LocalWorkspaceStorage-CcbJLfPu.js.map} +1 -1
  11. package/build/assets/{LogPanel-BcMugwec.js → LogPanel-BRdhFP_O.js} +2 -2
  12. package/build/assets/{LogPanel-BcMugwec.js.map → LogPanel-BRdhFP_O.js.map} +1 -1
  13. package/build/assets/{MarkdownEditor-CdTPlZEB.js → MarkdownEditor-DaCgWpvb.js} +2 -2
  14. package/build/assets/{MarkdownEditor-CdTPlZEB.js.map → MarkdownEditor-DaCgWpvb.js.map} +1 -1
  15. package/build/assets/{MarkdownNotebook-C4vSRTHg.js → MarkdownNotebook-gTI6V8hJ.js} +2 -2
  16. package/build/assets/{MarkdownNotebook-C4vSRTHg.js.map → MarkdownNotebook-gTI6V8hJ.js.map} +1 -1
  17. package/build/assets/{index-ClzsYCKK.js → index-1BdymvWW.js} +3 -3
  18. package/build/assets/{index-ClzsYCKK.js.map → index-1BdymvWW.js.map} +1 -1
  19. package/build/assets/{index-IcoubmP7.js → index-DJl8L7il.js} +4 -4
  20. package/build/assets/{index-IcoubmP7.js.map → index-DJl8L7il.js.map} +1 -1
  21. package/build/assets/{index-Oq9pYG4A.js → index-DfCbRjkn.js} +4 -4
  22. package/build/assets/index-DfCbRjkn.js.map +1 -0
  23. package/build/index.html +2 -2
  24. package/package.json +9 -9
  25. package/build/assets/index-Oq9pYG4A.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Oq9pYG4A.js","sources":["../../../components/dist/spectrum/TabPanels.js","../../../log/dist/LogExport.js","../../../react-hooks/dist/SelectionUtils.js","../../../react-hooks/dist/useCallbackWithAction.js","../../../react-hooks/dist/useChangeEventValueCallback.js","../../../react-hooks/dist/useMappedRef.js","../../../react-hooks/dist/useContentRect.js","../../../react-hooks/dist/useDelay.js","../../../react-hooks/dist/useDependentState.js","../../../react-hooks/dist/useEffectNTimesWhen.js","../../../react-hooks/dist/useIsEqualMemo.js","../../../react-hooks/dist/useFormWithDetachedSubmitButton.js","../../../react-hooks/dist/useMappedSelection.js","../../../react-hooks/dist/useOnScrollRef.js","../../../react-hooks/dist/usePropChangeCallback.js","../../../react-hooks/dist/useDebouncedValue.js","../../../react-hooks/dist/useSetAttributesCallback.js","../../../react-hooks/dist/useSpectrumDisableSpellcheckRef.js","../../../components/dist/spectrum/utils/propsUtils.js","../../../components/dist/spectrum/utils/useStringifiedMultiSelection.js","../../../components/dist/theme/ThemePicker.js","../../../components/dist/theme/Logo.js","../../../components/dist/theme/useExternalTheme.js","../../../components/dist/theme/FontBootstrap.js","../../../components/dist/theme/FontsLoaded.js","../../../components/dist/spectrum/comboBox/ComboBoxNormalized.js","../../../components/dist/spectrum/listView/ListViewWrapper.js","../../../components/dist/spectrum/listView/ListView.js","../../../components/dist/spectrum/listView/ListViewNormalized.js","../../../components/dist/spectrum/View.js","../../../components/dist/spectrum/CheckboxGroup.js","../../../components/dist/dialogs/ActionButtonDialogTrigger.js","../../../components/dist/dialogs/ConfirmationDialog.js","../../../components/dist/actions/ConfirmActionButton.js","../../../components/dist/actions/IconActionButton.js","../../../components/dist/AutoCompleteInput.js","../../../components/dist/AutoResizeTextarea.js","../../../components/dist/modal/DebouncedModal.js","../../../components/dist/modal/InfoModal.js","../../../components/dist/BulkActionBar.js","../../../components/dist/context-actions/ContextMenu.js","../../../components/dist/context-actions/ContextMenuRoot.js","../../../components/dist/Collapse.js","../../../components/dist/TimeInput.js","../../../components/dist/CustomTimeSelect.js","../../../components/dist/DateInput.js","../../../components/dist/shortcuts/NavigationShortcuts.js","../../../components/dist/EditableItemList.js","../../../components/dist/ErrorView.js","../../../components/dist/HierarchicalCheckboxMenu.js","../../../components/dist/navigation/NavTab.js","../../../components/dist/navigation/DashboardList.js","../../../components/dist/navigation/NavTabList.js","../../../components/dist/RandomAreaPlotAnimation.js","../../../components/dist/TextWithTooltip.js","../../../components/dist/SearchableCombobox.js","../../../components/dist/TableViewEmptyState.js","../../../components/dist/TimeSlider.js","../../../components/dist/ToastNotification.js","../../../jsapi-bootstrap/dist/DeferredApiBootstrap.js","../../../jsapi-bootstrap/dist/useObjectFetch.js","../../../jsapi-bootstrap/dist/useWidget.js","../../../jsapi-components/dist/HookTestUtils.js","../../../jsapi-utils/dist/MessageUtils.js","../../../jsapi-utils/dist/NoConsolesError.js","../../../jsapi-utils/dist/SessionUtils.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/spectrum/ComboBox.js","../../../jsapi-components/dist/spectrum/ListView.js","../../../jsapi-components/dist/TableDropdown.js","../../../jsapi-components/dist/useBroadcastChannel.js","../../../jsapi-components/dist/useBroadcastLoginListener.js","../../../jsapi-components/dist/useCheckIfExistsValue.js","../../../jsapi-components/dist/useDebouncedViewportSearch.js","../../../jsapi-components/dist/useDebouncedViewportSelectionFilter.js","../../../jsapi-components/dist/useFilteredItemsWithDefaultValue.js","../../../jsapi-components/dist/useGetItemPosition.js","../../../jsapi-components/dist/useNotNullOrEmptyFilter.js","../../../jsapi-components/dist/usePickerWithSelectedValues.js","../../../jsapi-components/dist/useSelectDistinctTable.js","../../../jsapi-components/dist/useShowOnlyEmptyFilter.js","../../../jsapi-components/dist/useValueFilter.js","../../../plugin/dist/useCustomThemes.js","../../../plugin/dist/WidgetView.js","../../../dashboard/dist/layout/useDashboardPanel.js","../../../dashboard/dist/redux/hooks.js","../../../plugin/dist/usePluginsElementMap.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","../../../chart/dist/MockChartModel.js","../../../console/dist/monaco/MonacoThemeProvider.js","../../../console/dist/monaco/ruffSchema.js","../../../console/dist/monaco/RuffSettingsModal.js","../../../iris-grid/dist/IrisGridTestUtils.js","../../../app-utils/dist/plugins/remote-component.config.js","../../../app-utils/dist/plugins/loadRemoteModule.js","../../../app-utils/dist/plugins/PluginUtils.js","../../../app-utils/dist/plugins/RemoteComponent.js","../../../app-utils/dist/components/PluginsBootstrap.js","../../../app-utils/dist/components/LoginNotifier.js","../../../app-utils/dist/components/AuthBootstrap.js","../../../app-utils/dist/components/ConnectionBootstrap.js","../../../app-utils/dist/utils/ConnectUtils.js","../../../app-utils/dist/utils/createExportLogsContextAction.js","../../../app-utils/dist/components/UserBootstrap.js","../../../app-utils/dist/components/ThemeBootstrap.js","../../../app-utils/dist/components/AppBootstrap.js","../../../app-utils/dist/storage/grpc/GrpcFileStorageTable.js","../../../app-utils/dist/storage/grpc/GrpcFileStorage.js"],"sourcesContent":["var _excluded = [\"children\", \"keepMounted\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport React, { useMemo, useRef } from 'react';\nimport { createHtmlPortalNode, InPortal, OutPortal } from 'react-reverse-portal';\nimport { Item, TabPanels } from '@adobe/react-spectrum';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Wrapper for react-spectrum TabPanels that adds support for keeping panels mounted\n * when not visible using the `keepMounted` prop.\n * Panels created with a render function will not be kept mounted.\n */\nexport function DHCTabPanels(props) {\n var {\n children,\n keepMounted: keepMountedProp = false\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var keepMounted = keepMountedProp && typeof children !== 'function';\n var portalNodeMap = useRef(new Map());\n var portalNodes = useMemo(() => {\n var nodes = [];\n var nextNodeMap = new Map(); // Keep track of the portals we use so we can clean up stale portals\n if (!keepMounted) {\n portalNodeMap.current = nextNodeMap;\n return nodes;\n }\n React.Children.forEach(children, child => {\n // Spectrum would ignore these anyway because it uses Item key to determine if the panel mounts\n if (child == null || child.key == null) {\n return;\n }\n\n // Skip children with function-based content (i.e. ItemRenderer) as it can't be portaled\n if (typeof child.props.children === 'function') {\n throw new Error('DHCTabPanels cannot use keepMounted with an ItemRenderer function as its children');\n }\n var portal = portalNodeMap.current.get(child.key);\n if (portal == null) {\n portal = createHtmlPortalNode({\n attributes: {\n // Should make the placeholder div not affect layout and act as if children are mounted directly to the parent\n style: 'display: contents'\n }\n });\n }\n nextNodeMap.set(child.key, portal);\n nodes.push(/*#__PURE__*/_jsx(InPortal, {\n node: portal,\n children: child.props.children\n }, child.key));\n });\n portalNodeMap.current = nextNodeMap;\n return nodes;\n }, [children, keepMounted]);\n var mappedChildren = useMemo(() => {\n var newChildren = [];\n if (!keepMounted) {\n return newChildren;\n }\n // Need to use forEach instead of map because map always changes the key of the returned elements\n React.Children.forEach(children, child => {\n if (child == null || child.key == null) {\n newChildren.push(child);\n return;\n }\n var portal = portalNodeMap.current.get(child.key);\n if (portal == null) {\n newChildren.push(child);\n return;\n }\n newChildren.push(/*#__PURE__*/_jsx(Item, {\n children: /*#__PURE__*/_jsx(OutPortal, {\n node: portal\n })\n }, child.key));\n });\n return newChildren;\n }, [children, keepMounted]);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [keepMounted && portalNodes, /*#__PURE__*/_jsx(TabPanels\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, rest), {}, {\n children: keepMounted ? mappedChildren : children\n }))]\n });\n}\n//# sourceMappingURL=TabPanels.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport JSZip from 'jszip';\nimport { configure } from 'safe-stable-stringify';\n// List of paths to ignore\n// '' represents the root object\n// * represents a wildcard key\nexport var DEFAULT_PATH_IGNORE_LIST = [['api'], ['client'], ['dashboardData', '*', 'connection'], ['dashboardData', '*', 'sessionWrapper'], ['dashboardData', '*', 'openedMap'], ['layoutStorage'], ['storage']];\n\n// The default maximum depth to serialize to in the redux data\nvar DEFAULT_MAXIMUM_DEPTH = 10;\nfunction stringifyReplacer(ignoreList) {\n // modified from:\n // https://stackoverflow.com/questions/61681176/json-stringify-replacer-how-to-get-full-path\n var pathMap = new Map();\n // replacer function is also called for the initial object, key is \"\"\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#the_replacer_parameter\n\n return function replacer(key, value) {\n var _pathMap$get;\n // get and store path\n var currPath = [...((_pathMap$get = pathMap.get(this)) !== null && _pathMap$get !== void 0 ? _pathMap$get : []), key];\n if (value === Object(value)) pathMap.set(value, [...currPath]);\n currPath.shift();\n\n // check ignore list\n if (isOnIgnoreList(currPath, ignoreList)) {\n return undefined;\n }\n if (value instanceof Map) {\n return Array.from(value.entries());\n }\n\n // not in ignore list, return value\n return value;\n };\n}\nfunction isOnIgnoreList(currPath, ignoreList) {\n var _loop = function _loop(i) {\n if (currPath.length === ignoreList[i].length && currPath.every((v, index) => ignoreList[i][index] === '*' || v === ignoreList[i][index])) {\n // ignore list match\n return {\n v: true\n };\n }\n },\n _ret;\n for (var i = 0; i < ignoreList.length; i += 1) {\n _ret = _loop(i);\n if (_ret) return _ret.v;\n }\n return false;\n}\nexport function getReduxDataString(reduxData) {\n var _stringify;\n var ignoreList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var maximumDepth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_MAXIMUM_DEPTH;\n // Limit the maximum depth to prevent linked structures from blowing up the log size\n // All objects at the maximum depth are replaced with \"[Object]\" or \"[Array]\"\n var stringify = configure({\n maximumDepth\n });\n return (// Using safe-stable-stringify which handles circular references and BigInt\n // All circular references are replaced with \"[Circular]\", and BigInt values are converted to a number\n (_stringify = stringify(reduxData, stringifyReplacer(ignoreList), 2 // Indent w/ 2 spaces\n )) !== null && _stringify !== void 0 ? _stringify : ''\n );\n}\nfunction getFormattedMetadata(metadata) {\n return JSON.stringify(metadata, null, 2);\n}\n\n/** Format a date to a string that can be used as a file name\n * @param date Date to format\n * @returns A string formatted as YYYY-MM-DD-HHMMSS\n */\nfunction formatDate(date) {\n var year = date.getFullYear();\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var day = String(date.getDate()).padStart(2, '0');\n var h = String(date.getHours()).padStart(2, '0');\n var m = String(date.getMinutes()).padStart(2, '0');\n var s = String(date.getSeconds()).padStart(2, '0');\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day, \"-\").concat(h).concat(m).concat(s);\n}\n\n/**\n * Export support logs with the given name.\n * @param logHistory Log history to include in the console.txt file\n * @param metadata Additional metadata to include in the metadata.json file\n * @param reduxData Redux data to include in the redux.json file\n * @param ignoreList List of JSON paths to ignore in redux data. A JSON path is a list representing the path to that value (e.g. client.data would be `['client', 'data']`). Wildcards (*) are accepted in the path.\n * @param fileNamePrefix The zip file name without the .zip extension. Ex: test will be saved as test.zip\n * @param maximumDepth The maximum depth to serialize the redux data to. Objects at the maximum depth will be replaced with \"[Object]\" or \"[Array]\".\n * @returns A promise that resolves successfully if the log archive is created and downloaded successfully, rejected if there's an error\n */\nexport function exportLogs(_x, _x2, _x3) {\n return _exportLogs.apply(this, arguments);\n}\nfunction _exportLogs() {\n _exportLogs = _asyncToGenerator(function* (logHistory, metadata, reduxData) {\n var ignoreList = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_PATH_IGNORE_LIST;\n var fileNamePrefix = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : \"\".concat(formatDate(new Date()), \"_support_logs\");\n var maximumDepth = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : DEFAULT_MAXIMUM_DEPTH;\n var zip = new JSZip();\n var folder = zip.folder(fileNamePrefix);\n folder.file('console.txt', logHistory.getFormattedHistory());\n if (metadata != null) {\n folder.file('metadata.json', getFormattedMetadata(metadata));\n }\n if (reduxData != null) {\n folder.file('redux.json', getReduxDataString(reduxData, ignoreList, maximumDepth));\n }\n var blob = yield zip.generateAsync({\n type: 'blob'\n });\n var link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = \"\".concat(fileNamePrefix, \".zip\");\n link.click();\n });\n return _exportLogs.apply(this, arguments);\n}\n//# sourceMappingURL=LogExport.js.map","import { generateRange } from '@deephaven/utils';\n\n/**\n * Returns the number of selected items or 'all' if all items are selected.\n * @param size Total size of collection that can have selections\n * @param selection Set of selected keys or 'all'\n */\nexport function getSelectedItemCountOrAll(size, selection) {\n if (size === 0) {\n return 0;\n }\n if (selection === 'all' || size === selection.size) {\n return 'all';\n }\n return selection.size;\n}\n\n/**\n * Check 2 SelectionT objects for value equality.\n * @param selectionA\n * @param selectionB\n */\nexport function isSelectionEqual(selectionA, selectionB) {\n if (selectionA === selectionB) {\n return true;\n }\n if (selectionA === 'all' || selectionB === 'all') {\n return false;\n }\n if (selectionA.size !== selectionB.size) {\n return false;\n }\n return [...selectionA.keys()].every(key => selectionB.has(key));\n}\n\n/**\n * Check 2 `SelectionMaybeInverted` instances for value equality.\n * @param selectionA\n * @param selectionB\n */\nexport function isSelectionMaybeInvertedEqual(selectionA, selectionB) {\n return selectionA.isInverted === selectionB.isInverted && isSelectionEqual(selectionA.selection, selectionB.selection);\n}\n\n/**\n * Map a React Spectrum `Selection` to another `Selection`\n * @param selectedItemKeys\n * @param getItem\n * @param mapItem\n */\nexport function mapSelection(selectedItemKeys, getItem, mapItem) {\n if (selectedItemKeys === 'all') {\n return 'all';\n }\n var keys = [...selectedItemKeys.keys()];\n return new Set(keys.map(key => {\n var item = getItem(key);\n if (item === undefined) {\n throw new Error(\"Could not find item with key \".concat(key));\n }\n return mapItem(item);\n }));\n}\n\n/**\n * Takes a Selection state and determines if there is a more optimal selection\n * that can be used. For example, if the user selects all and then deselects an\n * item, we want to filter by \"not that value\" instead of equal to all selected\n * values. Similarly, if 'all' items are selected, we want to optimize this as\n * \"no filter\".\n * @param selection The selection to optimize\n * @param totalRecords The total number of records that can potentially be selected\n * @param getKey A function to get the key for a given index.\n */\nexport function optimizeSelection(selection, totalRecords, getKey) {\n var isInverted = selection === 'all' || selection.size > totalRecords / 2;\n var optimizedSelection = selection;\n if (isInverted) {\n optimizedSelection = selection === 'all' ? new Set() : new Set(\n // Create a new set from any key that is not selected\n [...generateRange(0, totalRecords - 1)].map(getKey).filter(key => !selection.has(key)));\n }\n return {\n selection: optimizedSelection,\n isInverted\n };\n}\n//# sourceMappingURL=SelectionUtils.js.map","import { useCallback } from 'react';\n\n/**\n * Wrap a callback function + an additional \"action\" function in\n * a new function. The new function takes the parameters belonging to\n * the callback and passes them through. The action function will\n * not receive any parameters.\n * @param callback Function\n * @param action Parameterless function to call after the callback\n */\nexport function useCallbackWithAction(callback, action) {\n return useCallback(function () {\n var result = callback(...arguments);\n action();\n return result;\n }, [action, callback]);\n}\nexport default useCallbackWithAction;\n//# sourceMappingURL=useCallbackWithAction.js.map","import { useCallback } from 'react';\n\n/**\n * Returns a callback function that calls the given callback with the `target.value` of\n * an input change event.\n * @param callback the callback to call with the `target.value`\n * @returns a callback function that calls the given callback with the `target.value`\n * @example\n * const [value, setValue] = useState('');\n * const onChange = useChangeEventValueCallback(setValue);\n * <input value={value} onChange={onChange} />\n */\nexport function useChangeEventValueCallback(callback) {\n return useCallback(event => {\n callback(event.target.value);\n }, [callback]);\n}\nexport default useChangeEventValueCallback;\n//# sourceMappingURL=useChangeEventValueCallback.js.map","import { useCallback } from 'react';\n\n/**\n * Returns a callback ref that will map it's argument\n * and set the given targetRef with the result.\n * @param targetRef Ref to assign mapped result to\n * @param map Function to map given ref value to another value\n */\nexport function useMappedRef(targetRef, map) {\n return useCallback(ref => {\n if (typeof targetRef === 'function') {\n targetRef(map(ref));\n } else {\n // eslint-disable-next-line no-param-reassign\n targetRef.current = map(ref);\n }\n }, [map, targetRef]);\n}\nexport default useMappedRef;\n//# sourceMappingURL=useMappedRef.js.map","import { identityExtractHTMLElement } from '@deephaven/utils';\nimport { useCallback, useMemo, useState } from 'react';\nimport useMappedRef from \"./useMappedRef.js\";\nimport useResizeObserver from \"./useResizeObserver.js\";\n/**\n * Returns a callback ref that will track the `contentRect` of a given refValue.\n * If the `contentRect` is undefined, it will be set to a new `DOMRect` with\n * zeros for all dimensions.\n * @param map Optional mapping function to extract an HTMLElement from the given\n * refValue\n * @returns Content rect and a ref callback\n */\nexport function useContentRect() {\n var map = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : identityExtractHTMLElement;\n var [x, setX] = useState(0);\n var [y, setY] = useState(0);\n var [width, setWidth] = useState(0);\n var [height, setHeight] = useState(0);\n var contentRect = useMemo(() => new DOMRect(x, y, width, height), [height, width, x, y]);\n var [el, setEl] = useState(null);\n\n // Callback ref maps the passed in refValue and passes to `setEl`\n var ref = useMappedRef(setEl, map);\n var handleResize = useCallback(_ref => {\n var _firstEntry$contentRe;\n var [firstEntry] = _ref;\n var rect = (_firstEntry$contentRe = firstEntry === null || firstEntry === void 0 ? void 0 : firstEntry.contentRect) !== null && _firstEntry$contentRe !== void 0 ? _firstEntry$contentRe : {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n setX(rect.x);\n setY(rect.y);\n setWidth(rect.width);\n setHeight(rect.height);\n }, []);\n useResizeObserver(el, handleResize);\n return {\n ref,\n contentRect\n };\n}\nexport default useContentRect;\n//# sourceMappingURL=useContentRect.js.map","import { useEffect, useState } from 'react';\n\n/**\n * Sets a delay, and returns a boolean indicating whether the delay is still active.\n * @param delayMs The delay in milliseconds\n * @returns A boolean indicating whether the delay is still active\n */\nexport function useDelay(delayMs) {\n var [isDelayed, setIsDelayed] = useState(true);\n useEffect(() => {\n var timeout = setTimeout(() => {\n setIsDelayed(false);\n }, delayMs);\n return () => {\n clearTimeout(timeout);\n };\n }, [delayMs]);\n return isDelayed;\n}\nexport default useDelay;\n//# sourceMappingURL=useDelay.js.map","import { useEffect, useState } from 'react';\n\n/**\n * Returns a stateful value, and a function to update it. The value will also\n * be updated if the input value changes.\n * @param inputValue This will be used as the initial state value and will also\n * update the state if it changes.\n */\nexport function useDependentState(inputValue) {\n var [state, setState] = useState(inputValue);\n useEffect(() => {\n setState(inputValue);\n }, [inputValue]);\n return [state, setState];\n}\nexport default useDependentState;\n//# sourceMappingURL=useDependentState.js.map","import { useEffect, useRef } from 'react';\n\n/**\n * Custom useEffect hook that runs an effect function up to `n` times as long\n * as a given `condition` value is true.\n *\n * The effect will be evaluated whenever the dependency array, the value of `n`,\n * or the `condition` value changes. If the counter is < n and the condition is\n * true, the effectCallback will be run, and the counter will be incremented.\n * Note that the counter will never get reset even if parameters change.\n * @param effectCallback Effect function to run\n * @param effectCallbackDependencies Dependencies for the effect function\n * @param n Number of times to run when condition is met\n * @param condition Condition that must be true to run\n */\nexport function useEffectNTimesWhen(effectCallback, effectCallbackDependencies, n, condition) {\n var countRef = useRef(0);\n useEffect(() => {\n if (countRef.current >= n) {\n return;\n }\n if (condition) {\n countRef.current += 1;\n effectCallback();\n }\n // The `effectCallback` is intentionally excluded from the dependencies list\n // below since its reference may change on every render. Instead, the\n // `effectCallbackDependencies` arg is used to indicate when a change should\n // invalidate the `effectCallback` reference. The eslint configuration for\n // `react-hooks/exhaustive-deps` will validate that the `effectCallback` and\n // `effectCallbackDependencies` args are in sync at the call site of\n // `useEffectNTimesWhen`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [n, condition, ...effectCallbackDependencies]);\n}\nexport default useEffectNTimesWhen;\n//# sourceMappingURL=useEffectNTimesWhen.js.map","import { useRef } from 'react';\n\n/**\n * Memoize a value based on an isEqual predicate instead of reference equality.\n * @param value Value to memoize\n * @param isEqual Predicate to see if value has changed since last render\n */\nexport function useIsEqualMemo(value, isEqual) {\n var previousValueRef = useRef(value);\n var currentValue = isEqual(previousValueRef.current, value) ? previousValueRef.current : value;\n previousValueRef.current = currentValue;\n return currentValue;\n}\nexport default useIsEqualMemo;\n//# sourceMappingURL=useIsEqualMemo.js.map","import { useCallback, useMemo } from 'react';\nimport { nanoid } from 'nanoid';\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(nanoid()), []);\n var submitButtonRef = useCallback(buttonEl => {\n var _buttonEl$UNSAFE_getD;\n buttonEl === null || buttonEl === void 0 || (_buttonEl$UNSAFE_getD = buttonEl.UNSAFE_getDOMNode()) === null || _buttonEl$UNSAFE_getD === void 0 || _buttonEl$UNSAFE_getD.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","import { useMemo } from 'react';\nimport { mapSelection, optimizeSelection } from \"./SelectionUtils.js\";\n/**\n * Given viewport data, maps the current selectedKeys to an optimized selection.\n * The keys are mapped to new values via a `mapItem` function.\n * @param viewportData The viewport to map selections for\n * @param mapItem A function to map an item in the viewport to a new value\n * @param getKey A function to get the key for an item in the viewport.\n */\nexport function useMappedSelection(viewportData, mapItem, getKey) {\n var {\n getItem,\n selectedKeys,\n items\n } = viewportData;\n return useMemo(() => {\n var {\n selection,\n isInverted\n } = optimizeSelection(selectedKeys, items.length, getKey);\n return {\n selection: mapSelection(selection, getItem, mapItem),\n isInverted\n };\n }, [selectedKeys, items.length, getKey, getItem, mapItem]);\n}\nexport default useMappedSelection;\n//# sourceMappingURL=useMappedSelection.js.map","import { useCallback, useEffect, useRef } from 'react';\nimport { identityExtractHTMLElement } from '@deephaven/utils';\n\n/**\n * Return a ref that can be used to subscribe to scroll events.\n * @param onScroll Scroll event handler\n * @param extractHTMLElement Optional extraction handler to get the HTML element\n * to subscribe to scroll events. If no extraction handler is given, the argument\n * passed to the callback will be subscribed to if it is an HTML element.\n */\nexport function useOnScrollRef(onScroll) {\n var extractHTMLElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identityExtractHTMLElement;\n var cleanupRef = useRef();\n\n // Cleanup on unmount\n useEffect(() => () => {\n var _cleanupRef$current;\n return (_cleanupRef$current = cleanupRef.current) === null || _cleanupRef$current === void 0 ? void 0 : _cleanupRef$current.call(cleanupRef);\n }, []);\n return useCallback(ref => {\n var _cleanupRef$current2;\n (_cleanupRef$current2 = cleanupRef.current) === null || _cleanupRef$current2 === void 0 || _cleanupRef$current2.call(cleanupRef);\n var element = extractHTMLElement(ref);\n if (!element) {\n return;\n }\n element.addEventListener('scroll', onScroll);\n\n // Hold a reference to a function that can cleanup scroll event registration\n cleanupRef.current = () => {\n element.removeEventListener('scroll', onScroll);\n cleanupRef.current = undefined;\n };\n }, [extractHTMLElement, onScroll]);\n}\nexport default useOnScrollRef;\n//# sourceMappingURL=useOnScrollRef.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { useCallback } from 'react';\n\n/**\n * Returns a callback that can update a prop on an object. The update is done\n * by making a copy of the original object with an updated version of the prop\n * and passing the copy to a callback function.\n *\n * e.g.\n * const [value, setValue] = useState({\n * first: 'John',\n * last: 'Doe'\n * });\n *\n * const onLastNameChange = usePropChangeCallback(\n * value,\n * 'last',\n * setValue\n * );\n *\n * // This will create a new object { first: 'John', last: 'Smith' } and pass it to `setValue`\n * onLastNameChange('Smith');\n *\n * The optional `defaultValue` controls the callback signature. If provided, the\n * callback will support passing in null or undefined values.\n *\n * e.g.\n *\n * const onLastNameChange = usePropChangeCallback(\n * value,\n * 'last',\n * setValue,\n * ''\n * );\n *\n * onLastNameChange('Smith'); // { first: 'John', last: 'Smith' }\n * onLastNameChange(null); // { first: 'John', last: '' }\n * onLastNameChange(undefined); // { first: 'John', last: '' }\n *\n * @param value The object to update\n * @param propName The prop name to update\n * @param onChange A callback to pass the newly created object with updated prop value\n * @param defaultValue Optional default value. If provided, the returned callback\n * signature will allow null or undefined values to be passed in.\n */\n\nexport function usePropChangeCallback(value, propName, onChange, defaultValue) {\n var hasDefault = arguments.length === 4;\n return useCallback(propValue => {\n var newValue = hasDefault ? propValue !== null && propValue !== void 0 ? propValue : defaultValue : propValue;\n onChange(_objectSpread(_objectSpread({}, value), {}, {\n [propName]: newValue\n }));\n }, [onChange, value, propName, hasDefault, defaultValue]);\n}\nexport default usePropChangeCallback;\n//# sourceMappingURL=usePropChangeCallback.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 + whether the value is still debouncing\n */\nexport function useDebouncedValue(value, debounceMs) {\n var [isDebouncing, setIsDebouncing] = useState(true);\n var [debouncedValue, setDebouncedValue] = useState(value);\n\n // Keep `isDebouncing` in sync with `value` and `debounceMs` by setting state\n // during render instead of in `useEffect`\n // https://react.dev/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes\n var [previousValue, setPreviousValue] = useState(value);\n var [previousDebounceMs, setPreviousDebounceMs] = useState(debounceMs);\n if (value !== previousValue || debounceMs !== previousDebounceMs) {\n setIsDebouncing(true);\n setPreviousValue(value);\n setPreviousDebounceMs(debounceMs);\n }\n useEffect(() => {\n var isCancelled = false;\n var timeoutId = setTimeout(() => {\n if (!isCancelled) {\n setIsDebouncing(false);\n setDebouncedValue(value);\n }\n }, debounceMs);\n return () => {\n isCancelled = true;\n clearTimeout(timeoutId);\n };\n }, [value, debounceMs]);\n return {\n isDebouncing,\n value: debouncedValue\n };\n}\nexport default useDebouncedValue;\n//# sourceMappingURL=useDebouncedValue.js.map","import { useCallback } from 'react';\n\n/**\n * Returns a callback that sets attributes on elements based on given selectors.\n * @param attributes Attributes object containing prop name + values to set\n * @param selectors Optional `querySelector` param to target child elements. If\n * omitted, will target the rootEl\n */\nexport function useSetAttributesCallback(attributes, selectors) {\n return useCallback(rootEl => {\n if (rootEl == null) {\n return;\n }\n var targets = selectors == null ? [rootEl] : rootEl.querySelectorAll(selectors);\n targets.forEach(target => {\n Object.entries(attributes).forEach(_ref => {\n var [prop, value] = _ref;\n target.setAttribute(prop, value);\n });\n });\n }, [attributes, selectors]);\n}\nexport default useSetAttributesCallback;\n//# sourceMappingURL=useSetAttributesCallback.js.map","import { extractSpectrumHTMLElement } from \"./SpectrumUtils.js\";\nimport useMappedRef from \"./useMappedRef.js\";\nimport useSetAttributesCallback from \"./useSetAttributesCallback.js\";\nexport var SPELLCHECK_FALSE_ATTRIBUTE = {\n spellCheck: false\n};\n\n/**\n * Returns a callback ref that can be assigned to a React Spectrum component.\n * to set `spellCheck=false` on child elements based on given selectors.\n * @param selectors Optional `querySelector` argument to target child elements.\n * If omitted, the attributes will be applied to the root element returned by\n * `UNSAFE_getDOMNode()` on the component ref.\n */\nexport function useSpectrumDisableSpellcheckRef(selectors) {\n var disableSpellcheck = useSetAttributesCallback(SPELLCHECK_FALSE_ATTRIBUTE, selectors);\n return useMappedRef(disableSpellcheck, extractSpectrumHTMLElement);\n}\nexport default useSpectrumDisableSpellcheckRef;\n//# sourceMappingURL=useSpectrumDisableSpellcheckRef.js.map","var _excluded = [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-details\", \"marginX\", \"marginY\", \"width\", \"height\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\", \"flex\", \"flexGrow\", \"flexShrink\", \"flexBasis\", \"justifySelf\", \"alignSelf\", \"order\", \"gridArea\", \"gridColumn\", \"gridRow\", \"gridColumnStart\", \"gridColumnEnd\", \"gridRowStart\", \"gridRowEnd\", \"position\", \"zIndex\", \"top\", \"bottom\", \"start\", \"end\", \"left\", \"right\", \"isHidden\"];\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/**\n * Separate props for Spectrum components into AriaLabelingProps, StyleProps, and\n * any remaining props.\n * @param props The props to separate\n * @returns The separated props\n */\nexport function separateSpectrumProps(props) {\n var {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaHidden,\n marginX,\n marginY,\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n flex,\n flexGrow,\n flexShrink,\n flexBasis,\n justifySelf,\n alignSelf,\n order,\n gridArea,\n gridColumn,\n gridRow,\n gridColumnStart,\n gridColumnEnd,\n gridRowStart,\n gridRowEnd,\n position,\n zIndex,\n top,\n bottom,\n start,\n end,\n left,\n right,\n isHidden\n } = props,\n componentProps = _objectWithoutProperties(props, _excluded);\n return {\n ariaLabelProps: {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaHidden\n },\n styleProps: {\n marginX,\n marginY,\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n flex,\n flexGrow,\n flexShrink,\n flexBasis,\n justifySelf,\n alignSelf,\n order,\n gridArea,\n gridColumn,\n gridRow,\n gridColumnStart,\n gridColumnEnd,\n gridRowStart,\n gridRowEnd,\n position,\n zIndex,\n top,\n bottom,\n start,\n end,\n left,\n right,\n isHidden\n },\n componentProps: componentProps\n };\n}\nexport default separateSpectrumProps;\n//# sourceMappingURL=propsUtils.js.map","import { useCallback, useMemo } from 'react';\nimport { getItemKey, itemSelectionToStringSet } from \"./itemUtils.js\";\n/**\n * Spectrum collection components treat keys as strings if the `key` prop is\n * explicitly set on `Item` elements. Since we do this in `useRenderNormalizedItem`,\n * we need to ensure that keys are strings in order for selection to work. We\n * then need to convert back to the original key types in the onChange handler.\n * This hook encapsulates converting to and from strings so that keys can match\n * the original key type.\n * @param normalizedItems The normalized items to select from.\n * @param selectedKeys The currently selected keys in the collection.\n * @param defaultSelectedKeys The initial selected keys in the collection.\n * @param disabledKeys The currently disabled keys in the collection.\n * @param onChange Handler that is called when the selection changes.\n * @returns UseStringifiedMultiSelectionResult with stringified key sets and\n * string key selection change handler.\n */\nexport function useStringifiedMultiSelection(_ref) {\n var {\n normalizedItems,\n defaultSelectedKeys,\n disabledKeys,\n selectedKeys,\n onChange\n } = _ref;\n var selectedStringKeys = useMemo(() => itemSelectionToStringSet(selectedKeys), [selectedKeys]);\n var defaultSelectedStringKeys = useMemo(() => itemSelectionToStringSet(defaultSelectedKeys), [defaultSelectedKeys]);\n var disabledStringKeys = useMemo(() => itemSelectionToStringSet(disabledKeys), [disabledKeys]);\n var onStringSelectionChange = useCallback(keys => {\n if (onChange == null) {\n return;\n }\n if (keys === 'all') {\n onChange('all');\n return;\n }\n var actualKeys = new Set();\n normalizedItems.forEach(item => {\n if (keys.has(String(getItemKey(item)))) {\n actualKeys.add(getItemKey(item));\n }\n });\n onChange(actualKeys);\n }, [normalizedItems, onChange]);\n return {\n selectedStringKeys,\n defaultSelectedStringKeys,\n disabledStringKeys,\n onStringSelectionChange\n };\n}\nexport default useStringifiedMultiSelection;\n//# sourceMappingURL=useStringifiedMultiSelection.js.map","import { useCallback } from 'react';\nimport { Item, Picker } from '@adobe/react-spectrum';\nimport useTheme from \"./useTheme.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ThemePicker() {\n var {\n selectedThemeKey,\n setSelectedThemeKey,\n themes\n } = useTheme();\n var onSelectionChange = useCallback(key => {\n if (key != null) {\n setSelectedThemeKey(\"\".concat(key));\n }\n }, [setSelectedThemeKey]);\n return /*#__PURE__*/_jsx(Picker, {\n label: \"Pick a color scheme\",\n items: themes,\n selectedKey: selectedThemeKey,\n onSelectionChange: onSelectionChange,\n children: item => /*#__PURE__*/_jsx(Item, {\n children: item.name\n }, item.themeKey)\n });\n}\nexport default ThemePicker;\n//# sourceMappingURL=ThemePicker.js.map","import classNames from 'classnames';\nimport \"./Logo.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function Logo(_ref) {\n var {\n className,\n style\n } = _ref;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('dh-logo', className),\n style: style\n });\n}\nexport default Logo;\n//# sourceMappingURL=Logo.js.map","import { useCallback, useEffect, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { getWindowParent } from '@deephaven/utils';\nimport { MSG_REQUEST_SET_THEME } from \"./ThemeModel.js\";\nimport { isExternalThemeData, isExternalThemeEnabled, parseExternalThemeData, requestExternalThemeData } from \"./ThemeUtils.js\";\nvar logger = Log.module('useExternalTheme');\n/**\n * If external theme is configured via `theme=EXTERNAL_THEME_KEY` query param,\n * handle `postMessage` communication to retrieve the theme data from the parent\n * Window. The hook will also listen for `MSG_REQUEST_SET_THEME` messages from\n * the parent and current Window to allow explicitly setting the theme.\n */\nexport function useExternalTheme() {\n var [result, setResult] = useState(() => {\n var isEnabled = isExternalThemeEnabled();\n return {\n isEnabled,\n isPending: isEnabled\n };\n });\n\n /** Parse external theme data and update the result */\n var handleExternalThemeData = useCallback(externalThemeData => {\n var themeData = parseExternalThemeData(externalThemeData);\n setResult({\n isEnabled: true,\n isPending: false,\n themeData\n });\n }, []);\n useEffect(() => {\n if (!result.isEnabled) {\n return;\n }\n logger.debug('Requesting external theme data');\n\n /** Parent or current Window can explicitly set the theme */\n function onMessage(event) {\n var parent = getWindowParent();\n\n // Allow messages from parent or current window\n if (event.source !== window && event.source !== parent) {\n return;\n }\n if (event.data.message === MSG_REQUEST_SET_THEME) {\n if (isExternalThemeData(event.data.payload)) {\n handleExternalThemeData(event.data.payload);\n }\n }\n }\n window.addEventListener('message', onMessage);\n\n /** Request initial theme data from parent window */\n requestExternalThemeData().then(handleExternalThemeData).catch(err => {\n logger.error(err);\n setResult({\n isEnabled: true,\n isPending: false\n });\n });\n return () => {\n window.removeEventListener('message', onMessage);\n };\n }, [handleExternalThemeData, result.isEnabled]);\n return result;\n}\nexport default useExternalTheme;\n//# sourceMappingURL=useExternalTheme.js.map","import React, { createContext, useEffect, useState } from 'react';\nimport '@fontsource/fira-mono/400.css';\nimport '@fontsource/fira-mono/500.css';\nimport '@fontsource/fira-mono/700.css';\nimport '@fontsource/fira-sans/300.css';\nimport '@fontsource/fira-sans/300-italic.css';\nimport '@fontsource/fira-sans/400.css';\nimport '@fontsource/fira-sans/400-italic.css';\nimport '@fontsource/fira-sans/500.css';\nimport '@fontsource/fira-sans/600.css';\nimport '@fontsource/fira-sans/700.css';\nimport '@fontsource/fira-sans/700-italic.css';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport var FontsLoadedContext = /*#__PURE__*/createContext(false);\nFontsLoadedContext.displayName = 'FontsLoadedContext';\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__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontsLoadedContext.Provider, {\n value: isLoaded,\n children: children\n }), /*#__PURE__*/_jsx(\"div\", {\n id: \"preload-fonts\",\n style: {\n visibility: 'hidden',\n position: 'absolute',\n top: -10000\n },\n children: fontClassNames.map(className => /*#__PURE__*/_jsx(\"p\", {\n className: className,\n children: \"preload\"\n }, className))\n })]\n });\n}\nexport default FontBootstrap;\n//# sourceMappingURL=FontBootstrap.js.map","import React, { useContext } from 'react';\nimport LoadingOverlay from \"../LoadingOverlay.js\";\nimport { FontsLoadedContext } from \"./FontBootstrap.js\";\nimport { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nexport function FontsLoaded(_ref) {\n var {\n children\n } = _ref;\n var isFontsLoaded = useContext(FontsLoadedContext);\n if (!isFontsLoaded) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {\n \"data-testid\": \"fonts-loaded-loading\"\n });\n }\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/_jsx(_Fragment, {\n children: children\n });\n}\nexport default FontsLoaded;\n//# sourceMappingURL=FontsLoaded.js.map","var _excluded = [\"UNSAFE_className\"],\n _excluded2 = [\"forceRerenderKey\", \"ref\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport { ComboBox as SpectrumComboBox } from '@adobe/react-spectrum';\nimport cl from 'classnames';\nimport { usePickerNormalizedProps } from \"../picker/index.js\";\nimport { createElement as _createElement } from \"react\";\n/**\n * ComboBox that takes an array of `NormalizedItem` or `NormalizedSection` items\n * as children and uses a render item function to render the items. `NormalizedItem`\n * and `NormalizedSection` datums always provide a `key` property but have an\n * optional `item` property that can be lazy loaded. This is necessary to support\n * windowed data since we need a representative key for every item in the\n * collection.\n */\nexport function ComboBoxNormalized(_ref) {\n var {\n UNSAFE_className\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var _usePickerNormalizedP = usePickerNormalizedProps(props),\n {\n forceRerenderKey,\n ref\n } = _usePickerNormalizedP,\n pickerProps = _objectWithoutProperties(_usePickerNormalizedP, _excluded2);\n return /*#__PURE__*/_createElement(SpectrumComboBox\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, pickerProps), {}, {\n key: forceRerenderKey,\n ref: ref,\n UNSAFE_className: cl('dh-combobox', 'dh-combobox-normalized', UNSAFE_className)\n }));\n}\nexport default ComboBoxNormalized;\n//# sourceMappingURL=ComboBoxNormalized.js.map","var _excluded = [\"onScroll\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport { ListView as SpectrumListView } from '@adobe/react-spectrum';\nimport { extractSpectrumHTMLElement, useContentRect, useOnScrollRef } from '@deephaven/react-hooks';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport cl from 'classnames';\nimport { useSpectrumThemeProvider } from \"../../theme/index.js\";\nimport { Flex } from \"../layout.js\";\nimport { separateSpectrumProps } from \"../utils/index.js\";\nimport \"./ListViewWrapper.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Helper component to wrap a ListView with the appropriate styling + scroll\n * handling. This is used by both the `@deephaven/components` `ListView` and\n * the `@deephaven/jsapi-components` `ListView` (via `ListViewNormalized`) to\n * ensure consistency.\n *\n * Note that This component will usually not be used directly. Instead, it is\n * recommended to use\n * - `@deephaven/components`'s `ListView` for non-table data sources\n * - `@deephaven/jsapi-components`'s `ListView` for table data sources\n */\nexport function ListViewWrapper(props) {\n var _styleProps$minHeight, _listViewProps$densit;\n var {\n ariaLabelProps,\n componentProps,\n styleProps\n } = separateSpectrumProps(props);\n var {\n onScroll = EMPTY_FUNCTION\n } = componentProps,\n listViewProps = _objectWithoutProperties(componentProps, _excluded);\n var {\n scale\n } = useSpectrumThemeProvider();\n var scrollRef = useOnScrollRef(onScroll, extractSpectrumHTMLElement);\n\n // Spectrum ListView crashes when it has zero height. Track the contentRect\n // of the parent container and only render the ListView when it has a non-zero\n // height. See https://github.com/adobe/react-spectrum/issues/6213\n var {\n ref: contentRectRef,\n contentRect\n } = useContentRect(extractSpectrumHTMLElement);\n return /*#__PURE__*/_jsx(Flex, _objectSpread(_objectSpread({\n direction: \"column\",\n ref: contentRectRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, styleProps), {}, {\n // Set min-height to 1px so that `ListView` is rendered whenever container\n // is visible. This prevents the height from shrinking to zero as a result\n // of a parent grid or flex container calculating content sizes. The\n // container height can still be zero when it is not being displayed such\n // as when one of its parents have `display: none`.\n minHeight: (_styleProps$minHeight = styleProps.minHeight) !== null && _styleProps$minHeight !== void 0 ? _styleProps$minHeight : 1,\n UNSAFE_className: cl('dh-list-view-wrapper', \"dh-list-view-wrapper-density-\".concat((_listViewProps$densit = listViewProps.density) !== null && _listViewProps$densit !== void 0 ? _listViewProps$densit : 'regular'), \"dh-list-view-wrapper-scale-\".concat(scale), styleProps.UNSAFE_className),\n children: contentRect.height === 0 ? null : /*#__PURE__*/_jsx(SpectrumListView, _objectSpread(_objectSpread({\n ref: scrollRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, ariaLabelProps), listViewProps))\n }));\n}\nexport default ListViewWrapper;\n//# sourceMappingURL=ListViewWrapper.js.map","var _excluded = [\"children\", \"tooltip\", \"selectedKeys\", \"defaultSelectedKeys\", \"disabledKeys\", \"UNSAFE_className\", \"onChange\", \"onScroll\", \"onSelectionChange\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport { useMemo } from 'react';\nimport cl from 'classnames';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { normalizeTooltipOptions, wrapItemChildren } from \"../utils/index.js\";\nimport { ListViewWrapper } from \"./ListViewWrapper.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ListView(_ref) {\n var {\n children,\n tooltip = true,\n selectedKeys,\n defaultSelectedKeys,\n disabledKeys,\n UNSAFE_className,\n onChange,\n onScroll = EMPTY_FUNCTION,\n onSelectionChange\n } = _ref,\n spectrumListViewProps = _objectWithoutProperties(_ref, _excluded);\n var tooltipOptions = useMemo(() => normalizeTooltipOptions(tooltip, 'bottom'), [tooltip]);\n var wrappedItems = useMemo(() => wrapItemChildren(children, tooltipOptions), [children, tooltipOptions]);\n return /*#__PURE__*/_jsx(ListViewWrapper\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, spectrumListViewProps), {}, {\n UNSAFE_className: cl('dh-list-view', UNSAFE_className),\n selectedKeys: selectedKeys,\n defaultSelectedKeys: defaultSelectedKeys,\n disabledKeys: disabledKeys,\n onScroll: onScroll,\n onSelectionChange: onChange !== null && onChange !== void 0 ? onChange : onSelectionChange,\n children: wrappedItems\n }));\n}\nexport default ListView;\n//# sourceMappingURL=ListView.js.map","var _excluded = [\"normalizedItems\", \"tooltip\", \"selectedKeys\", \"defaultSelectedKeys\", \"disabledKeys\", \"showItemIcons\", \"actions\", \"UNSAFE_className\", \"onChange\", \"onSelectionChange\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport { useMemo, createElement as _createElement } from 'react';\nimport cl from 'classnames';\nimport { normalizeTooltipOptions, useRenderNormalizedItem, useStringifiedMultiSelection } from \"../utils/index.js\";\nimport { ListViewWrapper } from \"./ListViewWrapper.js\";\n/**\n * ListView supporting normalized item data. This component mostly exists to\n * decouple some of the logic needed to support table data. Specifically it\n * handles item rendering configurations as well as converting selection keys\n * to / from strings. This makes it easier to test logic in isolation without\n * a dependency on JS apis (e.g. in the Styleguide).\n *\n * Note that This component will usually not be used directly. Instead, it is\n * recommended to use\n * - `@deephaven/components`'s `ListView` for non-table data sources\n * - `@deephaven/jsapi-components`'s `ListView` for table data sources\n */\nexport function ListViewNormalized(_ref) {\n var {\n normalizedItems,\n tooltip = true,\n selectedKeys,\n defaultSelectedKeys,\n disabledKeys,\n showItemIcons,\n actions,\n UNSAFE_className,\n onChange,\n onSelectionChange\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var tooltipOptions = useMemo(() => normalizeTooltipOptions(tooltip, 'bottom'), [tooltip]);\n var renderNormalizedItem = useRenderNormalizedItem({\n itemIconSlot: 'illustration',\n // Descriptions introduce variable item heights which throws off setting\n // viewport on windowed data. For now not going to implement description\n // support in Picker.\n // https://github.com/deephaven/web-client-ui/issues/1958\n showItemDescriptions: false,\n showItemIcons,\n tooltipOptions,\n actions\n });\n\n // Spectrum doesn't re-render if only the `renderNormalizedItems` function\n // changes, so we create a key from its dependencies that can be used to force\n // re-render.\n var forceRerenderKey = \"\".concat(showItemIcons, \"-\").concat(tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.placement);\n var {\n selectedStringKeys,\n defaultSelectedStringKeys,\n disabledStringKeys,\n onStringSelectionChange\n } = useStringifiedMultiSelection({\n normalizedItems,\n selectedKeys,\n defaultSelectedKeys,\n disabledKeys,\n onChange: onChange !== null && onChange !== void 0 ? onChange : onSelectionChange\n });\n return /*#__PURE__*/_createElement(ListViewWrapper\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, props), {}, {\n UNSAFE_className: cl('dh-list-view-normalized', UNSAFE_className),\n key: forceRerenderKey,\n items: normalizedItems,\n selectedKeys: selectedStringKeys,\n defaultSelectedKeys: defaultSelectedStringKeys,\n disabledKeys: disabledStringKeys,\n onSelectionChange: onStringSelectionChange\n }), renderNormalizedItem);\n}\nexport default ListViewNormalized;\n//# sourceMappingURL=ListViewNormalized.js.map","var _excluded = [\"backgroundColor\", \"borderColor\", \"borderStartColor\", \"borderEndColor\", \"borderTopColor\", \"borderBottomColor\", \"borderXColor\", \"borderYColor\", \"UNSAFE_style\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* eslint-disable react/jsx-props-no-spreading */\nimport { forwardRef, useMemo } from 'react';\nimport { useLocale, View as SpectrumView } from '@adobe/react-spectrum';\nimport { colorValueStyle } from \"../theme/colorUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * A View component that re-exports the Spectrum View component.\n * However, it overrides ColorValues to accept CSS color strings and\n * our custom variable names from our color palette and semantic colors.\n *\n * @param props The props for the View component\n * @returns The View component\n *\n */\nexport var View = /*#__PURE__*/forwardRef((props, forwardedRef) => {\n var {\n backgroundColor,\n borderColor,\n borderStartColor,\n borderEndColor,\n borderTopColor,\n borderBottomColor,\n borderXColor,\n borderYColor,\n UNSAFE_style\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var {\n direction\n } = useLocale();\n var style = useMemo(() => {\n var borderStyle = {};\n if (borderColor !== undefined) {\n borderStyle.borderColor = colorValueStyle(borderColor);\n }\n if (borderXColor !== undefined) {\n borderStyle.borderLeftColor = colorValueStyle(borderXColor);\n borderStyle.borderRightColor = colorValueStyle(borderXColor);\n }\n if (borderYColor !== undefined) {\n borderStyle.borderTopColor = colorValueStyle(borderYColor);\n borderStyle.borderBottomColor = colorValueStyle(borderYColor);\n }\n if (borderStartColor !== undefined) {\n borderStyle[direction === 'rtl' ? 'borderRightColor' : 'borderLeftColor'] = colorValueStyle(borderStartColor);\n }\n if (borderEndColor !== undefined) {\n borderStyle[direction === 'rtl' ? 'borderLeftColor' : 'borderRightColor'] = colorValueStyle(borderEndColor);\n }\n if (borderTopColor !== undefined) {\n borderStyle.borderTopColor = colorValueStyle(borderTopColor);\n }\n if (borderBottomColor !== undefined) {\n borderStyle.borderBottomColor = colorValueStyle(borderBottomColor);\n }\n return _objectSpread(_objectSpread({}, UNSAFE_style), {}, {\n backgroundColor: colorValueStyle(backgroundColor)\n }, borderStyle);\n }, [backgroundColor, UNSAFE_style, borderColor, borderStartColor, borderEndColor, borderTopColor, borderBottomColor, borderXColor, borderYColor, direction]);\n return /*#__PURE__*/_jsx(SpectrumView, _objectSpread(_objectSpread({}, rest), {}, {\n ref: forwardedRef,\n UNSAFE_style: style\n }));\n});\nView.displayName = 'View';\nexport default View;\n//# sourceMappingURL=View.js.map","var _excluded = [\"children\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* eslint-disable react/no-array-index-key */\nimport { isElementOfType } from '@deephaven/react-hooks';\nimport React, { useMemo } from 'react';\nimport { Checkbox, CheckboxGroup as SpectrumCheckboxGroup } from '@adobe/react-spectrum';\nimport { ensureArray } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Augmented version of the Spectrum CheckboxGroup component that supports\n * primitive item children.\n */\nexport function CheckboxGroup(_ref) {\n var {\n children\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var wrappedChildren = useMemo(() => ensureArray(children).map(child => isElementOfType(child, Checkbox) ? child : /*#__PURE__*/_jsx(Checkbox, {\n value: String(child),\n children: String(child)\n }, String(child))), [children]);\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n _jsx(SpectrumCheckboxGroup, _objectSpread(_objectSpread({}, props), {}, {\n children: wrappedChildren\n }))\n );\n}\nexport default CheckboxGroup;\n//# sourceMappingURL=CheckboxGroup.js.map","var _excluded = [\"ariaLabel\", \"icon\", \"isQuiet\", \"labelText\", \"children\", \"onOpenChange\", \"tooltip\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ActionButton, DialogTrigger, Icon, Text } from \"../spectrum/index.js\";\nimport { Tooltip } from \"../popper/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Dialog trigger based on an ActionButton.\n */\nexport function ActionButtonDialogTrigger(_ref) {\n var {\n ariaLabel,\n icon,\n isQuiet,\n labelText,\n children,\n onOpenChange,\n tooltip\n } = _ref,\n styleProps = _objectWithoutProperties(_ref, _excluded);\n var iconClassName = labelText == null && tooltip != null ? 'action-button-icon-with-tooltip' : undefined;\n return /*#__PURE__*/_jsxs(DialogTrigger, {\n type: \"popover\",\n onOpenChange: onOpenChange,\n children: [/*#__PURE__*/_jsxs(ActionButton\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, styleProps), {}, {\n \"aria-label\": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : labelText,\n isQuiet: isQuiet,\n children: [/*#__PURE__*/_jsx(Icon, {\n UNSAFE_className: iconClassName,\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n })\n }), labelText == null ? null : /*#__PURE__*/_jsx(Text, {\n children: labelText\n }), tooltip == null ? null : /*#__PURE__*/_jsx(Tooltip, {\n children: tooltip\n })]\n })), children]\n });\n}\nexport default ActionButtonDialogTrigger;\n//# sourceMappingURL=ActionButtonDialogTrigger.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable react/jsx-props-no-spreading */\n\nimport { useFormWithDetachedSubmitButton } from '@deephaven/react-hooks';\nimport { SpectrumButton, ButtonGroup, Content, Dialog, Divider, Form, Heading } from \"../spectrum/index.js\";\nimport styles from \"../SpectrumComponent.module.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function ConfirmationDialog(_ref) {\n var {\n heading,\n confirmationButtonLabel,\n children,\n onCancel,\n onConfirm\n } = _ref;\n var {\n formProps,\n submitButtonProps\n } = useFormWithDetachedSubmitButton();\n return /*#__PURE__*/_jsxs(Dialog, {\n children: [/*#__PURE__*/_jsx(Heading, {\n level: 3,\n UNSAFE_className: styles.spectrumDialogComponentHeading,\n children: heading\n }), /*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsx(Content, {\n children: /*#__PURE__*/_jsx(Form\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, formProps), {}, {\n children: children\n }))\n }), /*#__PURE__*/_jsxs(ButtonGroup, {\n children: [/*#__PURE__*/_jsx(SpectrumButton, {\n variant: \"secondary\",\n onPress: onCancel,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(SpectrumButton, _objectSpread(_objectSpread({}, submitButtonProps), {}, {\n // eslint-disable-next-line react/style-prop-object\n style: \"fill\",\n variant: \"negative\",\n onPress: onConfirm,\n type: \"submit\",\n children: confirmationButtonLabel\n }))]\n })]\n });\n}\nexport default ConfirmationDialog;\n//# sourceMappingURL=ConfirmationDialog.js.map","import { useCallback } from 'react';\nimport { vsTrash } from '@deephaven/icons';\nimport { ActionButtonDialogTrigger, ConfirmationDialog } from \"../dialogs/index.js\";\nimport { ACTION_ICON_HEIGHT } from \"../UIConstants.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ConfirmActionButton(_ref) {\n var {\n ariaLabel,\n heading,\n confirmationButtonLabel,\n isHidden,\n children,\n tooltip,\n onConfirm: _onConfirm\n } = _ref;\n var renderDialog = useCallback(close => /*#__PURE__*/_jsx(ConfirmationDialog, {\n heading: heading,\n confirmationButtonLabel: confirmationButtonLabel,\n onCancel: close,\n onConfirm: () => {\n close();\n _onConfirm();\n },\n children: children\n }), [children, confirmationButtonLabel, heading, _onConfirm]);\n return /*#__PURE__*/_jsx(ActionButtonDialogTrigger, {\n ariaLabel: ariaLabel,\n icon: vsTrash,\n isHidden: isHidden,\n isQuiet: true,\n height: ACTION_ICON_HEIGHT,\n tooltip: tooltip,\n children: renderDialog\n });\n}\nexport default ConfirmActionButton;\n//# sourceMappingURL=ConfirmActionButton.js.map","var _excluded = [\"icon\", \"label\", \"tooltip\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* eslint-disable react/jsx-props-no-spreading */\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ActionButton, Icon } from \"../spectrum/index.js\";\nimport { Tooltip } from \"../popper/index.js\";\nimport { ACTION_ICON_HEIGHT } from \"../UIConstants.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function IconActionButton(_ref) {\n var {\n icon,\n label,\n tooltip\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/_jsxs(ActionButton, _objectSpread(_objectSpread({}, props), {}, {\n \"aria-label\": label,\n isQuiet: true,\n height: ACTION_ICON_HEIGHT,\n children: [/*#__PURE__*/_jsx(Icon, {\n UNSAFE_className: tooltip == null ? undefined : 'action-button-icon-with-tooltip',\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n })\n }), tooltip == null ? null : /*#__PURE__*/_jsx(Tooltip, {\n children: tooltip\n })]\n }));\n}\nIconActionButton.displayName = 'IconActionButton';\nexport default IconActionButton;\n//# sourceMappingURL=IconActionButton.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\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 memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { Popper } from \"./popper/index.js\";\nimport \"./AutoCompleteInput.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar DEBOUNCE_DELAY = 100;\nvar MENU_NAVIGATION_DIRECTION = /*#__PURE__*/function (MENU_NAVIGATION_DIRECTION) {\n MENU_NAVIGATION_DIRECTION[\"UP\"] = \"UP\";\n MENU_NAVIGATION_DIRECTION[\"DOWN\"] = \"DOWN\";\n return MENU_NAVIGATION_DIRECTION;\n}(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 max: 1000\n }));\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 || _this$popper$current.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\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 || _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 || _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 || _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 || _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 || _this$input$current4.focus();\n }\n (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === 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 || _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__*/_jsx(\"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 children: this.renderOptions()\n });\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__*/_jsx(\"div\", {\n className: \"no-match\",\n children: noMatchText\n });\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__*/_jsx(\"button\", {\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 children: option.title\n }, key);\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__*/_jsxs(\"div\", {\n className: \"aci-container\",\n ref: this.cbContainer,\n children: [/*#__PURE__*/_jsx(\"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__*/_jsx(Popper, {\n ref: this.popper,\n options: popperOptions,\n className: classNames('aci-options-popper interactive'),\n onEntered: this.handleMenuOpened,\n onExited: this.handleMenuExited,\n children: this.renderMenuElement()\n })]\n });\n }\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 classNames from 'classnames';\nimport \"./AutoResizeTextarea.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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__*/_jsx(\"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}\nexport default AutoResizeTextarea;\n//# sourceMappingURL=AutoResizeTextarea.js.map","import React from 'react';\nimport { useDebouncedValue } from '@deephaven/react-hooks';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\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 {\n value: debouncedIsOpen\n } = useDebouncedValue(isOpen, debounceMs);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [blockInteraction && isOpen && /*#__PURE__*/_jsx(\"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 });\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\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\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__*/_jsx(Modal, {\n isOpen: isOpen,\n className: className,\n children: /*#__PURE__*/_jsx(ModalBody, {\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"info-modal\",\n children: [icon != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"message-header\",\n children: title\n }), subtitle != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-content\",\n children: subtitle\n })]\n })\n })\n });\n}\nexport default InfoModal;\n//# sourceMappingURL=InfoModal.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { ActionBar } from \"./spectrum/index.js\";\nimport commonStyles from \"./SpectrumComponent.module.css\"; // The action bar will still show the item count + a clear selection button\n// even if there are no actions. Our only consumer is currently the ACL Editor,\n// but group action functionality has not yet been prioritized (see DH-15221).\n// For now we'll just pass it an empty action items array.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar noActions = [];\nexport function BulkActionBar(_ref) {\n var {\n styleProps,\n selectedItemCount,\n onClearSelection\n } = _ref;\n return /*#__PURE__*/_jsx(ActionBar, _objectSpread(_objectSpread({\n UNSAFE_className: commonStyles.spectrumActionBar\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, styleProps), {}, {\n isEmphasized: true,\n selectedItemCount: selectedItemCount,\n onClearSelection: onClearSelection,\n children: noActions\n }));\n}\nexport default BulkActionBar;\n//# sourceMappingURL=BulkActionBar.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport ContextMenuItem from \"./ContextMenuItem.js\";\nimport LoadingSpinner from \"../LoadingSpinner.js\";\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ContextMenu');\n/** Do not use this class directly. Use ContextMenuRoot and ContextActions instead. */\nclass ContextMenu extends PureComponent {\n static handleContextMenu(e) {\n if (e.metaKey) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"oldFocus\", void 0);\n _defineProperty(this, \"activeSubMenuRef\", void 0);\n _defineProperty(this, \"subMenuTimer\", void 0);\n _defineProperty(this, \"rAF\", void 0);\n _defineProperty(this, \"initialPosition\", void 0);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseSubMenu = this.handleCloseSubMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemContextMenu = this.handleMenuItemContextMenu.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.oldFocus = document.activeElement;\n this.activeSubMenuRef = /*#__PURE__*/React.createRef();\n this.subMenuTimer = 0;\n this.rAF = 0;\n this.initialPosition = {\n top: props.top,\n left: props.left\n };\n this.state = {\n menuItems: [],\n pendingItems: [],\n activeSubMenu: null,\n hasOverflow: false,\n subMenuTop: null,\n subMenuLeft: null,\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n keyboardIndex: -1,\n mouseIndex: -1\n };\n }\n componentDidMount() {\n this.initMenu();\n this.verifyPosition();\n window.addEventListener('resize', this.handleWindowResize);\n\n // rAF is needed to wait for a submenus popper to be created before\n // attempting to set focus, however on a quick mount/unmount when\n // mousing past an item, the submenu could be unmounted before the\n // async rAF finishes, so it is cancelled in willUnmount()\n this.rAF = window.requestAnimationFrame(() => {\n var _this$container$curre;\n (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 || _this$container$curre.focus();\n var {\n onMenuOpened\n } = this.props;\n onMenuOpened(this);\n });\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n actions\n } = this.props;\n var {\n activeSubMenu\n } = this.state;\n if (activeSubMenu !== prevState.activeSubMenu) {\n if (activeSubMenu == null) {\n var _this$container$curre2;\n // close sub menu, refocus parent menu\n (_this$container$curre2 = this.container.current) === null || _this$container$curre2 === void 0 || _this$container$curre2.focus();\n } else {\n // open sub menu, set its initial position\n this.setActiveSubMenuPosition();\n }\n }\n if (prevProps.actions !== actions) {\n this.initMenu();\n if (this.container.current == null || !this.container.current.contains(document.activeElement)) {\n var _this$container$curre3;\n (_this$container$curre3 = this.container.current) === null || _this$container$curre3 === void 0 || _this$container$curre3.focus();\n }\n }\n this.verifyPosition();\n }\n componentWillUnmount() {\n this.cancelPromises();\n window.removeEventListener('resize', this.handleWindowResize);\n cancelAnimationFrame(this.rAF);\n }\n getKeyboardIndex() {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n var {\n keyboardIndex\n } = this.state;\n return keyboardIndex;\n }\n return this.getMouseIndex();\n }\n setKeyboardIndex(index) {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n this.setState({\n keyboardIndex: index\n });\n } else {\n this.setMouseIndex(index);\n }\n }\n getMouseIndex() {\n var {\n mouseIndex\n } = this.state;\n return mouseIndex;\n }\n setMouseIndex(index) {\n this.setState({\n mouseIndex: index\n });\n }\n initMenu() {\n // cancel any pending close and promises\n this.cancelPromises();\n cancelAnimationFrame(this.rAF);\n var {\n options\n } = this.props;\n var keyboardIndex = options.initialKeyboardIndex;\n if (keyboardIndex === undefined) {\n keyboardIndex = -1;\n }\n var {\n actions\n } = this.props;\n var menuItems = ContextActionUtils.getMenuItems(actions);\n var nonPromiseItems = [];\n for (var i = menuItems.length - 1; i >= 0; i -= 1) {\n var menuItem = menuItems[i];\n if (menuItem instanceof Promise) {\n this.initMenuPromise(menuItem);\n } else {\n nonPromiseItems.push(menuItem);\n }\n }\n this.setState({\n mouseIndex: -1,\n keyboardIndex,\n activeSubMenu: null,\n menuItems: ContextActionUtils.sortActions(nonPromiseItems)\n });\n }\n initMenuPromise(promise) {\n // make all promises cancellable\n var cancellablePromise = PromiseUtils.makeCancelable(promise);\n this.setState(state => ({\n pendingItems: state.pendingItems.concat(cancellablePromise)\n }));\n cancellablePromise.then(resolvedMenuItems => {\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n menuItems: ContextActionUtils.sortActions(state.menuItems.concat(resolvedMenuItems)),\n pendingItems\n };\n }\n // This item is stale, don't update the menu\n return null;\n });\n }, error => {\n if (PromiseUtils.isCanceled(error)) {\n return; // Canceled promise is ignored\n }\n\n // remove failed item from pending list\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n pendingItems\n };\n }\n return null;\n });\n\n // Log the error\n log.error(error);\n });\n }\n cancelPromises() {\n var {\n pendingItems\n } = this.state;\n pendingItems.map(item => item.cancel());\n }\n\n /**\n * Sets the unverfied start position of a submenu. Submenu then self-verfies\n * its own position and potentially reports back a new position.\n */\n setActiveSubMenuPosition() {\n if (this.activeSubMenuRef.current === null) return;\n var parentRect = this.activeSubMenuRef.current.getBoundingClientRect();\n\n // intentionally rect.right, we want the sub menu to start at the right edge of the current menu\n this.setState({\n subMenuTop: parentRect.top,\n subMenuLeft: parentRect.right,\n subMenuParentHeight: parentRect.height,\n subMenuParentWidth: parentRect.width\n });\n }\n\n /**\n * Verifies the position of this menu in relation to the parent to make sure it's on screen.\n * Will update the top left state (updatePosition) if necessary (causing a re-render)\n * By default it tries to top-align with parent, at the right side of the parent.\n * Because we aren't a native context menu and can't escape window bounds, we also do\n * somethings to better fit on screen, such as the \"nudge\" offset position, and further\n * allow overflow scrolling for large menus in a small window.\n */\n verifyPosition() {\n var _this$container$curre4, _this$container$curre5, _this$container$curre6, _this$container$curre7;\n var {\n options,\n updatePosition,\n subMenuParentWidth,\n subMenuParentHeight,\n top: oldTop,\n left: oldLeft\n } = this.props;\n if (!this.container.current || options.doNotVerifyPosition != null && options.doNotVerifyPosition) {\n return;\n }\n\n // initial position is used rather than current position,\n // as the number of menu items can change (actions can bubble)\n // and menu should always be positioned relative to spawn point\n var {\n top,\n left\n } = this.initialPosition;\n var {\n width,\n height\n } = (_this$container$curre4 = (_this$container$curre5 = this.container.current) === null || _this$container$curre5 === void 0 ? void 0 : _this$container$curre5.getBoundingClientRect()) !== null && _this$container$curre4 !== void 0 ? _this$container$curre4 : {\n width: 0,\n height: 0\n };\n var hasOverflow = ((_this$container$curre6 = (_this$container$curre7 = this.container.current) === null || _this$container$curre7 === void 0 ? void 0 : _this$container$curre7.scrollHeight) !== null && _this$container$curre6 !== void 0 ? _this$container$curre6 : 0) > window.innerHeight;\n if (height === 0 || width === 0) {\n // We don't have a height or width yet, don't bother doing anything\n return;\n }\n\n // does it fit below?\n if (top + height > window.innerHeight) {\n // can it be flipped to above? include offset if submenu (defaults to 0 if not submenu)\n if (top - height - subMenuParentHeight > 0) {\n // flip like a native menu would\n top -= height - subMenuParentHeight;\n } else {\n // still doesnt fit? okay, position at bottom edge\n top = window.innerHeight - height;\n }\n }\n if (left + width > window.innerWidth) {\n // less picky about left right positioning, just keep it going off to right\n left = left - width - subMenuParentWidth;\n }\n if (oldLeft !== left || oldTop !== top) {\n // parent owns positioning as single source of truth, ask to update props\n this.setState({\n hasOverflow\n });\n updatePosition(top, left);\n }\n }\n\n // since window resize doesn't trigger blur, listen and close the menu\n handleWindowResize() {\n if (!this.container.current) {\n return;\n }\n this.closeMenu(true);\n }\n handleBlur(e) {\n if (!this.container.current) {\n log.warn('Container is null!');\n return;\n }\n if (!this.container.current.contains(e.relatedTarget)) {\n var element = e.relatedTarget;\n var isContextMenuChild = false;\n while (element && !isContextMenuChild) {\n isContextMenuChild = element.hasAttribute('data-dh-context-menu');\n element = element.parentElement;\n }\n if (!isContextMenuChild) {\n // close all submenus on blur\n this.closeMenu(true);\n }\n }\n }\n\n /** Returns whether the specified key should remove the menu. Depends on the side the parent is on. */\n isEscapeKey(key) {\n var {\n left\n } = this.props;\n return key === 'Escape' || left < 0 && key === 'ArrowRight' || key === 'ArrowLeft';\n }\n handleKeyDown(e) {\n var {\n menuItems\n } = this.state;\n var oldFocus = this.getKeyboardIndex();\n var newFocus = oldFocus;\n var openSubMenu = false;\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n if (e.key === 'ArrowRight') {\n if (oldFocus >= 0 && oldFocus <= menuItems.length) {\n openSubMenu = true;\n } else {\n newFocus = 0;\n }\n } else if (this.isEscapeKey(e.key)) {\n newFocus = null;\n } else if (e.key === 'ArrowUp' || e.shiftKey && e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, -1, menuItems);\n } else if (e.key === 'ArrowDown' || e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, 1, menuItems);\n }\n if (openSubMenu) {\n this.openSubMenu(oldFocus);\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n }\n }\n openSubMenu(index) {\n var {\n menuItems,\n activeSubMenu\n } = this.state;\n var newSubMenu = menuItems[index].actions ? index : null;\n if (activeSubMenu === newSubMenu) return;\n this.setState({\n activeSubMenu: newSubMenu,\n subMenuTop: null,\n subMenuLeft: null\n });\n }\n closeMenu() {\n var closeAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var {\n closeMenu,\n onMenuClosed\n } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n closeSubMenu() {\n this.setState({\n activeSubMenu: null\n });\n }\n handleCloseSubMenu(closeAllMenus) {\n if (closeAllMenus) {\n this.closeMenu(true);\n } else {\n this.closeSubMenu();\n }\n }\n handleMenuItemClick(menuItem, e) {\n e.preventDefault();\n e.stopPropagation();\n var {\n menuItems\n } = this.state;\n if (menuItem != null && (menuItem.disabled === undefined || !menuItem.disabled)) {\n if (menuItem.actions != null) {\n this.openSubMenu(menuItems.indexOf(menuItem));\n } else if (menuItem.action != null) {\n menuItem.action(e.nativeEvent);\n this.closeMenu(true);\n }\n }\n }\n handleMenuItemContextMenu(menuItem, e) {\n if (e.metaKey) {\n return;\n }\n this.handleMenuItemClick(menuItem, e);\n }\n handleMenuItemMouseMove(menuItem) {\n var {\n menuItems\n } = this.state;\n var focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n if (focusIndex >= 0 && focusIndex < menuItems.length && (menuItem.disabled === undefined || !menuItem.disabled)) {\n this.openSubMenu(focusIndex);\n }\n }\n handleMouseLeave() {\n this.setMouseIndex(-1);\n }\n render() {\n var menuItemElements = [];\n var {\n top,\n left\n } = this.props;\n var {\n activeSubMenu,\n hasOverflow,\n keyboardIndex,\n menuItems,\n mouseIndex,\n pendingItems,\n subMenuTop,\n subMenuLeft,\n subMenuParentWidth,\n subMenuParentHeight\n } = this.state;\n for (var i = 0; i < menuItems.length; i += 1) {\n var menuItem = menuItems[i];\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(/*#__PURE__*/_jsx(\"hr\", {}, \"\".concat(i, \".separator\")));\n }\n var menuItemElement = /*#__PURE__*/_jsx(ContextMenuItem, {\n ref: activeSubMenu === i ? this.activeSubMenuRef : null,\n isKeyboardSelected: keyboardIndex === i,\n isMouseSelected: mouseIndex === i,\n menuItem: menuItem,\n closeMenu: this.handleCloseSubMenu,\n onMenuItemClick: this.handleMenuItemClick,\n onMenuItemMouseMove: this.handleMenuItemMouseMove,\n onMenuItemContextMenu: this.handleMenuItemContextMenu\n }, i);\n menuItemElements.push(menuItemElement);\n }\n var pendingElement = null;\n if (pendingItems.length > 0) {\n pendingElement = /*#__PURE__*/_jsx(\"div\", {\n className: \"loading\",\n children: /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n })\n });\n }\n var {\n menuStyle,\n 'data-testid': dataTestId\n } = this.props;\n\n // don't show submenu until it has an position initialized\n var showSubmenu = activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null;\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classNames({\n 'has-overflow': hasOverflow\n }, 'context-menu-container'),\n style: _objectSpread({\n top,\n left\n }, menuStyle),\n ref: this.container,\n \"data-dh-context-menu\": true,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseLeave: this.handleMouseLeave,\n onContextMenu: ContextMenu.handleContextMenu,\n role: \"menuitem\",\n tabIndex: 0,\n \"data-testid\": dataTestId,\n children: [menuItemElements, pendingElement]\n }), showSubmenu && activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null && /*#__PURE__*/_jsx(ContextMenu, {\n actions: menuItems[activeSubMenu].actions || [],\n closeMenu: this.handleCloseSubMenu,\n top: subMenuTop,\n left: subMenuLeft,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n subMenuTop: verifiedTop,\n subMenuLeft: verifiedLeft\n });\n },\n subMenuParentWidth: subMenuParentWidth,\n subMenuParentHeight: subMenuParentHeight\n }, \"sub-\".concat(activeSubMenu))]\n });\n }\n}\n_defineProperty(ContextMenu, \"defaultProps\", {\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n closeMenu() {\n // no-op\n },\n onMenuOpened() {\n // no-op\n },\n onMenuClosed() {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined\n});\nexport default ContextMenu;\n//# sourceMappingURL=ContextMenu.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ContextMenu from \"./ContextMenu.js\";\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Put at your root container, any contextmenu events that are unhandled in the root container will be handled by this\n */\nclass ContextMenuRoot extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"openMenu\", void 0);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.openMenu = /*#__PURE__*/React.createRef();\n this.state = {\n actions: null,\n left: 0,\n top: 0\n };\n }\n componentDidMount() {\n var _this$container$curre;\n if ((_this$container$curre = this.container.current) !== null && _this$container$curre !== void 0 && _this$container$curre.parentElement) {\n this.container.current.parentElement.addEventListener('contextmenu', this.handleContextMenu);\n }\n }\n componentWillUnmount() {\n var _this$container$curre2;\n if ((_this$container$curre2 = this.container.current) !== null && _this$container$curre2 !== void 0 && _this$container$curre2.parentElement) {\n this.container.current.parentElement.removeEventListener('contextmenu', this.handleContextMenu);\n }\n }\n handleContextMenu(e) {\n if (!this.container.current) {\n return;\n }\n var parentRect = this.container.current.getBoundingClientRect();\n var top = e.clientY - parentRect.top;\n var left = e.clientX - parentRect.left;\n var {\n actions\n } = this.state;\n\n // Context menu is open and user clicked on the context-root blocking layer\n // Mac and Linux appear to trigger contextmenu events on mousedown vs. mouseup on Windows\n // Mouseup on Windows triggers blur before contextmenu which effectively does what this path does\n if (actions != null && e.target === this.container.current) {\n // re-emit right clicks that hit the context-root blocking layer\n // while we already have a custom context menu open\n e.preventDefault();\n\n // Set actions to null removes the menu\n // That allows a new menu to be opened on a different element so initial position is set properly\n // Otherwise the instance of this menu may be reused\n // A new contextmenu event is triggered on the element at the location the user clicked on the blocking layer\n this.setState({\n actions: null\n }, () => {\n var element = document.elementFromPoint(left, top); // x y\n\n var mouseEvent = new MouseEvent('contextmenu', {\n clientX: e.clientX,\n clientY: e.clientY,\n bubbles: true,\n cancelable: true\n });\n element === null || element === void 0 || element.dispatchEvent(mouseEvent);\n });\n return;\n }\n if (!ContextActionUtils.isContextActionEvent(e)) {\n // Open native menu if no custom context actions\n return;\n }\n if (e.metaKey || e.ctrlKey) {\n // debug escape hatch to native menu\n return;\n }\n var contextActions = ContextActionUtils.getMenuItems(e.contextActions);\n if (contextActions.length === 0) {\n // No actions after filtering. Use native menu\n return;\n }\n\n // new clicks, set actions\n e.preventDefault();\n this.setState({\n actions: contextActions,\n top,\n left\n });\n }\n handleMenuClose(menu) {\n if (menu === this.openMenu.current) {\n this.setState({\n actions: null\n });\n }\n }\n render() {\n var menu = null;\n var {\n 'data-testid': dataTestId\n } = this.props;\n var {\n actions,\n top,\n left\n } = this.state;\n if (actions) {\n menu = /*#__PURE__*/_jsx(ContextMenu, {\n ref: this.openMenu,\n actions: actions,\n onMenuClosed: this.handleMenuClose,\n top: top,\n left: left,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n top: verifiedTop,\n left: verifiedLeft\n });\n },\n \"data-testid\": dataTestId\n });\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('context-menu-root', {\n active: actions\n }),\n ref: this.container,\n children: menu\n });\n }\n}\nexport default ContextMenuRoot;\n//# sourceMappingURL=ContextMenuRoot.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass Collapse extends Component {\n static getHeight(elem) {\n var scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"nodeRef\", /*#__PURE__*/React.createRef());\n this.handleEntered = this.handleEntered.bind(this);\n }\n handleEntered() {\n var elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\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 handleEnter() {\n var elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '0';\n }\n handleEntering() {\n var elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n handleExiting() {\n var elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '0';\n }\n handleExit() {\n var elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n render() {\n var {\n children: _children,\n className,\n in: inTransition,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: inTransition,\n classNames: {\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse'\n },\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered,\n onExit: this.handleExit,\n onExiting: this.handleExiting,\n timeout: 350,\n nodeRef: this.nodeRef,\n children: state => /*#__PURE__*/_jsx(\"div\", {\n ref: this.nodeRef,\n className: classNames({\n collapse: state === 'exited'\n }, className),\n \"data-testid\": dataTestId,\n children: _children\n })\n });\n }\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 { EMPTY_FUNCTION, TimeUtils } from '@deephaven/utils';\nimport MaskedInput from \"./MaskedInput.js\";\nimport { DEFAULT_GET_PREFERRED_REPLACEMENT_STRING } from \"./MaskedInputUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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'];\nfunction fixIncompleteValue(value) {\n // If value is not a complete HH:mm:ss time, fill missing parts with 0\n if (value != null) {\n return \"\".concat(value.substring(0, 8).replace(/\\u2007/g, '0')).concat(\"00:00:00\".substring(value.length));\n }\n return value;\n}\n\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 = EMPTY_FUNCTION,\n value: propsValue = 0,\n onFocus = EMPTY_FUNCTION,\n onBlur = EMPTY_FUNCTION,\n onSelect = EMPTY_FUNCTION,\n 'data-testid': dataTestId\n } = props;\n var [value, setValue] = useState(TimeUtils.formatTime(propsValue));\n var parsedValueRef = useRef(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 || _inputRef$current.focus();\n },\n setSelection: newSelection => {\n var _inputRef$current2;\n (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.focus();\n _setSelection(newSelection);\n }\n }), []);\n useEffect(function setFormattedTime() {\n // Ignore value prop update if it matches the displayed value\n // to preserve the displayed value while typing\n if (parsedValueRef.current !== propsValue) {\n setValue(TimeUtils.formatTime(propsValue));\n parsedValueRef.current = propsValue;\n }\n }, [parsedValueRef, 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 var handleChange = useCallback(newValue => {\n log.debug('handleChange', newValue);\n setValue(newValue);\n parsedValueRef.current = TimeUtils.parseTime(fixIncompleteValue(newValue));\n onChange(parsedValueRef.current);\n }, [onChange]);\n var handleBlur = useCallback(() => {\n var fixedValue = fixIncompleteValue(value);\n // Update the value displayed in the input\n // onChange with the fixed value already triggered in handleChange\n if (fixedValue !== value) {\n setValue(fixedValue);\n }\n onBlur();\n }, [value, onBlur]);\n var handleSelect = useCallback(newSelection => {\n _setSelection(newSelection);\n onSelect(newSelection);\n }, [onSelect]);\n return /*#__PURE__*/_jsx(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: handleBlur,\n \"data-testid\": dataTestId\n });\n});\nexport default TimeInput;\n//# sourceMappingURL=TimeInput.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCheck } 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\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar CUSTOM_OPTION = -1;\nvar MENU_NAVIGATION_DIRECTION = /*#__PURE__*/function (MENU_NAVIGATION_DIRECTION) {\n MENU_NAVIGATION_DIRECTION[\"UP\"] = \"UP\";\n MENU_NAVIGATION_DIRECTION[\"DOWN\"] = \"DOWN\";\n return MENU_NAVIGATION_DIRECTION;\n}(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 || _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 || _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 || _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 || _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 || _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__*/_jsx(\"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 children: /*#__PURE__*/_jsx(\"div\", {\n className: \"cs-options-container\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"cs-options\",\n children: this.renderOptions()\n })\n })\n });\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__*/_jsxs(\"button\", {\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 children: [option.value === value && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"mr-2\"\n }), option.value !== value && /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), option.title]\n }, key));\n }\n optionArray.push(/*#__PURE__*/_jsx(\"hr\", {\n className: \"cs-divider\"\n }, \"option-divider\"));\n optionArray.push(/*#__PURE__*/_jsxs(\"button\", {\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 children: [!matchFound && value !== null ? /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"mr-2\"\n }) : /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), customText]\n }, \"option-custom-label\"));\n optionArray.push(/*#__PURE__*/_jsxs(\"div\", {\n className: \"cs-custom-container\",\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: \"mr-2\"\n }), /*#__PURE__*/_jsx(TimeInput, {\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 }, \"option-input\"), /*#__PURE__*/_jsx(\"span\", {\n className: \"ml-2\"\n })]\n }, \"cs-custom-container\"));\n optionArray.push(/*#__PURE__*/_jsx(\"hr\", {\n className: \"mb-2\"\n }, \"option-end\"));\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__*/_jsx(\"div\", {\n className: \"input-group cs-container context-menu\",\n ref: this.csContainer,\n \"data-testid\": dataTestId,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames('input-group-append cs-dropdown', {\n 'cs-dropdown-invalid': invalid\n }),\n children: /*#__PURE__*/_jsxs(\"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 children: [/*#__PURE__*/_jsx(\"span\", {\n className: classNames({\n 'text-muted': value === null\n }),\n children: this.getSelectedText()\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"cs-caret\"\n }), /*#__PURE__*/_jsx(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 });\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\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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__*/_jsx(\"div\", {\n className: \"d-flex flex-row align-items-center\",\n children: /*#__PURE__*/_jsx(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 });\n});\nDateInput.displayName = 'DateInput';\nexport default DateInput;\n//# sourceMappingURL=DateInput.js.map","import ShortcutRegistry from \"./ShortcutRegistry.js\";\nimport { MODIFIER, KEY } from \"./Shortcut.js\";\nvar NAVIGATION_SHORTCUTS = {\n CYCLE_TO_NEXT_STACK: ShortcutRegistry.createAndAdd({\n id: 'NAVIGATION.CYCLE_TO_NEXT_STACK',\n name: 'Cycle To Next Stack',\n shortcut: [MODIFIER.CTRL, KEY.SINGLE_QUOTE],\n macShortcut: [MODIFIER.CMD, KEY.SINGLE_QUOTE],\n isEditable: true\n }),\n CYCLE_TO_PREVIOUS_STACK: ShortcutRegistry.createAndAdd({\n id: 'NAVIGATION.CYCLE_TO_PREVIOUS_STACK',\n name: 'Cycle To Previous Stack',\n shortcut: [MODIFIER.CTRL, KEY.SEMICOLON],\n macShortcut: [MODIFIER.CMD, KEY.SEMICOLON],\n isEditable: true\n }),\n CYCLE_TO_NEXT_TAB: ShortcutRegistry.createAndAdd({\n id: 'NAVIGATION.CYCLE_TO_NEXT_TAB',\n name: 'Cycle To Next Tab',\n shortcut: [MODIFIER.CTRL, MODIFIER.SHIFT, KEY.DOUBLE_QUOTE],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.SINGLE_QUOTE],\n isEditable: true\n }),\n CYCLE_TO_PREVIOUS_TAB: ShortcutRegistry.createAndAdd({\n id: 'NAVIGATION.CYCLE_TO_PREVIOUS_TAB',\n name: 'Cycle To Previous Tab',\n shortcut: [MODIFIER.CTRL, MODIFIER.SHIFT, KEY.COLON],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.SEMICOLON],\n isEditable: true\n }),\n CYCLE_TO_NEXT_DASHBOARD: ShortcutRegistry.createAndAdd({\n id: 'NAVIGATION.CYCLE_TO_NEXT_DASHBOARD',\n name: 'Cycle To Next Dashboard',\n shortcut: [MODIFIER.CTRL, KEY.PERIOD],\n macShortcut: [MODIFIER.CMD, KEY.PERIOD],\n isEditable: true\n }),\n CYCLE_TO_PREVIOUS_DASHBOARD: ShortcutRegistry.createAndAdd({\n id: 'NAVIGATION.CYCLE_TO_PREVIOUS_DASHBOARD',\n name: 'Cycle To Previous Dashboard',\n shortcut: [MODIFIER.CTRL, KEY.COMMA],\n macShortcut: [MODIFIER.CMD, KEY.COMMA],\n isEditable: true\n })\n};\nexport default NAVIGATION_SHORTCUTS;\n//# sourceMappingURL=NavigationShortcuts.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 from \"./Button.js\";\nimport ItemList from \"./ItemList.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\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__*/_jsxs(\"div\", {\n className: classNames('editable-item-list-container', {\n 'is-invalid': isInvalid\n }),\n children: [/*#__PURE__*/_jsx(\"div\", {\n style: {\n height: containerHeight\n },\n children: /*#__PURE__*/_jsx(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 })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex flex-row pt-2\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"d-flex flex-grow-1\",\n children: /*#__PURE__*/_jsx(\"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 })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex align-items-start mt-1 ml-2\",\n children: [/*#__PURE__*/_jsx(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__*/_jsx(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 })]\n })]\n });\n}\nexport default EditableItemList;\n//# sourceMappingURL=EditableItemList.js.map","import React, { useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsDiffAdded, vsDiffRemoved, vsWarning } from '@deephaven/icons';\nimport { useDebouncedCallback, useResizeObserver } from '@deephaven/react-hooks';\nimport CopyButton from \"./CopyButton.js\";\nimport Button from \"./Button.js\";\nimport \"./ErrorView.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Component that displays an error message in a textarea so user can scroll and a copy button.\n */\nfunction ErrorView(_ref) {\n var {\n message,\n isExpanded: isExpandedProp = false,\n type = 'Error'\n } = _ref;\n var [isExpandable, setIsExpandable] = useState(false);\n var [isExpanded, setIsExpanded] = useState(false);\n var viewRef = useRef(null);\n var textRef = useRef(null);\n var handleResize = useCallback(() => {\n if (isExpanded || isExpandedProp || textRef.current == null) {\n return;\n }\n var newIsExpandable = textRef.current.scrollHeight > textRef.current.clientHeight;\n setIsExpandable(newIsExpandable);\n }, [isExpanded, isExpandedProp]);\n var debouncedHandleResize = useDebouncedCallback(handleResize, 100);\n useResizeObserver(viewRef.current, debouncedHandleResize);\n useLayoutEffect(debouncedHandleResize, [debouncedHandleResize]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('error-view', {\n expanded: isExpanded || isExpandedProp\n }),\n ref: viewRef,\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"error-view-header\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"error-view-header-text\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n }), /*#__PURE__*/_jsx(\"span\", {\n children: type\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"error-view-buttons\",\n children: [/*#__PURE__*/_jsx(CopyButton, {\n UNSAFE_className: \"error-view-copy-button\",\n tooltip: \"Copy error contents\",\n copy: \"\".concat(type, \": \").concat(message).trim()\n }), (isExpandable || isExpanded) && !isExpandedProp && /*#__PURE__*/_jsx(Button, {\n kind: \"danger\",\n className: \"error-view-expand-button\",\n onClick: () => {\n setIsExpanded(!isExpanded);\n },\n icon: isExpanded ? vsDiffRemoved : vsDiffAdded,\n children: isExpanded ? 'Show Less' : 'Show More'\n })]\n })]\n }), /*#__PURE__*/_jsx(\"pre\", {\n className: \"error-view-text\",\n ref: textRef,\n children: message\n })]\n });\n}\nexport default ErrorView;\n//# sourceMappingURL=ErrorView.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport Checkbox from \"./Checkbox.js\";\nimport Popper from \"./popper/Popper.js\";\nimport \"./HierarchicalCheckboxMenu.css\";\nimport Button from \"./Button.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\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) !== true);\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__*/_jsxs(\"div\", {\n className: \"hcm-menu-container\",\n children: [Array.from(valueMap.entries()).map(_ref => {\n var [parent, children] = _ref;\n return /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Checkbox, {\n className: \"hcm-parent\",\n checked: HierarchicalCheckboxMenu.isParentSelected(parent, valueMap),\n onChange: () => this.toggleValueFor(parent),\n children: parent\n }), children !== undefined && typeof children !== 'boolean' && Array.from(children.entries()).map(_ref2 => {\n var [child, value] = _ref2;\n return /*#__PURE__*/_jsx(Checkbox, {\n className: \"hcm-child\",\n checked: value,\n onChange: () => this.toggleValueFor(parent, child),\n children: child\n }, child);\n })]\n }, parent);\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.selectAll,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-select-all\") : undefined,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.clear,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-clear\") : undefined,\n children: \"Clear\"\n })]\n });\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__*/_jsxs(\"button\", {\n type: \"button\",\n className: classNames('btn hcm-btn', className),\n onClick: this.toggleMenu,\n id: id,\n \"data-testid\": dataTestId,\n children: [/*#__PURE__*/_jsxs(\"span\", {\n children: [icon && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"hcm-icon mr-1\"\n }), menuText]\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"cs-caret\"\n }), /*#__PURE__*/_jsx(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 children: this.renderMenuElement()\n })]\n });\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","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { memo } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from '@hello-pangea/dnd';\nimport { vsClose } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Button from \"../Button.js\";\nimport ContextActions from \"../context-actions/ContextActions.js\";\nimport { Tooltip } from \"../popper/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar NavTab = /*#__PURE__*/memo(_ref => {\n var {\n tab,\n onClose,\n onSelect,\n isActive,\n activeRef,\n index,\n isDraggable,\n contextActions,\n renderAfterTabContent\n } = _ref;\n var {\n key,\n isClosable = onClose != null,\n title,\n icon\n } = tab;\n var iconElem;\n if (icon != null) {\n iconElem = /*#__PURE__*/React.isValidElement(icon) ? icon : /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n }\n return /*#__PURE__*/_jsx(Draggable, {\n draggableId: key,\n index: index,\n isDragDisabled: !isDraggable,\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", {\n className: \"context-menu-wrapper\",\n ref: isActive ? activeRef : null,\n children: [/*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread(_objectSpread({\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.draggableProps), provided.dragHandleProps), {}, {\n className: classNames('btn btn-link btn-nav-tab', {\n active: isActive\n }, {\n dragging: snapshot.isDragging\n }),\n \"data-testid\": \"btn-nav-tab-\".concat(title),\n role: \"tab\",\n tabIndex: 0,\n onAuxClick: e => {\n // Middle mouse button was clicked, and no buttons remain pressed\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose === null || onClose === void 0 || onClose(key);\n }\n },\n onClick: e => {\n // have to have seperate check onClick for Safari not supporting AuxClick\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose === null || onClose === void 0 || onClose(key);\n return;\n }\n // Left mouse button was clicked, and no buttons remain pressed\n if (e.button === 0 && e.buttons === 0) {\n // focus is normally set on mousedown, but dnd calls preventDefault for drag purposes\n // so we can call focus on the firing of the actual click event manually\n e.target.focus();\n onSelect(key);\n }\n },\n onKeyPress: event => {\n if (event.key === 'Enter') onSelect(key);\n },\n children: [iconElem, /*#__PURE__*/_jsxs(\"span\", {\n className: \"btn-nav-tab-title\",\n children: [title, /*#__PURE__*/_jsx(Tooltip, {\n children: title\n })]\n }), renderAfterTabContent === null || renderAfterTabContent === void 0 ? void 0 : renderAfterTabContent(tab), isClosable && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-nav-tab-close\",\n onClick: event => {\n onClose === null || onClose === void 0 || onClose(key);\n event.stopPropagation();\n event.preventDefault();\n },\n icon: vsClose,\n tooltip: \"Close\"\n })]\n })), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n })]\n })\n }, key);\n});\nNavTab.displayName = 'NavTab';\nexport default NavTab;\n//# sourceMappingURL=NavTab.js.map","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { EMPTY_ARRAY } from '@deephaven/utils';\nimport { Button } from \"../Button.js\";\nimport SearchInput from \"../SearchInput.js\";\nimport \"./DashboardList.css\";\nimport { GLOBAL_SHORTCUTS } from \"../shortcuts/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Display a search field and a list of dashboard tabs\n * @param props The tabs and handlers to use for this list\n * @returns A JSX element for the list of dashboard tabs, along with search\n */\nexport function DashboardList(props) {\n var {\n onSelect,\n tabs = EMPTY_ARRAY\n } = props;\n var [searchText, setSearchText] = useState('');\n var [focusedIndex, setFocusedIndex] = useState(0);\n var searchField = useRef(null);\n var listRef = useRef(null);\n var itemRefs = useRef([]);\n useEffect(() => {\n var _searchField$current;\n (_searchField$current = searchField.current) === null || _searchField$current === void 0 || _searchField$current.focus();\n }, []);\n useEffect(() => {\n setFocusedIndex(0);\n }, [searchText]);\n useEffect(() => {\n if (focusedIndex >= 0 && itemRefs.current[focusedIndex]) {\n var _itemRefs$current$foc;\n (_itemRefs$current$foc = itemRefs.current[focusedIndex]) === null || _itemRefs$current$foc === void 0 || _itemRefs$current$foc.scrollIntoView({\n behavior: 'auto',\n block: 'nearest'\n });\n }\n }, [focusedIndex]);\n var handleSearchChange = useCallback(e => {\n setSearchText(e.target.value);\n }, []);\n var handleTabSelect = useCallback(tab => {\n onSelect(tab);\n }, [onSelect]);\n var handleMouseDown = useCallback(event => {\n // Prevent mousedown from taking focus away from the search input\n event.preventDefault();\n }, []);\n var filteredTabs = useMemo(() => tabs.filter(tab => tab.title.toLowerCase().includes(searchText.toLowerCase())), [searchText, tabs]).sort((a, b) => {\n var _a$title$localeCompar;\n return (_a$title$localeCompar = a.title.localeCompare(b.title)) !== null && _a$title$localeCompar !== void 0 ? _a$title$localeCompar : 0;\n });\n var handleSearchKeyDown = useCallback(event => {\n if (event.key === 'ArrowDown' && filteredTabs.length > 0) {\n event.preventDefault();\n setFocusedIndex(prev => prev === -1 ? 0 : (prev + 1) % filteredTabs.length);\n } else if (event.key === 'ArrowUp' && filteredTabs.length > 0) {\n event.preventDefault();\n setFocusedIndex(prev => {\n if (prev === -1) return filteredTabs.length - 1;\n return (prev - 1 + filteredTabs.length) % filteredTabs.length;\n });\n } else if (event.key === 'Enter' && filteredTabs.length > 0) {\n event.preventDefault();\n var selectedIndex = focusedIndex >= 0 ? focusedIndex : 0;\n handleTabSelect(filteredTabs[selectedIndex]);\n } else if (event.key === 'Tab') {\n event.preventDefault();\n }\n }, [filteredTabs, focusedIndex, handleTabSelect]);\n var tabElements = useMemo(() => filteredTabs.map((tab, index) => {\n var _tab$key;\n return /*#__PURE__*/_jsx(\"li\", {\n ref: el => {\n itemRefs.current[index] = el;\n },\n onMouseDown: handleMouseDown,\n children: /*#__PURE__*/_jsxs(Button, {\n kind: \"ghost\",\n \"data-testid\": \"dashboard-list-item-\".concat((_tab$key = tab.key) !== null && _tab$key !== void 0 ? _tab$key : '', \"-button\"),\n onClick: () => handleTabSelect(tab),\n className: focusedIndex === index ? 'focused' : '',\n style: {\n transition: 'none'\n },\n children: [tab.icon ? /*#__PURE__*/_jsx(\"span\", {\n className: \"dashboard-list-item-icon\",\n children: /*#__PURE__*/React.isValidElement(tab.icon) ? tab.icon : /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: tab.icon\n })\n }) : null, tab.title]\n })\n }, tab.key);\n }), [filteredTabs, handleTabSelect, focusedIndex, handleMouseDown]);\n var errorElement = useMemo(() => tabElements.length === 0 ? /*#__PURE__*/_jsx(\"span\", {\n children: \"No open dashboard found.\"\n }) : null, [tabElements]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"dashboard-list-container d-flex flex-column\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"dashboard-list-header\",\n children: /*#__PURE__*/_jsx(SearchInput, {\n value: searchText,\n placeholder: \"Find open dashboard\",\n endPlaceholder: GLOBAL_SHORTCUTS.OPEN_DASHBOARD_LIST.getDisplayText(),\n onChange: handleSearchChange,\n onKeyDown: handleSearchKeyDown,\n ref: searchField\n })\n }), /*#__PURE__*/_jsxs(\"ul\", {\n className: \"dashboard-list flex-grow-1\",\n ref: listRef,\n children: [errorElement && /*#__PURE__*/_jsx(\"li\", {\n className: \"dashboard-list-message\",\n children: errorElement\n }), !errorElement && tabElements]\n })]\n });\n}\nexport default DashboardList;\n//# sourceMappingURL=DashboardList.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { DragDropContext, Droppable } from '@hello-pangea/dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight, vsChevronLeft, vsChevronDown } from '@deephaven/icons';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport DragUtils from \"../DragUtils.js\";\nimport Button from \"../Button.js\";\nimport NavTab from \"./NavTab.js\";\nimport \"./NavTabList.css\";\nimport { ContextActions } from \"../context-actions/index.js\";\nimport Popper from \"../popper/Popper.js\";\nimport DashboardList from \"./DashboardList.js\";\nimport { GLOBAL_SHORTCUTS } from \"../shortcuts/index.js\"; // mouse hold timeout to act as hold instead of click\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar CLICK_TIMEOUT = 500;\n\n// mouse hold acceleration\nvar START_SPEED = 0.01;\nvar ACCELERATION = 0.0005;\nfunction isScrolledLeft(element) {\n return element.scrollLeft === 0;\n}\nfunction isScrolledRight(element) {\n return (\n // single pixel buffer to account for sub-pixel rendering\n Math.abs(element.scrollLeft + element.clientWidth - element.scrollWidth) <= 1 || element.scrollWidth === 0\n );\n}\nfunction makeBaseContextActions(tab, tabs, onClose) {\n var {\n isClosable = false,\n key\n } = tab;\n var contextActions = [];\n if (isClosable && onClose != null) {\n contextActions.push({\n title: 'Close',\n order: 10,\n group: 20,\n action: () => {\n onClose(key);\n }\n });\n var disabled = true;\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i].key === tab.key) break;\n if (tabs[i].isClosable === true) {\n disabled = false;\n break;\n }\n }\n contextActions.push({\n title: 'Close to the Right',\n order: 20,\n group: 20,\n action: () => {\n for (var _i = tabs.length - 1; _i > 0; _i -= 1) {\n if (tabs[_i].key === key) break;\n if (tabs[_i].isClosable === true) onClose(tabs[_i].key);\n }\n },\n disabled\n });\n contextActions.push({\n title: 'Close All',\n order: 30,\n group: 20,\n action: () => {\n tabs.forEach(t => {\n if (t.isClosable === true) onClose(t.key);\n });\n }\n });\n }\n return contextActions;\n}\nfunction NavTabList(_ref) {\n var {\n activeKey,\n tabs,\n onSelect,\n onReorder,\n onClose,\n makeContextActions,\n renderAfterTabContent\n } = _ref;\n var containerRef = useRef();\n var [isOverflowing, setIsOverflowing] = useState(true);\n var [isDashboardTabMenuShown, setIsDashboardTabMenuShown] = useState(false);\n var [disableScrollLeft, setDisableScrollLeft] = useState(true);\n var [disableScrollRight, setDisableScrollRight] = useState(true);\n var handleResize = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n if (containerRef.current.clientWidth < containerRef.current.scrollWidth && tabs.length > 0) {\n setIsOverflowing(true);\n } else {\n setIsOverflowing(false);\n }\n setDisableScrollLeft(isScrolledLeft(containerRef.current));\n setDisableScrollRight(isScrolledRight(containerRef.current));\n }, [tabs]);\n useResizeObserver(containerRef.current, handleResize);\n var onDragEnd = useCallback(result => {\n DragUtils.stopDragging();\n\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n onReorder === null || onReorder === void 0 || onReorder(result.source.index, result.destination.index);\n }, [onReorder]);\n var handleScroll = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n var shouldDisableScrollLeft = isScrolledLeft(containerRef.current);\n if (shouldDisableScrollLeft !== disableScrollLeft) {\n setDisableScrollLeft(shouldDisableScrollLeft);\n }\n var shouldDisableScrollRight = isScrolledRight(containerRef.current);\n if (shouldDisableScrollRight !== disableScrollRight) {\n setDisableScrollRight(shouldDisableScrollRight);\n }\n }, [disableScrollLeft, disableScrollRight]);\n var continuousScrollRef = useRef({\n cancelClick: false\n });\n var handleLeftClick = useCallback(() => {\n if (containerRef.current == null || continuousScrollRef.current.cancelClick) {\n return;\n }\n var {\n children\n } = containerRef.current;\n for (var i = children.length - 1; i >= 0; i -= 1) {\n var child = children[i];\n // Subtract 5px from left edge to account for rounding of offset values\n if (child.offsetLeft < containerRef.current.scrollLeft - 5) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start'\n });\n return;\n }\n }\n }, []);\n var handleRightClick = useCallback(() => {\n if (containerRef.current == null || continuousScrollRef.current.cancelClick) {\n return;\n }\n var {\n children\n } = containerRef.current;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n // Subtract 5px from right edge to account for rounding of offset values\n if (child.offsetLeft + child.offsetWidth - 5 > containerRef.current.scrollLeft + containerRef.current.offsetWidth) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'end'\n });\n return;\n }\n }\n }, []);\n\n /**\n * Recurively called after initial timeout on mousedown. Continuously scroll with acceleration.\n * Cancelled by mouseup handler cancelling the animationFrame.\n * @param direction of scroll, left or right\n * @param startX starting position of scroll\n * @param deltaX delta from intial startX calculated recursively\n * @param prevTimestamp called on subsequent delta frames\n */\n var handleMouseRepeat = useCallback(function (direction, startX) {\n var deltaX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var prevTimestamp = arguments.length > 3 ? arguments[3] : undefined;\n var container = containerRef.current;\n if (container == null) {\n return;\n }\n continuousScrollRef.current.cancelClick = true;\n if (direction === 'left') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX - deltaX;\n } else if (direction === 'right') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX + deltaX;\n }\n\n // eslint-disable-next-line no-param-reassign\n continuousScrollRef.current.rAF = requestAnimationFrame(timestamp => {\n var startTime = prevTimestamp !== null && prevTimestamp !== void 0 ? prevTimestamp : timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX = START_SPEED * deltaTime + 0.5 * ACCELERATION * deltaTime ** 2;\n newDeltaX = Math.min(newDeltaX, container.scrollWidth);\n // scrollLeft enforces a limit but no point letting delta increment beyond scrollWidth\n\n handleMouseRepeat(direction, startX, newDeltaX, startTime);\n });\n }, []);\n var endContinuousScroll = useCallback(() => {\n var {\n holdTimer,\n rAF\n } = continuousScrollRef.current;\n if (holdTimer != null) {\n clearTimeout(holdTimer);\n continuousScrollRef.current.holdTimer = undefined;\n }\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n continuousScrollRef.current.rAF = undefined;\n }\n window.removeEventListener('mouseup', endContinuousScroll);\n }, []);\n useEffect(() => () => window.removeEventListener('mouseup', endContinuousScroll), [endContinuousScroll]);\n var handleMouseDown = useCallback(direction => {\n if (containerRef.current != null) {\n continuousScrollRef.current.holdTimer = window.setTimeout(handleMouseRepeat, CLICK_TIMEOUT, direction, containerRef.current.scrollLeft);\n }\n continuousScrollRef.current.cancelClick = false;\n window.addEventListener('mouseup', endContinuousScroll);\n }, [endContinuousScroll, handleMouseRepeat]);\n var handleMouseDownLeft = useCallback(() => {\n handleMouseDown('left');\n }, [handleMouseDown]);\n var handleMouseDownRight = useCallback(() => {\n handleMouseDown('right');\n }, [handleMouseDown]);\n\n // React binds to the root as a passive listener for wheel\n // This prevents the wheel event from being canceled\n // Bypass React's event system so we can prevent the default behavior\n // https://github.com/facebook/react/issues/14856\n useEffect(function handleWheel() {\n var _containerRef$current;\n var onWheel = e => {\n e.stopPropagation();\n e.preventDefault();\n var nav = e.currentTarget;\n var delta = Math.abs(e.deltaY) > Math.abs(e.deltaX) ? e.deltaY : e.deltaX;\n\n // Scrolling jumps too far sometimes, so clamp to get a smoother scroll\n nav.scrollLeft += clamp(delta, -30, 30);\n };\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 || _containerRef$current.addEventListener('wheel', onWheel);\n return () => {\n var _containerRef$current2;\n (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 || _containerRef$current2.removeEventListener('wheel', onWheel);\n };\n }, []);\n var tabContextActionMap = useMemo(() => {\n var tabContextActions = new Map();\n tabs.forEach(tab => {\n var {\n key\n } = tab;\n var contextActions = [() => makeBaseContextActions(tab, tabs, onClose), () => {\n var _makeContextActions;\n return (_makeContextActions = makeContextActions === null || makeContextActions === void 0 ? void 0 : makeContextActions(tab)) !== null && _makeContextActions !== void 0 ? _makeContextActions : [];\n }];\n tabContextActions.set(key, contextActions);\n });\n return tabContextActions;\n }, [makeContextActions, tabs, onClose]);\n var activeTabRef = useRef(null);\n var activeTab = tabs.find(tab => tab.key === activeKey);\n var navTabs = tabs.map((tab, index) => {\n var {\n key\n } = tab;\n var isActive = tab === activeTab;\n return /*#__PURE__*/_jsx(NavTab, {\n tab: tab,\n index: index,\n isActive: isActive,\n activeRef: activeTabRef,\n onSelect: onSelect,\n onClose: onClose,\n isDraggable: onReorder != null,\n contextActions: tabContextActionMap.get(key),\n renderAfterTabContent: renderAfterTabContent\n }, key);\n });\n useEffect(\n // Needs to be in a useEffect so the ref is updated\n function scrollActiveTabIntoView() {\n if (activeTabRef.current != null) {\n activeTabRef.current.scrollIntoView({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }, [activeKey]);\n var handleDashboardMenuClick = () => {\n setIsDashboardTabMenuShown(!isDashboardTabMenuShown);\n };\n var handleDashboardMenuSelect = tab => {\n setIsDashboardTabMenuShown(false);\n onSelect(tab.key);\n };\n var handleDashboardMenuClose = () => {\n setIsDashboardTabMenuShown(false);\n };\n return /*#__PURE__*/_jsxs(\"nav\", {\n className: \"nav-container\",\n children: [isOverflowing && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronLeft,\n transform: \"grow-4\"\n }),\n className: \"tab-controls-btn tab-controls-btn-left\",\n tooltip: \"Scroll left\",\n onClick: handleLeftClick,\n onMouseDown: handleMouseDownLeft,\n disabled: disableScrollLeft\n }), /*#__PURE__*/_jsx(DragDropContext, {\n onDragStart: DragUtils.startDragging,\n onDragEnd: onDragEnd,\n children: /*#__PURE__*/_jsx(Droppable, {\n droppableId: \"droppable-tab-navigation\",\n direction: \"horizontal\",\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread({\n ref: r => {\n if (r == null) {\n return;\n }\n containerRef.current = r;\n provided.innerRef(r);\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.droppableProps), {}, {\n className: classNames('nav nav-tabs', {\n dragging: snapshot.draggingFromThisWith\n }),\n role: \"tablist\",\n onScroll: handleScroll,\n children: [navTabs, provided.placeholder]\n }))\n })\n }), isOverflowing && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight,\n transform: \"grow-4\"\n }),\n className: \"tab-controls-btn tab-controls-btn-right\",\n tooltip: \"Scroll right\",\n onClick: handleRightClick,\n onMouseDown: handleMouseDownRight,\n disabled: disableScrollRight\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronDown,\n transform: \"grow-4\"\n }),\n className: \"btn-dashboard-list-menu btn-show-dashboard-list\",\n tooltip: \"Search open dashboards\",\n onClick: handleDashboardMenuClick,\n disabled: tabs.length < 2,\n style: {\n visibility: isOverflowing ? 'visible' : 'hidden',\n marginLeft: 'auto'\n },\n children: /*#__PURE__*/_jsx(Popper, {\n isShown: isDashboardTabMenuShown,\n className: \"dashboard-list-menu-popper\",\n onExited: handleDashboardMenuClose,\n options: {\n placement: 'bottom-start'\n },\n closeOnBlur: true,\n interactive: true,\n children: /*#__PURE__*/_jsx(DashboardList, {\n tabs: tabs,\n onSelect: handleDashboardMenuSelect\n })\n })\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: [{\n action: () => {\n setIsDashboardTabMenuShown(!isDashboardTabMenuShown);\n },\n shortcut: GLOBAL_SHORTCUTS.OPEN_DASHBOARD_LIST,\n isGlobal: true\n }]\n })]\n });\n}\nexport default NavTabList;\n//# sourceMappingURL=NavTabList.js.map","/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable react/display-name */\n\nimport React, { useEffect, useState, useRef, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\nimport { assertNotNull } from '@deephaven/utils';\nimport \"./RandomAreaPlotAnimation.css\";\nimport { resolveCssVariablesInRecord, useTheme } from \"./theme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar VOLATILITY = 0.025; // how spikey the data gets\nvar LOW = 0.9;\nvar HIGH = 0.1;\nvar START_Y = 0.618;\nvar GRID_SIZE = 80;\nvar PATTERN = {\n SIZE: 8,\n DOT_SIZE: 2\n};\nvar PX_PER_SECOND = 18;\nvar RESIZE_DEBOUNCE = 250;\nvar INTERACTION_TIMEOUT = 60 * 1000;\nvar THEME_COLOR_VARIABLES = {\n background: 'var(--dh-color-random-area-plot-animation-bg)',\n foregroundFill: 'var(--dh-color-random-area-plot-animation-fg-fill)',\n foregroundStroke: 'var(--dh-color-random-area-plot-animation-fg-stroke)',\n gridColor: 'var(--dh-color-random-area-plot-animation-grid)'\n};\n\n/**\n * Resolve theme colors needed for our animation.\n */\nfunction getRandomAreaPlotAnimationThemeColors() {\n return resolveCssVariablesInRecord(THEME_COLOR_VARIABLES);\n}\n\n// Draw a background canvas, paint it with a fun chart looking animation\nvar RandomAreaPlotAnimation = /*#__PURE__*/React.memo(() => {\n var {\n activeThemes\n } = useTheme();\n var themeColors = useMemo(getRandomAreaPlotAnimationThemeColors, [activeThemes]);\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 || _ctx.scale(scale, scale);\n }\n\n // Returns the background fill create offscreen as pattern\n function createPatternFill() {\n var {\n foregroundFill,\n foregroundStroke\n } = themeColors;\n\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 = foregroundStroke;\n contextPattern.fillRect(0, 0, PATTERN.DOT_SIZE, PATTERN.DOT_SIZE);\n\n // add an overlay fill\n contextPattern.fillStyle = foregroundFill;\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 lastTimestamp = lastTimestamp !== null && lastTimestamp !== void 0 ? lastTimestamp : timestamp;\n var {\n background,\n foregroundStroke,\n gridColor\n } = themeColors;\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 = gridColor;\n ctx.stroke();\n\n // for speeds less then 60 px per second, subpixel motion is required to look smooth\n var subPixelMotion = ((lastTimestamp !== null && lastTimestamp !== void 0 ? lastTimestamp : 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 = foregroundStroke;\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) - (lastTimestamp !== null && lastTimestamp !== void 0 ? lastTimestamp : 0) > 1000 / PX_PER_SECOND) {\n // number of points to add since last update\n var numberOfPoints = Math.floor(((timestamp !== null && timestamp !== void 0 ? timestamp : 0) - (lastTimestamp !== null && lastTimestamp !== void 0 ? lastTimestamp : 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 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 }, [themeColors]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"random-area-plot-animation-container\",\n ref: container,\n children: /*#__PURE__*/_jsx(\"canvas\", {\n ref: canvas,\n className: shade ? 'shade' : ''\n })\n });\n});\nexport default RandomAreaPlotAnimation;\n//# sourceMappingURL=RandomAreaPlotAnimation.js.map","import { useMemo } from 'react';\nimport { Text } from \"./spectrum/index.js\";\nimport stylesCommon from \"./SpectrumComponent.module.css\";\nimport { Tooltip } from \"./popper/index.js\";\nimport { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function TextWithTooltip(_ref) {\n var {\n text,\n placement = 'top-start'\n } = _ref;\n var options = useMemo(() => ({\n placement\n }), [placement]);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Text, {\n UNSAFE_className: stylesCommon.spectrumEllipsis,\n children: text !== null && text !== void 0 ? text :\n /*#__PURE__*/\n /* &nbsp; so that height doesn't collapse when empty */\n _jsx(_Fragment, {\n children: \"\\xA0\"\n })\n }), text == null || text === '' ? null : /*#__PURE__*/_jsx(Tooltip, {\n options: options,\n children: text\n })]\n });\n}\nexport default TextWithTooltip;\n//# sourceMappingURL=TextWithTooltip.js.map","var _excluded = [\"scrollRef\", \"getItemDisplayText\", \"getKey\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* eslint-disable react/jsx-props-no-spreading */\nimport { useCallback } from 'react';\nimport { SpectrumComboBox, Item } from \"./spectrum/index.js\";\nimport TextWithTooltip from \"./TextWithTooltip.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function SearchableCombobox(_ref) {\n var {\n scrollRef,\n getItemDisplayText,\n getKey\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var renderItem = useCallback(item => {\n var key = getKey(item);\n var displayText = getItemDisplayText(item);\n return /*#__PURE__*/_jsx(Item, {\n textValue: displayText !== null && displayText !== void 0 ? displayText : String(key),\n children: /*#__PURE__*/_jsx(TextWithTooltip, {\n text: displayText\n })\n }, key);\n }, [getItemDisplayText, getKey]);\n return /*#__PURE__*/_jsx(SpectrumComboBox, _objectSpread(_objectSpread({}, props), {}, {\n // The `ref`prop type defined by React Spectrum is incorrect here\n ref: scrollRef,\n menuTrigger: \"focus\"\n // Type assertion is necessary since <ComboBox> types don't recognize the\n // generic key arg\n ,\n onSelectionChange: props.onSelectionChange,\n children: renderItem\n }));\n}\nexport default SearchableCombobox;\n//# sourceMappingURL=SearchableCombobox.js.map","import { useEffect, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsEmptyWindow } from '@deephaven/icons';\nimport { Content, Heading, Icon, IllustratedMessage } from \"./spectrum/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar DEFAULT_DELAY_MS = 500;\nexport function TableViewEmptyState(_ref) {\n var {\n heading,\n content,\n delayMs = DEFAULT_DELAY_MS\n } = _ref;\n var [show, setShow] = useState(false);\n\n // Spectrum `TableView` will render the result of `renderEmptyState` prop\n // immediately, and it will be hidden once data loads. In cases where the data\n // load is quick, there is a jarring flicker, and the empty data message is\n // not helpful. This delay will avoid showing the message if data loads within\n // the `delayMs`.\n useEffect(() => {\n window.setTimeout(() => {\n setShow(true);\n }, delayMs);\n }, [delayMs]);\n return show ? /*#__PURE__*/_jsxs(IllustratedMessage, {\n children: [/*#__PURE__*/_jsx(Icon, {\n size: \"XXL\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsEmptyWindow\n })\n }), /*#__PURE__*/_jsx(Heading, {\n children: heading\n }), content == null ? null : /*#__PURE__*/_jsx(Content, {\n children: content\n })]\n }) : null;\n}\nexport default TableViewEmptyState;\n//# sourceMappingURL=TableViewEmptyState.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\";\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\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__*/_jsxs(\"div\", {\n className: \"time-slider\",\n \"data-testid\": dataTestId,\n children: [/*#__PURE__*/_jsx(PopOvers, {\n startTime: startTime,\n endTime: endTime,\n onStartTimeChange: handleStartTimeChange,\n onEndTimeChange: handleEndTimeChange,\n isStartModified: isStartModified,\n isEndModified: isEndModified\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"track\",\n ref: track,\n children: [/*#__PURE__*/_jsx(TrackFills, {\n startTime: startTime,\n endTime: endTime\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"ticks\",\n children: Array(24).fill(null).map((value, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"tick\"\n }, index))\n }), /*#__PURE__*/_jsx(Handle, {\n track: track,\n time: startTime,\n setTime: handleStartTimeChange\n }), /*#__PURE__*/_jsx(Handle, {\n track: track,\n time: endTime,\n setTime: handleEndTimeChange\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"tick-labels\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"tick-label\",\n children: \"0:00\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"tick-label-wrapper\",\n children: Array(24).fill(null).map((value, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"tick-label\",\n children: \"\".concat(index + 1, \":00\")\n }, index))\n })]\n })]\n });\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 || _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 || _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__*/_jsxs(\"div\", {\n className: \"time-slider-popovers\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"flex\",\n style: {\n flexBasis: \"calc(\".concat(firstTime / SECONDS_IN_DAY * 100, \"% - \").concat(POPOVER_WIDTH / 2, \"px)\")\n }\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"handle-popper\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: classNames({\n modified: swapTimes ? isEndModified : isStartModified\n }),\n children: swapTimes ? 'End Time' : 'Start Time'\n }), /*#__PURE__*/_jsx(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 })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"flex-spacer\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"handle-popper\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: classNames({\n modified: swapTimes ? isStartModified : isEndModified\n }),\n children: swapTimes ? 'Start Time' : 'End Time'\n }), /*#__PURE__*/_jsx(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 })]\n }), /*#__PURE__*/_jsx(\"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/**\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__*/_jsxs(\"div\", {\n className: \"track-fills\",\n \"data-testid\": dataTestId,\n children: [startTime > endTime && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"track-fill track-fill-start\",\n style: {\n transform: \"scaleX(\".concat(endTime / SECONDS_IN_DAY, \")\")\n }\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"track-fill track-fill-end\",\n style: {\n transform: \"scaleX(\".concat((SECONDS_IN_DAY - startTime) / SECONDS_IN_DAY, \")\")\n }\n })]\n }), startTime < endTime && /*#__PURE__*/_jsx(\"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/**\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 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__*/_jsx(\"div\", {\n className: \"handle-track\",\n style: {\n transform\n },\n children: /*#__PURE__*/_jsx(\"button\", {\n className: \"handle\",\n type: \"button\",\n \"aria-label\": \"Change time\",\n onMouseDown: handleMouseDown,\n \"data-testid\": dataTestId\n })\n });\n}\nexport default TimeSlider;\n//# sourceMappingURL=TimeSlider.js.map","import React, { useRef } 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\";\nimport { FadeTransition } from \"./transitions/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\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 nodeRef = useRef(null);\n var hasButtons = buttons && buttons.length !== 0;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: isShown,\n timeout: ThemeExport.transitionMs,\n classNames: \"toast-notification-slide-up\",\n mountOnEnter: true,\n unmountOnExit: true,\n nodeRef: nodeRef,\n children: /*#__PURE__*/_jsxs(\"div\", {\n ref: nodeRef,\n className: classNames('toast-notification', classNamesProp, type),\n role: \"presentation\",\n onClick: onClick,\n onKeyPress: onClick,\n \"data-testid\": dataTestId,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"message-container\",\n children: /*#__PURE__*/_jsx(\"span\", {\n className: \"message\",\n children: message\n })\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: hasButtons,\n timeout: ThemeExport.transitionSlowMs,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"buttons-container\",\n children: buttons\n })\n }), onDismiss && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: vsClose,\n tooltip: \"Close notification\",\n className: \"my-2\",\n onClick: onDismiss\n })]\n })\n });\n}\nToastNotification.TYPE = Object.freeze({\n ERROR: 'error'\n});\nexport default ToastNotification;\n//# sourceMappingURL=ToastNotification.js.map","import React from 'react';\nimport useDeferredApi from \"./useDeferredApi.js\";\nimport { ApiContext } from \"./ApiBootstrap.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Does not render children until the deferred API is resolved.\n */\nexport var DeferredApiBootstrap = /*#__PURE__*/React.memo(_ref => {\n var {\n children,\n onError,\n widget\n } = _ref;\n var [api, apiError] = useDeferredApi(widget);\n if (apiError != null) {\n onError === null || onError === void 0 || onError(apiError);\n return null;\n }\n if (api == null) {\n // Still waiting for the API to load\n return null;\n }\n return /*#__PURE__*/_jsx(ApiContext.Provider, {\n value: api,\n children: children\n });\n});\nDeferredApiBootstrap.displayName = 'DeferredApiBootstrap';\nexport default DeferredApiBootstrap;\n//# sourceMappingURL=DeferredApiBootstrap.js.map","import { createContext, useContext, useEffect, useState } from 'react';\n\n/** Function for unsubscribing from a given subscription */\n\n/** Update when the ObjectFetch is still loading */\n\n/** Update when the ObjectFetch has errored */\n\n/** Update when the object is ready */\n\n/**\n * Update with the current `fetch` function and status of the object.\n * - If both `fetch` and `error` are `null`, it is still loading the fetcher\n * - If `fetch` is not `null`, the object is ready to be fetched\n * - If `error` is not `null`, there was an error loading the object\n */\n\n/** ObjectFetchManager for managing a subscription to an object using a VariableDescriptor */\n\n/** Context for tracking an implementation of the ObjectFetchManager. */\nexport var ObjectFetchManagerContext = /*#__PURE__*/createContext(null);\nObjectFetchManagerContext.displayName = 'ObjectFetchManagerContext';\n\n/**\n * Retrieve a `fetch` function for the given variable descriptor.\n *\n * @param descriptor Descriptor or URI to get the `fetch` function for\n * @returns An object with the current `fetch` function, OR an error status set if there was an issue fetching the object.\n * Retrying is left up to the ObjectManager implementation used from this context.\n */\nexport function useObjectFetch(descriptor) {\n var [currentUpdate, setCurrentUpdate] = useState({\n status: 'loading'\n });\n var objectFetchManager = useContext(ObjectFetchManagerContext);\n useEffect(() => {\n if (objectFetchManager == null) {\n setCurrentUpdate({\n error: new Error('No ObjectFetchManager available in context'),\n status: 'error'\n });\n return;\n }\n // Update to signal we're still loading, if we're not already in a loading state.\n setCurrentUpdate(oldUpdate => oldUpdate.status === 'loading' ? oldUpdate : {\n status: 'loading'\n });\n return objectFetchManager.subscribe(descriptor, setCurrentUpdate);\n }, [descriptor, objectFetchManager]);\n return currentUpdate;\n}\n//# sourceMappingURL=useObjectFetch.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useObjectFetch } from \"./useObjectFetch.js\";\nimport useDeferredApi from \"./useDeferredApi.js\";\nimport useApi from \"./useApi.js\";\nvar log = Log.module('useWidget');\n\n/**\n * Types of widgets that can be fetched with this hook.\n */\n\n/**\n * Wrapper object for a widget and error status. Both widget and error will be `null` if it is still loading.\n */\n\n/**\n * Retrieve a widget for the given variable descriptor. Note that if the widget is successfully fetched, ownership of the widget is passed to the consumer and will need to close the object as well.\n * @param descriptor Descriptor or URI to get the widget for. Should be stable to avoid infinite re-fetching.\n * @returns A WidgetWrapper object that contains the widget and JS API, or an error status if there was an issue fetching the widget. Will contain nulls if still loading.\n */\nexport function useWidget(descriptor) {\n var [wrapper, setWrapper] = useState(() => ({\n widget: null,\n error: null\n }));\n var objectFetch = useObjectFetch(descriptor);\n var [descriptorApi, descriptorApiError] = useDeferredApi(descriptor);\n var defaultApi = useApi();\n var api = descriptorApi !== null && descriptorApi !== void 0 ? descriptorApi : defaultApi;\n useEffect(function loadWidget() {\n log.debug('loadWidget', descriptor);\n var {\n status\n } = objectFetch;\n if (status === 'error') {\n // We can't fetch if there's an error getting the fetcher, just return an error\n setWrapper({\n widget: null,\n error: objectFetch.error\n });\n return;\n }\n if (status === 'loading') {\n // Still loading\n setWrapper({\n widget: null,\n error: null\n });\n return;\n }\n var {\n fetch\n } = objectFetch;\n // We should be able to load the widget. Load it asynchronously, and set the widget when it's done.\n // If we get cancelled before the fetch is done, we should close the widget and its exported objects.\n // If not though, the consumer of the widget is expected to take ownership and close the widget appropriately.\n var isCancelled = false;\n function loadWidgetInternal() {\n return _loadWidgetInternal.apply(this, arguments);\n }\n function _loadWidgetInternal() {\n _loadWidgetInternal = _asyncToGenerator(function* () {\n try {\n assertNotNull(fetch);\n var newWidget = yield fetch();\n if (isCancelled) {\n log.debug2('loadWidgetInternal cancelled', descriptor, newWidget);\n newWidget.close();\n if ('exportedObjects' in newWidget) {\n newWidget.exportedObjects.forEach(exportedObject => {\n exportedObject.close();\n });\n }\n return;\n }\n log.debug('loadWidgetInternal done', descriptor, newWidget);\n setWrapper({\n widget: newWidget,\n error: null\n });\n } catch (e) {\n if (isCancelled) {\n return;\n }\n log.error('loadWidgetInternal error', descriptor, e);\n setWrapper({\n widget: null,\n error: e !== null && e !== void 0 ? e : new Error('Null error')\n });\n }\n });\n return _loadWidgetInternal.apply(this, arguments);\n }\n loadWidgetInternal();\n return () => {\n isCancelled = true;\n };\n }, [descriptor, objectFetch]);\n var wrapperWithApi = useMemo(() => {\n var _wrapper$error;\n return _objectSpread(_objectSpread({}, wrapper), {}, {\n error: (_wrapper$error = wrapper.error) !== null && _wrapper$error !== void 0 ? _wrapper$error : descriptorApiError,\n api: wrapper.widget != null ? api : null\n });\n }, [wrapper, api, descriptorApiError]);\n return wrapperWithApi;\n}\nexport default useWidget;\n//# sourceMappingURL=useWidget.js.map","import React from 'react';\nimport { ApiContext } from '@deephaven/jsapi-bootstrap';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function makeApiContextWrapper(dh) {\n return function ApiContextWrapper(_ref) {\n var {\n children\n } = _ref;\n return /*#__PURE__*/_jsx(ApiContext.Provider, {\n value: dh,\n children: children\n });\n };\n}\nexport default {\n makeApiContextWrapper\n};\n//# sourceMappingURL=HookTestUtils.js.map","import { isMessage } from '@deephaven/utils';\nexport { /** @deprecated Use `@deephaven/utils` `getWindowParent` instead. */\ngetWindowParent, /** @deprecated Use `@deephaven/utils` `isMessage` instead. */\nisMessage, /** @deprecated Use `@deephaven/utils` `isResponse` instead. */\nisResponse, /** @deprecated Use `@deephaven/utils` `makeMessage` instead. */\nmakeMessage, /** @deprecated Use `@deephaven/utils` `makeResponse` instead. */\nmakeResponse, /** @deprecated Use `@deephaven/utils` `requestParentResponse` instead. */\nrequestParentResponse\n/** @deprecated Use `@deephaven/utils` `PostMessage<T>` instead. */ } from '@deephaven/utils';\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 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}\n//# sourceMappingURL=MessageUtils.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\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(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport Log from '@deephaven/log';\nimport { requestParentResponse } from '@deephaven/utils';\nimport { nanoid } from 'nanoid';\nimport { SESSION_DETAILS_REQUEST } from \"./MessageUtils.js\";\nimport NoConsolesError, { isNoConsolesError } from \"./NoConsolesError.js\";\nvar log = Log.module('SessionUtils');\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: nanoid()\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","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\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(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport React, { useCallback, useState, useRef, useEffect, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { LoadingOverlay, SearchInput, SelectValueList } from '@deephaven/components';\nimport { EMPTY_FUNCTION, 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\";\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\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 = EMPTY_FUNCTION,\n onBlur = EMPTY_FUNCTION,\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 || _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__*/_jsxs(\"div\", {\n ref: parentRef,\n className: classNames('table-input-container d-flex flex-column position-relative', className),\n children: [/*#__PURE__*/_jsx(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__*/_jsx(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__*/_jsxs(\"div\", {\n className: \"meta-row\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"d-flex align-items-center text-muted small\",\n children: table != null && table.size > itemCount && /*#__PURE__*/_jsxs(_Fragment, {\n children: [\"Table is too large, showing the first \", SIZE_LIMIT, \" items.\"]\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onBlur: handleChildBlur,\n onClick: handleSelectAll,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link mr-a\",\n onBlur: handleChildBlur,\n onClick: handleClearSelection,\n children: \"Clear\"\n })]\n })]\n }), table == null || error && /*#__PURE__*/_jsx(\"div\", {\n className: \"h-100 w-100 position-absolute\",\n children: /*#__PURE__*/_jsx(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 \"data-testid\": \"table-input-loading\"\n })\n })]\n });\n}\nexport default TableInput;\n//# sourceMappingURL=TableInput.js.map","var _excluded = [\"onInputChange\", \"onSearchTextChange\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport { ComboBoxNormalized } from '@deephaven/components';\nimport { useCallback, useRef } from 'react';\nimport { usePickerProps } from \"./utils/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ComboBox(props) {\n var _usePickerProps = usePickerProps(props),\n {\n onInputChange: onInputChangeInternal,\n onSearchTextChange\n } = _usePickerProps,\n pickerProps = _objectWithoutProperties(_usePickerProps, _excluded);\n var isOpenRef = useRef(false);\n var inputValueRef = useRef('');\n var onInputChange = useCallback(value => {\n onInputChangeInternal === null || onInputChangeInternal === void 0 || onInputChangeInternal(value);\n\n // Only apply search text if ComboBox is open.\n if (isOpenRef.current) {\n onSearchTextChange(value);\n }\n // When the ComboBox is closed, `onInputChange` may have been called as a\n // result of user search input, ComboBox selection, or by selected key\n // prop changes. We can't determine the source here, so we clear the search\n // text and store the search value so that the list is unfiltered the next\n // time the ComboBox is opened. We also store the search value so we can\n // re-apply it in `onOpenChange` if the ComboBox is opened by user search\n // input.\n else {\n onSearchTextChange('');\n inputValueRef.current = value;\n }\n }, [onInputChangeInternal, onSearchTextChange]);\n var onOpenChange = useCallback((isOpen, menuTrigger) => {\n var _pickerProps$onOpenCh;\n (_pickerProps$onOpenCh = pickerProps.onOpenChange) === null || _pickerProps$onOpenCh === void 0 || _pickerProps$onOpenCh.call(pickerProps, isOpen);\n\n // Reset the search text when the ComboBox is closed.\n if (!isOpen) {\n onSearchTextChange('');\n }\n // Restore search text when ComboBox has been opened by user input.\n else if (menuTrigger === 'input') {\n onSearchTextChange(inputValueRef.current);\n }\n\n // Store the open state so that `onInputChange` has access to it.\n isOpenRef.current = isOpen;\n }, [onSearchTextChange, pickerProps]);\n return /*#__PURE__*/_jsx(ComboBoxNormalized\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, pickerProps), {}, {\n onInputChange: onInputChange,\n onOpenChange: onOpenChange\n }));\n}\nexport default ComboBox;\n//# sourceMappingURL=ComboBox.js.map","var _excluded = [\"table\", \"keyColumn\", \"labelColumn\", \"iconColumn\", \"settings\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport { LIST_VIEW_ROW_HEIGHTS, ListViewNormalized, useSpectrumThemeProvider } from '@deephaven/components';\nimport useFormatter from \"../useFormatter.js\";\nimport useViewportData from \"../useViewportData.js\";\nimport { useItemRowDeserializer } from \"./utils/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ListView(_ref) {\n var _props$density;\n var {\n table,\n keyColumn: keyColumnName,\n labelColumn: labelColumnName,\n iconColumn: iconColumnName,\n settings\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var {\n scale\n } = useSpectrumThemeProvider();\n var itemHeight = LIST_VIEW_ROW_HEIGHTS[(_props$density = props.density) !== null && _props$density !== void 0 ? _props$density : 'regular'][scale];\n var {\n getFormattedString: formatValue\n } = useFormatter(settings);\n var deserializeRow = useItemRowDeserializer({\n table,\n iconColumnName,\n keyColumnName,\n labelColumnName,\n formatValue\n });\n var {\n viewportData,\n onScroll\n } = useViewportData({\n reuseItemsOnTableResize: true,\n table,\n itemHeight,\n deserializeRow\n });\n return /*#__PURE__*/_jsx(ListViewNormalized\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, props), {}, {\n normalizedItems: viewportData.items,\n showItemIcons: iconColumnName != null,\n onScroll: onScroll\n }));\n}\nexport default ListView;\n//# sourceMappingURL=ListView.js.map","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Option, Select } from '@deephaven/components';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { EMPTY_ARRAY } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isJavaObject(value) {\n return typeof value === 'object' && value != null && 'equals' in value && typeof value.equals === 'function';\n}\nfunction defaultFormatValue(value) {\n return \"\".concat(value);\n}\n/**\n * Dropdown that displays the values of a column in a table.\n */\nexport function TableDropdown(_ref) {\n var {\n column,\n table,\n filter = EMPTY_ARRAY,\n onChange,\n selectedValue,\n disabled,\n className,\n formatValue = defaultFormatValue,\n maxSize = 1000\n } = _ref;\n var dh = useApi();\n var [values, setValues] = useState([]);\n useEffect(() => {\n if (table == null) {\n setValues([]);\n return undefined;\n }\n var tableColumn = column !== null && column !== void 0 ? column : table.columns[0];\n // Need to set a viewport on the table and start listening to get the values to populate the dropdown\n table.applyFilter(filter);\n var subscription = table.setViewport(0, maxSize, [tableColumn]);\n subscription.addEventListener(dh.Table.EVENT_UPDATED, event => {\n var {\n detail\n } = event;\n // Core JSAPI returns undefined for null table values,\n // coalesce with null to differentiate null from no selection in the dropdown\n // https://github.com/deephaven/deephaven-core/issues/5400\n var newValues = detail.rows.map(row => {\n var _row$get;\n return (_row$get = row.get(tableColumn)) !== null && _row$get !== void 0 ? _row$get : null;\n });\n setValues(newValues);\n });\n return () => {\n subscription.close();\n };\n }, [column, dh, filter, maxSize, table]);\n\n // If the selected value is undefined, add a placeholder item\n var allValues = useMemo(() => {\n if (selectedValue === undefined) {\n return [undefined, ...values];\n }\n return values;\n }, [selectedValue, values]);\n\n // Since values could be anything, not just strings, track the selected index based on the current data\n var selectedIndex = useMemo(() => allValues.findIndex(value => value === selectedValue || isJavaObject(value) && value.equals(selectedValue)), [selectedValue, allValues]);\n var handleChange = useCallback(newSelectedValue => {\n var newSelectedIndex = parseInt(newSelectedValue, 10);\n onChange(allValues[newSelectedIndex]);\n }, [onChange, allValues]);\n return /*#__PURE__*/_jsx(Select, {\n className: className,\n value: selectedIndex,\n onChange: handleChange,\n disabled: disabled,\n children: allValues.map((value, i) =>\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n _jsx(Option, {\n value: i,\n children: formatValue(value)\n }, \"\".concat(i)))\n });\n}\nexport default TableDropdown;\n//# sourceMappingURL=TableDropdown.js.map","import { BROADCAST_CHANNEL_NAME } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { EMPTY_FUNCTION, isMessage } 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 || onLogin(event.data);\n } else if (isBroadcastLogoutMessage(event.data)) {\n onLogout === null || onLogout === void 0 || onLogout(event.data);\n }\n }, [onLogin, onLogout]);\n useBroadcastChannel(onMessage);\n}\nexport default useBroadcastLoginListener;\n//# sourceMappingURL=useBroadcastLoginListener.js.map","import { useCallback, useState } from 'react';\nimport { useDebouncedValue, usePromiseFactory } from '@deephaven/react-hooks';\nimport useTableUtils from \"./useTableUtils.js\";\n/**\n * Manage a trimmed text value and check if it exists in a list of table columns.\n * @param table The table to check for the value\n * @param columnNames The column names to check\n * @param debounceMs Debounce timer for re-checking the value\n * @param isCaseSensitive Whether the value check is case sensitive\n */\nexport function useCheckIfExistsValue(table, columnNames, debounceMs, isCaseSensitive) {\n var tableUtils = useTableUtils();\n var [valueTrimmed, setValueTrimmed] = useState('');\n var {\n value: valueTrimmedDebounced\n } = useDebouncedValue(valueTrimmed, debounceMs);\n var trimAndUpdateValue = useCallback(text => {\n setValueTrimmed(text.trim());\n }, []);\n var {\n data: valueExistsData,\n isLoading: valueExistsIsLoading\n } = usePromiseFactory(tableUtils.doesColumnValueExist, [table, columnNames, valueTrimmedDebounced, isCaseSensitive]);\n\n // If value check is loading or if debounce hasn't settled, set\n // `matchesExistingValue` to null since it is indeterminate\n var valueExists = valueExistsIsLoading || valueTrimmed !== valueTrimmedDebounced ? null : valueExistsData;\n return {\n valueTrimmed,\n valueTrimmedDebounced,\n valueExists,\n trimAndUpdateValue\n };\n}\nexport default useCheckIfExistsValue;\n//# sourceMappingURL=useCheckIfExistsValue.js.map","import debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { useEffect, useMemo } from 'react';\nimport useTableUtils from \"./useTableUtils.js\";\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 function useDebouncedViewportSearch(viewportData, columnName) {\n var debounceMs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEBOUNCE_VIEWPORT_SEARCH_MS;\n var tableUtils = useTableUtils();\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}\nexport default useDebouncedViewportSearch;\n//# sourceMappingURL=useDebouncedViewportSearch.js.map","import { createKeyedItemKey, createSelectedValuesFilter } from '@deephaven/jsapi-utils';\nimport { isSelectionMaybeInvertedEqual, useDebouncedValue, useIsEqualMemo, useMappedSelection } from '@deephaven/react-hooks';\nimport { useMemo } from 'react';\nimport useTableUtils from \"./useTableUtils.js\";\nexport var DEBOUNCE_MS = 300;\n/**\n * Creates a filter factory for the current selected keys of a viewport. The\n * selected keys will be mapped to values to match in a given column name. The\n * resulting filter factory is debounced to allow some cushion for cases where\n * a user rapidly changes selections, e.g. in a checkbox list.\n */\nexport function useDebouncedViewportSelectionFilter(_ref) {\n var {\n viewportData,\n columnName,\n shouldSelectAllOnNoSelection,\n mapItemToValue\n } = _ref;\n var tableUtils = useTableUtils();\n\n // Map selection to values contained in the column to filter\n var valuesSelection = useMappedSelection(viewportData, mapItemToValue, createKeyedItemKey);\n\n // Debounce so user can rapidly select multiple items in a row without the\n // cost of updating the table on each change\n var {\n value: debouncedValuesSelection\n } = useDebouncedValue(valuesSelection, DEBOUNCE_MS);\n\n // In cases where a user rapidly selects then deselects the selection\n // reference will change, but the state it represents will remain unchanged.\n // Memoize based on the selection value to avoid unnecessarily re-applying\n // table filters.\n var memoValuesSelection = useIsEqualMemo(debouncedValuesSelection, isSelectionMaybeInvertedEqual);\n return useMemo(() => createSelectedValuesFilter(tableUtils, columnName, memoValuesSelection.selection, shouldSelectAllOnNoSelection, memoValuesSelection.isInverted), [columnName, memoValuesSelection, shouldSelectAllOnNoSelection, tableUtils]);\n}\nexport default useDebouncedViewportSelectionFilter;\n//# sourceMappingURL=useDebouncedViewportSelectionFilter.js.map","import { useMemo, useRef } from 'react';\n/**\n * Takes an array of items and adds a default item to the top of the list if:\n * 1. defaultDisplayValue is provided\n * 2. The `searchText` is empty or\n * The `searchText` is contained (case insensitive) in the default item display text.\n * @param items List of items filtered on `searchText`\n * @param displayProp The item prop containing display text\n * @param searchText The current search text that is filtering the items\n * @param defaultDisplayValue The display text to set as the default item `displayProp` value\n */\nexport function useFilteredItemsWithDefaultValue(items, displayProp, searchText, defaultDisplayValue) {\n // Exclude search text from updating the memo. This ensures that adding /\n // removing of the default item stays in sync with data loading. Otherwise,\n // the item can move while data is still loading.\n var searchTextRef = useRef('');\n searchTextRef.current = searchText;\n return useMemo(() => {\n // If the list is still loading, items will exist, but their item prop will be undefined\n var isLoading = items.length > 0 && items[0].item == null;\n if (!isLoading && defaultDisplayValue != null && (searchTextRef.current === '' || defaultDisplayValue.toLowerCase().includes(searchTextRef.current.toLowerCase()))) {\n return [{\n key: defaultDisplayValue,\n item: {\n [displayProp]: defaultDisplayValue\n }\n }, ...items];\n }\n return items;\n }, [defaultDisplayValue, displayProp, items]);\n}\nexport default useFilteredItemsWithDefaultValue;\n//# sourceMappingURL=useFilteredItemsWithDefaultValue.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport { useCallback } from 'react';\n/**\n * Gets an item's position in a list of items based on its row index in a table.\n * @param table Table to search for the item in\n * @param columnName Column name to search for the item in\n * @param defaultValue Optional default value. This would be the first item in\n * the list and not expected to be in the Table.\n * @param itemHeight Height of each item in the list\n * @param topOffset Optional pixel offset from the top of the list\n * @param value Value to search for in the column\n */\nexport function useGetItemPosition(_ref) {\n var {\n table,\n columnName,\n defaultValue,\n itemHeight,\n topOffset = 0,\n value\n } = _ref;\n return useCallback(/*#__PURE__*/_asyncToGenerator(function* () {\n if (table == null || value === '' || value === defaultValue) {\n return topOffset;\n }\n var column = table.findColumn(columnName);\n var rowIndex = yield table.seekRow(0, column, 'String', value);\n\n // If a default item exists at the top of the list, offset the item index by 1\n var defaultItemOffset = defaultValue == null ? 0 : 1;\n return (rowIndex + defaultItemOffset) * itemHeight + topOffset;\n }), [columnName, defaultValue, itemHeight, table, topOffset, value]);\n}\nexport default useGetItemPosition;\n//# sourceMappingURL=useGetItemPosition.js.map","import { useMemo } from 'react';\nimport { createFilterConditionFactory, createNotNullOrEmptyFilterCondition } from '@deephaven/jsapi-utils';\nimport useTableUtils from \"./useTableUtils.js\";\nexport function useNotNullOrEmptyFilter(columnNames) {\n var conditionOperator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'or';\n var tableUtils = useTableUtils();\n var notNullOrEmptyFilterCondition = useMemo(() => createNotNullOrEmptyFilterCondition(tableUtils), [tableUtils]);\n return useMemo(() => createFilterConditionFactory(columnNames, notNullOrEmptyFilterCondition, conditionOperator), [columnNames, conditionOperator, notNullOrEmptyFilterCondition]);\n}\nexport default useNotNullOrEmptyFilter;\n//# sourceMappingURL=useNotNullOrEmptyFilter.js.map","import { useCallback, useMemo, useState } from 'react';\nimport { createSearchTextFilter, createSelectedValuesFilter } from '@deephaven/jsapi-utils';\nimport { useDebouncedCallback, useDebouncedValue, usePromiseFactory } from '@deephaven/react-hooks';\nimport { usePickerItemScale } from '@deephaven/components';\nimport useFilterConditionFactories from \"./useFilterConditionFactories.js\";\nimport useViewportData from \"./useViewportData.js\";\nimport useViewportFilter from \"./useViewportFilter.js\";\nimport useTableUtils from \"./useTableUtils.js\";\nimport useWidgetClose from \"./useWidgetClose.js\";\nimport { SEARCH_DEBOUNCE_MS, VIEWPORT_PADDING, VIEWPORT_SIZE } from \"./Constants.js\";\n/**\n * Manages a list of available items that can be searched and selected. Selected\n * items are removed from the list and managed in a selectedValueMap data\n * structure. Useful for components that contain a picker but show selected\n * values in a separate component.\n * @param maybeTable The table to get the list of items from\n * @param columnName The column name to get the list of items from\n * @param mapItemToValue A function to map an item to a value\n * @param filterConditionFactories Optional filter condition factories to apply to the list\n * @param trimSearchText Whether to trim the search text before filtering. Defaults to false\n * @param timeZone The timezone to use for date parsing\n */\nexport function usePickerWithSelectedValues(_ref) {\n var {\n maybeTable,\n columnName,\n mapItemToValue,\n filterConditionFactories = [],\n trimSearchText = false,\n timeZone\n } = _ref;\n var {\n itemHeight\n } = usePickerItemScale();\n var tableUtils = useTableUtils();\n\n // `searchText` should always be up to date for controlled search input.\n // `appliedSearchText` will get updated after a delay to avoid updating\n // filters on every key stroke. It will also be trimmed of leading / trailing\n // spaces if `trimSearchText` is true.\n var [searchText, setSearchText] = useState('');\n var [appliedSearchText, setAppliedSearchText] = useState('');\n var applySearchText = useCallback(text => {\n setAppliedSearchText(trimSearchText ? text.trim() : text);\n }, [trimSearchText]);\n var searchTextMaybeTrimmed = useMemo(() => trimSearchText ? searchText.trim() : searchText, [searchText, trimSearchText]);\n var [selectedKey, setSelectedKey] = useState(null);\n var [selectedValueMap, setSelectedValueMap] = useState(() => new Map());\n var {\n data: valueExists,\n isLoading: valueExistsIsLoading\n } = usePromiseFactory(tableUtils.doesColumnValueExist, [maybeTable, columnName, appliedSearchText, false /* isCaseSensitive */]);\n\n // The `searchTextFilter` starts getting applied to the list whenever\n // `appliedSearchText` changes, after which there is a small delay before the\n // items are in sync. Use a debounce timer to allow a little extra time\n // before calculating `searchTextExists` below. Note that there are 2 debounce\n // timers at play here:\n // 1. `onDebouncedSearchTextChange` applies the search text after user stops typing\n // 2. `useDebouncedValue` debounces whenever the result of the first debounce\n // changes, and `isApplyingFilter` will be true while this 2nd timer is active.\n var {\n isDebouncing: isApplyingFilter\n } = useDebouncedValue(appliedSearchText, SEARCH_DEBOUNCE_MS);\n\n // If value exists check is still loading or if debounce hasn't completed, set\n // `searchTextExists` to null since it is indeterminate.\n var searchTextExists = isApplyingFilter || valueExistsIsLoading ? null : valueExists;\n var searchTextFilter = useMemo(() => createSearchTextFilter(tableUtils, columnName, appliedSearchText, timeZone), [appliedSearchText, columnName, tableUtils, timeZone]);\n\n // Filter out selected values from the picker\n var excludeSelectedValuesFilter = useMemo(() => createSelectedValuesFilter(tableUtils, columnName, new Set(selectedValueMap.keys()), false, true), [columnName, selectedValueMap, tableUtils]);\n var {\n data: listTable\n } = usePromiseFactory(tableUtils.createDistinctSortedColumnTable, [maybeTable, columnName, 'asc', ...filterConditionFactories]);\n useWidgetClose(listTable);\n var list = useViewportData({\n table: listTable,\n itemHeight,\n viewportSize: VIEWPORT_SIZE,\n viewportPadding: VIEWPORT_PADDING\n });\n var hasSearchTextWithZeroResults = searchTextMaybeTrimmed.length > 0 && list.size === 0;\n var searchTextIsInSelectedValues = selectedValueMap.has(searchTextMaybeTrimmed);\n var onDebouncedSearchTextChange = useDebouncedCallback(applySearchText, SEARCH_DEBOUNCE_MS);\n var onSearchTextChange = useCallback(text => {\n setSearchText(text);\n onDebouncedSearchTextChange(text);\n }, [onDebouncedSearchTextChange]);\n var setSelectedKeyOnNextFrame = useDebouncedCallback(setSelectedKey, 0);\n var onSelectKey = useCallback(key => {\n setSearchText('');\n applySearchText('');\n\n // Set the selection temporarily to avoid the picker staying open\n setSelectedKey(key);\n\n // Clear the selection on next frame since selected items get removed from\n // the list and added to `selectedValues` Map\n setSelectedKeyOnNextFrame(null);\n\n // key will be null in scenarios where search text doesn't match an item\n // and user clicks outside of picker\n if (key == null) {\n return;\n }\n var item = list.viewportData.findItem(key);\n if (item == null) {\n return;\n }\n var value = mapItemToValue(item);\n setSelectedValueMap(prev => {\n var next = new Map(prev);\n next.set(value, {\n value\n });\n return next;\n });\n }, [applySearchText, setSelectedKeyOnNextFrame, list.viewportData, mapItemToValue]);\n var onAddValues = useCallback(values => {\n setSelectedValueMap(prev => {\n if (values.size === 0) {\n return prev;\n }\n var next = new Map(prev);\n\n // eslint-disable-next-line no-restricted-syntax\n for (var value of values) {\n next.set(value, {\n value\n });\n }\n return next;\n });\n }, []);\n var onRemoveValues = useCallback(values => {\n setSelectedValueMap(prev => {\n if (values === 'all') {\n return new Map();\n }\n var next = new Map(prev);\n\n // eslint-disable-next-line no-restricted-syntax\n for (var value of values) {\n next.delete(value);\n }\n return next;\n });\n }, []);\n var filter = useFilterConditionFactories(list.table, searchTextFilter, excludeSelectedValuesFilter);\n useViewportFilter(list, filter);\n return useMemo(() => ({\n list,\n hasSearchTextWithZeroResults,\n searchText,\n searchTextExists,\n searchTextIsInSelectedValues,\n selectedKey,\n selectedValueMap,\n onSearchTextChange,\n onSelectKey,\n onAddValues,\n onRemoveValues\n }), [hasSearchTextWithZeroResults, list, onAddValues, onRemoveValues, onSearchTextChange, onSelectKey, searchText, searchTextExists, searchTextIsInSelectedValues, selectedKey, selectedValueMap]);\n}\nexport default usePickerWithSelectedValues;\n//# sourceMappingURL=usePickerWithSelectedValues.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\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 || distinctTable.close();\n }, [distinctTable]);\n return {\n distinctTable,\n error,\n isError,\n isLoading\n };\n}\n//# sourceMappingURL=useSelectDistinctTable.js.map","import { useMemo } from 'react';\nimport { createFilterConditionFactory, createShowOnlyEmptyFilterCondition } from '@deephaven/jsapi-utils';\nimport useTableUtils from \"./useTableUtils.js\";\n/**\n * Creates a filter condition factory that can be toggle on or off. If on, the\n * filter will match only values that are null or empty strings. If off, the\n * filter will match all values.\n * @param isOn Whether the filter is on or off\n * @param columnNames Column names to filter\n */\nexport function useShowOnlyEmptyFilter(isOn, columnNames) {\n var tableUtils = useTableUtils();\n var createColumnCondition = useMemo(() => createShowOnlyEmptyFilterCondition(tableUtils, isOn), [isOn, tableUtils]);\n return useMemo(() => createFilterConditionFactory(columnNames, createColumnCondition), [columnNames, createColumnCondition]);\n}\nexport default useShowOnlyEmptyFilter;\n//# sourceMappingURL=useShowOnlyEmptyFilter.js.map","import { useMemo } from 'react';\nimport { createValueFilter } from '@deephaven/jsapi-utils';\nimport useTableUtils from \"./useTableUtils.js\";\n/**\n * Create a filter condition factory for a filter operator that matches the given value.\n * @param columnNames Column names to compare value to\n * @param value Value to match\n * @param operator Operator to use for matching\n */\nexport function useValueFilter(columnNames, value, operator) {\n var tableUtils = useTableUtils();\n return useMemo(() => createValueFilter(tableUtils, columnNames, value, operator), [columnNames, operator, tableUtils, value]);\n}\nexport default useValueFilter;\n//# sourceMappingURL=useValueFilter.js.map","import { useMemo } from 'react';\nimport { useExternalTheme } from '@deephaven/components';\nimport { getThemeDataFromPlugins } from \"./PluginUtils.js\";\n/**\n * Use custom external or plugin themes.\n * @param pluginModules The plugin modules to get themes from when external\n * themes are disabled.\n */\nexport function useCustomThemes(pluginModules) {\n var {\n isEnabled: isExternalThemeEnabled,\n isPending: isExternalThemePending,\n themeData: externalThemeData\n } = useExternalTheme();\n return useMemo(() => {\n // Get theme from parent window via `postMessage` apis\n if (isExternalThemeEnabled) {\n if (isExternalThemePending) {\n return null;\n }\n return externalThemeData ? [externalThemeData] : [];\n }\n\n // Get themes from plugins\n return pluginModules == null ? null : getThemeDataFromPlugins(pluginModules);\n }, [isExternalThemeEnabled, isExternalThemePending, externalThemeData, pluginModules]);\n}\nexport default useCustomThemes;\n//# sourceMappingURL=useCustomThemes.js.map","import React, { useMemo } from 'react';\nimport usePlugins from \"./usePlugins.js\";\nimport { isWidgetPlugin } from \"./PluginTypes.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function WidgetView(_ref) {\n var {\n fetch,\n type\n } = _ref;\n var plugins = usePlugins();\n var plugin = useMemo(() => [...plugins.values()].filter(isWidgetPlugin).find(p => [p.supportedTypes].flat().includes(type)), [plugins, type]);\n if (plugin != null) {\n var Component = plugin.component;\n return /*#__PURE__*/_jsx(Component, {\n fetch: fetch\n });\n }\n throw new Error(\"Unknown widget type '\".concat(type, \"'\"));\n}\nexport default WidgetView;\n//# sourceMappingURL=WidgetView.js.map","import { useCallback } from 'react';\nimport { nanoid } from 'nanoid';\nimport { usePanelOpenListener } from \"../PanelEvent.js\";\nimport LayoutUtils from \"./LayoutUtils.js\";\nimport usePanelRegistration from \"./usePanelRegistration.js\";\n/**\n * Register a panel that will be opened when one of the `supportedTypes` objects is triggered.\n */\nexport function useDashboardPanel(_ref) {\n var {\n dashboardProps,\n componentName,\n component,\n supportedTypes,\n hydrate,\n dehydrate\n } = _ref;\n var {\n id,\n layout,\n registerComponent\n } = dashboardProps;\n var handlePanelOpen = useCallback(_ref2 => {\n var {\n dragEvent,\n panelId = nanoid(),\n widget\n } = _ref2;\n var {\n name,\n type\n } = widget;\n var isSupportedType = type != null && (Array.isArray(supportedTypes) && supportedTypes.includes(type) || type === supportedTypes);\n if (!isSupportedType) {\n // Only want to listen for your custom variable types\n return;\n }\n var props = {\n localDashboardId: id,\n metadata: widget\n };\n if (hydrate != null) {\n props = hydrate(props, id);\n }\n var config = {\n type: 'react-component',\n component: componentName,\n props,\n title: name !== null && name !== void 0 ? name : undefined,\n id: panelId\n };\n var {\n root\n } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n dragEvent\n });\n }, [componentName, hydrate, id, layout, supportedTypes]);\n\n /**\n * Register our custom component type so the layout know hows to open it\n */\n usePanelRegistration(registerComponent, component, hydrate, dehydrate);\n\n /**\n * Listen for panel open events so we know when to open a panel\n */\n usePanelOpenListener(layout.eventHub, handlePanelOpen);\n}\nexport default useDashboardPanel;\n//# sourceMappingURL=useDashboardPanel.js.map","import { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getPluginDataForDashboard } from \"./selectors.js\";\nimport { setDashboardPluginData } from \"./actions.js\";\n/**\n * Custom hook that provides access to plugin data for a specific dashboard and plugin.\n * @param dashboardId - The ID of the dashboard.\n * @param pluginId - The ID of the plugin.\n * @returns A tuple containing the plugin data and a function to update the plugin data.\n */\nexport function useDashboardPluginData(dashboardId, pluginId) {\n var dispatch = useDispatch();\n var data = useSelector(store => getPluginDataForDashboard(store, dashboardId, pluginId));\n var setData = useCallback(newData => dispatch(setDashboardPluginData(dashboardId, pluginId, newData)), [dashboardId, pluginId, dispatch]);\n return [data, setData];\n}\nexport default {\n useDashboardPluginData\n};\n//# sourceMappingURL=hooks.js.map","import { useMemo } from 'react';\nimport { usePlugins } from \"./usePlugins.js\";\nimport { getPluginsElementMap } from \"./PluginUtils.js\";\n/**\n * Get all ElementPlugin elements from the plugins context\n * @returns ElementPlugin mapping as a Map of plugin name to component type\n */\nexport function usePluginsElementMap() {\n // Get all plugins from the context\n var plugins = usePlugins();\n var elementPlugins = useMemo(() => getPluginsElementMap(plugins), [plugins]);\n return elementPlugins;\n}\nexport default usePluginsElementMap;\n//# sourceMappingURL=usePluginsElementMap.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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\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(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\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\";\nimport { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\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__*/_jsx(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__*/_jsx(_Fragment, {\n children: children\n });\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\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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__*/_jsx(AuthPluginBase, {\n getLoginOptions: getLoginOptions,\n children: /*#__PURE__*/_jsx(UserPermissionsOverrideContext.Provider, {\n value: permissionsOverrides,\n children: children\n })\n });\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(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport React from 'react';\nimport { LOGIN_OPTIONS_REQUEST } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getWindowParent, requestParentResponse } from '@deephaven/utils';\nimport AuthPluginBase from \"./AuthPluginBase.js\";\nimport { UserPermissionsOverrideContext } from \"./UserContexts.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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__*/_jsx(AuthPluginBase, {\n getLoginOptions: getLoginOptions,\n children: /*#__PURE__*/_jsx(UserPermissionsOverrideContext.Provider, {\n value: permissionsOverrides,\n children: children\n })\n });\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\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function LoginForm(_ref) {\n var {\n children,\n errorMessage,\n isLoggingIn = false,\n onSubmit: _onSubmit\n } = _ref;\n return /*#__PURE__*/_jsxs(\"form\", {\n className: \"login-form\",\n onSubmit: event => {\n event.preventDefault();\n event.stopPropagation();\n _onSubmit === null || _onSubmit === void 0 || _onSubmit(event);\n },\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"flex-spacer\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"flex-wrapper\",\n children: [/*#__PURE__*/_jsx(\"fieldset\", {\n disabled: isLoggingIn,\n className: \"container-fluid\",\n children: children\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group d-flex justify-content-end align-items-center mb-0\",\n children: /*#__PURE__*/_jsxs(\"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 children: [isLoggingIn && /*#__PURE__*/_jsxs(\"span\", {\n children: [/*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"mr-2 loading-spinner-vertical-align\"\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"btn-normal-content\",\n children: \"Logging in\"\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"btn-hover-content\",\n children: \"Cancel\"\n })]\n }), !isLoggingIn && 'Login']\n })\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"flex-spacer\",\n children: errorMessage != null && /*#__PURE__*/_jsx(\"p\", {\n className: \"error-message mb-0\",\n role: \"alert\",\n children: \"\".concat(errorMessage)\n })\n })]\n });\n}\nexport default LoginForm;\n//# sourceMappingURL=LoginForm.js.map","import React from 'react';\nimport { RandomAreaPlotAnimation } from '@deephaven/components';\nimport \"./Login.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function Login(_ref) {\n var {\n children,\n logoPath = './logo.png'\n } = _ref;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"login-container\",\n children: [/*#__PURE__*/_jsx(RandomAreaPlotAnimation, {}), /*#__PURE__*/_jsxs(\"div\", {\n className: \"login-box\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"logo\",\n children: /*#__PURE__*/_jsx(\"img\", {\n src: logoPath,\n alt: \"Deephaven Data Labs\"\n })\n }), children, /*#__PURE__*/_jsxs(\"p\", {\n className: \"footer\",\n children: [\"\\xA9 2016-\", new Date().getFullYear(), \" Deephaven Data Labs LLC. Patent Pending.\"]\n })]\n })]\n });\n}\nexport default Login;\n//# sourceMappingURL=Login.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { FadeTransition, LoadingOverlay } 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\";\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\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 || _inputField$current.focus();\n }, [inputField, isInputRequired]);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [isLoggedIn && children, isInputRequired && /*#__PURE__*/_jsx(FadeTransition, {\n in: !isLoggedIn,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(Login, {\n logoPath: logoPath,\n children: /*#__PURE__*/_jsx(LoginForm, {\n errorMessage: getErrorMessage(error),\n isLoggingIn: isLoggingIn,\n onSubmit: handleSubmit,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"auth-psk-token-input\",\n children: \"Token\"\n }), /*#__PURE__*/_jsx(\"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 })]\n })\n })\n })\n }), /*#__PURE__*/_jsx(LoadingOverlay, {\n \"data-testid\": \"auth-psk-loading\",\n isLoaded: isLoggedIn || isInputRequired,\n isLoading: !isLoggedIn && !isInputRequired\n })]\n });\n}\nvar AuthPluginPsk = {\n Component,\n isAvailable: authHandlers => authHandlers.includes(AUTH_TYPE)\n};\nexport default AuthPluginPsk;\n//# sourceMappingURL=AuthPluginPsk.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport 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","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport ChartModel from \"./ChartModel.js\";\nimport { defaultChartTheme } from \"./ChartTheme.js\";\nimport ChartUtils from \"./ChartUtils.js\";\n/** Displays a basic random chart */\nclass MockChartModel extends ChartModel {\n static get theme() {\n /* eslint-disable no-underscore-dangle */\n if (MockChartModel._theme == null) {\n MockChartModel._theme = defaultChartTheme();\n }\n return MockChartModel._theme;\n /* eslint-enable no-underscore-dangle */\n }\n static makeRandomSeries(offset) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var steps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;\n var dates = [];\n var values = [];\n var smooth = [];\n var linear = [];\n\n // Setting to a fixed seed date so that e2e tests can be deterministic.\n var startDate = new Date('2018-06-01');\n for (var i = 0; i < steps; i += 1) {\n var date = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i - steps);\n dates.push(\"\".concat(date.getFullYear(), \"-\").concat(date.getMonth() + 1, \"-\").concat(date.getDate()));\n var v = (Math.sin(i / steps * offset) * steps / 3 + Math.cos(i * 0.2) * steps / 6 + Math.sin(i * 0.5) * steps / 10 + MockChartModel.random() * steps / 5 + i * MockChartModel.smoothing) * scale;\n v = Math.round(v * 100) / 100; // 2 decimals only\n // using steps acts as amplititude scaling based on value\n // large sine wave for course shape + small sine waves for bumpiness +\n // general randomness noise + index to be constantly up and to the right + smoothing factor\n values.push(v);\n linear.push(40 + i * MockChartModel.smoothing);\n smooth.push(Math.sin(i / steps * offset) * steps / 3 + MockChartModel.random() * steps / 10 + i * MockChartModel.smoothing); // push a smoother version of the same thing\n }\n return {\n x: dates,\n y: values,\n s: smooth,\n l: linear\n };\n }\n static makeScatter(series) {\n return {\n name: 'SCTR',\n x: series.x,\n y: series.y,\n type: 'scatter',\n mode: 'markers',\n hoverinfo: 'skip',\n marker: {\n size: 5\n }\n };\n }\n static makeArea(series) {\n return {\n name: 'AREA',\n x: series.x,\n y: series.s,\n type: 'scatter',\n mode: 'line',\n fill: 'tozeroy',\n hoverinfo: 'all',\n line: {\n width: 3\n // area patten gets applied as hack in post render plot.ly callback + css\n }\n };\n }\n static makeTrendline(series) {\n return {\n // we probably want to toss the line formula in legend I guess? either that or render it as text manually on plot\n name: 'Trendline <br>R<sup>2</sup> = 0.91',\n x: series.x,\n y: series.l,\n type: 'scatter',\n mode: 'line',\n hoverinfo: 'skip',\n line: {\n width: 3,\n dash: 'dot' // trendlines should follow some sort of color convention + dots/dashed. Remember there can multiple\n // chroma(c.$green).brighten(1.2).hex()\n }\n };\n }\n static makeErrorBand(series) {\n // generate continouous error bands values and text\n var erroryforward = [];\n var errorybackward = [];\n for (var i = 0; i < series.y.length; i += 1) {\n var value = series.y[i];\n erroryforward[i] = Math.round((value + 18) * 100) / 100;\n errorybackward[i] = Math.round((value - 18) * 100) / 100;\n }\n\n // makes a closed shape of points winding clockwise for y values\n var errory = erroryforward.concat(errorybackward.reverse());\n return {\n name: 'error',\n x: series.x.concat(series.x.slice().reverse()),\n // winding for x values, that slice just clones so reverse doesn't apply inplace\n y: errory,\n type: 'scatter',\n mode: 'line',\n hoverinfo: 'skip',\n fill: 'toself',\n // there's some ordering bug with scattergl where if the areas traces are ordered after the lines they don't render\n line: {\n width: 0,\n color: MockChartModel.theme.error_band_line_color,\n shape: 'spline'\n }\n };\n }\n static makeLine(series) {\n return {\n name: 'LINE',\n x: series.x,\n y: series.y,\n type: 'scatter',\n mode: 'line',\n hoverinfo: 'x+y+text+name',\n line: {\n width: 3\n }\n };\n }\n static makeRandomData() {\n var series1 = MockChartModel.makeRandomSeries(6);\n var areaPattern = MockChartModel.makeArea(series1);\n var trendLine = MockChartModel.makeTrendline(series1);\n var series2 = MockChartModel.makeRandomSeries(2);\n var line = MockChartModel.makeLine(series2);\n var errorBand = MockChartModel.makeErrorBand(series2);\n return [areaPattern, trendLine, line, errorBand];\n }\n static makeDefaultLayout(dh) {\n var layout = {\n template: new ChartUtils(dh).makeDefaultTemplate(MockChartModel.theme)\n };\n layout.title = {\n text: 'Chart'\n };\n layout.xaxis = {\n title: {\n text: 'Datestamp'\n }\n };\n layout.yaxis = {\n title: {\n text: 'Price'\n }\n };\n return layout;\n }\n constructor(dh) {\n var {\n data = MockChartModel.makeRandomData(),\n layout = MockChartModel.makeDefaultLayout(dh),\n filterFields = []\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(dh);\n _defineProperty(this, \"data\", void 0);\n _defineProperty(this, \"filterFields\", void 0);\n _defineProperty(this, \"layout\", void 0);\n this.data = data;\n this.layout = layout;\n this.filterFields = filterFields;\n }\n getData() {\n return this.data;\n }\n getLayout() {\n return this.layout;\n }\n getFilterColumnMap() {\n var map = new Map();\n for (var i = 0; i < this.filterFields.length; i += 1) {\n var name = this.filterFields[i];\n var type = 'java.lang.String';\n map.set(name, {\n name,\n type\n });\n }\n return map;\n }\n isFilterRequired() {\n return this.filterFields.length > 0;\n }\n setFilter() {\n this.fireUpdate(this.data);\n }\n}\n_defineProperty(MockChartModel, \"random\", Math.random.bind(Math));\n_defineProperty(MockChartModel, \"smoothing\", 1.5);\n_defineProperty(MockChartModel, \"_theme\", void 0);\nexport default MockChartModel;\n//# sourceMappingURL=MockChartModel.js.map","import { useEffect } from 'react';\nimport { useTheme } from '@deephaven/components';\nimport MonacoUtils from \"./MonacoUtils.js\";\nimport { Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\nexport function MonacoThemeProvider(_ref) {\n var {\n children\n } = _ref;\n var {\n activeThemes\n } = useTheme();\n useEffect(function refreshMonacoTheme() {\n if (activeThemes != null) {\n MonacoUtils.initTheme();\n }\n }, [activeThemes]);\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/_jsx(_Fragment, {\n children: children\n });\n}\n//# sourceMappingURL=MonacoThemeProvider.js.map","// Copied from https://github.com/astral-sh/ruff/blob/0.6.2/ruff.schema.json\n// Update the tag to the right version if updating the Ruff version\n\n// Schema v0.6.2\nvar schema = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n title: 'Options',\n type: 'object',\n properties: {\n 'allowed-confusables': {\n description: 'A list of allowed \"confusable\" Unicode characters to ignore when enforcing `RUF001`, `RUF002`, and `RUF003`.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n type: 'string',\n maxLength: 1,\n minLength: 1\n }\n },\n builtins: {\n description: 'A list of builtins to treat as defined references, in addition to the system builtins.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'cache-dir': {\n description: 'A path to the cache directory.\\n\\nBy default, Ruff stores cache results in a `.ruff_cache` directory in the current project root.\\n\\nHowever, Ruff will also respect the `RUFF_CACHE_DIR` environment variable, which takes precedence over that default.\\n\\nThis setting will override even the `RUFF_CACHE_DIR` environment variable, if set.',\n type: ['string', 'null']\n },\n 'dummy-variable-rgx': {\n description: 'A regular expression used to identify \"dummy\" variables, or those which should be ignored when enforcing (e.g.) unused-variable rules. The default expression matches `_`, `__`, and `_var`, but not `_var_`.',\n deprecated: true,\n type: ['string', 'null']\n },\n exclude: {\n description: \"A list of file patterns to exclude from formatting and linting.\\n\\nExclusions are based on globs, and can be either:\\n\\n- Single-path patterns, like `.mypy_cache` (to exclude any directory named `.mypy_cache` in the tree), `foo.py` (to exclude any file named `foo.py`), or `foo_*.py` (to exclude any file matching `foo_*.py` ). - Relative patterns, like `directory/foo.py` (to exclude that specific file) or `directory/*.py` (to exclude any Python files in `directory`). Note that these paths are relative to the project root (e.g., the directory containing your `pyproject.toml`).\\n\\nFor more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).\\n\\nNote that you'll typically want to use [`extend-exclude`](#extend-exclude) to modify the excluded paths.\",\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'explicit-preview-rules': {\n description: 'Whether to require exact codes to select preview rules. When enabled, preview rules will not be selected by prefixes — the full code of each preview rule will be required to enable the rule.',\n deprecated: true,\n type: ['boolean', 'null']\n },\n extend: {\n description: 'A path to a local `pyproject.toml` file to merge into this configuration. User home directory and environment variables will be expanded.\\n\\nTo resolve the current `pyproject.toml` file, Ruff will first resolve this base configuration file, then merge in any properties defined in the current configuration file.',\n type: ['string', 'null']\n },\n 'extend-exclude': {\n description: 'A list of file patterns to omit from formatting and linting, in addition to those specified by [`exclude`](#exclude).\\n\\nExclusions are based on globs, and can be either:\\n\\n- Single-path patterns, like `.mypy_cache` (to exclude any directory named `.mypy_cache` in the tree), `foo.py` (to exclude any file named `foo.py`), or `foo_*.py` (to exclude any file matching `foo_*.py` ). - Relative patterns, like `directory/foo.py` (to exclude that specific file) or `directory/*.py` (to exclude any Python files in `directory`). Note that these paths are relative to the project root (e.g., the directory containing your `pyproject.toml`).\\n\\nFor more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'extend-fixable': {\n description: 'A list of rule codes or prefixes to consider fixable, in addition to those specified by [`fixable`](#lint_fixable).',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-ignore': {\n description: 'A list of rule codes or prefixes to ignore, in addition to those specified by `ignore`.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-include': {\n description: 'A list of file patterns to include when linting, in addition to those specified by [`include`](#include).\\n\\nInclusion are based on globs, and should be single-path patterns, like `*.pyw`, to include any file with the `.pyw` extension.\\n\\nFor more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'extend-per-file-ignores': {\n description: 'A list of mappings from file pattern to rule codes or prefixes to exclude, in addition to any rules excluded by [`per-file-ignores`](#lint_per-file-ignores).',\n deprecated: true,\n type: ['object', 'null'],\n additionalProperties: {\n type: 'array',\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n }\n },\n 'extend-safe-fixes': {\n description: 'A list of rule codes or prefixes for which unsafe fixes should be considered safe.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-select': {\n description: 'A list of rule codes or prefixes to enable, in addition to those specified by [`select`](#lint_select).',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-unfixable': {\n description: 'A list of rule codes or prefixes to consider non-auto-fixable, in addition to those specified by [`unfixable`](#lint_unfixable).',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-unsafe-fixes': {\n description: 'A list of rule codes or prefixes for which safe fixes should be considered unsafe.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n external: {\n description: 'A list of rule codes or prefixes that are unsupported by Ruff, but should be preserved when (e.g.) validating `# noqa` directives. Useful for retaining `# noqa` directives that cover plugins not yet implemented by Ruff.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n fix: {\n description: 'Enable fix behavior by-default when running `ruff` (overridden by the `--fix` and `--no-fix` command-line flags). Only includes automatic fixes unless `--unsafe-fixes` is provided.',\n type: ['boolean', 'null']\n },\n 'fix-only': {\n description: 'Like [`fix`](#fix), but disables reporting on leftover violation. Implies [`fix`](#fix).',\n type: ['boolean', 'null']\n },\n fixable: {\n description: 'A list of rule codes or prefixes to consider fixable. By default, all rules are considered fixable.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'flake8-annotations': {\n description: 'Options for the `flake8-annotations` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8AnnotationsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-bandit': {\n description: 'Options for the `flake8-bandit` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8BanditOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-boolean-trap': {\n description: 'Options for the `flake8-boolean-trap` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8BooleanTrapOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-bugbear': {\n description: 'Options for the `flake8-bugbear` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8BugbearOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-builtins': {\n description: 'Options for the `flake8-builtins` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8BuiltinsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-comprehensions': {\n description: 'Options for the `flake8-comprehensions` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8ComprehensionsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-copyright': {\n description: 'Options for the `flake8-copyright` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8CopyrightOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-errmsg': {\n description: 'Options for the `flake8-errmsg` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8ErrMsgOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-gettext': {\n description: 'Options for the `flake8-gettext` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8GetTextOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-implicit-str-concat': {\n description: 'Options for the `flake8-implicit-str-concat` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8ImplicitStrConcatOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-import-conventions': {\n description: 'Options for the `flake8-import-conventions` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8ImportConventionsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-pytest-style': {\n description: 'Options for the `flake8-pytest-style` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8PytestStyleOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-quotes': {\n description: 'Options for the `flake8-quotes` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8QuotesOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-self': {\n description: 'Options for the `flake8_self` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8SelfOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-tidy-imports': {\n description: 'Options for the `flake8-tidy-imports` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8TidyImportsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-type-checking': {\n description: 'Options for the `flake8-type-checking` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8TypeCheckingOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-unused-arguments': {\n description: 'Options for the `flake8-unused-arguments` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Flake8UnusedArgumentsOptions'\n }, {\n type: 'null'\n }]\n },\n 'force-exclude': {\n description: \"Whether to enforce [`exclude`](#exclude) and [`extend-exclude`](#extend-exclude) patterns, even for paths that are passed to Ruff explicitly. Typically, Ruff will lint any paths passed in directly, even if they would typically be excluded. Setting `force-exclude = true` will cause Ruff to respect these exclusions unequivocally.\\n\\nThis is useful for [`pre-commit`](https://pre-commit.com/), which explicitly passes all changed files to the [`ruff-pre-commit`](https://github.com/astral-sh/ruff-pre-commit) plugin, regardless of whether they're marked as excluded by Ruff's own settings.\",\n type: ['boolean', 'null']\n },\n format: {\n description: 'Options to configure code formatting.',\n anyOf: [{\n $ref: '#/definitions/FormatOptions'\n }, {\n type: 'null'\n }]\n },\n ignore: {\n description: 'A list of rule codes or prefixes to ignore. Prefixes can specify exact rules (like `F841`), entire categories (like `F`), or anything in between.\\n\\nWhen breaking ties between enabled and disabled rules (via `select` and `ignore`, respectively), more specific prefixes override less specific prefixes.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'ignore-init-module-imports': {\n description: \"Avoid automatically removing unused imports in `__init__.py` files. Such imports will still be flagged, but with a dedicated message suggesting that the import is either added to the module's `__all__` symbol, or re-exported with a redundant alias (e.g., `import os as os`).\\n\\nThis option is enabled by default, but you can opt-in to removal of imports via an unsafe fix.\",\n deprecated: true,\n type: ['boolean', 'null']\n },\n include: {\n description: 'A list of file patterns to include when linting.\\n\\nInclusion are based on globs, and should be single-path patterns, like `*.pyw`, to include any file with the `.pyw` extension. `pyproject.toml` is included here not for configuration but because we lint whether e.g. the `[project]` matches the schema.\\n\\nNotebook files (`.ipynb` extension) are included by default on Ruff 0.6.0+.\\n\\nFor more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'indent-width': {\n description: 'The number of spaces per indentation level (tab).\\n\\nUsed by the formatter and when enforcing long-line violations (like `E501`) to determine the visual width of a tab.\\n\\nThis option changes the number of spaces the formatter inserts when using soft-tabs (`indent-style = space`).\\n\\nPEP 8 recommends using 4 spaces per [indentation level](https://peps.python.org/pep-0008/#indentation).',\n anyOf: [{\n $ref: '#/definitions/IndentWidth'\n }, {\n type: 'null'\n }]\n },\n isort: {\n description: 'Options for the `isort` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/IsortOptions'\n }, {\n type: 'null'\n }]\n },\n 'line-length': {\n description: \"The line length to use when enforcing long-lines violations (like `E501`) and at which `isort` and the formatter prefers to wrap lines.\\n\\nThe length is determined by the number of characters per line, except for lines containing East Asian characters or emojis. For these lines, the [unicode width](https://unicode.org/reports/tr11/) of each character is added up to determine the length.\\n\\nThe value must be greater than `0` and less than or equal to `320`.\\n\\nNote: While the formatter will attempt to format lines such that they remain within the `line-length`, it isn't a hard upper bound, and formatted lines may exceed the `line-length`.\\n\\nSee [`pycodestyle.max-line-length`](#lint_pycodestyle_max-line-length) to configure different lengths for `E501` and the formatter.\",\n anyOf: [{\n $ref: '#/definitions/LineLength'\n }, {\n type: 'null'\n }]\n },\n lint: {\n anyOf: [{\n $ref: '#/definitions/LintOptions'\n }, {\n type: 'null'\n }]\n },\n 'logger-objects': {\n description: 'A list of objects that should be treated equivalently to a `logging.Logger` object.\\n\\nThis is useful for ensuring proper diagnostics (e.g., to identify `logging` deprecations and other best-practices) for projects that re-export a `logging.Logger` object from a common module.\\n\\nFor example, if you have a module `logging_setup.py` with the following contents: ```python import logging\\n\\nlogger = logging.getLogger(__name__) ```\\n\\nAdding `\"logging_setup.logger\"` to `logger-objects` will ensure that `logging_setup.logger` is treated as a `logging.Logger` object when imported from other modules (e.g., `from logging_setup import logger`).',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n mccabe: {\n description: 'Options for the `mccabe` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/McCabeOptions'\n }, {\n type: 'null'\n }]\n },\n 'namespace-packages': {\n description: 'Mark the specified directories as namespace packages. For the purpose of module resolution, Ruff will treat those directories and all their subdirectories as if they contained an `__init__.py` file.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'output-format': {\n description: 'The style in which violation messages should be formatted: `\"full\"` (default) (shows source), `\"concise\"`, `\"grouped\"` (group messages by file), `\"json\"` (machine-readable), `\"junit\"` (machine-readable XML), `\"github\"` (GitHub Actions annotations), `\"gitlab\"` (GitLab CI code quality report), `\"pylint\"` (Pylint text format) or `\"azure\"` (Azure Pipeline logging commands).',\n anyOf: [{\n $ref: '#/definitions/OutputFormat'\n }, {\n type: 'null'\n }]\n },\n 'pep8-naming': {\n description: 'Options for the `pep8-naming` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/Pep8NamingOptions'\n }, {\n type: 'null'\n }]\n },\n 'per-file-ignores': {\n description: \"A list of mappings from file pattern to rule codes or prefixes to exclude, when considering any matching files. An initial '!' negates the file pattern.\",\n deprecated: true,\n type: ['object', 'null'],\n additionalProperties: {\n type: 'array',\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n }\n },\n preview: {\n description: 'Whether to enable preview mode. When preview mode is enabled, Ruff will use unstable rules, fixes, and formatting.',\n type: ['boolean', 'null']\n },\n pycodestyle: {\n description: 'Options for the `pycodestyle` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/PycodestyleOptions'\n }, {\n type: 'null'\n }]\n },\n pydocstyle: {\n description: 'Options for the `pydocstyle` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/PydocstyleOptions'\n }, {\n type: 'null'\n }]\n },\n pyflakes: {\n description: 'Options for the `pyflakes` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/PyflakesOptions'\n }, {\n type: 'null'\n }]\n },\n pylint: {\n description: 'Options for the `pylint` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/PylintOptions'\n }, {\n type: 'null'\n }]\n },\n pyupgrade: {\n description: 'Options for the `pyupgrade` plugin.',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/PyUpgradeOptions'\n }, {\n type: 'null'\n }]\n },\n 'required-version': {\n description: 'Enforce a requirement on the version of Ruff, to enforce at runtime. If the version of Ruff does not meet the requirement, Ruff will exit with an error.\\n\\nUseful for unifying results across many environments, e.g., with a `pyproject.toml` file.\\n\\nAccepts a [PEP 440](https://peps.python.org/pep-0440/) specifier, like `==0.3.1` or `>=0.3.1`.',\n anyOf: [{\n $ref: '#/definitions/RequiredVersion'\n }, {\n type: 'null'\n }]\n },\n 'respect-gitignore': {\n description: 'Whether to automatically exclude files that are ignored by `.ignore`, `.gitignore`, `.git/info/exclude`, and global `gitignore` files. Enabled by default.',\n type: ['boolean', 'null']\n },\n select: {\n description: 'A list of rule codes or prefixes to enable. Prefixes can specify exact rules (like `F841`), entire categories (like `F`), or anything in between.\\n\\nWhen breaking ties between enabled and disabled rules (via `select` and `ignore`, respectively), more specific prefixes override less specific prefixes.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'show-fixes': {\n description: 'Whether to show an enumeration of all fixed lint violations (overridden by the `--show-fixes` command-line flag).',\n type: ['boolean', 'null']\n },\n src: {\n description: 'The directories to consider when resolving first- vs. third-party imports.\\n\\nWhen omitted, the `src` directory will typically default to including both:\\n\\n1. The directory containing the nearest `pyproject.toml`, `ruff.toml`, or `.ruff.toml` file (the \"project root\"). 2. The `\"src\"` subdirectory of the project root.\\n\\nThese defaults ensure that uv supports both flat layouts and `src` layouts out-of-the-box. (If a configuration file is explicitly provided (e.g., via the `--config` command-line flag), the current working directory will be considered the project root.)\\n\\nAs an example, consider an alternative project structure, like:\\n\\n```text my_project ├── pyproject.toml └── lib └── my_package ├── __init__.py ├── foo.py └── bar.py ```\\n\\nIn this case, the `./lib` directory should be included in the `src` option (e.g., `src = [\"lib\"]`), such that when resolving imports, `my_package.foo` is considered first-party.\\n\\nThis field supports globs. For example, if you have a series of Python packages in a `python_modules` directory, `src = [\"python_modules/*\"]` would expand to incorporate all packages in that directory. User home directory and environment variables will also be expanded.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'tab-size': {\n description: 'The number of spaces a tab is equal to when enforcing long-line violations (like `E501`) or formatting code with the formatter.\\n\\nThis option changes the number of spaces inserted by the formatter when using soft-tabs (`indent-style = space`).',\n deprecated: true,\n anyOf: [{\n $ref: '#/definitions/IndentWidth'\n }, {\n type: 'null'\n }]\n },\n 'target-version': {\n description: 'The minimum Python version to target, e.g., when considering automatic code upgrades, like rewriting type annotations. Ruff will not propose changes using features that are not available in the given version.\\n\\nFor example, to represent supporting Python >=3.10 or ==3.10 specify `target-version = \"py310\"`.\\n\\nIf you\\'re already using a `pyproject.toml` file, we recommend `project.requires-python` instead, as it\\'s based on Python packaging standards, and will be respected by other tools. For example, Ruff treats the following as identical to `target-version = \"py38\"`:\\n\\n```toml [project] requires-python = \">=3.8\" ```\\n\\nIf both are specified, `target-version` takes precedence over `requires-python`.\\n\\nNote that a stub file can [sometimes make use of a typing feature](https://typing.readthedocs.io/en/latest/spec/distributing.html#syntax) before it is available at runtime, as long as the stub does not make use of new *syntax*. For example, a type checker will understand `int | str` in a stub as being a `Union` type annotation, even if the type checker is run using Python 3.9, despite the fact that the `|` operator can only be used to create union types at runtime on Python 3.10+. As such, Ruff will often recommend newer features in a stub file than it would for an equivalent runtime file with the same target version.',\n anyOf: [{\n $ref: '#/definitions/PythonVersion'\n }, {\n type: 'null'\n }]\n },\n 'task-tags': {\n description: 'A list of task tags to recognize (e.g., \"TODO\", \"FIXME\", \"XXX\").\\n\\nComments starting with these tags will be ignored by commented-out code detection (`ERA`), and skipped by line-length rules (`E501`) if [`ignore-overlong-task-comments`](#lint_pycodestyle_ignore-overlong-task-comments) is set to `true`.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'typing-modules': {\n description: 'A list of modules whose exports should be treated equivalently to members of the `typing` module.\\n\\nThis is useful for ensuring proper type annotation inference for projects that re-export `typing` and `typing_extensions` members from a compatibility module. If omitted, any members imported from modules apart from `typing` and `typing_extensions` will be treated as ordinary Python objects.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n unfixable: {\n description: 'A list of rule codes or prefixes to consider non-fixable.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'unsafe-fixes': {\n description: 'Enable application of unsafe fixes. If excluded, a hint will be displayed when unsafe fixes are available. If set to false, the hint will be hidden.',\n type: ['boolean', 'null']\n }\n },\n additionalProperties: false,\n definitions: {\n ApiBan: {\n type: 'object',\n required: ['msg'],\n properties: {\n msg: {\n description: 'The message to display when the API is used.',\n type: 'string'\n }\n },\n additionalProperties: false\n },\n BannedAliases: {\n type: 'array',\n items: {\n type: 'string'\n }\n },\n ConstantType: {\n type: 'string',\n enum: ['bytes', 'complex', 'float', 'int', 'str']\n },\n Convention: {\n oneOf: [{\n description: 'Use Google-style docstrings.',\n type: 'string',\n enum: ['google']\n }, {\n description: 'Use NumPy-style docstrings.',\n type: 'string',\n enum: ['numpy']\n }, {\n description: 'Use PEP257-style docstrings.',\n type: 'string',\n enum: ['pep257']\n }]\n },\n DocstringCodeLineWidth: {\n anyOf: [{\n description: 'Wrap docstring code examples at a fixed line width.',\n allOf: [{\n $ref: '#/definitions/LineWidth'\n }]\n }, {\n description: 'Respect the line length limit setting for the surrounding Python code.',\n allOf: [{\n $ref: '#/definitions/Dynamic'\n }]\n }]\n },\n Dynamic: {\n type: 'string',\n const: 'dynamic'\n },\n Flake8AnnotationsOptions: {\n type: 'object',\n properties: {\n 'allow-star-arg-any': {\n description: 'Whether to suppress `ANN401` for dynamically typed `*args` and `**kwargs` arguments.',\n type: ['boolean', 'null']\n },\n 'ignore-fully-untyped': {\n description: \"Whether to suppress `ANN*` rules for any declaration that hasn't been typed at all. This makes it easier to gradually add types to a codebase.\",\n type: ['boolean', 'null']\n },\n 'mypy-init-return': {\n description: 'Whether to allow the omission of a return type hint for `__init__` if at least one argument is annotated.',\n type: ['boolean', 'null']\n },\n 'suppress-dummy-args': {\n description: 'Whether to suppress `ANN000`-level violations for arguments matching the \"dummy\" variable regex (like `_`).',\n type: ['boolean', 'null']\n },\n 'suppress-none-returning': {\n description: 'Whether to suppress `ANN200`-level violations for functions that meet either of the following criteria:\\n\\n- Contain no `return` statement. - Explicit `return` statement(s) all return `None` (explicitly or implicitly).',\n type: ['boolean', 'null']\n }\n },\n additionalProperties: false\n },\n Flake8BanditOptions: {\n type: 'object',\n properties: {\n 'check-typed-exception': {\n description: 'Whether to disallow `try`-`except`-`pass` (`S110`) for specific exception types. By default, `try`-`except`-`pass` is only disallowed for `Exception` and `BaseException`.',\n type: ['boolean', 'null']\n },\n 'hardcoded-tmp-directory': {\n description: 'A list of directories to consider temporary.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'hardcoded-tmp-directory-extend': {\n description: 'A list of directories to consider temporary, in addition to those specified by [`hardcoded-tmp-directory`](#lint_flake8-bandit_hardcoded-tmp-directory).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n Flake8BooleanTrapOptions: {\n type: 'object',\n properties: {\n 'extend-allowed-calls': {\n description: 'Additional callable functions with which to allow boolean traps.\\n\\nExpects to receive a list of fully-qualified names (e.g., `pydantic.Field`, rather than `Field`).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n Flake8BugbearOptions: {\n type: 'object',\n properties: {\n 'extend-immutable-calls': {\n description: 'Additional callable functions to consider \"immutable\" when evaluating, e.g., the `function-call-in-default-argument` rule (`B008`) or `function-call-in-dataclass-defaults` rule (`RUF009`).\\n\\nExpects to receive a list of fully-qualified names (e.g., `fastapi.Query`, rather than `Query`).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n Flake8BuiltinsOptions: {\n type: 'object',\n properties: {\n 'builtins-allowed-modules': {\n description: 'List of builtin module names to allow.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'builtins-ignorelist': {\n description: 'Ignore list of builtins.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n Flake8ComprehensionsOptions: {\n type: 'object',\n properties: {\n 'allow-dict-calls-with-keyword-arguments': {\n description: 'Allow `dict` calls that make use of keyword arguments (e.g., `dict(a=1, b=2)`).',\n type: ['boolean', 'null']\n }\n },\n additionalProperties: false\n },\n Flake8CopyrightOptions: {\n type: 'object',\n properties: {\n author: {\n description: 'Author to enforce within the copyright notice. If provided, the author must be present immediately following the copyright notice.',\n type: ['string', 'null']\n },\n 'min-file-size': {\n description: 'A minimum file size (in bytes) required for a copyright notice to be enforced. By default, all files are validated.',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'notice-rgx': {\n description: 'The regular expression used to match the copyright notice, compiled with the [`regex`](https://docs.rs/regex/latest/regex/) crate. Defaults to `(?i)Copyright\\\\s+((?:\\\\(C\\\\)|©)\\\\s+)?\\\\d{4}((-|,\\\\s)\\\\d{4})*`, which matches the following:\\n\\n- `Copyright 2023` - `Copyright (C) 2023` - `Copyright 2021-2023` - `Copyright (C) 2021-2023` - `Copyright (C) 2021, 2023`',\n type: ['string', 'null']\n }\n },\n additionalProperties: false\n },\n Flake8ErrMsgOptions: {\n type: 'object',\n properties: {\n 'max-string-length': {\n description: 'Maximum string length for string literals in exception messages.',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n }\n },\n additionalProperties: false\n },\n Flake8GetTextOptions: {\n type: 'object',\n properties: {\n 'extend-function-names': {\n description: 'Additional function names to consider as internationalization calls, in addition to those included in [`function-names`](#lint_flake8-gettext_function-names).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'function-names': {\n description: 'The function names to consider as internationalization calls.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n Flake8ImplicitStrConcatOptions: {\n type: 'object',\n properties: {\n 'allow-multiline': {\n description: 'Whether to allow implicit string concatenations for multiline strings. By default, implicit concatenations of multiline strings are allowed (but continuation lines, delimited with a backslash, are prohibited).\\n\\nSetting `allow-multiline = false` will automatically disable the `explicit-string-concatenation` (`ISC003`) rule. Otherwise, both implicit and explicit multiline string concatenations would be seen as violations, making it impossible to write a linter-compliant multiline string.',\n type: ['boolean', 'null']\n }\n },\n additionalProperties: false\n },\n Flake8ImportConventionsOptions: {\n type: 'object',\n properties: {\n aliases: {\n description: 'The conventional aliases for imports. These aliases can be extended by the [`extend-aliases`](#lint_flake8-import-conventions_extend-aliases) option.',\n type: ['object', 'null'],\n additionalProperties: {\n type: 'string'\n }\n },\n 'banned-aliases': {\n description: 'A mapping from module to its banned import aliases.',\n type: ['object', 'null'],\n additionalProperties: {\n $ref: '#/definitions/BannedAliases'\n }\n },\n 'banned-from': {\n description: 'A list of modules that should not be imported from using the `from ... import ...` syntax.\\n\\nFor example, given `banned-from = [\"pandas\"]`, `from pandas import DataFrame` would be disallowed, while `import pandas` would be allowed.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n },\n uniqueItems: true\n },\n 'extend-aliases': {\n description: 'A mapping from module to conventional import alias. These aliases will be added to the [`aliases`](#lint_flake8-import-conventions_aliases) mapping.',\n type: ['object', 'null'],\n additionalProperties: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n Flake8PytestStyleOptions: {\n type: 'object',\n properties: {\n 'fixture-parentheses': {\n description: 'Boolean flag specifying whether `@pytest.fixture()` without parameters should have parentheses. If the option is set to `false` (the default), `@pytest.fixture` is valid and `@pytest.fixture()` is invalid. If set to `true`, `@pytest.fixture()` is valid and `@pytest.fixture` is invalid.',\n type: ['boolean', 'null']\n },\n 'mark-parentheses': {\n description: 'Boolean flag specifying whether `@pytest.mark.foo()` without parameters should have parentheses. If the option is set to `false` (the default), `@pytest.mark.foo` is valid and `@pytest.mark.foo()` is invalid. If set to `true`, `@pytest.mark.foo()` is valid and `@pytest.mark.foo` is invalid.',\n type: ['boolean', 'null']\n },\n 'parametrize-names-type': {\n description: 'Expected type for multiple argument names in `@pytest.mark.parametrize`. The following values are supported:\\n\\n- `csv` — a comma-separated list, e.g. `@pytest.mark.parametrize(\"name1,name2\", ...)` - `tuple` (default) — e.g. `@pytest.mark.parametrize((\"name1\", \"name2\"), ...)` - `list` — e.g. `@pytest.mark.parametrize([\"name1\", \"name2\"], ...)`',\n anyOf: [{\n $ref: '#/definitions/ParametrizeNameType'\n }, {\n type: 'null'\n }]\n },\n 'parametrize-values-row-type': {\n description: 'Expected type for each row of values in `@pytest.mark.parametrize` in case of multiple parameters. The following values are supported:\\n\\n- `tuple` (default) — e.g. `@pytest.mark.parametrize((\"name1\", \"name2\"), [(1, 2), (3, 4)])` - `list` — e.g. `@pytest.mark.parametrize((\"name1\", \"name2\"), [[1, 2], [3, 4]])`',\n anyOf: [{\n $ref: '#/definitions/ParametrizeValuesRowType'\n }, {\n type: 'null'\n }]\n },\n 'parametrize-values-type': {\n description: 'Expected type for the list of values rows in `@pytest.mark.parametrize`. The following values are supported:\\n\\n- `tuple` — e.g. `@pytest.mark.parametrize(\"name\", (1, 2, 3))` - `list` (default) — e.g. `@pytest.mark.parametrize(\"name\", [1, 2, 3])`',\n anyOf: [{\n $ref: '#/definitions/ParametrizeValuesType'\n }, {\n type: 'null'\n }]\n },\n 'raises-extend-require-match-for': {\n description: 'List of additional exception names that require a match= parameter in a `pytest.raises()` call. This extends the default list of exceptions that require a match= parameter. This option is useful if you want to extend the default list of exceptions that require a match= parameter without having to specify the entire list. Note that this option does not remove any exceptions from the default list.\\n\\nSupports glob patterns. For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'raises-require-match-for': {\n description: 'List of exception names that require a match= parameter in a `pytest.raises()` call.\\n\\nSupports glob patterns. For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n Flake8QuotesOptions: {\n type: 'object',\n properties: {\n 'avoid-escape': {\n description: 'Whether to avoid using single quotes if a string contains single quotes, or vice-versa with double quotes, as per [PEP 8](https://peps.python.org/pep-0008/#string-quotes). This minimizes the need to escape quotation marks within strings.',\n type: ['boolean', 'null']\n },\n 'docstring-quotes': {\n description: 'Quote style to prefer for docstrings (either \"single\" or \"double\").\\n\\nWhen using the formatter, only \"double\" is compatible, as the formatter enforces double quotes for docstrings strings.',\n anyOf: [{\n $ref: '#/definitions/Quote'\n }, {\n type: 'null'\n }]\n },\n 'inline-quotes': {\n description: 'Quote style to prefer for inline strings (either \"single\" or \"double\").\\n\\nWhen using the formatter, ensure that [`format.quote-style`](#format_quote-style) is set to the same preferred quote style.',\n anyOf: [{\n $ref: '#/definitions/Quote'\n }, {\n type: 'null'\n }]\n },\n 'multiline-quotes': {\n description: 'Quote style to prefer for multiline strings (either \"single\" or \"double\").\\n\\nWhen using the formatter, only \"double\" is compatible, as the formatter enforces double quotes for multiline strings.',\n anyOf: [{\n $ref: '#/definitions/Quote'\n }, {\n type: 'null'\n }]\n }\n },\n additionalProperties: false\n },\n Flake8SelfOptions: {\n type: 'object',\n properties: {\n 'extend-ignore-names': {\n description: 'Additional names to ignore when considering `flake8-self` violations, in addition to those included in [`ignore-names`](#lint_flake8-self_ignore-names).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'ignore-names': {\n description: 'A list of names to ignore when considering `flake8-self` violations.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n Flake8TidyImportsOptions: {\n type: 'object',\n properties: {\n 'ban-relative-imports': {\n description: 'Whether to ban all relative imports (`\"all\"`), or only those imports that extend into the parent module or beyond (`\"parents\"`).',\n anyOf: [{\n $ref: '#/definitions/Strictness'\n }, {\n type: 'null'\n }]\n },\n 'banned-api': {\n description: 'Specific modules or module members that may not be imported or accessed. Note that this rule is only meant to flag accidental uses, and can be circumvented via `eval` or `importlib`.',\n type: ['object', 'null'],\n additionalProperties: {\n $ref: '#/definitions/ApiBan'\n }\n },\n 'banned-module-level-imports': {\n description: 'List of specific modules that may not be imported at module level, and should instead be imported lazily (e.g., within a function definition, or an `if TYPE_CHECKING:` block, or some other nested context).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n Flake8TypeCheckingOptions: {\n type: 'object',\n properties: {\n 'exempt-modules': {\n description: 'Exempt certain modules from needing to be moved into type-checking blocks.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'quote-annotations': {\n description: 'Whether to add quotes around type annotations, if doing so would allow the corresponding import to be moved into a type-checking block.\\n\\nFor example, in the following, Python requires that `Sequence` be available at runtime, despite the fact that it\\'s only used in a type annotation:\\n\\n```python from collections.abc import Sequence\\n\\ndef func(value: Sequence[int]) -> None: ... ```\\n\\nIn other words, moving `from collections.abc import Sequence` into an `if TYPE_CHECKING:` block above would cause a runtime error, as the type would no longer be available at runtime.\\n\\nBy default, Ruff will respect such runtime semantics and avoid moving the import to prevent such runtime errors.\\n\\nSetting `quote-annotations` to `true` will instruct Ruff to add quotes around the annotation (e.g., `\"Sequence[int]\"`), which in turn enables Ruff to move the import into an `if TYPE_CHECKING:` block, like so:\\n\\n```python from typing import TYPE_CHECKING\\n\\nif TYPE_CHECKING: from collections.abc import Sequence\\n\\ndef func(value: \"Sequence[int]\") -> None: ... ```\\n\\nNote that this setting has no effect when `from __future__ import annotations` is present, as `__future__` annotations are always treated equivalently to quoted annotations.',\n type: ['boolean', 'null']\n },\n 'runtime-evaluated-base-classes': {\n description: \"Exempt classes that list any of the enumerated classes as a base class from needing to be moved into type-checking blocks.\\n\\nCommon examples include Pydantic's `pydantic.BaseModel` and SQLAlchemy's `sqlalchemy.orm.DeclarativeBase`, but can also support user-defined classes that inherit from those base classes. For example, if you define a common `DeclarativeBase` subclass that's used throughout your project (e.g., `class Base(DeclarativeBase) ...` in `base.py`), you can add it to this list (`runtime-evaluated-base-classes = [\\\"base.Base\\\"]`) to exempt models from being moved into type-checking blocks.\",\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'runtime-evaluated-decorators': {\n description: \"Exempt classes and functions decorated with any of the enumerated decorators from being moved into type-checking blocks.\\n\\nCommon examples include Pydantic's `@pydantic.validate_call` decorator (for functions) and attrs' `@attrs.define` decorator (for classes).\",\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n strict: {\n description: \"Enforce `TC001`, `TC002`, and `TC003` rules even when valid runtime imports are present for the same module.\\n\\nSee flake8-type-checking's [strict](https://github.com/snok/flake8-type-checking#strict) option.\",\n type: ['boolean', 'null']\n }\n },\n additionalProperties: false\n },\n Flake8UnusedArgumentsOptions: {\n type: 'object',\n properties: {\n 'ignore-variadic-names': {\n description: 'Whether to allow unused variadic arguments, like `*args` and `**kwargs`.',\n type: ['boolean', 'null']\n }\n },\n additionalProperties: false\n },\n FormatOptions: {\n description: 'Configures the way Ruff formats your code.',\n type: 'object',\n properties: {\n 'docstring-code-format': {\n description: 'Whether to format code snippets in docstrings.\\n\\nWhen this is enabled, Python code examples within docstrings are automatically reformatted.\\n\\nFor example, when this is enabled, the following code:\\n\\n```python def f(x): \"\"\" Something about `f`. And an example in doctest format:\\n\\n>>> f( x )\\n\\nMarkdown is also supported:\\n\\n```py f( x ) ```\\n\\nAs are reStructuredText literal blocks::\\n\\nf( x )\\n\\nAnd reStructuredText code blocks:\\n\\n.. code-block:: python\\n\\nf( x ) \"\"\" pass ```\\n\\n... will be reformatted (assuming the rest of the options are set to their defaults) as:\\n\\n```python def f(x): \"\"\" Something about `f`. And an example in doctest format:\\n\\n>>> f(x)\\n\\nMarkdown is also supported:\\n\\n```py f(x) ```\\n\\nAs are reStructuredText literal blocks::\\n\\nf(x)\\n\\nAnd reStructuredText code blocks:\\n\\n.. code-block:: python\\n\\nf(x) \"\"\" pass ```\\n\\nIf a code snippet in a docstring contains invalid Python code or if the formatter would otherwise write invalid Python code, then the code example is ignored by the formatter and kept as-is.\\n\\nCurrently, doctest, Markdown, reStructuredText literal blocks, and reStructuredText code blocks are all supported and automatically recognized. In the case of unlabeled fenced code blocks in Markdown and reStructuredText literal blocks, the contents are assumed to be Python and reformatted. As with any other format, if the contents aren\\'t valid Python, then the block is left untouched automatically.',\n type: ['boolean', 'null']\n },\n 'docstring-code-line-length': {\n description: 'Set the line length used when formatting code snippets in docstrings.\\n\\nThis only has an effect when the `docstring-code-format` setting is enabled.\\n\\nThe default value for this setting is `\"dynamic\"`, which has the effect of ensuring that any reformatted code examples in docstrings adhere to the global line length configuration that is used for the surrounding Python code. The point of this setting is that it takes the indentation of the docstring into account when reformatting code examples.\\n\\nAlternatively, this can be set to a fixed integer, which will result in the same line length limit being applied to all reformatted code examples in docstrings. When set to a fixed integer, the indent of the docstring is not taken into account. That is, this may result in lines in the reformatted code example that exceed the globally configured line length limit.\\n\\nFor example, when this is set to `20` and [`docstring-code-format`](#docstring-code-format) is enabled, then this code:\\n\\n```python def f(x): \\'\\'\\' Something about `f`. And an example:\\n\\n.. code-block:: python\\n\\nfoo, bar, quux = this_is_a_long_line(lion, hippo, lemur, bear) \\'\\'\\' pass ```\\n\\n... will be reformatted (assuming the rest of the options are set to their defaults) as:\\n\\n```python def f(x): \"\"\" Something about `f`. And an example:\\n\\n.. code-block:: python\\n\\n( foo, bar, quux, ) = this_is_a_long_line( lion, hippo, lemur, bear, ) \"\"\" pass ```',\n anyOf: [{\n $ref: '#/definitions/DocstringCodeLineWidth'\n }, {\n type: 'null'\n }]\n },\n exclude: {\n description: 'A list of file patterns to exclude from formatting in addition to the files excluded globally (see [`exclude`](#exclude), and [`extend-exclude`](#extend-exclude)).\\n\\nExclusions are based on globs, and can be either:\\n\\n- Single-path patterns, like `.mypy_cache` (to exclude any directory named `.mypy_cache` in the tree), `foo.py` (to exclude any file named `foo.py`), or `foo_*.py` (to exclude any file matching `foo_*.py` ). - Relative patterns, like `directory/foo.py` (to exclude that specific file) or `directory/*.py` (to exclude any Python files in `directory`). Note that these paths are relative to the project root (e.g., the directory containing your `pyproject.toml`).\\n\\nFor more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'indent-style': {\n description: 'Whether to use spaces or tabs for indentation.\\n\\n`indent-style = \"space\"` (default):\\n\\n```python def f(): print(\"Hello\") # Spaces indent the `print` statement. ```\\n\\n`indent-style = \"tab\"`:\\n\\n```python def f(): print(\"Hello\") # A tab `\\\\t` indents the `print` statement. ```\\n\\nPEP 8 recommends using spaces for [indentation](https://peps.python.org/pep-0008/#indentation). We care about accessibility; if you do not need tabs for accessibility, we do not recommend you use them.\\n\\nSee [`indent-width`](#indent-width) to configure the number of spaces per indentation and the tab width.',\n anyOf: [{\n $ref: '#/definitions/IndentStyle'\n }, {\n type: 'null'\n }]\n },\n 'line-ending': {\n description: 'The character Ruff uses at the end of a line.\\n\\n* `auto`: The newline style is detected automatically on a file per file basis. Files with mixed line endings will be converted to the first detected line ending. Defaults to `\\\\n` for files that contain no line endings. * `lf`: Line endings will be converted to `\\\\n`. The default line ending on Unix. * `cr-lf`: Line endings will be converted to `\\\\r\\\\n`. The default line ending on Windows. * `native`: Line endings will be converted to `\\\\n` on Unix and `\\\\r\\\\n` on Windows.',\n anyOf: [{\n $ref: '#/definitions/LineEnding'\n }, {\n type: 'null'\n }]\n },\n preview: {\n description: 'Whether to enable the unstable preview style formatting.',\n type: ['boolean', 'null']\n },\n 'quote-style': {\n description: 'Configures the preferred quote character for strings. The recommended options are\\n\\n* `double` (default): Use double quotes `\"` * `single`: Use single quotes `\\'`\\n\\nIn compliance with [PEP 8](https://peps.python.org/pep-0008/) and [PEP 257](https://peps.python.org/pep-0257/), Ruff prefers double quotes for triple quoted strings and docstrings even when using `quote-style = \"single\"`.\\n\\nRuff deviates from using the configured quotes if doing so prevents the need for escaping quote characters inside the string:\\n\\n```python a = \"a string without any quotes\" b = \"It\\'s monday morning\" ```\\n\\nRuff will change the quotes of the string assigned to `a` to single quotes when using `quote-style = \"single\"`. However, Ruff uses double quotes for the string assigned to `b` because using single quotes would require escaping the `\\'`, which leads to the less readable code: `\\'It\\\\\\'s monday morning\\'`.\\n\\nIn addition, Ruff supports the quote style `preserve` for projects that already use a mixture of single and double quotes and can\\'t migrate to the `double` or `single` style. The quote style `preserve` leaves the quotes of all strings unchanged.',\n anyOf: [{\n $ref: '#/definitions/QuoteStyle'\n }, {\n type: 'null'\n }]\n },\n 'skip-magic-trailing-comma': {\n description: \"Ruff uses existing trailing commas as an indication that short lines should be left separate. If this option is set to `true`, the magic trailing comma is ignored.\\n\\nFor example, Ruff leaves the arguments separate even though collapsing the arguments to a single line doesn't exceed the line length if `skip-magic-trailing-comma = false`:\\n\\n```python # The arguments remain on separate lines because of the trailing comma after `b` def test( a, b, ): pass ```\\n\\nSetting `skip-magic-trailing-comma = true` changes the formatting to:\\n\\n```python # The arguments remain on separate lines because of the trailing comma after `b` def test(a, b): pass ```\",\n type: ['boolean', 'null']\n }\n },\n additionalProperties: false\n },\n ImportSection: {\n anyOf: [{\n $ref: '#/definitions/ImportType'\n }, {\n type: 'string'\n }]\n },\n ImportType: {\n type: 'string',\n enum: ['future', 'standard-library', 'third-party', 'first-party', 'local-folder']\n },\n IndentStyle: {\n oneOf: [{\n description: 'Use tabs to indent code.',\n type: 'string',\n enum: ['tab']\n }, {\n description: 'Use [`IndentWidth`] spaces to indent code.',\n type: 'string',\n enum: ['space']\n }]\n },\n IndentWidth: {\n description: 'The size of a tab.',\n type: 'integer',\n format: 'uint8',\n minimum: 1.0\n },\n IsortOptions: {\n type: 'object',\n properties: {\n 'case-sensitive': {\n description: 'Sort imports taking into account case sensitivity.',\n type: ['boolean', 'null']\n },\n classes: {\n description: 'An override list of tokens to always recognize as a Class for [`order-by-type`](#lint_isort_order-by-type) regardless of casing.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'combine-as-imports': {\n description: \"Combines as imports on the same line. See isort's [`combine-as-imports`](https://pycqa.github.io/isort/docs/configuration/options.html#combine-as-imports) option.\",\n type: ['boolean', 'null']\n },\n constants: {\n description: 'An override list of tokens to always recognize as a CONSTANT for [`order-by-type`](#lint_isort_order-by-type) regardless of casing.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'default-section': {\n description: \"Define a default section for any imports that don't fit into the specified [`section-order`](#lint_isort_section-order).\",\n anyOf: [{\n $ref: '#/definitions/ImportSection'\n }, {\n type: 'null'\n }]\n },\n 'detect-same-package': {\n description: 'Whether to automatically mark imports from within the same package as first-party. For example, when `detect-same-package = true`, then when analyzing files within the `foo` package, any imports from within the `foo` package will be considered first-party.\\n\\nThis heuristic is often unnecessary when `src` is configured to detect all first-party sources; however, if `src` is _not_ configured, this heuristic can be useful to detect first-party imports from _within_ (but not _across_) first-party packages.',\n type: ['boolean', 'null']\n },\n 'extra-standard-library': {\n description: 'A list of modules to consider standard-library, in addition to those known to Ruff in advance.\\n\\nSupports glob patterns. For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'force-single-line': {\n description: 'Forces all from imports to appear on their own line.',\n type: ['boolean', 'null']\n },\n 'force-sort-within-sections': {\n description: \"Don't sort straight-style imports (like `import sys`) before from-style imports (like `from itertools import groupby`). Instead, sort the imports by module, independent of import style.\",\n type: ['boolean', 'null']\n },\n 'force-to-top': {\n description: 'Force specific imports to the top of their appropriate section.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'force-wrap-aliases': {\n description: \"Force `import from` statements with multiple members and at least one alias (e.g., `import A as B`) to wrap such that every line contains exactly one member. For example, this formatting would be retained, rather than condensing to a single line:\\n\\n```python from .utils import ( test_directory as test_directory, test_id as test_id ) ```\\n\\nNote that this setting is only effective when combined with `combine-as-imports = true`. When [`combine-as-imports`](#lint_isort_combine-as-imports) isn't enabled, every aliased `import from` will be given its own line, in which case, wrapping is not necessary.\\n\\nWhen using the formatter, ensure that [`format.skip-magic-trailing-comma`](#format_skip-magic-trailing-comma) is set to `false` (default) when enabling `force-wrap-aliases` to avoid that the formatter collapses members if they all fit on a single line.\",\n type: ['boolean', 'null']\n },\n 'forced-separate': {\n description: 'A list of modules to separate into auxiliary block(s) of imports, in the order specified.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'from-first': {\n description: 'Whether to place `import from` imports before straight imports when sorting.\\n\\nFor example, by default, imports will be sorted such that straight imports appear before `import from` imports, as in: ```python import os import sys from typing import List ```\\n\\nSetting `from-first = true` will instead sort such that `import from` imports appear before straight imports, as in: ```python from typing import List import os import sys ```',\n type: ['boolean', 'null']\n },\n 'known-first-party': {\n description: 'A list of modules to consider first-party, regardless of whether they can be identified as such via introspection of the local filesystem.\\n\\nSupports glob patterns. For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'known-local-folder': {\n description: 'A list of modules to consider being a local folder. Generally, this is reserved for relative imports (`from . import module`).\\n\\nSupports glob patterns. For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'known-third-party': {\n description: 'A list of modules to consider third-party, regardless of whether they can be identified as such via introspection of the local filesystem.\\n\\nSupports glob patterns. For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'length-sort': {\n description: 'Sort imports by their string length, such that shorter imports appear before longer imports. For example, by default, imports will be sorted alphabetically, as in: ```python import collections import os ```\\n\\nSetting `length-sort = true` will instead sort such that shorter imports appear before longer imports, as in: ```python import os import collections ```',\n type: ['boolean', 'null']\n },\n 'length-sort-straight': {\n description: \"Sort straight imports by their string length. Similar to [`length-sort`](#lint_isort_length-sort), but applies only to straight imports and doesn't affect `from` imports.\",\n type: ['boolean', 'null']\n },\n 'lines-after-imports': {\n description: 'The number of blank lines to place after imports. Use `-1` for automatic determination.\\n\\nRuff uses at most one blank line after imports in typing stub files (files with `.pyi` extension) in accordance to the typing style recommendations ([source](https://typing.readthedocs.io/en/latest/source/stubs.html#blank-lines)).\\n\\nWhen using the formatter, only the values `-1`, `1`, and `2` are compatible because it enforces at least one empty and at most two empty lines after imports.',\n type: ['integer', 'null'],\n format: 'int'\n },\n 'lines-between-types': {\n description: 'The number of lines to place between \"direct\" and `import from` imports.\\n\\nWhen using the formatter, only the values `0` and `1` are compatible because it preserves up to one empty line after imports in nested blocks.',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'no-lines-before': {\n description: 'A list of sections that should _not_ be delineated from the previous section via empty lines.',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/ImportSection'\n }\n },\n 'no-sections': {\n description: 'Put all imports into the same section bucket.\\n\\nFor example, rather than separating standard library and third-party imports, as in: ```python import os import sys\\n\\nimport numpy import pandas ```\\n\\nSetting `no-sections = true` will instead group all imports into a single section: ```python import numpy import os import pandas import sys ```',\n type: ['boolean', 'null']\n },\n 'order-by-type': {\n description: 'Order imports by type, which is determined by case, in addition to alphabetically.',\n type: ['boolean', 'null']\n },\n 'relative-imports-order': {\n description: 'Whether to place \"closer\" imports (fewer `.` characters, most local) before \"further\" imports (more `.` characters, least local), or vice versa.\\n\\nThe default (\"furthest-to-closest\") is equivalent to isort\\'s [`reverse-relative`](https://pycqa.github.io/isort/docs/configuration/options.html#reverse-relative) default (`reverse-relative = false`); setting this to \"closest-to-furthest\" is equivalent to isort\\'s `reverse-relative = true`.',\n anyOf: [{\n $ref: '#/definitions/RelativeImportsOrder'\n }, {\n type: 'null'\n }]\n },\n 'required-imports': {\n description: 'Add the specified import line to all files.',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/NameImports'\n }\n },\n 'section-order': {\n description: 'Override in which order the sections should be output. Can be used to move custom sections.',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/ImportSection'\n }\n },\n sections: {\n description: 'A list of mappings from section names to modules.\\n\\nBy default, imports are categorized according to their type (e.g., `future`, `third-party`, and so on). This setting allows you to group modules into custom sections, to augment or override the built-in sections.\\n\\nFor example, to group all testing utilities, you could create a `testing` section: ```toml testing = [\"pytest\", \"hypothesis\"] ```\\n\\nThe values in the list are treated as glob patterns. For example, to match all packages in the LangChain ecosystem (`langchain-core`, `langchain-openai`, etc.): ```toml langchain = [\"langchain-*\"] ```\\n\\nCustom sections should typically be inserted into the [`section-order`](#lint_isort_section-order) list to ensure that they\\'re displayed as a standalone group and in the intended order, as in: ```toml section-order = [ \"future\", \"standard-library\", \"third-party\", \"first-party\", \"local-folder\", \"testing\" ] ```\\n\\nIf a custom section is omitted from [`section-order`](#lint_isort_section-order), imports in that section will be assigned to the [`default-section`](#lint_isort_default-section) (which defaults to `third-party`).',\n type: ['object', 'null'],\n additionalProperties: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n },\n 'single-line-exclusions': {\n description: 'One or more modules to exclude from the single line rule.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'split-on-trailing-comma': {\n description: \"If a comma is placed after the last member in a multi-line import, then the imports will never be folded into one line.\\n\\nSee isort's [`split-on-trailing-comma`](https://pycqa.github.io/isort/docs/configuration/options.html#split-on-trailing-comma) option.\\n\\nWhen using the formatter, ensure that [`format.skip-magic-trailing-comma`](#format_skip-magic-trailing-comma) is set to `false` (default) when enabling `split-on-trailing-comma` to avoid that the formatter removes the trailing commas.\",\n type: ['boolean', 'null']\n },\n variables: {\n description: 'An override list of tokens to always recognize as a var for [`order-by-type`](#lint_isort_order-by-type) regardless of casing.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n LineEnding: {\n oneOf: [{\n description: 'The newline style is detected automatically on a file per file basis. Files with mixed line endings will be converted to the first detected line ending. Defaults to [`LineEnding::Lf`] for a files that contain no line endings.',\n type: 'string',\n enum: ['auto']\n }, {\n description: 'Line endings will be converted to `\\\\n` as is common on Unix.',\n type: 'string',\n enum: ['lf']\n }, {\n description: 'Line endings will be converted to `\\\\r\\\\n` as is common on Windows.',\n type: 'string',\n enum: ['cr-lf']\n }, {\n description: 'Line endings will be converted to `\\\\n` on Unix and `\\\\r\\\\n` on Windows.',\n type: 'string',\n enum: ['native']\n }]\n },\n LineLength: {\n description: 'The length of a line of text that is considered too long.\\n\\nThe allowed range of values is 1..=320',\n type: 'integer',\n format: 'uint16',\n maximum: 320.0,\n minimum: 1.0\n },\n LineWidth: {\n description: 'The maximum visual width to which the formatter should try to limit a line.',\n type: 'integer',\n format: 'uint16',\n minimum: 1.0\n },\n LintOptions: {\n description: 'Configures how Ruff checks your code.\\n\\nOptions specified in the `lint` section take precedence over the deprecated top-level settings.',\n type: 'object',\n properties: {\n 'allowed-confusables': {\n description: 'A list of allowed \"confusable\" Unicode characters to ignore when enforcing `RUF001`, `RUF002`, and `RUF003`.',\n type: ['array', 'null'],\n items: {\n type: 'string',\n maxLength: 1,\n minLength: 1\n }\n },\n 'dummy-variable-rgx': {\n description: 'A regular expression used to identify \"dummy\" variables, or those which should be ignored when enforcing (e.g.) unused-variable rules. The default expression matches `_`, `__`, and `_var`, but not `_var_`.',\n type: ['string', 'null']\n },\n exclude: {\n description: 'A list of file patterns to exclude from linting in addition to the files excluded globally (see [`exclude`](#exclude), and [`extend-exclude`](#extend-exclude)).\\n\\nExclusions are based on globs, and can be either:\\n\\n- Single-path patterns, like `.mypy_cache` (to exclude any directory named `.mypy_cache` in the tree), `foo.py` (to exclude any file named `foo.py`), or `foo_*.py` (to exclude any file matching `foo_*.py` ). - Relative patterns, like `directory/foo.py` (to exclude that specific file) or `directory/*.py` (to exclude any Python files in `directory`). Note that these paths are relative to the project root (e.g., the directory containing your `pyproject.toml`).\\n\\nFor more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'explicit-preview-rules': {\n description: 'Whether to require exact codes to select preview rules. When enabled, preview rules will not be selected by prefixes — the full code of each preview rule will be required to enable the rule.',\n type: ['boolean', 'null']\n },\n 'extend-fixable': {\n description: 'A list of rule codes or prefixes to consider fixable, in addition to those specified by [`fixable`](#lint_fixable).',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-ignore': {\n description: 'A list of rule codes or prefixes to ignore, in addition to those specified by `ignore`.',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-per-file-ignores': {\n description: 'A list of mappings from file pattern to rule codes or prefixes to exclude, in addition to any rules excluded by [`per-file-ignores`](#lint_per-file-ignores).',\n type: ['object', 'null'],\n additionalProperties: {\n type: 'array',\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n }\n },\n 'extend-safe-fixes': {\n description: 'A list of rule codes or prefixes for which unsafe fixes should be considered safe.',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-select': {\n description: 'A list of rule codes or prefixes to enable, in addition to those specified by [`select`](#lint_select).',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-unfixable': {\n description: 'A list of rule codes or prefixes to consider non-auto-fixable, in addition to those specified by [`unfixable`](#lint_unfixable).',\n deprecated: true,\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'extend-unsafe-fixes': {\n description: 'A list of rule codes or prefixes for which safe fixes should be considered unsafe.',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n external: {\n description: 'A list of rule codes or prefixes that are unsupported by Ruff, but should be preserved when (e.g.) validating `# noqa` directives. Useful for retaining `# noqa` directives that cover plugins not yet implemented by Ruff.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n fixable: {\n description: 'A list of rule codes or prefixes to consider fixable. By default, all rules are considered fixable.',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'flake8-annotations': {\n description: 'Options for the `flake8-annotations` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8AnnotationsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-bandit': {\n description: 'Options for the `flake8-bandit` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8BanditOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-boolean-trap': {\n description: 'Options for the `flake8-boolean-trap` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8BooleanTrapOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-bugbear': {\n description: 'Options for the `flake8-bugbear` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8BugbearOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-builtins': {\n description: 'Options for the `flake8-builtins` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8BuiltinsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-comprehensions': {\n description: 'Options for the `flake8-comprehensions` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8ComprehensionsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-copyright': {\n description: 'Options for the `flake8-copyright` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8CopyrightOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-errmsg': {\n description: 'Options for the `flake8-errmsg` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8ErrMsgOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-gettext': {\n description: 'Options for the `flake8-gettext` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8GetTextOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-implicit-str-concat': {\n description: 'Options for the `flake8-implicit-str-concat` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8ImplicitStrConcatOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-import-conventions': {\n description: 'Options for the `flake8-import-conventions` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8ImportConventionsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-pytest-style': {\n description: 'Options for the `flake8-pytest-style` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8PytestStyleOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-quotes': {\n description: 'Options for the `flake8-quotes` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8QuotesOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-self': {\n description: 'Options for the `flake8_self` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8SelfOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-tidy-imports': {\n description: 'Options for the `flake8-tidy-imports` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8TidyImportsOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-type-checking': {\n description: 'Options for the `flake8-type-checking` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8TypeCheckingOptions'\n }, {\n type: 'null'\n }]\n },\n 'flake8-unused-arguments': {\n description: 'Options for the `flake8-unused-arguments` plugin.',\n anyOf: [{\n $ref: '#/definitions/Flake8UnusedArgumentsOptions'\n }, {\n type: 'null'\n }]\n },\n ignore: {\n description: 'A list of rule codes or prefixes to ignore. Prefixes can specify exact rules (like `F841`), entire categories (like `F`), or anything in between.\\n\\nWhen breaking ties between enabled and disabled rules (via `select` and `ignore`, respectively), more specific prefixes override less specific prefixes.',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'ignore-init-module-imports': {\n description: \"Avoid automatically removing unused imports in `__init__.py` files. Such imports will still be flagged, but with a dedicated message suggesting that the import is either added to the module's `__all__` symbol, or re-exported with a redundant alias (e.g., `import os as os`).\\n\\nThis option is enabled by default, but you can opt-in to removal of imports via an unsafe fix.\",\n deprecated: true,\n type: ['boolean', 'null']\n },\n isort: {\n description: 'Options for the `isort` plugin.',\n anyOf: [{\n $ref: '#/definitions/IsortOptions'\n }, {\n type: 'null'\n }]\n },\n 'logger-objects': {\n description: 'A list of objects that should be treated equivalently to a `logging.Logger` object.\\n\\nThis is useful for ensuring proper diagnostics (e.g., to identify `logging` deprecations and other best-practices) for projects that re-export a `logging.Logger` object from a common module.\\n\\nFor example, if you have a module `logging_setup.py` with the following contents: ```python import logging\\n\\nlogger = logging.getLogger(__name__) ```\\n\\nAdding `\"logging_setup.logger\"` to `logger-objects` will ensure that `logging_setup.logger` is treated as a `logging.Logger` object when imported from other modules (e.g., `from logging_setup import logger`).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n mccabe: {\n description: 'Options for the `mccabe` plugin.',\n anyOf: [{\n $ref: '#/definitions/McCabeOptions'\n }, {\n type: 'null'\n }]\n },\n 'pep8-naming': {\n description: 'Options for the `pep8-naming` plugin.',\n anyOf: [{\n $ref: '#/definitions/Pep8NamingOptions'\n }, {\n type: 'null'\n }]\n },\n 'per-file-ignores': {\n description: \"A list of mappings from file pattern to rule codes or prefixes to exclude, when considering any matching files. An initial '!' negates the file pattern.\",\n type: ['object', 'null'],\n additionalProperties: {\n type: 'array',\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n }\n },\n preview: {\n description: 'Whether to enable preview mode. When preview mode is enabled, Ruff will use unstable rules and fixes.',\n type: ['boolean', 'null']\n },\n pycodestyle: {\n description: 'Options for the `pycodestyle` plugin.',\n anyOf: [{\n $ref: '#/definitions/PycodestyleOptions'\n }, {\n type: 'null'\n }]\n },\n pydocstyle: {\n description: 'Options for the `pydocstyle` plugin.',\n anyOf: [{\n $ref: '#/definitions/PydocstyleOptions'\n }, {\n type: 'null'\n }]\n },\n pyflakes: {\n description: 'Options for the `pyflakes` plugin.',\n anyOf: [{\n $ref: '#/definitions/PyflakesOptions'\n }, {\n type: 'null'\n }]\n },\n pylint: {\n description: 'Options for the `pylint` plugin.',\n anyOf: [{\n $ref: '#/definitions/PylintOptions'\n }, {\n type: 'null'\n }]\n },\n pyupgrade: {\n description: 'Options for the `pyupgrade` plugin.',\n anyOf: [{\n $ref: '#/definitions/PyUpgradeOptions'\n }, {\n type: 'null'\n }]\n },\n ruff: {\n description: 'Options for the `ruff` plugin',\n anyOf: [{\n $ref: '#/definitions/RuffOptions'\n }, {\n type: 'null'\n }]\n },\n select: {\n description: 'A list of rule codes or prefixes to enable. Prefixes can specify exact rules (like `F841`), entire categories (like `F`), or anything in between.\\n\\nWhen breaking ties between enabled and disabled rules (via `select` and `ignore`, respectively), more specific prefixes override less specific prefixes.',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n },\n 'task-tags': {\n description: 'A list of task tags to recognize (e.g., \"TODO\", \"FIXME\", \"XXX\").\\n\\nComments starting with these tags will be ignored by commented-out code detection (`ERA`), and skipped by line-length rules (`E501`) if [`ignore-overlong-task-comments`](#lint_pycodestyle_ignore-overlong-task-comments) is set to `true`.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'typing-modules': {\n description: 'A list of modules whose exports should be treated equivalently to members of the `typing` module.\\n\\nThis is useful for ensuring proper type annotation inference for projects that re-export `typing` and `typing_extensions` members from a compatibility module. If omitted, any members imported from modules apart from `typing` and `typing_extensions` will be treated as ordinary Python objects.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n unfixable: {\n description: 'A list of rule codes or prefixes to consider non-fixable.',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/RuleSelector'\n }\n }\n },\n additionalProperties: false\n },\n McCabeOptions: {\n type: 'object',\n properties: {\n 'max-complexity': {\n description: 'The maximum McCabe complexity to allow before triggering `C901` errors.',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n }\n },\n additionalProperties: false\n },\n NameImports: {\n type: 'string'\n },\n OutputFormat: {\n oneOf: [{\n type: 'string',\n enum: ['concise', 'full', 'json', 'json-lines', 'junit', 'grouped', 'github', 'gitlab', 'pylint', 'rdjson', 'azure', 'sarif']\n }, {\n deprecated: true,\n type: 'string',\n enum: ['text']\n }]\n },\n ParametrizeNameType: {\n type: 'string',\n enum: ['csv', 'tuple', 'list']\n },\n ParametrizeValuesRowType: {\n type: 'string',\n enum: ['tuple', 'list']\n },\n ParametrizeValuesType: {\n type: 'string',\n enum: ['tuple', 'list']\n },\n Pep8NamingOptions: {\n type: 'object',\n properties: {\n 'classmethod-decorators': {\n description: 'A list of decorators that, when applied to a method, indicate that the method should be treated as a class method (in addition to the builtin `@classmethod`).\\n\\nFor example, Ruff will expect that any method decorated by a decorator in this list takes a `cls` argument as its first argument.\\n\\nExpects to receive a list of fully-qualified names (e.g., `pydantic.validator`, rather than `validator`) or alternatively a plain name which is then matched against the last segment in case the decorator itself consists of a dotted name.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'extend-ignore-names': {\n description: 'Additional names (or patterns) to ignore when considering `pep8-naming` violations, in addition to those included in [`ignore-names`](#lint_pep8-naming_ignore-names).\\n\\nSupports glob patterns. For example, to ignore all names starting with `test_` or ending with `_test`, you could use `ignore-names = [\"test_*\", \"*_test\"]`. For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'ignore-names': {\n description: 'A list of names (or patterns) to ignore when considering `pep8-naming` violations.\\n\\nSupports glob patterns. For example, to ignore all names starting with `test_` or ending with `_test`, you could use `ignore-names = [\"test_*\", \"*_test\"]`. For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'staticmethod-decorators': {\n description: 'A list of decorators that, when applied to a method, indicate that the method should be treated as a static method (in addition to the builtin `@staticmethod`).\\n\\nFor example, Ruff will expect that any method decorated by a decorator in this list has no `self` or `cls` argument.\\n\\nExpects to receive a list of fully-qualified names (e.g., `belay.Device.teardown`, rather than `teardown`) or alternatively a plain name which is then matched against the last segment in case the decorator itself consists of a dotted name.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n PyUpgradeOptions: {\n type: 'object',\n properties: {\n 'keep-runtime-typing': {\n description: 'Whether to avoid [PEP 585](https://peps.python.org/pep-0585/) (`List[int]` -> `list[int]`) and [PEP 604](https://peps.python.org/pep-0604/) (`Union[str, int]` -> `str | int`) rewrites even if a file imports `from __future__ import annotations`.\\n\\nThis setting is only applicable when the target Python version is below 3.9 and 3.10 respectively, and is most commonly used when working with libraries like Pydantic and FastAPI, which rely on the ability to parse type annotations at runtime. The use of `from __future__ import annotations` causes Python to treat the type annotations as strings, which typically allows for the use of language features that appear in later Python versions but are not yet supported by the current version (e.g., `str | int`). However, libraries that rely on runtime type annotations will break if the annotations are incompatible with the current Python version.\\n\\nFor example, while the following is valid Python 3.8 code due to the presence of `from __future__ import annotations`, the use of `str | int` prior to Python 3.10 will cause Pydantic to raise a `TypeError` at runtime:\\n\\n```python from __future__ import annotations\\n\\nimport pydantic\\n\\nclass Foo(pydantic.BaseModel): bar: str | int ```',\n type: ['boolean', 'null']\n }\n },\n additionalProperties: false\n },\n PycodestyleOptions: {\n type: 'object',\n properties: {\n 'ignore-overlong-task-comments': {\n description: 'Whether line-length violations (`E501`) should be triggered for comments starting with [`task-tags`](#lint_task-tags) (by default: \"TODO\", \"FIXME\", and \"XXX\").',\n type: ['boolean', 'null']\n },\n 'max-doc-length': {\n description: 'The maximum line length to allow for [`doc-line-too-long`](https://docs.astral.sh/ruff/rules/doc-line-too-long/) violations within documentation (`W505`), including standalone comments. By default, this is set to `null` which disables reporting violations.\\n\\nThe length is determined by the number of characters per line, except for lines containing Asian characters or emojis. For these lines, the [unicode width](https://unicode.org/reports/tr11/) of each character is added up to determine the length.\\n\\nSee the [`doc-line-too-long`](https://docs.astral.sh/ruff/rules/doc-line-too-long/) rule for more information.',\n anyOf: [{\n $ref: '#/definitions/LineLength'\n }, {\n type: 'null'\n }]\n },\n 'max-line-length': {\n description: \"The maximum line length to allow for [`line-too-long`](https://docs.astral.sh/ruff/rules/line-too-long/) violations. By default, this is set to the value of the [`line-length`](#line-length) option.\\n\\nUse this option when you want to detect extra-long lines that the formatter can't automatically split by setting `pycodestyle.line-length` to a value larger than [`line-length`](#line-length).\\n\\n```toml # The formatter wraps lines at a length of 88. line-length = 88\\n\\n[pycodestyle] # E501 reports lines that exceed the length of 100. max-line-length = 100 ```\\n\\nThe length is determined by the number of characters per line, except for lines containing East Asian characters or emojis. For these lines, the [unicode width](https://unicode.org/reports/tr11/) of each character is added up to determine the length.\\n\\nSee the [`line-too-long`](https://docs.astral.sh/ruff/rules/line-too-long/) rule for more information.\",\n anyOf: [{\n $ref: '#/definitions/LineLength'\n }, {\n type: 'null'\n }]\n }\n },\n additionalProperties: false\n },\n PydocstyleOptions: {\n type: 'object',\n properties: {\n convention: {\n description: 'Whether to use Google-style, NumPy-style conventions, or the [PEP 257](https://peps.python.org/pep-0257/) defaults when analyzing docstring sections.\\n\\nEnabling a convention will disable all rules that are not included in the specified convention. As such, the intended workflow is to enable a convention and then selectively enable or disable any additional rules on top of it.\\n\\nFor example, to use Google-style conventions but avoid requiring documentation for every function parameter:\\n\\n```toml [tool.ruff.lint] # Enable all `pydocstyle` rules, limiting to those that adhere to the # Google convention via `convention = \"google\"`, below. select = [\"D\"]\\n\\n# On top of the Google convention, disable `D417`, which requires # documentation for every function parameter. ignore = [\"D417\"]\\n\\n[tool.ruff.lint.pydocstyle] convention = \"google\" ```\\n\\nTo enable an additional rule that\\'s excluded from the convention, select the desired rule via its fully qualified rule code (e.g., `D400` instead of `D4` or `D40`):\\n\\n```toml [tool.ruff.lint] # Enable D400 on top of the Google convention. extend-select = [\"D400\"]\\n\\n[tool.ruff.lint.pydocstyle] convention = \"google\" ```',\n anyOf: [{\n $ref: '#/definitions/Convention'\n }, {\n type: 'null'\n }]\n },\n 'ignore-decorators': {\n description: 'Ignore docstrings for functions or methods decorated with the specified fully-qualified decorators.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n },\n 'property-decorators': {\n description: 'A list of decorators that, when applied to a method, indicate that the method should be treated as a property (in addition to the builtin `@property` and standard-library `@functools.cached_property`).\\n\\nFor example, Ruff will expect that any method decorated by a decorator in this list can use a non-imperative summary line.',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n PyflakesOptions: {\n type: 'object',\n properties: {\n 'extend-generics': {\n description: 'Additional functions or classes to consider generic, such that any subscripts should be treated as type annotation (e.g., `ForeignKey` in `django.db.models.ForeignKey[\"User\"]`.\\n\\nExpects to receive a list of fully-qualified names (e.g., `django.db.models.ForeignKey`, rather than `ForeignKey`).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n }\n }\n },\n additionalProperties: false\n },\n PylintOptions: {\n type: 'object',\n properties: {\n 'allow-dunder-method-names': {\n description: 'Dunder methods name to allow, in addition to the default set from the Python standard library (see `PLW3201`).',\n type: ['array', 'null'],\n items: {\n type: 'string'\n },\n uniqueItems: true\n },\n 'allow-magic-value-types': {\n description: 'Constant types to ignore when used as \"magic values\" (see `PLR2004`).',\n type: ['array', 'null'],\n items: {\n $ref: '#/definitions/ConstantType'\n }\n },\n 'max-args': {\n description: 'Maximum number of arguments allowed for a function or method definition (see `PLR0913`).',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'max-bool-expr': {\n description: 'Maximum number of Boolean expressions allowed within a single `if` statement (see `PLR0916`).',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'max-branches': {\n description: 'Maximum number of branches allowed for a function or method body (see `PLR0912`).',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'max-locals': {\n description: 'Maximum number of local variables allowed for a function or method body (see `PLR0914`).',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'max-nested-blocks': {\n description: 'Maximum number of nested blocks allowed within a function or method body (see `PLR1702`).',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'max-positional-args': {\n description: 'Maximum number of positional arguments allowed for a function or method definition (see `PLR0917`).\\n\\nIf not specified, defaults to the value of `max-args`.',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'max-public-methods': {\n description: 'Maximum number of public methods allowed for a class (see `PLR0904`).',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'max-returns': {\n description: 'Maximum number of return statements allowed for a function or method body (see `PLR0911`)',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n },\n 'max-statements': {\n description: 'Maximum number of statements allowed for a function or method body (see `PLR0915`).',\n type: ['integer', 'null'],\n format: 'uint',\n minimum: 0.0\n }\n },\n additionalProperties: false\n },\n PythonVersion: {\n type: 'string',\n enum: ['py37', 'py38', 'py39', 'py310', 'py311', 'py312', 'py313']\n },\n Quote: {\n oneOf: [{\n description: 'Use double quotes.',\n type: 'string',\n enum: ['double']\n }, {\n description: 'Use single quotes.',\n type: 'string',\n enum: ['single']\n }]\n },\n QuoteStyle: {\n type: 'string',\n enum: ['single', 'double', 'preserve']\n },\n RelativeImportsOrder: {\n oneOf: [{\n description: 'Place \"closer\" imports (fewer `.` characters, most local) before \"further\" imports (more `.` characters, least local).',\n type: 'string',\n enum: ['closest-to-furthest']\n }, {\n description: 'Place \"further\" imports (more `.` characters, least local) imports before \"closer\" imports (fewer `.` characters, most local).',\n type: 'string',\n enum: ['furthest-to-closest']\n }]\n },\n RequiredVersion: {\n type: 'string'\n },\n RuffOptions: {\n type: 'object',\n properties: {\n 'parenthesize-tuple-in-subscript': {\n description: 'Whether to prefer accessing items keyed by tuples with parentheses around the tuple (see `RUF031`).',\n type: ['boolean', 'null']\n }\n },\n additionalProperties: false\n },\n RuleSelector: {\n type: 'string',\n enum: ['A', 'A0', 'A00', 'A001', 'A002', 'A003', 'A004', 'A005', 'A006', 'AIR', 'AIR0', 'AIR00', 'AIR001', 'ALL', 'ANN', 'ANN0', 'ANN00', 'ANN001', 'ANN002', 'ANN003', 'ANN1', 'ANN10', 'ANN101', 'ANN102', 'ANN2', 'ANN20', 'ANN201', 'ANN202', 'ANN204', 'ANN205', 'ANN206', 'ANN4', 'ANN40', 'ANN401', 'ARG', 'ARG0', 'ARG00', 'ARG001', 'ARG002', 'ARG003', 'ARG004', 'ARG005', 'ASYNC', 'ASYNC1', 'ASYNC10', 'ASYNC100', 'ASYNC105', 'ASYNC109', 'ASYNC11', 'ASYNC110', 'ASYNC115', 'ASYNC116', 'ASYNC2', 'ASYNC21', 'ASYNC210', 'ASYNC22', 'ASYNC220', 'ASYNC221', 'ASYNC222', 'ASYNC23', 'ASYNC230', 'ASYNC25', 'ASYNC251', 'B', 'B0', 'B00', 'B002', 'B003', 'B004', 'B005', 'B006', 'B007', 'B008', 'B009', 'B01', 'B010', 'B011', 'B012', 'B013', 'B014', 'B015', 'B016', 'B017', 'B018', 'B019', 'B02', 'B020', 'B021', 'B022', 'B023', 'B024', 'B025', 'B026', 'B027', 'B028', 'B029', 'B03', 'B030', 'B031', 'B032', 'B033', 'B034', 'B035', 'B039', 'B9', 'B90', 'B901', 'B904', 'B905', 'B909', 'BLE', 'BLE0', 'BLE00', 'BLE001', 'C', 'C4', 'C40', 'C400', 'C401', 'C402', 'C403', 'C404', 'C405', 'C406', 'C408', 'C409', 'C41', 'C410', 'C411', 'C413', 'C414', 'C415', 'C416', 'C417', 'C418', 'C419', 'C42', 'C420', 'C9', 'C90', 'C901', 'COM', 'COM8', 'COM81', 'COM812', 'COM818', 'COM819', 'CPY', 'CPY0', 'CPY00', 'CPY001', 'D', 'D1', 'D10', 'D100', 'D101', 'D102', 'D103', 'D104', 'D105', 'D106', 'D107', 'D2', 'D20', 'D200', 'D201', 'D202', 'D203', 'D204', 'D205', 'D206', 'D207', 'D208', 'D209', 'D21', 'D210', 'D211', 'D212', 'D213', 'D214', 'D215', 'D3', 'D30', 'D300', 'D301', 'D4', 'D40', 'D400', 'D401', 'D402', 'D403', 'D404', 'D405', 'D406', 'D407', 'D408', 'D409', 'D41', 'D410', 'D411', 'D412', 'D413', 'D414', 'D415', 'D416', 'D417', 'D418', 'D419', 'DJ', 'DJ0', 'DJ00', 'DJ001', 'DJ003', 'DJ006', 'DJ007', 'DJ008', 'DJ01', 'DJ012', 'DJ013', 'DOC', 'DOC2', 'DOC20', 'DOC201', 'DOC202', 'DOC4', 'DOC40', 'DOC402', 'DOC403', 'DOC5', 'DOC50', 'DOC501', 'DOC502', 'DTZ', 'DTZ0', 'DTZ00', 'DTZ001', 'DTZ002', 'DTZ003', 'DTZ004', 'DTZ005', 'DTZ006', 'DTZ007', 'DTZ01', 'DTZ011', 'DTZ012', 'E', 'E1', 'E10', 'E101', 'E11', 'E111', 'E112', 'E113', 'E114', 'E115', 'E116', 'E117', 'E2', 'E20', 'E201', 'E202', 'E203', 'E204', 'E21', 'E211', 'E22', 'E221', 'E222', 'E223', 'E224', 'E225', 'E226', 'E227', 'E228', 'E23', 'E231', 'E24', 'E241', 'E242', 'E25', 'E251', 'E252', 'E26', 'E261', 'E262', 'E265', 'E266', 'E27', 'E271', 'E272', 'E273', 'E274', 'E275', 'E3', 'E30', 'E301', 'E302', 'E303', 'E304', 'E305', 'E306', 'E4', 'E40', 'E401', 'E402', 'E5', 'E50', 'E501', 'E502', 'E7', 'E70', 'E701', 'E702', 'E703', 'E71', 'E711', 'E712', 'E713', 'E714', 'E72', 'E721', 'E722', 'E73', 'E731', 'E74', 'E741', 'E742', 'E743', 'E9', 'E90', 'E902', 'E99', 'E999', 'EM', 'EM1', 'EM10', 'EM101', 'EM102', 'EM103', 'ERA', 'ERA0', 'ERA00', 'ERA001', 'EXE', 'EXE0', 'EXE00', 'EXE001', 'EXE002', 'EXE003', 'EXE004', 'EXE005', 'F', 'F4', 'F40', 'F401', 'F402', 'F403', 'F404', 'F405', 'F406', 'F407', 'F5', 'F50', 'F501', 'F502', 'F503', 'F504', 'F505', 'F506', 'F507', 'F508', 'F509', 'F52', 'F521', 'F522', 'F523', 'F524', 'F525', 'F54', 'F541', 'F6', 'F60', 'F601', 'F602', 'F62', 'F621', 'F622', 'F63', 'F631', 'F632', 'F633', 'F634', 'F7', 'F70', 'F701', 'F702', 'F704', 'F706', 'F707', 'F72', 'F722', 'F8', 'F81', 'F811', 'F82', 'F821', 'F822', 'F823', 'F84', 'F841', 'F842', 'F9', 'F90', 'F901', 'FA', 'FA1', 'FA10', 'FA100', 'FA102', 'FAST', 'FAST0', 'FAST00', 'FAST001', 'FAST002', 'FAST003', 'FBT', 'FBT0', 'FBT00', 'FBT001', 'FBT002', 'FBT003', 'FIX', 'FIX0', 'FIX00', 'FIX001', 'FIX002', 'FIX003', 'FIX004', 'FLY', 'FLY0', 'FLY00', 'FLY002', 'FURB', 'FURB1', 'FURB10', 'FURB101', 'FURB103', 'FURB105', 'FURB11', 'FURB110', 'FURB113', 'FURB116', 'FURB118', 'FURB12', 'FURB129', 'FURB13', 'FURB131', 'FURB132', 'FURB136', 'FURB14', 'FURB140', 'FURB142', 'FURB145', 'FURB148', 'FURB15', 'FURB152', 'FURB154', 'FURB157', 'FURB16', 'FURB161', 'FURB163', 'FURB164', 'FURB166', 'FURB167', 'FURB168', 'FURB169', 'FURB17', 'FURB171', 'FURB177', 'FURB18', 'FURB180', 'FURB181', 'FURB187', 'FURB19', 'FURB192', 'G', 'G0', 'G00', 'G001', 'G002', 'G003', 'G004', 'G01', 'G010', 'G1', 'G10', 'G101', 'G2', 'G20', 'G201', 'G202', 'I', 'I0', 'I00', 'I001', 'I002', 'ICN', 'ICN0', 'ICN00', 'ICN001', 'ICN002', 'ICN003', 'INP', 'INP0', 'INP00', 'INP001', 'INT', 'INT0', 'INT00', 'INT001', 'INT002', 'INT003', 'ISC', 'ISC0', 'ISC00', 'ISC001', 'ISC002', 'ISC003', 'LOG', 'LOG0', 'LOG00', 'LOG001', 'LOG002', 'LOG007', 'LOG009', 'N', 'N8', 'N80', 'N801', 'N802', 'N803', 'N804', 'N805', 'N806', 'N807', 'N81', 'N811', 'N812', 'N813', 'N814', 'N815', 'N816', 'N817', 'N818', 'N9', 'N99', 'N999', 'NPY', 'NPY0', 'NPY00', 'NPY001', 'NPY002', 'NPY003', 'NPY2', 'NPY20', 'NPY201', 'PD', 'PD0', 'PD00', 'PD002', 'PD003', 'PD004', 'PD007', 'PD008', 'PD009', 'PD01', 'PD010', 'PD011', 'PD012', 'PD013', 'PD015', 'PD1', 'PD10', 'PD101', 'PD9', 'PD90', 'PD901', 'PERF', 'PERF1', 'PERF10', 'PERF101', 'PERF102', 'PERF2', 'PERF20', 'PERF203', 'PERF4', 'PERF40', 'PERF401', 'PERF402', 'PERF403', 'PGH', 'PGH0', 'PGH00', 'PGH003', 'PGH004', 'PGH005', 'PIE', 'PIE7', 'PIE79', 'PIE790', 'PIE794', 'PIE796', 'PIE8', 'PIE80', 'PIE800', 'PIE804', 'PIE807', 'PIE808', 'PIE81', 'PIE810', 'PL', 'PLC', 'PLC0', 'PLC01', 'PLC010', 'PLC0105', 'PLC013', 'PLC0131', 'PLC0132', 'PLC02', 'PLC020', 'PLC0205', 'PLC0206', 'PLC0208', 'PLC04', 'PLC041', 'PLC0414', 'PLC0415', 'PLC1', 'PLC19', 'PLC190', 'PLC1901', 'PLC2', 'PLC24', 'PLC240', 'PLC2401', 'PLC2403', 'PLC27', 'PLC270', 'PLC2701', 'PLC28', 'PLC280', 'PLC2801', 'PLC3', 'PLC30', 'PLC300', 'PLC3002', 'PLE', 'PLE0', 'PLE01', 'PLE010', 'PLE0100', 'PLE0101', 'PLE011', 'PLE0115', 'PLE0116', 'PLE0117', 'PLE0118', 'PLE02', 'PLE023', 'PLE0237', 'PLE024', 'PLE0241', 'PLE03', 'PLE030', 'PLE0302', 'PLE0303', 'PLE0304', 'PLE0305', 'PLE0307', 'PLE0308', 'PLE0309', 'PLE06', 'PLE060', 'PLE0604', 'PLE0605', 'PLE064', 'PLE0643', 'PLE07', 'PLE070', 'PLE0704', 'PLE1', 'PLE11', 'PLE113', 'PLE1132', 'PLE114', 'PLE1141', 'PLE1142', 'PLE12', 'PLE120', 'PLE1205', 'PLE1206', 'PLE13', 'PLE130', 'PLE1300', 'PLE1307', 'PLE131', 'PLE1310', 'PLE15', 'PLE150', 'PLE1507', 'PLE151', 'PLE1519', 'PLE152', 'PLE1520', 'PLE17', 'PLE170', 'PLE1700', 'PLE2', 'PLE25', 'PLE250', 'PLE2502', 'PLE251', 'PLE2510', 'PLE2512', 'PLE2513', 'PLE2514', 'PLE2515', 'PLE4', 'PLE47', 'PLE470', 'PLE4703', 'PLR', 'PLR0', 'PLR01', 'PLR012', 'PLR0124', 'PLR013', 'PLR0133', 'PLR02', 'PLR020', 'PLR0202', 'PLR0203', 'PLR0206', 'PLR04', 'PLR040', 'PLR0402', 'PLR09', 'PLR090', 'PLR0904', 'PLR091', 'PLR0911', 'PLR0912', 'PLR0913', 'PLR0914', 'PLR0915', 'PLR0916', 'PLR0917', 'PLR1', 'PLR17', 'PLR170', 'PLR1702', 'PLR1704', 'PLR171', 'PLR1711', 'PLR1714', 'PLR172', 'PLR1722', 'PLR173', 'PLR1730', 'PLR1733', 'PLR1736', 'PLR2', 'PLR20', 'PLR200', 'PLR2004', 'PLR204', 'PLR2044', 'PLR5', 'PLR55', 'PLR550', 'PLR5501', 'PLR6', 'PLR61', 'PLR610', 'PLR6104', 'PLR62', 'PLR620', 'PLR6201', 'PLR63', 'PLR630', 'PLR6301', 'PLW', 'PLW0', 'PLW01', 'PLW010', 'PLW0108', 'PLW012', 'PLW0120', 'PLW0127', 'PLW0128', 'PLW0129', 'PLW013', 'PLW0131', 'PLW0133', 'PLW017', 'PLW0177', 'PLW02', 'PLW021', 'PLW0211', 'PLW024', 'PLW0245', 'PLW04', 'PLW040', 'PLW0406', 'PLW06', 'PLW060', 'PLW0602', 'PLW0603', 'PLW0604', 'PLW064', 'PLW0642', 'PLW07', 'PLW071', 'PLW0711', 'PLW1', 'PLW15', 'PLW150', 'PLW1501', 'PLW1508', 'PLW1509', 'PLW151', 'PLW1510', 'PLW1514', 'PLW16', 'PLW164', 'PLW1641', 'PLW2', 'PLW21', 'PLW210', 'PLW2101', 'PLW29', 'PLW290', 'PLW2901', 'PLW3', 'PLW32', 'PLW320', 'PLW3201', 'PLW33', 'PLW330', 'PLW3301', 'PT', 'PT0', 'PT00', 'PT001', 'PT002', 'PT003', 'PT004', 'PT005', 'PT006', 'PT007', 'PT008', 'PT009', 'PT01', 'PT010', 'PT011', 'PT012', 'PT013', 'PT014', 'PT015', 'PT016', 'PT017', 'PT018', 'PT019', 'PT02', 'PT020', 'PT021', 'PT022', 'PT023', 'PT024', 'PT025', 'PT026', 'PT027', 'PTH', 'PTH1', 'PTH10', 'PTH100', 'PTH101', 'PTH102', 'PTH103', 'PTH104', 'PTH105', 'PTH106', 'PTH107', 'PTH108', 'PTH109', 'PTH11', 'PTH110', 'PTH111', 'PTH112', 'PTH113', 'PTH114', 'PTH115', 'PTH116', 'PTH117', 'PTH118', 'PTH119', 'PTH12', 'PTH120', 'PTH121', 'PTH122', 'PTH123', 'PTH124', 'PTH2', 'PTH20', 'PTH201', 'PTH202', 'PTH203', 'PTH204', 'PTH205', 'PTH206', 'PTH207', 'PYI', 'PYI0', 'PYI00', 'PYI001', 'PYI002', 'PYI003', 'PYI004', 'PYI005', 'PYI006', 'PYI007', 'PYI008', 'PYI009', 'PYI01', 'PYI010', 'PYI011', 'PYI012', 'PYI013', 'PYI014', 'PYI015', 'PYI016', 'PYI017', 'PYI018', 'PYI019', 'PYI02', 'PYI020', 'PYI021', 'PYI024', 'PYI025', 'PYI026', 'PYI029', 'PYI03', 'PYI030', 'PYI032', 'PYI033', 'PYI034', 'PYI035', 'PYI036', 'PYI04', 'PYI041', 'PYI042', 'PYI043', 'PYI044', 'PYI045', 'PYI046', 'PYI047', 'PYI048', 'PYI049', 'PYI05', 'PYI050', 'PYI051', 'PYI052', 'PYI053', 'PYI054', 'PYI055', 'PYI056', 'PYI057', 'PYI058', 'PYI059', 'PYI06', 'PYI062', 'PYI063', 'PYI064', 'PYI066', 'Q', 'Q0', 'Q00', 'Q000', 'Q001', 'Q002', 'Q003', 'Q004', 'RET', 'RET5', 'RET50', 'RET501', 'RET502', 'RET503', 'RET504', 'RET505', 'RET506', 'RET507', 'RET508', 'RSE', 'RSE1', 'RSE10', 'RSE102', 'RUF', 'RUF0', 'RUF00', 'RUF001', 'RUF002', 'RUF003', 'RUF005', 'RUF006', 'RUF007', 'RUF008', 'RUF009', 'RUF01', 'RUF010', 'RUF012', 'RUF013', 'RUF015', 'RUF016', 'RUF017', 'RUF018', 'RUF019', 'RUF02', 'RUF020', 'RUF021', 'RUF022', 'RUF023', 'RUF024', 'RUF026', 'RUF027', 'RUF028', 'RUF029', 'RUF03', 'RUF030', 'RUF031', 'RUF032', 'RUF033', 'RUF034', 'RUF1', 'RUF10', 'RUF100', 'RUF101', 'RUF2', 'RUF20', 'RUF200', 'S', 'S1', 'S10', 'S101', 'S102', 'S103', 'S104', 'S105', 'S106', 'S107', 'S108', 'S11', 'S110', 'S112', 'S113', 'S2', 'S20', 'S201', 'S202', 'S3', 'S30', 'S301', 'S302', 'S303', 'S304', 'S305', 'S306', 'S307', 'S308', 'S31', 'S310', 'S311', 'S312', 'S313', 'S314', 'S315', 'S316', 'S317', 'S318', 'S319', 'S32', 'S320', 'S321', 'S323', 'S324', 'S4', 'S40', 'S401', 'S402', 'S403', 'S404', 'S405', 'S406', 'S407', 'S408', 'S409', 'S41', 'S411', 'S412', 'S413', 'S415', 'S5', 'S50', 'S501', 'S502', 'S503', 'S504', 'S505', 'S506', 'S507', 'S508', 'S509', 'S6', 'S60', 'S601', 'S602', 'S603', 'S604', 'S605', 'S606', 'S607', 'S608', 'S609', 'S61', 'S610', 'S611', 'S612', 'S7', 'S70', 'S701', 'S702', 'SIM', 'SIM1', 'SIM10', 'SIM101', 'SIM102', 'SIM103', 'SIM105', 'SIM107', 'SIM108', 'SIM109', 'SIM11', 'SIM110', 'SIM112', 'SIM113', 'SIM114', 'SIM115', 'SIM116', 'SIM117', 'SIM118', 'SIM2', 'SIM20', 'SIM201', 'SIM202', 'SIM208', 'SIM21', 'SIM210', 'SIM211', 'SIM212', 'SIM22', 'SIM220', 'SIM221', 'SIM222', 'SIM223', 'SIM3', 'SIM30', 'SIM300', 'SIM4', 'SIM40', 'SIM401', 'SIM9', 'SIM91', 'SIM910', 'SIM911', 'SLF', 'SLF0', 'SLF00', 'SLF001', 'SLOT', 'SLOT0', 'SLOT00', 'SLOT000', 'SLOT001', 'SLOT002', 'T', 'T1', 'T10', 'T100', 'T2', 'T20', 'T201', 'T203', 'TCH', 'TCH0', 'TCH00', 'TCH001', 'TCH002', 'TCH003', 'TCH004', 'TCH005', 'TCH01', 'TCH010', 'TD', 'TD0', 'TD00', 'TD001', 'TD002', 'TD003', 'TD004', 'TD005', 'TD006', 'TD007', 'TID', 'TID2', 'TID25', 'TID251', 'TID252', 'TID253', 'TRY', 'TRY0', 'TRY00', 'TRY002', 'TRY003', 'TRY004', 'TRY2', 'TRY20', 'TRY201', 'TRY3', 'TRY30', 'TRY300', 'TRY301', 'TRY302', 'TRY4', 'TRY40', 'TRY400', 'TRY401', 'UP', 'UP0', 'UP00', 'UP001', 'UP003', 'UP004', 'UP005', 'UP006', 'UP007', 'UP008', 'UP009', 'UP01', 'UP010', 'UP011', 'UP012', 'UP013', 'UP014', 'UP015', 'UP017', 'UP018', 'UP019', 'UP02', 'UP020', 'UP021', 'UP022', 'UP023', 'UP024', 'UP025', 'UP026', 'UP027', 'UP028', 'UP029', 'UP03', 'UP030', 'UP031', 'UP032', 'UP033', 'UP034', 'UP035', 'UP036', 'UP037', 'UP038', 'UP039', 'UP04', 'UP040', 'UP041', 'UP042', 'UP043', 'W', 'W1', 'W19', 'W191', 'W2', 'W29', 'W291', 'W292', 'W293', 'W3', 'W39', 'W391', 'W5', 'W50', 'W505', 'W6', 'W60', 'W605', 'YTT', 'YTT1', 'YTT10', 'YTT101', 'YTT102', 'YTT103', 'YTT2', 'YTT20', 'YTT201', 'YTT202', 'YTT203', 'YTT204', 'YTT3', 'YTT30', 'YTT301', 'YTT302', 'YTT303']\n },\n Strictness: {\n oneOf: [{\n description: 'Ban imports that extend into the parent module or beyond.',\n type: 'string',\n enum: ['parents']\n }, {\n description: 'Ban all relative imports.',\n type: 'string',\n enum: ['all']\n }]\n }\n }\n};\nexport default schema;\n//# sourceMappingURL=ruffSchema.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\nimport * as monaco from 'monaco-editor';\nimport { Workspace } from '@astral-sh/ruff-wasm-web';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ActionButton, Button, Icon, Link, Modal, ModalBody, ModalFooter, ModalHeader, Text } from '@deephaven/components';\nimport { vsLinkExternal, vsDiscard } from '@deephaven/icons';\nimport { useDebouncedCallback, usePromiseFactory } from '@deephaven/react-hooks';\nimport { assertNotNull, EMPTY_FUNCTION } from '@deephaven/utils';\nimport Editor from \"../notebook/Editor.js\";\nimport RUFF_DEFAULT_SETTINGS from \"./RuffDefaultSettings.js\";\nimport ruffSchema from \"./ruffSchema.js\";\nimport \"./RuffSettingsModal.css\";\nimport MonacoProviders from \"./MonacoProviders.js\";\nimport { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nvar RUFF_SETTINGS_URI = monaco.Uri.parse('inmemory://dh-config/ruff-settings.json');\nfunction registerRuffSchema() {\n var {\n schemas = []\n } = monaco.languages.json.jsonDefaults.diagnosticsOptions;\n if (!schemas.some(schema => schema.uri === 'json://ruff-schema')) {\n // Register the ruff schema so users get validation and completion\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n schemas: [...schemas, {\n uri: 'json://ruff-schema',\n fileMatch: [RUFF_SETTINGS_URI.toString()],\n schema: ruffSchema\n }]\n });\n }\n}\nfunction getRuffVersion() {\n return _getRuffVersion.apply(this, arguments);\n}\nfunction _getRuffVersion() {\n _getRuffVersion = _asyncToGenerator(function* () {\n yield MonacoProviders.initRuff();\n return \"v\".concat(Workspace.version());\n });\n return _getRuffVersion.apply(this, arguments);\n}\nexport default function RuffSettingsModal(_ref) {\n var {\n text,\n isOpen,\n onClose,\n onSave,\n readOnly = false,\n defaultSettings = RUFF_DEFAULT_SETTINGS\n } = _ref;\n var [isValid, setIsValid] = useState(false);\n var [isDefault, setIsDefault] = useState(false);\n var editorRef = useRef();\n var formattedDefaultSettings = useMemo(() => JSON.stringify(defaultSettings, null, 2), [defaultSettings]);\n var {\n data: ruffVersion\n } = usePromiseFactory(getRuffVersion);\n var [model] = useState(() => monaco.editor.createModel(text, 'json', RUFF_SETTINGS_URI));\n var handleClose = useCallback(() => {\n if (isOpen) {\n onClose();\n editorRef.current = undefined;\n model.dispose();\n }\n }, [isOpen, onClose, model]);\n var handleSave = useCallback(() => {\n if (isOpen) {\n try {\n var _editorRef$current$ge, _editorRef$current;\n onSave(JSON.parse((_editorRef$current$ge = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 || (_editorRef$current = _editorRef$current.getModel()) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getValue()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : ''));\n } catch (_unused) {\n // no-op\n }\n handleClose();\n }\n }, [isOpen, handleClose, onSave]);\n var handleReset = useCallback(() => {\n assertNotNull(model);\n model.setValue(formattedDefaultSettings);\n }, [model, formattedDefaultSettings]);\n var validate = useCallback(val => {\n var _editorRef$current2;\n try {\n JSON.parse(val);\n setIsValid(true);\n } catch (_unused2) {\n setIsValid(false);\n }\n setIsDefault(((_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 || (_editorRef$current2 = _editorRef$current2.getModel()) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getValue()) === formattedDefaultSettings);\n }, [formattedDefaultSettings]);\n var debouncedValidate = useDebouncedCallback(validate, 500, {\n leading: true\n });\n var onEditorInitialized = useCallback(editor => {\n editorRef.current = editor;\n model.onDidChangeContent(() => {\n debouncedValidate(model.getValue());\n });\n registerRuffSchema();\n debouncedValidate(model.getValue());\n }, [debouncedValidate, model]);\n if (!isOpen) {\n return null;\n }\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n centered: true,\n keyboard: true,\n clickOutside: false,\n toggle: handleClose,\n size: \"lg\",\n className: \"ruff-settings-modal\",\n children: [/*#__PURE__*/_jsxs(ModalHeader, {\n closeButton: false,\n children: [/*#__PURE__*/_jsxs(\"span\", {\n className: \"settings-modal-title mr-auto\",\n children: [\"Ruff \", ruffVersion, \" Settings\"]\n }), /*#__PURE__*/_jsx(Link, {\n href: \"https://docs.astral.sh/ruff/settings/\",\n target: \"_blank\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: EMPTY_FUNCTION,\n icon: vsLinkExternal,\n children: \"Settings Docs\"\n })\n }), /*#__PURE__*/_jsxs(ActionButton, {\n isDisabled: isDefault,\n onPress: handleReset,\n children: [/*#__PURE__*/_jsx(Icon, {\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsDiscard\n })\n }), /*#__PURE__*/_jsx(Text, {\n children: \"Reset to default\"\n })]\n })]\n }), /*#__PURE__*/_jsx(ModalBody, {\n style: {\n height: '80vh'\n },\n children: /*#__PURE__*/_jsx(Editor, {\n onEditorInitialized: onEditorInitialized,\n settings: {\n readOnly,\n value: text,\n language: 'json',\n folding: true,\n padding: {\n bottom: 16\n },\n lineNumbers: 'on',\n overviewRulerLanes: 0,\n model\n }\n })\n }), /*#__PURE__*/_jsx(ModalFooter, {\n children: readOnly ? /*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n \"data-dismiss\": \"modal\",\n onClick: handleClose,\n children: \"Close\"\n }) : /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n \"data-dismiss\": \"modal\",\n onClick: handleClose,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n \"data-dismiss\": \"modal\",\n tooltip: !isValid ? 'Cannot save invalid JSON' : undefined,\n disabled: !isValid,\n onClick: handleSave,\n children: \"Save\"\n })]\n })\n })]\n });\n}\n//# sourceMappingURL=RuffSettingsModal.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport IrisGridProxyModel from \"./IrisGridProxyModel.js\";\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nclass IrisGridTestUtils {\n static valueForCell(rowIndex, columnIndex, formatValue) {\n var value = \"\".concat(rowIndex, \",\").concat(columnIndex);\n if (formatValue !== undefined && formatValue) {\n value = \"(\".concat(value, \")\");\n }\n return value;\n }\n constructor(dh) {\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"irisGridUtils\", void 0);\n this.dh = dh;\n this.irisGridUtils = new IrisGridUtils(dh);\n }\n makeColumn(name) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : IrisGridTestUtils.DEFAULT_TYPE;\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new this.dh.Column({\n index,\n name,\n type\n });\n }\n makeRollupTableConfig() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new this.dh.RollupTableConfig();\n }\n makeColumns() {\n var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var columns = [];\n for (var i = 0; i < count; i += 1) {\n columns.push(this.makeColumn(\"\".concat(prefix).concat(i), IrisGridTestUtils.DEFAULT_TYPE, i));\n }\n return columns;\n }\n static makeUserColumnWidths() {\n var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5;\n var userColumnWidths = new Map();\n for (var i = 0; i < count; i += 1) {\n userColumnWidths.set(i.toString(), 100);\n }\n return userColumnWidths;\n }\n makeRow(i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var row = new this.dh.Row({\n index: i,\n name: \"\".concat(i)\n });\n row.get = jest.fn(column => IrisGridTestUtils.valueForCell(i, column.index));\n return row;\n }\n makeFilter() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new this.dh.FilterCondition();\n }\n makeSort() {\n var column = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.makeColumn();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new this.dh.Sort({\n column\n });\n }\n hydrateSort(sortDescriptor, columns) {\n return this.irisGridUtils.hydrateDhSort(columns, sortDescriptor);\n }\n makeTable() {\n var {\n columns = this.makeColumns(),\n size = 1000000000,\n sort = [],\n layoutHints = {}\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var table = new this.dh.Table({\n columns,\n size,\n sort\n });\n table.copy = jest.fn(() => Promise.resolve(table));\n table.freeze = jest.fn(() => Promise.resolve(table));\n table.layoutHints = layoutHints;\n return table;\n }\n makeTreeTable() {\n var columns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.makeColumns();\n var aggregatedColumns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var groupedColumns = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var size = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1000000000;\n var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var layoutHints = arguments.length > 5 ? arguments[5] : undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var table = new this.dh.TreeTable({\n columns,\n aggregatedColumns,\n groupedColumns,\n size,\n sort,\n layoutHints\n });\n table.copy = jest.fn(() => Promise.resolve(table));\n return table;\n }\n static makeInputTable() {\n var keyColumns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var valueColumns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var {\n keys,\n values\n } = [...keyColumns, ...valueColumns].reduce((acc, col) => {\n if (keyColumns.includes(col)) acc.keys.push(col.name);else acc.values.push(col.name);\n return acc;\n }, {\n keys: [],\n values: []\n });\n return {\n keys,\n values\n };\n }\n makeSubscription() {\n var table = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.makeTable();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new this.dh.TableViewportSubscription({\n table\n });\n }\n makeModel() {\n var table = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.makeTable();\n var formatter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var inputTable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var {\n dh\n } = this;\n return new IrisGridProxyModel(dh, table, formatter !== null && formatter !== void 0 ? formatter : new Formatter(dh), inputTable);\n }\n}\n_defineProperty(IrisGridTestUtils, \"DEFAULT_TYPE\", 'java.lang.String');\nexport default IrisGridTestUtils;\n//# sourceMappingURL=IrisGridTestUtils.js.map","/**\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';\n// eslint-disable-next-line no-restricted-imports\nimport * as AdobeReactSpectrum from '@adobe/react-spectrum';\nimport * as DeephavenAuthPlugins from '@deephaven/auth-plugins';\nimport * as DeephavenChart from '@deephaven/chart';\nimport * as DeephavenComponents from '@deephaven/components';\nimport * as DeephavenDashboard from '@deephaven/dashboard';\nimport * as DeephavenDashboardCorePlugins from '@deephaven/dashboard-core-plugins';\nimport * as DeephavenIcons from '@deephaven/icons';\nimport * as DeephavenIrisGrid from '@deephaven/iris-grid';\nimport * as DeephavenJsapiBootstrap from '@deephaven/jsapi-bootstrap';\nimport * as DeephavenJsapiComponents from '@deephaven/jsapi-components';\nimport * as DeephavenJsapiUtils from '@deephaven/jsapi-utils';\nimport * as DeephavenConsole from '@deephaven/console';\nimport DeephavenLog from '@deephaven/log';\nimport * as DeephavenReactHooks from '@deephaven/react-hooks';\nimport * as DeephavenPlugin from '@deephaven/plugin';\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 '@adobe/react-spectrum': AdobeReactSpectrum,\n '@deephaven/auth-plugins': DeephavenAuthPlugins,\n '@deephaven/chart': DeephavenChart,\n '@deephaven/components': DeephavenComponents,\n '@deephaven/console': DeephavenConsole,\n '@deephaven/dashboard': DeephavenDashboard,\n '@deephaven/dashboard-core-plugins': DeephavenDashboardCorePlugins,\n '@deephaven/icons': DeephavenIcons,\n '@deephaven/iris-grid': DeephavenIrisGrid,\n '@deephaven/jsapi-bootstrap': DeephavenJsapiBootstrap,\n '@deephaven/jsapi-components': DeephavenJsapiComponents,\n '@deephaven/jsapi-utils': DeephavenJsapiUtils,\n '@deephaven/log': DeephavenLog,\n '@deephaven/plugin': DeephavenPlugin,\n '@deephaven/react-hooks': DeephavenReactHooks\n};\n//# sourceMappingURL=remote-component.config.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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport Log from '@deephaven/log';\nimport { isAuthPlugin, PluginType, isLegacyAuthPlugin, isLegacyPlugin, isPlugin } from '@deephaven/plugin';\nimport loadRemoteModule from \"./loadRemoteModule.js\";\nvar log = Log.module('@deephaven/app-utils.PluginUtils');\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}\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}\nfunction hasDefaultExport(value) {\n return typeof value === 'object' && value != null && typeof value.default === 'object';\n}\nexport function getPluginModuleValue(value) {\n // TypeScript builds CJS default exports differently depending on\n // whether there are also named exports. If the default is the only\n // export, it will be the value. If there are also named exports,\n // it will be assigned to the `default` property on the value.\n if (isPlugin(value)) {\n return value;\n }\n if (hasDefaultExport(value) && isPlugin(value.default)) {\n return value.default;\n }\n if (isLegacyPlugin(value)) {\n return value;\n }\n return null;\n}\n\n/**\n * Load all plugin modules available based on the manifest file at the provided base URL\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 */\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 version\n } = manifest.plugins[_i];\n if (module.status === 'fulfilled') {\n var moduleValue = getPluginModuleValue(module.value);\n if (moduleValue == null) {\n log.error(\"Plugin '\".concat(_name, \"' is missing an exported value.\"));\n } else {\n pluginMap.set(_name, _objectSpread(_objectSpread({}, moduleValue), {}, {\n version\n }));\n }\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) {\n var corePlugins = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Map();\n var authHandlers = getAuthHandlers(authConfigValues);\n // User plugins take priority over core plugins\n var authPlugins = [...pluginMap.entries(), ...corePlugins.entries()].filter(_ref => {\n var [, plugin] = _ref;\n return isAuthPlugin(plugin) || isLegacyAuthPlugin(plugin);\n }).map(_ref2 => {\n var [name, plugin] = _ref2;\n if (isLegacyAuthPlugin(plugin)) {\n return {\n type: PluginType.AUTH_PLUGIN,\n name,\n component: plugin.AuthPlugin.Component,\n isAvailable: plugin.AuthPlugin.isAvailable\n };\n }\n return plugin;\n });\n\n // Filter the available auth plugins\n var availableAuthPlugins = authPlugins.filter(_ref3 => {\n var {\n isAvailable\n } = _ref3;\n return 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(_ref4 => {\n var {\n name\n } = _ref4;\n return name;\n }).join(', '));\n }\n var {\n name,\n component\n } = availableAuthPlugins[0];\n log.info('Using LoginPlugin', name);\n return component;\n}\n//# sourceMappingURL=PluginUtils.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","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport React, { useEffect, useState } from 'react';\nimport { PluginsContext } from '@deephaven/plugin';\nimport { loadModulePlugins } from \"../plugins/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * PluginsBootstrap component. Handles loading the plugins.\n */\nexport function PluginsBootstrap(_ref) {\n var {\n pluginsUrl,\n getCorePlugins,\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 _yield$getCorePlugins;\n var corePlugins = (_yield$getCorePlugins = yield getCorePlugins === null || getCorePlugins === void 0 ? void 0 : getCorePlugins()) !== null && _yield$getCorePlugins !== void 0 ? _yield$getCorePlugins : [];\n var pluginModules = yield loadModulePlugins(pluginsUrl);\n if (!isCanceled) {\n var corePluginPairs = corePlugins.map(plugin => [plugin.name, plugin]);\n setPlugins(new Map([...corePluginPairs, ...pluginModules]));\n }\n });\n return _loadPlugins.apply(this, arguments);\n }\n loadPlugins();\n return () => {\n isCanceled = true;\n };\n }, [pluginsUrl, getCorePlugins]);\n return /*#__PURE__*/_jsx(PluginsContext.Provider, {\n value: plugins,\n children: children\n });\n}\nexport default PluginsBootstrap;\n//# sourceMappingURL=PluginsBootstrap.js.map","import { useBroadcastChannel } from '@deephaven/jsapi-components';\nimport { BROADCAST_LOGIN_MESSAGE } from '@deephaven/jsapi-utils';\nimport { makeMessage } from '@deephaven/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(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\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 '@deephaven/plugin';\nimport { getAuthPluginComponent } from \"../plugins/index.js\";\nimport LoginNotifier from \"./LoginNotifier.js\";\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\n/** Core auth plugins that are always loaded */\nvar CORE_AUTH_PLUGINS = new Map([['@deephaven/auth-plugins.AuthPluginParent', {\n AuthPlugin: AuthPluginParent\n}], ['@deephaven/auth-plugins.AuthPluginPsk', {\n AuthPlugin: AuthPluginPsk\n}], ['@deephaven/auth-plugins.AuthPluginAnonymous', {\n AuthPlugin: AuthPluginAnonymous\n}]]);\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__*/_jsx(LoadingOverlay, {\n isLoading: isLoading && error == null,\n errorMessage: getErrorMessage(error),\n \"data-testid\": \"auth-bootstrap-loading-error\"\n });\n }\n return /*#__PURE__*/_jsx(AuthComponent, {\n authConfigValues: authConfig,\n children: /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(LoginNotifier, {}), children]\n })\n });\n}\nexport default AuthBootstrap;\n//# sourceMappingURL=AuthBootstrap.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { BasicModal, DebouncedModal, InfoModal, LoadingOverlay, LoadingSpinner } from '@deephaven/components';\nimport { ObjectFetcherContext, ObjectFetchManagerContext, sanitizeVariableDescriptor, useApi, useClient } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport { vsDebugDisconnect } from '@deephaven/icons';\nimport ConnectionContext from \"./ConnectionContext.js\";\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('@deephaven/app-utils.ConnectionBootstrap');\n/**\n * ConnectionBootstrap component. Handles initializing the connection.\n */\nexport function ConnectionBootstrap(_ref) {\n var {\n children\n } = _ref;\n var api = useApi();\n var client = useClient();\n var [error, setError] = useState();\n var [connection, setConnection] = useState();\n var [connectionState, setConnectionState] = useState('connecting');\n var isAuthFailed = connectionState === 'failed';\n var isShutdown = connectionState === 'shutdown';\n var isReconnecting = connectionState === 'reconnecting';\n var isNotConnecting = connectionState === 'not_connecting';\n useEffect(function initConnection() {\n var isCanceled = false;\n function loadConnection() {\n return _loadConnection.apply(this, arguments);\n }\n function _loadConnection() {\n _loadConnection = _asyncToGenerator(function* () {\n try {\n var newConnection = yield client.getAsIdeConnection();\n if (isCanceled) {\n return;\n }\n setConnection(newConnection);\n setConnectionState('connected');\n } catch (e) {\n if (isCanceled) {\n return;\n }\n setError(e);\n setConnectionState('not_connecting');\n }\n });\n return _loadConnection.apply(this, arguments);\n }\n loadConnection();\n return () => {\n isCanceled = true;\n };\n }, [api, client]);\n useEffect(function listenForDisconnect() {\n if (connection == null || isShutdown) return;\n\n // handles the disconnect event\n function handleDisconnect(event) {\n var {\n detail\n } = event;\n log.info('Disconnect', \"\".concat(JSON.stringify(detail)));\n setConnectionState('reconnecting');\n }\n var removerFn = connection.addEventListener(api.IdeConnection.EVENT_DISCONNECT, handleDisconnect);\n return removerFn;\n }, [api, connection, isShutdown]);\n useEffect(function listenForReconnect() {\n if (connection == null || isShutdown) return;\n\n // handles the reconnect event\n function handleReconnect(event) {\n var {\n detail\n } = event;\n log.info('Reconnect', \"\".concat(JSON.stringify(detail)));\n setConnectionState('connected');\n }\n var removerFn = connection.addEventListener(api.CoreClient.EVENT_RECONNECT, handleReconnect);\n return removerFn;\n }, [api, connection, isShutdown]);\n useEffect(function listenForShutdown() {\n if (connection == null) return;\n\n // handles the shutdown event\n function handleShutdown(event) {\n var {\n detail\n } = event;\n log.info('Shutdown', \"\".concat(JSON.stringify(detail)));\n setError(\"Server shutdown: \".concat(detail !== null && detail !== void 0 ? detail : 'Unknown reason'));\n setConnectionState('shutdown');\n }\n var removerFn = connection.addEventListener(api.IdeConnection.EVENT_SHUTDOWN, handleShutdown);\n return removerFn;\n }, [api, connection]);\n useEffect(function listenForAuthFailed() {\n if (connection == null || isShutdown) return;\n\n // handles the auth failed event\n function handleAuthFailed(event) {\n var {\n detail\n } = event;\n log.warn('Reconnect authentication failed', \"\".concat(JSON.stringify(detail)));\n setError(\"Reconnect authentication failed: \".concat(detail !== null && detail !== void 0 ? detail : 'Unknown reason'));\n setConnectionState('failed');\n }\n var removerFn = connection.addEventListener(api.CoreClient.EVENT_RECONNECT_AUTH_FAILED, handleAuthFailed);\n return removerFn;\n }, [api, connection, isShutdown]);\n var objectFetcher = useCallback(/*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(function* (descriptor) {\n assertNotNull(connection, 'No connection available to fetch object with');\n if (typeof descriptor === 'string') {\n throw new Error('No URI resolvers available in Core');\n }\n return connection.getObject(sanitizeVariableDescriptor(descriptor));\n });\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }(), [connection]);\n\n /** We don't really need to do anything fancy in Core to manage an object, just fetch it */\n var objectManager = useMemo(() => ({\n subscribe: (descriptor, onUpdate) => {\n // We send an update with the fetch right away\n onUpdate({\n fetch: () => objectFetcher(descriptor),\n status: 'ready'\n });\n return () => {\n // no-op\n // For Core, if the server dies then we can't reconnect anyway, so no need to bother listening for subscription or cleaning up\n };\n }\n }), [objectFetcher]);\n function handleRefresh() {\n log.info('Refreshing application');\n window.location.reload();\n }\n if (isShutdown || connectionState === 'connecting' || isNotConnecting) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {\n \"data-testid\": \"connection-bootstrap-loading\",\n isLoading: error == null,\n errorMessage: error != null ? \"\".concat(error) : undefined\n });\n }\n return /*#__PURE__*/_jsx(ConnectionContext.Provider, {\n value: connection !== null && connection !== void 0 ? connection : null,\n children: /*#__PURE__*/_jsx(ObjectFetcherContext.Provider, {\n value: objectFetcher,\n children: /*#__PURE__*/_jsxs(ObjectFetchManagerContext.Provider, {\n value: objectManager,\n children: [children, /*#__PURE__*/_jsx(DebouncedModal, {\n isOpen: isReconnecting,\n debounceMs: 1000,\n children: /*#__PURE__*/_jsx(InfoModal, {\n icon: vsDebugDisconnect,\n title: /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(LoadingSpinner, {}), \" Attempting to reconnect...\"]\n }),\n subtitle: \"Please check your network connection.\"\n })\n }), /*#__PURE__*/_jsx(BasicModal, {\n confirmButtonText: \"Refresh\",\n onConfirm: handleRefresh,\n isOpen: isAuthFailed,\n headerText: \"Authentication failed\",\n bodyText: \"Credentials are invalid. Please refresh your browser to try and reconnect.\"\n })]\n })\n })\n });\n}\nexport default ConnectionBootstrap;\n//# sourceMappingURL=ConnectionBootstrap.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","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { GLOBAL_SHORTCUTS } from '@deephaven/components';\nimport { exportLogs, logHistory } from '@deephaven/log';\nimport { store } from '@deephaven/redux';\nexport function createExportLogsContextAction(metadata) {\n var isGlobal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return {\n action: () => {\n exportLogs(logHistory, _objectSpread(_objectSpread({}, metadata), {}, {\n userAgent: navigator.userAgent\n }), store.getState());\n },\n shortcut: GLOBAL_SHORTCUTS.EXPORT_LOGS,\n isGlobal\n };\n}\nexport default createExportLogsContextAction;\n//# sourceMappingURL=createExportLogsContextAction.js.map","import React, { useContext } from 'react';\nimport { UserContext, UserOverrideContext, UserPermissionsOverrideContext, getUserFromConfig } from '@deephaven/auth-plugins';\nimport useServerConfig from \"./useServerConfig.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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__*/_jsx(UserContext.Provider, {\n value: user,\n children: children\n });\n}\nexport default UserBootstrap;\n//# sourceMappingURL=UserBootstrap.js.map","import { useContext } from 'react';\nimport { ChartThemeProvider } from '@deephaven/chart';\nimport { MonacoThemeProvider } from '@deephaven/console';\nimport { isExternalThemeEnabled, ThemeProvider } from '@deephaven/components';\nimport { useAppSelector } from '@deephaven/dashboard';\nimport { IrisGridThemeProvider } from '@deephaven/iris-grid';\nimport { PluginsContext, useCustomThemes } from '@deephaven/plugin';\nimport { getSettings } from '@deephaven/redux';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ThemeBootstrap(_ref) {\n var {\n children\n } = _ref;\n var settings = useAppSelector(getSettings);\n\n // The `usePlugins` hook throws if the context value is null. Since this is\n // the state while plugins load asynchronously, we are using `useContext`\n // directly to avoid the exception.\n var pluginModules = useContext(PluginsContext);\n var themes = useCustomThemes(pluginModules);\n var waitForActivation = isExternalThemeEnabled();\n return /*#__PURE__*/_jsx(ThemeProvider, {\n themes: themes,\n waitForActivation: waitForActivation,\n children: /*#__PURE__*/_jsx(ChartThemeProvider, {\n children: /*#__PURE__*/_jsx(MonacoThemeProvider, {\n children: /*#__PURE__*/_jsx(IrisGridThemeProvider, {\n density: settings.gridDensity,\n children: children\n })\n })\n })\n });\n}\nexport default ThemeBootstrap;\n//# sourceMappingURL=ThemeBootstrap.js.map","import React, { useCallback, useMemo, useState } from 'react';\nimport { Provider } from 'react-redux';\nimport { store } from '@deephaven/redux';\nimport '@deephaven/components/scss/BaseStyleSheet.scss';\nimport { ClientBootstrap } from '@deephaven/jsapi-bootstrap';\nimport { useBroadcastLoginListener } from '@deephaven/jsapi-components';\nimport { ContextActions, ContextMenuRoot, FontBootstrap, FontsLoaded } from '@deephaven/components';\nimport PluginsBootstrap from \"./PluginsBootstrap.js\";\nimport AuthBootstrap from \"./AuthBootstrap.js\";\nimport ConnectionBootstrap from \"./ConnectionBootstrap.js\";\nimport { getConnectOptions, createExportLogsContextAction } from \"../utils/index.js\";\nimport UserBootstrap from \"./UserBootstrap.js\";\nimport ServerConfigBootstrap from \"./ServerConfigBootstrap.js\";\nimport ThemeBootstrap from \"./ThemeBootstrap.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\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 getCorePlugins,\n serverUrl,\n logMetadata,\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 requestAnimationFrame(() => {\n setLogoutCount(value => value + 1);\n });\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n var contextActions = useMemo(() => [createExportLogsContextAction(logMetadata, true)], [logMetadata]);\n return /*#__PURE__*/_jsxs(Provider, {\n store: store,\n children: [/*#__PURE__*/_jsx(FontBootstrap, {\n fontClassNames: fontClassNames,\n children: /*#__PURE__*/_jsx(PluginsBootstrap, {\n getCorePlugins: getCorePlugins,\n pluginsUrl: pluginsUrl,\n children: /*#__PURE__*/_jsx(ThemeBootstrap, {\n children: /*#__PURE__*/_jsxs(ClientBootstrap, {\n serverUrl: serverUrl,\n options: clientOptions,\n children: [/*#__PURE__*/_jsx(AuthBootstrap, {\n children: /*#__PURE__*/_jsx(ServerConfigBootstrap, {\n children: /*#__PURE__*/_jsx(UserBootstrap, {\n children: /*#__PURE__*/_jsx(ConnectionBootstrap, {\n children: /*#__PURE__*/_jsx(FontsLoaded, {\n children: children\n })\n })\n })\n })\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n })]\n }, logoutCount)\n })\n })\n }), /*#__PURE__*/_jsx(ContextMenuRoot, {})]\n });\n}\nexport default AppBootstrap;\n//# sourceMappingURL=AppBootstrap.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable class-methods-use-this */\n\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport debounce from 'lodash.debounce';\nvar log = Log.module('GrpcFileStorageTable');\n\n/**\n * Implementation of FileStorageTable for gRPC service.\n * Takes a path to specify what root this table should start at.\n */\nexport class GrpcFileStorageTable {\n /**\n * @param storageService The storage service to use\n * @param baseRoot Base root for the service\n * @param root The root path for this storage table\n */\n constructor(storageService) {\n var baseRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : baseRoot;\n _defineProperty(this, \"storageService\", void 0);\n _defineProperty(this, \"baseRoot\", void 0);\n _defineProperty(this, \"root\", void 0);\n _defineProperty(this, \"currentSize\", 0);\n _defineProperty(this, \"currentViewport\", void 0);\n _defineProperty(this, \"listeners\", []);\n _defineProperty(this, \"viewportUpdatePromise\", void 0);\n _defineProperty(this, \"currentViewportData\", void 0);\n /**\n * Map of expanded directory paths to the tables that manage that path.\n * We use a tree of tables to query the server so we just get the directories that are expanded.\n */\n _defineProperty(this, \"childTables\", new Map());\n this.storageService = storageService;\n this.baseRoot = baseRoot;\n this.root = root;\n if (root === baseRoot) {\n this.doRefresh = debounce(this.doRefresh.bind(this), GrpcFileStorageTable.REFRESH_DEBOUNCE);\n }\n }\n removeBaseRoot(filename) {\n return FileUtils.removeRoot(this.baseRoot, filename);\n }\n getViewportData() {\n var _this$viewportUpdateP;\n if (!this.viewportUpdatePromise) {\n this.refreshInternal();\n }\n return (_this$viewportUpdateP = this.viewportUpdatePromise) !== null && _this$viewportUpdateP !== void 0 ? _this$viewportUpdateP : Promise.resolve({\n items: [],\n offset: 0\n });\n }\n getSnapshot(sortedRanges) {\n throw new Error('Method not implemented.');\n }\n get size() {\n return this.currentSize;\n }\n setExpanded(path, expanded) {\n var paths = path.split('/');\n var nextPath = paths.shift();\n if (nextPath === undefined || nextPath === '') {\n nextPath = paths.shift();\n }\n if (nextPath === undefined || nextPath === '') {\n throw new Error(\"Invalid path: \".concat(path));\n }\n var remainingPath = paths.join('/');\n if (expanded) {\n if (!this.childTables.has(nextPath)) {\n var childTable = new GrpcFileStorageTable(this.storageService, this.baseRoot, \"\".concat(this.root, \"/\").concat(nextPath));\n this.childTables.set(nextPath, childTable);\n }\n if (remainingPath) {\n var _childTable = this.childTables.get(nextPath);\n _childTable === null || _childTable === void 0 || _childTable.setExpanded(remainingPath, expanded);\n }\n } else if (this.childTables.has(nextPath)) {\n if (remainingPath) {\n var _childTable2 = this.childTables.get(nextPath);\n _childTable2 === null || _childTable2 === void 0 || _childTable2.setExpanded(remainingPath, expanded);\n } else {\n this.childTables.delete(nextPath);\n }\n }\n if (this.currentViewport) {\n this.refreshInternal();\n }\n }\n collapseAll() {\n this.childTables.clear();\n if (this.currentViewport) {\n this.refreshInternal();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n setSearch(search) {\n throw new Error('Method not implemented.');\n }\n setViewport(viewport) {\n this.currentViewport = viewport;\n this.refreshInternal();\n }\n setFilters() {\n throw new Error('Method not implemented.');\n }\n setSorts() {\n throw new Error('Method not implemented.');\n }\n setReversed() {\n throw new Error('Method not implemented.');\n }\n close() {\n this.listeners = [];\n }\n onUpdate(callback) {\n this.listeners = [...this.listeners, callback];\n return () => {\n this.listeners = this.listeners.filter(other => other !== callback);\n };\n }\n doRefresh(callback) {\n log.debug2('doRefresh', this.root);\n callback(this.fetchData());\n }\n refresh() {\n var _this$viewportUpdateP2;\n log.debug2('refresh', this.root);\n (_this$viewportUpdateP2 = this.viewportUpdatePromise) === null || _this$viewportUpdateP2 === void 0 || _this$viewportUpdateP2.cancel();\n var refreshPromise = new Promise(resolve => {\n this.doRefresh(resolve);\n });\n var viewportUpdatePromise = PromiseUtils.makeCancelable(refreshPromise.then(viewportData => {\n if (this.viewportUpdatePromise !== viewportUpdatePromise) {\n throw new CanceledPromiseError();\n }\n this.currentViewportData = viewportData;\n this.sendUpdate();\n return viewportData;\n }));\n\n // Add a catch here as we're not catching the promises anywhere else\n viewportUpdatePromise.catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Error updating viewport', e);\n }\n });\n this.viewportUpdatePromise = viewportUpdatePromise;\n }\n\n /**\n * Refreshes data, but catches any errors and logs them\n */\n refreshInternal() {\n try {\n this.refresh();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to refresh data', e);\n }\n }\n }\n fetchData() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n currentViewport: viewport\n } = _this;\n if (!viewport) {\n throw new Error('No viewport set');\n }\n\n // First get the root directory contents\n var dirContents = yield _this.storageService.listItems(_this.root);\n var items = dirContents.map(file => ({\n type: file.type,\n filename: _this.removeBaseRoot(file.filename),\n basename: file.basename,\n id: _this.removeBaseRoot(file.filename),\n isExpanded: file.type === 'directory' ? _this.childTables.has(file.basename) : undefined\n })).sort((a, b) => {\n if (a.type !== b.type) {\n return a.type === 'directory' ? -1 : 1;\n }\n return a.basename.localeCompare(b.basename);\n });\n\n // Get the data from all expanded directories\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var {\n basename,\n filename\n } = item;\n if (filename === _this.removeBaseRoot(\"\".concat(_this.root, \"/\").concat(basename)) && item.type === 'directory') {\n var childTable = _this.childTables.get(basename);\n if (childTable != null) {\n childTable.setViewport({\n top: 0,\n bottom: viewport.bottom - i\n });\n // eslint-disable-next-line no-await-in-loop\n var childViewportData = yield childTable.getViewportData();\n items.splice(i + 1, 0, ...childViewportData.items);\n }\n }\n }\n _this.currentSize = items.length;\n log.debug2(_this.root, 'items', items, viewport);\n\n // Slice it to the correct viewport\n items = items.slice(viewport.top, viewport.bottom);\n return {\n items,\n offset: viewport.top\n };\n })();\n }\n sendUpdate() {\n var _this$currentViewport;\n // Retain a reference to it in case a listener gets removed while sending an update\n var {\n listeners\n } = this;\n var data = (_this$currentViewport = this.currentViewportData) !== null && _this$currentViewport !== void 0 ? _this$currentViewport : {\n items: [],\n offset: 0\n };\n for (var i = 0; i < listeners.length; i += 1) {\n listeners[i](data);\n }\n }\n}\n_defineProperty(GrpcFileStorageTable, \"REFRESH_DEBOUNCE\", 50);\nexport default GrpcFileStorageTable;\n//# sourceMappingURL=GrpcFileStorageTable.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport throttle from 'lodash.throttle';\nimport { FileNotFoundError, FileUtils, isFileType } from '@deephaven/file-explorer';\nimport Log from '@deephaven/log';\nimport GrpcFileStorageTable from \"./GrpcFileStorageTable.js\";\nvar log = Log.module('GrpcFileStorage');\nexport class GrpcFileStorage {\n /**\n * FileStorage implementation using gRPC\n * @param storageService Storage service to use\n * @param root Root path for this instance. Should not contain trailing slash.\n */\n constructor(dh, storageService) {\n var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"storageService\", void 0);\n _defineProperty(this, \"tables\", []);\n _defineProperty(this, \"root\", void 0);\n _defineProperty(this, \"refreshTables\", throttle(() => {\n this.tables.forEach(table => table.refresh());\n }, GrpcFileStorage.REFRESH_THROTTLE));\n this.dh = dh;\n this.storageService = storageService;\n this.root = root;\n }\n removeRoot(filename) {\n return FileUtils.removeRoot(this.root, filename);\n }\n addRoot(path) {\n return FileUtils.addRoot(this.root, path);\n }\n createDirectory(path) {\n var _this = this;\n return _asyncToGenerator(function* () {\n yield _this.storageService.createDirectory(_this.addRoot(path));\n _this.refreshTables();\n return {\n type: 'directory',\n id: path,\n filename: path,\n basename: FileUtils.getBaseName(path)\n };\n })();\n }\n getTable() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var table = new GrpcFileStorageTable(_this2.storageService, _this2.root);\n _this2.tables.push(table);\n return table;\n })();\n }\n saveFile(file) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var fileContents = _this3.dh.storage.FileContents.text(file.content);\n yield _this3.storageService.saveFile(_this3.addRoot(file.filename), fileContents, true);\n _this3.refreshTables();\n return file;\n })();\n }\n loadFile(name) {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n var fileContents = yield _this4.storageService.loadFile(_this4.addRoot(name));\n var content = yield fileContents.text();\n return {\n filename: name,\n basename: FileUtils.getBaseName(name),\n content\n };\n })();\n }\n copyFile(name, newName) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n var fileContents = yield _this5.storageService.loadFile(_this5.addRoot(name));\n yield _this5.storageService.saveFile(_this5.addRoot(newName), fileContents, false);\n _this5.refreshTables();\n })();\n }\n deleteFile(name) {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n yield _this6.storageService.deleteItem(_this6.addRoot(name));\n _this6.refreshTables();\n })();\n }\n moveFile(name, newName) {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n yield _this7.storageService.moveItem(_this7.addRoot(name), _this7.addRoot(newName));\n _this7.refreshTables();\n })();\n }\n info(name) {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n var allItems = yield _this8.storageService.listItems(_this8.addRoot(FileUtils.getPath(name)), FileUtils.getBaseName(name));\n if (allItems.length === 0) {\n throw new FileNotFoundError();\n }\n if (allItems.length > 1) {\n log.error('More than one matching file found, should never happen.', allItems);\n throw new Error('More than one matching file found');\n }\n var itemDetails = allItems[0];\n if (!isFileType(itemDetails.type)) {\n throw new Error(\"Unexpected file type: \".concat(itemDetails.type));\n }\n return {\n filename: _this8.removeRoot(itemDetails.filename),\n basename: itemDetails.basename,\n id: _this8.removeRoot(itemDetails.filename),\n type: itemDetails.type\n };\n })();\n }\n}\n_defineProperty(GrpcFileStorage, \"REFRESH_THROTTLE\", 150);\nexport default GrpcFileStorage;\n//# sourceMappingURL=GrpcFileStorage.js.map"],"names":["_excluded","ownKeys","e","r","t","o","_objectSpread","_defineProperty","_toPropertyKey","i","_toPrimitive","_objectWithoutProperties","_objectWithoutPropertiesLoose","n","DHCTabPanels","props","children","keepMountedProp","rest","keepMounted","portalNodeMap","useRef","portalNodes","useMemo","nodes","nextNodeMap","React","child","portal","createHtmlPortalNode","_jsx","InPortal","mappedChildren","newChildren","Item","OutPortal","_jsxs","_Fragment","TabPanels","asyncGeneratorStep","c","u","_asyncToGenerator","_next","_throw","DEFAULT_PATH_IGNORE_LIST","DEFAULT_MAXIMUM_DEPTH","stringifyReplacer","ignoreList","pathMap","key","value","_pathMap$get","currPath","isOnIgnoreList","_loop","v","index","_ret","getReduxDataString","reduxData","_stringify","maximumDepth","stringify","configure","getFormattedMetadata","metadata","formatDate","date","year","month","day","h","m","s","exportLogs","_x","_x2","_x3","_exportLogs","logHistory","fileNamePrefix","zip","JSZip","folder","blob","link","getSelectedItemCountOrAll","size","selection","isSelectionEqual","selectionA","selectionB","isSelectionMaybeInvertedEqual","mapSelection","selectedItemKeys","getItem","mapItem","keys","item","optimizeSelection","totalRecords","getKey","isInverted","optimizedSelection","generateRange","useCallbackWithAction","callback","action","useCallback","result","useChangeEventValueCallback","event","useMappedRef","targetRef","map","ref","useContentRect","identityExtractHTMLElement","x","setX","useState","y","setY","width","setWidth","height","setHeight","contentRect","el","setEl","handleResize","_ref","_firstEntry$contentRe","firstEntry","rect","useResizeObserver","useDelay","delayMs","isDelayed","setIsDelayed","useEffect","timeout","useDependentState","inputValue","state","setState","useEffectNTimesWhen","effectCallback","effectCallbackDependencies","condition","countRef","useIsEqualMemo","isEqual","previousValueRef","currentValue","preventDefault","useFormWithDetachedSubmitButton","enableDefaultFormSubmitBehavior","formId","nanoid","submitButtonRef","buttonEl","_buttonEl$UNSAFE_getD","formProps","submitButtonProps","useMappedSelection","viewportData","selectedKeys","items","useOnScrollRef","onScroll","extractHTMLElement","cleanupRef","_cleanupRef$current","_cleanupRef$current2","element","usePropChangeCallback","propName","onChange","defaultValue","hasDefault","propValue","newValue","useDebouncedValue","debounceMs","isDebouncing","setIsDebouncing","debouncedValue","setDebouncedValue","previousValue","setPreviousValue","previousDebounceMs","setPreviousDebounceMs","isCancelled","timeoutId","useSetAttributesCallback","attributes","selectors","rootEl","targets","target","prop","SPELLCHECK_FALSE_ATTRIBUTE","useSpectrumDisableSpellcheckRef","disableSpellcheck","extractSpectrumHTMLElement","separateSpectrumProps","ariaLabel","ariaLabelledby","ariaDescribedby","ariaHidden","marginX","marginY","minWidth","minHeight","maxWidth","maxHeight","flex","flexGrow","flexShrink","flexBasis","justifySelf","alignSelf","order","gridArea","gridColumn","gridRow","gridColumnStart","gridColumnEnd","gridRowStart","gridRowEnd","position","zIndex","top","bottom","start","end","left","right","isHidden","componentProps","useStringifiedMultiSelection","normalizedItems","defaultSelectedKeys","disabledKeys","selectedStringKeys","itemSelectionToStringSet","defaultSelectedStringKeys","disabledStringKeys","onStringSelectionChange","actualKeys","getItemKey","ThemePicker","selectedThemeKey","setSelectedThemeKey","themes","useTheme","onSelectionChange","Picker","Logo","className","style","classNames","logger","Log","useExternalTheme","setResult","isEnabled","isExternalThemeEnabled","handleExternalThemeData","externalThemeData","themeData","parseExternalThemeData","onMessage","parent","getWindowParent","MSG_REQUEST_SET_THEME","isExternalThemeData","requestExternalThemeData","err","FontsLoadedContext","createContext","FontBootstrap","fontClassNames","isLoaded","setIsLoaded","FontsLoaded","isFontsLoaded","useContext","LoadingOverlay","_excluded2","ComboBoxNormalized","UNSAFE_className","_usePickerNormalizedP","usePickerNormalizedProps","forceRerenderKey","pickerProps","_createElement","SpectrumComboBox","cl","ListViewWrapper","_styleProps$minHeight","_listViewProps$densit","ariaLabelProps","styleProps","EMPTY_FUNCTION","listViewProps","scale","useSpectrumThemeProvider","scrollRef","contentRectRef","Flex","SpectrumListView","ListView","tooltip","spectrumListViewProps","tooltipOptions","normalizeTooltipOptions","wrappedItems","wrapItemChildren","ListViewNormalized","showItemIcons","actions","renderNormalizedItem","useRenderNormalizedItem","View","forwardRef","forwardedRef","backgroundColor","borderColor","borderStartColor","borderEndColor","borderTopColor","borderBottomColor","borderXColor","borderYColor","UNSAFE_style","direction","useLocale","borderStyle","colorValueStyle","SpectrumView","CheckboxGroup","wrappedChildren","ensureArray","isElementOfType","Checkbox","SpectrumCheckboxGroup","ActionButtonDialogTrigger","icon","isQuiet","labelText","onOpenChange","iconClassName","DialogTrigger","ActionButton","Icon","FontAwesomeIcon","Text","Tooltip","ConfirmationDialog","heading","confirmationButtonLabel","onCancel","onConfirm","Dialog","Heading","styles","Divider","Content","Form","ButtonGroup","SpectrumButton","ConfirmActionButton","_onConfirm","renderDialog","close","vsTrash","ACTION_ICON_HEIGHT","IconActionButton","label","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","Component","memoize","options","input","option","popperOptions","debounce","title","menuIsOpen","isValid","filter","_this$popper$current","filteredOptions","perfectMatch","_this$input$current","keyboardOptionIndex","newKeyboardOptionIndex","onEnter","_this$input$current2","_this$input$current3","_this$popper$current2","_this$popper$current3","focusInput","_this$input$current4","_this$menuContainer$c","inputWidth","noMatchText","inputPlaceholder","disabled","defaultTitle","spellCheck","dataTestId","invalid","Popper","AutoResizeTextarea","propsValue","placeholder","delimiter","id","setValue","isPastedChange","setIsPastedChange","explode","string","implode","reCalculateLayout","resizedHeight","handleChange","handleFocus","handleMouseDown","handleBlur","handlePaste","DebouncedModal","blockInteraction","isOpen","debouncedIsOpen","InfoModal","subtitle","Modal","ModalBody","noActions","BulkActionBar","selectedItemCount","onClearSelection","ActionBar","commonStyles","log","ContextMenu","PureComponent","_this$container$curre","onMenuOpened","prevProps","prevState","activeSubMenu","_this$container$curre2","_this$container$curre3","keyboardIndex","mouseIndex","menuItems","ContextActionUtils","nonPromiseItems","menuItem","promise","cancellablePromise","PromiseUtils","resolvedMenuItems","pendingItems","error","parentRect","_this$container$curre4","_this$container$curre5","_this$container$curre6","_this$container$curre7","updatePosition","subMenuParentWidth","subMenuParentHeight","oldTop","oldLeft","hasOverflow","isContextMenuChild","oldFocus","newFocus","openSubMenu","newSubMenu","closeAll","closeMenu","onMenuClosed","closeAllMenus","focusIndex","menuItemElements","subMenuTop","subMenuLeft","menuItemElement","ContextMenuItem","pendingElement","LoadingSpinner","menuStyle","showSubmenu","verifiedTop","verifiedLeft","ContextMenuRoot","mouseEvent","contextActions","menu","Collapse","elem","scrollBarWidth","autoFocusOnShow","_children","inTransition","CSSTransition","TIME_PATTERN","EXAMPLES","fixIncompleteValue","TimeInput","allowValueWrapping","onFocus","onBlur","onSelect","TimeUtils","parsedValueRef","_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","fixedValue","handleSelect","MaskedInput","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","DropdownMenu","vsCheck","time","DATE_PATTERN","DATE_FORMAT","DateInput","setSelection","NAVIGATION_SHORTCUTS","ShortcutRegistry","MODIFIER","KEY","EditableItemList","isInvalid","onAdd","onDelete","validate","inputError","setInputError","selectedRanges","setSelectedRanges","handleSelectionChange","ranges","handleDelete","RangeUtils","handleAdd","validationError","handleInputChange","handleInputFocus","handleInputKeyDown","containerHeight","clamp","ItemList","Button","vsAdd","ErrorView","message","isExpandedProp","type","isExpandable","setIsExpandable","isExpanded","setIsExpanded","viewRef","textRef","newIsExpandable","debouncedHandleResize","useDebouncedCallback","useLayoutEffect","vsWarning","CopyButton","vsDiffRemoved","vsDiffAdded","HierarchicalCheckboxMenu","valueMap","includesTrue","includesFalse","onUpdateValueMap","parentSelected","newChildValue","_","currentChildren","_parentSelected","copy","_ref2","menuText","NavTab","memo","tab","onClose","isActive","activeRef","isDraggable","renderAfterTabContent","isClosable","iconElem","Draggable","provided","snapshot","vsClose","ContextActions","DashboardList","tabs","EMPTY_ARRAY","searchText","setSearchText","focusedIndex","setFocusedIndex","searchField","listRef","itemRefs","_searchField$current","_itemRefs$current$foc","handleSearchChange","handleTabSelect","filteredTabs","a","b","_a$title$localeCompar","handleSearchKeyDown","prev","selectedIndex","tabElements","_tab$key","errorElement","SearchInput","GLOBAL_SHORTCUTS","CLICK_TIMEOUT","START_SPEED","ACCELERATION","isScrolledLeft","isScrolledRight","makeBaseContextActions","_i","NavTabList","activeKey","onReorder","makeContextActions","containerRef","isOverflowing","setIsOverflowing","isDashboardTabMenuShown","setIsDashboardTabMenuShown","disableScrollLeft","setDisableScrollLeft","disableScrollRight","setDisableScrollRight","onDragEnd","DragUtils","handleScroll","shouldDisableScrollLeft","shouldDisableScrollRight","continuousScrollRef","handleLeftClick","handleRightClick","handleMouseRepeat","startX","deltaX","prevTimestamp","container","timestamp","startTime","deltaTime","newDeltaX","endContinuousScroll","holdTimer","rAF","handleMouseDownLeft","handleMouseDownRight","_containerRef$current","onWheel","nav","_containerRef$current2","tabContextActionMap","tabContextActions","_makeContextActions","activeTabRef","activeTab","navTabs","handleDashboardMenuClick","handleDashboardMenuSelect","handleDashboardMenuClose","vsChevronLeft","DragDropContext","Droppable","vsChevronRight","vsChevronDown","VOLATILITY","LOW","HIGH","START_Y","GRID_SIZE","PATTERN","PX_PER_SECOND","RESIZE_DEBOUNCE","INTERACTION_TIMEOUT","THEME_COLOR_VARIABLES","getRandomAreaPlotAnimationThemeColors","resolveCssVariablesInRecord","RandomAreaPlotAnimation","activeThemes","themeColors","canvas","shade","setShade","ctx","pattern","lastTimestamp","data","setCanvasSize","_ctx","createPatternFill","foregroundFill","foregroundStroke","canvasPattern","contextPattern","randomWalk","rand","change","initData","startingData","setDataSize","drawAreaLine","path","context","drawGridLines","drawCanvas","background","gridColor","assertNotNull","subPixelMotion","numberOfPoints","pauseAnimation","resetIdleTimeout","startAnimation","handleActivity","_canvas$current","TextWithTooltip","text","placement","stylesCommon","SearchableCombobox","getItemDisplayText","renderItem","displayText","DEFAULT_DELAY_MS","TableViewEmptyState","content","show","setShow","IllustratedMessage","vsEmptyWindow","HANDLE_SIZE","StyleExports","POPOVER_WIDTH","SECONDS_IN_DAY","SNAP_NEAREST_MINUTES","TimeSlider","propStartTime","propEndTime","isStartModified","isEndModified","setStartTime","endTime","setEndTime","track","updateTime","newStartTime","newEndTime","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","onClick","onDismiss","nodeRef","hasButtons","ThemeExport","FadeTransition","DeferredApiBootstrap","onError","widget","api","apiError","useDeferredApi","ApiContext","ObjectFetchManagerContext","useObjectFetch","descriptor","currentUpdate","setCurrentUpdate","objectFetchManager","oldUpdate","useWidget","wrapper","setWrapper","objectFetch","descriptorApi","descriptorApiError","defaultApi","useApi","status","fetch","loadWidgetInternal","_loadWidgetInternal","newWidget","exportedObject","wrapperWithApi","_wrapper$error","makeApiContextWrapper","dh","LOGIN_OPTIONS_REQUEST","SESSION_DETAILS_REQUEST","BROADCAST_CHANNEL_NAME","BROADCAST_LOGIN_MESSAGE","BROADCAST_LOGOUT_MESSAGE","isBroadcastLoginMessage","obj","isMessage","isBroadcastLogoutMessage","NoConsolesError","isNoConsolesError","createSessionWrapper","_createSessionWrapper","connection","details","types","session","config","createCoreClient","websocketUrl","isSessionDetails","requestParentSessionDetails","_requestParentSessionDetails","response","requestParentResponse","getSessionDetails","_getSessionDetails","searchParams","loadSessionWrapper","_x4","_x5","_x6","_loadSessionWrapper","sessionDetails","sessionWrapper","ColumnNameError","TableDisconnectError","useTable","table","firstRow","lastRow","columnNames","columns","setColumns","setData","columnError","setColumnError","tableError","setTableError","handleUpdate","detail","column","handleDisconnect","handleReconnect","useTableListener","useTableColumn","columnName","SIZE_LIMIT","TableInput","_table$size","_error$message","settings","tablePromise","parentRef","formatter","columnFormats","FormatterUtils","dateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","Formatter","searchValue","setSearchValue","setTable","itemCount","formatValue","updatedSelection","removedItems","isSelected","initTable","resolved","cancelablePromise","_listRef$current","selectedValue","handleSelectAll","values","handleClearSelection","handleViewportChange","handleChildBlur","_parentRef$current","relatedTarget","isEmpty","SelectValueList","ComboBox","_usePickerProps","usePickerProps","onInputChangeInternal","onSearchTextChange","isOpenRef","inputValueRef","onInputChange","menuTrigger","_pickerProps$onOpenCh","_props$density","keyColumnName","labelColumnName","iconColumnName","itemHeight","LIST_VIEW_ROW_HEIGHTS","useFormatter","deserializeRow","useItemRowDeserializer","useViewportData","isJavaObject","defaultFormatValue","TableDropdown","maxSize","setValues","tableColumn","subscription","newValues","row","_row$get","allValues","newSelectedValue","newSelectedIndex","Select","Option","useBroadcastChannel","onEvent","name","channel","handleEvent","useBroadcastLoginListener","onLogin","onLogout","useCheckIfExistsValue","isCaseSensitive","tableUtils","useTableUtils","valueTrimmed","setValueTrimmed","valueTrimmedDebounced","trimAndUpdateValue","valueExistsData","valueExistsIsLoading","usePromiseFactory","valueExists","DEBOUNCE_VIEWPORT_SEARCH_MS","useDebouncedViewportSearch","applyFiltersAndRefresh","debouncedSearch","searchTextTrimmed","DEBOUNCE_MS","useDebouncedViewportSelectionFilter","shouldSelectAllOnNoSelection","mapItemToValue","valuesSelection","createKeyedItemKey","debouncedValuesSelection","memoValuesSelection","createSelectedValuesFilter","useFilteredItemsWithDefaultValue","displayProp","defaultDisplayValue","searchTextRef","isLoading","useGetItemPosition","topOffset","rowIndex","defaultItemOffset","useNotNullOrEmptyFilter","conditionOperator","notNullOrEmptyFilterCondition","createNotNullOrEmptyFilterCondition","createFilterConditionFactory","usePickerWithSelectedValues","maybeTable","filterConditionFactories","trimSearchText","timeZone","usePickerItemScale","appliedSearchText","setAppliedSearchText","applySearchText","searchTextMaybeTrimmed","selectedKey","setSelectedKey","selectedValueMap","setSelectedValueMap","isApplyingFilter","SEARCH_DEBOUNCE_MS","searchTextExists","searchTextFilter","createSearchTextFilter","excludeSelectedValuesFilter","listTable","useWidgetClose","list","VIEWPORT_SIZE","VIEWPORT_PADDING","hasSearchTextWithZeroResults","searchTextIsInSelectedValues","onDebouncedSearchTextChange","setSelectedKeyOnNextFrame","onSelectKey","next","onAddValues","onRemoveValues","useFilterConditionFactories","useViewportFilter","useSelectDistinctTable","_len","_key","selectDistinct","_table$selectDistinct","distinctTable","isError","useShowOnlyEmptyFilter","isOn","createColumnCondition","createShowOnlyEmptyFilterCondition","useValueFilter","operator","createValueFilter","useCustomThemes","pluginModules","isExternalThemePending","getThemeDataFromPlugins","WidgetView","plugins","usePlugins","plugin","isWidgetPlugin","p","useDashboardPanel","dashboardProps","componentName","component","supportedTypes","hydrate","dehydrate","layout","registerComponent","handlePanelOpen","dragEvent","panelId","isSupportedType","root","LayoutUtils","usePanelRegistration","usePanelOpenListener","useDashboardPluginData","dashboardId","pluginId","dispatch","useDispatch","useSelector","store","getPluginDataForDashboard","newData","setDashboardPluginData","usePluginsElementMap","elementPlugins","getPluginsElementMap","isAuthPlugin","authPlugin","AUTH_HANDLER_TYPE_ANONYMOUS","AUTH_HANDLER_TYPE_PSK","AuthenticationError","AuthPluginBase","getLoginOptions","client","useClient","setError","isLoggedIn","setIsLoggedIn","isCanceled","verifyNotCanceled","CanceledPromiseError","login","_login","loginOptions","_getErrorMessage","getErrorMessage","permissionsOverrides","UserPermissionsOverrideContext","AuthPluginAnonymous","authHandlers","isLoginOptions","_getLoginOptions","getWindowAuthProvider","_URLSearchParams$get","AuthPluginParent","LoginForm","errorMessage","isLoggingIn","_onSubmit","Login","logoPath","AUTH_TYPE","PSK_QUERY_PARAM_KEY","PSK_TOKEN_KEY","getWindowToken","clearWindowToken","url","readCookieToken","_Cookies$get","Cookies","storeCookieToken","token","inputField","loginPromise","isInputRequired","setIsInputRequired","setIsLoggingIn","setToken","loginToken","showError","newLoginPromise","cancelLogin","newToken","initialLogin","_initialLogin","_getWindowToken","initialToken","handleSubmit","_inputField$current","AuthPluginPsk","getAppInitValue","serverConfig","getUserFromConfig","_getValue","_getValue2","_getValue$split","_getValue3","overrides","getValue","getBooleanValue","operateAs","groups","canCopy","canDownloadCsv","canUsePanels","canLogout","MockChartModel","ChartModel","defaultChartTheme","offset","steps","dates","smooth","linear","startDate","series","erroryforward","errorybackward","errory","series1","areaPattern","trendLine","series2","line","errorBand","ChartUtils","filterFields","MonacoThemeProvider","MonacoUtils","schema","RUFF_SETTINGS_URI","monaco.Uri","registerRuffSchema","schemas","monaco.languages","ruffSchema","getRuffVersion","_getRuffVersion","MonacoProviders","Workspace","RuffSettingsModal","onSave","readOnly","defaultSettings","RUFF_DEFAULT_SETTINGS","setIsValid","isDefault","setIsDefault","editorRef","formattedDefaultSettings","ruffVersion","model","monaco.editor","handleClose","handleSave","_editorRef$current$ge","_editorRef$current","handleReset","val","_editorRef$current2","debouncedValidate","onEditorInitialized","editor","ModalHeader","Link","vsLinkExternal","vsDiscard","Editor","ModalFooter","IrisGridTestUtils","columnIndex","IrisGridUtils","count","prefix","userColumnWidths","sortDescriptor","sort","layoutHints","aggregatedColumns","groupedColumns","keyColumns","valueColumns","acc","col","inputTable","IrisGridProxyModel","resolve","react","ReactDOM","redux","reactRedux","AdobeReactSpectrum","DeephavenAuthPlugins","DeephavenChart","DeephavenComponents","DeephavenConsole","DeephavenDashboard","DeephavenDashboardCorePlugins","DeephavenIcons","DeephavenIrisGrid","DeephavenJsapiBootstrap","DeephavenJsapiComponents","DeephavenJsapiUtils","DeephavenLog","DeephavenPlugin","DeephavenReactHooks","requires","createRequires","loadRemoteModule","createLoadRemoteModule","loadModulePlugin","_loadModulePlugin","pluginUrl","myModule","loadJson","_loadJson","jsonUrl","res","hasDefaultExport","getPluginModuleValue","isPlugin","isLegacyPlugin","loadModulePlugins","_loadModulePlugins","modulePluginsUrl","manifest","pluginPromises","main","pluginMainUrl","pluginMap","module","_name","version","moduleValue","getAuthHandlers","authConfigValues","_authConfigValues$get","_authConfigValues$get2","getAuthPluginComponent","corePlugins","authPlugins","isLegacyAuthPlugin","PluginType","availableAuthPlugins","isAvailable","_ref4","RemoteComponent","createRemoteComponent","PluginsBootstrap","pluginsUrl","getCorePlugins","setPlugins","loadPlugins","_loadPlugins","_yield$getCorePlugins","corePluginPairs","PluginsContext","LoginNotifier","makeMessage","CORE_AUTH_PLUGINS","AuthBootstrap","authConfig","setAuthConfig","loadAuthConfigValues","_loadAuthConfigValues","newAuthConfigValues","AuthComponent","ConnectionBootstrap","setConnection","connectionState","setConnectionState","isAuthFailed","isShutdown","isReconnecting","isNotConnecting","loadConnection","_loadConnection","newConnection","removerFn","handleShutdown","handleAuthFailed","objectFetcher","sanitizeVariableDescriptor","objectManager","onUpdate","handleRefresh","ConnectionContext","ObjectFetcherContext","vsDebugDisconnect","BasicModal","getBaseUrl","apiUrl","getEnvoyPrefix","getConnectOptions","envoyPrefix","createExportLogsContextAction","isGlobal","UserBootstrap","useServerConfig","UserOverrideContext","user","UserContext","ThemeBootstrap","useAppSelector","getSettings","waitForActivation","ThemeProvider","ChartThemeProvider","IrisGridThemeProvider","AppBootstrap","serverUrl","logMetadata","clientOptions","logoutCount","setLogoutCount","Provider","ClientBootstrap","ServerConfigBootstrap","GrpcFileStorageTable","storageService","baseRoot","filename","FileUtils","_this$viewportUpdateP","sortedRanges","expanded","paths","nextPath","remainingPath","childTable","_childTable","_childTable2","search","viewport","other","_this$viewportUpdateP2","refreshPromise","viewportUpdatePromise","_this","dirContents","file","basename","childViewportData","_this$currentViewport","listeners","GrpcFileStorage","throttle","_this2","_this3","fileContents","_this4","newName","_this5","_this6","_this7","_this8","allItems","FileNotFoundError","itemDetails","isFileType"],"mappings":"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AQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,QAAS,SAAU,IAAK,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,KAAM,MAAO,OAAQ,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,IAAK,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,MAAO,OAAQ,QAAS,SAAU,SAAU,OAAQ,QAAS,SAAU,SAAU,OAAQ,QAAS,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,IAAK,KAAM,MAAO,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,MAAO,OAAQ,KAAM,MAAO,OAAQ,QAAS,QAAS,QAAS,MAAO,OAAQ,QAAS,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,IAAK,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,KAAM,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,KAAM,MAAO,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,KAAM,MAAO,OAAQ,KAAM,MAAO,OAAQ,QAAS,QAAS,OAAQ,QAAS,SAAU,UAAW,UAAW,UAAW,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,OAAQ,QAAS,SAAU,UAAW,UAAW,UAAW,SAAU,UAAW,UAAW,UAAW,UAAW,SAAU,UAAW,SAAU,UAAW,UAAW,UAAW,SAAU,UAAW,UAAW,UAAW,UAAW,SAAU,UAAW,UAAW,UAAW,SAAU,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAU,UAAW,UAAW,SAAU,UAAW,UAAW,UAAW,SAAU,UAAW,IAAK,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,KAAM,MAAO,OAAQ,KAAM,MAAO,OAAQ,OAAQ,IAAK,KAAM,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,IAAK,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,OAAQ,QAAS,SAAU,KAAM,MAAO,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,MAAO,OAAQ,QAAS,MAAO,OAAQ,QAAS,OAAQ,QAAS,SAAU,UAAW,UAAW,QAAS,SAAU,UAAW,QAAS,SAAU,UAAW,UAAW,UAAW,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,KAAM,MAAO,OAAQ,QAAS,SAAU,UAAW,SAAU,UAAW,UAAW,QAAS,SAAU,UAAW,UAAW,UAAW,QAAS,SAAU,UAAW,UAAW,OAAQ,QAAS,SAAU,UAAW,OAAQ,QAAS,SAAU,UAAW,UAAW,QAAS,SAAU,UAAW,QAAS,SAAU,UAAW,OAAQ,QAAS,SAAU,UAAW,MAAO,OAAQ,QAAS,SAAU,UAAW,UAAW,SAAU,UAAW,UAAW,UAAW,UAAW,QAAS,SAAU,UAAW,SAAU,UAAW,QAAS,SAAU,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,QAAS,SAAU,UAAW,UAAW,SAAU,UAAW,QAAS,SAAU,UAAW,OAAQ,QAAS,SAAU,UAAW,SAAU,UAAW,UAAW,QAAS,SAAU,UAAW,UAAW,QAAS,SAAU,UAAW,UAAW,SAAU,UAAW,QAAS,SAAU,UAAW,SAAU,UAAW,SAAU,UAAW,QAAS,SAAU,UAAW,OAAQ,QAAS,SAAU,UAAW,SAAU,UAAW,UAAW,UAAW,UAAW,UAAW,OAAQ,QAAS,SAAU,UAAW,MAAO,OAAQ,QAAS,SAAU,UAAW,SAAU,UAAW,QAAS,SAAU,UAAW,UAAW,UAAW,QAAS,SAAU,UAAW,QAAS,SAAU,UAAW,SAAU,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,OAAQ,QAAS,SAAU,UAAW,UAAW,SAAU,UAAW,UAAW,SAAU,UAAW,SAAU,UAAW,UAAW,UAAW,OAAQ,QAAS,SAAU,UAAW,SAAU,UAAW,OAAQ,QAAS,SAAU,UAAW,OAAQ,QAAS,SAAU,UAAW,QAAS,SAAU,UAAW,QAAS,SAAU,UAAW,MAAO,OAAQ,QAAS,SAAU,UAAW,SAAU,UAAW,UAAW,UAAW,UAAW,SAAU,UAAW,UAAW,SAAU,UAAW,QAAS,SAAU,UAAW,SAAU,UAAW,QAAS,SAAU,UAAW,QAAS,SAAU,UAAW,UAAW,UAAW,SAAU,UAAW,QAAS,SAAU,UAAW,OAAQ,QAAS,SAAU,UAAW,UAAW,UAAW,SAAU,UAAW,UAAW,QAAS,SAAU,UAAW,OAAQ,QAAS,SAAU,UAAW,QAAS,SAAU,UAAW,OAAQ,QAAS,SAAU,UAAW,QAAS,SAAU,UAAW,KAAM,MAAO,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,IAAK,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,OAAQ,QAAS,SAAU,SAAU,OAAQ,QAAS,SAAU,IAAK,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,KAAM,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,OAAQ,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,OAAQ,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,QAAS,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,OAAQ,QAAS,SAAU,UAAW,UAAW,UAAW,IAAK,KAAM,MAAO,OAAQ,KAAM,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,KAAM,MAAO,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,MAAO,OAAQ,QAAS,SAAU,SAAU,SAAU,OAAQ,QAAS,SAAU,OAAQ,QAAS,SAAU,SAAU,SAAU,OAAQ,QAAS,SAAU,SAAU,KAAM,MAAO,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OA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"}