@deephaven/code-studio 0.77.1-beta.2 → 0.77.1-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/assets/{AppRoot-280e670c.js → AppRoot-731f2be3.js} +3 -3
- package/build/assets/{AppRoot-280e670c.js.map → AppRoot-731f2be3.js.map} +1 -1
- package/build/assets/{Chart-ebd8c605.js → Chart-014140d1.js} +2 -2
- package/build/assets/{Chart-ebd8c605.js.map → Chart-014140d1.js.map} +1 -1
- package/build/assets/{ControlType-f1bb8293.js → ControlType-bc4c99a5.js} +3 -3
- package/build/assets/{ControlType-f1bb8293.js.map → ControlType-bc4c99a5.js.map} +1 -1
- package/build/assets/FontBootstrap-301270dd.css +1 -0
- package/build/assets/{FontBootstrap-753901ab.js → FontBootstrap-c53b2074.js} +2 -2
- package/build/assets/{FontBootstrap-753901ab.js.map → FontBootstrap-c53b2074.js.map} +1 -1
- package/build/assets/{FormatterUtils-29aa8e1a.js → FormatterUtils-80d69a67.js} +2 -2
- package/build/assets/{FormatterUtils-29aa8e1a.js.map → FormatterUtils-80d69a67.js.map} +1 -1
- package/build/assets/{Grid-e1236296.js → Grid-852bd41d.js} +2 -2
- package/build/assets/{Grid-e1236296.js.map → Grid-852bd41d.js.map} +1 -1
- package/build/assets/{GridRenderer-ed7dbad4.js → GridRenderer-a0eb99f6.js} +2 -2
- package/build/assets/{GridRenderer-ed7dbad4.js.map → GridRenderer-a0eb99f6.js.map} +1 -1
- package/build/assets/{IrisGrid-105d172d.js → IrisGrid-2abddbb9.js} +2 -2
- package/build/assets/{IrisGrid-105d172d.js.map → IrisGrid-2abddbb9.js.map} +1 -1
- package/build/assets/{IrisGridModel-61ddc43e.js → IrisGridModel-5e676159.js} +2 -2
- package/build/assets/{IrisGridModel-61ddc43e.js.map → IrisGridModel-5e676159.js.map} +1 -1
- package/build/assets/{IrisGridShortcuts-d4875242.js → IrisGridShortcuts-e8e5a936.js} +2 -2
- package/build/assets/{IrisGridShortcuts-d4875242.js.map → IrisGridShortcuts-e8e5a936.js.map} +1 -1
- package/build/assets/{IrisGridThemeProvider-47181f2a.css → IrisGridThemeProvider-3984e29a.css} +1 -1
- package/build/assets/{IrisGridThemeProvider-b7f4c598.js → IrisGridThemeProvider-ac44d4e8.js} +2 -2
- package/build/assets/{IrisGridThemeProvider-b7f4c598.js.map → IrisGridThemeProvider-ac44d4e8.js.map} +1 -1
- package/build/assets/{MarkdownEditor-f869507d.js → MarkdownEditor-ae519af0.js} +2 -2
- package/build/assets/{MarkdownEditor-f869507d.js.map → MarkdownEditor-ae519af0.js.map} +1 -1
- package/build/assets/{MarkdownNotebook-d2c01a48.js → MarkdownNotebook-25c4457d.js} +2 -2
- package/build/assets/{MarkdownNotebook-d2c01a48.js.map → MarkdownNotebook-25c4457d.js.map} +1 -1
- package/build/assets/{MissingPartitionError-bd4a06dd.js → MissingPartitionError-a843549f.js} +2 -2
- package/build/assets/{MissingPartitionError-bd4a06dd.js.map → MissingPartitionError-a843549f.js.map} +1 -1
- package/build/assets/{StyleGuideRoot-773a2aaf.js → StyleGuideRoot-f281479f.js} +2 -2
- package/build/assets/{StyleGuideRoot-773a2aaf.js.map → StyleGuideRoot-f281479f.js.map} +1 -1
- package/build/assets/{index-470b8a54.css → index-13e1b819.css} +1 -1
- package/build/assets/{index-f720412a.js → index-170c3e27.js} +3 -3
- package/build/assets/{index-f720412a.js.map → index-170c3e27.js.map} +1 -1
- package/build/assets/{index-d7716c14.js → index-2cecc484.js} +2 -2
- package/build/assets/{index-d7716c14.js.map → index-2cecc484.js.map} +1 -1
- package/build/assets/index-3a104f6a.css +1 -0
- package/build/assets/index-c8de27d0.js +2 -0
- package/build/assets/index-c8de27d0.js.map +1 -0
- package/build/assets/{useUser-01f40e41.js → useUser-44ab9c75.js} +2 -2
- package/build/assets/{useUser-01f40e41.js.map → useUser-44ab9c75.js.map} +1 -1
- package/build/index.html +2 -2
- package/package.json +30 -30
- package/build/assets/FontBootstrap-832a937c.css +0 -1
- package/build/assets/index-3ad3aa8a.js +0 -2
- package/build/assets/index-3ad3aa8a.js.map +0 -1
- package/build/assets/index-e500652d.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-c8de27d0.js","sources":["../../../react-hooks/dist/SelectionUtils.js","../../../react-hooks/dist/useCallbackWithAction.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/usePromiseFactory.js","../../../react-hooks/dist/usePropChangeCallback.js","../../../react-hooks/dist/useOnScrollOffsetChangeCallback.js","../../../react-hooks/dist/useSetAttributesCallback.js","../../../react-hooks/dist/useSpectrumDisableSpellcheckRef.js","../../../react-hooks/dist/useWindowedListData.js","../../../components/dist/dialogs/ActionButtonDialogTrigger.js","../../../components/dist/dialogs/ConfirmationDialog.js","../../../components/dist/actions/ConfirmActionButton.js","../../../components/dist/actions/IconActionButton.js","../../../components/dist/BulkActionBar.js","../../../components/dist/EditableItemList.js","../../../components/dist/ErrorBoundary.js","../../../components/dist/TextWithTooltip.js","../../../components/dist/SearchableCombobox.js","../../../components/dist/TableViewEmptyState.js","../../../components/dist/ToastNotification.js","../../../jsapi-bootstrap/dist/useDeferredApi.js","../../../jsapi-bootstrap/dist/DeferredApiBootstrap.js","../../../console/dist/monaco/MonacoThemeProvider.js","../../../jsapi-utils/dist/ConnectionUtils.js","../../../jsapi-components/dist/HookTestUtils.js","../../../jsapi-components/dist/useTableListener.js","../../../jsapi-components/dist/ColumnNameError.js","../../../jsapi-components/dist/TableDisconnectError.js","../../../jsapi-components/dist/useTable.js","../../../jsapi-components/dist/useTableColumn.js","../../../jsapi-components/dist/TableInput.js","../../../jsapi-components/dist/useBroadcastChannel.js","../../../jsapi-components/dist/useBroadcastLoginListener.js","../../../jsapi-components/dist/RefreshTokenUtils.js","../../../jsapi-components/dist/RefreshTokenBootstrap.js","../../../jsapi-components/dist/useFormatter.js","../../../jsapi-components/dist/useTableSize.js","../../../jsapi-components/dist/useInitializeViewportData.js","../../../jsapi-components/dist/useSetPaddedViewportCallback.js","../../../jsapi-components/dist/useViewportData.js","../../../jsapi-components/dist/spectrum/utils/itemUtils.js","../../../jsapi-components/dist/spectrum/utils/useItemRowDeserializer.js","../../../jsapi-components/dist/spectrum/ListView.js","../../../jsapi-components/dist/useTableUtils.js","../../../jsapi-components/dist/useGetItemIndexByValue.js","../../../jsapi-components/dist/spectrum/Picker.js","../../../jsapi-components/dist/useCheckIfExistsValue.js","../../../jsapi-components/dist/useDebouncedViewportSearch.js","../../../jsapi-components/dist/useDebouncedViewportSelectionFilter.js","../../../jsapi-components/dist/useFilterConditionFactories.js","../../../jsapi-components/dist/useFilteredItemsWithDefaultValue.js","../../../jsapi-components/dist/useGetItemPosition.js","../../../jsapi-components/dist/useViewportFilter.js","../../../jsapi-components/dist/useSearchableViewportData.js","../../../jsapi-components/dist/useNotNullOrEmptyFilter.js","../../../jsapi-components/dist/useTableClose.js","../../../jsapi-components/dist/usePickerWithSelectedValues.js","../../../jsapi-components/dist/useSelectDistinctTable.js","../../../jsapi-components/dist/useShowOnlyEmptyFilter.js","../../../jsapi-components/dist/useValueFilter.js","../../../iris-grid/dist/IrisGridTestUtils.js","../../../iris-grid/dist/TableViewportUpdater.js","../../../iris-grid/dist/TreeTableViewportUpdater.js","../../../dashboard/dist/layout/useDashboardPanel.js","../../../dashboard/dist/layout/useLayoutManager.js","../../../dashboard/dist/redux/hooks.js","../../../plugin/dist/WidgetView.js","../../../auth-plugins/dist/AuthPlugin.js","../../../auth-plugins/dist/AuthHandlerTypes.js","../../../auth-plugins/dist/AuthenticationError.js","../../../auth-plugins/dist/AuthPluginBase.js","../../../auth-plugins/dist/AuthPluginAnonymous.js","../../../auth-plugins/dist/AuthPluginParent.js","../../../auth-plugins/dist/LoginForm.js","../../../auth-plugins/dist/Login.js","../../../auth-plugins/dist/AuthPluginPsk.js","../../../auth-plugins/dist/UserUtils.js","../../../app-utils/dist/plugins/remote-component.config.js","../../../app-utils/dist/plugins/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/components/FontsLoaded.js","../../../app-utils/dist/components/UserBootstrap.js","../../../app-utils/dist/components/ThemeBootstrap.js","../../../app-utils/dist/components/AppBootstrap.js"],"sourcesContent":["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 => mapItem(getItem(key))));\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 { 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 shortid from 'shortid';\nfunction preventDefault(event) {\n event.preventDefault();\n}\n/**\n * Returns props to associate a form with a submit button. It generates a unique\n * id that will be assigned to the form `id` attribute and a button `form`\n * attribute. Useful for cases where a submit button exists outside of the form.\n *\n * e.g.\n *\n * const preventDefaultFormSubmit = true;\n * const { formProps, submitButtonProps } = useFormWithDetachedSubmitButton(preventDefaultFormSubmit);\n *\n * <form {...formProps}></form>\n * <button {...submitButtonProps} type=\"submit\">Submit</button>\n *\n * @param enableDefaultFormSubmitBehavior Optionally enable default form submit behavior.\n * @returns props that can be spread on a form component + a submit button component.\n */\nexport default function useFormWithDetachedSubmitButton() {\n var enableDefaultFormSubmitBehavior = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var formId = useMemo(() => \"useSubmitButtonRef-\".concat(shortid()), []);\n var submitButtonRef = useCallback(buttonEl => {\n buttonEl === null || buttonEl === void 0 ? void 0 : buttonEl.UNSAFE_getDOMNode().setAttribute('form', formId);\n }, [formId]);\n var formProps = useMemo(() => ({\n id: formId,\n onSubmit: enableDefaultFormSubmitBehavior ? undefined : preventDefault\n }), [formId, enableDefaultFormSubmitBehavior]);\n var submitButtonProps = useMemo(() => ({\n form: formId,\n ref: submitButtonRef\n }), [formId, submitButtonRef]);\n return {\n formProps,\n submitButtonProps\n };\n}\n//# sourceMappingURL=useFormWithDetachedSubmitButton.js.map","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","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n/* eslint-disable import/prefer-default-export */\nimport { useState, useCallback, useEffect } from 'react';\n\n/**\n * Configuration options for `usePromiseFactory` hook.\n */\n\n/**\n * Return type of `usePromiseFactory` hook.\n */\n\n/**\n * Manages the result of a promise factory function in a synchronous way.\n * @param promiseFactory The factory function which creates the promise to be awaited.\n * @param args arguments to pass to the factory function.\n * @returns object containing resolved data or error information.\n */\nexport default function usePromiseFactory(promiseFactory, args) {\n var {\n autoLoad = true\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var [data, setData] = useState(null);\n var [error, setError] = useState(null);\n var [isLoading, setIsLoading] = useState(false);\n var loadPromise = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n setIsLoading(true);\n try {\n var resolved = yield promiseFactory(...args);\n setData(resolved);\n setError(null);\n } catch (err) {\n setData(null);\n setError(err);\n } finally {\n setIsLoading(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }), [promiseFactory, ...args]);\n useEffect(() => {\n if (autoLoad) {\n loadPromise();\n }\n }, [autoLoad, loadPromise]);\n return {\n data,\n error,\n isError: error != null,\n isLoading,\n reload: loadPromise\n };\n}\n//# sourceMappingURL=usePromiseFactory.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { 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 { useCallback, useRef } from 'react';\n\n/**\n * Returns a callback that transforms a scroll event handler to an offset\n * change handler. Supports an optional debounce as well.\n * @param offsetSize\n * @param onChange\n * @param debounceMs\n */\nexport function useOnScrollOffsetChangeCallback(offsetSize, onChange) {\n var debounceMs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var debounceTimeout = useRef();\n var previousOffsetRef = useRef(0);\n return useCallback(event => {\n // clear previous debounce timer\n window.clearTimeout(debounceTimeout.current);\n debounceTimeout.current = window.setTimeout(() => {\n var offset = Math.floor(event.target.scrollTop / offsetSize);\n if (previousOffsetRef.current !== offset) {\n previousOffsetRef.current = offset;\n onChange(offset);\n }\n }, debounceMs);\n }, [debounceMs, offsetSize, onChange]);\n}\nexport default useOnScrollOffsetChangeCallback;\n//# sourceMappingURL=useOnScrollOffsetChangeCallback.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 { SPELLCHECK_FALSE_ATTRIBUTE } from '@deephaven/utils';\nimport { extractSpectrumHTMLElement } from \"./SpectrumUtils.js\";\nimport useMappedRef from \"./useMappedRef.js\";\nimport useSetAttributesCallback from \"./useSetAttributesCallback.js\";\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","import { useCallback, useMemo, useState } from 'react';\n\n/**\n * Subset of React Stately ListData + bulkUpdate.\n */\n\n/**\n * Manages state associated with an immutable list of data.\n *\n * This hook is a revised version of React Stately's\n * `useListData` hook with a couple of improvements.\n * - Added support for bulk update\n * - Proper memoization of the return object + its members\n * - Using Iterable instead of spread function arguments to avoid stack overflow\n * for large lists\n * - findItem - method to look for item without throwing an exception if it isn't found\n *\n * @param options.getKey Optional function to derive a key from an item in the list\n */\nexport function useWindowedListData() {\n var {\n getKey = defaultGetKey\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var [items, setItems] = useState([]);\n var [selectedKeys, setSelectedKeys] = useState(() => new Set());\n\n /** Determine if key matches an item's key */\n var matchKey = useCallback(key => item => getKey(item) === key, [getKey]);\n\n /** Search for item with given key. Returns null if not found. */\n var findItem = useCallback(key => {\n var _items$find;\n return (_items$find = items.find(matchKey(key))) !== null && _items$find !== void 0 ? _items$find : null;\n }, [items, matchKey]);\n\n /**\n * Get item with the given key. Throws an error if matching item does not exist.\n * Use `findItem` to return null instead of throwing an error.\n */\n var getItem = useCallback(key => {\n var item = findItem(key);\n if (item == null) {\n throw new Error(\"No item found matching key: \".concat(key));\n }\n return item;\n }, [findItem]);\n\n /** Append items to the end of the list */\n var append = useCallback(values => {\n setItems(prevItems => [...prevItems, ...values]);\n }, []);\n\n /** Insert items starting at the given index */\n var insert = useCallback((index, values) => {\n setItems(prevItems => [...prevItems.slice(0, index), ...values, ...prevItems.slice(index)]);\n }, []);\n\n /** Remove items with the given keys */\n var remove = useCallback(keys => {\n var keySet = new Set(keys);\n setItems(prevItems => prevItems.filter(item => !keySet.has(getKey(item))));\n }, [getKey]);\n\n /** Put a given item in the slot corresponding to a given key */\n var update = useCallback((key, item) => {\n var i = items.findIndex(matchKey(key));\n if (i === -1) {\n return;\n }\n setItems(prevItems => [...prevItems.slice(0, i), item, ...prevItems.slice(i + 1)]);\n }, [items, matchKey]);\n\n /**\n * Bulk update items from a map of keys to items. It is optimized to only\n * re-create the list 1x.\n */\n var bulkUpdate = useCallback(itemMap => {\n if (itemMap.size === 0) {\n return;\n }\n var indices = [];\n var indexMap = new Map();\n\n // Build a sorted array of indices for keys we want to update + a map\n // of those indices to their respective keys.\n // eslint-disable-next-line no-restricted-syntax\n for (var _key of itemMap.keys()) {\n var i = items.findIndex(matchKey(_key));\n indices.push(i);\n indexMap.set(i, _key);\n }\n indices.sort((a, b) => a - b);\n var newItems = [];\n\n // Build a new items array replacing any items corresponding to our\n // indices array.\n items.forEach((item, i) => {\n if (indices[0] === i) {\n /* eslint-disable @typescript-eslint/no-non-null-assertion */\n var _key2 = indexMap.get(indices.shift());\n var newItem = itemMap.get(_key2);\n /* eslint-enable @typescript-eslint/no-non-null-assertion */\n\n newItems.push(newItem);\n } else {\n newItems.push(item);\n }\n });\n setItems(newItems);\n }, [items, matchKey]);\n var listData = useMemo(() => ({\n items,\n selectedKeys,\n append,\n bulkUpdate,\n findItem,\n getItem,\n insert,\n remove,\n setItems,\n setSelectedKeys,\n update\n }), [append, bulkUpdate, findItem, getItem, insert, items, remove, setItems, selectedKeys, update]);\n return listData;\n}\n\n/**\n * Default getKey function simply returns item.key if the property exists. If\n * not, an error is thrown.\n * @param item\n */\nexport function defaultGetKey(item) {\n var hasKey = item != null && typeof item === 'object' && 'key' in item;\n if (!hasKey) {\n throw new Error('Item does not have a `key` prop.');\n }\n return item.key;\n}\nexport default useWindowedListData;\n//# sourceMappingURL=useWindowedListData.js.map","var _excluded = [\"ariaLabel\", \"icon\", \"isQuiet\", \"labelText\", \"children\", \"onOpenChange\", \"tooltip\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { ActionButton, DialogTrigger, Icon } from '@adobe/react-spectrum';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Text } from \"../spectrum/index.js\";\nimport { Tooltip } from \"../popper/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { 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(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable react/jsx-props-no-spreading */\n\nimport { Button, ButtonGroup, Content, Dialog, Divider, Form } from '@adobe/react-spectrum';\nimport { useFormWithDetachedSubmitButton } from '@deephaven/react-hooks';\nimport { Heading } from \"../spectrum/index.js\";\nimport styles from \"../SpectrumComponent.module.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { 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(Button, {\n variant: \"secondary\",\n onPress: onCancel,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, _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 { ACTION_ICON_HEIGHT } from '@deephaven/utils';\nimport { ActionButtonDialogTrigger, ConfirmationDialog } from \"../dialogs/index.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(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* eslint-disable react/jsx-props-no-spreading */\nimport { ActionButton, Icon } from '@adobe/react-spectrum';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ACTION_ICON_HEIGHT } from '@deephaven/utils';\nimport { Tooltip } from \"../popper/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { 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(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { ActionBar } from '@adobe/react-spectrum';\nimport commonStyles from \"./SpectrumComponent.module.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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 }));\n}\nexport default BulkActionBar;\n//# sourceMappingURL=BulkActionBar.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 } from \"react/jsx-runtime\";\nimport { 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 Log from '@deephaven/log';\nimport React, { Component } from 'react';\nimport LoadingOverlay from \"./LoadingOverlay.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('ErrorBoundary');\n/**\n * Error boundary for catching render errors in React. Displays an error message if an error is caught by default, or you can specify a fallback component to render.\n * https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary\n */\nexport class ErrorBoundary extends Component {\n static getDerivedStateFromError(error) {\n return {\n error\n };\n }\n constructor(props) {\n super(props);\n this.state = {\n error: undefined\n };\n }\n componentDidCatch(error, errorInfo) {\n var {\n onError\n } = this.props;\n log.error('Error caught by ErrorBoundary', error, errorInfo);\n onError === null || onError === void 0 ? void 0 : onError(error, errorInfo);\n }\n render() {\n var {\n children,\n className,\n fallback\n } = this.props;\n var {\n error\n } = this.state;\n if (error != null) {\n if (fallback != null) {\n return fallback;\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: className,\n children: /*#__PURE__*/_jsx(LoadingOverlay, {\n errorMessage: \"\".concat(error),\n isLoading: false,\n isLoaded: false\n })\n });\n }\n return children;\n }\n}\nexport default ErrorBoundary;\n//# sourceMappingURL=ErrorBoundary.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 } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { 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 /* 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(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* eslint-disable react/jsx-props-no-spreading */\nimport { useCallback } from 'react';\nimport { ComboBox, Item } from '@adobe/react-spectrum';\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(ComboBox, _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 { Content, Heading, Icon, IllustratedMessage } from '@adobe/react-spectrum';\nimport { vsEmptyWindow } from '@deephaven/icons';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { 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","import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { vsClose } from '@deephaven/icons';\nimport Button from \"./Button.js\";\nimport ThemeExport from \"./ThemeExport.js\";\nimport \"./ToastNotification.css\";\nimport { FadeTransition } from \"./transitions/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { 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 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 children: /*#__PURE__*/_jsxs(\"div\", {\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","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport { ApiContext } from \"./ApiBootstrap.js\";\n/**\n * Function to fetch an API based on a provided descriptor object.\n * Depending on the context there may be more properties on the descriptor,\n * providing more information about the object, such as a session ID.\n * @param descriptor Descriptor object to fetch the API from.\n * @returns A promise that resolves to the API instance for the provided variable descriptor.\n */\nexport var DeferredApiContext = /*#__PURE__*/createContext(null);\n\n/**\n * Retrieve the API for the current context, given the widget provided.\n * The API may need to be loaded, and will return `null` until it is ready.\n * @param widget The widget descriptor to use to fetch the API\n * @returns A tuple with the API instance, and an error if one occurred.\n */\nexport function useDeferredApi(widget) {\n var [api, setApi] = useState(null);\n var [error, setError] = useState(null);\n var deferredApi = useContext(DeferredApiContext);\n var contextApi = useContext(ApiContext);\n useEffect(() => {\n if (deferredApi == null) {\n if (contextApi != null) {\n setApi(contextApi);\n setError(null);\n return;\n }\n setApi(null);\n setError(new Error('No API available in useDeferredApi. Was code wrapped in ApiBootstrap or DeferredApiContext.Provider?'));\n return;\n }\n var isCancelled = false;\n function loadApi() {\n return _loadApi.apply(this, arguments);\n }\n function _loadApi() {\n _loadApi = _asyncToGenerator(function* () {\n if (typeof deferredApi === 'function') {\n try {\n var newApi = yield deferredApi(widget);\n if (!isCancelled) {\n setApi(newApi);\n setError(null);\n }\n } catch (e) {\n if (!isCancelled) {\n setApi(null);\n setError(e);\n }\n }\n } else {\n setApi(deferredApi);\n }\n });\n return _loadApi.apply(this, arguments);\n }\n loadApi();\n return () => {\n isCancelled = true;\n };\n }, [contextApi, deferredApi, widget]);\n return [api, error];\n}\nexport default useDeferredApi;\n//# sourceMappingURL=useDeferredApi.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 ? 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 { useEffect } from 'react';\nimport { useTheme } from '@deephaven/components';\nimport MonacoUtils from \"./MonacoUtils.js\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { 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","import { TimeoutError } from '@deephaven/utils';\n\n/** Default timeout for fetching a variable definition */\nexport var FETCH_TIMEOUT = 10000;\n\n/**\n * Fetch the definition for a variable given a connection. Subscribes to field updates and triggers when the variable is found.\n * @param connection Connection to get the variable from\n * @param name Name of the definition to fetch\n * @param timeout Timeout for the fetch\n * @returns Promise the resolves to the variable definition if found, or rejects if there's an error or the timeout has exceeded\n */\nexport function fetchVariableDefinition(connection, name) {\n var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : FETCH_TIMEOUT;\n return new Promise((resolve, reject) => {\n var removeListener;\n var timeoutId = setTimeout(() => {\n var _removeListener;\n (_removeListener = removeListener) === null || _removeListener === void 0 ? void 0 : _removeListener();\n reject(new TimeoutError(\"Timeout looking for variable \".concat(name)));\n }, timeout);\n\n /**\n * Checks if the variable we're looking for is in the changes, and resolves the promise if it does\n * @param changes Variables changes that have occurred\n */\n function handleFieldUpdates(changes) {\n var _removeListener2;\n var definition = changes.created.find(def => def.title === name);\n clearTimeout(timeoutId);\n (_removeListener2 = removeListener) === null || _removeListener2 === void 0 ? void 0 : _removeListener2();\n if (definition != null) {\n resolve(definition);\n } else {\n reject(new Error(\"Variable \".concat(name, \" not found\")));\n }\n }\n removeListener = connection.subscribeToFieldUpdates(handleFieldUpdates);\n });\n}\n//# sourceMappingURL=ConnectionUtils.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 { useEffect } from 'react';\nimport Log from '@deephaven/log';\nvar log = Log.module('useTableListener');\nexport var useTableListener = (eventEmitter, eventName, callback) => useEffect(function initEventEmitter() {\n if (eventEmitter == null) {\n log.debug2('Emitter undefined, skipping addEventListener', eventName);\n return;\n }\n log.debug2('Adding listener', eventName);\n return eventEmitter.addEventListener(eventName, callback);\n}, [eventEmitter, eventName, callback]);\nexport default useTableListener;\n//# sourceMappingURL=useTableListener.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nclass ColumnNameError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isColumnNameError\", true);\n }\n}\nexport default ColumnNameError;\n//# sourceMappingURL=ColumnNameError.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nclass TableDisconnectError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isTableDisconnectError\", true);\n }\n}\nexport default TableDisconnectError;\n//# sourceMappingURL=TableDisconnectError.js.map","import { useCallback, useEffect, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport useTableListener from \"./useTableListener.js\";\nimport ColumnNameError from \"./ColumnNameError.js\";\nimport TableDisconnectError from \"./TableDisconnectError.js\";\nvar log = Log.module('useTable');\nvar useTable = (table, firstRow, lastRow, columnNames) => {\n var dh = useApi();\n var [columns, setColumns] = useState(undefined);\n var [data, setData] = useState([]);\n var [columnError, setColumnError] = useState(null);\n var [tableError, setTableError] = useState(null);\n useEffect(() => {\n if (columnNames === undefined) {\n setColumns(table === null || table === void 0 ? void 0 : table.columns);\n setColumnError(null);\n return;\n }\n try {\n setColumns(table === null || table === void 0 ? void 0 : table.findColumns(columnNames));\n setColumnError(null);\n } catch (e) {\n log.error(\"Column not found\", e, columnNames);\n setColumnError(new ColumnNameError('Invalid columnNames argument'));\n }\n }, [table, columnNames]);\n useEffect(() => {\n if (!columns || !table) {\n log.debug2('Table or column not initialized, skip viewport update.');\n return;\n }\n log.debug2('Setting viewport', firstRow, lastRow);\n table.setViewport(firstRow, lastRow, columns);\n }, [columns, table, firstRow, lastRow]);\n var handleUpdate = useCallback(_ref => {\n var {\n detail\n } = _ref;\n if (!columns) {\n log.error('Columns not initialized.');\n return;\n }\n var viewportData = columns.map(column => detail.rows.map(r => r.get(column)));\n setData(viewportData);\n }, [columns]);\n var handleDisconnect = useCallback(() => {\n setTableError(new TableDisconnectError('Table disconnected'));\n }, []);\n var handleReconnect = useCallback(() => {\n setTableError(null);\n }, []);\n useTableListener(table, dh.Table.EVENT_UPDATED, handleUpdate);\n useTableListener(table, dh.Table.EVENT_DISCONNECT, handleDisconnect);\n useTableListener(table, dh.Table.EVENT_RECONNECT, handleReconnect);\n return {\n columns,\n data,\n error: tableError !== null && tableError !== void 0 ? tableError : columnError\n };\n};\nexport default useTable;\n//# sourceMappingURL=useTable.js.map","import { useMemo } from 'react';\nimport useTable from \"./useTable.js\";\n/**\n * Subscribe to viewport updates on a single table column\n * @param table Table to get the data from\n * @param firstRow First viewport row\n * @param lastRow Last viewport row\n * @param columnName Column to get the data from\n * @returns Column object, data array for the column, error, setViewport method\n */\nvar useTableColumn = (table, firstRow, lastRow, columnName) => {\n var columnNames = useMemo(() => [columnName], [columnName]);\n var {\n columns = [],\n data = [],\n error\n } = useTable(table, firstRow, lastRow, columnNames);\n return {\n column: columns[0],\n data: data[0],\n error\n };\n};\nexport default useTableColumn;\n//# sourceMappingURL=useTableColumn.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { useCallback, useState, useRef, useEffect, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { LoadingOverlay, SearchInput, SelectValueList } from '@deephaven/components';\nimport { PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Formatter, FormatterUtils } from '@deephaven/jsapi-utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport useTableColumn from \"./useTableColumn.js\";\nimport \"./TableInput.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('TableInput');\nvar SIZE_LIMIT = 250;\nfunction TableInput(props) {\n var _table$size, _error$message;\n var {\n className = undefined,\n columnName,\n settings,\n defaultValue = [],\n isInvalid = false,\n onChange = () => false,\n onBlur = () => false,\n table: tablePromise\n } = props;\n var parentRef = useRef(null);\n var dh = useApi();\n var formatter = useMemo(() => {\n var columnFormats = FormatterUtils.getColumnFormats(settings);\n var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);\n var {\n defaultDecimalFormatOptions = {},\n defaultIntegerFormatOptions = {}\n } = settings;\n return new Formatter(dh, columnFormats, dateTimeFormatterOptions, defaultDecimalFormatOptions, defaultIntegerFormatOptions);\n }, [dh, settings]);\n var [searchValue, setSearchValue] = useState('');\n var [selection, setSelection] = useState(new Set(defaultValue));\n var [table, setTable] = useState();\n var listRef = useRef(null);\n var itemCount = Math.min((_table$size = table === null || table === void 0 ? void 0 : table.size) !== null && _table$size !== void 0 ? _table$size : 0, SIZE_LIMIT);\n var {\n column,\n data,\n error\n } = useTableColumn(table, 0, SIZE_LIMIT - 1, columnName);\n var formatValue = useCallback(value => column ? formatter.getFormattedString(value, column.type, column.name) : \"\".concat(value), [column, formatter]);\n var [items, updatedSelection] = useMemo(() => {\n var removedItems = new Set(selection);\n var result = [];\n if (data == null) {\n // Viewport not initialized\n return [result, null];\n }\n data.forEach(v => {\n var value = \"\".concat(v);\n var isSelected = selection.has(value);\n if (isSelected) {\n removedItems.delete(value);\n }\n result.push({\n value,\n displayValue: formatValue(v),\n isSelected\n });\n });\n if (removedItems.size > 0) {\n log.debug2('Selection has items that are missing from the viewport');\n var newSelection = new Set(selection);\n Array.from(removedItems).forEach(value => {\n newSelection.delete(value);\n });\n return [result, newSelection];\n }\n return [result, null];\n }, [data, selection, formatValue]);\n useEffect(() => {\n if (updatedSelection !== null) {\n setSelection(updatedSelection);\n onChange(Array.from(updatedSelection));\n }\n }, [onChange, updatedSelection]);\n var initTable = useCallback( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (promise) {\n try {\n var resolved = yield promise;\n log.debug('Table resolved', resolved);\n setTable(resolved);\n } catch (e) {\n if (PromiseUtils.isCanceled(e)) {\n return;\n }\n log.error(e);\n }\n });\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }(), []);\n useEffect(() => {\n var cancelablePromise = PromiseUtils.makeCancelable(tablePromise);\n initTable(cancelablePromise);\n return () => {\n log.debug2('Cancel table promise');\n cancelablePromise.cancel();\n };\n }, [tablePromise, initTable]);\n\n // Scroll the item matching the input into view\n var handleSearchChange = useCallback(e => {\n var {\n value\n } = e.target;\n setSearchValue(value);\n var index = items.findIndex(item => item.displayValue.includes(value));\n if (index > -1) {\n var _listRef$current;\n log.debug2(\"Found \".concat(value, \" at index \").concat(index));\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollIntoView(index);\n } else {\n log.debug2(\"\".concat(value, \" not found\"));\n }\n }, [items, listRef]);\n var handleSelect = useCallback(index => {\n log.debug('handleSelect', index);\n if (index >= items.length) {\n log.error('Invalid index', index);\n return;\n }\n var selectedValue = items[index].value;\n var newSelection = new Set(selection);\n if (items[index].isSelected) {\n newSelection.delete(selectedValue);\n } else {\n newSelection.add(selectedValue);\n }\n setSelection(newSelection);\n onChange(Array.from(newSelection));\n }, [onChange, items, selection]);\n var handleSelectAll = useCallback(() => {\n var values = items.map(item => item.value);\n var newSelection = new Set(values);\n setSelection(newSelection);\n onChange(values);\n }, [items, onChange]);\n var handleClearSelection = useCallback(() => {\n setSelection(new Set());\n onChange([]);\n }, [onChange]);\n var handleViewportChange = useCallback(() => {\n // no-op\n }, []);\n var handleChildBlur = useCallback(e => {\n var _parentRef$current;\n var {\n relatedTarget\n } = e;\n log.debug('handleChildBlur', relatedTarget, relatedTarget instanceof HTMLElement, parentRef.current, (_parentRef$current = parentRef.current) === null || _parentRef$current === void 0 ? void 0 : _parentRef$current.contains(relatedTarget));\n if (!relatedTarget || parentRef.current && relatedTarget instanceof HTMLElement && !parentRef.current.contains(relatedTarget)) {\n onBlur();\n }\n }, [onBlur]);\n var isEmpty = items.length === 0;\n return /*#__PURE__*/_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 })\n })]\n });\n}\nTableInput.displayName = 'TableInput';\nTableInput.defaultProps = {\n isInvalid: false,\n className: undefined\n};\nexport default TableInput;\n//# sourceMappingURL=TableInput.js.map","import { BROADCAST_CHANNEL_NAME, isMessage } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { useEffect, useMemo } from 'react';\nvar log = Log.module('useBroadcastChannel');\nexport function useBroadcastChannel() {\n var onEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_FUNCTION;\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : BROADCAST_CHANNEL_NAME;\n var channel = useMemo(() => new BroadcastChannel(name), [name]);\n useEffect(() => () => {\n channel.close();\n }, [channel]);\n useEffect(() => {\n function handleEvent(event) {\n var {\n data\n } = event;\n if (!isMessage(data)) {\n log.debug('Ignoring non-deephaven message', data);\n return;\n }\n log.debug('event received', data);\n onEvent(event);\n }\n channel.addEventListener('message', handleEvent);\n return () => {\n channel.removeEventListener('message', handleEvent);\n };\n }, [channel, onEvent]);\n return channel;\n}\nexport default useBroadcastChannel;\n//# sourceMappingURL=useBroadcastChannel.js.map","import { isBroadcastLoginMessage, isBroadcastLogoutMessage } from '@deephaven/jsapi-utils';\nimport { useCallback } from 'react';\nimport useBroadcastChannel from \"./useBroadcastChannel.js\";\nexport function useBroadcastLoginListener(onLogin, onLogout) {\n var onMessage = useCallback(event => {\n if (isBroadcastLoginMessage(event.data)) {\n onLogin === null || onLogin === void 0 ? void 0 : onLogin(event.data);\n } else if (isBroadcastLogoutMessage(event.data)) {\n onLogout === null || onLogout === void 0 ? void 0 : onLogout(event.data);\n }\n }, [onLogin, onLogout]);\n useBroadcastChannel(onMessage);\n}\nexport default useBroadcastLoginListener;\n//# sourceMappingURL=useBroadcastLoginListener.js.map","import { createContext } from 'react';\nimport Cookies from 'js-cookie';\nimport Log from '@deephaven/log';\nexport var REFRESH_TOKEN_KEY = 'io.deephaven.web.client.auth.refreshToken';\nexport var RefreshTokenContext = /*#__PURE__*/createContext(null);\nvar log = Log.module('RefreshTokenUtils');\n\n/**\n * Read the refresh token from our cookie store\n * @returns RefreshToken if it exists, null otherwise\n */\nexport function readRefreshToken() {\n var cookieToken = Cookies.get(REFRESH_TOKEN_KEY);\n try {\n if (cookieToken != null) {\n return JSON.parse(cookieToken);\n }\n } catch (e) {\n log.error('Error parsing refresh token', cookieToken, e);\n }\n return null;\n}\n\n/**\n * Store the provided refresh token as a cookie\n * @param token The refresh token to store\n */\nexport function storeRefreshToken(token) {\n if (token == null) {\n Cookies.remove(REFRESH_TOKEN_KEY);\n return;\n }\n var cookieToken = JSON.stringify({\n bytes: token.bytes,\n expiry: token.expiry\n });\n var expires = new Date(token.expiry);\n Cookies.set(REFRESH_TOKEN_KEY, cookieToken, {\n secure: true,\n sameSite: 'strict',\n expires\n });\n}\n//# sourceMappingURL=RefreshTokenUtils.js.map","import React, { useCallback, useEffect, useState } from 'react';\nimport { useApi, useClient } from '@deephaven/jsapi-bootstrap';\nimport useBroadcastLoginListener from \"./useBroadcastLoginListener.js\";\nimport { readRefreshToken, RefreshTokenContext, storeRefreshToken } from \"./RefreshTokenUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * RefreshTokenBootstrap component. Handles storing and reading the refresh token.\n */\nexport function RefreshTokenBootstrap(_ref) {\n var {\n children\n } = _ref;\n var api = useApi();\n var client = useClient();\n var [token, setToken] = useState(readRefreshToken());\n useEffect(function listenForTokenUpdates() {\n var cleanup = client.addEventListener(api.CoreClient.EVENT_REFRESH_TOKEN_UPDATED, event => {\n var {\n detail: newToken\n } = event;\n storeRefreshToken(newToken);\n setToken(newToken);\n });\n return cleanup;\n }, [api, client, token]);\n var onLogin = useCallback(() => {\n setToken(readRefreshToken());\n }, []);\n var onLogout = useCallback(() => {\n storeRefreshToken(null);\n setToken(null);\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n return /*#__PURE__*/_jsx(RefreshTokenContext.Provider, {\n value: token,\n children: children\n });\n}\nexport default RefreshTokenBootstrap;\n//# sourceMappingURL=RefreshTokenBootstrap.js.map","import { useApi } from '@deephaven/jsapi-bootstrap';\nimport { createFormatterFromSettings } from '@deephaven/jsapi-utils';\nimport { bindAllMethods } from '@deephaven/utils';\nimport { useMemo } from 'react';\n/**\n * Returns a subset of members of a `Formatter` instance. The `Formatter` will be\n * constructed based on the given options or fallback to the configuration found\n * in the current `FormatSettingsContext`. Members that are functions are bound\n * to the `Formatter` instance, so they are safe to destructure. Static methods\n * can still be accessed statically from the `Formatter` class.\n * @param settings Optional settings to use when constructing the `Formatter`\n */\nexport function useFormatter(settings) {\n var dh = useApi();\n var formatter = useMemo(() => {\n var instance = createFormatterFromSettings(dh, settings);\n\n // Bind all methods so we can destructure them\n bindAllMethods(instance);\n return instance;\n }, [dh, settings]);\n var {\n getColumnFormat,\n getColumnFormatMapForType,\n getColumnTypeFormatter,\n getFormattedString\n } = formatter;\n return {\n getColumnFormat,\n getColumnFormatMapForType,\n getColumnTypeFormatter,\n getFormattedString,\n timeZone: formatter.timeZone\n };\n}\nexport default useFormatter;\n//# sourceMappingURL=useFormatter.js.map","import { useCallback, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { getSize } from '@deephaven/jsapi-utils';\nimport useTableListener from \"./useTableListener.js\";\n/**\n * React hook that returns the size of a given table or zero if table is null or\n * undefined. The hook subscribes to the dh.Table.EVENT_SIZECHANGED event and\n * triggers a re-render if any events are received to ensure we have the current\n * size.\n * @param table The table to check the size on.\n */\nexport function useTableSize(table) {\n var [, forceRerender] = useState(0);\n var dh = useApi();\n var onSizeChanged = useCallback(() => {\n forceRerender(i => i + 1);\n }, []);\n useTableListener(table, dh.Table.EVENT_SIZECHANGED, onSizeChanged);\n return getSize(table);\n}\nexport default useTableSize;\n//# sourceMappingURL=useTableSize.js.map","import { useEffect } from 'react';\nimport { generateEmptyKeyedItems } from '@deephaven/jsapi-utils';\nimport { useWindowedListData } from '@deephaven/react-hooks';\nimport Log from '@deephaven/log';\nimport useTableSize from \"./useTableSize.js\";\nvar log = Log.module('useInitializeViewportData');\n\n/**\n * Given an array of items, returns a new array containing the target number of\n * items. If reuseExistingItems is true, existing items will be re-used. If\n * false, all items will be replaced with new, empty items.\n * @param items The array of items to resize.\n * @param targetSize The desired size of the array.\n * @param reuseExistingItems If true, existing items will be re-used. If false,\n * all items will be replaced with new, empty items.\n * @returns The resized array of items.\n */\nfunction resizeItemsArray(_ref) {\n var {\n items,\n targetSize,\n reuseExistingItems\n } = _ref;\n var currentSize = items.length;\n\n // If size isn't changing, do nothing\n if (currentSize === targetSize) {\n return items;\n }\n log.debug('size changed:', {\n currentSize,\n targetSize\n });\n\n // Re-create entire array with empty items\n if (!reuseExistingItems) {\n return Array.from(generateEmptyKeyedItems(0, targetSize - 1));\n }\n\n // Drop extra items\n if (currentSize > targetSize) {\n return items.slice(0, targetSize);\n }\n\n // Add missing items\n return [...items, ...generateEmptyKeyedItems(currentSize, targetSize - 1)];\n}\n\n/**\n * Initializes a ListData instance that can be used for windowed views of a\n * Table. The list must always contain a KeyedItem for every record in the table,\n * so it is pre-populated with empty items that can be updated with real data as\n * the window changes.\n *\n * IMPORTANT: this will create an empty KeyedItem object for every row in the\n * source table. This is intended for \"human\" sized tables such as those used in\n * admin panels. This is not suitable for \"machine\" scale with millions+ rows.\n * @param table The table that will be used to determine the list size.\n * @param reuseItemsOnTableResize Whether to reuse existing items when the table\n * size changes (defaults to false).\n * - If true, existing items will be reused when the table resizes. This is\n * recommended for ticking tables where the data is frequently updated in order\n * to avoid UI flicker.\n * - If false, all of the items will be replaced when the table resizes. This is\n * recommnded for tables that don't change size frequently but may change size\n * due to a user interaction. e.g. Filter via a search input. This avoids a\n * different kind of flicker, where the item values will shift around as the\n * user types. It is less jarring for the items to all reset to empty and then\n * show the new results all at once.\n * @returns a WindowedListData object.\n */\nexport function useInitializeViewportData(table) {\n var reuseItemsOnTableResize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var viewportData = useWindowedListData({});\n\n // If the table changes size, we need to re-initialize it.\n var targetSize = Math.max(0, useTableSize(table));\n\n // Whenever the table reference or size changes, resize the list.\n useEffect(() => {\n viewportData.setItems(resizeItemsArray({\n items: viewportData.items,\n targetSize,\n reuseExistingItems: reuseItemsOnTableResize\n }));\n\n // Intentionally excluding viewportData since it changes on every render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [targetSize, table]);\n return viewportData;\n}\nexport default useInitializeViewportData;\n//# sourceMappingURL=useInitializeViewportData.js.map","import { useCallback } from 'react';\nimport { getSize, padFirstAndLastRow } from '@deephaven/jsapi-utils';\n\n/**\n * Creates a callback function that will set a Table viewport. The callback has\n * a closure over the Table, a desired viewport size, and additional padding.\n * These will be combined with a first row index passed to the callback to\n * calculate the final viewport.\n * @param table Table to call `setViewport` on.\n * @param viewportSize The desired viewport size.\n * @param viewportPadding Padding to add before and after the viewport.\n * @returns A callback function for setting the viewport.\n */\nexport function useSetPaddedViewportCallback(table, viewportSize, viewportPadding) {\n return useCallback(function setPaddedViewport(firstRow) {\n var [first, last] = padFirstAndLastRow(firstRow, viewportSize, viewportPadding, getSize(table));\n table === null || table === void 0 ? void 0 : table.setViewport(first, last);\n }, [table, viewportPadding, viewportSize]);\n}\nexport default useSetPaddedViewportCallback;\n//# sourceMappingURL=useSetPaddedViewportCallback.js.map","import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { defaultRowDeserializer, isClosed, createOnTableUpdatedHandler } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { useOnScrollOffsetChangeCallback } from '@deephaven/react-hooks';\nimport { SCROLL_DEBOUNCE_MS } from '@deephaven/utils';\nimport useInitializeViewportData from \"./useInitializeViewportData.js\";\nimport useSetPaddedViewportCallback from \"./useSetPaddedViewportCallback.js\";\nimport useTableSize from \"./useTableSize.js\";\nimport useTableListener from \"./useTableListener.js\";\nvar log = Log.module('useViewportData');\n/**\n * Sets up state management for windowed Table viewports. Returns a ListData\n * instance for managing items associated with the Table + a `setViewport`\n * callback for changing the current viewport.\n *\n * IMPORTANT: this will create an empty KeyedItem object for every row in the\n * source table. This is intended for \"human\" sized tables such as those used in\n * admin panels. This is not suitable for \"machine\" scale with millions+ rows.\n * @param table The Table to viewport.\n * @param itemHeight The height of each item in the viewport.\n * @param scrollDebounce The number of milliseconds to debounce scroll events.\n * @param viewportSize The number of items to display in the viewport.\n * @param viewportPadding The number of items to fetch at start and end of the viewport.\n * @param deserializeRow A function to deserialize a row from the Table.\n * @param reuseItemsOnTableResize If true, existing items will be re-used when\n * the table size changes.\n * @returns An object for managing Table viewport state.\n */\nexport function useViewportData(_ref) {\n var {\n table,\n itemHeight = 1,\n scrollDebounce = SCROLL_DEBOUNCE_MS,\n viewportSize = 10,\n viewportPadding = 50,\n deserializeRow = defaultRowDeserializer,\n reuseItemsOnTableResize = false\n } = _ref;\n var currentViewportFirstRowRef = useRef(0);\n var viewportData = useInitializeViewportData(table, reuseItemsOnTableResize);\n var setPaddedViewport = useSetPaddedViewportCallback(table, viewportSize, viewportPadding);\n var setViewport = useCallback(firstRow => {\n currentViewportFirstRowRef.current = firstRow;\n if (table && !isClosed(table)) {\n setPaddedViewport(firstRow);\n } else {\n log.debug('setViewport called on closed table.', table);\n }\n }, [table, setPaddedViewport]);\n var applyFiltersAndRefresh = useCallback(filters => {\n if (table && !isClosed(table)) {\n table.applyFilter(filters);\n setViewport(0);\n } else {\n log.debug('applyFiltersAndRefresh called on closed table.', table);\n }\n }, [setViewport, table]);\n var dh = useApi();\n\n // Store the memoized callback in a ref so that changes to `viewportData`\n // don't invalidate the memoization of `onTableUpdated`. This prevents\n // `useTableListener` from unnecessarily re-subscribing to the same event over\n // and over.\n var onTableUpdatedRef = useRef();\n onTableUpdatedRef.current = useMemo(() => createOnTableUpdatedHandler(viewportData, deserializeRow), [deserializeRow, viewportData]);\n var onTableUpdated = useCallback(event => {\n var _onTableUpdatedRef$cu;\n (_onTableUpdatedRef$cu = onTableUpdatedRef.current) === null || _onTableUpdatedRef$cu === void 0 ? void 0 : _onTableUpdatedRef$cu.call(onTableUpdatedRef, event);\n }, []);\n useTableListener(table, dh.Table.EVENT_UPDATED, onTableUpdated);\n var size = useTableSize(table);\n useEffect(() => {\n log.debug('Initializing viewport');\n\n // Hydrate the viewport with real data. This will fetch data from index\n // 0 to the end of the viewport + padding.\n setViewport(0);\n }, [table, setViewport]);\n useEffect(() => {\n setViewport(currentViewportFirstRowRef.current);\n }, [setViewport, size]);\n var onScroll = useOnScrollOffsetChangeCallback(itemHeight, setViewport, scrollDebounce);\n return useMemo(() => ({\n viewportData,\n size,\n table,\n applyFiltersAndRefresh,\n setViewport,\n onScroll\n }), [applyFiltersAndRefresh, onScroll, setViewport, size, table, viewportData]);\n}\nexport default useViewportData;\n//# sourceMappingURL=useViewportData.js.map","/**\n * Get the key column if column name is provided, otherwise use the first column.\n * @param table The table to get the key column from\n * @param keyColumnName The name of the column to use for key data\n * @returns DH Column containing the key values\n */\nexport function getItemKeyColumn(table, keyColumnName) {\n return keyColumnName == null ? table.columns[0] : table.findColumn(keyColumnName);\n}\n\n/**\n * Get the label column if column name is provided, otherwise use the key column.\n * @param table The table to get the label column from\n * @param keyColumn The key column to fallback to if the label column name is not provided\n * @param labelColumnName The name of the column to use for label data\n * @returns DH Column containing the label values\n */\nexport function getItemLabelColumn(table, keyColumn, labelColumnName) {\n return labelColumnName == null ? keyColumn : table.findColumn(labelColumnName);\n}\n//# sourceMappingURL=itemUtils.js.map","import { useCallback, useMemo } from 'react';\nimport { getItemKeyColumn, getItemLabelColumn } from \"./itemUtils.js\";\nfunction defaultFormatKey(value) {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n return String(value);\n}\nfunction defaultFormatValue(value, _columnType) {\n return String(value);\n}\n\n/**\n * Returns a function that deserializes a row into a normalized item data object.\n * @param table The table to get the key and label columns from\n * @param descriptionColumnName The name of the column to use for description data\n * @param iconColumnName The name of the column to use for icon data\n * @param keyColumnName The name of the column to use for key data\n * @param labelColumnName The name of the column to use for label data\n * @param formatValue Optional function to format the label value\n * @returns A function that deserializes a row into a normalized item data object\n */\nexport function useItemRowDeserializer(_ref) {\n var {\n table,\n descriptionColumnName,\n iconColumnName,\n keyColumnName,\n labelColumnName,\n formatValue = defaultFormatValue\n } = _ref;\n var keyColumn = useMemo(() => getItemKeyColumn(table, keyColumnName), [keyColumnName, table]);\n var labelColumn = useMemo(() => getItemLabelColumn(table, keyColumn, labelColumnName), [keyColumn, labelColumnName, table]);\n var descriptionColumn = useMemo(() => descriptionColumnName == null ? null : table.findColumn(descriptionColumnName), [descriptionColumnName, table]);\n var iconColumn = useMemo(() => iconColumnName == null ? null : table.findColumn(iconColumnName), [iconColumnName, table]);\n var deserializeRow = useCallback(row => {\n var key = defaultFormatKey(row.get(keyColumn));\n var content = formatValue(row.get(labelColumn), labelColumn.type);\n var description = descriptionColumn == null ? undefined : formatValue(row.get(descriptionColumn), descriptionColumn.type);\n var icon = iconColumn == null ? undefined : row.get(iconColumn);\n return {\n key,\n content,\n textValue: content,\n description,\n icon\n };\n }, [descriptionColumn, formatValue, iconColumn, keyColumn, labelColumn]);\n return deserializeRow;\n}\nexport default useItemRowDeserializer;\n//# sourceMappingURL=useItemRowDeserializer.js.map","var _excluded = [\"table\", \"keyColumn\", \"labelColumn\", \"iconColumn\", \"settings\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { ListViewNormalized, useSpectrumThemeProvider } from '@deephaven/components';\nimport { LIST_VIEW_ROW_HEIGHTS } from '@deephaven/utils';\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 { useMemo } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { TableUtils } from '@deephaven/jsapi-utils';\n\n/**\n * Get a `TableUtils` instance using `dh` api from the current context.\n */\nexport function useTableUtils() {\n var dh = useApi();\n return useMemo(() => new TableUtils(dh), [dh]);\n}\nexport default useTableUtils;\n//# sourceMappingURL=useTableUtils.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport { useCallback } from 'react';\nimport { useTableUtils } from \"./useTableUtils.js\";\n/**\n * Returns a function that gets the index of the first row containing a column\n * value.\n * @param columnName The name of the column to search\n * @param value The value to search for\n * @param table The table to search in\n * @returns A function that returns the index of the first row containing the\n * matching value, or `null` if no match is found\n */\nexport function useGetItemIndexByValue(_ref) {\n var {\n columnName,\n value,\n table\n } = _ref;\n var tableUtils = useTableUtils();\n return useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n if (table == null || value == null) {\n return null;\n }\n var column = table.findColumn(columnName);\n var columnValueType = tableUtils.getValueType(column.type);\n var index = yield table.seekRow(0, column, columnValueType, value);\n return index === -1 ? null : index;\n }), [columnName, table, tableUtils, value]);\n}\nexport default useGetItemIndexByValue;\n//# sourceMappingURL=useGetItemIndexByValue.js.map","var _excluded = [\"table\", \"keyColumn\", \"labelColumn\", \"iconColumn\", \"settings\", \"onChange\", \"onSelectionChange\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { PickerNormalized, useSpectrumThemeProvider } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { PICKER_ITEM_HEIGHTS, PICKER_TOP_OFFSET } from '@deephaven/utils';\nimport useFormatter from \"../useFormatter.js\";\nimport useGetItemIndexByValue from \"../useGetItemIndexByValue.js\";\nimport { useViewportData } from \"../useViewportData.js\";\nimport { getItemKeyColumn } from \"./utils/itemUtils.js\";\nimport { useItemRowDeserializer } from \"./utils/useItemRowDeserializer.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('jsapi-components.Picker');\nexport function Picker(_ref) {\n var {\n table,\n keyColumn: keyColumnName,\n labelColumn: labelColumnName,\n iconColumn: iconColumnName,\n settings,\n onChange,\n onSelectionChange\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var {\n scale\n } = useSpectrumThemeProvider();\n var itemHeight = PICKER_ITEM_HEIGHTS[scale];\n var {\n getFormattedString: formatValue\n } = useFormatter(settings);\n\n // `null` is a valid value for `selectedKey` in controlled mode, so we check\n // for explicit `undefined` to identify uncontrolled mode.\n var isUncontrolled = props.selectedKey === undefined;\n var [uncontrolledSelectedKey, setUncontrolledSelectedKey] = useState(props.defaultSelectedKey);\n var keyColumn = useMemo(() => getItemKeyColumn(table, keyColumnName), [keyColumnName, table]);\n var deserializeRow = useItemRowDeserializer({\n table,\n iconColumnName,\n keyColumnName,\n labelColumnName,\n formatValue\n });\n var getItemIndexByValue = useGetItemIndexByValue({\n table,\n columnName: keyColumn.name,\n value: isUncontrolled ? uncontrolledSelectedKey : props.selectedKey\n });\n var getInitialScrollPosition = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n var index = yield getItemIndexByValue();\n if (index == null) {\n return null;\n }\n return index * itemHeight + PICKER_TOP_OFFSET;\n }), [getItemIndexByValue, itemHeight]);\n var {\n viewportData,\n onScroll,\n setViewport\n } = useViewportData({\n reuseItemsOnTableResize: true,\n table,\n itemHeight,\n deserializeRow\n });\n var normalizedItems = viewportData.items;\n useEffect(\n // Set viewport to include the selected item so that its data will load and\n // the real `key` will be available to show the selection in the UI.\n function setViewportFromSelectedKey() {\n var isCanceled = false;\n getItemIndexByValue().then(index => {\n if (index == null || isCanceled) {\n return;\n }\n setViewport(index);\n }).catch(err => {\n log.error('Error setting viewport from selected key', err);\n });\n return () => {\n isCanceled = true;\n };\n }, [getItemIndexByValue, settings, setViewport]);\n var onSelectionChangeInternal = useCallback(key => {\n var _ref3;\n // If our component is uncontrolled, track the selected key internally\n // so that we can scroll to the selected item if the user re-opens\n if (isUncontrolled) {\n setUncontrolledSelectedKey(key);\n }\n (_ref3 = onChange !== null && onChange !== void 0 ? onChange : onSelectionChange) === null || _ref3 === void 0 ? void 0 : _ref3(key);\n }, [isUncontrolled, onChange, onSelectionChange]);\n return /*#__PURE__*/_jsx(PickerNormalized\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, props), {}, {\n normalizedItems: normalizedItems,\n showItemIcons: iconColumnName != null,\n getInitialScrollPosition: getInitialScrollPosition,\n onChange: onSelectionChangeInternal,\n onScroll: onScroll\n }));\n}\nexport default Picker;\n//# sourceMappingURL=Picker.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 } from 'react';\nimport { removeNullAndUndefined } from '@deephaven/utils';\nexport function useFilterConditionFactories(maybeTable) {\n for (var _len = arguments.length, filterConditionFactories = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n filterConditionFactories[_key - 1] = arguments[_key];\n }\n return useMemo(() => removeNullAndUndefined(...filterConditionFactories.map(f => f(maybeTable))),\n // Intentionally disabling hooks check so we can spread\n // the array items as dependencies.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [maybeTable, ...filterConditionFactories]);\n}\nexport default useFilterConditionFactories;\n//# sourceMappingURL=useFilterConditionFactories.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(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport { useCallback } 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 { useEffect } from 'react';\n/**\n * Applies a filter to a viewport.\n * @param viewportData Viewport to filter\n * @param filter Filter to apply\n */\nexport function useViewportFilter(viewportData, filter) {\n var {\n applyFiltersAndRefresh\n } = viewportData;\n useEffect(() => {\n applyFiltersAndRefresh(filter);\n }, [applyFiltersAndRefresh, filter]);\n}\nexport default useViewportFilter;\n//# sourceMappingURL=useViewportFilter.js.map","import { useMemo, useState } from 'react';\nimport { createSearchTextFilter } from '@deephaven/jsapi-utils';\nimport { SEARCH_DEBOUNCE_MS, TABLE_ROW_HEIGHT, VIEWPORT_PADDING, VIEWPORT_SIZE } from '@deephaven/utils';\nimport { useDebouncedCallback } from '@deephaven/react-hooks';\nimport { useTableUtils } from \"./useTableUtils.js\";\nimport useViewportData from \"./useViewportData.js\";\nimport useFilterConditionFactories from \"./useFilterConditionFactories.js\";\nimport useViewportFilter from \"./useViewportFilter.js\";\n/**\n * Use a viewport data list with a search text filter. Supports additional filters.\n * @param maybeTable The table to use\n * @param searchColumnNames The column names to search\n * @param additionalFilterConditionFactories Additional filter condition factories\n */\nexport function useSearchableViewportData(maybeTable, searchColumnNames) {\n var tableUtils = useTableUtils();\n var [searchText, setSearchText] = useState('');\n var searchTextFilter = useMemo(() => createSearchTextFilter(tableUtils, searchColumnNames, searchText), [searchColumnNames, searchText, tableUtils]);\n var onSearchTextChange = useDebouncedCallback(setSearchText, SEARCH_DEBOUNCE_MS);\n var list = useViewportData({\n table: maybeTable,\n itemHeight: TABLE_ROW_HEIGHT,\n viewportSize: VIEWPORT_SIZE,\n viewportPadding: VIEWPORT_PADDING\n });\n for (var _len = arguments.length, additionalFilterConditionFactories = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n additionalFilterConditionFactories[_key - 2] = arguments[_key];\n }\n var filter = useFilterConditionFactories(list.table, searchTextFilter, ...additionalFilterConditionFactories);\n useViewportFilter(list, filter);\n return {\n list,\n onSearchTextChange\n };\n}\nexport default useSearchableViewportData;\n//# sourceMappingURL=useSearchableViewportData.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 { useEffect } from 'react';\nimport { isClosed } from '@deephaven/jsapi-utils';\n\n/**\n * React hook that closes a given table when the reference changes or when the\n * component unmounts.\n * @param table\n */\nexport default function useTableClose(table) {\n useEffect(() => () => {\n if (table == null) {\n return;\n }\n if (!isClosed(table)) {\n table.close();\n }\n }, [table]);\n}\n//# sourceMappingURL=useTableClose.js.map","import { useCallback, useMemo, useState } from 'react';\nimport { createSearchTextFilter, createSelectedValuesFilter } from '@deephaven/jsapi-utils';\nimport { useDebouncedCallback, useDebouncedValue, usePromiseFactory } from '@deephaven/react-hooks';\nimport { COMBO_BOX_ITEM_HEIGHT, SEARCH_DEBOUNCE_MS, VIEWPORT_PADDING, VIEWPORT_SIZE } from '@deephaven/utils';\nimport useFilterConditionFactories from \"./useFilterConditionFactories.js\";\nimport useViewportData from \"./useViewportData.js\";\nimport useViewportFilter from \"./useViewportFilter.js\";\nimport useTableUtils from \"./useTableUtils.js\";\nimport useTableClose from \"./useTableClose.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 */\nexport function usePickerWithSelectedValues(_ref) {\n var {\n maybeTable,\n columnName,\n mapItemToValue,\n filterConditionFactories = [],\n trimSearchText = false\n } = _ref;\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), [appliedSearchText, columnName, tableUtils]);\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 useTableClose(listTable);\n var list = useViewportData({\n table: listTable,\n itemHeight: COMBO_BOX_ITEM_HEIGHT,\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(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport { useCallback, useEffect } from 'react';\nimport { usePromiseFactory } from '@deephaven/react-hooks';\n\n/**\n * Return type of `useSelectDistinctTable` hook.\n */\n\n/**\n * Creates and subscribes to a `selectDistinct` derived table and unsubscribes\n * on unmount.\n * @param table The table to call `selectDistinct` on.\n * @param columnNames The list of column names to pass to `selectDistinct`.\n */\nexport default function useSelectDistinctTable(table) {\n for (var _len = arguments.length, columnNames = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n columnNames[_key - 1] = arguments[_key];\n }\n var selectDistinct = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n var _table$selectDistinct;\n return (_table$selectDistinct = table === null || table === void 0 ? void 0 : table.selectDistinct(table.findColumns(columnNames))) !== null && _table$selectDistinct !== void 0 ? _table$selectDistinct : null;\n }),\n // Disabling the exhaustive checks due to the spreading of `columnNames`\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [table, ...columnNames]);\n var {\n data: distinctTable,\n error,\n isError,\n isLoading\n } = usePromiseFactory(selectDistinct, []);\n useEffect(() => () => {\n distinctTable === null || distinctTable === void 0 ? void 0 : distinctTable.close();\n }, [distinctTable]);\n return {\n distinctTable,\n error,\n isError,\n isLoading\n };\n}\n//# sourceMappingURL=useSelectDistinctTable.js.map","import { 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","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport IrisGridProxyModel from \"./IrisGridProxyModel.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 this.dh = 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new this.dh.Sort();\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 groupedColumns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000000000;\n var sort = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var table = new this.dh.TreeTable({\n columns,\n groupedColumns,\n size,\n sort\n });\n table.copy = jest.fn(() => Promise.resolve(table));\n return table;\n }\n makeInputTable() {\n var keyColumns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new this.dh.InputTable(keyColumns);\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","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport { GridUtils } from '@deephaven/grid';\nimport Log from '@deephaven/log';\nvar log = Log.module('TableViewportUpdater');\nvar UPDATE_THROTTLE = 150;\n\n/**\n * Updates the viewport for an Iris table, for use in a scroll pane.\n * Automatically throttles the viewport requests and buffers above and below.\n */\n\nclass TableViewportUpdater extends PureComponent {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"subscription\", void 0);\n _defineProperty(this, \"getViewportRowRange\", memoize((table, top, bottom) => {\n var viewHeight = bottom - top;\n var viewportTop = Math.max(0, top - viewHeight * TableViewportUpdater.ROW_BUFFER_PAGES);\n var viewportBottom = bottom + viewHeight * TableViewportUpdater.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n }));\n _defineProperty(this, \"getViewportColumns\", memoize((table, left, right, movedColumns) => {\n if (left == null || right == null) {\n return null;\n }\n var viewWidth = right - left;\n var viewportLeft = Math.max(0, left - viewWidth * TableViewportUpdater.COLUMN_BUFFER_PAGES);\n var viewportRight = Math.min(right + viewWidth * TableViewportUpdater.COLUMN_BUFFER_PAGES, table.columns.length - 1);\n\n // Need to get all the columns from the table model now\n var columns = [];\n for (var i = viewportLeft; i <= viewportRight; i += 1) {\n var modelIndex = GridUtils.getModelIndex(i, movedColumns);\n columns.push(table.columns[modelIndex]);\n }\n return columns;\n }));\n _defineProperty(this, \"updateViewport\", throttle((top, bottom, left, right, viewColumns) => {\n if (bottom < top) {\n log.error('Invalid viewport', top, bottom);\n return;\n }\n if (top === 0 && bottom === 0) {\n log.debug2('Ignoring 0-0 viewport');\n return;\n }\n var {\n movedColumns,\n table\n } = this.props;\n var [viewportTop, viewportBottom] = this.getViewportRowRange(table, top, bottom);\n var columns = viewColumns !== null && viewColumns !== void 0 ? viewColumns : this.getViewportColumns(table, left, right, movedColumns);\n log.debug2('Setting Viewport Top:', viewportTop, 'Bottom:', viewportBottom, 'Columns:', columns);\n if (this.subscription == null) {\n log.debug2('updateViewport creating new subscription');\n this.subscription = table.setViewport(viewportTop, viewportBottom, columns);\n var {\n onSubscription\n } = this.props;\n onSubscription(this.subscription);\n } else {\n log.debug2('updateViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n }, UPDATE_THROTTLE));\n } // Number of pages to buffer for rows/columns\n componentDidMount() {\n var {\n top,\n bottom,\n left,\n right,\n table,\n filters,\n sorts,\n columns,\n customColumns\n } = this.props;\n table.applyFilter(filters);\n table.applySort(sorts);\n table.applyCustomColumns(customColumns);\n this.updateViewport(top, bottom, left, right, columns);\n }\n componentDidUpdate(prevProps) {\n var {\n top,\n bottom,\n left,\n right,\n table,\n filters,\n sorts,\n customColumns,\n columns\n } = this.props;\n var isFilterChanged = filters !== prevProps.filters;\n var isSortChanged = sorts !== prevProps.sorts;\n var isCustomColumnsChanged = customColumns !== prevProps.customColumns;\n var isTableChanged = table !== prevProps.table;\n if (isFilterChanged || isSortChanged || isCustomColumnsChanged || isTableChanged) {\n this.closeSubscription();\n }\n if (isFilterChanged || isTableChanged) {\n log.debug('update table filter', filters);\n table.applyFilter(filters);\n }\n if (isSortChanged || isTableChanged) {\n log.debug('update table sort', sorts);\n table.applySort(sorts);\n }\n if (isCustomColumnsChanged || isTableChanged) {\n log.debug('update table custom columns', customColumns);\n table.applyCustomColumns(customColumns);\n }\n this.updateViewport(top, bottom, left, right, columns);\n }\n componentWillUnmount() {\n this.closeSubscription();\n }\n\n // eslint-disable-next-line class-methods-use-this\n\n // eslint-disable-next-line class-methods-use-this\n\n closeSubscription() {\n log.debug2('closeSubscription', this.subscription);\n if (this.subscription) {\n this.subscription.close();\n this.subscription = undefined;\n var {\n onSubscription\n } = this.props;\n onSubscription();\n }\n this.updateViewport.cancel();\n }\n render() {\n return null;\n }\n}\n_defineProperty(TableViewportUpdater, \"ROW_BUFFER_PAGES\", 3);\n_defineProperty(TableViewportUpdater, \"COLUMN_BUFFER_PAGES\", 1);\n_defineProperty(TableViewportUpdater, \"defaultProps\", {\n top: 0,\n bottom: 0,\n left: null,\n right: null,\n columns: null,\n onSubscription: () => undefined,\n filters: [],\n sorts: [],\n customColumns: [],\n movedColumns: []\n});\nexport default TableViewportUpdater;\n//# sourceMappingURL=TableViewportUpdater.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { PureComponent } from 'react';\nimport throttle from 'lodash.throttle';\nimport Log from '@deephaven/log';\nvar log = Log.module('TreeTableViewportUpdater');\nvar UPDATE_THROTTLE = 150;\n/**\n * Updates the viewport of a TreeTable for use in a scroll pane.\n * Automatically throttles the viewport requests and buffers above and below.\n */\nclass TreeTableViewportUpdater extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"listenerCleanup\", void 0);\n _defineProperty(this, \"updateViewport\", throttle((top, bottom) => {\n if (bottom < top) {\n log.error('Invalid viewport', top, bottom);\n return;\n }\n if (top === 0 && bottom === 0) {\n log.debug2('Ignoring 0-0 viewport');\n return;\n }\n var {\n table,\n updateInterval\n } = this.props;\n var viewSize = bottom - top;\n var viewportTop = Math.max(0, top - viewSize * 3);\n var viewportBottom = bottom + viewSize * 3 + 1;\n log.debug2('Setting Viewport Top:', viewportTop, 'Bottom:', viewportBottom, table);\n if (!this.listenerCleanup) {\n var {\n dh,\n onViewportUpdate\n } = this.props;\n this.listenerCleanup = table.addEventListener(dh.TreeTable.EVENT_UPDATED, onViewportUpdate);\n }\n table.setViewport(viewportTop, viewportBottom, undefined, updateInterval);\n }, UPDATE_THROTTLE));\n this.listenerCleanup = null;\n }\n componentDidMount() {\n var {\n top,\n bottom,\n table,\n filters,\n sorts\n } = this.props;\n log.debug('componentDidMount', this.props);\n table.applyFilter(filters);\n table.applySort(sorts);\n this.updateViewport(top, bottom);\n }\n componentDidUpdate(prevProps) {\n var {\n top,\n bottom,\n table,\n filters,\n sorts\n } = this.props;\n if (filters !== prevProps.filters) {\n log.debug('update table filter', filters);\n table.applyFilter(filters);\n }\n if (sorts !== prevProps.sorts) {\n log.debug('update table sort', sorts);\n table.applySort(sorts);\n }\n this.updateViewport(top, bottom);\n }\n componentWillUnmount() {\n this.updateViewport.cancel();\n if (this.listenerCleanup) {\n this.listenerCleanup();\n }\n }\n render() {\n return null;\n }\n}\n_defineProperty(TreeTableViewportUpdater, \"UPDATE_INTERVAL\", 1000);\n_defineProperty(TreeTableViewportUpdater, \"defaultProps\", {\n top: 0,\n bottom: 0,\n onViewportUpdate: () => undefined,\n filters: [],\n sorts: [],\n updateInterval: TreeTableViewportUpdater.UPDATE_INTERVAL\n});\nexport default TreeTableViewportUpdater;\n//# sourceMappingURL=TreeTableViewportUpdater.js.map","import { useCallback } from 'react';\nimport shortid from 'shortid';\nimport PanelEvent from \"../PanelEvent.js\";\nimport LayoutUtils from \"./LayoutUtils.js\";\nimport useListener from \"./useListener.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 = shortid.generate(),\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 useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);\n}\nexport default useDashboardPanel;\n//# sourceMappingURL=useDashboardPanel.js.map","import { useContext } from 'react';\nimport LayoutManagerContext from \"./LayoutManagerContext.js\";\n/**\n * Retrieve the current LayoutManager from the context\n */\nfunction useLayoutManager() {\n var layoutManager = useContext(LayoutManagerContext);\n if (layoutManager == null) {\n throw new Error('LayoutManager not available, did you add a LayoutManagerContext.Provider to the tree?');\n }\n return layoutManager;\n}\nexport default useLayoutManager;\n//# sourceMappingURL=useLayoutManager.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 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","/**\n * Map from auth config keys to their values\n * E.g. Map { AuthHandlers → \"io.deephaven.auth.AnonymousAuthenticationHandler\" }\n */\n\n/**\n * Props for the auth plugin component to render\n */\n\n/**\n * Whether the auth plugin is available given the current configuration\n */\n\nexport function isAuthPlugin(plugin) {\n if (plugin == null) return false;\n var authPlugin = plugin;\n return authPlugin.Component !== undefined && typeof authPlugin.isAvailable === 'function';\n}\n//# sourceMappingURL=AuthPlugin.js.map","export var AUTH_HANDLER_TYPE_ANONYMOUS = 'io.deephaven.auth.AnonymousAuthenticationHandler';\nexport var AUTH_HANDLER_TYPE_PSK = 'io.deephaven.authentication.psk.PskAuthenticationHandler';\n//# sourceMappingURL=AuthHandlerTypes.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class AuthenticationError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"name\", 'AuthenticationError');\n _defineProperty(this, \"isAuthenticationError\", true);\n }\n}\nexport default AuthenticationError;\n//# sourceMappingURL=AuthenticationError.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError, getErrorMessage } from '@deephaven/utils';\nimport AuthenticationError from \"./AuthenticationError.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { 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(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React from 'react';\nimport { getWindowParent, LOGIN_OPTIONS_REQUEST, requestParentResponse } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport AuthPluginBase from \"./AuthPluginBase.js\";\nimport { UserPermissionsOverrideContext } from \"./UserContexts.js\";\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 } from \"react/jsx-runtime\";\nimport { 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 ? 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 } from \"react/jsx-runtime\";\nimport { 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(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { 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 } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { 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 ? 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(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport Log from '@deephaven/log';\nvar log = Log.module('UserUtils');\n\n/**\n * Retrieve a value from the AppInit config\n * @param serverConfig Server config map\n * @param key The AppInit key to retrieve\n * @returns The value for the AppInit key\n */\nexport function getAppInitValue(serverConfig, key) {\n return serverConfig.get(\"internal.webClient.appInit.\".concat(key));\n}\n\n/**\n * Retrieve a user object provided the server config and overrides\n * @param serverConfig Server config map\n * @param overrides Override values for the user\n * @param permissionsOverrides Override specific permissions for the user\n * @returns The user object\n */\nexport function getUserFromConfig(serverConfig) {\n var _getValue, _getValue2, _getValue$split, _getValue3;\n var overrides = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var permissionsOverrides = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n function getValue(key) {\n return getAppInitValue(serverConfig, key);\n }\n function getBooleanValue(key, defaultValue) {\n var value = getValue(key);\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value !== undefined) {\n log.warn(\"Unexpected value for \".concat(key, \": \").concat(value));\n }\n return defaultValue;\n }\n var name = (_getValue = getValue('name')) !== null && _getValue !== void 0 ? _getValue : '';\n var operateAs = (_getValue2 = getValue('operateAs')) !== null && _getValue2 !== void 0 ? _getValue2 : name;\n var groups = (_getValue$split = (_getValue3 = getValue('groups')) === null || _getValue3 === void 0 ? void 0 : _getValue3.split(',')) !== null && _getValue$split !== void 0 ? _getValue$split : [];\n var canCopy = getBooleanValue('canCopy', true);\n var canDownloadCsv = getBooleanValue('canDownloadCsv', true);\n var canUsePanels = getBooleanValue('canUsePanels', true);\n var canLogout = getBooleanValue('canLogout', true);\n return _objectSpread(_objectSpread({\n name,\n operateAs,\n groups\n }, overrides), {}, {\n permissions: _objectSpread({\n canUsePanels,\n canCopy,\n canDownloadCsv,\n canLogout\n }, permissionsOverrides)\n });\n}\nexport default {\n getAppInitValue,\n getUser: getUserFromConfig\n};\n//# sourceMappingURL=UserUtils.js.map","/**\n * remote-component.config.js\n *\n * Dependencies for Remote Components\n */\nimport react from 'react';\nimport * as redux from 'redux';\nimport * as reactRedux from 'react-redux';\nimport ReactDOM from 'react-dom';\nimport * as 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 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/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 asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport 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 } = 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, moduleValue);\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(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { useEffect, useState } from 'react';\nimport { 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, makeMessage } from '@deephaven/jsapi-utils';\nimport { useEffect } from 'react';\n\n/**\n * Component that broadcasts a message when mounted. Should be mounted after the user has logged in.\n */\nexport function LoginNotifier() {\n var channel = useBroadcastChannel();\n useEffect(function notifyLogin() {\n channel.postMessage(makeMessage(BROADCAST_LOGIN_MESSAGE));\n }, [channel]);\n return null;\n}\nexport default LoginNotifier;\n//# sourceMappingURL=LoginNotifier.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { AuthPluginAnonymous, AuthPluginParent, AuthPluginPsk } from '@deephaven/auth-plugins';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { PluginsContext } from '@deephaven/plugin';\nimport { getAuthPluginComponent } from \"../plugins/index.js\";\nimport LoginNotifier from \"./LoginNotifier.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\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 });\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(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { ObjectFetcherContext, sanitizeVariableDescriptor, useApi, useClient } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport ConnectionContext from \"./ConnectionContext.js\";\nimport { jsx as _jsx } 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 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 } catch (e) {\n if (isCanceled) {\n return;\n }\n setError(e);\n }\n });\n return _loadConnection.apply(this, arguments);\n }\n loadConnection();\n return () => {\n isCanceled = true;\n };\n }, [api, client]);\n useEffect(function listenForShutdown() {\n if (connection == null) return;\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 }\n var removerFn = connection.addEventListener(api.IdeConnection.EVENT_SHUTDOWN, handleShutdown);\n return removerFn;\n }, [api, connection]);\n var objectFetcher = useCallback( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(function* (descriptor) {\n assertNotNull(connection, 'No connection available to fetch object with');\n return connection.getObject(sanitizeVariableDescriptor(descriptor));\n });\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }(), [connection]);\n if (connection == null || error != null) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {\n \"data-testid\": \"connection-bootstrap-loading\",\n isLoading: connection == null,\n errorMessage: error != null ? \"\".concat(error) : undefined\n });\n }\n return /*#__PURE__*/_jsx(ConnectionContext.Provider, {\n value: connection,\n children: /*#__PURE__*/_jsx(ObjectFetcherContext.Provider, {\n value: objectFetcher,\n children: children\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","import React, { useContext } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { FontsLoadedContext } from \"./FontBootstrap.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { 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","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, useMemo } from 'react';\nimport { ChartThemeProvider } from '@deephaven/chart';\nimport { MonacoThemeProvider } from '@deephaven/console';\nimport { ThemeProvider } from '@deephaven/components';\nimport { IrisGridThemeProvider } from '@deephaven/iris-grid';\nimport { getThemeDataFromPlugins, PluginsContext } from '@deephaven/plugin';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ThemeBootstrap(_ref) {\n var {\n children\n } = _ref;\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 = useMemo(() => pluginModules == null ? null : getThemeDataFromPlugins(pluginModules), [pluginModules]);\n return /*#__PURE__*/_jsx(ThemeProvider, {\n themes: themes,\n children: /*#__PURE__*/_jsx(ChartThemeProvider, {\n children: /*#__PURE__*/_jsx(MonacoThemeProvider, {\n children: /*#__PURE__*/_jsx(IrisGridThemeProvider, {\n children: children\n })\n })\n })\n });\n}\nexport default ThemeBootstrap;\n//# sourceMappingURL=ThemeBootstrap.js.map","import React, { useCallback, useMemo, useState } from 'react';\nimport '@deephaven/components/scss/BaseStyleSheet.scss';\nimport { ClientBootstrap } from '@deephaven/jsapi-bootstrap';\nimport { RefreshTokenBootstrap, useBroadcastLoginListener } from '@deephaven/jsapi-components';\nimport FontBootstrap from \"./FontBootstrap.js\";\nimport PluginsBootstrap from \"./PluginsBootstrap.js\";\nimport AuthBootstrap from \"./AuthBootstrap.js\";\nimport ConnectionBootstrap from \"./ConnectionBootstrap.js\";\nimport { getConnectOptions } from \"../utils/index.js\";\nimport FontsLoaded from \"./FontsLoaded.js\";\nimport UserBootstrap from \"./UserBootstrap.js\";\nimport ServerConfigBootstrap from \"./ServerConfigBootstrap.js\";\nimport ThemeBootstrap from \"./ThemeBootstrap.js\";\nimport { jsx as _jsx } 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 children\n } = _ref;\n var clientOptions = useMemo(() => getConnectOptions(), []);\n\n // On logout, we reset the client and have user login again\n var [logoutCount, setLogoutCount] = useState(0);\n var onLogin = useCallback(() => undefined, []);\n var onLogout = useCallback(() => {\n setLogoutCount(value => value + 1);\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n return /*#__PURE__*/_jsx(FontBootstrap, {\n fontClassNames: fontClassNames,\n children: /*#__PURE__*/_jsx(PluginsBootstrap, {\n getCorePlugins: getCorePlugins,\n pluginsUrl: pluginsUrl,\n children: /*#__PURE__*/_jsx(ThemeBootstrap, {\n children: /*#__PURE__*/_jsx(ClientBootstrap, {\n serverUrl: serverUrl,\n options: clientOptions,\n children: /*#__PURE__*/_jsx(RefreshTokenBootstrap, {\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 })\n })\n }, logoutCount)\n })\n })\n });\n}\nexport default AppBootstrap;\n//# sourceMappingURL=AppBootstrap.js.map"],"names":["getSelectedItemCountOrAll","size","selection","isSelectionEqual","selectionA","selectionB","key","isSelectionMaybeInvertedEqual","mapSelection","selectedItemKeys","getItem","mapItem","keys","optimizeSelection","totalRecords","getKey","isInverted","optimizedSelection","generateRange","useCallbackWithAction","callback","action","useCallback","result","useDelay","delayMs","isDelayed","setIsDelayed","useState","useEffect","timeout","useDependentState","inputValue","state","setState","useEffectNTimesWhen","effectCallback","effectCallbackDependencies","n","condition","countRef","useRef","useIsEqualMemo","value","isEqual","previousValueRef","currentValue","preventDefault","event","useFormWithDetachedSubmitButton","enableDefaultFormSubmitBehavior","formId","useMemo","shortid","submitButtonRef","buttonEl","formProps","submitButtonProps","useMappedSelection","viewportData","selectedKeys","items","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","_asyncToGenerator","fn","self","args","err","usePromiseFactory","promiseFactory","autoLoad","data","setData","setError","isLoading","setIsLoading","loadPromise","resolved","ownKeys","object","enumerableOnly","symbols","sym","_objectSpread","target","i","source","_defineProperty","obj","_toPropertyKey","_toPrimitive","input","hint","prim","res","usePropChangeCallback","propName","onChange","defaultValue","hasDefault","propValue","newValue","useOnScrollOffsetChangeCallback","offsetSize","debounceMs","debounceTimeout","previousOffsetRef","offset","useSetAttributesCallback","attributes","selectors","rootEl","targets","_ref","prop","useSpectrumDisableSpellcheckRef","disableSpellcheck","SPELLCHECK_FALSE_ATTRIBUTE","useMappedRef","extractSpectrumHTMLElement","useWindowedListData","defaultGetKey","setItems","setSelectedKeys","matchKey","item","findItem","_items$find","append","values","prevItems","insert","index","remove","keySet","update","bulkUpdate","itemMap","indices","indexMap","_key","a","b","newItems","_key2","newItem","listData","hasKey","_excluded","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","ActionButtonDialogTrigger","ariaLabel","icon","isQuiet","labelText","children","onOpenChange","tooltip","styleProps","iconClassName","_jsxs","DialogTrigger","ActionButton","_jsx","Icon","FontAwesomeIcon","Text","Tooltip","ConfirmationDialog","heading","confirmationButtonLabel","onCancel","onConfirm","Dialog","Heading","styles","Divider","Content","Form","ButtonGroup","Button","ConfirmActionButton","isHidden","_onConfirm","renderDialog","close","vsTrash","ACTION_ICON_HEIGHT","IconActionButton","label","props","BulkActionBar","selectedItemCount","onClearSelection","ActionBar","commonStyles","EditableItemList","isInvalid","onAdd","onDelete","validate","inputError","setInputError","selectedRanges","setSelectedRanges","setValue","handleSelectionChange","ranges","handleDelete","RangeUtils","handleAdd","validationError","handleInputChange","handleInputFocus","handleInputKeyDown","containerHeight","clamp","ItemList","classNames","vsAdd","log","Log","ErrorBoundary","Component","errorInfo","onError","className","fallback","LoadingOverlay","TextWithTooltip","text","placement","options","_Fragment","stylesCommon","SearchableCombobox","scrollRef","getItemDisplayText","renderItem","displayText","Item","ComboBox","DEFAULT_DELAY_MS","TableViewEmptyState","content","show","setShow","IllustratedMessage","vsEmptyWindow","ToastNotification","buttons","isShown","classNamesProp","message","type","onClick","onDismiss","dataTestId","hasButtons","CSSTransition","ThemeExport","FadeTransition","vsClose","DeferredApiContext","createContext","useDeferredApi","widget","api","setApi","deferredApi","useContext","contextApi","ApiContext","isCancelled","loadApi","_loadApi","newApi","e","DeferredApiBootstrap","React","apiError","MonacoThemeProvider","activeThemes","useTheme","MonacoUtils","FETCH_TIMEOUT","fetchVariableDefinition","connection","name","removeListener","timeoutId","_removeListener","TimeoutError","handleFieldUpdates","changes","_removeListener2","definition","def","makeApiContextWrapper","dh","useTableListener","eventEmitter","eventName","useTableListener$1","ColumnNameError","ColumnNameError$1","TableDisconnectError","TableDisconnectError$1","useTable","table","firstRow","lastRow","columnNames","useApi","columns","setColumns","columnError","setColumnError","tableError","setTableError","handleUpdate","detail","column","r","handleDisconnect","handleReconnect","useTable$1","useTableColumn","columnName","useTableColumn$1","SIZE_LIMIT","TableInput","_table$size","_error$message","settings","onBlur","tablePromise","parentRef","formatter","columnFormats","FormatterUtils","dateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","Formatter","searchValue","setSearchValue","setSelection","setTable","listRef","itemCount","formatValue","updatedSelection","removedItems","v","isSelected","newSelection","initTable","promise","PromiseUtils","_x","cancelablePromise","handleSearchChange","_listRef$current","handleSelect","selectedValue","handleSelectAll","handleClearSelection","handleViewportChange","handleChildBlur","_parentRef$current","relatedTarget","isEmpty","SearchInput","SelectValueList","useBroadcastChannel","onEvent","EMPTY_FUNCTION","BROADCAST_CHANNEL_NAME","channel","handleEvent","isMessage","useBroadcastLoginListener","onLogin","onLogout","onMessage","isBroadcastLoginMessage","isBroadcastLogoutMessage","REFRESH_TOKEN_KEY","RefreshTokenContext","readRefreshToken","cookieToken","Cookies","storeRefreshToken","token","expires","RefreshTokenBootstrap","client","useClient","setToken","cleanup","newToken","useFormatter","instance","createFormatterFromSettings","bindAllMethods","getColumnFormat","getColumnFormatMapForType","getColumnTypeFormatter","getFormattedString","useTableSize","forceRerender","onSizeChanged","getSize","resizeItemsArray","targetSize","reuseExistingItems","currentSize","generateEmptyKeyedItems","useInitializeViewportData","reuseItemsOnTableResize","useSetPaddedViewportCallback","viewportSize","viewportPadding","first","last","padFirstAndLastRow","useViewportData","itemHeight","scrollDebounce","SCROLL_DEBOUNCE_MS","deserializeRow","defaultRowDeserializer","currentViewportFirstRowRef","setPaddedViewport","setViewport","isClosed","applyFiltersAndRefresh","filters","onTableUpdatedRef","createOnTableUpdatedHandler","onTableUpdated","_onTableUpdatedRef$cu","onScroll","getItemKeyColumn","keyColumnName","getItemLabelColumn","keyColumn","labelColumnName","defaultFormatKey","defaultFormatValue","_columnType","useItemRowDeserializer","descriptionColumnName","iconColumnName","labelColumn","descriptionColumn","iconColumn","row","description","ListView","_props$density","scale","useSpectrumThemeProvider","LIST_VIEW_ROW_HEIGHTS","ListViewNormalized","useTableUtils","TableUtils","useGetItemIndexByValue","tableUtils","columnValueType","Picker","onSelectionChange","PICKER_ITEM_HEIGHTS","isUncontrolled","uncontrolledSelectedKey","setUncontrolledSelectedKey","getItemIndexByValue","getInitialScrollPosition","PICKER_TOP_OFFSET","normalizedItems","isCanceled","onSelectionChangeInternal","_ref3","PickerNormalized","useCheckIfExistsValue","isCaseSensitive","valueTrimmed","setValueTrimmed","valueTrimmedDebounced","useDebouncedValue","trimAndUpdateValue","valueExistsData","valueExistsIsLoading","valueExists","DEBOUNCE_VIEWPORT_SEARCH_MS","useDebouncedViewportSearch","debouncedSearch","debounce","searchText","searchTextTrimmed","filter","DEBOUNCE_MS","useDebouncedViewportSelectionFilter","shouldSelectAllOnNoSelection","mapItemToValue","valuesSelection","createKeyedItemKey","debouncedValuesSelection","memoValuesSelection","createSelectedValuesFilter","useFilterConditionFactories","maybeTable","_len","filterConditionFactories","removeNullAndUndefined","f","useFilteredItemsWithDefaultValue","displayProp","defaultDisplayValue","searchTextRef","useGetItemPosition","topOffset","rowIndex","defaultItemOffset","useViewportFilter","useSearchableViewportData","searchColumnNames","setSearchText","searchTextFilter","createSearchTextFilter","onSearchTextChange","useDebouncedCallback","SEARCH_DEBOUNCE_MS","list","TABLE_ROW_HEIGHT","VIEWPORT_SIZE","VIEWPORT_PADDING","additionalFilterConditionFactories","useNotNullOrEmptyFilter","conditionOperator","notNullOrEmptyFilterCondition","createNotNullOrEmptyFilterCondition","createFilterConditionFactory","useTableClose","usePickerWithSelectedValues","trimSearchText","appliedSearchText","setAppliedSearchText","applySearchText","searchTextMaybeTrimmed","selectedKey","setSelectedKey","selectedValueMap","setSelectedValueMap","isApplyingFilter","searchTextExists","excludeSelectedValuesFilter","listTable","COMBO_BOX_ITEM_HEIGHT","hasSearchTextWithZeroResults","searchTextIsInSelectedValues","onDebouncedSearchTextChange","setSelectedKeyOnNextFrame","onSelectKey","prev","next","onAddValues","onRemoveValues","useSelectDistinctTable","selectDistinct","_table$selectDistinct","distinctTable","isError","useShowOnlyEmptyFilter","isOn","createColumnCondition","createShowOnlyEmptyFilterCondition","useValueFilter","operator","createValueFilter","IrisGridTestUtils","columnIndex","count","prefix","userColumnWidths","sort","layoutHints","groupedColumns","keyColumns","inputTable","IrisGridProxyModel","IrisGridTestUtils$1","UPDATE_THROTTLE","TableViewportUpdater","PureComponent","memoize","top","bottom","viewHeight","viewportTop","viewportBottom","left","right","movedColumns","viewWidth","viewportLeft","viewportRight","modelIndex","GridUtils","throttle","viewColumns","onSubscription","sorts","customColumns","prevProps","isFilterChanged","isSortChanged","isCustomColumnsChanged","isTableChanged","TableViewportUpdater$1","TreeTableViewportUpdater","updateInterval","viewSize","onViewportUpdate","TreeTableViewportUpdater$1","useDashboardPanel","dashboardProps","componentName","component","supportedTypes","hydrate","dehydrate","id","layout","registerComponent","handlePanelOpen","_ref2","dragEvent","panelId","isSupportedType","config","root","LayoutUtils","usePanelRegistration","useListener","PanelEvent","useLayoutManager","layoutManager","LayoutManagerContext","useDashboardPluginData","dashboardId","pluginId","dispatch","useDispatch","useSelector","store","getPluginDataForDashboard","newData","setDashboardPluginData","WidgetView","fetch","plugins","usePlugins","plugin","isWidgetPlugin","p","isAuthPlugin","authPlugin","AUTH_HANDLER_TYPE_ANONYMOUS","AUTH_HANDLER_TYPE_PSK","AuthenticationError","AuthenticationError$1","AuthPluginBase","getLoginOptions","isLoggedIn","setIsLoggedIn","verifyNotCanceled","CanceledPromiseError","login","_login","loginOptions","_getErrorMessage","getErrorMessage","permissionsOverrides","UserPermissionsOverrideContext","AuthPluginAnonymous","authHandlers","AuthPluginAnonymous$1","isLoginOptions","_getLoginOptions","response","requestParentResponse","LOGIN_OPTIONS_REQUEST","getWindowAuthProvider","_URLSearchParams$get","AuthPluginParent","getWindowParent","AuthPluginParent$1","LoginForm","errorMessage","isLoggingIn","_onSubmit","LoadingSpinner","Login","logoPath","RandomAreaPlotAnimation","AUTH_TYPE","PSK_QUERY_PARAM_KEY","PSK_TOKEN_KEY","getWindowToken","clearWindowToken","url","readCookieToken","_Cookies$get","storeCookieToken","inputField","loginPromise","isInputRequired","setIsInputRequired","setIsLoggingIn","loginToken","showError","newLoginPromise","cancelLogin","initialLogin","_initialLogin","_getWindowToken","initialToken","handleSubmit","_inputField$current","AuthPluginPsk","AuthPluginPsk$1","getAppInitValue","serverConfig","getUserFromConfig","_getValue","_getValue2","_getValue$split","_getValue3","overrides","getValue","getBooleanValue","operateAs","groups","canCopy","canDownloadCsv","canUsePanels","canLogout","react","ReactDOM","redux","reactRedux","AdobeReactSpectrum","DeephavenAuthPlugins","DeephavenChart","DeephavenComponents","DeephavenDashboard","DeephavenDashboardCorePlugins","DeephavenIcons","DeephavenIrisGrid","DeephavenJsapiBootstrap","DeephavenJsapiComponents","DeephavenJsapiUtils","DeephavenLog","DeephavenPlugin","DeephavenReactHooks","requires","createRequires","loadRemoteModule","createLoadRemoteModule","loadRemoteModule$1","loadModulePlugin","_loadModulePlugin","pluginUrl","myModule","loadJson","_x2","_loadJson","jsonUrl","hasDefaultExport","getPluginModuleValue","isPlugin","isLegacyPlugin","loadModulePlugins","_x3","_loadModulePlugins","modulePluginsUrl","manifest","pluginPromises","main","pluginMainUrl","pluginModules","pluginMap","_i","module","_name","moduleValue","getAuthHandlers","authConfigValues","_authConfigValues$get","_authConfigValues$get2","getAuthPluginComponent","corePlugins","authPlugins","isLegacyAuthPlugin","PluginType","availableAuthPlugins","isAvailable","_ref4","RemoteComponent","createRemoteComponent","RemoteComponent$1","PluginsBootstrap","pluginsUrl","getCorePlugins","setPlugins","loadPlugins","_loadPlugins","_yield$getCorePlugins","corePluginPairs","PluginsContext","LoginNotifier","makeMessage","BROADCAST_LOGIN_MESSAGE","CORE_AUTH_PLUGINS","AuthBootstrap","authConfig","setAuthConfig","loadAuthConfigValues","_loadAuthConfigValues","newAuthConfigValues","AuthComponent","ConnectionBootstrap","setConnection","loadConnection","_loadConnection","newConnection","handleShutdown","removerFn","objectFetcher","descriptor","assertNotNull","sanitizeVariableDescriptor","ConnectionContext","ObjectFetcherContext","getBaseUrl","apiUrl","getEnvoyPrefix","searchParams","getConnectOptions","envoyPrefix","FontsLoaded","isFontsLoaded","FontsLoadedContext","UserBootstrap","useServerConfig","UserOverrideContext","user","UserContext","ThemeBootstrap","themes","getThemeDataFromPlugins","ThemeProvider","ChartThemeProvider","IrisGridThemeProvider","AppBootstrap","fontClassNames","serverUrl","clientOptions","logoutCount","setLogoutCount","FontBootstrap","ClientBootstrap","ServerConfigBootstrap"],"mappings":"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"}
|