@deephaven/embed-widget 0.69.2-beta.1 → 0.70.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 (27) hide show
  1. package/build/assets/{App-c1a87386.js → App-af094410.js} +2 -2
  2. package/build/assets/{App-c1a87386.js.map → App-af094410.js.map} +1 -1
  3. package/build/assets/{Chart-89aa5f1e.js → Chart-a80a0169.js} +2 -2
  4. package/build/assets/{Chart-89aa5f1e.js.map → Chart-a80a0169.js.map} +1 -1
  5. package/build/assets/{IrisGrid-a88cb7cf.js → IrisGrid-e6345e8d.js} +2 -2
  6. package/build/assets/{IrisGrid-a88cb7cf.js.map → IrisGrid-e6345e8d.js.map} +1 -1
  7. package/build/assets/{IrisGridThemeProvider-fe2f6244.js → IrisGridThemeProvider-5b2515b0.js} +2 -2
  8. package/build/assets/{IrisGridThemeProvider-fe2f6244.js.map → IrisGridThemeProvider-5b2515b0.js.map} +1 -1
  9. package/build/assets/{MarkdownEditor-771e0504.js → MarkdownEditor-568e6647.js} +2 -2
  10. package/build/assets/{MarkdownEditor-771e0504.js.map → MarkdownEditor-568e6647.js.map} +1 -1
  11. package/build/assets/{MarkdownNotebook-4b53d553.js → MarkdownNotebook-b9d585db.js} +2 -2
  12. package/build/assets/{MarkdownNotebook-4b53d553.js.map → MarkdownNotebook-b9d585db.js.map} +1 -1
  13. package/build/assets/{index-b8c69d8f.js → index-4a9bfe03.js} +2 -2
  14. package/build/assets/{index-b8c69d8f.js.map → index-4a9bfe03.js.map} +1 -1
  15. package/build/assets/index-8437cfdf.js +4 -0
  16. package/build/assets/index-8437cfdf.js.map +1 -0
  17. package/build/assets/{index-e590d6c3.js → index-f0554a8a.js} +4 -4
  18. package/build/assets/{index-e590d6c3.js.map → index-f0554a8a.js.map} +1 -1
  19. package/build/assets/{index-eb69abe3.css → index-f0e5038f.css} +1 -1
  20. package/build/assets/{useConnection-6b14827d.js → useConnection-e32db6dc.js} +2 -2
  21. package/build/assets/{useConnection-6b14827d.js.map → useConnection-e32db6dc.js.map} +1 -1
  22. package/build/assets/{usePlugins-ed347f7f.js → usePlugins-a4e842f0.js} +2 -2
  23. package/build/assets/{usePlugins-ed347f7f.js.map → usePlugins-a4e842f0.js.map} +1 -1
  24. package/build/index.html +2 -2
  25. package/package.json +14 -14
  26. package/build/assets/index-386419fd.js +0 -4
  27. package/build/assets/index-386419fd.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"usePlugins-ed347f7f.js","sources":["../../../utils/dist/CanceledPromiseError.js","../../../utils/dist/TimeoutError.js","../../../utils/dist/PromiseUtils.js","../../../react-hooks/dist/useContextOrThrow.js","../../../components/dist/context-actions/ContextActionUtils.js","../../../components/dist/context-actions/ContextMenuItem.js","../../../components/dist/context-actions/ContextMenu.js","../../../components/dist/context-actions/ContextMenuRoot.js","../../../plugin/dist/PluginsContext.js","../../../plugin/dist/PluginTypes.js","../../../plugin/dist/PluginUtils.js","../../../plugin/dist/usePlugins.js"],"sourcesContent":["function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nclass CanceledPromiseError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isCanceled\", true);\n }\n}\nexport default CanceledPromiseError;\n//# sourceMappingURL=CanceledPromiseError.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 TimeoutError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isTimeout\", true);\n }\n}\nexport default TimeoutError;\n//# sourceMappingURL=TimeoutError.js.map","import CanceledPromiseError from \"./CanceledPromiseError.js\";\nimport TimeoutError from \"./TimeoutError.js\";\nexport class PromiseUtils {\n /**\n * Creates a promise that can be canceled by calling the `cancel` function\n * Pass an optional `cleanupFunc` to perform actions on the resolved item after promise is cancelled.\n * @param promise The item to resolve\n * @param cleanup Function to cleanup the resolved item after cancelation. Called after both this promise is cancelled and the wrapped item was resolved (order does not matter).\n */\n static makeCancelable(promise, cleanup) {\n var hasCanceled = false;\n var resolved;\n var rejectFn;\n var wrappedPromise = new Promise((resolve, reject) => {\n rejectFn = reject;\n Promise.resolve(promise).then(val => {\n if (hasCanceled) {\n if (cleanup) {\n cleanup(val);\n }\n } else {\n resolved = val;\n resolve(val);\n }\n }).catch(error => reject(error));\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrappedPromise.cancel = () => {\n hasCanceled = true;\n rejectFn(new CanceledPromiseError());\n if (resolved != null && cleanup) {\n cleanup(resolved);\n }\n };\n return wrappedPromise;\n }\n static isCanceled(error) {\n return error instanceof CanceledPromiseError;\n }\n static isTimedOut(error) {\n return error instanceof TimeoutError;\n }\n\n /**\n * Wrap a callback call in a Promise + setTimeout.\n * @param timeoutMs\n * @param callback\n */\n static withTimeout(timeoutMs, callback) {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n try {\n resolve(callback());\n } catch (err) {\n reject(err);\n }\n }, timeoutMs);\n });\n }\n}\n//# sourceMappingURL=PromiseUtils.js.map","import { useContext } from 'react';\n\n/**\n * Fetch a given context or throw an error if it is null or undefined.\n * @param context Context to use.\n * @param message Message to throw if context is null or undefined.\n * @returns Context, or throws\n */\nexport function useContextOrThrow(context) {\n var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'No value available in context. Was code wrapped in a provider?';\n var value = useContext(context);\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport default useContextOrThrow;\n//# sourceMappingURL=useContextOrThrow.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 function isPromise(value) {\n return value.then !== undefined;\n}\nclass ContextActionUtils {\n static disableAllActions() {\n ContextActionUtils.actionsDisabled = true;\n }\n static enableAllActions() {\n ContextActionUtils.actionsDisabled = false;\n }\n static isContextActionEvent(e) {\n return Array.isArray(e.contextActions);\n }\n\n /**\n * Compare two action items. Useful in Array.sort\n * @param a First context action to compare\n * @param b Second context action to compare\n */\n static compareActions(a, b) {\n if (a.group !== b.group) {\n var _a$group, _b$group;\n return ((_a$group = a.group) !== null && _a$group !== void 0 ? _a$group : 0) > ((_b$group = b.group) !== null && _b$group !== void 0 ? _b$group : 0) ? 1 : -1;\n }\n if (a.order !== b.order) {\n var _a$order, _b$order;\n return ((_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : 0) > ((_b$order = b.order) !== null && _b$order !== void 0 ? _b$order : 0) ? 1 : -1;\n }\n if (a.title !== b.title) {\n var _a$title, _b$title;\n return ((_a$title = a.title) !== null && _a$title !== void 0 ? _a$title : '') > ((_b$title = b.title) !== null && _b$title !== void 0 ? _b$title : '') ? 1 : -1;\n }\n if (a !== b) {\n return a > b ? 1 : -1;\n }\n return 0;\n }\n\n /**\n *\n * @param actions The array of actions to sort\n */\n static sortActions(actions) {\n if (actions == null || !Array.isArray(actions)) {\n return [];\n }\n var sortedActions = actions.slice();\n sortedActions.sort(ContextActionUtils.compareActions);\n return sortedActions;\n }\n static isMacPlatform() {\n var {\n platform\n } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Retrieve the preferred modifier key based on the current platform\n */\n static getModifierKey() {\n if (ContextActionUtils.isMacPlatform()) {\n return 'metaKey';\n }\n return 'ctrlKey';\n }\n\n /**\n * Returns true if the modifier key for the current platform is down for the event (Ctrl for windows/linux, Command (meta) for mac)\n * @param event The event to get the meta key status from\n */\n static isModifierKeyDown(event) {\n var modifierKey = ContextActionUtils.getModifierKey();\n return event[modifierKey];\n }\n\n /**\n * Returns the menu items for the provided context actions, or empty array if none found.\n * @param actionsParam The actions to get menu items for\n * @param includePromises Whether or not to include promises in the returned menu items\n */\n\n // If ignoring promises, then the return type is narrowed\n\n static getMenuItems(actionsParam) {\n var includePromises = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var menuItems = [];\n var actions = actionsParam;\n if (!Array.isArray(actions)) {\n actions = [actions];\n }\n for (var i = 0; i < actions.length; i += 1) {\n var action = actions[i];\n var newMenuItems = void 0;\n if (typeof action === 'function') {\n newMenuItems = action();\n } else {\n newMenuItems = action;\n }\n if (newMenuItems != null) {\n if (newMenuItems instanceof Promise) {\n if (includePromises) {\n menuItems.push(newMenuItems);\n }\n } else if (Array.isArray(newMenuItems)) {\n menuItems = menuItems.concat(newMenuItems);\n } else {\n menuItems.push(newMenuItems);\n }\n }\n }\n menuItems = menuItems.filter(action => action.title !== undefined || action.then != null || action.menuElement);\n return menuItems;\n }\n\n /**\n * Returns the index of the next menu item in a list that doesn't have a disabled=true prop\n * @param startIndex the starting position for the iteration\n * @param delta the direction of travel, -1 or 1\n * @param menuItems an array of menuItems\n */\n static getNextMenuItem(startIndex, delta, menuItems) {\n var firstIndex = startIndex;\n if (firstIndex < 0 && delta < 0) {\n // if menu index is -1 and delta -1 manually set start point\n firstIndex = menuItems.length;\n }\n // find the next non disabled menu option, iterating the list only once\n for (var i = 1; i < menuItems.length + 1; i += 1) {\n var menuIndex = (firstIndex + delta * i + menuItems.length) % menuItems.length;\n var item = menuItems[menuIndex];\n if (!(item instanceof Promise) && item.disabled !== true) {\n return menuIndex;\n }\n }\n return startIndex;\n }\n}\n_defineProperty(ContextActionUtils, \"actionsDisabled\", false);\nexport default ContextActionUtils;\n//# sourceMappingURL=ContextActionUtils.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight } from '@deephaven/icons';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar ContextMenuItem = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _menuItem$shortcutTex, _menuItem$shortcut;\n function handleMenuItemClick(e) {\n var {\n menuItem,\n onMenuItemClick\n } = props;\n onMenuItemClick(menuItem, e);\n }\n function handleMenuItemMouseMove(e) {\n var {\n menuItem,\n onMenuItemMouseMove\n } = props;\n onMenuItemMouseMove(menuItem, e);\n }\n function handleMenuItemContextMenu(e) {\n var {\n menuItem,\n onMenuItemContextMenu\n } = props;\n onMenuItemContextMenu(menuItem, e);\n }\n function renderCustomMenuElement(element, iconElement, displayShortcut) {\n // Don't pass forwardedProps if menuElement is a native DOM node\n if (typeof element.type === 'string') {\n return element;\n }\n var {\n closeMenu,\n menuItem,\n isKeyboardSelected,\n isMouseSelected,\n 'data-testid': dataTestId\n } = props;\n var forwardedProps = {\n menuItem,\n closeMenu,\n isKeyboardSelected,\n isMouseSelected,\n iconElement,\n displayShortcut,\n 'data-testid': dataTestId\n };\n return /*#__PURE__*/React.cloneElement(element, {\n forwardedProps\n });\n }\n var {\n children,\n menuItem,\n isKeyboardSelected = false,\n isMouseSelected = false,\n 'data-testid': dataTestId\n } = props;\n var displayShortcut = (_menuItem$shortcutTex = menuItem.shortcutText) !== null && _menuItem$shortcutTex !== void 0 ? _menuItem$shortcutTex : (_menuItem$shortcut = menuItem.shortcut) === null || _menuItem$shortcut === void 0 ? void 0 : _menuItem$shortcut.getDisplayText();\n var icon = null;\n if (menuItem.icon) {\n var menuItemIcon = menuItem.icon;\n if ( /*#__PURE__*/React.isValidElement(menuItemIcon)) {\n icon = menuItemIcon;\n } else {\n var style;\n if (menuItem.iconColor != null && (menuItem.disabled === undefined || !menuItem.disabled)) {\n style = {\n color: menuItem.iconColor\n };\n }\n icon = /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: menuItemIcon,\n style: style\n });\n }\n }\n var subMenuIndicator = null;\n var isSubMenuActive = Boolean(children);\n if (menuItem.actions) {\n subMenuIndicator = /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight\n });\n }\n var content = null;\n if (menuItem.menuElement) {\n content = /*#__PURE__*/_jsx(\"div\", {\n className: \"custom-menu-item\",\n onMouseMove: handleMenuItemMouseMove,\n children: renderCustomMenuElement(menuItem.menuElement, icon, displayShortcut)\n });\n } else {\n var _menuItem$description;\n var menuItemDisabled = menuItem.disabled;\n var iconHasOutline = menuItem.iconOutline;\n content = /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: classNames('btn-context-menu', {\n disabled: menuItemDisabled\n }, {\n active: (isSubMenuActive || isMouseSelected) && (menuItemDisabled === undefined || !menuItemDisabled)\n }, {\n 'keyboard-active': isKeyboardSelected && (menuItemDisabled === undefined || !menuItemDisabled)\n }),\n onClick: handleMenuItemClick,\n onMouseMove: handleMenuItemMouseMove,\n onContextMenu: handleMenuItemContextMenu,\n title: (_menuItem$description = menuItem.description) !== null && _menuItem$description !== void 0 ? _menuItem$description : '',\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"btn-context-menu-wrapper\",\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: classNames('icon', {\n outline: iconHasOutline\n }),\n children: icon\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"title\",\n children: menuItem.title\n }), displayShortcut !== undefined && /*#__PURE__*/_jsx(\"span\", {\n className: \"shortcut\",\n children: displayShortcut\n }), subMenuIndicator && /*#__PURE__*/_jsx(\"span\", {\n className: classNames('submenu-indicator', {\n disabled: menuItemDisabled\n }),\n children: subMenuIndicator\n })]\n })\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"context-menu-item\",\n ref: ref,\n \"data-testid\": dataTestId,\n children: [children, content]\n });\n});\nContextMenuItem.displayName = 'ContextMenuItem';\nContextMenuItem.defaultProps = {\n children: null,\n isKeyboardSelected: false,\n isMouseSelected: false,\n 'data-testid': undefined\n};\nexport default ContextMenuItem;\n//# sourceMappingURL=ContextMenuItem.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, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport ContextMenuItem from \"./ContextMenuItem.js\";\nimport LoadingSpinner from \"../LoadingSpinner.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ContextMenu');\n/** Do not use this class directly. Use ContextMenuRoot and ContextActions instead. */\nclass ContextMenu extends PureComponent {\n static handleContextMenu(e) {\n if (e.metaKey) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"oldFocus\", void 0);\n _defineProperty(this, \"activeSubMenuRef\", void 0);\n _defineProperty(this, \"subMenuTimer\", void 0);\n _defineProperty(this, \"rAF\", void 0);\n _defineProperty(this, \"initialPosition\", void 0);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseSubMenu = this.handleCloseSubMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemContextMenu = this.handleMenuItemContextMenu.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.oldFocus = document.activeElement;\n this.activeSubMenuRef = /*#__PURE__*/React.createRef();\n this.subMenuTimer = 0;\n this.rAF = 0;\n this.initialPosition = {\n top: props.top,\n left: props.left\n };\n this.state = {\n menuItems: [],\n pendingItems: [],\n activeSubMenu: null,\n hasOverflow: false,\n subMenuTop: null,\n subMenuLeft: null,\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n keyboardIndex: -1,\n mouseIndex: -1\n };\n }\n componentDidMount() {\n this.initMenu();\n this.verifyPosition();\n window.addEventListener('resize', this.handleWindowResize);\n\n // rAF is needed to wait for a submenus popper to be created before\n // attempting to set focus, however on a quick mount/unmount when\n // mousing past an item, the submenu could be unmounted before the\n // async rAF finishes, so it is cancelled in willUnmount()\n this.rAF = window.requestAnimationFrame(() => {\n var _this$container$curre;\n (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 ? void 0 : _this$container$curre.focus();\n var {\n onMenuOpened\n } = this.props;\n onMenuOpened(this);\n });\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n actions\n } = this.props;\n var {\n activeSubMenu\n } = this.state;\n if (activeSubMenu !== prevState.activeSubMenu) {\n if (activeSubMenu == null) {\n var _this$container$curre2;\n // close sub menu, refocus parent menu\n (_this$container$curre2 = this.container.current) === null || _this$container$curre2 === void 0 ? void 0 : _this$container$curre2.focus();\n } else {\n // open sub menu, set its initial position\n this.setActiveSubMenuPosition();\n }\n }\n if (prevProps.actions !== actions) {\n this.initMenu();\n if (this.container.current == null || !this.container.current.contains(document.activeElement)) {\n var _this$container$curre3;\n (_this$container$curre3 = this.container.current) === null || _this$container$curre3 === void 0 ? void 0 : _this$container$curre3.focus();\n }\n }\n this.verifyPosition();\n }\n componentWillUnmount() {\n this.cancelPromises();\n window.removeEventListener('resize', this.handleWindowResize);\n cancelAnimationFrame(this.rAF);\n }\n getKeyboardIndex() {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n var {\n keyboardIndex\n } = this.state;\n return keyboardIndex;\n }\n return this.getMouseIndex();\n }\n setKeyboardIndex(index) {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n this.setState({\n keyboardIndex: index\n });\n } else {\n this.setMouseIndex(index);\n }\n }\n getMouseIndex() {\n var {\n mouseIndex\n } = this.state;\n return mouseIndex;\n }\n setMouseIndex(index) {\n this.setState({\n mouseIndex: index\n });\n }\n initMenu() {\n // cancel any pending close and promises\n this.cancelPromises();\n cancelAnimationFrame(this.rAF);\n var {\n options\n } = this.props;\n var keyboardIndex = options.initialKeyboardIndex;\n if (keyboardIndex === undefined) {\n keyboardIndex = -1;\n }\n var {\n actions\n } = this.props;\n var menuItems = ContextActionUtils.getMenuItems(actions);\n var nonPromiseItems = [];\n for (var i = menuItems.length - 1; i >= 0; i -= 1) {\n var menuItem = menuItems[i];\n if (menuItem instanceof Promise) {\n this.initMenuPromise(menuItem);\n } else {\n nonPromiseItems.push(menuItem);\n }\n }\n this.setState({\n mouseIndex: -1,\n keyboardIndex,\n activeSubMenu: null,\n menuItems: ContextActionUtils.sortActions(nonPromiseItems)\n });\n }\n initMenuPromise(promise) {\n // make all promises cancellable\n var cancellablePromise = PromiseUtils.makeCancelable(promise);\n this.setState(state => ({\n pendingItems: state.pendingItems.concat(cancellablePromise)\n }));\n cancellablePromise.then(resolvedMenuItems => {\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n menuItems: ContextActionUtils.sortActions(state.menuItems.concat(resolvedMenuItems)),\n pendingItems\n };\n }\n // This item is stale, don't update the menu\n return null;\n });\n }, error => {\n if (PromiseUtils.isCanceled(error)) {\n return; // Canceled promise is ignored\n }\n\n // remove failed item from pending list\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n pendingItems\n };\n }\n return null;\n });\n\n // Log the error\n log.error(error);\n });\n }\n cancelPromises() {\n var {\n pendingItems\n } = this.state;\n pendingItems.map(item => item.cancel());\n }\n\n /**\n * Sets the unverfied start position of a submenu. Submenu then self-verfies\n * its own position and potentially reports back a new position.\n */\n setActiveSubMenuPosition() {\n if (this.activeSubMenuRef.current === null) return;\n var parentRect = this.activeSubMenuRef.current.getBoundingClientRect();\n\n // intentionally rect.right, we want the sub menu to start at the right edge of the current menu\n this.setState({\n subMenuTop: parentRect.top,\n subMenuLeft: parentRect.right,\n subMenuParentHeight: parentRect.height,\n subMenuParentWidth: parentRect.width\n });\n }\n\n /**\n * Verifies the position of this menu in relation to the parent to make sure it's on screen.\n * Will update the top left state (updatePosition) if necessary (causing a re-render)\n * By default it tries to top-align with parent, at the right side of the parent.\n * Because we aren't a native context menu and can't escape window bounds, we also do\n * somethings to better fit on screen, such as the \"nudge\" offset position, and further\n * allow overflow scrolling for large menus in a small window.\n */\n verifyPosition() {\n var _this$container$curre4, _this$container$curre5, _this$container$curre6, _this$container$curre7;\n var {\n options,\n updatePosition,\n subMenuParentWidth,\n subMenuParentHeight,\n top: oldTop,\n left: oldLeft\n } = this.props;\n if (!this.container.current || options.doNotVerifyPosition != null && options.doNotVerifyPosition) {\n return;\n }\n\n // initial position is used rather than current position,\n // as the number of menu items can change (actions can bubble)\n // and menu should always be positioned relative to spawn point\n var {\n top,\n left\n } = this.initialPosition;\n var {\n width,\n height\n } = (_this$container$curre4 = (_this$container$curre5 = this.container.current) === null || _this$container$curre5 === void 0 ? void 0 : _this$container$curre5.getBoundingClientRect()) !== null && _this$container$curre4 !== void 0 ? _this$container$curre4 : {\n width: 0,\n height: 0\n };\n var hasOverflow = ((_this$container$curre6 = (_this$container$curre7 = this.container.current) === null || _this$container$curre7 === void 0 ? void 0 : _this$container$curre7.scrollHeight) !== null && _this$container$curre6 !== void 0 ? _this$container$curre6 : 0) > window.innerHeight;\n if (height === 0 || width === 0) {\n // We don't have a height or width yet, don't bother doing anything\n return;\n }\n\n // does it fit below?\n if (top + height > window.innerHeight) {\n // can it be flipped to above? include offset if submenu (defaults to 0 if not submenu)\n if (top - height - subMenuParentHeight > 0) {\n // flip like a native menu would\n top -= height - subMenuParentHeight;\n } else {\n // still doesnt fit? okay, position at bottom edge\n top = window.innerHeight - height;\n }\n }\n if (left + width > window.innerWidth) {\n // less picky about left right positioning, just keep it going off to right\n left = left - width - subMenuParentWidth;\n }\n if (oldLeft !== left || oldTop !== top) {\n // parent owns positioning as single source of truth, ask to update props\n this.setState({\n hasOverflow\n });\n updatePosition(top, left);\n }\n }\n\n // since window resize doesn't trigger blur, listen and close the menu\n handleWindowResize() {\n if (!this.container.current) {\n return;\n }\n this.closeMenu(true);\n }\n handleBlur(e) {\n if (!this.container.current) {\n log.warn('Container is null!');\n return;\n }\n if (!this.container.current.contains(e.relatedTarget)) {\n var element = e.relatedTarget;\n var isContextMenuChild = false;\n while (element && !isContextMenuChild) {\n isContextMenuChild = element.hasAttribute('data-dh-context-menu');\n element = element.parentElement;\n }\n if (!isContextMenuChild) {\n // close all submenus on blur\n this.closeMenu(true);\n }\n }\n }\n\n /** Returns whether the specified key should remove the menu. Depends on the side the parent is on. */\n isEscapeKey(key) {\n var {\n left\n } = this.props;\n return key === 'Escape' || left < 0 && key === 'ArrowRight' || key === 'ArrowLeft';\n }\n handleKeyDown(e) {\n var {\n menuItems\n } = this.state;\n var oldFocus = this.getKeyboardIndex();\n var newFocus = oldFocus;\n var openSubMenu = false;\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n if (e.key === 'ArrowRight') {\n if (oldFocus >= 0 && oldFocus <= menuItems.length) {\n openSubMenu = true;\n } else {\n newFocus = 0;\n }\n } else if (this.isEscapeKey(e.key)) {\n newFocus = null;\n } else if (e.key === 'ArrowUp' || e.shiftKey && e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, -1, menuItems);\n } else if (e.key === 'ArrowDown' || e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, 1, menuItems);\n }\n if (openSubMenu) {\n this.openSubMenu(oldFocus);\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n }\n }\n openSubMenu(index) {\n var {\n menuItems,\n activeSubMenu\n } = this.state;\n var newSubMenu = menuItems[index].actions ? index : null;\n if (activeSubMenu === newSubMenu) return;\n this.setState({\n activeSubMenu: newSubMenu,\n subMenuTop: null,\n subMenuLeft: null\n });\n }\n closeMenu() {\n var closeAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var {\n closeMenu,\n onMenuClosed\n } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n closeSubMenu() {\n this.setState({\n activeSubMenu: null\n });\n }\n handleCloseSubMenu(closeAllMenus) {\n if (closeAllMenus) {\n this.closeMenu(true);\n } else {\n this.closeSubMenu();\n }\n }\n handleMenuItemClick(menuItem, e) {\n e.preventDefault();\n e.stopPropagation();\n var {\n menuItems\n } = this.state;\n if (menuItem != null && (menuItem.disabled === undefined || !menuItem.disabled)) {\n if (menuItem.actions != null) {\n this.openSubMenu(menuItems.indexOf(menuItem));\n } else if (menuItem.action != null) {\n menuItem.action(e.nativeEvent);\n this.closeMenu(true);\n }\n }\n }\n handleMenuItemContextMenu(menuItem, e) {\n if (e.metaKey) {\n return;\n }\n this.handleMenuItemClick(menuItem, e);\n }\n handleMenuItemMouseMove(menuItem) {\n var {\n menuItems\n } = this.state;\n var focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n if (focusIndex >= 0 && focusIndex < menuItems.length && (menuItem.disabled === undefined || !menuItem.disabled)) {\n this.openSubMenu(focusIndex);\n }\n }\n handleMouseLeave() {\n this.setMouseIndex(-1);\n }\n render() {\n var menuItemElements = [];\n var {\n top,\n left\n } = this.props;\n var {\n activeSubMenu,\n hasOverflow,\n keyboardIndex,\n menuItems,\n mouseIndex,\n pendingItems,\n subMenuTop,\n subMenuLeft,\n subMenuParentWidth,\n subMenuParentHeight\n } = this.state;\n for (var i = 0; i < menuItems.length; i += 1) {\n var menuItem = menuItems[i];\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push( /*#__PURE__*/_jsx(\"hr\", {}, \"\".concat(i, \".separator\")));\n }\n var menuItemElement = /*#__PURE__*/_jsx(ContextMenuItem, {\n ref: activeSubMenu === i ? this.activeSubMenuRef : null,\n isKeyboardSelected: keyboardIndex === i,\n isMouseSelected: mouseIndex === i,\n menuItem: menuItem,\n closeMenu: this.handleCloseSubMenu,\n onMenuItemClick: this.handleMenuItemClick,\n onMenuItemMouseMove: this.handleMenuItemMouseMove,\n onMenuItemContextMenu: this.handleMenuItemContextMenu\n }, i);\n menuItemElements.push(menuItemElement);\n }\n var pendingElement = null;\n if (pendingItems.length > 0) {\n pendingElement = /*#__PURE__*/_jsx(\"div\", {\n className: \"loading\",\n children: /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n })\n });\n }\n var {\n menuStyle,\n 'data-testid': dataTestId\n } = this.props;\n\n // don't show submenu until it has an position initialized\n var showSubmenu = activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null;\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classNames({\n 'has-overflow': hasOverflow\n }, 'context-menu-container'),\n style: _objectSpread({\n top,\n left\n }, menuStyle),\n ref: this.container,\n \"data-dh-context-menu\": true,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseLeave: this.handleMouseLeave,\n onContextMenu: ContextMenu.handleContextMenu,\n role: \"menuitem\",\n tabIndex: 0,\n \"data-testid\": dataTestId,\n children: [menuItemElements, pendingElement]\n }), showSubmenu && activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null && /*#__PURE__*/_jsx(ContextMenu, {\n actions: menuItems[activeSubMenu].actions || [],\n closeMenu: this.handleCloseSubMenu,\n top: subMenuTop,\n left: subMenuLeft,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n subMenuTop: verifiedTop,\n subMenuLeft: verifiedLeft\n });\n },\n subMenuParentWidth: subMenuParentWidth,\n subMenuParentHeight: subMenuParentHeight\n }, \"sub-\".concat(activeSubMenu))]\n });\n }\n}\n_defineProperty(ContextMenu, \"defaultProps\", {\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n closeMenu() {\n // no-op\n },\n onMenuOpened() {\n // no-op\n },\n onMenuClosed() {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined\n});\nexport default ContextMenu;\n//# sourceMappingURL=ContextMenu.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ContextMenu from \"./ContextMenu.js\";\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Put at your root container, any contextmenu events that are unhandled in the root container will be handled by this\n */\nclass ContextMenuRoot extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"openMenu\", void 0);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.openMenu = /*#__PURE__*/React.createRef();\n this.state = {\n actions: null,\n left: 0,\n top: 0\n };\n }\n componentDidMount() {\n var _this$container$curre;\n if ((_this$container$curre = this.container.current) !== null && _this$container$curre !== void 0 && _this$container$curre.parentElement) {\n this.container.current.parentElement.addEventListener('contextmenu', this.handleContextMenu);\n }\n }\n componentWillUnmount() {\n var _this$container$curre2;\n if ((_this$container$curre2 = this.container.current) !== null && _this$container$curre2 !== void 0 && _this$container$curre2.parentElement) {\n this.container.current.parentElement.removeEventListener('contextmenu', this.handleContextMenu);\n }\n }\n handleContextMenu(e) {\n if (!this.container.current) {\n return;\n }\n var parentRect = this.container.current.getBoundingClientRect();\n var top = e.clientY - parentRect.top;\n var left = e.clientX - parentRect.left;\n var {\n actions\n } = this.state;\n\n // Context menu is open and user clicked on the context-root blocking layer\n // Mac and Linux appear to trigger contextmenu events on mousedown vs. mouseup on Windows\n // Mouseup on Windows triggers blur before contextmenu which effectively does what this path does\n if (actions != null && e.target === this.container.current) {\n // re-emit right clicks that hit the context-root blocking layer\n // while we already have a custom context menu open\n e.preventDefault();\n\n // Set actions to null removes the menu\n // That allows a new menu to be opened on a different element so initial position is set properly\n // Otherwise the instance of this menu may be reused\n // A new contextmenu event is triggered on the element at the location the user clicked on the blocking layer\n this.setState({\n actions: null\n }, () => {\n var element = document.elementFromPoint(left, top); // x y\n\n var mouseEvent = new MouseEvent('contextmenu', {\n clientX: e.clientX,\n clientY: e.clientY,\n bubbles: true,\n cancelable: true\n });\n element === null || element === void 0 ? void 0 : element.dispatchEvent(mouseEvent);\n });\n return;\n }\n if (!ContextActionUtils.isContextActionEvent(e)) {\n // Open native menu if no custom context actions\n return;\n }\n if (e.metaKey || e.ctrlKey) {\n // debug escape hatch to native menu\n return;\n }\n var contextActions = ContextActionUtils.getMenuItems(e.contextActions);\n if (contextActions.length === 0) {\n // No actions after filtering. Use native menu\n return;\n }\n\n // new clicks, set actions\n e.preventDefault();\n this.setState({\n actions: contextActions,\n top,\n left\n });\n }\n handleMenuClose(menu) {\n if (menu === this.openMenu.current) {\n this.setState({\n actions: null\n });\n }\n }\n render() {\n var menu = null;\n var {\n 'data-testid': dataTestId\n } = this.props;\n var {\n actions,\n top,\n left\n } = this.state;\n if (actions) {\n menu = /*#__PURE__*/_jsx(ContextMenu, {\n ref: this.openMenu,\n actions: actions,\n onMenuClosed: this.handleMenuClose,\n top: top,\n left: left,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n top: verifiedTop,\n left: verifiedLeft\n });\n },\n \"data-testid\": dataTestId\n });\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('context-menu-root', {\n active: actions\n }),\n ref: this.container,\n children: menu\n });\n }\n}\nexport default ContextMenuRoot;\n//# sourceMappingURL=ContextMenuRoot.js.map","import { createContext } from 'react';\nexport var PluginsContext = /*#__PURE__*/createContext(null);\nexport default PluginsContext;\n//# sourceMappingURL=PluginsContext.js.map","export var PluginType = Object.freeze({\n AUTH_PLUGIN: 'AuthPlugin',\n DASHBOARD_PLUGIN: 'DashboardPlugin',\n WIDGET_PLUGIN: 'WidgetPlugin',\n TABLE_PLUGIN: 'TablePlugin',\n THEME_PLUGIN: 'ThemePlugin'\n});\n\n/**\n * @deprecated Use DashboardPlugin instead\n */\n\nexport function isLegacyDashboardPlugin(plugin) {\n return 'DashboardPlugin' in plugin;\n}\n\n/**\n * @deprecated Use AuthPlugin instead\n */\n\nexport function isLegacyAuthPlugin(plugin) {\n return 'AuthPlugin' in plugin;\n}\n\n/**\n * @deprecated Use TablePlugin instead\n */\n\nexport function isLegacyTablePlugin(plugin) {\n return 'TablePlugin' in plugin;\n}\n\n/**\n * @deprecated Use Plugin instead\n */\n\nexport function isLegacyPlugin(plugin) {\n return isLegacyDashboardPlugin(plugin) || isLegacyAuthPlugin(plugin) || isLegacyTablePlugin(plugin);\n}\n\n/**\n * A plugin that will be mounted to the dashboard.\n */\n\nexport function isDashboardPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.DASHBOARD_PLUGIN;\n}\nexport function isWidgetPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.WIDGET_PLUGIN;\n}\nexport function isTablePlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.TABLE_PLUGIN;\n}\n\n/**\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\nexport function isAuthPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.AUTH_PLUGIN;\n}\n/** Type guard to check if given plugin is a `ThemePlugin` */\nexport function isThemePlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.THEME_PLUGIN;\n}\nexport function isPlugin(plugin) {\n return isDashboardPlugin(plugin) || isAuthPlugin(plugin) || isTablePlugin(plugin) || isThemePlugin(plugin) || isWidgetPlugin(plugin);\n}\n//# sourceMappingURL=PluginTypes.js.map","import { isValidElement } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { getThemeKey } from '@deephaven/components';\nimport { vsPreview } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { isWidgetPlugin, isThemePlugin } from \"./PluginTypes.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('@deephaven/plugin.PluginUtils');\nexport function pluginSupportsType(plugin, type) {\n if (plugin == null || !isWidgetPlugin(plugin)) {\n return false;\n }\n return [plugin.supportedTypes].flat().some(t => t === type);\n}\nexport function getIconForPlugin(plugin) {\n var defaultIcon = /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsPreview\n });\n if (!isWidgetPlugin(plugin)) {\n return defaultIcon;\n }\n var {\n icon\n } = plugin;\n if (icon == null) {\n return defaultIcon;\n }\n if ( /*#__PURE__*/isValidElement(icon)) {\n return icon;\n }\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n}\n\n/**\n * Extract theme data from theme plugins in the given plugin map.\n * @param pluginMap\n */\nexport function getThemeDataFromPlugins(pluginMap) {\n var themePluginEntries = [...pluginMap.entries()].filter(entry => isThemePlugin(entry[1]));\n log.debug('Getting theme data from plugins', themePluginEntries);\n return themePluginEntries.map(_ref => {\n var [pluginName, plugin] = _ref;\n // Normalize to an array since config can be an array of configs or a\n // single config\n var configs = Array.isArray(plugin.themes) ? plugin.themes : [plugin.themes];\n return configs.map(_ref2 => {\n var {\n name,\n baseTheme,\n styleContent\n } = _ref2;\n return {\n baseThemeKey: \"default-\".concat(baseTheme !== null && baseTheme !== void 0 ? baseTheme : 'dark'),\n themeKey: getThemeKey(pluginName, name),\n name,\n styleContent\n };\n });\n }).flat();\n}\n//# sourceMappingURL=PluginUtils.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { PluginsContext } from \"./PluginsContext.js\";\nexport function usePlugins() {\n return useContextOrThrow(PluginsContext, 'No Plugins available in usePlugins. This can happen when plugins have not finished loading or if code is not wrapped in PluginsContext.Provider.');\n}\nexport default usePlugins;\n//# sourceMappingURL=usePlugins.js.map"],"names":["_defineProperty","obj","key","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","CanceledPromiseError","CanceledPromiseError$1","TimeoutError","TimeoutError$1","PromiseUtils","promise","cleanup","hasCanceled","resolved","rejectFn","wrappedPromise","resolve","reject","val","error","timeoutMs","callback","err","useContextOrThrow","context","message","useContext","isPromise","ContextActionUtils","a","b","_a$group","_b$group","_a$order","_b$order","_a$title","_b$title","actions","sortedActions","platform","event","modifierKey","actionsParam","includePromises","menuItems","i","action","newMenuItems","startIndex","delta","firstIndex","menuIndex","item","ContextActionUtils$1","ContextMenuItem","React","props","ref","_menuItem$shortcutTex","_menuItem$shortcut","handleMenuItemClick","e","menuItem","onMenuItemClick","handleMenuItemMouseMove","onMenuItemMouseMove","handleMenuItemContextMenu","onMenuItemContextMenu","renderCustomMenuElement","element","iconElement","displayShortcut","closeMenu","isKeyboardSelected","isMouseSelected","dataTestId","forwardedProps","children","icon","menuItemIcon","style","_jsx","FontAwesomeIcon","subMenuIndicator","isSubMenuActive","vsChevronRight","content","_menuItem$description","menuItemDisabled","iconHasOutline","classNames","_jsxs","ContextMenuItem$1","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","log","Log","ContextMenu","PureComponent","_this$container$curre","onMenuOpened","prevProps","prevState","activeSubMenu","_this$container$curre2","_this$container$curre3","options","keyboardIndex","index","mouseIndex","nonPromiseItems","cancellablePromise","state","resolvedMenuItems","pendingItems","parentRect","_this$container$curre4","_this$container$curre5","_this$container$curre6","_this$container$curre7","updatePosition","subMenuParentWidth","subMenuParentHeight","oldTop","oldLeft","top","left","width","height","hasOverflow","isContextMenuChild","oldFocus","newFocus","openSubMenu","newSubMenu","closeAll","onMenuClosed","closeAllMenus","focusIndex","menuItemElements","subMenuTop","subMenuLeft","menuItemElement","pendingElement","LoadingSpinner","menuStyle","showSubmenu","_Fragment","verifiedTop","verifiedLeft","ContextMenu$1","ContextMenuRoot","Component","mouseEvent","contextActions","menu","ContextMenuRoot$1","PluginsContext","createContext","PluginType","isLegacyDashboardPlugin","plugin","isLegacyAuthPlugin","isLegacyTablePlugin","isLegacyPlugin","isDashboardPlugin","isWidgetPlugin","isTablePlugin","isAuthPlugin","isThemePlugin","isPlugin","pluginSupportsType","type","getIconForPlugin","defaultIcon","vsPreview","isValidElement","getThemeDataFromPlugins","pluginMap","themePluginEntries","entry","_ref","pluginName","configs","_ref2","name","baseTheme","styleContent","getThemeKey","usePlugins"],"mappings":"2IAAA,SAASA,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CACzX,MAAMI,WAA6B,KAAM,CACvC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBX,GAAgB,KAAM,aAAc,EAAI,CACzC,CACH,CACA,MAAAY,EAAeD,GCTf,SAASX,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CACzX,MAAMM,WAAqB,KAAM,CAC/B,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBb,GAAgB,KAAM,YAAa,EAAI,CACxC,CACH,CACA,MAAAc,GAAeD,GCPR,MAAME,CAAa,CAOxB,OAAO,eAAeC,EAASC,EAAS,CACtC,IAAIC,EAAc,GACdC,EACAC,EACAC,EAAiB,IAAI,QAAQ,CAACC,EAASC,IAAW,CACpDH,EAAWG,EACX,QAAQ,QAAQP,CAAO,EAAE,KAAKQ,GAAO,CAC/BN,EACED,GACFA,EAAQO,CAAG,GAGbL,EAAWK,EACXF,EAAQE,CAAG,EAEd,CAAA,EAAE,MAAMC,GAASF,EAAOE,CAAK,CAAC,CACrC,CAAK,EAGD,OAAAJ,EAAe,OAAS,IAAM,CAC5BH,EAAc,GACdE,EAAS,IAAIT,CAAsB,EAC/BQ,GAAY,MAAQF,GACtBA,EAAQE,CAAQ,CAExB,EACWE,CACR,CACD,OAAO,WAAWI,EAAO,CACvB,OAAOA,aAAiBd,CACzB,CACD,OAAO,WAAWc,EAAO,CACvB,OAAOA,aAAiBZ,EACzB,CAOD,OAAO,YAAYa,EAAWC,EAAU,CACtC,OAAO,IAAI,QAAQ,CAACL,EAASC,IAAW,CACtC,WAAW,IAAM,CACf,GAAI,CACFD,EAAQK,EAAQ,CAAE,CACnB,OAAQC,EAAK,CACZL,EAAOK,CAAG,CACX,CACF,EAAEF,CAAS,CAClB,CAAK,CACF,CACH,CCpDO,SAASG,GAAkBC,EAAS,CACzC,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,iEAC9E5B,EAAQ6B,aAAWF,CAAO,EAC9B,GAAI3B,GAAS,KACX,MAAM,IAAI,MAAM4B,CAAO,EAEzB,OAAO5B,CACT,CCfA,SAASH,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAClX,SAAS0B,GAAU9B,EAAO,CAC/B,OAAOA,EAAM,OAAS,MACxB,CACA,MAAM+B,CAAmB,CACvB,OAAO,mBAAoB,CACzBA,EAAmB,gBAAkB,EACtC,CACD,OAAO,kBAAmB,CACxBA,EAAmB,gBAAkB,EACtC,CACD,OAAO,qBAAqB,EAAG,CAC7B,OAAO,MAAM,QAAQ,EAAE,cAAc,CACtC,CAOD,OAAO,eAAeC,EAAGC,EAAG,CAC1B,GAAID,EAAE,QAAUC,EAAE,MAAO,CACvB,IAAIC,EAAUC,EACd,QAASD,EAAWF,EAAE,SAAW,MAAQE,IAAa,OAASA,EAAW,KAAOC,EAAWF,EAAE,SAAW,MAAQE,IAAa,OAASA,EAAW,GAAK,EAAI,EAC5J,CACD,GAAIH,EAAE,QAAUC,EAAE,MAAO,CACvB,IAAIG,EAAUC,EACd,QAASD,EAAWJ,EAAE,SAAW,MAAQI,IAAa,OAASA,EAAW,KAAOC,EAAWJ,EAAE,SAAW,MAAQI,IAAa,OAASA,EAAW,GAAK,EAAI,EAC5J,CACD,GAAIL,EAAE,QAAUC,EAAE,MAAO,CACvB,IAAIK,EAAUC,EACd,QAASD,EAAWN,EAAE,SAAW,MAAQM,IAAa,OAASA,EAAW,MAAQC,EAAWN,EAAE,SAAW,MAAQM,IAAa,OAASA,EAAW,IAAM,EAAI,EAC9J,CACD,OAAIP,IAAMC,EACDD,EAAIC,EAAI,EAAI,GAEd,CACR,CAMD,OAAO,YAAYO,EAAS,CAC1B,GAAIA,GAAW,MAAQ,CAAC,MAAM,QAAQA,CAAO,EAC3C,MAAO,GAET,IAAIC,EAAgBD,EAAQ,QAC5B,OAAAC,EAAc,KAAKV,EAAmB,cAAc,EAC7CU,CACR,CACD,OAAO,eAAgB,CACrB,GAAI,CACF,SAAAC,CACN,EAAQ,OAAO,UACX,OAAOA,EAAS,WAAW,KAAK,CACjC,CAKD,OAAO,gBAAiB,CACtB,OAAIX,EAAmB,gBACd,UAEF,SACR,CAMD,OAAO,kBAAkBY,EAAO,CAC9B,IAAIC,EAAcb,EAAmB,iBACrC,OAAOY,EAAMC,CAAW,CACzB,CAUD,OAAO,aAAaC,EAAc,CAChC,IAAIC,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtFC,EAAY,CAAA,EACZP,EAAUK,EACT,MAAM,QAAQL,CAAO,IACxBA,EAAU,CAACA,CAAO,GAEpB,QAASQ,EAAI,EAAGA,EAAIR,EAAQ,OAAQQ,GAAK,EAAG,CAC1C,IAAIC,EAAST,EAAQQ,CAAC,EAClBE,EAAe,OACf,OAAOD,GAAW,WACpBC,EAAeD,EAAM,EAErBC,EAAeD,EAEbC,GAAgB,OACdA,aAAwB,QACtBJ,GACFC,EAAU,KAAKG,CAAY,EAEpB,MAAM,QAAQA,CAAY,EACnCH,EAAYA,EAAU,OAAOG,CAAY,EAEzCH,EAAU,KAAKG,CAAY,EAGhC,CACD,OAAAH,EAAYA,EAAU,OAAOE,GAAUA,EAAO,QAAU,QAAaA,EAAO,MAAQ,MAAQA,EAAO,WAAW,EACvGF,CACR,CAQD,OAAO,gBAAgBI,EAAYC,EAAOL,EAAW,CACnD,IAAIM,EAAaF,EACbE,EAAa,GAAKD,EAAQ,IAE5BC,EAAaN,EAAU,QAGzB,QAASC,EAAI,EAAGA,EAAID,EAAU,OAAS,EAAGC,GAAK,EAAG,CAChD,IAAIM,GAAaD,EAAaD,EAAQJ,EAAID,EAAU,QAAUA,EAAU,OACpEQ,EAAOR,EAAUO,CAAS,EAC9B,GAAI,EAAEC,aAAgB,UAAYA,EAAK,WAAa,GAClD,OAAOD,CAEV,CACD,OAAOH,CACR,CACH,CACAtD,GAAgBkC,EAAoB,kBAAmB,EAAK,EAC5D,MAAAyB,EAAezB,ECxIf,IAAI0B,EAA+BC,EAAM,WAAW,CAACC,EAAOC,IAAQ,CAClE,IAAIC,EAAuBC,EAC3B,SAASC,EAAoBC,EAAG,CAC9B,GAAI,CACF,SAAAC,EACA,gBAAAC,CACD,EAAGP,EACJO,EAAgBD,EAAUD,CAAC,CAC5B,CACD,SAASG,EAAwBH,EAAG,CAClC,GAAI,CACF,SAAAC,EACA,oBAAAG,CACD,EAAGT,EACJS,EAAoBH,EAAUD,CAAC,CAChC,CACD,SAASK,EAA0BL,EAAG,CACpC,GAAI,CACF,SAAAC,EACA,sBAAAK,CACD,EAAGX,EACJW,EAAsBL,EAAUD,CAAC,CAClC,CACD,SAASO,EAAwBC,EAASC,EAAaC,EAAiB,CAEtE,GAAI,OAAOF,EAAQ,MAAS,SAC1B,OAAOA,EAET,GAAI,CACF,UAAAG,EACA,SAAAV,EACA,mBAAAW,EACA,gBAAAC,EACA,cAAeC,CAChB,EAAGnB,EACAoB,EAAiB,CACnB,SAAAd,EACA,UAAAU,EACA,mBAAAC,EACA,gBAAAC,EACA,YAAAJ,EACA,gBAAAC,EACA,cAAeI,CACrB,EACI,OAAoBpB,EAAM,aAAac,EAAS,CAC9C,eAAAO,CACN,CAAK,CACF,CACD,GAAI,CACF,SAAAC,EACA,SAAAf,EACA,mBAAAW,EAAqB,GACrB,gBAAAC,EAAkB,GAClB,cAAeC,CAChB,EAAGnB,EACAe,GAAmBb,EAAwBI,EAAS,gBAAkB,MAAQJ,IAA0B,OAASA,GAAyBC,EAAqBG,EAAS,YAAc,MAAQH,IAAuB,OAAS,OAASA,EAAmB,iBAC1PmB,EAAO,KACX,GAAIhB,EAAS,KAAM,CACjB,IAAIiB,EAAejB,EAAS,KAC5B,GAAkBP,EAAM,eAAewB,CAAY,EACjDD,EAAOC,MACF,CACL,IAAIC,EACAlB,EAAS,WAAa,OAASA,EAAS,WAAa,QAAa,CAACA,EAAS,YAC9EkB,EAAQ,CACN,MAAOlB,EAAS,SAC1B,GAEMgB,EAAoBG,EAAI,IAACC,EAAiB,CACxC,KAAMH,EACN,MAAOC,CACf,CAAO,CACF,CACF,CACD,IAAIG,EAAmB,KACnBC,EAAkB,EAAQP,EAC1Bf,EAAS,UACXqB,EAAgCF,EAAI,IAACC,EAAiB,CACpD,KAAMG,CACZ,CAAK,GAEH,IAAIC,EAAU,KACd,GAAIxB,EAAS,YACXwB,EAAuBL,EAAI,IAAC,MAAO,CACjC,UAAW,mBACX,YAAajB,EACb,SAAUI,EAAwBN,EAAS,YAAagB,EAAMP,CAAe,CACnF,CAAK,MACI,CACL,IAAIgB,EACAC,EAAmB1B,EAAS,SAC5B2B,EAAiB3B,EAAS,YAC9BwB,EAAuBL,EAAI,IAAC,SAAU,CACpC,KAAM,SACN,UAAWS,EAAW,mBAAoB,CACxC,SAAUF,CAClB,EAAS,CACD,QAASJ,GAAmBV,KAAqBc,IAAqB,QAAa,CAACA,EAC5F,EAAS,CACD,kBAAmBf,IAAuBe,IAAqB,QAAa,CAACA,EACrF,CAAO,EACD,QAAS5B,EACT,YAAaI,EACb,cAAeE,EACf,OAAQqB,EAAwBzB,EAAS,eAAiB,MAAQyB,IAA0B,OAASA,EAAwB,GAC7H,SAAuBI,EAAK,KAAC,MAAO,CAClC,UAAW,2BACX,SAAU,CAAcV,EAAI,IAAC,OAAQ,CACnC,UAAWS,EAAW,OAAQ,CAC5B,QAASD,CACrB,CAAW,EACD,SAAUX,CACpB,CAAS,EAAgBG,EAAI,IAAC,OAAQ,CAC5B,UAAW,QACX,SAAUnB,EAAS,KACpB,CAAA,EAAGS,IAAoB,QAA0BU,EAAAA,IAAK,OAAQ,CAC7D,UAAW,WACX,SAAUV,CACpB,CAAS,EAAGY,GAAiCF,EAAI,IAAC,OAAQ,CAChD,UAAWS,EAAW,oBAAqB,CACzC,SAAUF,CACtB,CAAW,EACD,SAAUL,CACpB,CAAS,CAAC,CACV,CAAO,CACP,CAAK,CACF,CACD,OAAoBQ,EAAAA,KAAM,MAAO,CAC/B,UAAW,oBACX,IAAKlC,EACL,cAAekB,EACf,SAAU,CAACE,EAAUS,CAAO,CAChC,CAAG,CACH,CAAC,EACDhC,EAAgB,YAAc,kBAC9BA,EAAgB,aAAe,CAC7B,SAAU,KACV,mBAAoB,GACpB,gBAAiB,GACjB,cAAe,MACjB,EACA,MAAAsC,GAAetC,ECnJf,SAASuC,EAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASvD,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIwD,EAAiB,UAAUxD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIgD,EAAQ,OAAOQ,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUzG,EAAK,CAAEF,EAAgB0G,EAAQxG,EAAKyG,EAAOzG,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBwG,EAAQ,OAAO,0BAA0BC,CAAM,CAAC,EAAIR,EAAQ,OAAOQ,CAAM,CAAC,EAAE,QAAQ,SAAUzG,EAAK,CAAE,OAAO,eAAewG,EAAQxG,EAAK,OAAO,yBAAyByG,EAAQzG,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOwG,CAAS,CAC1f,SAAS1G,EAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAWzX,IAAIqG,EAAMC,EAAI,OAAO,aAAa,EAElC,MAAMC,UAAoBC,EAAAA,aAAc,CACtC,OAAO,kBAAkB,EAAG,CACtB,EAAE,UAGN,EAAE,gBAAe,EACjB,EAAE,eAAc,EACjB,CACD,YAAYjD,EAAO,CACjB,MAAMA,CAAK,EACX9D,EAAgB,KAAM,YAAa,MAAM,EACzCA,EAAgB,KAAM,WAAY,MAAM,EACxCA,EAAgB,KAAM,mBAAoB,MAAM,EAChDA,EAAgB,KAAM,eAAgB,MAAM,EAC5CA,EAAgB,KAAM,MAAO,MAAM,EACnCA,EAAgB,KAAM,kBAAmB,MAAM,EAC/C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,UAAyB6D,EAAM,YACpC,KAAK,SAAW,SAAS,cACzB,KAAK,iBAAgCA,EAAM,YAC3C,KAAK,aAAe,EACpB,KAAK,IAAM,EACX,KAAK,gBAAkB,CACrB,IAAKC,EAAM,IACX,KAAMA,EAAM,IAClB,EACI,KAAK,MAAQ,CACX,UAAW,CAAE,EACb,aAAc,CAAE,EAChB,cAAe,KACf,YAAa,GACb,WAAY,KACZ,YAAa,KACb,mBAAoB,EACpB,oBAAqB,EACrB,cAAe,GACf,WAAY,EAClB,CACG,CACD,mBAAoB,CAClB,KAAK,SAAQ,EACb,KAAK,eAAc,EACnB,OAAO,iBAAiB,SAAU,KAAK,kBAAkB,EAMzD,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAC5C,IAAIkD,GACHA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAkBA,EAAsB,MAAK,EACpI,GAAI,CACF,aAAAC,CACR,EAAU,KAAK,MACTA,EAAa,IAAI,CACvB,CAAK,CACF,CACD,mBAAmBC,EAAWC,EAAW,CACvC,GAAI,CACF,QAAAxE,CACN,EAAQ,KAAK,MACL,CACF,cAAAyE,CACN,EAAQ,KAAK,MACT,GAAIA,IAAkBD,EAAU,cAC9B,GAAIC,GAAiB,KAAM,CACzB,IAAIC,GAEHA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAkBA,EAAuB,MAAK,CAC/I,MAEQ,KAAK,yBAAwB,EAGjC,GAAIH,EAAU,UAAYvE,IACxB,KAAK,SAAQ,EACT,KAAK,UAAU,SAAW,MAAQ,CAAC,KAAK,UAAU,QAAQ,SAAS,SAAS,aAAa,GAAG,CAC9F,IAAI2E,GACHA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAkBA,EAAuB,MAAK,CACxI,CAEH,KAAK,eAAc,CACpB,CACD,sBAAuB,CACrB,KAAK,eAAc,EACnB,OAAO,oBAAoB,SAAU,KAAK,kBAAkB,EAC5D,qBAAqB,KAAK,GAAG,CAC9B,CACD,kBAAmB,CACjB,GAAI,CACF,QAAAC,CACN,EAAQ,KAAK,MACT,GAAIA,EAAQ,wBAA0B,QAAaA,EAAQ,sBAAuB,CAChF,GAAI,CACF,cAAAC,CACR,EAAU,KAAK,MACT,OAAOA,CACR,CACD,OAAO,KAAK,eACb,CACD,iBAAiBC,EAAO,CACtB,GAAI,CACF,QAAAF,CACN,EAAQ,KAAK,MACLA,EAAQ,wBAA0B,QAAaA,EAAQ,sBACzD,KAAK,SAAS,CACZ,cAAeE,CACvB,CAAO,EAED,KAAK,cAAcA,CAAK,CAE3B,CACD,eAAgB,CACd,GAAI,CACF,WAAAC,CACN,EAAQ,KAAK,MACT,OAAOA,CACR,CACD,cAAcD,EAAO,CACnB,KAAK,SAAS,CACZ,WAAYA,CAClB,CAAK,CACF,CACD,UAAW,CAET,KAAK,eAAc,EACnB,qBAAqB,KAAK,GAAG,EAC7B,GAAI,CACF,QAAAF,CACN,EAAQ,KAAK,MACLC,EAAgBD,EAAQ,qBACxBC,IAAkB,SACpBA,EAAgB,IAOlB,OALI,CACF,QAAA7E,CACN,EAAQ,KAAK,MACLO,EAAYhB,EAAmB,aAAaS,CAAO,EACnDgF,EAAkB,CAAA,EACbxE,EAAID,EAAU,OAAS,EAAGC,GAAK,EAAGA,GAAK,EAAG,CACjD,IAAIiB,EAAWlB,EAAUC,CAAC,EACtBiB,aAAoB,QACtB,KAAK,gBAAgBA,CAAQ,EAE7BuD,EAAgB,KAAKvD,CAAQ,CAEhC,CACD,KAAK,SAAS,CACZ,WAAY,GACZ,cAAAoD,EACA,cAAe,KACf,UAAWtF,EAAmB,YAAYyF,CAAe,CAC/D,CAAK,CACF,CACD,gBAAgB3G,EAAS,CAEvB,IAAI4G,EAAqB7G,EAAa,eAAeC,CAAO,EAC5D,KAAK,SAAS6G,IAAU,CACtB,aAAcA,EAAM,aAAa,OAAOD,CAAkB,CAC3D,EAAC,EACFA,EAAmB,KAAKE,GAAqB,CAC3C,KAAK,SAASD,GAAS,CACrB,IAAIJ,EAAQI,EAAM,aAAa,QAAQD,CAAkB,EACzD,GAAIH,GAAS,EAAG,CACd,IAAIM,EAAeF,EAAM,aAAa,MAAK,EAC3C,OAAAE,EAAa,OAAON,EAAO,CAAC,EACrB,CACL,UAAWvF,EAAmB,YAAY2F,EAAM,UAAU,OAAOC,CAAiB,CAAC,EACnF,aAAAC,CACZ,CACS,CAED,OAAO,IACf,CAAO,CACF,EAAEtG,GAAS,CACNV,EAAa,WAAWU,CAAK,IAKjC,KAAK,SAASoG,GAAS,CACrB,IAAIJ,EAAQI,EAAM,aAAa,QAAQD,CAAkB,EACzD,GAAIH,GAAS,EAAG,CACd,IAAIM,EAAeF,EAAM,aAAa,MAAK,EAC3C,OAAAE,EAAa,OAAON,EAAO,CAAC,EACrB,CACL,aAAAM,CACZ,CACS,CACD,OAAO,IACf,CAAO,EAGDnB,EAAI,MAAMnF,CAAK,EACrB,CAAK,CACF,CACD,gBAAiB,CACf,GAAI,CACF,aAAAsG,CACN,EAAQ,KAAK,MACTA,EAAa,IAAIrE,GAAQA,EAAK,OAAQ,CAAA,CACvC,CAMD,0BAA2B,CACzB,GAAI,KAAK,iBAAiB,UAAY,KACtC,KAAIsE,EAAa,KAAK,iBAAiB,QAAQ,sBAAqB,EAGpE,KAAK,SAAS,CACZ,WAAYA,EAAW,IACvB,YAAaA,EAAW,MACxB,oBAAqBA,EAAW,OAChC,mBAAoBA,EAAW,KACrC,CAAK,EACF,CAUD,gBAAiB,CACf,IAAIC,EAAwBC,EAAwBC,EAAwBC,EACxE,CACF,QAAAb,EACA,eAAAc,EACA,mBAAAC,EACA,oBAAAC,EACA,IAAKC,EACL,KAAMC,CACZ,EAAQ,KAAK,MACT,GAAI,GAAC,KAAK,UAAU,SAAWlB,EAAQ,qBAAuB,MAAQA,EAAQ,qBAO9E,IAAI,CACF,IAAAmB,EACA,KAAAC,CACN,EAAQ,KAAK,gBACL,CACF,MAAAC,EACA,OAAAC,CACN,GAASZ,GAA0BC,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,OAAS,OAASA,EAAuB,sBAAuB,KAAM,MAAQD,IAA2B,OAASA,EAAyB,CAChQ,MAAO,EACP,OAAQ,CACd,EACQa,IAAgBX,GAA0BC,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,OAAS,OAASA,EAAuB,gBAAkB,MAAQD,IAA2B,OAASA,EAAyB,GAAK,OAAO,YAC9QU,IAAW,GAAKD,IAAU,IAM1BF,EAAMG,EAAS,OAAO,cAEpBH,EAAMG,EAASN,EAAsB,EAEvCG,GAAOG,EAASN,EAGhBG,EAAM,OAAO,YAAcG,GAG3BF,EAAOC,EAAQ,OAAO,aAExBD,EAAOA,EAAOC,EAAQN,IAEpBG,IAAYE,GAAQH,IAAWE,KAEjC,KAAK,SAAS,CACZ,YAAAI,CACR,CAAO,EACDT,EAAeK,EAAKC,CAAI,IAE3B,CAGD,oBAAqB,CACd,KAAK,UAAU,SAGpB,KAAK,UAAU,EAAI,CACpB,CACD,WAAW,EAAG,CACZ,GAAI,CAAC,KAAK,UAAU,QAAS,CAC3B/B,EAAI,KAAK,oBAAoB,EAC7B,MACD,CACD,GAAI,CAAC,KAAK,UAAU,QAAQ,SAAS,EAAE,aAAa,EAAG,CAGrD,QAFIjC,EAAU,EAAE,cACZoE,EAAqB,GAClBpE,GAAW,CAACoE,GACjBA,EAAqBpE,EAAQ,aAAa,sBAAsB,EAChEA,EAAUA,EAAQ,cAEfoE,GAEH,KAAK,UAAU,EAAI,CAEtB,CACF,CAGD,YAAY7I,EAAK,CACf,GAAI,CACF,KAAAyI,CACN,EAAQ,KAAK,MACT,OAAOzI,IAAQ,UAAYyI,EAAO,GAAKzI,IAAQ,cAAgBA,IAAQ,WACxE,CACD,cAAc,EAAG,CACf,GAAI,CACF,UAAAgD,CACN,EAAQ,KAAK,MACL8F,EAAW,KAAK,mBAChBC,EAAWD,EACXE,EAAc,GAClB,GAAI,EAAE,MAAQ,SAAW,EAAE,MAAQ,IAAK,CAClCF,GAAY,GAAKA,EAAW9F,EAAU,QACxC,KAAK,oBAAoBA,EAAU8F,CAAQ,EAAG,CAAC,EAEjD,MACD,CAcD,GAbI,EAAE,MAAQ,aACRA,GAAY,GAAKA,GAAY9F,EAAU,OACzCgG,EAAc,GAEdD,EAAW,EAEJ,KAAK,YAAY,EAAE,GAAG,EAC/BA,EAAW,KACF,EAAE,MAAQ,WAAa,EAAE,UAAY,EAAE,MAAQ,MACxDA,EAAW/G,EAAmB,gBAAgB+G,EAAU,GAAI/F,CAAS,GAC5D,EAAE,MAAQ,aAAe,EAAE,MAAQ,SAC5C+F,EAAW/G,EAAmB,gBAAgB+G,EAAU,EAAG/F,CAAS,GAElEgG,EAAa,CACf,KAAK,YAAYF,CAAQ,EACzB,EAAE,eAAc,EAChB,EAAE,gBAAe,EACjB,MACD,CACGA,IAAaC,IACXA,IAAa,KACf,KAAK,iBAAiBA,CAAQ,GAE9B,KAAK,UAAS,EACV,KAAK,oBAAoB,aAC3B,KAAK,SAAS,SAGlB,EAAE,eAAc,EAChB,EAAE,gBAAe,EAEpB,CACD,YAAYxB,EAAO,CACjB,GAAI,CACF,UAAAvE,EACA,cAAAkE,CACN,EAAQ,KAAK,MACL+B,EAAajG,EAAUuE,CAAK,EAAE,QAAUA,EAAQ,KAChDL,IAAkB+B,GACtB,KAAK,SAAS,CACZ,cAAeA,EACf,WAAY,KACZ,YAAa,IACnB,CAAK,CACF,CACD,WAAY,CACV,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E,CACF,UAAAtE,EACA,aAAAuE,CACN,EAAQ,KAAK,MACT,qBAAqB,KAAK,GAAG,EAC7B,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAC5CvE,EAAUsE,CAAQ,EAClBC,EAAa,IAAI,CACvB,CAAK,CACF,CACD,cAAe,CACb,KAAK,SAAS,CACZ,cAAe,IACrB,CAAK,CACF,CACD,mBAAmBC,EAAe,CAC5BA,EACF,KAAK,UAAU,EAAI,EAEnB,KAAK,aAAY,CAEpB,CACD,oBAAoBlF,EAAUD,EAAG,CAC/BA,EAAE,eAAc,EAChBA,EAAE,gBAAe,EACjB,GAAI,CACF,UAAAjB,CACN,EAAQ,KAAK,MACLkB,GAAY,OAASA,EAAS,WAAa,QAAa,CAACA,EAAS,YAChEA,EAAS,SAAW,KACtB,KAAK,YAAYlB,EAAU,QAAQkB,CAAQ,CAAC,EACnCA,EAAS,QAAU,OAC5BA,EAAS,OAAOD,EAAE,WAAW,EAC7B,KAAK,UAAU,EAAI,GAGxB,CACD,0BAA0BC,EAAUD,EAAG,CACjCA,EAAE,SAGN,KAAK,oBAAoBC,EAAUD,CAAC,CACrC,CACD,wBAAwBC,EAAU,CAChC,GAAI,CACF,UAAAlB,CACN,EAAQ,KAAK,MACLqG,EAAarG,EAAU,QAAQkB,CAAQ,EAC3C,KAAK,cAAcmF,CAAU,EACzBA,GAAc,GAAKA,EAAarG,EAAU,SAAWkB,EAAS,WAAa,QAAa,CAACA,EAAS,WACpG,KAAK,YAAYmF,CAAU,CAE9B,CACD,kBAAmB,CACjB,KAAK,cAAc,EAAE,CACtB,CACD,QAAS,CAkBP,QAjBIC,EAAmB,CAAA,EACnB,CACF,IAAAd,EACA,KAAAC,CACN,EAAQ,KAAK,MACL,CACF,cAAAvB,EACA,YAAA0B,EACA,cAAAtB,EACA,UAAAtE,EACA,WAAAwE,EACA,aAAAK,EACA,WAAA0B,EACA,YAAAC,EACA,mBAAApB,EACA,oBAAAC,CACN,EAAQ,KAAK,MACApF,EAAI,EAAGA,EAAID,EAAU,OAAQC,GAAK,EAAG,CAC5C,IAAIiB,EAAWlB,EAAUC,CAAC,EACtBA,EAAI,GAAKiB,EAAS,QAAUlB,EAAUC,EAAI,CAAC,EAAE,OAC/CqG,EAAiB,KAAmBjE,MAAK,KAAM,CAAE,EAAE,GAAG,OAAOpC,EAAG,YAAY,CAAC,CAAC,EAEhF,IAAIwG,EAA+BpE,EAAI,IAAC3B,GAAiB,CACvD,IAAKwD,IAAkBjE,EAAI,KAAK,iBAAmB,KACnD,mBAAoBqE,IAAkBrE,EACtC,gBAAiBuE,IAAevE,EAChC,SAAUiB,EACV,UAAW,KAAK,mBAChB,gBAAiB,KAAK,oBACtB,oBAAqB,KAAK,wBAC1B,sBAAuB,KAAK,yBAC7B,EAAEjB,CAAC,EACJqG,EAAiB,KAAKG,CAAe,CACtC,CACD,IAAIC,EAAiB,KACjB7B,EAAa,OAAS,IACxB6B,EAA8BrE,EAAI,IAAC,MAAO,CACxC,UAAW,UACX,SAAuBA,EAAI,IAACsE,EAAgB,CAC1C,UAAW,gCACrB,CAAS,CACT,CAAO,GAEH,GAAI,CACF,UAAAC,EACA,cAAe7E,CACrB,EAAQ,KAAK,MAGL8E,EAAc3C,IAAkB,MAAQqC,IAAe,MAAQC,IAAgB,KACnF,OAAoBzD,EAAAA,KAAM+D,EAAAA,SAAW,CACnC,SAAU,CAAc/D,EAAK,KAAC,MAAO,CACnC,UAAWD,EAAW,CACpB,eAAgB8C,CACjB,EAAE,wBAAwB,EAC3B,MAAOrC,GAAc,CACnB,IAAAiC,EACA,KAAAC,CACD,EAAEmB,CAAS,EACZ,IAAK,KAAK,UACV,uBAAwB,GACxB,OAAQ,KAAK,WACb,UAAW,KAAK,cAChB,aAAc,KAAK,iBACnB,cAAehD,EAAY,kBAC3B,KAAM,WACN,SAAU,EACV,cAAe7B,EACf,SAAU,CAACuE,EAAkBI,CAAc,CACnD,CAAO,EAAGG,GAAe3C,IAAkB,MAAQqC,IAAe,MAAQC,IAAgB,MAAqBnE,EAAI,IAACuB,EAAa,CACzH,QAAS5D,EAAUkE,CAAa,EAAE,SAAW,CAAE,EAC/C,UAAW,KAAK,mBAChB,IAAKqC,EACL,KAAMC,EACN,eAAgB,CAACO,EAAaC,IAAiB,CAC7C,KAAK,SAAS,CACZ,WAAYD,EACZ,YAAaC,CACzB,CAAW,CACF,EACD,mBAAoB5B,EACpB,oBAAqBC,CACtB,EAAE,OAAO,OAAOnB,CAAa,CAAC,CAAC,CACtC,CAAK,CACF,CACH,CACApH,EAAgB8G,EAAa,eAAgB,CAC3C,mBAAoB,EACpB,oBAAqB,EACrB,WAAY,CAEX,EACD,cAAe,CAEd,EACD,cAAe,CAEd,EACD,QAAS,CAAE,EACX,UAAW,CAAE,EACb,cAAe,MACjB,CAAC,EACD,MAAAqD,GAAerD,ECljBf,SAAS9G,EAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CASzX,MAAM6J,WAAwBC,EAAAA,SAAU,CACtC,YAAYvG,EAAO,CACjB,MAAMA,CAAK,EACX9D,EAAgB,KAAM,YAAa,MAAM,EACzCA,EAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,UAAyB6D,EAAM,YACpC,KAAK,SAAwBA,EAAM,YACnC,KAAK,MAAQ,CACX,QAAS,KACT,KAAM,EACN,IAAK,CACX,CACG,CACD,mBAAoB,CAClB,IAAImD,GACCA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,eACzH,KAAK,UAAU,QAAQ,cAAc,iBAAiB,cAAe,KAAK,iBAAiB,CAE9F,CACD,sBAAuB,CACrB,IAAIK,GACCA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,eAC5H,KAAK,UAAU,QAAQ,cAAc,oBAAoB,cAAe,KAAK,iBAAiB,CAEjG,CACD,kBAAkB,EAAG,CACnB,GAAK,KAAK,UAAU,QAGpB,KAAIW,EAAa,KAAK,UAAU,QAAQ,sBAAqB,EACzDU,EAAM,EAAE,QAAUV,EAAW,IAC7BW,EAAO,EAAE,QAAUX,EAAW,KAC9B,CACF,QAAArF,CACN,EAAQ,KAAK,MAKT,GAAIA,GAAW,MAAQ,EAAE,SAAW,KAAK,UAAU,QAAS,CAG1D,EAAE,eAAc,EAMhB,KAAK,SAAS,CACZ,QAAS,IACjB,EAAS,IAAM,CACP,IAAIgC,EAAU,SAAS,iBAAiBgE,EAAMD,CAAG,EAE7C4B,EAAa,IAAI,WAAW,cAAe,CAC7C,QAAS,EAAE,QACX,QAAS,EAAE,QACX,QAAS,GACT,WAAY,EACtB,CAAS,EACD3F,GAAY,MAAsCA,EAAQ,cAAc2F,CAAU,CAC1F,CAAO,EACD,MACD,CACD,GAAKpI,EAAmB,qBAAqB,CAAC,GAI1C,IAAE,SAAW,EAAE,SAInB,KAAIqI,EAAiBrI,EAAmB,aAAa,EAAE,cAAc,EACjEqI,EAAe,SAAW,IAM9B,EAAE,eAAc,EAChB,KAAK,SAAS,CACZ,QAASA,EACT,IAAA7B,EACA,KAAAC,CACN,CAAK,IACF,CACD,gBAAgB6B,EAAM,CAChBA,IAAS,KAAK,SAAS,SACzB,KAAK,SAAS,CACZ,QAAS,IACjB,CAAO,CAEJ,CACD,QAAS,CACP,IAAIA,EAAO,KACP,CACF,cAAevF,CACrB,EAAQ,KAAK,MACL,CACF,QAAAtC,EACA,IAAA+F,EACA,KAAAC,CACN,EAAQ,KAAK,MACT,OAAIhG,IACF6H,EAAoBjF,EAAI,IAACuB,GAAa,CACpC,IAAK,KAAK,SACV,QAASnE,EACT,aAAc,KAAK,gBACnB,IAAK+F,EACL,KAAMC,EACN,eAAgB,CAACsB,EAAaC,IAAiB,CAC7C,KAAK,SAAS,CACZ,IAAKD,EACL,KAAMC,CAClB,CAAW,CACF,EACD,cAAejF,CACvB,CAAO,GAEiBM,EAAAA,IAAK,MAAO,CAC9B,UAAWS,EAAW,oBAAqB,CACzC,OAAQrD,CAChB,CAAO,EACD,IAAK,KAAK,UACV,SAAU6H,CAChB,CAAK,CACF,CACH,CACA,MAAAC,GAAeL,GC3IL,IAACM,GAA8BC,EAAa,cAAC,IAAI,ECDhDC,EAAa,OAAO,OAAO,CACpC,YAAa,aACb,iBAAkB,kBAClB,cAAe,eACf,aAAc,cACd,aAAc,aAChB,CAAC,EAMM,SAASC,GAAwBC,EAAQ,CAC9C,MAAO,oBAAqBA,CAC9B,CAMO,SAASC,GAAmBD,EAAQ,CACzC,MAAO,eAAgBA,CACzB,CAMO,SAASE,GAAoBF,EAAQ,CAC1C,MAAO,gBAAiBA,CAC1B,CAMO,SAASG,GAAeH,EAAQ,CACrC,OAAOD,GAAwBC,CAAM,GAAKC,GAAmBD,CAAM,GAAKE,GAAoBF,CAAM,CACpG,CAMO,SAASI,GAAkBJ,EAAQ,CACxC,MAAO,SAAUA,GAAUA,EAAO,OAASF,EAAW,gBACxD,CACO,SAASO,EAAeL,EAAQ,CACrC,MAAO,SAAUA,GAAUA,EAAO,OAASF,EAAW,aACxD,CACO,SAASQ,GAAcN,EAAQ,CACpC,MAAO,SAAUA,GAAUA,EAAO,OAASF,EAAW,YACxD,CAWO,SAASS,GAAaP,EAAQ,CACnC,MAAO,SAAUA,GAAUA,EAAO,OAASF,EAAW,WACxD,CAEO,SAASU,EAAcR,EAAQ,CACpC,MAAO,SAAUA,GAAUA,EAAO,OAASF,EAAW,YACxD,CACO,SAASW,GAAST,EAAQ,CAC/B,OAAOI,GAAkBJ,CAAM,GAAKO,GAAaP,CAAM,GAAKM,GAAcN,CAAM,GAAKQ,EAAcR,CAAM,GAAKK,EAAeL,CAAM,CACrI,CCjEA,IAAIlE,GAAMC,EAAI,OAAO,+BAA+B,EAC7C,SAAS2E,GAAmBV,EAAQW,EAAM,CAC/C,OAAIX,GAAU,MAAQ,CAACK,EAAeL,CAAM,EACnC,GAEF,CAACA,EAAO,cAAc,EAAE,KAAI,EAAG,KAAK,GAAK,IAAMW,CAAI,CAC5D,CACO,SAASC,GAAiBZ,EAAQ,CACvC,IAAIa,EAA2BpG,EAAI,IAACC,EAAiB,CACnD,KAAMoG,EACV,CAAG,EACD,GAAI,CAACT,EAAeL,CAAM,EACxB,OAAOa,EAET,GAAI,CACF,KAAAvG,CACD,EAAG0F,EACJ,OAAI1F,GAAQ,KACHuG,EAESE,EAAAA,eAAezG,CAAI,EAC5BA,EAEWG,EAAAA,IAAKC,EAAiB,CACxC,KAAMJ,CACV,CAAG,CACH,CAMO,SAAS0G,GAAwBC,EAAW,CACjD,IAAIC,EAAqB,CAAC,GAAGD,EAAU,QAAO,CAAE,EAAE,OAAOE,GAASX,EAAcW,EAAM,CAAC,CAAC,CAAC,EACzF,OAAArF,GAAI,MAAM,kCAAmCoF,CAAkB,EACxDA,EAAmB,IAAIE,GAAQ,CACpC,GAAI,CAACC,EAAYrB,CAAM,EAAIoB,EAGvBE,EAAU,MAAM,QAAQtB,EAAO,MAAM,EAAIA,EAAO,OAAS,CAACA,EAAO,MAAM,EAC3E,OAAOsB,EAAQ,IAAIC,GAAS,CAC1B,GAAI,CACF,KAAAC,EACA,UAAAC,EACA,aAAAC,CACD,EAAGH,EACJ,MAAO,CACL,aAAc,WAAW,OAAOE,GAAyD,MAAM,EAC/F,SAAUE,EAAYN,EAAYG,CAAI,EACtC,KAAAA,EACA,aAAAE,CACR,CACA,CAAK,CACL,CAAG,EAAE,KAAI,CACT,CC3DO,SAASE,IAAa,CAC3B,OAAO7K,GAAkB6I,GAAgB,kJAAkJ,CAC7L"}
