@deephaven/embed-widget 0.76.1-beta.0 → 0.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/build/assets/{App-9530b49f.js → App-940bb524.js} +2 -2
  2. package/build/assets/{App-9530b49f.js.map → App-940bb524.js.map} +1 -1
  3. package/build/assets/{Chart-ff39b148.js → Chart-7bb2df7e.js} +2 -2
  4. package/build/assets/{Chart-ff39b148.js.map → Chart-7bb2df7e.js.map} +1 -1
  5. package/build/assets/{DashboardConstants-7ee42d88.js → DashboardConstants-8ed0d381.js} +2 -2
  6. package/build/assets/{DashboardConstants-7ee42d88.js.map → DashboardConstants-8ed0d381.js.map} +1 -1
  7. package/build/assets/{IrisGrid-71192be5.js → IrisGrid-ccc3ef82.js} +2 -2
  8. package/build/assets/{IrisGrid-71192be5.js.map → IrisGrid-ccc3ef82.js.map} +1 -1
  9. package/build/assets/{IrisGridThemeProvider-214cde20.js → IrisGridThemeProvider-4f55de1b.js} +2 -2
  10. package/build/assets/{IrisGridThemeProvider-214cde20.js.map → IrisGridThemeProvider-4f55de1b.js.map} +1 -1
  11. package/build/assets/{MarkdownEditor-e76881d7.js → MarkdownEditor-0892775e.js} +2 -2
  12. package/build/assets/{MarkdownEditor-e76881d7.js.map → MarkdownEditor-0892775e.js.map} +1 -1
  13. package/build/assets/{MarkdownNotebook-192d7a65.js → MarkdownNotebook-32df27fd.js} +2 -2
  14. package/build/assets/{MarkdownNotebook-192d7a65.js.map → MarkdownNotebook-32df27fd.js.map} +1 -1
  15. package/build/assets/{index-14e12635.js → index-49f7c0ab.js} +2 -2
  16. package/build/assets/{index-14e12635.js.map → index-49f7c0ab.js.map} +1 -1
  17. package/build/assets/{index-c1505f1e.js → index-7bde4bb4.js} +4 -4
  18. package/build/assets/{index-c1505f1e.js.map → index-7bde4bb4.js.map} +1 -1
  19. package/build/assets/index-a742c658.js +4 -0
  20. package/build/assets/index-a742c658.js.map +1 -0
  21. package/build/assets/{useUser-7e5d4c37.js → useUser-5a3a7252.js} +2 -2
  22. package/build/assets/{useUser-7e5d4c37.js.map → useUser-5a3a7252.js.map} +1 -1
  23. package/build/index.html +2 -2
  24. package/package.json +17 -17
  25. package/build/assets/index-e341069c.js +0 -4
  26. package/build/assets/index-e341069c.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-a742c658.js","sources":["../../../utils/dist/ErrorUtils.js","../../../components/dist/spectrum/shared.js","../../../react-hooks/dist/ElementUtils.js","../../../react-hooks/dist/SelectionUtils.js","../../../react-hooks/dist/SpectrumUtils.js","../../../react-hooks/dist/useCallbackWithAction.js","../../../react-hooks/dist/useCheckOverflow.js","../../../react-hooks/dist/useMappedRef.js","../../../react-hooks/dist/useContentRect.js","../../../react-hooks/dist/useDebouncedCallback.js","../../../react-hooks/dist/useDelay.js","../../../react-hooks/dist/useDependentState.js","../../../react-hooks/dist/useEffectNTimesWhen.js","../../../react-hooks/dist/useIsEqualMemo.js","../../../react-hooks/dist/useFormWithDetachedSubmitButton.js","../../../react-hooks/dist/useMappedSelection.js","../../../react-hooks/dist/useOnScrollRef.js","../../../react-hooks/dist/usePopoverOnScrollRef.js","../../../react-hooks/dist/usePromiseFactory.js","../../../react-hooks/dist/usePropChangeCallback.js","../../../react-hooks/dist/useOnScrollOffsetChangeCallback.js","../../../react-hooks/dist/useDebouncedValue.js","../../../react-hooks/dist/useSetAttributesCallback.js","../../../react-hooks/dist/useSpectrumDisableSpellcheckRef.js","../../../react-hooks/dist/useWindowedListData.js","../../../components/dist/theme/colorUtils.js","../../../components/dist/spectrum/Text.js","../../../components/dist/spectrum/ItemTooltip.js","../../../components/dist/spectrum/ItemContent.js","../../../components/dist/spectrum/utils/itemUtils.js","../../../components/dist/spectrum/utils/itemWrapperUtils.js","../../../components/dist/spectrum/utils/propsUtils.js","../../../components/dist/spectrum/utils/useRenderNormalizedItem.js","../../../components/dist/spectrum/utils/useStringifiedMultiSelection.js","../../../components/dist/spectrum/utils/useStringifiedSelection.js","../../../components/dist/theme/ThemePicker.js","../../../components/dist/theme/Logo.js","../../../components/dist/theme/useSpectrumThemeProvider.js","../../../components/dist/spectrum/listView/ListViewWrapper.js","../../../components/dist/spectrum/listView/ListView.js","../../../components/dist/spectrum/listView/ListViewNormalized.js","../../../components/dist/spectrum/picker/usePickerScrollOnOpen.js","../../../components/dist/spectrum/picker/Picker.js","../../../components/dist/spectrum/picker/PickerNormalized.js","../../../components/dist/spectrum/Heading.js","../../../components/dist/spectrum/View.js","../../../components/dist/dialogs/ActionButtonDialogTrigger.js","../../../components/dist/dialogs/ConfirmationDialog.js","../../../components/dist/actions/ConfirmActionButton.js","../../../components/dist/actions/IconActionButton.js","../../../components/dist/AutoCompleteInput.js","../../../components/dist/AutoResizeTextarea.js","../../../components/dist/modal/DebouncedModal.js","../../../components/dist/modal/InfoModal.js","../../../components/dist/BulkActionBar.js","../../../components/dist/Collapse.js","../../../components/dist/TimeInput.js","../../../components/dist/CustomTimeSelect.js","../../../components/dist/DateInput.js","../../../components/dist/EditableItemList.js","../../../components/dist/ErrorView.js","../../../components/dist/HierarchicalCheckboxMenu.js","../../../components/dist/navigation/NavTab.js","../../../components/dist/navigation/NavTabList.js","../../../components/dist/RandomAreaPlotAnimation.js","../../../components/dist/TextWithTooltip.js","../../../components/dist/SearchableCombobox.js","../../../components/dist/TableViewEmptyState.js","../../../components/dist/TimeSlider.js","../../../components/dist/ToastNotification.js","../../../jsapi-bootstrap/dist/useCreateClient.js","../../../jsapi-bootstrap/dist/ClientBootstrap.js","../../../jsapi-bootstrap/dist/useDeferredApi.js","../../../jsapi-bootstrap/dist/DeferredApiBootstrap.js","../../../jsapi-bootstrap/dist/useClient.js","../../../jsapi-components/dist/HookTestUtils.js","../../../jsapi-utils/dist/MessageUtils.js","../../../jsapi-utils/dist/NoConsolesError.js","../../../jsapi-utils/dist/SessionUtils.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","../../../app-utils/dist/components/FontBootstrap.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","../../../chart/dist/MockChartModel.js","../../../dashboard/dist/layout/useDashboardPanel.js","../../../dashboard/dist/layout/useLayoutManager.js","../../../dashboard/dist/redux/hooks.js","../../../console/dist/monaco/MonacoThemeProvider.js","../../../iris-grid/dist/IrisGridTestUtils.js","../../../iris-grid/dist/TableViewportUpdater.js","../../../iris-grid/dist/TreeTableViewportUpdater.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/ServerConfigBootstrap.js","../../../app-utils/dist/components/useServerConfig.js","../../../app-utils/dist/components/UserBootstrap.js","../../../app-utils/dist/components/ThemeBootstrap.js","../../../app-utils/dist/components/AppBootstrap.js"],"sourcesContent":["/**\n * Returns an error message from an object. Guaranteed not to be an empty string.\n * @param error Error object to get the message from.\n * @returns Error message, or undefined if there is no message.\n */\nexport function getErrorMessage(error) {\n var errorObj = error;\n if (error instanceof CustomEvent) {\n errorObj = error.detail;\n }\n var message = '';\n if (errorObj instanceof Error) {\n message = errorObj.message;\n } else if (errorObj != null) {\n message = \"\".concat(errorObj);\n }\n message = message.trim();\n if (message.length > 0) {\n return message;\n }\n return undefined;\n}\nexport default getErrorMessage;\n//# sourceMappingURL=ErrorUtils.js.map","/**\n * Wrapping Spectrum `Item` and `Section` components will break functionality\n * due to the way they are consumed by collection components. They are only used\n * to pass data and don't render anything on their own, so they don't need to be\n * wrapped. If we do ever need to wrap them for whatever reason, the static\n * `getCollectionNode` method will need to be implemented.\n * See https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/collections/src/Item.ts#L17\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/collections/src/Section.ts#L18\n */\nimport { Section as SpectrumSection } from '@adobe/react-spectrum';\nexport { Item } from '@adobe/react-spectrum';\n\n/*\n * We support primitive values as shorthand for `Item` elements in certain\n * components. This type represents this augmentation of the Spectrum types.\n */\n\n/**\n * Spectrum SectionProps augmented with support for primitive item children.\n */\n\n/**\n * Re-export Spectrum Section component with augmented props type.\n */\nexport var Section = SpectrumSection;\n//# sourceMappingURL=shared.js.map","import { isValidElement } from 'react';\n/**\n * Check if a node is a React element of a specific type.\n * @param node The node to check\n * @param type The type to check against\n * @returns True if the node is a React element of the specified type\n */\nexport function isElementOfType(node, type) {\n return /*#__PURE__*/isValidElement(node) && node.type === type;\n}\nexport default isElementOfType;\n//# sourceMappingURL=ElementUtils.js.map","import { generateRange } from '@deephaven/utils';\n\n/**\n * Returns the number of selected items or 'all' if all items are selected.\n * @param size Total size of collection that can have selections\n * @param selection Set of selected keys or 'all'\n */\nexport function getSelectedItemCountOrAll(size, selection) {\n if (size === 0) {\n return 0;\n }\n if (selection === 'all' || size === selection.size) {\n return 'all';\n }\n return selection.size;\n}\n\n/**\n * Check 2 SelectionT objects for value equality.\n * @param selectionA\n * @param selectionB\n */\nexport function isSelectionEqual(selectionA, selectionB) {\n if (selectionA === selectionB) {\n return true;\n }\n if (selectionA === 'all' || selectionB === 'all') {\n return false;\n }\n if (selectionA.size !== selectionB.size) {\n return false;\n }\n return [...selectionA.keys()].every(key => selectionB.has(key));\n}\n\n/**\n * Check 2 `SelectionMaybeInverted` instances for value equality.\n * @param selectionA\n * @param selectionB\n */\nexport function isSelectionMaybeInvertedEqual(selectionA, selectionB) {\n return selectionA.isInverted === selectionB.isInverted && isSelectionEqual(selectionA.selection, selectionB.selection);\n}\n\n/**\n * Map a React Spectrum `Selection` to another `Selection`\n * @param selectedItemKeys\n * @param getItem\n * @param mapItem\n */\nexport function mapSelection(selectedItemKeys, getItem, mapItem) {\n if (selectedItemKeys === 'all') {\n return 'all';\n }\n var keys = [...selectedItemKeys.keys()];\n return new Set(keys.map(key => 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","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/**\n * Creates validation props for a Spectrum field. If `isValid` is true, returns\n * empty props. If false, returns { errorMessage, validationState: 'invalid' }\n * @param isValid Whether props represent valid state\n * @param errorMessage Error message in the case `isValid` is false\n */\nexport function createValidationProps(isValid, errorMessage) {\n if (isValid) {\n return {};\n }\n return {\n errorMessage,\n validationState: 'invalid'\n };\n}\n\n/**\n * Extract DOM node from React Spectrum component ref.\n * @param ref\n */\nexport function extractSpectrumHTMLElement(ref) {\n var _ref$UNSAFE_getDOMNod;\n return (_ref$UNSAFE_getDOMNod = ref === null || ref === void 0 ? void 0 : ref.UNSAFE_getDOMNode()) !== null && _ref$UNSAFE_getDOMNod !== void 0 ? _ref$UNSAFE_getDOMNod : null;\n}\n\n/**\n * Extract lastElementChild from DOM element for given React Spectrum component\n * ref.\n * @param ref\n */\nexport function extractSpectrumLastChildHTMLElement(ref) {\n var maybeHTMLElement = ref === null || ref === void 0 ? void 0 : ref.UNSAFE_getDOMNode().lastElementChild;\n return identityExtractHTMLElement(maybeHTMLElement);\n}\n\n/**\n * Find the popover associated with a given Spectrum ComboBox ref.\n * @param ref The ref to the Spectrum ComboBox component\n */\nexport function findSpectrumComboBoxScrollArea(ref) {\n return findSpectrumPopoverScrollArea(ref, 'input');\n}\n\n/**\n * Find the popover associated with a given Spectrum Picker ref.\n * @param ref The ref to the Spectrum Picker component\n */\nexport function findSpectrumPickerScrollArea(ref) {\n return findSpectrumPopoverScrollArea(ref, 'button');\n}\n\n/**\n * Find the popover associated with a given Spectrum component ref.\n * @param ref The ref to the Spectrum component\n * @param triggerElementType The type of element that triggers the popover\n */\nexport function findSpectrumPopoverScrollArea(ref, triggerElementType) {\n var maybeHTMLElement = ref === null || ref === void 0 ? void 0 : ref.UNSAFE_getDOMNode();\n var trigger = maybeHTMLElement === null || maybeHTMLElement === void 0 ? void 0 : maybeHTMLElement.querySelector(triggerElementType);\n var popupId = trigger === null || trigger === void 0 ? void 0 : trigger.getAttribute('aria-controls');\n var scrollArea = popupId == null ? null : document.getElementById(popupId);\n return scrollArea;\n}\n\n/**\n * Get the position of a selected item in a list of keyed items. The position is\n * based on the index, item height, and top offset.\n * @param keyedItems The list of keyed items\n * @param itemHeight The height of each item\n * @param selectedKey The key of the selected item\n * @param topOffset The offset from the top of the list (e.g. if there is top\n * padding surrounding the entire list)\n */\nexport function getPositionOfSelectedItem(_x) {\n return _getPositionOfSelectedItem.apply(this, arguments);\n}\n\n/**\n * Returns the given object if it is an HTMLElement. Otherwise returns null.\n * @param maybeHTMLElement\n */\nfunction _getPositionOfSelectedItem() {\n _getPositionOfSelectedItem = _asyncToGenerator(function* (_ref) {\n var {\n keyedItems,\n itemHeight,\n selectedKey,\n topOffset\n } = _ref;\n var i = keyedItems.findIndex(item => {\n var _item$item$key, _item$item;\n return ((_item$item$key = (_item$item = item.item) === null || _item$item === void 0 ? void 0 : _item$item.key) !== null && _item$item$key !== void 0 ? _item$item$key : item.key) === selectedKey;\n });\n if (i <= 0) {\n return topOffset;\n }\n return itemHeight * i + topOffset;\n });\n return _getPositionOfSelectedItem.apply(this, arguments);\n}\nexport function identityExtractHTMLElement(maybeHTMLElement) {\n return maybeHTMLElement instanceof HTMLElement ? maybeHTMLElement : null;\n}\n//# sourceMappingURL=SpectrumUtils.js.map","import { useCallback } from 'react';\n\n/**\n * Wrap a callback function + an additional \"action\" function in\n * a new function. The new function takes the parameters belonging to\n * the callback and passes them through. The action function will\n * not receive any parameters.\n * @param callback Function\n * @param action Parameterless function to call after the callback\n */\nexport function useCallbackWithAction(callback, action) {\n return useCallback(function () {\n var result = callback(...arguments);\n action();\n return result;\n }, [action, callback]);\n}\nexport default useCallbackWithAction;\n//# sourceMappingURL=useCallbackWithAction.js.map","import { useCallback, useState } from 'react';\n/**\n * Provides a callback to check a Spectrum `DOMRefValue` for overflow. If\n * overflow is detected, `isOverflowing` will be set to `true` until reset by\n * calling `resetIsOverflowing`.\n */\nexport function useCheckOverflow() {\n var [isOverflowing, setIsOverflowing] = useState(false);\n\n /**\n * Check if a Spectrum `DOMRefValue` is overflowing.\n */\n var checkOverflow = useCallback(elRef => {\n var el = elRef === null || elRef === void 0 ? void 0 : elRef.UNSAFE_getDOMNode();\n if (el == null) {\n return;\n }\n if (el.scrollWidth > el.offsetWidth) {\n setIsOverflowing(true);\n }\n }, []);\n\n /** Reset `isOverflowing` to false */\n var resetIsOverflowing = useCallback(() => {\n setIsOverflowing(false);\n }, []);\n return {\n isOverflowing,\n checkOverflow,\n resetIsOverflowing\n };\n}\nexport default useCheckOverflow;\n//# sourceMappingURL=useCheckOverflow.js.map","import { useCallback } from 'react';\n\n/**\n * Returns a callback ref that will map it's argument\n * and set the given targetRef with the result.\n * @param targetRef Ref to assign mapped result to\n * @param map Function to map given ref value to another value\n */\nexport function useMappedRef(targetRef, map) {\n return useCallback(ref => {\n if (typeof targetRef === 'function') {\n targetRef(map(ref));\n } else {\n // eslint-disable-next-line no-param-reassign\n targetRef.current = map(ref);\n }\n }, [map, targetRef]);\n}\nexport default useMappedRef;\n//# sourceMappingURL=useMappedRef.js.map","import { identityExtractHTMLElement } from '@deephaven/utils';\nimport { useCallback, useMemo, useState } from 'react';\nimport useMappedRef from \"./useMappedRef.js\";\nimport useResizeObserver from \"./useResizeObserver.js\";\n/**\n * Returns a callback ref that will track the `contentRect` of a given refValue.\n * If the `contentRect` is undefined, it will be set to a new `DOMRect` with\n * zeros for all dimensions.\n * @param map Optional mapping function to extract an HTMLElement from the given\n * refValue\n * @returns Content rect and a ref callback\n */\nexport function useContentRect() {\n var map = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : identityExtractHTMLElement;\n var [x, setX] = useState(0);\n var [y, setY] = useState(0);\n var [width, setWidth] = useState(0);\n var [height, setHeight] = useState(0);\n var contentRect = useMemo(() => new DOMRect(x, y, width, height), [height, width, x, y]);\n var [el, setEl] = useState(null);\n\n // Callback ref maps the passed in refValue and passes to `setEl`\n var ref = useMappedRef(setEl, map);\n var handleResize = useCallback(_ref => {\n var _firstEntry$contentRe;\n var [firstEntry] = _ref;\n var rect = (_firstEntry$contentRe = firstEntry === null || firstEntry === void 0 ? void 0 : firstEntry.contentRect) !== null && _firstEntry$contentRe !== void 0 ? _firstEntry$contentRe : {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n setX(rect.x);\n setY(rect.y);\n setWidth(rect.width);\n setHeight(rect.height);\n }, []);\n useResizeObserver(el, handleResize);\n return {\n ref,\n contentRect\n };\n}\nexport default useContentRect;\n//# sourceMappingURL=useContentRect.js.map","import { useEffect, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\n\n/**\n * Wraps a given callback in a cancelable, debounced function. The debounced\n * callback is automatically cancelled if the callback reference changes or the\n * component unmounts.\n * @param callback callback function to debounce\n * @param debounceMs debounce milliseconds\n * @returns a cancelable, debounced function\n */\nexport function useDebouncedCallback(callback, debounceMs) {\n var debouncedCallback = useMemo(() => debounce(callback, debounceMs), [callback, debounceMs]);\n useEffect(() => () => debouncedCallback.cancel(), [debouncedCallback]);\n return debouncedCallback;\n}\nexport default useDebouncedCallback;\n//# sourceMappingURL=useDebouncedCallback.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","import { useCallback, useEffect, useRef } from 'react';\nimport { identityExtractHTMLElement } from '@deephaven/utils';\n\n/**\n * Return a ref that can be used to subscribe to scroll events.\n * @param onScroll Scroll event handler\n * @param extractHTMLElement Optional extraction handler to get the HTML element\n * to subscribe to scroll events. If no extraction handler is given, the argument\n * passed to the callback will be subscribed to if it is an HTML element.\n */\nexport function useOnScrollRef(onScroll) {\n var extractHTMLElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identityExtractHTMLElement;\n var cleanupRef = useRef();\n\n // Cleanup on unmount\n useEffect(() => () => {\n var _cleanupRef$current;\n return (_cleanupRef$current = cleanupRef.current) === null || _cleanupRef$current === void 0 ? void 0 : _cleanupRef$current.call(cleanupRef);\n }, []);\n return useCallback(ref => {\n var _cleanupRef$current2;\n (_cleanupRef$current2 = cleanupRef.current) === null || _cleanupRef$current2 === void 0 ? void 0 : _cleanupRef$current2.call(cleanupRef);\n var element = extractHTMLElement(ref);\n if (!element) {\n return;\n }\n element.addEventListener('scroll', onScroll);\n\n // Hold a reference to a function that can cleanup scroll event registration\n cleanupRef.current = () => {\n element.removeEventListener('scroll', onScroll);\n cleanupRef.current = undefined;\n };\n }, [extractHTMLElement, onScroll]);\n}\nexport default useOnScrollRef;\n//# sourceMappingURL=useOnScrollRef.js.map","function 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, useRef, useState } from 'react';\n/**\n * This hook provides a way to attach a scroll event listener to a scroll area\n * inside a popover component. Popovers for picker components only exist when\n * the picker is open, and they get attached to the DOM outside of the child\n * tree, so we have to provide a function that can find the target DOM element\n * to attach the listener to.\n * @param findScrollArea Function to retreive the DOM element to attach a scroll\n * event listener to\n * @param onScroll Scroll event listener function to attach\n * @param getInitialScrollPosition Function to retrieve the initial scroll\n * position. If no function is given, or if the function returns `null`, no\n * initial scrolling will occur.\n */\nexport function usePopoverOnScrollRef(findScrollArea, onScroll, getInitialScrollPosition) {\n var ref = useRef(null);\n var isScrollOnOpenEnabledRef = useRef(false);\n var [scrollAreaEl, setScrollAreaEl] = useState(null);\n var scrollToInitialPosition = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n if (scrollAreaEl == null || getInitialScrollPosition == null) {\n return;\n }\n var position = yield getInitialScrollPosition();\n\n // If the position is null, don't scroll\n if (position == null) {\n return;\n }\n scrollAreaEl.scroll(0, position);\n }), [getInitialScrollPosition, scrollAreaEl]);\n useEffect(() => {\n scrollAreaEl === null || scrollAreaEl === void 0 ? void 0 : scrollAreaEl.addEventListener('scroll', onScroll);\n\n // Ticking tables can cause this effect to fire multiple times while the\n // popover is still open. This check ensures that we only scroll 1x.\n if (isScrollOnOpenEnabledRef.current) {\n scrollToInitialPosition();\n isScrollOnOpenEnabledRef.current = false;\n }\n return () => {\n scrollAreaEl === null || scrollAreaEl === void 0 ? void 0 : scrollAreaEl.removeEventListener('scroll', onScroll);\n };\n }, [onScroll, scrollAreaEl, scrollToInitialPosition]);\n var scrollTimeoutRef = useRef();\n\n // Popovers for picker components only exist when the popover opens, so we\n // have to wait to attach scroll listeners\n var onOpenChange = useCallback(isOpen => {\n window.clearTimeout(scrollTimeoutRef.current);\n if (isOpen) {\n isScrollOnOpenEnabledRef.current = true;\n\n // setTimeout is necessary for popover to be available\n scrollTimeoutRef.current = window.setTimeout(() => {\n setScrollAreaEl(findScrollArea(ref.current));\n }, 0);\n } else {\n setScrollAreaEl(null);\n }\n }, [findScrollArea]);\n return {\n ref,\n onOpenChange\n };\n}\nexport default usePopoverOnScrollRef;\n//# sourceMappingURL=usePopoverOnScrollRef.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 { useEffect, useState } from 'react';\n\n/**\n * Debounces a value.\n * Returns the initial value immediately.\n * Returns the latest value after no changes have occurred for the debounce duration.\n * @param value Value to debounce\n * @param debounceMs Amount of time to debounce\n * @returns The debounced value + whether the value is still debouncing\n */\nexport function useDebouncedValue(value, debounceMs) {\n var [isDebouncing, setIsDebouncing] = useState(true);\n var [debouncedValue, setDebouncedValue] = useState(value);\n\n // Keep `isDebouncing` in sync with `value` and `debounceMs` by setting state\n // during render instead of in `useEffect`\n // https://react.dev/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes\n var [previousValue, setPreviousValue] = useState(value);\n var [previousDebounceMs, setPreviousDebounceMs] = useState(debounceMs);\n if (value !== previousValue || debounceMs !== previousDebounceMs) {\n setIsDebouncing(true);\n setPreviousValue(value);\n setPreviousDebounceMs(debounceMs);\n }\n useEffect(() => {\n var isCancelled = false;\n var timeoutId = setTimeout(() => {\n if (!isCancelled) {\n setIsDebouncing(false);\n setDebouncedValue(value);\n }\n }, debounceMs);\n return () => {\n isCancelled = true;\n clearTimeout(timeoutId);\n };\n }, [value, debounceMs]);\n return {\n isDebouncing,\n value: debouncedValue\n };\n}\nexport default useDebouncedValue;\n//# sourceMappingURL=useDebouncedValue.js.map","import { useCallback } from 'react';\n\n/**\n * Returns a callback that sets attributes on elements based on given selectors.\n * @param attributes Attributes object containing prop name + values to set\n * @param selectors Optional `querySelector` param to target child elements. If\n * omitted, will target the rootEl\n */\nexport function useSetAttributesCallback(attributes, selectors) {\n return useCallback(rootEl => {\n if (rootEl == null) {\n return;\n }\n var targets = selectors == null ? [rootEl] : rootEl.querySelectorAll(selectors);\n targets.forEach(target => {\n Object.entries(attributes).forEach(_ref => {\n var [prop, value] = _ref;\n target.setAttribute(prop, value);\n });\n });\n }, [attributes, selectors]);\n}\nexport default useSetAttributesCallback;\n//# sourceMappingURL=useSetAttributesCallback.js.map","import { 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","/**\n * Color values for the DH color palette exposed to end users in spectrum components.\n */\nexport var ColorValues = ['gray-50', 'gray-75', 'gray-100', 'gray-200', 'gray-300', 'gray-400', 'gray-500', 'gray-600', 'gray-700', 'gray-800', 'gray-900', 'red-100', 'red-200', 'red-300', 'red-400', 'red-500', 'red-600', 'red-700', 'red-800', 'red-900', 'red-1000', 'red-1100', 'red-1200', 'red-1300', 'red-1400', 'orange-100', 'orange-200', 'orange-300', 'orange-400', 'orange-500', 'orange-600', 'orange-700', 'orange-800', 'orange-900', 'orange-1000', 'orange-1100', 'orange-1200', 'orange-1300', 'orange-1400', 'yellow-100', 'yellow-200', 'yellow-300', 'yellow-400', 'yellow-500', 'yellow-600', 'yellow-700', 'yellow-800', 'yellow-900', 'yellow-1000', 'yellow-1100', 'yellow-1200', 'yellow-1300', 'yellow-1400', 'chartreuse-100', 'chartreuse-200', 'chartreuse-300', 'chartreuse-400', 'chartreuse-500', 'chartreuse-600', 'chartreuse-700', 'chartreuse-800', 'chartreuse-900', 'chartreuse-1000', 'chartreuse-1100', 'chartreuse-1200', 'chartreuse-1300', 'chartreuse-1400', 'celery-100', 'celery-200', 'celery-300', 'celery-400', 'celery-500', 'celery-600', 'celery-700', 'celery-800', 'celery-900', 'celery-1000', 'celery-1100', 'celery-1200', 'celery-1300', 'celery-1400', 'green-100', 'green-200', 'green-300', 'green-400', 'green-500', 'green-600', 'green-700', 'green-800', 'green-900', 'green-1000', 'green-1100', 'green-1200', 'green-1300', 'green-1400', 'seafoam-100', 'seafoam-200', 'seafoam-300', 'seafoam-400', 'seafoam-500', 'seafoam-600', 'seafoam-700', 'seafoam-800', 'seafoam-900', 'seafoam-1000', 'seafoam-1100', 'seafoam-1200', 'seafoam-1300', 'seafoam-1400', 'cyan-100', 'cyan-200', 'cyan-300', 'cyan-400', 'cyan-500', 'cyan-600', 'cyan-700', 'cyan-800', 'cyan-900', 'cyan-1000', 'cyan-1100', 'cyan-1200', 'cyan-1300', 'cyan-1400', 'blue-100', 'blue-200', 'blue-300', 'blue-400', 'blue-500', 'blue-600', 'blue-700', 'blue-800', 'blue-900', 'blue-1000', 'blue-1100', 'blue-1200', 'blue-1300', 'blue-1400', 'indigo-100', 'indigo-200', 'indigo-300', 'indigo-400', 'indigo-500', 'indigo-600', 'indigo-700', 'indigo-800', 'indigo-900', 'indigo-1000', 'indigo-1100', 'indigo-1200', 'indigo-1300', 'indigo-1400', 'purple-100', 'purple-200', 'purple-300', 'purple-400', 'purple-500', 'purple-600', 'purple-700', 'purple-800', 'purple-900', 'purple-1000', 'purple-1100', 'purple-1200', 'purple-1300', 'purple-1400', 'fuchsia-100', 'fuchsia-200', 'fuchsia-300', 'fuchsia-400', 'fuchsia-500', 'fuchsia-600', 'fuchsia-700', 'fuchsia-800', 'fuchsia-900', 'fuchsia-1000', 'fuchsia-1100', 'fuchsia-1200', 'fuchsia-1300', 'fuchsia-1400', 'magenta-100', 'magenta-200', 'magenta-300', 'magenta-400', 'magenta-500', 'magenta-600', 'magenta-700', 'magenta-800', 'magenta-900', 'magenta-1000', 'magenta-1100', 'magenta-1200', 'magenta-1300', 'magenta-1400', 'negative', 'notice', 'positive', 'info',\n// Additional DH ColorValues:\n'accent', 'accent-100', 'accent-200', 'accent-300', 'accent-400', 'accent-500', 'accent-600', 'accent-700', 'accent-800', 'accent-900', 'accent-1000', 'accent-1100', 'accent-1200', 'accent-1300', 'accent-1400', 'bg', 'content-bg', 'subdued-content-bg', 'surface-bg', 'fg'];\nexport function isDHColorValue(value) {\n return typeof value === 'string' && ColorValues.includes(value);\n}\n\n/**\n * Returns the a css variable color value for a given theme color.\n * If the color value is a DH color value, it returns the CSS variable.\n * Otherwise, it returns the color value as is.\n *\n * @param value a string representing a color value\n * @returns CSS variable for DH color values, otherwise the color value as is\n *\n * ex. colorValueStyle('blue-1000') => 'var(--dh-color-blue-1000)'\n * ex. colorValueStyle('red') => 'red'\n * ex. colorValueStyle('#F00') => '#F00'\n */\nexport function colorValueStyle(value) {\n if (value != null && isDHColorValue(value)) {\n return \"var(--dh-color-\".concat(value, \")\");\n }\n return value;\n}\n//# sourceMappingURL=colorUtils.js.map","var _excluded = [\"color\", \"UNSAFE_style\"];\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 { forwardRef, useMemo } from 'react';\nimport { Text as SpectrumText } from '@adobe/react-spectrum';\nimport { colorValueStyle } from \"../theme/colorUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * A Text component that re-exports the Spectrum Text component.\n * It overrides ColorValues to accept CSS color strings and custom\n * variable names from our color paletee and semantic colors.\n *\n * @param props The props for the Text component\n * @returns The Text component\n *\n */\nexport var Text = /*#__PURE__*/forwardRef((props, forwardedRef) => {\n var {\n color,\n UNSAFE_style\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var style = useMemo(() => _objectSpread(_objectSpread({}, UNSAFE_style), {}, {\n color: colorValueStyle(color)\n }), [color, UNSAFE_style]);\n return /*#__PURE__*/_jsx(SpectrumText, _objectSpread(_objectSpread({}, rest), {}, {\n ref: forwardedRef,\n UNSAFE_style: style\n }));\n});\nText.displayName = 'Text';\nexport default Text;\n//# sourceMappingURL=Text.js.map","import { isElementOfType } from '@deephaven/react-hooks';\nimport { Tooltip } from \"../popper/index.js\";\nimport { Flex } from \"./layout.js\";\nimport { Text } from \"./Text.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Tooltip for `<Item>` content.\n */\nexport function ItemTooltip(_ref) {\n var {\n children,\n options\n } = _ref;\n if (Array.isArray(children)) {\n return /*#__PURE__*/_jsx(Tooltip, {\n options: options,\n children: /*#__PURE__*/_jsx(Flex, {\n direction: \"column\",\n alignItems: \"start\",\n children: children.filter(node => isElementOfType(node, Text))\n })\n });\n }\n return /*#__PURE__*/_jsx(Tooltip, {\n options: options,\n children: children\n });\n}\nexport default ItemTooltip;\n//# sourceMappingURL=ItemTooltip.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 { Children, cloneElement, isValidElement, useState } from 'react';\nimport cl from 'classnames';\nimport { isElementOfType, useCheckOverflow } from '@deephaven/react-hooks';\nimport { NON_BREAKING_SPACE } from '@deephaven/utils';\nimport { Text } from \"./Text.js\";\nimport ItemTooltip from \"./ItemTooltip.js\";\nimport stylesCommon from \"../SpectrumComponent.module.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\";\n/**\n * Item content. Text content will be wrapped in a Spectrum Text\n * component with ellipsis overflow handling. If text content overflows and\n * tooltipOptions are provided a tooltip will be displayed when hovering over\n * the item content.\n */\nexport function ItemContent(_ref) {\n var {\n children: content,\n tooltipOptions\n } = _ref;\n var {\n checkOverflow,\n isOverflowing,\n resetIsOverflowing\n } = useCheckOverflow();\n var [previousContent, setPreviousContent] = useState(content);\n\n // Reset `isOverflowing` if content changes. It will get re-calculated as\n // `Text` components render.\n if (previousContent !== content) {\n setPreviousContent(content);\n resetIsOverflowing();\n }\n if ( /*#__PURE__*/isValidElement(content)) {\n return content;\n }\n\n /* eslint-disable no-param-reassign */\n if (content === '') {\n // Prevent the item height from collapsing when the content is empty\n content = NON_BREAKING_SPACE;\n } else if (typeof content === 'boolean') {\n // Boolean values need to be stringified to render\n content = String(content);\n } else if (Array.isArray(content)) {\n // For cases where there are multiple `Text` children, add a css class to\n // handle overflow. The primary use case for multiple text nodes is when a\n // description is provided for an item. e.g.\n // <Item textValue=\"Some Text\">\n // <SomeIcon />\n // <Text>Some Label</Text>\n // <Text slot=\"description\">Some Description</Text>\n // </Item>\n content = Children.map(content, el => isElementOfType(el, Text) ? /*#__PURE__*/cloneElement(el, _objectSpread(_objectSpread({}, el.props), {}, {\n ref: checkOverflow,\n UNSAFE_className: cl(el.props.UNSAFE_className, stylesCommon.spectrumEllipsis)\n })) : el);\n }\n if (typeof content === 'string' || typeof content === 'number') {\n content = /*#__PURE__*/_jsx(Text, {\n ref: checkOverflow,\n UNSAFE_className: stylesCommon.spectrumEllipsis,\n children: content\n });\n }\n /* eslint-enable no-param-reassign */\n\n var tooltip = tooltipOptions == null || !isOverflowing ? null : /*#__PURE__*/_jsx(ItemTooltip, {\n options: tooltipOptions,\n children: content\n });\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [content, tooltip]\n });\n}\nexport default ItemContent;\n//# sourceMappingURL=ItemContent.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 { isElementOfType } from '@deephaven/react-hooks';\nimport { ensureArray } from '@deephaven/utils';\nimport { Item, Section } from \"../shared.js\";\nimport { Text } from \"../Text.js\";\nimport ItemContent from \"../ItemContent.js\";\n/**\n * `Item.textValue` prop needs to be a non-empty string for accessibility\n * purposes. This is not displayed in the UI.\n */\nexport var ITEM_EMPTY_STRING_TEXT_VALUE = 'Empty';\n\n/**\n * React Spectrum <Section> supports an `ItemRenderer` function as a child. The\n * DH picker makes use of this internally, but we don't want to support it as\n * an incoming prop.\n */\n\n// Picker uses `icon` slot. ListView can use `image` or `illustration` slots.\n// https://github.com/adobe/react-spectrum/blob/main/packages/%40react-spectrum/picker/src/Picker.tsx#L194\n// https://github.com/adobe/react-spectrum/blob/main/packages/%40react-spectrum/list/src/ListViewItem.tsx#L266-L267\n/**\n * Augment the Spectrum selection key type to include boolean values.\n * Spectrum collection components already supports this, but the built in types\n * don't reflect it.\n */\n/**\n * Augment the Spectrum selection change handler type to include boolean keys.\n * Spectrum components already supports this, but the built in types don't\n * reflect it.\n */\n/**\n * Spectrum collection components support a variety of item types, including\n * strings, numbers, booleans, and more complex React elements. This type\n * represents a normalized form to make rendering items simpler and keep the\n * logic of transformation in separate util methods. It also adheres to the\n * `KeyedItem` interface to be compatible with Windowed data utils\n * (e.g. `useViewportData`).\n */\n/**\n * DH wrappers of Spectrum collection components use a normalized item that\n * includes a `key` prop and an optional `item` prop. This is mostly to support\n * Windowed data where items are created before their data has been loaded (data\n * gets set in the `item` prop). If data has loaded, return its `key`. If not,\n * return the top-level `key` on the normalized item.\n * @param item The normalized item or section\n * @returns The `key` of the item or section\n */\nexport function getItemKey(item) {\n var _item$item$key, _item$item;\n return (_item$item$key = item === null || item === void 0 ? void 0 : (_item$item = item.item) === null || _item$item === void 0 ? void 0 : _item$item.key) !== null && _item$item$key !== void 0 ? _item$item$key : item === null || item === void 0 ? void 0 : item.key;\n}\n\n/**\n * Get the position of the item with the given selected key in a list of items.\n * @param items The items to search\n * @param itemHeight The height of each item\n * @param selectedKey The key of the selected item\n * @param topOffset The top offset of the list\n * @returns The position of the selected item or the top offset if not found\n */\nexport function getPositionOfSelectedItemElement(_x) {\n return _getPositionOfSelectedItemElement.apply(this, arguments);\n}\n\n/**\n * Determine if a node is a Section element.\n * @param node The node to check\n * @returns True if the node is a Section element\n */\nfunction _getPositionOfSelectedItemElement() {\n _getPositionOfSelectedItemElement = _asyncToGenerator(function* (_ref) {\n var {\n items,\n itemHeight,\n selectedKey,\n topOffset\n } = _ref;\n var position = topOffset;\n if (selectedKey == null) {\n return position;\n }\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n if (item.key === selectedKey) {\n return position;\n }\n position += itemHeight;\n }\n return topOffset;\n });\n return _getPositionOfSelectedItemElement.apply(this, arguments);\n}\nexport function isSectionElement(node) {\n return isElementOfType(node, Section);\n}\n\n/**\n * Determine if a node is an Item element.\n * @param node The node to check\n * @returns True if the node is an Item element\n */\nexport function isItemElement(node) {\n return isElementOfType(node, Item);\n}\n\n/**\n * Determine if a node is an Item element containing a child `Text` element with\n * a `slot` prop set to `description`.\n * @param node The node to check\n * @returns True if the node is an Item element with a description\n */\nexport function isItemElementWithDescription(node) {\n if (!isItemElement(node)) {\n return false;\n }\n\n // If children are wrapped in `ItemContent`, go down 1 level\n var children = isElementOfType(node.props.children, ItemContent) ? node.props.children.props.children : node.props.children;\n var childrenArray = ensureArray(children);\n var result = childrenArray.some(child => {\n var _child$props;\n return isElementOfType(child, Text) && ((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.slot) === 'description';\n });\n return result;\n}\n\n/**\n * Determine if a node is an array containing normalized items or sections with\n * keys. Note that this only checks the first node in the array.\n * @param node The node to check\n * @returns True if the node is a normalized item or section with keys array\n */\nexport function isNormalizedItemsWithKeysList(node) {\n if (!Array.isArray(node)) {\n return false;\n }\n if (node.length === 0) {\n return true;\n }\n return !isItemOrSection(node[0]) && 'key' in node[0];\n}\n\n/**\n * Determine if an object is a normalized section.\n * @param maybeNormalizedSection The object to check\n * @returns True if the object is a normalized section\n */\nexport function isNormalizedSection(maybeNormalizedSection) {\n return maybeNormalizedSection.item != null && 'items' in maybeNormalizedSection.item;\n}\n\n/**\n * Determine if a node is an item or section. Valid types include strings,\n * numbers, booleans, Item elements, and Section elements.\n * @param node The node to check\n * @returns True if the node is an item or section\n */\nexport function isItemOrSection(node) {\n return typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean' || isItemElement(node) || isSectionElement(node);\n}\n\n/**\n * Returns a TooltipOptions object or null if options is false or null.\n * @param options Tooltip options\n * @param placement Default placement for the tooltip if `options` is set\n * explicitly to `true`\n * @returns TooltipOptions or null\n */\nexport function normalizeTooltipOptions(options) {\n var placement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'right';\n if (options == null || options === false) {\n return null;\n }\n if (options === true) {\n return {\n placement\n };\n }\n return options;\n}\n\n/**\n * Convert a selection of `ItemKey`s to a selection of strings.\n * @param itemKeys The selection of `ItemKey`s\n * @returns The selection of strings\n */\nexport function itemSelectionToStringSet(itemKeys) {\n if (itemKeys == null || itemKeys === 'all') {\n return itemKeys;\n }\n return new Set([...itemKeys].map(String));\n}\n//# sourceMappingURL=itemUtils.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 { cloneElement } from 'react';\nimport { Item } from '@adobe/react-spectrum';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dh as dhIcons } from '@deephaven/icons';\nimport { isElementOfType } from '@deephaven/react-hooks';\nimport { ensureArray, NON_BREAKING_SPACE } from '@deephaven/utils';\nimport { isItemElement, isSectionElement, ITEM_EMPTY_STRING_TEXT_VALUE } from \"./itemUtils.js\";\nimport { ItemContent } from \"../ItemContent.js\";\nimport { Icon } from \"../icons.js\";\nimport { Text } from \"../Text.js\";\n/**\n * If the given content is a string, wrap it in an Icon component. Otherwise,\n * return the original content. If the key is not found in the dhIcons object,\n * the vsBlank icon will be used.\n * @param maybeIconKey The content to wrap\n * @param slot The slot to use for the Icon component\n * @returns The wrapped content or original content if not a string\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function wrapIcon(maybeIconKey, slot) {\n var _maybeIconKey, _dhIcons$maybeIconKey;\n // eslint-disable-next-line no-param-reassign\n maybeIconKey = (_maybeIconKey = maybeIconKey) !== null && _maybeIconKey !== void 0 ? _maybeIconKey : '';\n if (typeof maybeIconKey !== 'string') {\n return maybeIconKey;\n }\n return /*#__PURE__*/_jsx(Icon, {\n slot: slot,\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: (_dhIcons$maybeIconKey = dhIcons[maybeIconKey]) !== null && _dhIcons$maybeIconKey !== void 0 ? _dhIcons$maybeIconKey : dhIcons.vsBlank\n })\n });\n}\n\n/**\n * Ensure all primitive children are wrapped in `Item` elements and that all\n * `Item` element content is wrapped in `ItemContent` elements to handle text\n * overflow consistently and to support tooltips.\n * @param itemsOrSections The items or sections to wrap\n * @param tooltipOptions The tooltip options to use when wrapping items\n * @returns The wrapped items or sections\n */\nexport function wrapItemChildren(itemsOrSections, tooltipOptions) {\n var itemsOrSectionsArray = ensureArray(itemsOrSections);\n var result = itemsOrSectionsArray.map(item => {\n if (isItemElement(item)) {\n var _item$key;\n // Item content is already wrapped\n if (isElementOfType(item.props.children, ItemContent)) {\n return item;\n }\n var key = (_item$key = item.key) !== null && _item$key !== void 0 ? _item$key : item.props.textValue;\n var _textValue = item.props.textValue === '' ? ITEM_EMPTY_STRING_TEXT_VALUE : item.props.textValue;\n\n // Wrap in `ItemContent` so we can support tooltips and handle text\n // overflow\n return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, item.props), {}, {\n key,\n textValue: _textValue,\n children: /*#__PURE__*/_jsx(ItemContent, {\n tooltipOptions: tooltipOptions,\n children: item.props.children\n })\n }));\n }\n if (isSectionElement(item)) {\n var _item$key2;\n return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, item.props), {}, {\n key: (_item$key2 = item.key) !== null && _item$key2 !== void 0 ? _item$key2 : typeof item.props.title === 'string' ? item.props.title : undefined,\n children: wrapItemChildren(item.props.children, tooltipOptions)\n }));\n }\n var text = String(item);\n var textValue = text === '' ? ITEM_EMPTY_STRING_TEXT_VALUE : text;\n return /*#__PURE__*/_jsx(Item, {\n textValue: textValue,\n children: /*#__PURE__*/_jsx(ItemContent, {\n tooltipOptions: tooltipOptions,\n children: text\n })\n }, text);\n });\n\n // Keep consistent with original data structure as array or single node\n return Array.isArray(itemsOrSections) ? result : result[0];\n}\n\n/**\n * If the given content is a primitive type, wrap it in a Text component.\n * @param content The content to wrap\n * @param slot The slot to use for the Text component\n * @returns The wrapped content or original content if not a primitive type\n */\nexport function wrapPrimitiveWithText(content, slot) {\n var _content;\n // eslint-disable-next-line no-param-reassign\n content = (_content = content) !== null && _content !== void 0 ? _content : '';\n if (['string', 'boolean', 'number'].includes(typeof content)) {\n return /*#__PURE__*/_jsx(Text, {\n slot: slot,\n children: content === '' ? NON_BREAKING_SPACE : String(content)\n });\n }\n return content;\n}\n//# sourceMappingURL=itemWrapperUtils.js.map","var _excluded = [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-details\", \"marginX\", \"marginY\", \"width\", \"height\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\", \"flex\", \"flexGrow\", \"flexShrink\", \"flexBasis\", \"justifySelf\", \"alignSelf\", \"order\", \"gridArea\", \"gridColumn\", \"gridRow\", \"gridColumnStart\", \"gridColumnEnd\", \"gridRowStart\", \"gridRowEnd\", \"position\", \"zIndex\", \"top\", \"bottom\", \"start\", \"end\", \"left\", \"right\", \"isHidden\"];\nfunction _objectWithoutProperties(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/**\n * Separate props for Spectrum components into AriaLabelingProps, StyleProps, and\n * any remaining props.\n * @param props The props to separate\n * @returns The separated props\n */\nexport function separateSpectrumProps(props) {\n var {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaHidden,\n marginX,\n marginY,\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n flex,\n flexGrow,\n flexShrink,\n flexBasis,\n justifySelf,\n alignSelf,\n order,\n gridArea,\n gridColumn,\n gridRow,\n gridColumnStart,\n gridColumnEnd,\n gridRowStart,\n gridRowEnd,\n position,\n zIndex,\n top,\n bottom,\n start,\n end,\n left,\n right,\n isHidden\n } = props,\n componentProps = _objectWithoutProperties(props, _excluded);\n return {\n ariaLabelProps: {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaHidden\n },\n styleProps: {\n marginX,\n marginY,\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n flex,\n flexGrow,\n flexShrink,\n flexBasis,\n justifySelf,\n alignSelf,\n order,\n gridArea,\n gridColumn,\n gridRow,\n gridColumnStart,\n gridColumnEnd,\n gridRowStart,\n gridRowEnd,\n position,\n zIndex,\n top,\n bottom,\n start,\n end,\n left,\n right,\n isHidden\n },\n componentProps: componentProps\n };\n}\nexport default separateSpectrumProps;\n//# sourceMappingURL=propsUtils.js.map","import { useCallback } from 'react';\nimport { ItemContent } from \"../ItemContent.js\";\nimport { Item } from \"../shared.js\";\nimport { getItemKey, ITEM_EMPTY_STRING_TEXT_VALUE } from \"./itemUtils.js\";\nimport { wrapIcon, wrapPrimitiveWithText } from \"./itemWrapperUtils.js\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Returns a render function that can be used to render a normalized item in\n * collection components.\n * @param itemIconSlot Slot to use for item icons\n * @param showItemDescriptions Whether to show item descriptions\n * @param showItemIcons Whether to show item icons\n * @param tooltipOptions Tooltip options to use when rendering the item\n * @returns Render function for normalized items\n */\nexport function useRenderNormalizedItem(_ref) {\n var {\n itemIconSlot,\n showItemDescriptions,\n showItemIcons,\n tooltipOptions\n } = _ref;\n return useCallback(normalizedItem => {\n var _normalizedItem$item, _normalizedItem$item$, _normalizedItem$item2, _normalizedItem$item3, _normalizedItem$item4;\n var key = getItemKey(normalizedItem);\n var content = wrapPrimitiveWithText((_normalizedItem$item = normalizedItem.item) === null || _normalizedItem$item === void 0 ? void 0 : _normalizedItem$item.content);\n var textValue = (_normalizedItem$item$ = (_normalizedItem$item2 = normalizedItem.item) === null || _normalizedItem$item2 === void 0 ? void 0 : _normalizedItem$item2.textValue) !== null && _normalizedItem$item$ !== void 0 ? _normalizedItem$item$ : '';\n var description = showItemDescriptions ? wrapPrimitiveWithText((_normalizedItem$item3 = normalizedItem.item) === null || _normalizedItem$item3 === void 0 ? void 0 : _normalizedItem$item3.description, 'description') : null;\n var icon = showItemIcons ? wrapIcon((_normalizedItem$item4 = normalizedItem.item) === null || _normalizedItem$item4 === void 0 ? void 0 : _normalizedItem$item4.icon, itemIconSlot) : null;\n return /*#__PURE__*/_jsx(Item\n // Note that setting the `key` prop explicitly on `Item` elements\n // causes the picker to expect `selectedKey` and `defaultSelectedKey`\n // to be strings. It also passes the stringified value of the key to\n // `onSelectionChange` handlers` regardless of the actual type of the\n // key. We can't really get around setting in order to support Windowed\n // data, so we'll need to do some manual conversion of keys to strings\n // in other components that use this hook.\n , {\n // The `textValue` prop gets used to provide the content of `<option>`\n // elements that back the Spectrum Picker. These are not visible in the UI,\n // but are used for accessibility purposes, so we set to an arbitrary\n // `ITEM_EMPTY_STRING_TEXT_VALUE` value so that they are not empty strings.\n textValue: textValue === '' ? ITEM_EMPTY_STRING_TEXT_VALUE : textValue,\n children: /*#__PURE__*/_jsxs(ItemContent, {\n tooltipOptions: tooltipOptions,\n children: [icon, content, description]\n })\n }, key);\n }, [itemIconSlot, showItemDescriptions, showItemIcons, tooltipOptions]);\n}\nexport default useRenderNormalizedItem;\n//# sourceMappingURL=useRenderNormalizedItem.js.map","import { useCallback, useMemo } from 'react';\nimport { getItemKey, itemSelectionToStringSet } from \"./itemUtils.js\";\n/**\n * Spectrum collection components treat keys as strings if the `key` prop is\n * explicitly set on `Item` elements. Since we do this in `useRenderNormalizedItem`,\n * we need to ensure that keys are strings in order for selection to work. We\n * then need to convert back to the original key types in the onChange handler.\n * This hook encapsulates converting to and from strings so that keys can match\n * the original key type.\n * @param normalizedItems The normalized items to select from.\n * @param selectedKeys The currently selected keys in the collection.\n * @param defaultSelectedKeys The initial selected keys in the collection.\n * @param disabledKeys The currently disabled keys in the collection.\n * @param onChange Handler that is called when the selection changes.\n * @returns UseStringifiedMultiSelectionResult with stringified key sets and\n * string key selection change handler.\n */\nexport function useStringifiedMultiSelection(_ref) {\n var {\n normalizedItems,\n defaultSelectedKeys,\n disabledKeys,\n selectedKeys,\n onChange\n } = _ref;\n var selectedStringKeys = useMemo(() => itemSelectionToStringSet(selectedKeys), [selectedKeys]);\n var defaultSelectedStringKeys = useMemo(() => itemSelectionToStringSet(defaultSelectedKeys), [defaultSelectedKeys]);\n var disabledStringKeys = useMemo(() => itemSelectionToStringSet(disabledKeys), [disabledKeys]);\n var onStringSelectionChange = useCallback(keys => {\n if (onChange == null) {\n return;\n }\n if (keys === 'all') {\n onChange('all');\n return;\n }\n var actualKeys = new Set();\n normalizedItems.forEach(item => {\n if (keys.has(String(getItemKey(item)))) {\n actualKeys.add(getItemKey(item));\n }\n });\n onChange(actualKeys);\n }, [normalizedItems, onChange]);\n return {\n selectedStringKeys,\n defaultSelectedStringKeys,\n disabledStringKeys,\n onStringSelectionChange\n };\n}\nexport default useStringifiedMultiSelection;\n//# sourceMappingURL=useStringifiedMultiSelection.js.map","import { useCallback, useMemo } from 'react';\nimport { getItemKey, itemSelectionToStringSet } from \"./itemUtils.js\";\n/**\n * Spectrum collection components treat keys as strings if the `key` prop is\n * explicitly set on `Item` elements. Since we do this in `useRenderNormalizedItem`,\n * we need to ensure that keys are strings in order for selection to work. We\n * then need to convert back to the original key types in the onChange handler.\n * This hook encapsulates converting to and from strings so that keys can match\n * the original key type.\n * @param normalizedItems The normalized items to select from.\n * @param selectedKey The currently selected key in the collection.\n * @param defaultSelectedKey The initial selected key in the collection.\n * @param disabledKeys The currently disabled keys in the collection.\n * @param onChange Handler that is called when the selection changes.\n * @returns UseStringifiedSelectionResult with stringified key sets and string\n * key selection change handler.\n */\nexport function useStringifiedSelection(_ref) {\n var {\n normalizedItems,\n defaultSelectedKey,\n selectedKey,\n disabledKeys,\n onChange\n } = _ref;\n var selectedStringKey = useMemo(() => selectedKey == null ? selectedKey : String(selectedKey), [selectedKey]);\n var defaultSelectedStringKey = useMemo(() => defaultSelectedKey == null ? defaultSelectedKey : String(defaultSelectedKey), [defaultSelectedKey]);\n var disabledStringKeys = useMemo(() => itemSelectionToStringSet(disabledKeys), [disabledKeys]);\n var onStringSelectionChange = useCallback(key => {\n var _getItemKey;\n if (onChange == null) {\n return;\n }\n\n // The `key` arg will always be a string due to us setting the `Item` key\n // prop in `renderItem`. We need to find the matching item to determine\n // the actual key.\n var selectedItem = normalizedItems.find(item => String(getItemKey(item)) === key);\n var actualKey = (_getItemKey = getItemKey(selectedItem)) !== null && _getItemKey !== void 0 ? _getItemKey : key;\n onChange(actualKey);\n }, [normalizedItems, onChange]);\n return {\n selectedStringKey,\n defaultSelectedStringKey,\n disabledStringKeys,\n onStringSelectionChange\n };\n}\nexport default useStringifiedSelection;\n//# sourceMappingURL=useStringifiedSelection.js.map","import { useCallback } from 'react';\nimport { Item, Picker } from '@adobe/react-spectrum';\nimport useTheme from \"./useTheme.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ThemePicker() {\n var {\n selectedThemeKey,\n setSelectedThemeKey,\n themes\n } = useTheme();\n var onSelectionChange = useCallback(key => {\n setSelectedThemeKey(key);\n }, [setSelectedThemeKey]);\n return /*#__PURE__*/_jsx(Picker, {\n label: \"Pick a color scheme\",\n items: themes,\n selectedKey: selectedThemeKey,\n onSelectionChange: onSelectionChange,\n children: item => /*#__PURE__*/_jsx(Item, {\n children: item.name\n }, item.themeKey)\n });\n}\nexport default ThemePicker;\n//# sourceMappingURL=ThemePicker.js.map","import classNames from 'classnames';\nimport \"./Logo.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function Logo(_ref) {\n var {\n className,\n style\n } = _ref;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('dh-logo', className),\n style: style\n });\n}\nexport default Logo;\n//# sourceMappingURL=Logo.js.map","import { useProvider } from '@adobe/react-spectrum';\nexport var useSpectrumThemeProvider = useProvider;\nexport default useSpectrumThemeProvider;\n//# sourceMappingURL=useSpectrumThemeProvider.js.map","var _excluded = [\"onScroll\"];\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 { ListView as SpectrumListView } from '@adobe/react-spectrum';\nimport { extractSpectrumHTMLElement, useContentRect, useOnScrollRef } from '@deephaven/react-hooks';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport cl from 'classnames';\nimport { useSpectrumThemeProvider } from \"../../theme/index.js\";\nimport { Flex } from \"../layout.js\";\nimport { separateSpectrumProps } from \"../utils/index.js\";\nimport \"./ListViewWrapper.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Helper component to wrap a ListView with the appropriate styling + scroll\n * handling. This is used by both the `@deephaven/components` `ListView` and\n * the `@deephaven/jsapi-components` `ListView` (via `ListViewNormalized`) to\n * ensure consistency.\n *\n * Note that This component will usually not be used directly. Instead, it is\n * recommended to use\n * - `@deephaven/components`'s `ListView` for non-table data sources\n * - `@deephaven/jsapi-components`'s `ListView` for table data sources\n */\nexport function ListViewWrapper(props) {\n var _styleProps$minHeight, _listViewProps$densit;\n var {\n ariaLabelProps,\n componentProps,\n styleProps\n } = separateSpectrumProps(props);\n var {\n onScroll = EMPTY_FUNCTION\n } = componentProps,\n listViewProps = _objectWithoutProperties(componentProps, _excluded);\n var {\n scale\n } = useSpectrumThemeProvider();\n var scrollRef = useOnScrollRef(onScroll, extractSpectrumHTMLElement);\n\n // Spectrum ListView crashes when it has zero height. Track the contentRect\n // of the parent container and only render the ListView when it has a non-zero\n // height. See https://github.com/adobe/react-spectrum/issues/6213\n var {\n ref: contentRectRef,\n contentRect\n } = useContentRect(extractSpectrumHTMLElement);\n return /*#__PURE__*/_jsx(Flex, _objectSpread(_objectSpread({\n direction: \"column\",\n ref: contentRectRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, styleProps), {}, {\n // Set min-height to 1px so that `ListView` is rendered whenever container\n // is visible. This prevents the height from shrinking to zero as a result\n // of a parent grid or flex container calculating content sizes. The\n // container height can still be zero when it is not being displayed such\n // as when one of its parents have `display: none`.\n minHeight: (_styleProps$minHeight = styleProps.minHeight) !== null && _styleProps$minHeight !== void 0 ? _styleProps$minHeight : 1,\n UNSAFE_className: cl('dh-list-view-wrapper', \"dh-list-view-wrapper-density-\".concat((_listViewProps$densit = listViewProps.density) !== null && _listViewProps$densit !== void 0 ? _listViewProps$densit : 'regular'), \"dh-list-view-wrapper-scale-\".concat(scale), styleProps.UNSAFE_className),\n children: contentRect.height === 0 ? null : /*#__PURE__*/_jsx(SpectrumListView, _objectSpread(_objectSpread({\n ref: scrollRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, ariaLabelProps), listViewProps))\n }));\n}\nexport default ListViewWrapper;\n//# sourceMappingURL=ListViewWrapper.js.map","var _excluded = [\"children\", \"tooltip\", \"selectedKeys\", \"defaultSelectedKeys\", \"disabledKeys\", \"UNSAFE_className\", \"onChange\", \"onScroll\", \"onSelectionChange\"];\nfunction ownKeys(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 { useMemo } from 'react';\nimport cl from 'classnames';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { normalizeTooltipOptions, wrapItemChildren } from \"../utils/index.js\";\nimport { ListViewWrapper } from \"./ListViewWrapper.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ListView(_ref) {\n var {\n children,\n tooltip = true,\n selectedKeys,\n defaultSelectedKeys,\n disabledKeys,\n UNSAFE_className,\n onChange,\n onScroll = EMPTY_FUNCTION,\n onSelectionChange\n } = _ref,\n spectrumListViewProps = _objectWithoutProperties(_ref, _excluded);\n var tooltipOptions = useMemo(() => normalizeTooltipOptions(tooltip, 'bottom'), [tooltip]);\n var wrappedItems = useMemo(() => wrapItemChildren(children, tooltipOptions), [children, tooltipOptions]);\n return /*#__PURE__*/_jsx(ListViewWrapper\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, spectrumListViewProps), {}, {\n UNSAFE_className: cl('dh-list-view', UNSAFE_className),\n selectedKeys: selectedKeys,\n defaultSelectedKeys: defaultSelectedKeys,\n disabledKeys: disabledKeys,\n onScroll: onScroll,\n onSelectionChange: onChange !== null && onChange !== void 0 ? onChange : onSelectionChange,\n children: wrappedItems\n }));\n}\nexport default ListView;\n//# sourceMappingURL=ListView.js.map","var _excluded = [\"normalizedItems\", \"tooltip\", \"selectedKeys\", \"defaultSelectedKeys\", \"disabledKeys\", \"showItemIcons\", \"UNSAFE_className\", \"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 _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 { useMemo } from 'react';\nimport cl from 'classnames';\nimport { normalizeTooltipOptions, useRenderNormalizedItem, useStringifiedMultiSelection } from \"../utils/index.js\";\nimport { ListViewWrapper } from \"./ListViewWrapper.js\";\nimport { createElement as _createElement } from \"react\";\n/**\n * ListView supporting normalized item data. This component mostly exists to\n * decouple some of the logic needed to support table data. Specifically it\n * handles item rendering configurations as well as converting selection keys\n * to / from strings. This makes it easier to test logic in isolation without\n * a dependency on JS apis (e.g. in the Styleguide).\n *\n * Note that This component will usually not be used directly. Instead, it is\n * recommended to use\n * - `@deephaven/components`'s `ListView` for non-table data sources\n * - `@deephaven/jsapi-components`'s `ListView` for table data sources\n */\nexport function ListViewNormalized(_ref) {\n var {\n normalizedItems,\n tooltip = true,\n selectedKeys,\n defaultSelectedKeys,\n disabledKeys,\n showItemIcons,\n UNSAFE_className,\n onChange,\n onSelectionChange\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var tooltipOptions = useMemo(() => normalizeTooltipOptions(tooltip, 'bottom'), [tooltip]);\n var renderNormalizedItem = useRenderNormalizedItem({\n itemIconSlot: 'illustration',\n // Descriptions introduce variable item heights which throws off setting\n // viewport on windowed data. For now not going to implement description\n // support in Picker.\n // https://github.com/deephaven/web-client-ui/issues/1958\n showItemDescriptions: false,\n showItemIcons,\n tooltipOptions\n });\n\n // Spectrum doesn't re-render if only the `renderNormalizedItems` function\n // changes, so we create a key from its dependencies that can be used to force\n // re-render.\n var forceRerenderKey = \"\".concat(showItemIcons, \"-\").concat(tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.placement);\n var {\n selectedStringKeys,\n defaultSelectedStringKeys,\n disabledStringKeys,\n onStringSelectionChange\n } = useStringifiedMultiSelection({\n normalizedItems,\n selectedKeys,\n defaultSelectedKeys,\n disabledKeys,\n onChange: onChange !== null && onChange !== void 0 ? onChange : onSelectionChange\n });\n return /*#__PURE__*/_createElement(ListViewWrapper\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, props), {}, {\n UNSAFE_className: cl('dh-list-view-normalized', UNSAFE_className),\n key: forceRerenderKey,\n items: normalizedItems,\n selectedKeys: selectedStringKeys,\n defaultSelectedKeys: defaultSelectedStringKeys,\n disabledKeys: disabledStringKeys,\n onSelectionChange: onStringSelectionChange\n }), renderNormalizedItem);\n}\nexport default ListViewNormalized;\n//# sourceMappingURL=ListViewNormalized.js.map","import { useCallback } from 'react';\nimport { findSpectrumPickerScrollArea, usePopoverOnScrollRef } from '@deephaven/react-hooks';\n/**\n * Handle scroll event registration and scrolling to initial scroll position\n * whenever a Picker popover is opened.\n * @param getInitialScrollPosition Function to get the initial scroll position.\n * @param onScroll Callback for scroll events.\n * @param onOpenChange Callback for open change events.\n * @return A ref to attach to the Picker and a callback to handle open change\n * events for the Picker.\n */\nexport function usePickerScrollOnOpen(_ref) {\n var {\n getInitialScrollPosition,\n onScroll,\n onOpenChange\n } = _ref;\n var {\n ref,\n onOpenChange: popoverOnOpenChange\n } = usePopoverOnScrollRef(findSpectrumPickerScrollArea, onScroll, getInitialScrollPosition);\n var onOpenChangeInternal = useCallback(isOpen => {\n // Attach scroll event handling\n popoverOnOpenChange(isOpen);\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(isOpen);\n }, [onOpenChange, popoverOnOpenChange]);\n return {\n ref,\n onOpenChange: onOpenChangeInternal\n };\n}\nexport default usePickerScrollOnOpen;\n//# sourceMappingURL=usePickerScrollOnOpen.js.map","var _excluded = [\"children\", \"tooltip\", \"defaultSelectedKey\", \"selectedKey\", \"onChange\", \"onOpenChange\", \"onScroll\", \"onSelectionChange\", \"UNSAFE_className\"];\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, useMemo, useState } from 'react';\nimport { Picker as SpectrumPicker } from '@adobe/react-spectrum';\nimport cl from 'classnames';\nimport { EMPTY_FUNCTION, ensureArray, PICKER_ITEM_HEIGHTS, PICKER_TOP_OFFSET } from '@deephaven/utils';\nimport { getPositionOfSelectedItemElement, normalizeTooltipOptions, isItemElementWithDescription, isSectionElement } from \"../utils/itemUtils.js\";\nimport { wrapItemChildren } from \"../utils/itemWrapperUtils.js\";\nimport usePickerScrollOnOpen from \"./usePickerScrollOnOpen.js\";\nimport { useSpectrumThemeProvider } from \"../../theme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Picker component for selecting items from a list of items. Items can be\n * provided via the `children` prop. Each item can be a string,\tnumber, boolean,\n * or a Spectrum <Item> element. The remaining props are just\tpass through props\n * for the Spectrum Picker component.\n * See https://react-spectrum.adobe.com/react-spectrum/Picker.html\n */\nexport function Picker(_ref) {\n var {\n children,\n tooltip = true,\n defaultSelectedKey,\n selectedKey,\n onChange,\n onOpenChange,\n onScroll = EMPTY_FUNCTION,\n onSelectionChange,\n // eslint-disable-next-line camelcase\n UNSAFE_className\n } = _ref,\n spectrumPickerProps = _objectWithoutProperties(_ref, _excluded);\n var {\n scale\n } = useSpectrumThemeProvider();\n var itemHeight = PICKER_ITEM_HEIGHTS[scale];\n var tooltipOptions = useMemo(() => normalizeTooltipOptions(tooltip), [tooltip]);\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 = selectedKey === undefined;\n var [uncontrolledSelectedKey, setUncontrolledSelectedKey] = useState(defaultSelectedKey);\n var wrappedItems = useMemo(() => ensureArray(wrapItemChildren(children, tooltipOptions)), [children, tooltipOptions]);\n\n // Item descriptions and Section elements introduce variable item heights.\n // This throws off scroll position calculations, so we disable auto scrolling\n // if either of these are found.\n var disableScrollOnOpen = useMemo(() => wrappedItems.some(item => isSectionElement(item) || isItemElementWithDescription(item)), [wrappedItems]);\n var getInitialScrollPosition = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n return disableScrollOnOpen ? null : getPositionOfSelectedItemElement({\n items: wrappedItems,\n itemHeight,\n selectedKey: isUncontrolled ? uncontrolledSelectedKey : selectedKey,\n topOffset: PICKER_TOP_OFFSET\n });\n }), [disableScrollOnOpen, isUncontrolled, itemHeight, selectedKey, uncontrolledSelectedKey, wrappedItems]);\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 var {\n ref: scrollRef,\n onOpenChange: onOpenChangeInternal\n } = usePickerScrollOnOpen({\n getInitialScrollPosition,\n onScroll,\n onOpenChange\n });\n return /*#__PURE__*/_jsx(SpectrumPicker\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, spectrumPickerProps), {}, {\n ref: scrollRef,\n UNSAFE_className: cl('dh-picker', UNSAFE_className),\n selectedKey: selectedKey,\n defaultSelectedKey: defaultSelectedKey,\n onSelectionChange: onSelectionChangeInternal,\n onOpenChange: onOpenChangeInternal,\n children: wrappedItems\n }));\n}\nexport default Picker;\n//# sourceMappingURL=Picker.js.map","var _excluded = [\"normalizedItems\", \"tooltip\", \"selectedKey\", \"defaultSelectedKey\", \"disabledKeys\", \"showItemIcons\", \"UNSAFE_className\", \"getInitialScrollPosition\", \"onChange\", \"onOpenChange\", \"onScroll\", \"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 _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 { useMemo } from 'react';\nimport { Picker as SpectrumPicker } from '@adobe/react-spectrum';\nimport cl from 'classnames';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { Section } from \"../shared.js\";\nimport { getItemKey, isNormalizedSection, normalizeTooltipOptions, useRenderNormalizedItem, useStringifiedSelection } from \"../utils/index.js\";\nimport usePickerScrollOnOpen from \"./usePickerScrollOnOpen.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\n/**\n * Picker that takes an array of `NormalizedItem` or `NormalizedSection` items\n * as children and uses a render item function to render the items. This is\n * necessary to support windowed data.\n */\nexport function PickerNormalized(_ref) {\n var {\n normalizedItems,\n tooltip = true,\n selectedKey,\n defaultSelectedKey,\n disabledKeys,\n showItemIcons,\n UNSAFE_className,\n getInitialScrollPosition,\n onChange,\n onOpenChange,\n onScroll = EMPTY_FUNCTION,\n onSelectionChange\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var tooltipOptions = useMemo(() => normalizeTooltipOptions(tooltip), [tooltip]);\n var renderNormalizedItem = useRenderNormalizedItem({\n itemIconSlot: 'icon',\n // Descriptions introduce variable item heights which throws off calculation\n // of initial scroll position and setting viewport on windowed data. For now\n // not going to implement description support in Picker.\n // https://github.com/deephaven/web-client-ui/issues/1958\n showItemDescriptions: false,\n showItemIcons,\n tooltipOptions\n });\n\n // Spectrum doesn't re-render if only the `renderNormalizedItems` function\n // changes, so we create a key from its dependencies that can be used to force\n // re-render.\n var forceRerenderKey = \"\".concat(showItemIcons, \"-\").concat(tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.placement);\n var {\n ref: scrollRef,\n onOpenChange: onOpenChangeInternal\n } = usePickerScrollOnOpen({\n getInitialScrollPosition,\n onScroll,\n onOpenChange\n });\n\n // Spectrum Picker treats keys as strings if the `key` prop is explicitly\n // set on `Item` elements. Since we do this in `renderItem`, we need to\n // map original key types to and from strings so that selection works.\n var {\n selectedStringKey,\n defaultSelectedStringKey,\n disabledStringKeys,\n onStringSelectionChange\n } = useStringifiedSelection({\n normalizedItems,\n selectedKey,\n defaultSelectedKey,\n disabledKeys,\n onChange: onChange !== null && onChange !== void 0 ? onChange : onSelectionChange\n });\n return /*#__PURE__*/_createElement(SpectrumPicker\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, props), {}, {\n key: forceRerenderKey,\n ref: scrollRef,\n UNSAFE_className: cl('dh-picker', 'dh-picker-normalized', UNSAFE_className),\n items: normalizedItems,\n selectedKey: selectedStringKey,\n defaultSelectedKey: defaultSelectedStringKey,\n disabledKeys: disabledStringKeys,\n onSelectionChange: onStringSelectionChange,\n onOpenChange: onOpenChangeInternal\n }), itemOrSection => {\n if (isNormalizedSection(itemOrSection)) {\n var _itemOrSection$item, _itemOrSection$item2;\n return /*#__PURE__*/_jsx(Section, {\n title: (_itemOrSection$item = itemOrSection.item) === null || _itemOrSection$item === void 0 ? void 0 : _itemOrSection$item.title,\n items: (_itemOrSection$item2 = itemOrSection.item) === null || _itemOrSection$item2 === void 0 ? void 0 : _itemOrSection$item2.items,\n children: renderNormalizedItem\n }, getItemKey(itemOrSection));\n }\n return renderNormalizedItem(itemOrSection);\n });\n}\nexport default PickerNormalized;\n//# sourceMappingURL=PickerNormalized.js.map","var _excluded = [\"color\", \"UNSAFE_style\"];\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 { forwardRef, useMemo } from 'react';\nimport { Heading as SpectrumHeading } from '@adobe/react-spectrum';\nimport { colorValueStyle } from \"../theme/colorUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * A Heading component that re-exports the Spectrum Heading component.\n * It overrides ColorValues to accept CSS color strings and custom\n * variable names from our color paletee and semantic colors.\n *\n * @param props The props for the Heading component\n * @returns The Heading component\n *\n */\n\nexport var Heading = /*#__PURE__*/forwardRef((props, forwardedRef) => {\n var {\n color,\n UNSAFE_style\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var style = useMemo(() => _objectSpread(_objectSpread({}, UNSAFE_style), {}, {\n color: colorValueStyle(color)\n }), [color, UNSAFE_style]);\n return /*#__PURE__*/_jsx(SpectrumHeading, _objectSpread(_objectSpread({}, rest), {}, {\n ref: forwardedRef,\n UNSAFE_style: style\n }));\n});\nHeading.displayName = 'Heading';\nexport default Heading;\n//# sourceMappingURL=Heading.js.map","var _excluded = [\"backgroundColor\", \"UNSAFE_style\"];\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 { forwardRef, useMemo } from 'react';\nimport { View as SpectrumView } from '@adobe/react-spectrum';\nimport { colorValueStyle } from \"../theme/colorUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * A View component that re-exports the Spectrum View component.\n * However, it overrides ColorValues to accept CSS color strings and\n * our custom variable names from our color paletee and semantic colors.\n *\n * @param props The props for the View component\n * @returns The View component\n *\n */\n\nexport var View = /*#__PURE__*/forwardRef((props, forwardedRef) => {\n var {\n backgroundColor,\n UNSAFE_style\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var style = useMemo(() => _objectSpread(_objectSpread({}, UNSAFE_style), {}, {\n backgroundColor: colorValueStyle(backgroundColor)\n }), [backgroundColor, UNSAFE_style]);\n return /*#__PURE__*/_jsx(SpectrumView, _objectSpread(_objectSpread({}, rest), {}, {\n ref: forwardedRef,\n UNSAFE_style: style\n }));\n});\nView.displayName = 'View';\nexport default View;\n//# sourceMappingURL=View.js.map","var _excluded = [\"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); }\n/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { Popper } from \"./popper/index.js\";\nimport \"./AutoCompleteInput.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar DEBOUNCE_DELAY = 100;\nvar MENU_NAVIGATION_DIRECTION;\n(function (MENU_NAVIGATION_DIRECTION) {\n MENU_NAVIGATION_DIRECTION[\"UP\"] = \"UP\";\n MENU_NAVIGATION_DIRECTION[\"DOWN\"] = \"DOWN\";\n})(MENU_NAVIGATION_DIRECTION || (MENU_NAVIGATION_DIRECTION = {}));\nclass AutoCompleteInput extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"popper\", void 0);\n _defineProperty(this, \"cbContainer\", void 0);\n _defineProperty(this, \"menuContainer\", void 0);\n _defineProperty(this, \"input\", void 0);\n _defineProperty(this, \"getCachedFilteredOptions\", memoize((options, input) => options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0)));\n var {\n popperOptions\n } = this.props;\n popperOptions = _objectSpread({\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: {\n enabled: false\n }\n }\n }, popperOptions);\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions\n };\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.popper = /*#__PURE__*/React.createRef();\n this.cbContainer = /*#__PURE__*/React.createRef();\n this.menuContainer = /*#__PURE__*/React.createRef();\n this.input = /*#__PURE__*/React.createRef();\n }\n setInputWidth() {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width\n });\n }\n }\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title) {\n if (!title) {\n this.setState({\n invalid: false\n });\n return {\n value: title,\n isValid: false\n };\n }\n\n // validate\n var {\n options\n } = this.props;\n var result = options.filter(option => option.title.toLowerCase() === title.toLowerCase());\n if (result.length < 1) {\n this.setState({\n invalid: true\n });\n return {\n value: title,\n isValid: false\n };\n }\n this.setState({\n invalid: false\n });\n return {\n value: result[0].value,\n isValid: true\n };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title) {\n var {\n menuIsOpen\n } = this.state;\n var {\n value,\n isValid\n } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n fireOnChange(value) {\n var isValid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n onChange\n } = this.props;\n onChange(value, isValid);\n }\n processFilterChange(filter) {\n var _this$popper$current;\n var {\n options\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n var filteredOptions = filter ? this.getCachedFilteredOptions(options, filter) : options;\n var perfectMatch = filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue() {\n this.setState({\n title: ''\n });\n this.fireOnChange('');\n }\n handleResize() {\n this.setInputWidth();\n }\n handleMenuKeyDown(event) {\n var _this$input$current;\n var {\n filteredOptions,\n keyboardOptionIndex\n } = this.state;\n var option = filteredOptions[keyboardOptionIndex];\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option != null) {\n this.setState({\n title: option.title,\n invalid: false\n });\n this.fireOnChange(option.value);\n }\n this.closeMenu();\n (_this$input$current = this.input.current) === null || _this$input$current === void 0 ? void 0 : _this$input$current.focus();\n break;\n case 'ArrowUp':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n case 'ArrowDown':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n if (event.shiftKey) {\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n }\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n navigateMenu(direction) {\n var {\n filteredOptions,\n keyboardOptionIndex\n } = this.state;\n var newKeyboardOptionIndex = keyboardOptionIndex;\n if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {\n if (keyboardOptionIndex > 0) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex - 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = filteredOptions.length - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n } else if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN) {\n if (keyboardOptionIndex < filteredOptions.length) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex + 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n }\n handleInputKeyDown(event) {\n var {\n onEnter\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.handleMenuKeyDown(event);\n } else if (event.key === 'Enter') {\n onEnter();\n } else if (event.key === 'Escape') {\n this.resetValue();\n event.preventDefault();\n event.stopPropagation();\n } else if (!(event.key === 'ArrowRight' || event.key === 'ArrowLeft' || event.key === 'Tab' || event.key === 'Shift')) {\n this.openMenu();\n }\n }\n handleInputChange(event) {\n this.setState({\n title: event.target.value\n });\n this.updateInputValue(event.target.value);\n }\n handleOptionClick(option) {\n var _this$input$current2;\n this.setState({\n title: option.title,\n invalid: false\n });\n this.fireOnChange(option.value);\n this.closeMenu();\n (_this$input$current2 = this.input.current) === null || _this$input$current2 === void 0 ? void 0 : _this$input$current2.focus();\n }\n handelInputFocus() {\n var {\n menuIsOpen\n } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n handleInputClick() {\n var {\n menuIsOpen\n } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n handleInputBlur(event) {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen && event.relatedTarget instanceof Element && this.popper.current !== null && this.popper.current.element.contains(event.relatedTarget)) {\n return;\n }\n this.closeMenu(false);\n }\n handleMenuBlur(event) {\n // if blur event is caused by focusing on the input or focus on options don't close menu\n if (event.relatedTarget === this.input.current || event.relatedTarget instanceof Element && this.popper.current !== null && this.popper.current.element.contains(event.relatedTarget)) {\n return;\n }\n this.closeMenu(false);\n }\n handleMenuOpened() {\n var _this$input$current3;\n (_this$input$current3 = this.input.current) === null || _this$input$current3 === void 0 ? void 0 : _this$input$current3.focus();\n }\n handleMenuExited() {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.setState({\n menuIsOpen: false,\n keyboardOptionIndex: 0\n });\n }\n }\n openMenu() {\n var {\n title\n } = this.state;\n this.processFilterChange(title);\n this.setInputWidth();\n this.setState({\n menuIsOpen: true\n });\n\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n var _this$popper$current2;\n (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.show();\n });\n }\n closeMenu() {\n var _this$popper$current3;\n var focusInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.setState({\n menuIsOpen: false,\n keyboardOptionIndex: 0\n });\n if (focusInput) {\n var _this$input$current4;\n (_this$input$current4 = this.input.current) === null || _this$input$current4 === void 0 ? void 0 : _this$input$current4.focus();\n }\n (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.hide();\n }\n scrollOptionIntoView(index) {\n if (this.menuContainer.current) {\n var _this$menuContainer$c;\n (_this$menuContainer$c = this.menuContainer.current.children.item(index)) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest'\n });\n }\n }\n renderMenuElement() {\n var {\n inputWidth\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('aci-options'),\n ref: this.menuContainer,\n role: \"presentation\",\n onKeyDown: this.handleMenuKeyDown,\n style: {\n width: inputWidth\n },\n onBlur: this.handleMenuBlur,\n children: this.renderOptions()\n });\n }\n renderOptions() {\n var {\n noMatchText\n } = this.props;\n var {\n title,\n filteredOptions\n } = this.state;\n if (title && filteredOptions.length === 0) {\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"no-match\",\n children: noMatchText\n });\n }\n return filteredOptions.map((option, index) => this.renderOption(option, index));\n }\n renderOption(option, index) {\n var {\n keyboardOptionIndex\n } = this.state;\n var key = \"option-\".concat(index, \"-\").concat(option.value);\n return /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: classNames('aci-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index\n }),\n onClick: () => this.handleOptionClick(option),\n onFocus: () => this.setState({\n keyboardOptionIndex: index\n }),\n children: option.title\n }, key);\n }\n render() {\n var {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultTitle,\n spellCheck,\n 'data-testid': dataTestId\n } = this.props;\n var {\n title,\n menuIsOpen,\n popperOptions,\n invalid\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"aci-container\",\n ref: this.cbContainer,\n children: [/*#__PURE__*/_jsx(\"input\", {\n value: title || defaultTitle,\n className: classNames('form-control', className, 'aci-input', {\n 'is-invalid': invalid && !menuIsOpen\n }),\n ref: this.input,\n onChange: this.handleInputChange,\n placeholder: inputPlaceholder || options[0].title,\n disabled: disabled,\n onFocus: this.handelInputFocus,\n onClick: this.handleInputClick,\n onBlur: this.handleInputBlur,\n onKeyDown: this.handleInputKeyDown,\n spellCheck: spellCheck,\n \"data-testid\": dataTestId\n }), /*#__PURE__*/_jsx(Popper, {\n ref: this.popper,\n options: popperOptions,\n className: classNames('aci-options-popper interactive'),\n onEntered: this.handleMenuOpened,\n onExited: this.handleMenuExited,\n children: this.renderMenuElement()\n })]\n });\n }\n}\n_defineProperty(AutoCompleteInput, \"propTypes\", {\n options: PropTypes.arrayOf(PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired\n })).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n 'data-testid': PropTypes.string\n});\n_defineProperty(AutoCompleteInput, \"defaultProps\", {\n onChange() {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter() {\n // no-op\n },\n noMatchText: 'No matching items found',\n 'data-testid': undefined\n});\n_defineProperty(AutoCompleteInput, \"MENU_NAVIGATION_DIRECTION\", MENU_NAVIGATION_DIRECTION);\nexport default AutoCompleteInput;\n//# sourceMappingURL=AutoCompleteInput.js.map","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport \"./AutoResizeTextarea.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Makes a textarea that auto resizes based on contents, its height grows with new lines.\n * If a delimeter is set, such as \" -\" or \" \", as used by jvm args or env vars\n * then the field will also \"explode\" the value by the delimiter over new lines\n * on focus, and implode on blur. By default, it doesn't word wrap.\n */\nfunction AutoResizeTextarea(_ref) {\n var {\n className = '',\n value: propsValue,\n onChange,\n spellCheck = false,\n placeholder = '',\n disabled = false,\n delimiter = '',\n id = '',\n 'data-testid': dataTestId\n } = _ref;\n var [value, setValue] = useState(propsValue);\n var [isPastedChange, setIsPastedChange] = useState(false);\n var element = useRef(null);\n useEffect(function syncStateWithProp() {\n // keep state value in sync with prop changes\n setValue(propsValue);\n }, [propsValue]);\n function explode(input) {\n // split by delimiter, commonly \" \" or \" -\"\n // strip empty strings (if delimiter is space, and there are multiple spaces in a row)\n // and join with new line and a trimmed delimeter (get rid of leading spaces)\n return input.trim().split(delimiter).filter(string => string) // remove empty strings\n .join(\"\\n\".concat(delimiter.trim()));\n }\n function implode(input) {\n return input.split('\\n').map(string => string.trim()).join(' ');\n }\n function reCalculateLayout() {\n if (!element.current) {\n return;\n }\n element.current.style.height = '0'; // shrink component to get scrollHeight\n var resizedHeight = element.current.scrollHeight + (element.current.offsetHeight - element.current.clientHeight);\n // accounts for border, padding is captured by scroll height\n if (resizedHeight > 0) element.current.style.height = \"\".concat(resizedHeight, \"px\");\n }\n function handleChange(event) {\n var newValue = event.target.value;\n if (isPastedChange) {\n if (delimiter) newValue = explode(newValue);\n setIsPastedChange(false);\n }\n setValue(newValue);\n onChange(newValue);\n }\n function handleFocus() {\n if (!element.current) {\n return;\n }\n if (delimiter) {\n setValue(explode(value));\n reCalculateLayout();\n }\n element.current.scrollLeft = 0;\n // scroll left as it can be disorienting if you click on a long line\n }\n\n // make it explode when dragging the resize handle\n // by making it trigger focus (which normally doesn't\n // trigger when just resizing).\n function handleMouseDown() {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n function handleBlur() {\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n function handlePaste() {\n setIsPastedChange(true);\n }\n useEffect(function reCalculate() {\n reCalculateLayout();\n }, [value]);\n return /*#__PURE__*/_jsx(\"textarea\", {\n ref: element,\n id: id,\n className: classNames(className, 'auto-resize-textarea form-control'),\n placeholder: placeholder,\n value: value,\n rows: 1,\n onChange: handleChange,\n onFocus: handleFocus,\n onMouseDown: handleMouseDown,\n onBlur: handleBlur,\n onPaste: handlePaste,\n spellCheck: spellCheck,\n disabled: disabled,\n \"data-testid\": dataTestId\n });\n}\nAutoResizeTextarea.propTypes = {\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n className: PropTypes.string,\n placeholder: PropTypes.string,\n spellCheck: PropTypes.bool,\n disabled: PropTypes.bool,\n delimiter: PropTypes.string,\n id: PropTypes.string,\n 'data-testid': PropTypes.string\n};\nAutoResizeTextarea.defaultProps = {\n className: '',\n id: '',\n placeholder: '',\n disabled: false,\n spellCheck: false,\n delimiter: '',\n 'data-testid': undefined\n};\nexport default AutoResizeTextarea;\n//# sourceMappingURL=AutoResizeTextarea.js.map","import React from 'react';\nimport { useDebouncedValue } from '@deephaven/react-hooks';\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/**\n * Display a modal after a debounce time. Blocks the screen from interaction immediately,\n * but then waits the set debounce time before rendering the modal.\n */\nfunction DebouncedModal(_ref) {\n var {\n blockInteraction = true,\n children,\n debounceMs,\n isOpen = false\n } = _ref;\n var {\n value: debouncedIsOpen\n } = useDebouncedValue(isOpen, debounceMs);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [blockInteraction && isOpen && /*#__PURE__*/_jsx(\"div\", {\n className: \"modal-backdrop\",\n style: {\n backgroundColor: 'transparent'\n },\n \"data-testid\": \"debounced-modal-backdrop\"\n }), /*#__PURE__*/React.cloneElement(children, {\n isOpen: isOpen && debouncedIsOpen\n })]\n });\n}\nexport default DebouncedModal;\n//# sourceMappingURL=DebouncedModal.js.map","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Modal from \"./Modal.js\";\nimport ModalBody from \"./ModalBody.js\";\nimport \"./InfoModal.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * A modal that displays a message with an icon. Can be used for informational messages, warnings, or errors.\n * Does not have any buttons and cannot be dismissed.\n */\nfunction InfoModal(_ref) {\n var {\n className,\n icon,\n isOpen = false,\n subtitle,\n title\n } = _ref;\n return /*#__PURE__*/_jsx(Modal, {\n isOpen: isOpen,\n className: className,\n children: /*#__PURE__*/_jsx(ModalBody, {\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"info-modal\",\n children: [icon != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"message-header\",\n children: title\n }), subtitle != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-content\",\n children: subtitle\n })]\n })\n })\n });\n}\nexport default InfoModal;\n//# sourceMappingURL=InfoModal.js.map","function ownKeys(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","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass Collapse extends Component {\n static handleEnter(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleEntering(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static handleExiting(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleExit(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static getHeight(elem) {\n var scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n constructor(props) {\n super(props);\n this.handleEntered = this.handleEntered.bind(this);\n }\n handleEntered(elemParam) {\n var elem = elemParam;\n elem.style.height = '';\n var {\n autoFocusOnShow\n } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n var input = elem.querySelector('input, select, textarea');\n if (input != null) {\n input.focus();\n }\n }\n }\n render() {\n var {\n children: _children,\n className,\n in: inTransition,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: inTransition,\n classNames: {\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse'\n },\n onEnter: Collapse.handleEnter,\n onEntering: Collapse.handleEntering,\n onEntered: this.handleEntered,\n onExit: Collapse.handleExit,\n onExiting: Collapse.handleExiting,\n timeout: 350,\n children: state => /*#__PURE__*/_jsx(\"div\", {\n className: classNames({\n collapse: state === 'exited'\n }, className),\n \"data-testid\": dataTestId,\n children: _children\n })\n });\n }\n}\n_defineProperty(Collapse, \"propTypes\", {\n className: PropTypes.string,\n in: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired,\n autoFocusOnShow: PropTypes.bool,\n 'data-testid': PropTypes.string\n});\n_defineProperty(Collapse, \"defaultProps\", {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined\n});\nexport default Collapse;\n//# sourceMappingURL=Collapse.js.map","import React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { TimeUtils } from '@deephaven/utils';\nimport MaskedInput from \"./MaskedInput.js\";\nimport { DEFAULT_GET_PREFERRED_REPLACEMENT_STRING } from \"./MaskedInputUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('TimeInput');\nvar TIME_PATTERN = '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]';\nvar EXAMPLES = ['00:00:00', '12:34:56', '23:59:59'];\nfunction fixIncompleteValue(value) {\n // If value is not a complete HH:mm:ss time, fill missing parts with 0\n if (value != null) {\n return \"\".concat(value.substring(0, 8).replace(/\\u2007/g, '0')).concat(\"00:00:00\".substring(value.length));\n }\n return value;\n}\n\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\n// eslint-disable-next-line react/display-name\nvar TimeInput = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n allowValueWrapping = true,\n className = '',\n onChange = () => false,\n value: propsValue = 0,\n onFocus = () => false,\n onBlur = () => false,\n onSelect = () => false,\n 'data-testid': dataTestId\n } = props;\n var [value, setValue] = useState(TimeUtils.formatTime(propsValue));\n var parsedValueRef = useRef(propsValue);\n var [selection, _setSelection] = useState();\n var inputRef = useRef(null);\n useImperativeHandle(ref, () => ({\n focus: () => {\n var _inputRef$current;\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();\n },\n setSelection: newSelection => {\n var _inputRef$current2;\n (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();\n _setSelection(newSelection);\n }\n }), []);\n useEffect(function setFormattedTime() {\n // Ignore value prop update if it matches the displayed value\n // to preserve the displayed value while typing\n if (parsedValueRef.current !== propsValue) {\n setValue(TimeUtils.formatTime(propsValue));\n parsedValueRef.current = propsValue;\n }\n }, [parsedValueRef, propsValue]);\n function getNextSegmentValue(range, delta, segmentValue) {\n // Delta is backward because negative Y is up\n var maxValue = range.selectionStart === 0 ? 24 : 60;\n var newSegmentValue = parseInt(segmentValue, 10) - delta;\n if (Number.isNaN(newSegmentValue)) {\n newSegmentValue = 0;\n } else if (allowValueWrapping) {\n // Add max value and re-mod so we don't get negative values after mod\n newSegmentValue = (newSegmentValue % maxValue + maxValue) % maxValue;\n } else {\n newSegmentValue = Math.min(Math.max(0, newSegmentValue), maxValue - 1);\n }\n return \"\".concat(newSegmentValue).padStart(2, '0');\n }\n function getPreferredReplacementString(replaceValue, replaceIndex, newChar, selectionStart, selectionEnd) {\n if (selectionStart === 0 && selectionEnd === 2 && replaceIndex === 1 && parseInt(newChar, 10) > 1) {\n // DH-10082 Special case for when typing `3` when it's already 12\n return \"0\".concat(newChar).concat(replaceValue.substring(2));\n }\n return DEFAULT_GET_PREFERRED_REPLACEMENT_STRING(replaceValue, replaceIndex, newChar);\n }\n var handleChange = useCallback(newValue => {\n log.debug('handleChange', newValue);\n setValue(newValue);\n parsedValueRef.current = TimeUtils.parseTime(fixIncompleteValue(newValue));\n onChange(parsedValueRef.current);\n }, [onChange]);\n var handleBlur = useCallback(() => {\n var fixedValue = fixIncompleteValue(value);\n // Update the value displayed in the input\n // onChange with the fixed value already triggered in handleChange\n if (fixedValue !== value) {\n setValue(fixedValue);\n }\n onBlur();\n }, [value, onBlur]);\n var handleSelect = useCallback(newSelection => {\n _setSelection(newSelection);\n onSelect(newSelection);\n }, [onSelect]);\n return /*#__PURE__*/_jsx(MaskedInput, {\n ref: inputRef,\n className: className,\n example: EXAMPLES,\n getNextSegmentValue: getNextSegmentValue,\n getPreferredReplacementString: getPreferredReplacementString,\n onChange: handleChange,\n onSelect: handleSelect,\n pattern: TIME_PATTERN,\n selection: selection,\n value: value,\n onFocus: onFocus,\n onBlur: handleBlur,\n \"data-testid\": dataTestId\n });\n});\nTimeInput.defaultProps = {\n allowValueWrapping: true,\n className: '',\n onChange: () => false,\n onSelect: () => false,\n value: 0,\n onFocus: () => false,\n onBlur: () => false,\n 'data-testid': undefined\n};\nexport default TimeInput;\n//# sourceMappingURL=TimeInput.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCheck } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport classNames from 'classnames';\nimport TimeInput from \"./TimeInput.js\";\nimport DropdownMenu from \"./menu-actions/DropdownMenu.js\";\nimport \"./CustomTimeSelect.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar CUSTOM_OPTION = -1;\nvar MENU_NAVIGATION_DIRECTION;\n(function (MENU_NAVIGATION_DIRECTION) {\n MENU_NAVIGATION_DIRECTION[\"UP\"] = \"UP\";\n MENU_NAVIGATION_DIRECTION[\"DOWN\"] = \"DOWN\";\n})(MENU_NAVIGATION_DIRECTION || (MENU_NAVIGATION_DIRECTION = {}));\nclass CustomTimeSelect extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"csContainer\", void 0);\n _defineProperty(this, \"menuContainer\", void 0);\n _defineProperty(this, \"button\", void 0);\n _defineProperty(this, \"input\", void 0);\n var {\n value,\n valueToTime\n } = props;\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.bind(this);\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.handleCustomInput = this.handleCustomInput.bind(this);\n this.csContainer = /*#__PURE__*/React.createRef();\n this.menuContainer = /*#__PURE__*/React.createRef();\n this.button = /*#__PURE__*/React.createRef();\n this.input = /*#__PURE__*/React.createRef();\n this.state = {\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n customTime: valueToTime(value),\n inputFocused: false\n };\n }\n getSelectedText() {\n var {\n options,\n value,\n placeholder\n } = this.props;\n var {\n customTime\n } = this.state;\n if (value === null) {\n return placeholder;\n }\n for (var i = 0; i < options.length; i += 1) {\n var option = options[i];\n if (option.value === value) {\n return option.title;\n }\n }\n return TimeUtils.formatTime(customTime);\n }\n setInputWidth() {\n if (this.csContainer.current) {\n this.setState({\n inputWidth: this.csContainer.current.getBoundingClientRect().width\n });\n }\n }\n focus() {\n var _this$button$current;\n (_this$button$current = this.button.current) === null || _this$button$current === void 0 ? void 0 : _this$button$current.focus();\n }\n updateInputValue(value) {\n var {\n onChange\n } = this.props;\n onChange(value);\n }\n handleResize() {\n this.setInputWidth();\n }\n handleMenuKeyDown(event) {\n var _this$button$current2;\n var {\n keyboardOptionIndex,\n inputFocused\n } = this.state;\n var {\n options\n } = this.props;\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Space Bar\n if (inputFocused) {\n this.updateFromCustom();\n } else {\n this.updateInputValue(options[keyboardOptionIndex].value);\n }\n this.closeMenu();\n (_this$button$current2 = this.button.current) === null || _this$button$current2 === void 0 ? void 0 : _this$button$current2.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Tab':\n if (event.shiftKey) {\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP);\n } else {\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN);\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n handleMenuNavigation(direction) {\n var {\n keyboardOptionIndex,\n inputFocused\n } = this.state;\n var {\n options\n } = this.props;\n var menuOptionsLength = options.length;\n var newKeyboardOptionIndex = keyboardOptionIndex;\n switch (direction) {\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP:\n if (!inputFocused && keyboardOptionIndex === 0) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n if (keyboardOptionIndex > 0 && !inputFocused) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex - 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = menuOptionsLength - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN:\n if (!inputFocused && keyboardOptionIndex === menuOptionsLength - 1) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n if (keyboardOptionIndex < menuOptionsLength && !(inputFocused && keyboardOptionIndex === 0)) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex + 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n default:\n break;\n }\n }\n handleOptionClick(event) {\n var optionIndex = Number(event.currentTarget.value);\n var {\n options,\n timeToValue\n } = this.props;\n var {\n customTime\n } = this.state;\n if (optionIndex === CUSTOM_OPTION) {\n var update = timeToValue(customTime);\n this.updateAndClose(update);\n } else {\n this.updateAndClose(options[optionIndex].value);\n }\n }\n updateAndClose(update) {\n var _this$button$current3;\n this.updateInputValue(update);\n this.closeMenu();\n (_this$button$current3 = this.button.current) === null || _this$button$current3 === void 0 ? void 0 : _this$button$current3.focus();\n }\n handleOptionFocus(event) {\n this.setState({\n keyboardOptionIndex: Number(event.target.value)\n });\n }\n handleMenuOpened() {\n var _this$menuContainer$c;\n var {\n options,\n value\n } = this.props;\n var {\n keyboardOptionIndex\n } = this.state;\n this.scrollOptionIntoView(keyboardOptionIndex);\n var activeOption = (_this$menuContainer$c = this.menuContainer.current) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.querySelector('.cs-option-btn.keyboard-active');\n if (activeOption instanceof HTMLElement) {\n activeOption.focus();\n }\n if (value === null) {\n return;\n }\n var valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex < 0) {\n // The custom option should be selected\n this.focusInput();\n }\n }\n focusInput() {\n var _this$input$current;\n (_this$input$current = this.input.current) === null || _this$input$current === void 0 ? void 0 : _this$input$current.focus();\n }\n focusOption(index) {\n var _this$menuContainer$c2;\n var options = (_this$menuContainer$c2 = this.menuContainer.current) === null || _this$menuContainer$c2 === void 0 ? void 0 : _this$menuContainer$c2.querySelector('.cs-options');\n if (options && options.children != null) {\n var option = options.children.item(index);\n if (option instanceof HTMLElement) {\n option.focus();\n }\n }\n }\n handleMenuExited() {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.setState({\n menuIsOpen: false,\n keyboardOptionIndex: 0\n });\n }\n }\n handleCustomInput(value) {\n var {\n timeToValue\n } = this.props;\n var update = timeToValue(value);\n this.updateInputValue(update);\n this.setState({\n customTime: value\n });\n }\n updateFromCustom() {\n var {\n timeToValue\n } = this.props;\n var {\n customTime\n } = this.state;\n var update = timeToValue(customTime);\n this.updateInputValue(update);\n }\n toggleMenu(event) {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n openMenu() {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({\n menuIsOpen: true\n });\n }\n closeMenu() {\n var focusButton = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.setState({\n menuIsOpen: false\n });\n if (focusButton) {\n var _this$button$current4;\n (_this$button$current4 = this.button.current) === null || _this$button$current4 === void 0 ? void 0 : _this$button$current4.focus();\n }\n }\n updateKeyboardIndex() {\n var {\n options,\n value\n } = this.props;\n if (value === null) {\n return;\n }\n var valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex > 0) {\n this.setState({\n keyboardOptionIndex: valueIndex\n });\n }\n }\n scrollOptionIntoView(index) {\n var _this$menuContainer$c3;\n var options = (_this$menuContainer$c3 = this.menuContainer.current) === null || _this$menuContainer$c3 === void 0 ? void 0 : _this$menuContainer$c3.querySelector('.cs-options');\n if (options && options.children != null) {\n var activeOption = options.children.item(index);\n if (activeOption instanceof HTMLElement && activeOption.offsetTop > CustomTimeSelect.DROP_DOWN_MENU_HEIGHT) {\n options.scrollTop = activeOption.offsetTop - CustomTimeSelect.DROP_DOWN_MENU_HEIGHT;\n } else if (activeOption instanceof HTMLElement && activeOption.offsetTop < 0 || index === 0) {\n options.scrollTop = 0;\n }\n }\n }\n renderMenuElement() {\n var {\n inputWidth\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"cs-menu-container\",\n ref: this.menuContainer,\n role: \"presentation\",\n onKeyDown: this.handleMenuKeyDown,\n onClick: event => {\n event.stopPropagation();\n },\n style: {\n width: inputWidth\n },\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"cs-options-container\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"cs-options\",\n children: this.renderOptions()\n })\n })\n });\n }\n renderOptions() {\n var {\n options,\n value,\n icon,\n customText\n } = this.props;\n var {\n keyboardOptionIndex,\n customTime,\n inputFocused\n } = this.state;\n var matchFound = false;\n var optionArray = [];\n for (var index = 0; index < options.length; index += 1) {\n var option = options[index];\n var key = \"option-\".concat(index, \"-\").concat(option.value);\n matchFound = matchFound || option.value === value;\n optionArray.push( /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n value: index,\n className: classNames('cs-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index && !inputFocused\n }),\n onClick: this.handleOptionClick,\n onFocus: this.handleOptionFocus,\n children: [option.value === value && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"mr-2\"\n }), option.value !== value && /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), option.title]\n }, key));\n }\n optionArray.push( /*#__PURE__*/_jsx(\"hr\", {\n className: \"cs-divider\"\n }, \"option-divider\"));\n optionArray.push( /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n value: CUSTOM_OPTION,\n className: classNames('cs-option-btn', {\n 'keyboard-active': inputFocused\n }),\n onClick: this.handleOptionClick,\n onFocus: this.handleOptionFocus,\n children: [!matchFound && value !== null ? /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"mr-2\"\n }) : /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), customText]\n }, \"option-custom-label\"));\n optionArray.push( /*#__PURE__*/_jsxs(\"div\", {\n className: \"cs-custom-container\",\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: \"mr-2\"\n }), /*#__PURE__*/_jsx(TimeInput, {\n ref: this.input,\n onChange: this.handleCustomInput,\n value: customTime,\n onFocus: () => this.setState({\n inputFocused: true\n }),\n onBlur: () => this.setState({\n inputFocused: false\n })\n }, \"option-input\"), /*#__PURE__*/_jsx(\"span\", {\n className: \"ml-2\"\n })]\n }, \"cs-custom-container\"));\n optionArray.push( /*#__PURE__*/_jsx(\"hr\", {\n className: \"mb-2\"\n }, \"option-end\"));\n return optionArray;\n }\n render() {\n var {\n disabled,\n invalid,\n value,\n 'data-testid': dataTestId\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n var {\n popperOptions\n } = this.props;\n popperOptions = _objectSpread({\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: {\n enabled: false\n }\n }\n }, popperOptions);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"input-group cs-container context-menu\",\n ref: this.csContainer,\n \"data-testid\": dataTestId,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames('input-group-append cs-dropdown', {\n 'cs-dropdown-invalid': invalid\n }),\n children: /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: classNames('btn cs-btn form-control', {\n 'cs-btn-invalid': invalid\n }),\n ref: this.button,\n onClick: this.toggleMenu,\n disabled: disabled,\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: classNames({\n 'text-muted': value === null\n }),\n children: this.getSelectedText()\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"cs-caret\"\n }), /*#__PURE__*/_jsx(DropdownMenu, {\n isShown: menuIsOpen,\n actions: {\n menuElement: this.renderMenuElement()\n },\n popperOptions: popperOptions,\n popperClassName: \"CustomTimeSelect\",\n onMenuOpened: this.handleMenuOpened,\n onMenuClosed: this.handleMenuExited,\n menuStyle: {\n maxWidth: '100rem'\n }\n })]\n })\n })\n });\n }\n}\n_defineProperty(CustomTimeSelect, \"MENU_NAVIGATION_DIRECTION\", MENU_NAVIGATION_DIRECTION);\n_defineProperty(CustomTimeSelect, \"DROP_DOWN_MENU_HEIGHT\", 125);\n_defineProperty(CustomTimeSelect, \"defaultProps\", {\n onChange() {\n // no-op\n },\n value: null,\n disabled: false,\n popperOptions: {},\n icon: vsCheck,\n customText: 'Custom',\n placeholder: 'Select a time',\n valueToTime: value => value === null ? 0 : Math.round(value / 1000),\n timeToValue: time => time * 1000,\n invalid: false,\n 'data-testid': undefined\n});\nexport default CustomTimeSelect;\n//# sourceMappingURL=CustomTimeSelect.js.map","import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport MaskedInput from \"./MaskedInput.js\";\nimport { getNextSegmentValue } from \"./DateInputUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('DateInput');\nvar DATE_PATTERN = '[12][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])';\nvar EXAMPLES = ['2000-01-01', '2022-12-31'];\nvar DATE_FORMAT = 'YYYY-MM-DD';\nvar DateInput = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n className = '',\n onChange = () => undefined,\n defaultValue = '',\n onFocus = () => undefined,\n onBlur = () => undefined,\n 'data-testid': dataTestId\n } = props;\n var [value, setValue] = useState(defaultValue);\n var [selection, setSelection] = useState();\n var handleChange = useCallback(newValue => {\n log.debug('handleChange', newValue);\n setValue(newValue);\n onChange(newValue);\n }, [onChange]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"d-flex flex-row align-items-center\",\n children: /*#__PURE__*/_jsx(MaskedInput, {\n ref: ref,\n className: classNames(className),\n example: EXAMPLES,\n getNextSegmentValue: getNextSegmentValue,\n onChange: handleChange,\n onSelect: setSelection,\n pattern: DATE_PATTERN,\n placeholder: DATE_FORMAT,\n selection: selection,\n value: value,\n onFocus: onFocus,\n onBlur: onBlur,\n \"data-testid\": dataTestId\n })\n });\n});\nDateInput.displayName = 'DateInput';\nexport default DateInput;\n//# sourceMappingURL=DateInput.js.map","import 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 React, { useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsDiffAdded, vsDiffRemoved, vsWarning } from '@deephaven/icons';\nimport { useDebouncedCallback, useResizeObserver } from '@deephaven/react-hooks';\nimport CopyButton from \"./CopyButton.js\";\nimport Button from \"./Button.js\";\nimport \"./ErrorView.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Component that displays an error message in a textarea so user can scroll and a copy button.\n */\nfunction ErrorView(_ref) {\n var {\n message,\n isExpanded: isExpandedProp = false,\n type = 'Error'\n } = _ref;\n var [isExpandable, setIsExpandable] = useState(false);\n var [isExpanded, setIsExpanded] = useState(false);\n var viewRef = useRef(null);\n var textRef = useRef(null);\n var handleResize = useCallback(() => {\n if (isExpanded || isExpandedProp || textRef.current == null) {\n return;\n }\n var newIsExpandable = textRef.current.scrollHeight > textRef.current.clientHeight;\n setIsExpandable(newIsExpandable);\n }, [isExpanded, isExpandedProp]);\n var debouncedHandleResize = useDebouncedCallback(handleResize, 100);\n useResizeObserver(viewRef.current, debouncedHandleResize);\n useLayoutEffect(debouncedHandleResize, [debouncedHandleResize]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('error-view', {\n expanded: isExpanded || isExpandedProp\n }),\n ref: viewRef,\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"error-view-header\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"error-view-header-text\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n }), /*#__PURE__*/_jsx(\"span\", {\n children: type\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"error-view-buttons\",\n children: [/*#__PURE__*/_jsx(CopyButton, {\n kind: \"danger\",\n className: \"error-view-copy-button\",\n tooltip: \"Copy exception contents\",\n copy: \"\".concat(type, \": \").concat(message).trim()\n }), (isExpandable || isExpanded) && !isExpandedProp && /*#__PURE__*/_jsx(Button, {\n kind: \"danger\",\n className: \"error-view-expand-button\",\n onClick: () => {\n setIsExpanded(!isExpanded);\n },\n icon: isExpanded ? vsDiffRemoved : vsDiffAdded,\n children: isExpanded ? 'Show Less' : 'Show More'\n })]\n })]\n }), /*#__PURE__*/_jsx(\"pre\", {\n className: \"error-view-text\",\n ref: textRef,\n children: message\n })]\n });\n}\nexport default ErrorView;\n//# sourceMappingURL=ErrorView.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport Checkbox from \"./Checkbox.js\";\nimport Popper from \"./popper/Popper.js\";\nimport \"./HierarchicalCheckboxMenu.css\";\nimport Button from \"./Button.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * A pull down menu that displays a hierarchy of checkboxes.\n *\n * Currently supports only two levels of check boxes. The input should be a Map\n * where the keys are the parent names. The values can a boolean if the parent\n * has no children or another Map where keys are child names and values are booleans.\n *\n * Here is an example:\n * const INITIAL_TYPE_MAP = new Map([\n * ['Queries', new Map([['Live', true], ['Batch', true]])],\n * [\n * 'DBA Queries',\n * new Map([\n * ['Data Merge', true],\n * ['Data Validation', true],\n * ['Imports', true],\n * ['Data Services', true],\n * ]),\n * ],\n * ['Helper Queries', true],\n * ]);\n *\n * When a checkbox is changed, this component will make a deep copy of the Map\n * with the appropriate booleans changed. It will then call onUpdateValueMap\n * with the new Map.\n */\nclass HierarchicalCheckboxMenu extends Component {\n static isParentSelected(parent, valueMap) {\n var children = valueMap.get(parent);\n if (children === undefined) {\n return false;\n }\n if (typeof children === 'boolean') {\n // This parent has no children\n return children;\n }\n var includesTrue = Array.from(children.values()).includes(true);\n var includesFalse = Array.from(children.values()).includes(false);\n if (includesTrue && includesFalse) {\n // Indeterminate\n return null;\n }\n return includesTrue;\n }\n constructor(props) {\n super(props);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.toggleValueFor = this.toggleValueFor.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.state = {\n menuIsOpen: false\n };\n }\n toggleMenu(event) {\n event.stopPropagation();\n event.preventDefault();\n this.setState(state => {\n var {\n menuIsOpen\n } = state;\n return {\n menuIsOpen: !menuIsOpen\n };\n });\n }\n toggleValueFor(parent, child) {\n var {\n valueMap,\n onUpdateValueMap\n } = this.props;\n\n // Make a deep copy of the Map and toggle the boolean for parent / child\n var map = new Map(valueMap);\n var children = map.get(parent);\n if (children instanceof Map) {\n var newChildren = new Map(children);\n if (child != null) {\n newChildren.set(child, children.get(child) !== true);\n } else {\n var parentSelected = HierarchicalCheckboxMenu.isParentSelected(parent, map);\n var newChildValue = parentSelected == null || !parentSelected;\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, children == null || !children);\n }\n\n // The parent was clicked so all children must be toggled\n var currentChildren = map.get(parent);\n if (child === undefined && currentChildren !== undefined && typeof currentChildren !== 'boolean') {\n var _parentSelected = HierarchicalCheckboxMenu.isParentSelected(parent, valueMap);\n if (_parentSelected != null && _parentSelected) {\n currentChildren.forEach((_, key) => currentChildren.set(key, false));\n } else {\n // for parent selection of false or null (indeterminate), select everything\n currentChildren.forEach((_, key) => currentChildren.set(key, true));\n }\n }\n onUpdateValueMap(map);\n }\n setAllValues(value) {\n var {\n valueMap,\n onUpdateValueMap\n } = this.props;\n\n // Make a deep copy of the Map and set everything\n var copy = new Map();\n valueMap.forEach((child, parent) => {\n if (typeof child === 'boolean') {\n copy.set(parent, value);\n } else {\n var children = new Map();\n child.forEach((_, key) => children.set(key, value));\n copy.set(parent, children);\n }\n });\n onUpdateValueMap(copy);\n }\n selectAll() {\n this.setAllValues(true);\n }\n clear() {\n this.setAllValues(false);\n }\n renderMenuElement() {\n var {\n valueMap,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"hcm-menu-container\",\n children: [Array.from(valueMap.entries()).map(_ref => {\n var [parent, children] = _ref;\n return /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Checkbox, {\n className: \"hcm-parent\",\n checked: HierarchicalCheckboxMenu.isParentSelected(parent, valueMap),\n onChange: () => this.toggleValueFor(parent),\n children: parent\n }), children !== undefined && typeof children !== 'boolean' && Array.from(children.entries()).map(_ref2 => {\n var [child, value] = _ref2;\n return /*#__PURE__*/_jsx(Checkbox, {\n className: \"hcm-child\",\n checked: value,\n onChange: () => this.toggleValueFor(parent, child),\n children: child\n }, child);\n })]\n }, parent);\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.selectAll,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-select-all\") : undefined,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.clear,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-clear\") : undefined,\n children: \"Clear\"\n })]\n });\n }\n render() {\n var {\n menuText,\n className,\n icon,\n id,\n 'data-testid': dataTestId\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n return /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: classNames('btn hcm-btn', className),\n onClick: this.toggleMenu,\n id: id,\n \"data-testid\": dataTestId,\n children: [/*#__PURE__*/_jsxs(\"span\", {\n children: [icon && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"hcm-icon mr-1\"\n }), menuText]\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"cs-caret\"\n }), /*#__PURE__*/_jsx(Popper, {\n options: {\n placement: 'bottom'\n },\n isShown: menuIsOpen,\n onExited: () => {\n this.setState({\n menuIsOpen: false\n });\n },\n closeOnBlur: true,\n interactive: true,\n children: this.renderMenuElement()\n })]\n });\n }\n}\n_defineProperty(HierarchicalCheckboxMenu, \"defaultProps\", {\n className: '',\n icon: null,\n id: '',\n 'data-testid': undefined\n});\nexport default HierarchicalCheckboxMenu;\n//# sourceMappingURL=HierarchicalCheckboxMenu.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { memo } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { vsClose } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Button from \"../Button.js\";\nimport ContextActions from \"../context-actions/ContextActions.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar NavTab = /*#__PURE__*/memo(_ref => {\n var {\n tab,\n onClose,\n onSelect,\n isActive,\n activeRef,\n index,\n isDraggable,\n contextActions\n } = _ref;\n var {\n key,\n isClosable = onClose != null,\n title,\n icon\n } = tab;\n var iconElem;\n if (icon != null) {\n iconElem = /*#__PURE__*/React.isValidElement(icon) ? icon : /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n }\n return /*#__PURE__*/_jsx(Draggable, {\n draggableId: key,\n index: index,\n isDragDisabled: !isDraggable,\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", {\n className: \"context-menu-wrapper\",\n ref: isActive ? activeRef : null,\n children: [/*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread(_objectSpread({\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.draggableProps), provided.dragHandleProps), {}, {\n className: classNames('btn btn-link btn-nav-tab', {\n active: isActive\n }, {\n dragging: snapshot.isDragging\n }),\n \"data-testid\": \"btn-nav-tab-\".concat(title),\n role: \"tab\",\n tabIndex: 0,\n onClick: e => {\n e.target.focus();\n // focus is normally set on mousedown, but dnd calls preventDefault for drag purposes\n // so we can call focus on the firing of the actual click event manually\n\n onSelect(key);\n },\n onKeyPress: event => {\n if (event.key === 'Enter') onSelect(key);\n },\n children: [iconElem, title, isClosable && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-nav-tab-close\",\n onClick: event => {\n onClose === null || onClose === void 0 ? void 0 : onClose(key);\n event.stopPropagation();\n event.preventDefault();\n },\n icon: vsClose,\n tooltip: \"Close\"\n })]\n })), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n })]\n })\n }, key);\n});\nNavTab.displayName = 'NavTab';\nexport default NavTab;\n//# sourceMappingURL=NavTab.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight, vsChevronLeft } from '@deephaven/icons';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport DragUtils from \"../DragUtils.js\";\nimport Button from \"../Button.js\";\nimport NavTab from \"./NavTab.js\";\nimport \"./NavTabList.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// mouse hold timeout to act as hold instead of click\nvar CLICK_TIMEOUT = 500;\n\n// mouse hold acceleration\nvar START_SPEED = 0.01;\nvar ACCELERATION = 0.0005;\nfunction isScrolledLeft(element) {\n return element.scrollLeft === 0;\n}\nfunction isScrolledRight(element) {\n return element.scrollLeft + element.clientWidth === element.scrollWidth || element.scrollWidth === 0;\n}\nfunction makeBaseContextActions(tab, tabs, onClose) {\n var {\n isClosable = false,\n key\n } = tab;\n var contextActions = [];\n if (isClosable && onClose != null) {\n contextActions.push({\n title: 'Close',\n order: 10,\n group: 20,\n action: () => {\n onClose(key);\n }\n });\n var disabled = true;\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i].key === tab.key) break;\n if (tabs[i].isClosable === true) {\n disabled = false;\n break;\n }\n }\n contextActions.push({\n title: 'Close to the Right',\n order: 20,\n group: 20,\n action: () => {\n for (var _i = tabs.length - 1; _i > 0; _i -= 1) {\n if (tabs[_i].key === key) break;\n if (tabs[_i].isClosable === true) onClose(tabs[_i].key);\n }\n },\n disabled\n });\n contextActions.push({\n title: 'Close All',\n order: 30,\n group: 20,\n action: () => {\n tabs.forEach(t => {\n if (t.isClosable === true) onClose(t.key);\n });\n }\n });\n }\n return contextActions;\n}\nfunction NavTabList(_ref) {\n var {\n activeKey,\n tabs,\n onSelect,\n onReorder,\n onClose,\n makeContextActions\n } = _ref;\n var containerRef = useRef();\n var [isOverflowing, setIsOverflowing] = useState(true);\n var [disableScrollLeft, setDisableScrollLeft] = useState(true);\n var [disableScrollRight, setDisableScrollRight] = useState(true);\n var handleResize = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n if (containerRef.current.clientWidth < containerRef.current.scrollWidth && tabs.length > 0) {\n setIsOverflowing(true);\n } else {\n setIsOverflowing(false);\n }\n setDisableScrollLeft(isScrolledLeft(containerRef.current));\n setDisableScrollRight(isScrolledRight(containerRef.current));\n }, [tabs]);\n useResizeObserver(containerRef.current, handleResize);\n var onDragEnd = useCallback(result => {\n DragUtils.stopDragging();\n\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n onReorder === null || onReorder === void 0 ? void 0 : onReorder(result.source.index, result.destination.index);\n }, [onReorder]);\n var handleScroll = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n var shouldDisableScrollLeft = isScrolledLeft(containerRef.current);\n if (shouldDisableScrollLeft !== disableScrollLeft) {\n setDisableScrollLeft(shouldDisableScrollLeft);\n }\n var shouldDisableScrollRight = isScrolledRight(containerRef.current);\n if (shouldDisableScrollRight !== disableScrollRight) {\n setDisableScrollRight(shouldDisableScrollRight);\n }\n }, [disableScrollLeft, disableScrollRight]);\n var continuousScrollRef = useRef({\n cancelClick: false\n });\n var handleLeftClick = useCallback(() => {\n if (containerRef.current == null || continuousScrollRef.current.cancelClick) {\n return;\n }\n var {\n children\n } = containerRef.current;\n for (var i = children.length - 1; i >= 0; i -= 1) {\n var child = children[i];\n // Subtract 5px from left edge to account for rounding of offset values\n if (child.offsetLeft < containerRef.current.scrollLeft - 5) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start'\n });\n return;\n }\n }\n }, []);\n var handleRightClick = useCallback(() => {\n if (containerRef.current == null || continuousScrollRef.current.cancelClick) {\n return;\n }\n var {\n children\n } = containerRef.current;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n // Add 5px to right edge to account for rounding of offset values\n if (child.offsetLeft + 5 > containerRef.current.scrollLeft + containerRef.current.offsetWidth) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'end'\n });\n return;\n }\n }\n }, []);\n\n /**\n * Recurively called after initial timeout on mousedown. Continuously scroll with acceleration.\n * Cancelled by mouseup handler cancelling the animationFrame.\n * @param direction of scroll, left or right\n * @param startX starting position of scroll\n * @param deltaX delta from intial startX calculated recursively\n * @param prevTimestamp called on subsequent delta frames\n */\n var handleMouseRepeat = useCallback(function (direction, startX) {\n var deltaX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var prevTimestamp = arguments.length > 3 ? arguments[3] : undefined;\n var container = containerRef.current;\n if (container == null) {\n return;\n }\n continuousScrollRef.current.cancelClick = true;\n if (direction === 'left') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX - deltaX;\n } else if (direction === 'right') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX + deltaX;\n }\n\n // eslint-disable-next-line no-param-reassign\n continuousScrollRef.current.rAF = requestAnimationFrame(timestamp => {\n var startTime = prevTimestamp !== null && prevTimestamp !== void 0 ? prevTimestamp : timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX = START_SPEED * deltaTime + 0.5 * ACCELERATION * deltaTime ** 2;\n newDeltaX = Math.min(newDeltaX, container.scrollWidth);\n // scrollLeft enforces a limit but no point letting delta increment beyond scrollWidth\n\n handleMouseRepeat(direction, startX, newDeltaX, startTime);\n });\n }, []);\n var endContinuousScroll = useCallback(() => {\n var {\n holdTimer,\n rAF\n } = continuousScrollRef.current;\n if (holdTimer != null) {\n clearTimeout(holdTimer);\n continuousScrollRef.current.holdTimer = undefined;\n }\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n continuousScrollRef.current.rAF = undefined;\n }\n window.removeEventListener('mouseup', endContinuousScroll);\n }, []);\n useEffect(() => () => window.removeEventListener('mouseup', endContinuousScroll), [endContinuousScroll]);\n var handleMouseDown = useCallback(direction => {\n if (containerRef.current != null) {\n continuousScrollRef.current.holdTimer = window.setTimeout(handleMouseRepeat, CLICK_TIMEOUT, direction, containerRef.current.scrollLeft);\n }\n continuousScrollRef.current.cancelClick = false;\n window.addEventListener('mouseup', endContinuousScroll);\n }, [endContinuousScroll, handleMouseRepeat]);\n var handleMouseDownLeft = useCallback(() => {\n handleMouseDown('left');\n }, [handleMouseDown]);\n var handleMouseDownRight = useCallback(() => {\n handleMouseDown('right');\n }, [handleMouseDown]);\n\n // React binds to the root as a passive listener for wheel\n // This prevents the wheel event from being canceled\n // Bypass React's event system so we can prevent the default behavior\n // https://github.com/facebook/react/issues/14856\n useEffect(function handleWheel() {\n var _containerRef$current;\n var onWheel = e => {\n e.stopPropagation();\n e.preventDefault();\n var nav = e.currentTarget;\n var delta = Math.abs(e.deltaY) > Math.abs(e.deltaX) ? e.deltaY : e.deltaX;\n\n // Scrolling jumps too far sometimes, so clamp to get a smoother scroll\n nav.scrollLeft += clamp(delta, -30, 30);\n };\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.addEventListener('wheel', onWheel);\n return () => {\n var _containerRef$current2;\n (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.removeEventListener('wheel', onWheel);\n };\n }, []);\n var tabContextActionMap = useMemo(() => {\n var tabContextActions = new Map();\n tabs.forEach(tab => {\n var {\n key\n } = tab;\n var contextActions = [() => makeBaseContextActions(tab, tabs, onClose), () => {\n var _makeContextActions;\n return (_makeContextActions = makeContextActions === null || makeContextActions === void 0 ? void 0 : makeContextActions(tab)) !== null && _makeContextActions !== void 0 ? _makeContextActions : [];\n }];\n tabContextActions.set(key, contextActions);\n });\n return tabContextActions;\n }, [makeContextActions, tabs, onClose]);\n var activeTabRef = useRef(null);\n var activeTab = tabs.find(tab => tab.key === activeKey);\n var navTabs = tabs.map((tab, index) => {\n var {\n key\n } = tab;\n var isActive = tab === activeTab;\n return /*#__PURE__*/_jsx(NavTab, {\n tab: tab,\n index: index,\n isActive: isActive,\n activeRef: activeTabRef,\n onSelect: onSelect,\n onClose: onClose,\n isDraggable: onReorder != null,\n contextActions: tabContextActionMap.get(key)\n }, key);\n });\n useEffect(\n // Needs to be in a useEffect so the ref is updated\n function scrollActiveTabIntoView() {\n if (activeTabRef.current != null) {\n activeTabRef.current.scrollIntoView({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }, [activeKey]);\n return /*#__PURE__*/_jsxs(\"nav\", {\n className: \"nav-container\",\n children: [isOverflowing && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronLeft,\n transform: \"grow-4\"\n }),\n className: \"tab-controls-btn tab-controls-btn-left\",\n tooltip: \"Scroll left\",\n onClick: handleLeftClick,\n onMouseDown: handleMouseDownLeft,\n disabled: disableScrollLeft\n }), /*#__PURE__*/_jsx(DragDropContext, {\n onDragStart: DragUtils.startDragging,\n onDragEnd: onDragEnd,\n children: /*#__PURE__*/_jsx(Droppable, {\n droppableId: \"droppable-tab-navigation\",\n direction: \"horizontal\",\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread({\n ref: r => {\n if (r == null) {\n return;\n }\n containerRef.current = r;\n provided.innerRef(r);\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.droppableProps), {}, {\n className: classNames('nav nav-tabs', {\n dragging: snapshot.draggingFromThisWith\n }),\n role: \"tablist\",\n onScroll: handleScroll,\n children: [navTabs, provided.placeholder]\n }))\n })\n }), isOverflowing && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight,\n transform: \"grow-4\"\n }),\n className: \"tab-controls-btn tab-controls-btn-right\",\n tooltip: \"Scroll right\",\n onClick: handleRightClick,\n onMouseDown: handleMouseDownRight,\n disabled: disableScrollRight\n })]\n });\n}\nexport default NavTabList;\n//# sourceMappingURL=NavTabList.js.map","/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable react/display-name */\n\nimport React, { useEffect, useState, useRef, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\nimport { assertNotNull } from '@deephaven/utils';\nimport \"./RandomAreaPlotAnimation.css\";\nimport { resolveCssVariablesInRecord, useTheme } from \"./theme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar VOLATILITY = 0.025; // how spikey the data gets\nvar LOW = 0.9;\nvar HIGH = 0.1;\nvar START_Y = 0.618;\nvar GRID_SIZE = 80;\nvar PATTERN = {\n SIZE: 8,\n DOT_SIZE: 2\n};\nvar PX_PER_SECOND = 18;\nvar RESIZE_DEBOUNCE = 250;\nvar INTERACTION_TIMEOUT = 60 * 1000;\nvar THEME_COLOR_VARIABLES = {\n background: 'var(--dh-color-random-area-plot-animation-bg)',\n foregroundFill: 'var(--dh-color-random-area-plot-animation-fg-fill)',\n foregroundStroke: 'var(--dh-color-random-area-plot-animation-fg-stroke)',\n gridColor: 'var(--dh-color-random-area-plot-animation-grid)'\n};\n\n/**\n * Resolve theme colors needed for our animation.\n */\nfunction getRandomAreaPlotAnimationThemeColors() {\n return resolveCssVariablesInRecord(THEME_COLOR_VARIABLES);\n}\n\n// Draw a background canvas, paint it with a fun chart looking animation\nvar RandomAreaPlotAnimation = /*#__PURE__*/React.memo(() => {\n var {\n activeThemes\n } = useTheme();\n var themeColors = useMemo(getRandomAreaPlotAnimationThemeColors, [activeThemes]);\n var canvas = useRef(null);\n var container = useRef(null);\n var [shade, setShade] = useState(false);\n var scale = window.devicePixelRatio;\n var ctx;\n var pattern;\n var width;\n var height;\n var rAF;\n var lastTimestamp = null;\n var data = [];\n function setCanvasSize() {\n var _ctx;\n // Set canvas size to fill screen\n if (container.current != null) {\n width = container.current.offsetWidth;\n height = container.current.offsetHeight;\n }\n if (canvas.current != null) {\n canvas.current.style.width = \"\".concat(width, \"px\");\n canvas.current.style.height = \"\".concat(height, \"px\");\n canvas.current.width = width * scale;\n canvas.current.height = height * scale;\n }\n (_ctx = ctx) === null || _ctx === void 0 ? void 0 : _ctx.scale(scale, scale);\n }\n\n // Returns the background fill create offscreen as pattern\n function createPatternFill() {\n var {\n foregroundFill,\n foregroundStroke\n } = themeColors;\n\n // create the off-screen canvas\n var canvasPattern = document.createElement('canvas');\n canvasPattern.width = PATTERN.SIZE;\n canvasPattern.height = PATTERN.SIZE;\n var contextPattern = canvasPattern.getContext('2d');\n\n // draw pattern to off-screen context\n if (contextPattern != null) {\n contextPattern.fillStyle = foregroundStroke;\n contextPattern.fillRect(0, 0, PATTERN.DOT_SIZE, PATTERN.DOT_SIZE);\n\n // add an overlay fill\n contextPattern.fillStyle = foregroundFill;\n contextPattern.fillRect(0, 0, PATTERN.SIZE, PATTERN.SIZE);\n }\n return contextPattern === null || contextPattern === void 0 ? void 0 : contextPattern.createPattern(canvasPattern, 'repeat');\n }\n\n /**\n * Generates a step in a random walk between LOW - HIGH given a previous value\n * data is always in 0-1 data space so its scaleable\n * data space is converted to screen space inside draw functions\n * @param prev previous random walk step\n * @return new random walk step\n */\n function randomWalk(prev) {\n var rand = Math.random() - 0.5; // give it directionality\n var change = VOLATILITY * rand; // scale by volatity constant\n\n // ensure directional bounce off approaching edges\n if (prev < HIGH) {\n change = Math.abs(change);\n } else if (prev > LOW) {\n change = -Math.abs(change);\n }\n return prev + change;\n }\n function initData() {\n var startingData = [];\n var y = START_Y; // always start towards the bottom of the screen\n for (var x = 0; x < width + PX_PER_SECOND; x += 1) {\n y = randomWalk(y);\n startingData.push(y);\n }\n return startingData;\n }\n function setDataSize() {\n while (data.length >= width + PX_PER_SECOND) {\n data.pop();\n }\n while (data.length < width + PX_PER_SECOND) {\n data.push(randomWalk(data[data.length - 1]));\n }\n }\n function drawAreaLine(path, context) {\n context.beginPath();\n // start offscreen\n context.moveTo(-1, height + 1);\n context.lineTo(-1, height * path[0]);\n\n // draw the line\n for (var i = 0; i < path.length; i += 1) {\n context.lineTo(i, height * path[i]);\n }\n\n // close offscreen\n context.lineTo(width + PX_PER_SECOND, height * path[path.length - 1]);\n context.lineTo(width + PX_PER_SECOND, height + 1);\n context.closePath();\n }\n function drawGridLines(context) {\n context.beginPath();\n // draw verticals\n for (var x = 1; x < width; x += GRID_SIZE) {\n context.moveTo(x, 0);\n context.lineTo(x, height);\n }\n // draw horizontals\n for (var y = 1; y < height; y += GRID_SIZE) {\n context.moveTo(0, y);\n context.lineTo(width, y);\n }\n }\n\n /**\n * Main draw loop for where the animation happens\n * all the styling happens within drawCanvas from paths generated by other functions\n * @param timestamp passed in callback from requestAnimationFrame\n */\n function drawCanvas(timestamp) {\n var _lastTimestamp, _lastTimestamp2, _lastTimestamp3;\n lastTimestamp = (_lastTimestamp = lastTimestamp) !== null && _lastTimestamp !== void 0 ? _lastTimestamp : timestamp;\n var {\n background,\n foregroundStroke,\n gridColor\n } = themeColors;\n assertNotNull(ctx);\n // clear the canvas\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, width, height);\n drawGridLines(ctx);\n ctx.lineWidth = 1;\n ctx.strokeStyle = gridColor;\n ctx.stroke();\n\n // for speeds less then 60 px per second, subpixel motion is required to look smooth\n var subPixelMotion = (((_lastTimestamp2 = lastTimestamp) !== null && _lastTimestamp2 !== void 0 ? _lastTimestamp2 : 0) - (timestamp !== null && timestamp !== void 0 ? timestamp : 0)) / (1000 / PX_PER_SECOND);\n ctx.translate(subPixelMotion, 0);\n drawAreaLine(data, ctx);\n ctx.lineWidth = 2;\n ctx.strokeStyle = foregroundStroke;\n ctx.stroke();\n ctx.translate(-subPixelMotion, 0); // we don't pattern to shift however\n if (pattern != null) {\n ctx.fillStyle = pattern;\n }\n ctx.fill();\n ctx.setTransform(scale, 0, 0, scale, 0, 0); // reset the translate matrix to normal\n\n // generate new data points\n if ((timestamp !== null && timestamp !== void 0 ? timestamp : 0) - ((_lastTimestamp3 = lastTimestamp) !== null && _lastTimestamp3 !== void 0 ? _lastTimestamp3 : 0) > 1000 / PX_PER_SECOND) {\n var _lastTimestamp4;\n // number of points to add since last update\n var numberOfPoints = Math.floor(((timestamp !== null && timestamp !== void 0 ? timestamp : 0) - ((_lastTimestamp4 = lastTimestamp) !== null && _lastTimestamp4 !== void 0 ? _lastTimestamp4 : 0)) / (1000 / PX_PER_SECOND));\n for (var i = 0; i < numberOfPoints; i += 1) {\n data.shift();\n data.push(randomWalk(data[data.length - 1]));\n }\n lastTimestamp = timestamp;\n }\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n rAF = requestAnimationFrame(drawCanvas);\n }\n\n // debounce the resize so its not overly aggresive\n var debouncedHandleResize = debounce(() => {\n rAF = requestAnimationFrame(timestamp => {\n setCanvasSize(); // setCanvas can cause lag if not debounced\n\n // fill or remove extra data points\n setDataSize();\n\n // opening devtools triggers a blur then resize,\n // need to reset shade as we are restarting animation\n setShade(false);\n drawCanvas(timestamp);\n });\n }, RESIZE_DEBOUNCE, {\n leading: true\n } // resize immediately, once.\n );\n\n function pauseAnimation() {\n // pause animation when browser window is blurred to conserve CPU usage\n setShade(true);\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n rAF = null;\n lastTimestamp = null;\n }\n\n // when timeout expires, pause animation\n var resetIdleTimeout = debounce(() => {\n pauseAnimation();\n }, INTERACTION_TIMEOUT);\n function startAnimation() {\n // can fire multiple times, check if rAF is null first\n // restart animation loop, and fade back in\n if (rAF == null) {\n setShade(false);\n setCanvasSize();\n setDataSize();\n rAF = requestAnimationFrame(drawCanvas);\n }\n resetIdleTimeout();\n }\n function handleActivity() {\n if (document.hasFocus()) {\n // only if document has focus (mousemove can fire on non-focused tabs)\n startAnimation();\n }\n }\n function handleResize() {\n // pause and debounce animation during resize for better resizing performance\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n resetIdleTimeout(); // treat resizing as a form of activity\n debouncedHandleResize();\n }\n\n // react mount/unmount hooks\n useEffect(() => {\n var _canvas$current;\n ctx = (_canvas$current = canvas.current) === null || _canvas$current === void 0 ? void 0 : _canvas$current.getContext('2d', {\n alpha: false\n });\n setCanvasSize();\n data = initData();\n pattern = createPatternFill();\n\n // start draw loop\n drawCanvas();\n resetIdleTimeout();\n window.addEventListener('resize', handleResize);\n window.addEventListener('focus', startAnimation);\n window.addEventListener('blur', pauseAnimation);\n\n // don't burn cpu if the user is \"idle\", start a timer that resets\n // on any user activity, and on timeout expiry pause the animation\n window.addEventListener('mousemove', handleActivity);\n window.addEventListener('keydown', handleActivity);\n return () => {\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('focus', startAnimation);\n window.removeEventListener('blur', pauseAnimation);\n window.removeEventListener('mousemove', handleActivity);\n window.removeEventListener('keydown', handleActivity);\n resetIdleTimeout.cancel();\n debouncedHandleResize.cancel();\n };\n }, [themeColors]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"random-area-plot-animation-container\",\n ref: container,\n children: /*#__PURE__*/_jsx(\"canvas\", {\n ref: canvas,\n className: shade ? 'shade' : ''\n })\n });\n});\nexport default RandomAreaPlotAnimation;\n//# sourceMappingURL=RandomAreaPlotAnimation.js.map","import { useMemo } from 'react';\nimport { Text } from \"./spectrum/index.js\";\nimport stylesCommon from \"./SpectrumComponent.module.css\";\nimport { Tooltip } from \"./popper/index.js\";\nimport { Fragment as _Fragment } 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 /* &nbsp; so that height doesn't collapse when empty */\n _jsx(_Fragment, {\n children: \"\\xA0\"\n })\n }), text == null || text === '' ? null : /*#__PURE__*/_jsx(Tooltip, {\n options: options,\n children: text\n })]\n });\n}\nexport default TextWithTooltip;\n//# sourceMappingURL=TextWithTooltip.js.map","var _excluded = [\"scrollRef\", \"getItemDisplayText\", \"getKey\"];\nfunction ownKeys(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","/* eslint-disable react/no-array-index-key */\n// array maps being used are static, this is fine.\n\nimport React, { useCallback, useMemo, useRef, useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport TimeInput from \"./TimeInput.js\";\nimport StyleExports from \"./TimeSlider.module.css\";\nimport \"./TimeSlider.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar HANDLE_SIZE = parseInt(StyleExports['handle-size'], 10);\nvar POPOVER_WIDTH = parseInt(StyleExports['popover-width'], 10);\nvar SECONDS_IN_DAY = 24 * 60 * 60 - 1; // Max is actually 23:59:59\nvar SNAP_NEAREST_MINUTES = 5 * 60; // rounds in 5 minute intervals\n\n/**\n * Creates a time slider for setting a start and end time, that can also run overnight\n * @param props takes times in seconds 0 - 86399 and a callback\n */\nfunction TimeSlider(_ref) {\n var {\n startTime: propStartTime,\n endTime: propEndTime,\n onChange,\n isStartModified = false,\n isEndModified = false,\n 'data-testid': dataTestId\n } = _ref;\n var [startTime, setStartTime] = useState(propStartTime);\n var [endTime, setEndTime] = useState(propEndTime);\n var track = useRef(null); // we need the track width while calulculating time from handle drag\n\n // updates state if props change\n useEffect(function setTimeOnPropTimeChange() {\n setStartTime(propStartTime);\n setEndTime(propEndTime);\n }, [propStartTime, propEndTime]);\n var updateTime = useCallback((newStartTime, newEndTime) => {\n var start = newStartTime;\n var end = newEndTime;\n if (start === end) {\n if (end < SECONDS_IN_DAY) {\n end += 1;\n } else {\n start -= 1;\n }\n }\n setStartTime(start);\n setEndTime(end);\n onChange({\n startTime: start,\n endTime: end\n });\n }, [setStartTime, setEndTime, onChange]);\n var handleStartTimeChange = useCallback(newStartTime => {\n updateTime(newStartTime, endTime);\n }, [updateTime, endTime]);\n var handleEndTimeChange = useCallback(newEndTime => {\n updateTime(startTime, newEndTime);\n }, [updateTime, startTime]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"time-slider\",\n \"data-testid\": dataTestId,\n children: [/*#__PURE__*/_jsx(PopOvers, {\n startTime: startTime,\n endTime: endTime,\n onStartTimeChange: handleStartTimeChange,\n onEndTimeChange: handleEndTimeChange,\n isStartModified: isStartModified,\n isEndModified: isEndModified\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"track\",\n ref: track,\n children: [/*#__PURE__*/_jsx(TrackFills, {\n startTime: startTime,\n endTime: endTime\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"ticks\",\n children: Array(24).fill(null).map((value, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"tick\"\n }, index))\n }), /*#__PURE__*/_jsx(Handle, {\n track: track,\n time: startTime,\n setTime: handleStartTimeChange\n }), /*#__PURE__*/_jsx(Handle, {\n track: track,\n time: endTime,\n setTime: handleEndTimeChange\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"tick-labels\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"tick-label\",\n children: \"0:00\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"tick-label-wrapper\",\n children: Array(24).fill(null).map((value, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"tick-label\",\n children: \"\".concat(index + 1, \":00\")\n }, index))\n })]\n })]\n });\n}\nfunction PopOvers(props) {\n var {\n startTime,\n endTime,\n onStartTimeChange,\n onEndTimeChange,\n isStartModified,\n isEndModified,\n 'data-testid': dataTestId\n } = props;\n var swapTimes = startTime > endTime;\n var [firstTime, setFirstTime] = useState(swapTimes ? endTime : startTime);\n var [secondTime, setSecondTime] = useState(swapTimes ? startTime : endTime);\n var firstTimeRef = useRef(null);\n var secondTimeRef = useRef(null);\n // Keep track of selection in both time inputs\n var firstTimeSelectionRef = useRef(null);\n var secondTimeSelectionRef = useRef(null);\n useEffect(function setTimeOnPropTimeChange() {\n setFirstTime(startTime > endTime ? endTime : startTime);\n setSecondTime(startTime > endTime ? startTime : endTime);\n }, [startTime, endTime]);\n useEffect(function setFocusOnSwapTimesChange() {\n if (firstTimeSelectionRef.current !== null) {\n var _secondTimeRef$curren;\n (_secondTimeRef$curren = secondTimeRef.current) === null || _secondTimeRef$curren === void 0 ? void 0 : _secondTimeRef$curren.setSelection(firstTimeSelectionRef.current);\n }\n if (secondTimeSelectionRef.current !== null) {\n var _firstTimeRef$current;\n (_firstTimeRef$current = firstTimeRef.current) === null || _firstTimeRef$current === void 0 ? void 0 : _firstTimeRef$current.setSelection(secondTimeSelectionRef.current);\n }\n }, [swapTimes]);\n function onFirstTimeChange(value) {\n if (startTime <= endTime) {\n onStartTimeChange(value);\n } else {\n onEndTimeChange(value);\n }\n }\n function onSecondTimeChange(value) {\n if (startTime <= endTime) {\n onEndTimeChange(value);\n } else {\n onStartTimeChange(value);\n }\n }\n var onFirstTimeSelect = useCallback(selection => {\n firstTimeSelectionRef.current = selection;\n secondTimeSelectionRef.current = null;\n }, []);\n var onSecondTimeSelect = useCallback(selection => {\n firstTimeSelectionRef.current = null;\n secondTimeSelectionRef.current = selection;\n }, []);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"time-slider-popovers\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"flex\",\n style: {\n flexBasis: \"calc(\".concat(firstTime / SECONDS_IN_DAY * 100, \"% - \").concat(POPOVER_WIDTH / 2, \"px)\")\n }\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"handle-popper\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: classNames({\n modified: swapTimes ? isEndModified : isStartModified\n }),\n children: swapTimes ? 'End Time' : 'Start Time'\n }), /*#__PURE__*/_jsx(TimeInput, {\n ref: firstTimeRef,\n allowValueWrapping: false,\n value: firstTime,\n onChange: onFirstTimeChange,\n onSelect: onFirstTimeSelect,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-input-1\") : undefined\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"flex-spacer\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"handle-popper\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: classNames({\n modified: swapTimes ? isStartModified : isEndModified\n }),\n children: swapTimes ? 'Start Time' : 'End Time'\n }), /*#__PURE__*/_jsx(TimeInput, {\n ref: secondTimeRef,\n allowValueWrapping: false,\n value: secondTime,\n onChange: onSecondTimeChange,\n onSelect: onSecondTimeSelect,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-input-2\") : undefined\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"flex\",\n style: {\n flexBasis: \"calc(\".concat((SECONDS_IN_DAY - secondTime) / SECONDS_IN_DAY * 100, \"% - \").concat(POPOVER_WIDTH / 2, \"px)\")\n }\n })]\n });\n}\n/**\n * Shades the area between or outside of handles according to if start or endtime is greater.\n */\nfunction TrackFills(props) {\n var {\n startTime,\n endTime,\n 'data-testid': dataTestId\n } = props;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"track-fills\",\n \"data-testid\": dataTestId,\n children: [startTime > endTime && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"track-fill track-fill-start\",\n style: {\n transform: \"scaleX(\".concat(endTime / SECONDS_IN_DAY, \")\")\n }\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"track-fill track-fill-end\",\n style: {\n transform: \"scaleX(\".concat((SECONDS_IN_DAY - startTime) / SECONDS_IN_DAY, \")\")\n }\n })]\n }), startTime < endTime && /*#__PURE__*/_jsx(\"div\", {\n className: \"track-fill track-fill-middle\",\n style: {\n transform: \"translateX(\".concat(startTime / SECONDS_IN_DAY * 100, \"%) scaleX(\").concat((endTime - startTime) / SECONDS_IN_DAY, \")\")\n }\n })]\n });\n}\n/**\n * Creates a draggable handle the sets the time\n */\nfunction Handle(props) {\n var {\n track,\n time,\n setTime,\n 'data-testid': dataTestId\n } = props;\n\n /**\n * Takes the time and generate our translation string taking into account handle offset.\n * The handle offset changes for the first and last tick range dynmaically. Normally,\n * the center of the handle (size/2) is the selection origin, but at edges, it becomes either\n * end of the handle, requireing a relative offset range of 0 - 0.5, and 0.5 - 1 of handle size.\n * @param t time in seconds\n */\n var transform = useMemo(() => {\n var ONE_HOUR = 60 * 60;\n var handleOffset = HANDLE_SIZE / 2;\n if (time < ONE_HOUR) {\n handleOffset = time / ONE_HOUR * (HANDLE_SIZE / 2); // 0 - 0.5 Handle size\n } else if (time > 23 * ONE_HOUR) {\n handleOffset = HANDLE_SIZE / 2 + 1 / (SECONDS_IN_DAY - 23 * ONE_HOUR) * (time - 23 * ONE_HOUR) * (HANDLE_SIZE / 2); // 0.5 - 1 Handle size\n }\n\n return \"translateX(calc(\".concat(time / SECONDS_IN_DAY * 100, \"% - \").concat(handleOffset, \"px))\");\n }, [time]);\n var calculatePositionAsTime = useCallback(clientX => {\n if (!track.current) {\n return 0;\n }\n var trackRect = track.current.getBoundingClientRect();\n var leftEdge = Math.max(clientX - trackRect.left, 0);\n // get position as 0-1 on slider and mulitply by seconds in a day to convert to time\n var preciseTime = SECONDS_IN_DAY * Math.min(1, leftEdge / trackRect.width);\n // snap to nearest N(5) minute interval\n var roundedTime = SNAP_NEAREST_MINUTES * Math.round(preciseTime / SNAP_NEAREST_MINUTES);\n // prevent over-rounding to 24:00:00\n var limitMax = Math.min(SECONDS_IN_DAY, roundedTime);\n return limitMax;\n }, [track]);\n var handleMouseMove = useCallback(_ref2 => {\n var {\n clientX\n } = _ref2;\n setTime(calculatePositionAsTime(clientX));\n }, [setTime, calculatePositionAsTime]);\n var handleMouseUp = useCallback(_ref3 => {\n var {\n clientX\n } = _ref3;\n setTime(calculatePositionAsTime(clientX));\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n document.documentElement.classList.remove('drag-pointer-events-none');\n }, [setTime, calculatePositionAsTime, handleMouseMove]);\n var startDragListening = useCallback(() => {\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n document.documentElement.classList.add('drag-pointer-events-none');\n }, [handleMouseMove, handleMouseUp]);\n var stopDragListening = useCallback(() => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n document.documentElement.classList.remove('drag-pointer-events-none');\n }, [handleMouseMove, handleMouseUp]);\n var handleMouseDown = useCallback(() => {\n startDragListening();\n }, [startDragListening]);\n useEffect(function removeListenersOnUnmount() {\n return () => {\n stopDragListening();\n };\n }, [stopDragListening]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"handle-track\",\n style: {\n transform\n },\n children: /*#__PURE__*/_jsx(\"button\", {\n className: \"handle\",\n type: \"button\",\n \"aria-label\": \"Change time\",\n onMouseDown: handleMouseDown,\n \"data-testid\": dataTestId\n })\n });\n}\nexport default TimeSlider;\n//# sourceMappingURL=TimeSlider.js.map","import React 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","import { useEffect, useMemo } from 'react';\nimport useApi from \"./useApi.js\";\nexport function useCreateClient(serverUrl, options) {\n var api = useApi();\n var client = useMemo(() => new api.CoreClient(serverUrl, options), [api, serverUrl, options]);\n useEffect(() => () => {\n client.disconnect();\n }, [client]);\n return client;\n}\nexport default useCreateClient;\n//# sourceMappingURL=useCreateClient.js.map","import React, { createContext } from 'react';\nimport useCreateClient from \"./useCreateClient.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ClientContext = /*#__PURE__*/createContext(null);\n/**\n * ClientBootstrap component. Handles creating the client.\n */\nexport function ClientBootstrap(_ref) {\n var {\n serverUrl,\n options,\n children\n } = _ref;\n var client = useCreateClient(serverUrl, options);\n return /*#__PURE__*/_jsx(ClientContext.Provider, {\n value: client,\n children: children\n });\n}\nexport default ClientBootstrap;\n//# sourceMappingURL=ClientBootstrap.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 { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ClientContext } from \"./ClientBootstrap.js\";\nexport function useClient() {\n return useContextOrThrow(ClientContext, 'No Client available in useClient. Was code wrapped in ClientBootstrap or ClientContext.Provider?');\n}\nexport default useClient;\n//# sourceMappingURL=useClient.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","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport shortid from 'shortid';\nimport Log from '@deephaven/log';\nimport { TimeoutError } from '@deephaven/utils';\nvar log = Log.module('MessageUtils');\nexport var LOGIN_OPTIONS_REQUEST = 'io.deephaven.message.LoginOptions.request';\nexport var SESSION_DETAILS_REQUEST = 'io.deephaven.message.SessionDetails.request';\n\n/**\n * Use a BroadcastChannel for sending messages between tabs, such as when the user logs out.\n */\nexport var BROADCAST_CHANNEL_NAME = 'io.deephaven.broadcast';\n\n/**\n * Event emitted when the user has logged in successfully\n */\nexport var BROADCAST_LOGIN_MESSAGE = 'io.deephaven.broadcast.Login';\n\n/**\n * Event emitted when the user has logged out\n */\nexport var BROADCAST_LOGOUT_MESSAGE = 'io.deephaven.broadcast.Logout';\nexport function isMessage(obj) {\n var message = obj;\n return message != null && typeof message.id === 'string' && typeof message.message === 'string';\n}\nexport function isBroadcastLoginMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGIN_MESSAGE;\n}\nexport function isBroadcastLogoutMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGOUT_MESSAGE;\n}\nexport function isResponse(obj) {\n var response = obj;\n return response != null && typeof response.id === 'string';\n}\n\n/**\n * Make message object with optional payload\n * @param message Message string\n * @param id Unique message id\n * @param payload Payload to send\n * @returns Message\n */\nexport function makeMessage(message) {\n var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : shortid();\n var payload = arguments.length > 2 ? arguments[2] : undefined;\n return {\n message,\n id,\n payload\n };\n}\n\n/**\n * Make response object for given message id\n * @param messageId Id of the request message to respond to\n * @param payload Payload to respond with\n * @returns Response\n */\nexport function makeResponse(messageId, payload) {\n return {\n id: messageId,\n payload\n };\n}\nexport function getWindowParent() {\n if (window.opener != null) {\n return window.opener;\n }\n if (window.parent != null && window.parent !== window) {\n return window.parent;\n }\n return null;\n}\n\n/**\n * Request data from the parent window and wait for response\n * @param request Request message to send to the parent window\n * @param timeout Timeout in ms\n * @returns Payload of the given type, or undefined\n */\nexport function requestParentResponse(_x) {\n return _requestParentResponse.apply(this, arguments);\n}\nfunction _requestParentResponse() {\n _requestParentResponse = _asyncToGenerator(function* (request) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30000;\n var parent = getWindowParent();\n if (parent == null) {\n throw new Error('window parent is null, unable to send request.');\n }\n return new Promise((resolve, reject) => {\n var timeoutId;\n var id = shortid();\n var listener = event => {\n var {\n data\n } = event;\n if (!isResponse(data)) {\n log.debug('Ignoring non-deephaven response', data);\n return;\n }\n log.debug('Received message', data);\n if ((data === null || data === void 0 ? void 0 : data.id) !== id) {\n log.debug(\"Ignore message, id doesn't match\", data);\n return;\n }\n window.clearTimeout(timeoutId);\n window.removeEventListener('message', listener);\n resolve(data.payload);\n };\n window.addEventListener('message', listener);\n timeoutId = window.setTimeout(() => {\n window.removeEventListener('message', listener);\n reject(new TimeoutError('Request timed out'));\n }, timeout);\n parent.postMessage(makeMessage(request, id), '*');\n });\n });\n return _requestParentResponse.apply(this, arguments);\n}\n//# sourceMappingURL=MessageUtils.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class NoConsolesError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isNoConsolesError\", true);\n }\n}\nexport function isNoConsolesError(error) {\n return error.isNoConsolesError;\n}\nexport default NoConsolesError;\n//# sourceMappingURL=NoConsolesError.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport { requestParentResponse, SESSION_DETAILS_REQUEST } from \"./MessageUtils.js\";\nimport NoConsolesError, { isNoConsolesError } from \"./NoConsolesError.js\";\nvar log = Log.module('SessionUtils');\n/**\n * @returns New connection to the server\n */\nexport function createConnection(dh, websocketUrl) {\n log.info(\"Starting connection to '\".concat(websocketUrl, \"'...\"));\n return new dh.IdeConnection(websocketUrl);\n}\n\n/**\n * Create a new session using the default URL\n * @returns A session and config that is ready to use\n */\nexport function createSessionWrapper(_x, _x2, _x3) {\n return _createSessionWrapper.apply(this, arguments);\n}\nfunction _createSessionWrapper() {\n _createSessionWrapper = _asyncToGenerator(function* (dh, connection, details) {\n log.info('Getting console types...');\n var types = yield connection.getConsoleTypes();\n if (types.length === 0) {\n throw new NoConsolesError('No console types available');\n }\n log.info('Available types:', types);\n var type = types[0];\n log.info('Starting session with type', type);\n var session = yield connection.startSession(type);\n var config = {\n type,\n id: shortid.generate()\n };\n log.info('Console session established', config);\n return {\n session,\n config,\n connection,\n details,\n dh\n };\n });\n return _createSessionWrapper.apply(this, arguments);\n}\nexport function createCoreClient(dh, websocketUrl, options) {\n log.info('createCoreClient', websocketUrl);\n return new dh.CoreClient(websocketUrl, options);\n}\nfunction isSessionDetails(obj) {\n return obj != null && typeof obj === 'object';\n}\nfunction requestParentSessionDetails() {\n return _requestParentSessionDetails.apply(this, arguments);\n}\nfunction _requestParentSessionDetails() {\n _requestParentSessionDetails = _asyncToGenerator(function* () {\n var response = yield requestParentResponse(SESSION_DETAILS_REQUEST);\n if (!isSessionDetails(response)) {\n throw new Error(\"Unexpected session details response: \".concat(response));\n }\n return response;\n });\n return _requestParentSessionDetails.apply(this, arguments);\n}\nexport function getSessionDetails() {\n return _getSessionDetails.apply(this, arguments);\n}\nfunction _getSessionDetails() {\n _getSessionDetails = _asyncToGenerator(function* () {\n var searchParams = new URLSearchParams(window.location.search);\n switch (searchParams.get('authProvider')) {\n case 'parent':\n return requestParentSessionDetails();\n }\n return {};\n });\n return _getSessionDetails.apply(this, arguments);\n}\nexport function loadSessionWrapper(_x4, _x5, _x6) {\n return _loadSessionWrapper.apply(this, arguments);\n}\nfunction _loadSessionWrapper() {\n _loadSessionWrapper = _asyncToGenerator(function* (dh, connection, sessionDetails) {\n var sessionWrapper;\n try {\n sessionWrapper = yield createSessionWrapper(dh, connection, sessionDetails);\n } catch (e) {\n // Consoles may be disabled on the server, but we should still be able to start up and open existing objects\n if (!isNoConsolesError(e)) {\n throw e;\n }\n }\n return sessionWrapper;\n });\n return _loadSessionWrapper.apply(this, arguments);\n}\n//# sourceMappingURL=SessionUtils.js.map","import { 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 { 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 useTableListener(table, dh.Table.EVENT_SIZECHANGED, () => {\n forceRerender(i => i + 1);\n });\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 } 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 viewportData = useInitializeViewportData(table, reuseItemsOnTableResize);\n var setPaddedViewport = useSetPaddedViewportCallback(table, viewportSize, viewportPadding);\n var setViewport = useCallback(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 var onTableUpdated = useMemo(() => createOnTableUpdatedHandler(viewportData, deserializeRow), [deserializeRow, viewportData]);\n useTableListener(table, dh.Table.EVENT_UPDATED, onTableUpdated);\n var size = useTableSize(table);\n useEffect(() => {\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, 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","import React, { createContext, useEffect, useState } from 'react';\nimport '@fontsource/fira-mono/400.css';\nimport '@fontsource/fira-mono/500.css';\nimport '@fontsource/fira-mono/700.css';\nimport '@fontsource/fira-sans/300.css';\nimport '@fontsource/fira-sans/300-italic.css';\nimport '@fontsource/fira-sans/400.css';\nimport '@fontsource/fira-sans/400-italic.css';\nimport '@fontsource/fira-sans/500.css';\nimport '@fontsource/fira-sans/600.css';\nimport '@fontsource/fira-sans/700.css';\nimport '@fontsource/fira-sans/700-italic.css';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport var FontsLoadedContext = /*#__PURE__*/createContext(false);\n/**\n * FontBootstrap component. Handles preloading fonts.\n */\nexport function FontBootstrap(_ref) {\n var {\n fontClassNames = ['fira-sans-regular', 'fira-sans-semibold', 'fira-mono'],\n children\n } = _ref;\n var [isLoaded, setIsLoaded] = useState(false);\n useEffect(function initFonts() {\n document.fonts.ready.then(() => {\n setIsLoaded(true);\n });\n }, []);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontsLoadedContext.Provider, {\n value: isLoaded,\n children: children\n }), /*#__PURE__*/_jsx(\"div\", {\n id: \"preload-fonts\",\n style: {\n visibility: 'hidden',\n position: 'absolute',\n top: -10000\n },\n children: fontClassNames.map(className => /*#__PURE__*/_jsx(\"p\", {\n className: className,\n children: \"preload\"\n }, className))\n })]\n });\n}\nexport default FontBootstrap;\n//# sourceMappingURL=FontBootstrap.js.map","import React, { 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","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport ChartModel from \"./ChartModel.js\";\nimport { defaultChartTheme } from \"./ChartTheme.js\";\nimport ChartUtils from \"./ChartUtils.js\";\n/** Displays a basic random chart */\nclass MockChartModel extends ChartModel {\n static get theme() {\n /* eslint-disable no-underscore-dangle */\n if (MockChartModel._theme == null) {\n MockChartModel._theme = defaultChartTheme();\n }\n return MockChartModel._theme;\n /* eslint-enable no-underscore-dangle */\n }\n\n static makeRandomSeries(offset) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var steps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;\n var dates = [];\n var values = [];\n var smooth = [];\n var linear = [];\n\n // Setting to a fixed seed date so that e2e tests can be deterministic.\n var startDate = new Date('2018-06-01');\n for (var i = 0; i < steps; i += 1) {\n var date = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i - steps);\n dates.push(\"\".concat(date.getFullYear(), \"-\").concat(date.getMonth() + 1, \"-\").concat(date.getDate()));\n var v = (Math.sin(i / steps * offset) * steps / 3 + Math.cos(i * 0.2) * steps / 6 + Math.sin(i * 0.5) * steps / 10 + MockChartModel.random() * steps / 5 + i * MockChartModel.smoothing) * scale;\n v = Math.round(v * 100) / 100; // 2 decimals only\n // using steps acts as amplititude scaling based on value\n // large sine wave for course shape + small sine waves for bumpiness +\n // general randomness noise + index to be constantly up and to the right + smoothing factor\n values.push(v);\n linear.push(40 + i * MockChartModel.smoothing);\n smooth.push(Math.sin(i / steps * offset) * steps / 3 + MockChartModel.random() * steps / 10 + i * MockChartModel.smoothing); // push a smoother version of the same thing\n }\n\n return {\n x: dates,\n y: values,\n s: smooth,\n l: linear\n };\n }\n static makeScatter(series) {\n return {\n name: 'SCTR',\n x: series.x,\n y: series.y,\n type: 'scatter',\n mode: 'markers',\n hoverinfo: 'skip',\n marker: {\n size: 5\n }\n };\n }\n static makeArea(series) {\n return {\n name: 'AREA',\n x: series.x,\n y: series.s,\n type: 'scatter',\n mode: 'line',\n fill: 'tozeroy',\n hoverinfo: 'all',\n line: {\n width: 3\n // area patten gets applied as hack in post render plot.ly callback + css\n }\n };\n }\n\n static makeTrendline(series) {\n return {\n // we probably want to toss the line formula in legend I guess? either that or render it as text manually on plot\n name: 'Trendline <br>R<sup>2</sup> = 0.91',\n x: series.x,\n y: series.l,\n type: 'scatter',\n mode: 'line',\n hoverinfo: 'skip',\n line: {\n width: 3,\n dash: 'dot' // trendlines should follow some sort of color convention + dots/dashed. Remember there can multiple\n // chroma(c.$green).brighten(1.2).hex()\n }\n };\n }\n\n static makeErrorBand(series) {\n // generate continouous error bands values and text\n var erroryforward = [];\n var errorybackward = [];\n for (var i = 0; i < series.y.length; i += 1) {\n var value = series.y[i];\n erroryforward[i] = Math.round((value + 18) * 100) / 100;\n errorybackward[i] = Math.round((value - 18) * 100) / 100;\n }\n\n // makes a closed shape of points winding clockwise for y values\n var errory = erroryforward.concat(errorybackward.reverse());\n return {\n name: 'error',\n x: series.x.concat(series.x.slice().reverse()),\n // winding for x values, that slice just clones so reverse doesn't apply inplace\n y: errory,\n type: 'scatter',\n mode: 'line',\n hoverinfo: 'skip',\n fill: 'toself',\n // there's some ordering bug with scattergl where if the areas traces are ordered after the lines they don't render\n line: {\n width: 0,\n color: MockChartModel.theme.error_band_line_color,\n shape: 'spline'\n }\n };\n }\n static makeLine(series) {\n return {\n name: 'LINE',\n x: series.x,\n y: series.y,\n type: 'scatter',\n mode: 'line',\n hoverinfo: 'x+y+text+name',\n line: {\n width: 3\n }\n };\n }\n static makeRandomData() {\n var series1 = MockChartModel.makeRandomSeries(6);\n var areaPattern = MockChartModel.makeArea(series1);\n var trendLine = MockChartModel.makeTrendline(series1);\n var series2 = MockChartModel.makeRandomSeries(2);\n var line = MockChartModel.makeLine(series2);\n var errorBand = MockChartModel.makeErrorBand(series2);\n return [areaPattern, trendLine, line, errorBand];\n }\n static makeDefaultLayout(dh) {\n var layout = {\n template: new ChartUtils(dh).makeDefaultTemplate(MockChartModel.theme)\n };\n layout.title = 'Chart';\n layout.xaxis = {\n title: 'Datestamp'\n };\n layout.yaxis = {\n title: 'Price'\n };\n return layout;\n }\n constructor(dh) {\n var {\n data = MockChartModel.makeRandomData(),\n layout = MockChartModel.makeDefaultLayout(dh),\n filterFields = []\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(dh);\n _defineProperty(this, \"data\", void 0);\n _defineProperty(this, \"filterFields\", void 0);\n _defineProperty(this, \"layout\", void 0);\n this.data = data;\n this.layout = layout;\n this.filterFields = filterFields;\n }\n getData() {\n return this.data;\n }\n getLayout() {\n return this.layout;\n }\n getFilterColumnMap() {\n var map = new Map();\n for (var i = 0; i < this.filterFields.length; i += 1) {\n var name = this.filterFields[i];\n var type = 'java.lang.String';\n map.set(name, {\n name,\n type\n });\n }\n return map;\n }\n isFilterRequired() {\n return this.filterFields.length > 0;\n }\n setFilter() {\n this.fireUpdate(this.data);\n }\n}\n_defineProperty(MockChartModel, \"random\", Math.random.bind(Math));\n_defineProperty(MockChartModel, \"smoothing\", 1.5);\n_defineProperty(MockChartModel, \"_theme\", void 0);\nexport default MockChartModel;\n//# sourceMappingURL=MockChartModel.js.map","import { 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 { 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","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","/**\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","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { createContext, useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ServerConfigContext = /*#__PURE__*/createContext(null);\n/**\n * ServerConfigBootstrap component. Handles loading the server config.\n */\nexport function ServerConfigBootstrap(_ref) {\n var {\n children\n } = _ref;\n var client = useClient();\n var [serverConfig, setServerConfig] = useState();\n var [error, setError] = useState();\n useEffect(function initServerConfigValues() {\n var isCanceled = false;\n function loadServerConfigValues() {\n return _loadServerConfigValues.apply(this, arguments);\n }\n function _loadServerConfigValues() {\n _loadServerConfigValues = _asyncToGenerator(function* () {\n try {\n var newServerConfigValues = yield client.getServerConfigValues();\n if (!isCanceled) {\n setServerConfig(new Map(newServerConfigValues));\n }\n } catch (e) {\n if (!isCanceled) {\n setError(e);\n }\n }\n });\n return _loadServerConfigValues.apply(this, arguments);\n }\n loadServerConfigValues();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n var isLoading = serverConfig == null;\n if (isLoading || error != null) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {\n isLoading: isLoading && error == null,\n errorMessage: getErrorMessage(error)\n });\n }\n return /*#__PURE__*/_jsx(ServerConfigContext.Provider, {\n value: serverConfig,\n children: children\n });\n}\nexport default ServerConfigBootstrap;\n//# sourceMappingURL=ServerConfigBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ServerConfigContext } from \"./ServerConfigBootstrap.js\";\nexport function useServerConfig() {\n return useContextOrThrow(ServerConfigContext, 'No server config available in useServerConfig. Was code wrapped in ServerConfigBootstrap or ServerConfigContext.Provider?');\n}\nexport default useServerConfig;\n//# sourceMappingURL=useServerConfig.js.map","import React, { useContext } from 'react';\nimport { UserContext, UserOverrideContext, UserPermissionsOverrideContext, getUserFromConfig } from '@deephaven/auth-plugins';\nimport useServerConfig from \"./useServerConfig.js\";\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":["getErrorMessage","error","errorObj","message","Section","SpectrumSection","isElementOfType","node","type","isValidElement","getSelectedItemCountOrAll","size","selection","isSelectionEqual","selectionA","selectionB","key","isSelectionMaybeInvertedEqual","mapSelection","selectedItemKeys","getItem","mapItem","keys","optimizeSelection","totalRecords","getKey","isInverted","optimizedSelection","generateRange","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","value","_asyncToGenerator","fn","self","args","err","createValidationProps","isValid","errorMessage","extractSpectrumHTMLElement","ref","_ref$UNSAFE_getDOMNod","extractSpectrumLastChildHTMLElement","maybeHTMLElement","identityExtractHTMLElement","findSpectrumComboBoxScrollArea","findSpectrumPopoverScrollArea","findSpectrumPickerScrollArea","triggerElementType","trigger","popupId","scrollArea","getPositionOfSelectedItem","_x","_getPositionOfSelectedItem","_ref","keyedItems","itemHeight","selectedKey","topOffset","item","_item$item$key","_item$item","useCallbackWithAction","callback","action","useCallback","result","useCheckOverflow","isOverflowing","setIsOverflowing","useState","checkOverflow","elRef","el","resetIsOverflowing","useMappedRef","targetRef","map","useContentRect","x","setX","y","setY","width","setWidth","height","setHeight","contentRect","useMemo","setEl","handleResize","_firstEntry$contentRe","firstEntry","rect","useResizeObserver","useDebouncedCallback","debounceMs","debouncedCallback","debounce","useEffect","useDelay","delayMs","isDelayed","setIsDelayed","timeout","useDependentState","inputValue","state","setState","useEffectNTimesWhen","effectCallback","effectCallbackDependencies","n","condition","countRef","useRef","useIsEqualMemo","isEqual","previousValueRef","currentValue","preventDefault","event","useFormWithDetachedSubmitButton","enableDefaultFormSubmitBehavior","formId","shortid","submitButtonRef","buttonEl","formProps","submitButtonProps","useMappedSelection","viewportData","selectedKeys","items","useOnScrollRef","onScroll","extractHTMLElement","cleanupRef","_cleanupRef$current","_cleanupRef$current2","element","usePopoverOnScrollRef","findScrollArea","getInitialScrollPosition","isScrollOnOpenEnabledRef","scrollAreaEl","setScrollAreaEl","scrollToInitialPosition","position","scrollTimeoutRef","onOpenChange","isOpen","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","debounceTimeout","previousOffsetRef","offset","useDebouncedValue","isDebouncing","setIsDebouncing","debouncedValue","setDebouncedValue","previousValue","setPreviousValue","previousDebounceMs","setPreviousDebounceMs","isCancelled","timeoutId","useSetAttributesCallback","attributes","selectors","rootEl","targets","prop","useSpectrumDisableSpellcheckRef","disableSpellcheck","SPELLCHECK_FALSE_ATTRIBUTE","useWindowedListData","defaultGetKey","setItems","setSelectedKeys","matchKey","findItem","_items$find","append","values","prevItems","insert","index","remove","keySet","update","bulkUpdate","itemMap","indices","indexMap","_key","a","b","newItems","_key2","newItem","listData","hasKey","ColorValues","isDHColorValue","colorValueStyle","_excluded","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","Text","forwardRef","props","forwardedRef","color","UNSAFE_style","rest","style","_jsx","SpectrumText","ItemTooltip","children","options","Tooltip","Flex","ItemContent","content","tooltipOptions","previousContent","setPreviousContent","NON_BREAKING_SPACE","Children","cloneElement","cl","stylesCommon","tooltip","_jsxs","_Fragment","ITEM_EMPTY_STRING_TEXT_VALUE","getItemKey","getPositionOfSelectedItemElement","_getPositionOfSelectedItemElement","isSectionElement","isItemElement","Item","isItemElementWithDescription","childrenArray","ensureArray","child","_child$props","isNormalizedItemsWithKeysList","isItemOrSection","isNormalizedSection","maybeNormalizedSection","normalizeTooltipOptions","placement","itemSelectionToStringSet","itemKeys","wrapIcon","maybeIconKey","slot","_maybeIconKey","_dhIcons$maybeIconKey","Icon","FontAwesomeIcon","dhIcons","wrapItemChildren","itemsOrSections","itemsOrSectionsArray","_item$key","_textValue","_item$key2","text","textValue","wrapPrimitiveWithText","_content","separateSpectrumProps","ariaLabel","ariaLabelledby","ariaDescribedby","ariaHidden","marginX","marginY","minWidth","minHeight","maxWidth","maxHeight","flex","flexGrow","flexShrink","flexBasis","justifySelf","alignSelf","order","gridArea","gridColumn","gridRow","gridColumnStart","gridColumnEnd","gridRowStart","gridRowEnd","zIndex","top","bottom","start","end","left","right","isHidden","componentProps","useRenderNormalizedItem","itemIconSlot","showItemDescriptions","showItemIcons","normalizedItem","_normalizedItem$item","_normalizedItem$item$","_normalizedItem$item2","_normalizedItem$item3","_normalizedItem$item4","description","icon","useStringifiedMultiSelection","normalizedItems","defaultSelectedKeys","disabledKeys","selectedStringKeys","defaultSelectedStringKeys","disabledStringKeys","onStringSelectionChange","actualKeys","useStringifiedSelection","defaultSelectedKey","selectedStringKey","defaultSelectedStringKey","_getItemKey","selectedItem","actualKey","ThemePicker","selectedThemeKey","setSelectedThemeKey","themes","useTheme","onSelectionChange","Picker","Logo","className","classNames","useSpectrumThemeProvider","useProvider","ListViewWrapper","_styleProps$minHeight","_listViewProps$densit","ariaLabelProps","styleProps","EMPTY_FUNCTION","listViewProps","scale","scrollRef","contentRectRef","SpectrumListView","ListView","UNSAFE_className","spectrumListViewProps","wrappedItems","ListViewNormalized","renderNormalizedItem","forceRerenderKey","_createElement","usePickerScrollOnOpen","popoverOnOpenChange","onOpenChangeInternal","spectrumPickerProps","PICKER_ITEM_HEIGHTS","isUncontrolled","uncontrolledSelectedKey","setUncontrolledSelectedKey","disableScrollOnOpen","PICKER_TOP_OFFSET","onSelectionChangeInternal","_ref3","SpectrumPicker","PickerNormalized","itemOrSection","_itemOrSection$item","_itemOrSection$item2","Heading","SpectrumHeading","View","backgroundColor","SpectrumView","ActionButtonDialogTrigger","isQuiet","labelText","iconClassName","DialogTrigger","ActionButton","ConfirmationDialog","heading","confirmationButtonLabel","onCancel","onConfirm","Dialog","styles","Divider","Content","Form","ButtonGroup","Button","ConfirmActionButton","_onConfirm","renderDialog","close","vsTrash","ACTION_ICON_HEIGHT","IconActionButton","label","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","Component","memoize","option","popperOptions","React","title","menuIsOpen","filter","_this$popper$current","filteredOptions","perfectMatch","_this$input$current","keyboardOptionIndex","direction","newKeyboardOptionIndex","onEnter","_this$input$current2","_this$input$current3","_this$popper$current2","_this$popper$current3","focusInput","_this$input$current4","_this$menuContainer$c","inputWidth","noMatchText","inputPlaceholder","disabled","defaultTitle","spellCheck","dataTestId","invalid","Popper","PropTypes","AutoCompleteInput$1","AutoResizeTextarea","propsValue","placeholder","delimiter","id","setValue","isPastedChange","setIsPastedChange","explode","string","implode","reCalculateLayout","resizedHeight","handleChange","handleFocus","handleMouseDown","handleBlur","handlePaste","DebouncedModal","blockInteraction","debouncedIsOpen","InfoModal","subtitle","Modal","ModalBody","BulkActionBar","selectedItemCount","onClearSelection","ActionBar","commonStyles","Collapse","elemParam","elem","scrollBarWidth","autoFocusOnShow","_children","inTransition","CSSTransition","Collapse$1","log","Log","TIME_PATTERN","EXAMPLES","fixIncompleteValue","TimeInput","allowValueWrapping","onFocus","onBlur","onSelect","TimeUtils","parsedValueRef","_setSelection","inputRef","useImperativeHandle","_inputRef$current","newSelection","_inputRef$current2","getNextSegmentValue","range","delta","segmentValue","maxValue","newSegmentValue","getPreferredReplacementString","replaceValue","replaceIndex","newChar","selectionStart","selectionEnd","DEFAULT_GET_PREFERRED_REPLACEMENT_STRING","fixedValue","handleSelect","MaskedInput","TimeInput$1","CUSTOM_OPTION","CustomTimeSelect","valueToTime","customTime","_this$button$current","_this$button$current2","inputFocused","menuOptionsLength","optionIndex","timeToValue","_this$button$current3","activeOption","valueIndex","_this$menuContainer$c2","focusButton","_this$button$current4","_this$menuContainer$c3","customText","matchFound","optionArray","DropdownMenu","vsCheck","time","CustomTimeSelect$1","DATE_PATTERN","DATE_FORMAT","DateInput","setSelection","DateInput$1","EditableItemList","isInvalid","onAdd","onDelete","validate","inputError","setInputError","selectedRanges","setSelectedRanges","handleSelectionChange","ranges","handleDelete","RangeUtils","handleAdd","validationError","handleInputChange","handleInputFocus","handleInputKeyDown","containerHeight","clamp","ItemList","vsAdd","ErrorView","isExpandedProp","isExpandable","setIsExpandable","isExpanded","setIsExpanded","viewRef","textRef","newIsExpandable","debouncedHandleResize","useLayoutEffect","vsWarning","CopyButton","vsDiffRemoved","vsDiffAdded","HierarchicalCheckboxMenu","parent","valueMap","includesTrue","includesFalse","onUpdateValueMap","newChildren","parentSelected","newChildValue","_","currentChildren","_parentSelected","copy","Checkbox","_ref2","menuText","HierarchicalCheckboxMenu$1","NavTab","memo","tab","onClose","isActive","activeRef","isDraggable","contextActions","isClosable","iconElem","Draggable","provided","snapshot","e","vsClose","ContextActions","NavTab$1","CLICK_TIMEOUT","START_SPEED","ACCELERATION","isScrolledLeft","isScrolledRight","makeBaseContextActions","tabs","_i","t","NavTabList","activeKey","onReorder","makeContextActions","containerRef","disableScrollLeft","setDisableScrollLeft","disableScrollRight","setDisableScrollRight","onDragEnd","DragUtils","handleScroll","shouldDisableScrollLeft","shouldDisableScrollRight","continuousScrollRef","handleLeftClick","handleRightClick","handleMouseRepeat","startX","deltaX","prevTimestamp","container","timestamp","startTime","deltaTime","newDeltaX","endContinuousScroll","holdTimer","rAF","handleMouseDownLeft","handleMouseDownRight","_containerRef$current","onWheel","nav","_containerRef$current2","tabContextActionMap","tabContextActions","_makeContextActions","activeTabRef","activeTab","navTabs","vsChevronLeft","DragDropContext","Droppable","r","vsChevronRight","VOLATILITY","LOW","HIGH","START_Y","GRID_SIZE","PATTERN","PX_PER_SECOND","RESIZE_DEBOUNCE","INTERACTION_TIMEOUT","THEME_COLOR_VARIABLES","getRandomAreaPlotAnimationThemeColors","resolveCssVariablesInRecord","RandomAreaPlotAnimation","activeThemes","themeColors","canvas","shade","setShade","ctx","pattern","lastTimestamp","setCanvasSize","_ctx","createPatternFill","foregroundFill","foregroundStroke","canvasPattern","contextPattern","randomWalk","prev","rand","change","initData","startingData","setDataSize","drawAreaLine","path","context","drawGridLines","drawCanvas","_lastTimestamp","_lastTimestamp2","_lastTimestamp3","background","gridColor","assertNotNull","subPixelMotion","_lastTimestamp4","numberOfPoints","pauseAnimation","resetIdleTimeout","startAnimation","handleActivity","_canvas$current","RandomAreaPlotAnimation$1","TextWithTooltip","SearchableCombobox","getItemDisplayText","renderItem","displayText","ComboBox","DEFAULT_DELAY_MS","TableViewEmptyState","show","setShow","IllustratedMessage","vsEmptyWindow","HANDLE_SIZE","StyleExports","POPOVER_WIDTH","SECONDS_IN_DAY","SNAP_NEAREST_MINUTES","TimeSlider","propStartTime","propEndTime","isStartModified","isEndModified","setStartTime","endTime","setEndTime","track","updateTime","newStartTime","newEndTime","handleStartTimeChange","handleEndTimeChange","PopOvers","TrackFills","Handle","onStartTimeChange","onEndTimeChange","swapTimes","firstTime","setFirstTime","secondTime","setSecondTime","firstTimeRef","secondTimeRef","firstTimeSelectionRef","secondTimeSelectionRef","_secondTimeRef$curren","_firstTimeRef$current","onFirstTimeChange","onSecondTimeChange","onFirstTimeSelect","onSecondTimeSelect","setTime","transform","ONE_HOUR","handleOffset","calculatePositionAsTime","clientX","trackRect","leftEdge","preciseTime","roundedTime","limitMax","handleMouseMove","handleMouseUp","startDragListening","stopDragListening","ToastNotification","buttons","isShown","classNamesProp","onClick","onDismiss","hasButtons","ThemeExport","FadeTransition","useCreateClient","serverUrl","api","useApi","client","ClientContext","createContext","ClientBootstrap","DeferredApiContext","useDeferredApi","widget","setApi","deferredApi","useContext","contextApi","ApiContext","loadApi","_loadApi","newApi","DeferredApiBootstrap","onError","apiError","useClient","useContextOrThrow","makeApiContextWrapper","dh","LOGIN_OPTIONS_REQUEST","SESSION_DETAILS_REQUEST","BROADCAST_CHANNEL_NAME","BROADCAST_LOGIN_MESSAGE","BROADCAST_LOGOUT_MESSAGE","isMessage","isBroadcastLoginMessage","isBroadcastLogoutMessage","isResponse","response","makeMessage","payload","makeResponse","messageId","getWindowParent","requestParentResponse","_requestParentResponse","request","listener","TimeoutError","NoConsolesError","isNoConsolesError","createConnection","websocketUrl","createSessionWrapper","_x2","_x3","_createSessionWrapper","connection","details","types","session","config","createCoreClient","isSessionDetails","requestParentSessionDetails","_requestParentSessionDetails","getSessionDetails","_getSessionDetails","searchParams","loadSessionWrapper","_x4","_x5","_x6","_loadSessionWrapper","sessionDetails","sessionWrapper","useTableListener","eventEmitter","eventName","useTableListener$1","ColumnNameError","ColumnNameError$1","TableDisconnectError","TableDisconnectError$1","useTable","table","firstRow","lastRow","columnNames","columns","setColumns","columnError","setColumnError","tableError","setTableError","handleUpdate","detail","column","handleDisconnect","handleReconnect","useTable$1","useTableColumn","columnName","useTableColumn$1","SIZE_LIMIT","TableInput","_table$size","_error$message","settings","tablePromise","parentRef","formatter","columnFormats","FormatterUtils","dateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","Formatter","searchValue","setSearchValue","setTable","listRef","itemCount","formatValue","updatedSelection","removedItems","v","isSelected","initTable","promise","PromiseUtils","cancelablePromise","handleSearchChange","_listRef$current","selectedValue","handleSelectAll","handleClearSelection","handleViewportChange","handleChildBlur","_parentRef$current","relatedTarget","isEmpty","SearchInput","SelectValueList","LoadingOverlay","useBroadcastChannel","onEvent","name","channel","handleEvent","useBroadcastLoginListener","onLogin","onLogout","onMessage","REFRESH_TOKEN_KEY","RefreshTokenContext","readRefreshToken","cookieToken","Cookies","storeRefreshToken","token","expires","RefreshTokenBootstrap","setToken","cleanup","newToken","useFormatter","instance","createFormatterFromSettings","bindAllMethods","getColumnFormat","getColumnFormatMapForType","getColumnTypeFormatter","getFormattedString","useTableSize","forceRerender","getSize","resizeItemsArray","targetSize","reuseExistingItems","currentSize","generateEmptyKeyedItems","useInitializeViewportData","reuseItemsOnTableResize","useSetPaddedViewportCallback","viewportSize","viewportPadding","first","last","padFirstAndLastRow","useViewportData","scrollDebounce","SCROLL_DEBOUNCE_MS","deserializeRow","defaultRowDeserializer","setPaddedViewport","setViewport","isClosed","applyFiltersAndRefresh","filters","onTableUpdated","createOnTableUpdatedHandler","getItemKeyColumn","keyColumnName","getItemLabelColumn","keyColumn","labelColumnName","defaultFormatKey","defaultFormatValue","_columnType","useItemRowDeserializer","descriptionColumnName","iconColumnName","labelColumn","descriptionColumn","iconColumn","row","_props$density","LIST_VIEW_ROW_HEIGHTS","useTableUtils","TableUtils","useGetItemIndexByValue","tableUtils","columnValueType","getItemIndexByValue","isCanceled","useCheckIfExistsValue","isCaseSensitive","valueTrimmed","setValueTrimmed","valueTrimmedDebounced","trimAndUpdateValue","valueExistsData","valueExistsIsLoading","valueExists","DEBOUNCE_VIEWPORT_SEARCH_MS","useDebouncedViewportSearch","debouncedSearch","searchText","searchTextTrimmed","DEBOUNCE_MS","useDebouncedViewportSelectionFilter","shouldSelectAllOnNoSelection","mapItemToValue","valuesSelection","createKeyedItemKey","debouncedValuesSelection","memoValuesSelection","createSelectedValuesFilter","useFilterConditionFactories","maybeTable","_len","filterConditionFactories","removeNullAndUndefined","f","useFilteredItemsWithDefaultValue","displayProp","defaultDisplayValue","searchTextRef","useGetItemPosition","rowIndex","defaultItemOffset","useViewportFilter","useSearchableViewportData","searchColumnNames","setSearchText","searchTextFilter","createSearchTextFilter","onSearchTextChange","SEARCH_DEBOUNCE_MS","list","TABLE_ROW_HEIGHT","VIEWPORT_SIZE","VIEWPORT_PADDING","additionalFilterConditionFactories","useNotNullOrEmptyFilter","conditionOperator","notNullOrEmptyFilterCondition","createNotNullOrEmptyFilterCondition","createFilterConditionFactory","useTableClose","usePickerWithSelectedValues","trimSearchText","appliedSearchText","setAppliedSearchText","applySearchText","searchTextMaybeTrimmed","setSelectedKey","selectedValueMap","setSelectedValueMap","isApplyingFilter","searchTextExists","excludeSelectedValuesFilter","listTable","COMBO_BOX_ITEM_HEIGHT","hasSearchTextWithZeroResults","searchTextIsInSelectedValues","onDebouncedSearchTextChange","setSelectedKeyOnNextFrame","onSelectKey","next","onAddValues","onRemoveValues","useSelectDistinctTable","selectDistinct","_table$selectDistinct","distinctTable","isError","useShowOnlyEmptyFilter","isOn","createColumnCondition","createShowOnlyEmptyFilterCondition","useValueFilter","operator","createValueFilter","FontsLoadedContext","FontBootstrap","fontClassNames","isLoaded","setIsLoaded","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","permissionsOverrides","UserPermissionsOverrideContext","AuthPluginAnonymous","authHandlers","AuthPluginAnonymous$1","isLoginOptions","_getLoginOptions","getWindowAuthProvider","_URLSearchParams$get","AuthPluginParent","AuthPluginParent$1","LoginForm","isLoggingIn","_onSubmit","LoadingSpinner","Login","logoPath","AUTH_TYPE","PSK_QUERY_PARAM_KEY","PSK_TOKEN_KEY","getWindowToken","clearWindowToken","url","readCookieToken","_Cookies$get","storeCookieToken","inputField","loginPromise","isInputRequired","setIsInputRequired","setIsLoggingIn","loginToken","showError","newLoginPromise","cancelLogin","initialLogin","_initialLogin","_getWindowToken","initialToken","handleSubmit","_inputField$current","AuthPluginPsk","AuthPluginPsk$1","getAppInitValue","serverConfig","getUserFromConfig","_getValue","_getValue2","_getValue$split","_getValue3","overrides","getValue","getBooleanValue","operateAs","groups","canCopy","canDownloadCsv","canUsePanels","canLogout","MockChartModel","ChartModel","defaultChartTheme","steps","dates","smooth","linear","startDate","date","series","erroryforward","errorybackward","errory","series1","areaPattern","trendLine","series2","line","errorBand","layout","ChartUtils","filterFields","MockChartModel$1","useDashboardPanel","dashboardProps","componentName","component","supportedTypes","hydrate","dehydrate","registerComponent","handlePanelOpen","dragEvent","panelId","isSupportedType","root","LayoutUtils","usePanelRegistration","useListener","PanelEvent","useLayoutManager","layoutManager","LayoutManagerContext","useDashboardPluginData","dashboardId","pluginId","dispatch","useDispatch","useSelector","store","getPluginDataForDashboard","newData","setDashboardPluginData","MonacoThemeProvider","MonacoUtils","IrisGridTestUtils","columnIndex","count","prefix","userColumnWidths","sort","layoutHints","groupedColumns","keyColumns","inputTable","IrisGridProxyModel","IrisGridTestUtils$1","UPDATE_THROTTLE","TableViewportUpdater","PureComponent","viewHeight","viewportTop","viewportBottom","movedColumns","viewWidth","viewportLeft","viewportRight","modelIndex","GridUtils","throttle","viewColumns","onSubscription","sorts","customColumns","prevProps","isFilterChanged","isSortChanged","isCustomColumnsChanged","isTableChanged","TableViewportUpdater$1","TreeTableViewportUpdater","updateInterval","viewSize","onViewportUpdate","TreeTableViewportUpdater$1","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","_loadJson","jsonUrl","hasDefaultExport","getPluginModuleValue","isPlugin","isLegacyPlugin","loadModulePlugins","_loadModulePlugins","modulePluginsUrl","manifest","pluginPromises","main","pluginMainUrl","pluginModules","pluginMap","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","CORE_AUTH_PLUGINS","AuthBootstrap","authConfig","setAuthConfig","loadAuthConfigValues","_loadAuthConfigValues","newAuthConfigValues","AuthComponent","ConnectionBootstrap","setConnection","loadConnection","_loadConnection","newConnection","handleShutdown","removerFn","objectFetcher","descriptor","sanitizeVariableDescriptor","ConnectionContext","ObjectFetcherContext","getBaseUrl","apiUrl","getEnvoyPrefix","getConnectOptions","envoyPrefix","FontsLoaded","isFontsLoaded","ServerConfigContext","ServerConfigBootstrap","setServerConfig","loadServerConfigValues","_loadServerConfigValues","newServerConfigValues","useServerConfig","UserBootstrap","UserOverrideContext","user","UserContext","ThemeBootstrap","getThemeDataFromPlugins","ThemeProvider","ChartThemeProvider","IrisGridThemeProvider","AppBootstrap","clientOptions","logoutCount","setLogoutCount"],"mappings":"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"}