1
+ {"version":3,"file":"usePlugins-a4e842f0.js","sources":["../../../utils/dist/CanceledPromiseError.js","../../../utils/dist/TimeoutError.js","../../../utils/dist/PromiseUtils.js","../../../react-hooks/dist/useContextOrThrow.js","../../../components/dist/context-actions/ContextActionUtils.js","../../../components/dist/context-actions/ContextMenuItem.js","../../../components/dist/context-actions/ContextMenu.js","../../../components/dist/context-actions/ContextMenuRoot.js","../../../plugin/dist/PluginsContext.js","../../../plugin/dist/PluginTypes.js","../../../plugin/dist/PluginUtils.js","../../../plugin/dist/usePlugins.js"],"sourcesContent":["function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nclass CanceledPromiseError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isCanceled\", true);\n }\n}\nexport default CanceledPromiseError;\n//# sourceMappingURL=CanceledPromiseError.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 TimeoutError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isTimeout\", true);\n }\n}\nexport default TimeoutError;\n//# sourceMappingURL=TimeoutError.js.map","import CanceledPromiseError from \"./CanceledPromiseError.js\";\nimport TimeoutError from \"./TimeoutError.js\";\nexport class PromiseUtils {\n /**\n * Creates a promise that can be canceled by calling the `cancel` function\n * Pass an optional `cleanupFunc` to perform actions on the resolved item after promise is cancelled.\n * @param promise The item to resolve\n * @param cleanup Function to cleanup the resolved item after cancelation. Called after both this promise is cancelled and the wrapped item was resolved (order does not matter).\n */\n static makeCancelable(promise, cleanup) {\n var hasCanceled = false;\n var resolved;\n var rejectFn;\n var wrappedPromise = new Promise((resolve, reject) => {\n rejectFn = reject;\n Promise.resolve(promise).then(val => {\n if (hasCanceled) {\n if (cleanup) {\n cleanup(val);\n }\n } else {\n resolved = val;\n resolve(val);\n }\n }).catch(error => reject(error));\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrappedPromise.cancel = () => {\n hasCanceled = true;\n rejectFn(new CanceledPromiseError());\n if (resolved != null && cleanup) {\n cleanup(resolved);\n }\n };\n return wrappedPromise;\n }\n static isCanceled(error) {\n return error instanceof CanceledPromiseError;\n }\n static isTimedOut(error) {\n return error instanceof TimeoutError;\n }\n\n /**\n * Wrap a callback call in a Promise + setTimeout.\n * @param timeoutMs\n * @param callback\n */\n static withTimeout(timeoutMs, callback) {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n try {\n resolve(callback());\n } catch (err) {\n reject(err);\n }\n }, timeoutMs);\n });\n }\n}\n//# sourceMappingURL=PromiseUtils.js.map","import { useContext } from 'react';\n\n/**\n * Fetch a given context or throw an error if it is null or undefined.\n * @param context Context to use.\n * @param message Message to throw if context is null or undefined.\n * @returns Context, or throws\n */\nexport function useContextOrThrow(context) {\n var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'No value available in context. Was code wrapped in a provider?';\n var value = useContext(context);\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport default useContextOrThrow;\n//# sourceMappingURL=useContextOrThrow.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 function isPromise(value) {\n return value.then !== undefined;\n}\nclass ContextActionUtils {\n static disableAllActions() {\n ContextActionUtils.actionsDisabled = true;\n }\n static enableAllActions() {\n ContextActionUtils.actionsDisabled = false;\n }\n static isContextActionEvent(e) {\n return Array.isArray(e.contextActions);\n }\n\n /**\n * Compare two action items. Useful in Array.sort\n * @param a First context action to compare\n * @param b Second context action to compare\n */\n static compareActions(a, b) {\n if (a.group !== b.group) {\n var _a$group, _b$group;\n return ((_a$group = a.group) !== null && _a$group !== void 0 ? _a$group : 0) > ((_b$group = b.group) !== null && _b$group !== void 0 ? _b$group : 0) ? 1 : -1;\n }\n if (a.order !== b.order) {\n var _a$order, _b$order;\n return ((_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : 0) > ((_b$order = b.order) !== null && _b$order !== void 0 ? _b$order : 0) ? 1 : -1;\n }\n if (a.title !== b.title) {\n var _a$title, _b$title;\n return ((_a$title = a.title) !== null && _a$title !== void 0 ? _a$title : '') > ((_b$title = b.title) !== null && _b$title !== void 0 ? _b$title : '') ? 1 : -1;\n }\n if (a !== b) {\n return a > b ? 1 : -1;\n }\n return 0;\n }\n\n /**\n *\n * @param actions The array of actions to sort\n */\n static sortActions(actions) {\n if (actions == null || !Array.isArray(actions)) {\n return [];\n }\n var sortedActions = actions.slice();\n sortedActions.sort(ContextActionUtils.compareActions);\n return sortedActions;\n }\n static isMacPlatform() {\n var {\n platform\n } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Retrieve the preferred modifier key based on the current platform\n */\n static getModifierKey() {\n if (ContextActionUtils.isMacPlatform()) {\n return 'metaKey';\n }\n return 'ctrlKey';\n }\n\n /**\n * Returns true if the modifier key for the current platform is down for the event (Ctrl for windows/linux, Command (meta) for mac)\n * @param event The event to get the meta key status from\n */\n static isModifierKeyDown(event) {\n var modifierKey = ContextActionUtils.getModifierKey();\n return event[modifierKey];\n }\n\n /**\n * Returns the menu items for the provided context actions, or empty array if none found.\n * @param actionsParam The actions to get menu items for\n * @param includePromises Whether or not to include promises in the returned menu items\n */\n\n // If ignoring promises, then the return type is narrowed\n\n static getMenuItems(actionsParam) {\n var includePromises = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var menuItems = [];\n var actions = actionsParam;\n if (!Array.isArray(actions)) {\n actions = [actions];\n }\n for (var i = 0; i < actions.length; i += 1) {\n var action = actions[i];\n var newMenuItems = void 0;\n if (typeof action === 'function') {\n newMenuItems = action();\n } else {\n newMenuItems = action;\n }\n if (newMenuItems != null) {\n if (newMenuItems instanceof Promise) {\n if (includePromises) {\n menuItems.push(newMenuItems);\n }\n } else if (Array.isArray(newMenuItems)) {\n menuItems = menuItems.concat(newMenuItems);\n } else {\n menuItems.push(newMenuItems);\n }\n }\n }\n menuItems = menuItems.filter(action => action.title !== undefined || action.then != null || action.menuElement);\n return menuItems;\n }\n\n /**\n * Returns the index of the next menu item in a list that doesn't have a disabled=true prop\n * @param startIndex the starting position for the iteration\n * @param delta the direction of travel, -1 or 1\n * @param menuItems an array of menuItems\n */\n static getNextMenuItem(startIndex, delta, menuItems) {\n var firstIndex = startIndex;\n if (firstIndex < 0 && delta < 0) {\n // if menu index is -1 and delta -1 manually set start point\n firstIndex = menuItems.length;\n }\n // find the next non disabled menu option, iterating the list only once\n for (var i = 1; i < menuItems.length + 1; i += 1) {\n var menuIndex = (firstIndex + delta * i + menuItems.length) % menuItems.length;\n var item = menuItems[menuIndex];\n if (!(item instanceof Promise) && item.disabled !== true) {\n return menuIndex;\n }\n }\n return startIndex;\n }\n}\n_defineProperty(ContextActionUtils, \"actionsDisabled\", false);\nexport default ContextActionUtils;\n//# sourceMappingURL=ContextActionUtils.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight } from '@deephaven/icons';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar ContextMenuItem = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _menuItem$shortcutTex, _menuItem$shortcut;\n function handleMenuItemClick(e) {\n var {\n menuItem,\n onMenuItemClick\n } = props;\n onMenuItemClick(menuItem, e);\n }\n function handleMenuItemMouseMove(e) {\n var {\n menuItem,\n onMenuItemMouseMove\n } = props;\n onMenuItemMouseMove(menuItem, e);\n }\n function handleMenuItemContextMenu(e) {\n var {\n menuItem,\n onMenuItemContextMenu\n } = props;\n onMenuItemContextMenu(menuItem, e);\n }\n function renderCustomMenuElement(element, iconElement, displayShortcut) {\n // Don't pass forwardedProps if menuElement is a native DOM node\n if (typeof element.type === 'string') {\n return element;\n }\n var {\n closeMenu,\n menuItem,\n isKeyboardSelected,\n isMouseSelected,\n 'data-testid': dataTestId\n } = props;\n var forwardedProps = {\n menuItem,\n closeMenu,\n isKeyboardSelected,\n isMouseSelected,\n iconElement,\n displayShortcut,\n 'data-testid': dataTestId\n };\n return /*#__PURE__*/React.cloneElement(element, {\n forwardedProps\n });\n }\n var {\n children,\n menuItem,\n isKeyboardSelected = false,\n isMouseSelected = false,\n 'data-testid': dataTestId\n } = props;\n var displayShortcut = (_menuItem$shortcutTex = menuItem.shortcutText) !== null && _menuItem$shortcutTex !== void 0 ? _menuItem$shortcutTex : (_menuItem$shortcut = menuItem.shortcut) === null || _menuItem$shortcut === void 0 ? void 0 : _menuItem$shortcut.getDisplayText();\n var icon = null;\n if (menuItem.icon) {\n var menuItemIcon = menuItem.icon;\n if ( /*#__PURE__*/React.isValidElement(menuItemIcon)) {\n icon = menuItemIcon;\n } else {\n var style;\n if (menuItem.iconColor != null && (menuItem.disabled === undefined || !menuItem.disabled)) {\n style = {\n color: menuItem.iconColor\n };\n }\n icon = /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: menuItemIcon,\n style: style\n });\n }\n }\n var subMenuIndicator = null;\n var isSubMenuActive = Boolean(children);\n if (menuItem.actions) {\n subMenuIndicator = /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight\n });\n }\n var content = null;\n if (menuItem.menuElement) {\n content = /*#__PURE__*/_jsx(\"div\", {\n className: \"custom-menu-item\",\n onMouseMove: handleMenuItemMouseMove,\n children: renderCustomMenuElement(menuItem.menuElement, icon, displayShortcut)\n });\n } else {\n var _menuItem$description;\n var menuItemDisabled = menuItem.disabled;\n var iconHasOutline = menuItem.iconOutline;\n content = /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: classNames('btn-context-menu', {\n disabled: menuItemDisabled\n }, {\n active: (isSubMenuActive || isMouseSelected) && (menuItemDisabled === undefined || !menuItemDisabled)\n }, {\n 'keyboard-active': isKeyboardSelected && (menuItemDisabled === undefined || !menuItemDisabled)\n }),\n onClick: handleMenuItemClick,\n onMouseMove: handleMenuItemMouseMove,\n onContextMenu: handleMenuItemContextMenu,\n title: (_menuItem$description = menuItem.description) !== null && _menuItem$description !== void 0 ? _menuItem$description : '',\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"btn-context-menu-wrapper\",\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: classNames('icon', {\n outline: iconHasOutline\n }),\n children: icon\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"title\",\n children: menuItem.title\n }), displayShortcut !== undefined && /*#__PURE__*/_jsx(\"span\", {\n className: \"shortcut\",\n children: displayShortcut\n }), subMenuIndicator && /*#__PURE__*/_jsx(\"span\", {\n className: classNames('submenu-indicator', {\n disabled: menuItemDisabled\n }),\n children: subMenuIndicator\n })]\n })\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"context-menu-item\",\n ref: ref,\n \"data-testid\": dataTestId,\n children: [children, content]\n });\n});\nContextMenuItem.displayName = 'ContextMenuItem';\nContextMenuItem.defaultProps = {\n children: null,\n isKeyboardSelected: false,\n isMouseSelected: false,\n 'data-testid': undefined\n};\nexport default ContextMenuItem;\n//# sourceMappingURL=ContextMenuItem.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, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport ContextMenuItem from \"./ContextMenuItem.js\";\nimport LoadingSpinner from \"../LoadingSpinner.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ContextMenu');\n/** Do not use this class directly. Use ContextMenuRoot and ContextActions instead. */\nclass ContextMenu extends PureComponent {\n static handleContextMenu(e) {\n if (e.metaKey) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"oldFocus\", void 0);\n _defineProperty(this, \"activeSubMenuRef\", void 0);\n _defineProperty(this, \"subMenuTimer\", void 0);\n _defineProperty(this, \"rAF\", void 0);\n _defineProperty(this, \"initialPosition\", void 0);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseSubMenu = this.handleCloseSubMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemContextMenu = this.handleMenuItemContextMenu.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.oldFocus = document.activeElement;\n this.activeSubMenuRef = /*#__PURE__*/React.createRef();\n this.subMenuTimer = 0;\n this.rAF = 0;\n this.initialPosition = {\n top: props.top,\n left: props.left\n };\n this.state = {\n menuItems: [],\n pendingItems: [],\n activeSubMenu: null,\n hasOverflow: false,\n subMenuTop: null,\n subMenuLeft: null,\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n keyboardIndex: -1,\n mouseIndex: -1\n };\n }\n componentDidMount() {\n this.initMenu();\n this.verifyPosition();\n window.addEventListener('resize', this.handleWindowResize);\n\n // rAF is needed to wait for a submenus popper to be created before\n // attempting to set focus, however on a quick mount/unmount when\n // mousing past an item, the submenu could be unmounted before the\n // async rAF finishes, so it is cancelled in willUnmount()\n this.rAF = window.requestAnimationFrame(() => {\n var _this$container$curre;\n (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 ? void 0 : _this$container$curre.focus();\n var {\n onMenuOpened\n } = this.props;\n onMenuOpened(this);\n });\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n actions\n } = this.props;\n var {\n activeSubMenu\n } = this.state;\n if (activeSubMenu !== prevState.activeSubMenu) {\n if (activeSubMenu == null) {\n var _this$container$curre2;\n // close sub menu, refocus parent menu\n (_this$container$curre2 = this.container.current) === null || _this$container$curre2 === void 0 ? void 0 : _this$container$curre2.focus();\n } else {\n // open sub menu, set its initial position\n this.setActiveSubMenuPosition();\n }\n }\n if (prevProps.actions !== actions) {\n this.initMenu();\n if (this.container.current == null || !this.container.current.contains(document.activeElement)) {\n var _this$container$curre3;\n (_this$container$curre3 = this.container.current) === null || _this$container$curre3 === void 0 ? void 0 : _this$container$curre3.focus();\n }\n }\n this.verifyPosition();\n }\n componentWillUnmount() {\n this.cancelPromises();\n window.removeEventListener('resize', this.handleWindowResize);\n cancelAnimationFrame(this.rAF);\n }\n getKeyboardIndex() {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n var {\n keyboardIndex\n } = this.state;\n return keyboardIndex;\n }\n return this.getMouseIndex();\n }\n setKeyboardIndex(index) {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n this.setState({\n keyboardIndex: index\n });\n } else {\n this.setMouseIndex(index);\n }\n }\n getMouseIndex() {\n var {\n mouseIndex\n } = this.state;\n return mouseIndex;\n }\n setMouseIndex(index) {\n this.setState({\n mouseIndex: index\n });\n }\n initMenu() {\n // cancel any pending close and promises\n this.cancelPromises();\n cancelAnimationFrame(this.rAF);\n var {\n options\n } = this.props;\n var keyboardIndex = options.initialKeyboardIndex;\n if (keyboardIndex === undefined) {\n keyboardIndex = -1;\n }\n var {\n actions\n } = this.props;\n var menuItems = ContextActionUtils.getMenuItems(actions);\n var nonPromiseItems = [];\n for (var i = menuItems.length - 1; i >= 0; i -= 1) {\n var menuItem = menuItems[i];\n if (menuItem instanceof Promise) {\n this.initMenuPromise(menuItem);\n } else {\n nonPromiseItems.push(menuItem);\n }\n }\n this.setState({\n mouseIndex: -1,\n keyboardIndex,\n activeSubMenu: null,\n menuItems: ContextActionUtils.sortActions(nonPromiseItems)\n });\n }\n initMenuPromise(promise) {\n // make all promises cancellable\n var cancellablePromise = PromiseUtils.makeCancelable(promise);\n this.setState(state => ({\n pendingItems: state.pendingItems.concat(cancellablePromise)\n }));\n cancellablePromise.then(resolvedMenuItems => {\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n menuItems: ContextActionUtils.sortActions(state.menuItems.concat(resolvedMenuItems)),\n pendingItems\n };\n }\n // This item is stale, don't update the menu\n return null;\n });\n }, error => {\n if (PromiseUtils.isCanceled(error)) {\n return; // Canceled promise is ignored\n }\n\n // remove failed item from pending list\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n pendingItems\n };\n }\n return null;\n });\n\n // Log the error\n log.error(error);\n });\n }\n cancelPromises() {\n var {\n pendingItems\n } = this.state;\n pendingItems.map(item => item.cancel());\n }\n\n /**\n * Sets the unverfied start position of a submenu. Submenu then self-verfies\n * its own position and potentially reports back a new position.\n */\n setActiveSubMenuPosition() {\n if (this.activeSubMenuRef.current === null) return;\n var parentRect = this.activeSubMenuRef.current.getBoundingClientRect();\n\n // intentionally rect.right, we want the sub menu to start at the right edge of the current menu\n this.setState({\n subMenuTop: parentRect.top,\n subMenuLeft: parentRect.right,\n subMenuParentHeight: parentRect.height,\n subMenuParentWidth: parentRect.width\n });\n }\n\n /**\n * Verifies the position of this menu in relation to the parent to make sure it's on screen.\n * Will update the top left state (updatePosition) if necessary (causing a re-render)\n * By default it tries to top-align with parent, at the right side of the parent.\n * Because we aren't a native context menu and can't escape window bounds, we also do\n * somethings to better fit on screen, such as the \"nudge\" offset position, and further\n * allow overflow scrolling for large menus in a small window.\n */\n verifyPosition() {\n var _this$container$curre4, _this$container$curre5, _this$container$curre6, _this$container$curre7;\n var {\n options,\n updatePosition,\n subMenuParentWidth,\n subMenuParentHeight,\n top: oldTop,\n left: oldLeft\n } = this.props;\n if (!this.container.current || options.doNotVerifyPosition != null && options.doNotVerifyPosition) {\n return;\n }\n\n // initial position is used rather than current position,\n // as the number of menu items can change (actions can bubble)\n // and menu should always be positioned relative to spawn point\n var {\n top,\n left\n } = this.initialPosition;\n var {\n width,\n height\n } = (_this$container$curre4 = (_this$container$curre5 = this.container.current) === null || _this$container$curre5 === void 0 ? void 0 : _this$container$curre5.getBoundingClientRect()) !== null && _this$container$curre4 !== void 0 ? _this$container$curre4 : {\n width: 0,\n height: 0\n };\n var hasOverflow = ((_this$container$curre6 = (_this$container$curre7 = this.container.current) === null || _this$container$curre7 === void 0 ? void 0 : _this$container$curre7.scrollHeight) !== null && _this$container$curre6 !== void 0 ? _this$container$curre6 : 0) > window.innerHeight;\n if (height === 0 || width === 0) {\n // We don't have a height or width yet, don't bother doing anything\n return;\n }\n\n // does it fit below?\n if (top + height > window.innerHeight) {\n // can it be flipped to above? include offset if submenu (defaults to 0 if not submenu)\n if (top - height - subMenuParentHeight > 0) {\n // flip like a native menu would\n top -= height - subMenuParentHeight;\n } else {\n // still doesnt fit? okay, position at bottom edge\n top = window.innerHeight - height;\n }\n }\n if (left + width > window.innerWidth) {\n // less picky about left right positioning, just keep it going off to right\n left = left - width - subMenuParentWidth;\n }\n if (oldLeft !== left || oldTop !== top) {\n // parent owns positioning as single source of truth, ask to update props\n this.setState({\n hasOverflow\n });\n updatePosition(top, left);\n }\n }\n\n // since window resize doesn't trigger blur, listen and close the menu\n handleWindowResize() {\n if (!this.container.current) {\n return;\n }\n this.closeMenu(true);\n }\n handleBlur(e) {\n if (!this.container.current) {\n log.warn('Container is null!');\n return;\n }\n if (!this.container.current.contains(e.relatedTarget)) {\n var element = e.relatedTarget;\n var isContextMenuChild = false;\n while (element && !isContextMenuChild) {\n isContextMenuChild = element.hasAttribute('data-dh-context-menu');\n element = element.parentElement;\n }\n if (!isContextMenuChild) {\n // close all submenus on blur\n this.closeMenu(true);\n }\n }\n }\n\n /** Returns whether the specified key should remove the menu. Depends on the side the parent is on. */\n isEscapeKey(key) {\n var {\n left\n } = this.props;\n return key === 'Escape' || left < 0 && key === 'ArrowRight' || key === 'ArrowLeft';\n }\n handleKeyDown(e) {\n var {\n menuItems\n } = this.state;\n var oldFocus = this.getKeyboardIndex();\n var newFocus = oldFocus;\n var openSubMenu = false;\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n if (e.key === 'ArrowRight') {\n if (oldFocus >= 0 && oldFocus <= menuItems.length) {\n openSubMenu = true;\n } else {\n newFocus = 0;\n }\n } else if (this.isEscapeKey(e.key)) {\n newFocus = null;\n } else if (e.key === 'ArrowUp' || e.shiftKey && e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, -1, menuItems);\n } else if (e.key === 'ArrowDown' || e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, 1, menuItems);\n }\n if (openSubMenu) {\n this.openSubMenu(oldFocus);\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n }\n }\n openSubMenu(index) {\n var {\n menuItems,\n activeSubMenu\n } = this.state;\n var newSubMenu = menuItems[index].actions ? index : null;\n if (activeSubMenu === newSubMenu) return;\n this.setState({\n activeSubMenu: newSubMenu,\n subMenuTop: null,\n subMenuLeft: null\n });\n }\n closeMenu() {\n var closeAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var {\n closeMenu,\n onMenuClosed\n } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n closeSubMenu() {\n this.setState({\n activeSubMenu: null\n });\n }\n handleCloseSubMenu(closeAllMenus) {\n if (closeAllMenus) {\n this.closeMenu(true);\n } else {\n this.closeSubMenu();\n }\n }\n handleMenuItemClick(menuItem, e) {\n e.preventDefault();\n e.stopPropagation();\n var {\n menuItems\n } = this.state;\n if (menuItem != null && (menuItem.disabled === undefined || !menuItem.disabled)) {\n if (menuItem.actions != null) {\n this.openSubMenu(menuItems.indexOf(menuItem));\n } else if (menuItem.action != null) {\n menuItem.action(e.nativeEvent);\n this.closeMenu(true);\n }\n }\n }\n handleMenuItemContextMenu(menuItem, e) {\n if (e.metaKey) {\n return;\n }\n this.handleMenuItemClick(menuItem, e);\n }\n handleMenuItemMouseMove(menuItem) {\n var {\n menuItems\n } = this.state;\n var focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n if (focusIndex >= 0 && focusIndex < menuItems.length && (menuItem.disabled === undefined || !menuItem.disabled)) {\n this.openSubMenu(focusIndex);\n }\n }\n handleMouseLeave() {\n this.setMouseIndex(-1);\n }\n render() {\n var menuItemElements = [];\n var {\n top,\n left\n } = this.props;\n var {\n activeSubMenu,\n hasOverflow,\n keyboardIndex,\n menuItems,\n mouseIndex,\n pendingItems,\n subMenuTop,\n subMenuLeft,\n subMenuParentWidth,\n subMenuParentHeight\n } = this.state;\n for (var i = 0; i < menuItems.length; i += 1) {\n var menuItem = menuItems[i];\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push( /*#__PURE__*/_jsx(\"hr\", {}, \"\".concat(i, \".separator\")));\n }\n var menuItemElement = /*#__PURE__*/_jsx(ContextMenuItem, {\n ref: activeSubMenu === i ? this.activeSubMenuRef : null,\n isKeyboardSelected: keyboardIndex === i,\n isMouseSelected: mouseIndex === i,\n menuItem: menuItem,\n closeMenu: this.handleCloseSubMenu,\n onMenuItemClick: this.handleMenuItemClick,\n onMenuItemMouseMove: this.handleMenuItemMouseMove,\n onMenuItemContextMenu: this.handleMenuItemContextMenu\n }, i);\n menuItemElements.push(menuItemElement);\n }\n var pendingElement = null;\n if (pendingItems.length > 0) {\n pendingElement = /*#__PURE__*/_jsx(\"div\", {\n className: \"loading\",\n children: /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n })\n });\n }\n var {\n menuStyle,\n 'data-testid': dataTestId\n } = this.props;\n\n // don't show submenu until it has an position initialized\n var showSubmenu = activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null;\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classNames({\n 'has-overflow': hasOverflow\n }, 'context-menu-container'),\n style: _objectSpread({\n top,\n left\n }, menuStyle),\n ref: this.container,\n \"data-dh-context-menu\": true,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseLeave: this.handleMouseLeave,\n onContextMenu: ContextMenu.handleContextMenu,\n role: \"menuitem\",\n tabIndex: 0,\n \"data-testid\": dataTestId,\n children: [menuItemElements, pendingElement]\n }), showSubmenu && activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null && /*#__PURE__*/_jsx(ContextMenu, {\n actions: menuItems[activeSubMenu].actions || [],\n closeMenu: this.handleCloseSubMenu,\n top: subMenuTop,\n left: subMenuLeft,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n subMenuTop: verifiedTop,\n subMenuLeft: verifiedLeft\n });\n },\n subMenuParentWidth: subMenuParentWidth,\n subMenuParentHeight: subMenuParentHeight\n }, \"sub-\".concat(activeSubMenu))]\n });\n }\n}\n_defineProperty(ContextMenu, \"defaultProps\", {\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n closeMenu() {\n // no-op\n },\n onMenuOpened() {\n // no-op\n },\n onMenuClosed() {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined\n});\nexport default ContextMenu;\n//# sourceMappingURL=ContextMenu.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ContextMenu from \"./ContextMenu.js\";\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Put at your root container, any contextmenu events that are unhandled in the root container will be handled by this\n */\nclass ContextMenuRoot extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"openMenu\", void 0);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.openMenu = /*#__PURE__*/React.createRef();\n this.state = {\n actions: null,\n left: 0,\n top: 0\n };\n }\n componentDidMount() {\n var _this$container$curre;\n if ((_this$container$curre = this.container.current) !== null && _this$container$curre !== void 0 && _this$container$curre.parentElement) {\n this.container.current.parentElement.addEventListener('contextmenu', this.handleContextMenu);\n }\n }\n componentWillUnmount() {\n var _this$container$curre2;\n if ((_this$container$curre2 = this.container.current) !== null && _this$container$curre2 !== void 0 && _this$container$curre2.parentElement) {\n this.container.current.parentElement.removeEventListener('contextmenu', this.handleContextMenu);\n }\n }\n handleContextMenu(e) {\n if (!this.container.current) {\n return;\n }\n var parentRect = this.container.current.getBoundingClientRect();\n var top = e.clientY - parentRect.top;\n var left = e.clientX - parentRect.left;\n var {\n actions\n } = this.state;\n\n // Context menu is open and user clicked on the context-root blocking layer\n // Mac and Linux appear to trigger contextmenu events on mousedown vs. mouseup on Windows\n // Mouseup on Windows triggers blur before contextmenu which effectively does what this path does\n if (actions != null && e.target === this.container.current) {\n // re-emit right clicks that hit the context-root blocking layer\n // while we already have a custom context menu open\n e.preventDefault();\n\n // Set actions to null removes the menu\n // That allows a new menu to be opened on a different element so initial position is set properly\n // Otherwise the instance of this menu may be reused\n // A new contextmenu event is triggered on the element at the location the user clicked on the blocking layer\n this.setState({\n actions: null\n }, () => {\n var element = document.elementFromPoint(left, top); // x y\n\n var mouseEvent = new MouseEvent('contextmenu', {\n clientX: e.clientX,\n clientY: e.clientY,\n bubbles: true,\n cancelable: true\n });\n element === null || element === void 0 ? void 0 : element.dispatchEvent(mouseEvent);\n });\n return;\n }\n if (!ContextActionUtils.isContextActionEvent(e)) {\n // Open native menu if no custom context actions\n return;\n }\n if (e.metaKey || e.ctrlKey) {\n // debug escape hatch to native menu\n return;\n }\n var contextActions = ContextActionUtils.getMenuItems(e.contextActions);\n if (contextActions.length === 0) {\n // No actions after filtering. Use native menu\n return;\n }\n\n // new clicks, set actions\n e.preventDefault();\n this.setState({\n actions: contextActions,\n top,\n left\n });\n }\n handleMenuClose(menu) {\n if (menu === this.openMenu.current) {\n this.setState({\n actions: null\n });\n }\n }\n render() {\n var menu = null;\n var {\n 'data-testid': dataTestId\n } = this.props;\n var {\n actions,\n top,\n left\n } = this.state;\n if (actions) {\n menu = /*#__PURE__*/_jsx(ContextMenu, {\n ref: this.openMenu,\n actions: actions,\n onMenuClosed: this.handleMenuClose,\n top: top,\n left: left,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n top: verifiedTop,\n left: verifiedLeft\n });\n },\n \"data-testid\": dataTestId\n });\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('context-menu-root', {\n active: actions\n }),\n ref: this.container,\n children: menu\n });\n }\n}\nexport default ContextMenuRoot;\n//# sourceMappingURL=ContextMenuRoot.js.map","import { createContext } from 'react';\nexport var PluginsContext = /*#__PURE__*/createContext(null);\nexport default PluginsContext;\n//# sourceMappingURL=PluginsContext.js.map","export var PluginType = Object.freeze({\n AUTH_PLUGIN: 'AuthPlugin',\n DASHBOARD_PLUGIN: 'DashboardPlugin',\n WIDGET_PLUGIN: 'WidgetPlugin',\n TABLE_PLUGIN: 'TablePlugin',\n THEME_PLUGIN: 'ThemePlugin'\n});\n\n/**\n * @deprecated Use DashboardPlugin instead\n */\n\nexport function isLegacyDashboardPlugin(plugin) {\n return 'DashboardPlugin' in plugin;\n}\n\n/**\n * @deprecated Use AuthPlugin instead\n */\n\nexport function isLegacyAuthPlugin(plugin) {\n return 'AuthPlugin' in plugin;\n}\n\n/**\n * @deprecated Use TablePlugin instead\n */\n\nexport function isLegacyTablePlugin(plugin) {\n return 'TablePlugin' in plugin;\n}\n\n/**\n * @deprecated Use Plugin instead\n */\n\nexport function isLegacyPlugin(plugin) {\n return isLegacyDashboardPlugin(plugin) || isLegacyAuthPlugin(plugin) || isLegacyTablePlugin(plugin);\n}\n\n/**\n * A plugin that will be mounted to the dashboard.\n */\n\nexport function isDashboardPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.DASHBOARD_PLUGIN;\n}\nexport function isWidgetPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.WIDGET_PLUGIN;\n}\nexport function isTablePlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.TABLE_PLUGIN;\n}\n\n/**\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\nexport function isAuthPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.AUTH_PLUGIN;\n}\n/** Type guard to check if given plugin is a `ThemePlugin` */\nexport function isThemePlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.THEME_PLUGIN;\n}\nexport function isPlugin(plugin) {\n return isDashboardPlugin(plugin) || isAuthPlugin(plugin) || isTablePlugin(plugin) || isThemePlugin(plugin) || isWidgetPlugin(plugin);\n}\n//# sourceMappingURL=PluginTypes.js.map","import { isValidElement } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { getThemeKey } from '@deephaven/components';\nimport { vsPreview } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { isWidgetPlugin, isThemePlugin } from \"./PluginTypes.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('@deephaven/plugin.PluginUtils');\nexport function pluginSupportsType(plugin, type) {\n if (plugin == null || !isWidgetPlugin(plugin)) {\n return false;\n }\n return [plugin.supportedTypes].flat().some(t => t === type);\n}\nexport function getIconForPlugin(plugin) {\n var defaultIcon = /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsPreview\n });\n if (!isWidgetPlugin(plugin)) {\n return defaultIcon;\n }\n var {\n icon\n } = plugin;\n if (icon == null) {\n return defaultIcon;\n }\n if ( /*#__PURE__*/isValidElement(icon)) {\n return icon;\n }\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n}\n\n/**\n * Extract theme data from theme plugins in the given plugin map.\n * @param pluginMap\n */\nexport function getThemeDataFromPlugins(pluginMap) {\n var themePluginEntries = [...pluginMap.entries()].filter(entry => isThemePlugin(entry[1]));\n log.debug('Getting theme data from plugins', themePluginEntries);\n return themePluginEntries.map(_ref => {\n var [pluginName, plugin] = _ref;\n // Normalize to an array since config can be an array of configs or a\n // single config\n var configs = Array.isArray(plugin.themes) ? plugin.themes : [plugin.themes];\n return configs.map(_ref2 => {\n var {\n name,\n baseTheme,\n styleContent\n } = _ref2;\n return {\n baseThemeKey: \"default-\".concat(baseTheme !== null && baseTheme !== void 0 ? baseTheme : 'dark'),\n themeKey: getThemeKey(pluginName, name),\n name,\n styleContent\n };\n });\n }).flat();\n}\n//# sourceMappingURL=PluginUtils.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { PluginsContext } from \"./PluginsContext.js\";\nexport function usePlugins() {\n return useContextOrThrow(PluginsContext, 'No Plugins available in usePlugins. This can happen when plugins have not finished loading or if code is not wrapped in PluginsContext.Provider.');\n}\nexport default usePlugins;\n//# sourceMappingURL=usePlugins.js.map"],"names":["_defineProperty","obj","key","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","CanceledPromiseError","CanceledPromiseError$1","TimeoutError","TimeoutError$1","PromiseUtils","promise","cleanup","hasCanceled","resolved","rejectFn","wrappedPromise","resolve","reject","val","error","timeoutMs","callback","err","useContextOrThrow","context","message","useContext","isPromise","ContextActionUtils","a","b","_a$group","_b$group","_a$order","_b$order","_a$title","_b$title","actions","sortedActions","platform","event","modifierKey","actionsParam","includePromises","menuItems","i","action","newMenuItems","startIndex","delta","firstIndex","menuIndex","item","ContextActionUtils$1","ContextMenuItem","React","props","ref","_menuItem$shortcutTex","_menuItem$shortcut","handleMenuItemClick","e","menuItem","onMenuItemClick","handleMenuItemMouseMove","onMenuItemMouseMove","handleMenuItemContextMenu","onMenuItemContextMenu","renderCustomMenuElement","element","iconElement","displayShortcut","closeMenu","isKeyboardSelected","isMouseSelected","dataTestId","forwardedProps","children","icon","menuItemIcon","style","_jsx","FontAwesomeIcon","subMenuIndicator","isSubMenuActive","vsChevronRight","content","_menuItem$description","menuItemDisabled","iconHasOutline","classNames","_jsxs","ContextMenuItem$1","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","log","Log","ContextMenu","PureComponent","_this$container$curre","onMenuOpened","prevProps","prevState","activeSubMenu","_this$container$curre2","_this$container$curre3","options","keyboardIndex","index","mouseIndex","nonPromiseItems","cancellablePromise","state","resolvedMenuItems","pendingItems","parentRect","_this$container$curre4","_this$container$curre5","_this$container$curre6","_this$container$curre7","updatePosition","subMenuParentWidth","subMenuParentHeight","oldTop","oldLeft","top","left","width","height","hasOverflow","isContextMenuChild","oldFocus","newFocus","openSubMenu","newSubMenu","closeAll","onMenuClosed","closeAllMenus","focusIndex","menuItemElements","subMenuTop","subMenuLeft","menuItemElement","pendingElement","LoadingSpinner","menuStyle","showSubmenu","_Fragment","verifiedTop","verifiedLeft","ContextMenu$1","ContextMenuRoot","Component","mouseEvent","contextActions","menu","ContextMenuRoot$1","PluginsContext","createContext","PluginType","isLegacyDashboardPlugin","plugin","isLegacyAuthPlugin","isLegacyTablePlugin","isLegacyPlugin","isDashboardPlugin","isWidgetPlugin","isTablePlugin","isAuthPlugin","isThemePlugin","isPlugin","pluginSupportsType","type","getIconForPlugin","defaultIcon","vsPreview","isValidElement","getThemeDataFromPlugins","pluginMap","themePluginEntries","entry","_ref","pluginName","configs","_ref2","name","baseTheme","styleContent","getThemeKey","usePlugins"],"mappings":"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"}
package/build/index.html CHANGED
@@ -2,7 +2,7 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <base href="./" />
5
- <meta name="ui-version" content="v0.69.0" />
5
+ <meta name="ui-version" content="v0.70.0" />
6
6
  <meta charset="utf-8" />
7
7
  <meta
8
8
  name="viewport"
@@ -12,7 +12,7 @@
12
12
  <link rel="manifest" href="./manifest.json" />
13
13
  <link rel="icon" href="./favicon-cc-app.svg" />
14
14
  <title>Deephaven Embedded Widget</title>
15
- <script type="module" crossorigin src="./assets/index-b8c69d8f.js"></script>
15
+ <script type="module" crossorigin src="./assets/index-4a9bfe03.js"></script>
16
16
  <link rel="modulepreload" crossorigin href="./assets/helpers-de833af9.js">
17
17
  <link rel="modulepreload" crossorigin href="./assets/vendor-3c001961.js">
18
18
  <link rel="stylesheet" href="./assets/vendor-a4479904.css">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/embed-widget",
3
- "version": "0.69.2-beta.1+47830928",
3
+ "version": "0.70.0",
4
4
  "description": "Deephaven Embedded Widget",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -16,15 +16,15 @@
16
16
  "build"
17
17
  ],
18
18
  "dependencies": {
19
- "@deephaven/app-utils": "^0.69.2-beta.1+47830928",
20
- "@deephaven/components": "^0.69.2-beta.1+47830928",
21
- "@deephaven/dashboard-core-plugins": "^0.69.2-beta.1+47830928",
22
- "@deephaven/jsapi-bootstrap": "^0.69.2-beta.1+47830928",
23
- "@deephaven/jsapi-components": "^0.69.2-beta.1+47830928",
19
+ "@deephaven/app-utils": "^0.70.0",
20
+ "@deephaven/components": "^0.70.0",
21
+ "@deephaven/dashboard-core-plugins": "^0.70.0",
22
+ "@deephaven/jsapi-bootstrap": "^0.70.0",
23
+ "@deephaven/jsapi-components": "^0.70.0",
24
24
  "@deephaven/jsapi-types": "1.0.0-dev0.33.1",
25
- "@deephaven/jsapi-utils": "^0.69.2-beta.1+47830928",
26
- "@deephaven/log": "^0.69.2-beta.1+47830928",
27
- "@deephaven/plugin": "^0.69.2-beta.1+47830928",
25
+ "@deephaven/jsapi-utils": "^0.70.0",
26
+ "@deephaven/log": "^0.70.0",
27
+ "@deephaven/plugin": "^0.70.0",
28
28
  "fira": "mozilla/fira#4.202",
29
29
  "react": "^17.0.2",
30
30
  "react-dom": "^17.0.2"
@@ -36,13 +36,13 @@
36
36
  "preview": "vite preview"
37
37
  },
38
38
  "devDependencies": {
39
- "@deephaven/eslint-config": "^0.69.2-beta.1+47830928",
40
- "@deephaven/mocks": "^0.69.2-beta.1+47830928",
41
- "@deephaven/prettier-config": "^0.69.2-beta.1+47830928",
42
- "@deephaven/stylelint-config": "^0.69.2-beta.1+47830928"
39
+ "@deephaven/eslint-config": "^0.70.0",
40
+ "@deephaven/mocks": "^0.70.0",
41
+ "@deephaven/prettier-config": "^0.70.0",
42
+ "@deephaven/stylelint-config": "^0.70.0"
43
43
  },
44
44
  "publishConfig": {
45
45
  "access": "public"
46
46
  },
47
- "gitHead": "478309289f727c560ae92722c96fed964ba98d9d"
47
+ "gitHead": "29353c229ac59589bf92880e6eb4c9f324fb1965"
48
48
  }