@deephaven/embed-chart 0.70.0 → 0.70.1-beta.1

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 (23) hide show
  1. package/build/assets/{App-21248c2d.js → App-e229f69b.js} +2 -2
  2. package/build/assets/{App-21248c2d.js.map → App-e229f69b.js.map} +1 -1
  3. package/build/assets/{Chart-1562304a.js → Chart-e05b8b67.js} +2 -2
  4. package/build/assets/{Chart-1562304a.js.map → Chart-e05b8b67.js.map} +1 -1
  5. package/build/assets/IrisGrid-2fafde84.js +5 -0
  6. package/build/assets/{IrisGrid-e33ce3ae.js.map → IrisGrid-2fafde84.js.map} +1 -1
  7. package/build/assets/{MarkdownEditor-c5f86639.js → MarkdownEditor-595b47f2.js} +2 -2
  8. package/build/assets/{MarkdownEditor-c5f86639.js.map → MarkdownEditor-595b47f2.js.map} +1 -1
  9. package/build/assets/{MarkdownNotebook-d440b3a6.js → MarkdownNotebook-bcbb7a42.js} +2 -2
  10. package/build/assets/{MarkdownNotebook-d440b3a6.js.map → MarkdownNotebook-bcbb7a42.js.map} +1 -1
  11. package/build/assets/index-0861bfb6.js +39 -0
  12. package/build/assets/index-0861bfb6.js.map +1 -0
  13. package/build/assets/{index-7668b360.js → index-ea7acc4a.js} +2 -2
  14. package/build/assets/{index-7668b360.js.map → index-ea7acc4a.js.map} +1 -1
  15. package/build/assets/{useChartTheme-c09ea475.js → useChartTheme-dab52f26.js} +2 -2
  16. package/build/assets/{useChartTheme-c09ea475.js.map → useChartTheme-dab52f26.js.map} +1 -1
  17. package/build/assets/{useConnection-0d2d1a18.js → useConnection-790a10dd.js} +2 -2
  18. package/build/assets/{useConnection-0d2d1a18.js.map → useConnection-790a10dd.js.map} +1 -1
  19. package/build/index.html +1 -1
  20. package/package.json +13 -13
  21. package/build/assets/IrisGrid-e33ce3ae.js +0 -5
  22. package/build/assets/index-6bd1d4b4.js +0 -39
  23. package/build/assets/index-6bd1d4b4.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useChartTheme-c09ea475.js","sources":["../../../utils/dist/ClipboardUtils.js","../../../components/dist/theme/theme-spectrum/index.js","../../../components/dist/SpectrumUtils.js","../../../components/dist/theme/SpectrumThemeProvider.js","../../../components/dist/popper/Popper.js","../../../components/dist/popper/Tooltip.js","../../../react-hooks/dist/useCopyToClipboard.js","../../../components/dist/Button.js","../../../components/dist/CopyButton.js","../../../components/dist/theme/ThemeProvider.js","../../../components/dist/theme/useTheme.js","../../../jsapi-utils/dist/formatters/TableColumnFormatter.js","../../../jsapi-utils/dist/formatters/BooleanColumnFormatter.js","../../../jsapi-utils/dist/formatters/CharColumnFormatter.js","../../../jsapi-utils/dist/formatters/DateTimeColumnFormatter.js","../../../jsapi-utils/dist/formatters/DecimalColumnFormatter.js","../../../jsapi-utils/dist/formatters/DefaultColumnFormatter.js","../../../jsapi-utils/dist/formatters/IntegerColumnFormatter.js","../../../jsapi-utils/dist/formatters/StringColumnFormatter.js","../../../jsapi-utils/dist/Formatter.js","../../../jsapi-utils/dist/FormatterUtils.js","../../../chart/dist/DownsamplingError.js","../../../chart/dist/ChartTheme.js","../../../chart/dist/ChartThemeProvider.js","../../../chart/dist/useChartTheme.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n/**\n * Copy the passed in text to the clipboard.\n * @param text The text to copy\n * @returns Promise Resolved on success, rejected on failure\n */\nexport function copyToClipboard(_x) {\n return _copyToClipboard.apply(this, arguments);\n}\n\n/**\n * Copy the passed in text to the clipboard using the `execCommand` functionality\n * Throws on error/failure\n * @param text The text to copy\n */\nfunction _copyToClipboard() {\n _copyToClipboard = _asyncToGenerator(function* (text) {\n var {\n clipboard\n } = navigator;\n if (clipboard !== undefined) {\n try {\n return navigator.clipboard.writeText(text);\n } catch (_unused) {\n return copyToClipboardExecCommand(text);\n }\n }\n copyToClipboardExecCommand(text);\n });\n return _copyToClipboard.apply(this, arguments);\n}\nexport function copyToClipboardExecCommand(text) {\n var oldFocus = document.activeElement;\n var textArea = document.createElement('textarea');\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n var result = document.execCommand('copy');\n document.body.removeChild(textArea);\n if (oldFocus instanceof HTMLElement) {\n oldFocus.focus();\n }\n if (!result) throw new Error('Unable to execute copy command');\n}\n//# sourceMappingURL=ClipboardUtils.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 palette from \"./theme-spectrum-palette.module.css\";\nimport alias from \"./theme-spectrum-alias.module.css\"; // don't import as module, so that classes can be used directly\nimport \"./theme-spectrum-overrides.css\";\n/**\n * Spectrum theme variables are exported as a map of css class names. The keys\n * come from css classes in the imported css modules. The values are generated\n * by Vite.\n *\n * e.g.\n * {\n * 'dh-spectrum-palette': '_dh-spectrum-palette_abr16_1',\n * 'dh-spectrum-alias': '_dh-spectrum-alias_18mbe_1',\n * }\n */\nexport var themeSpectrumClassesCommon = _objectSpread(_objectSpread({}, palette), alias);\nexport default themeSpectrumClassesCommon;\n//# sourceMappingURL=index.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { theme } from '@react-spectrum/theme-default';\nimport { themeSpectrumClassesCommon } from \"./theme/theme-spectrum/index.js\";\nvar {\n global,\n light,\n dark,\n medium,\n large\n} = theme;\n\n/**\n * Extend light + dark theme variables with DH defaults.\n *\n * A theme is just a mapped collection of css class names that are generated\n * from a collection of css modules.\n *\n * e.g.\n * {\n * global: {\n * spectrum: 'spectrum_9e130c',\n * 'spectrum--medium': 'spectrum--medium_9e130c',\n * 'spectrum--large': 'spectrum--large_9e130c',\n * 'spectrum--darkest': 'spectrum--darkest_9e130c',\n * 'spectrum--dark': 'spectrum--dark_9e130c',\n * 'spectrum--light': 'spectrum--light_9e130c',\n * 'spectrum--lightest': 'spectrum--lightest_9e130c',\n * },\n * light: {\n * 'spectrum--light': 'spectrum--light_a40724',\n * 'dh-spectrum-theme--light': '_dh-spectrum-theme--light_1hblg_22',\n * },\n * dark: {\n * 'spectrum--darkest': 'spectrum--darkest_256eeb',\n * 'dh-spectrum-theme--dark': '_dh-spectrum-theme--dark_f7kge_22',\n * },\n * medium: {\n * 'spectrum--medium': 'spectrum--medium_4b172c',\n * },\n * large: {\n * 'spectrum--large': 'spectrum--large_c40598',\n * },\n * }\n */\n/* eslint-disable import/prefer-default-export */\nexport var themeDHDefault = {\n global,\n light: _objectSpread(_objectSpread({}, light), themeSpectrumClassesCommon),\n dark: _objectSpread(_objectSpread({}, dark), themeSpectrumClassesCommon),\n // scales\n medium,\n large\n};\n//# sourceMappingURL=SpectrumUtils.js.map","import { useState } from 'react';\nimport { Provider } from '@adobe/react-spectrum';\nimport shortid from 'shortid';\nimport { themeDHDefault } from \"../SpectrumUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Wrapper around React Spectrum's theme Provider that provides DH mappings of\n * Spectrum's theme variables to DH's theme variables. Also exposes an optional\n * `isPortal` prop that if provided, adds a unique `data-unique-id` attribute to\n * the Provider. This is needed to force the Provider to render the theme wrapper\n * inside of portals.\n */\nexport function SpectrumThemeProvider(_ref) {\n var {\n children,\n isPortal = false,\n theme = themeDHDefault,\n colorScheme\n } = _ref;\n // a unique ID is used per provider to force it to render the theme wrapper element inside portals\n // based on https://github.com/adobe/react-spectrum/issues/1697#issuecomment-999827266\n // won't be needed if https://github.com/adobe/react-spectrum/pull/2669 is merged\n var [id] = useState(isPortal ? shortid() : null);\n return /*#__PURE__*/_jsx(Provider, {\n UNSAFE_className: \"spectrum-theme-provider\",\n theme: theme,\n colorScheme: colorScheme,\n \"data-unique-id\": id,\n children: children\n });\n}\n//# sourceMappingURL=SpectrumThemeProvider.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from \"../ThemeExport.js\";\nimport \"./Popper.css\";\nimport { SpectrumThemeProvider } from \"../theme/SpectrumThemeProvider.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar POPPER_CLASS_NAME = 'popper';\nclass Popper extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"element\", void 0);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"rAF\", void 0);\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = /*#__PURE__*/React.createRef();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n var {\n isShown\n } = this.props;\n this.state = {\n show: isShown,\n popper: null\n };\n }\n componentDidUpdate(prevProps) {\n var {\n isShown\n } = this.props;\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n componentWillUnmount() {\n this.destroyPopper(false);\n }\n\n // This is the request animation frame handle number\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element) {\n if (element == null || element.clientHeight > 0 || element.clientWidth > 0) {\n return element;\n }\n return this.getVisibleElement(element.parentElement);\n }\n initPopper() {\n var {\n popper\n } = this.state;\n var {\n closeOnBlur,\n referenceObject\n } = this.props;\n if (popper) {\n return;\n }\n if (this.container.current === null) {\n return;\n }\n var {\n options\n } = this.props;\n options = _objectSpread({\n placement: 'auto',\n modifiers: {\n preventOverflow: {\n boundariesElement: 'viewport'\n }\n }\n }, options);\n document.body.appendChild(this.element);\n var parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // If the current focus is not on the .popper or one of its descendants,\n // set the focus to the .popper element. This is necessary for close on\n // blur to work.\n if (closeOnBlur) {\n var popperEl = this.element.querySelector(\".\".concat(POPPER_CLASS_NAME));\n if (popperEl instanceof HTMLElement && !popperEl.contains(document.activeElement)) {\n popperEl.focus();\n }\n }\n });\n this.setState({\n popper\n });\n }\n destroyPopper() {\n var updateState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n cancelAnimationFrame(this.rAF);\n var {\n popper\n } = this.state;\n if (!popper) {\n return;\n }\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n if (updateState) {\n this.setState({\n popper: null\n });\n }\n }\n show() {\n this.initPopper();\n this.setState({\n show: true\n });\n }\n hide() {\n this.setState({\n show: false\n });\n }\n scheduleUpdate() {\n var {\n popper\n } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n handleBlur(e) {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n handleEnter() {\n var {\n onEntered\n } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit() {\n var {\n onExited\n } = this.props;\n var {\n show\n } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent() {\n var {\n className,\n children,\n timeout,\n interactive,\n closeOnBlur\n } = this.props;\n var {\n show\n } = this.state;\n return /*#__PURE__*/_jsx(SpectrumThemeProvider, {\n isPortal: true,\n children: /*#__PURE__*/_jsx(CSSTransition, {\n in: show,\n timeout: timeout,\n classNames: \"popper-transition\",\n onEntered: this.handleEnter,\n onExited: this.handleExit,\n children: /*#__PURE__*/_jsx(\"div\", {\n onClick: e => {\n // stop click events from escaping popper\n e.stopPropagation();\n },\n onKeyDown: e => {\n if (e.key === 'Escape') this.hide();\n },\n className: classNames(POPPER_CLASS_NAME, {\n interactive\n }, className),\n onBlur: closeOnBlur ? this.handleBlur : undefined,\n tabIndex: closeOnBlur ? -1 : undefined,\n role: \"presentation\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"popper-content\",\n children: [children, /*#__PURE__*/_jsx(\"div\", {\n className: \"popper-arrow\",\n \"x-arrow\": \"\"\n })]\n })\n })\n })\n });\n }\n render() {\n var {\n popper\n } = this.state;\n var {\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"popper-parent-container\",\n ref: this.container,\n style: {\n display: 'none'\n },\n \"data-testid\": dataTestId,\n children: popper && /*#__PURE__*/ReactDOM.createPortal(this.renderContent(), this.element)\n });\n }\n}\n_defineProperty(Popper, \"propTypes\", {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n 'data-testid': PropTypes.string\n});\n_defineProperty(Popper, \"defaultProps\", {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered() {\n // no-op\n },\n onExited() {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined\n});\nexport default Popper;\n//# sourceMappingURL=Popper.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport Popper from \"./Popper.js\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('Tooltip');\n/**\n * Component that can be added to an element to automatically display a tooltip.\n * Content is mounted lazily, so don't worry about complex tooltips!\n *\n * Usage:\n * <div className=\"parent-container\">\n * Hover this container to see a tooltip\n * <Tooltip>\n * <div>My tooltip content goes here!</div>\n * </Tooltip>\n * </div>\n */\nclass Tooltip extends Component {\n static handleHidden() {\n Tooltip.shownTooltipCount -= 1;\n if (Tooltip.shownTooltipCount === 0) {\n Tooltip.lastHiddenTime = Date.now();\n }\n }\n static handleShown() {\n Tooltip.shownTooltipCount += 1;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"popper\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"timer\", void 0);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowMouseMove = this.handleWindowMouseMove.bind(this);\n this.handleWheel = this.handleWheel.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.stopShowingTooltip = this.stopShowingTooltip.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.popper = /*#__PURE__*/React.createRef();\n this.parent = null;\n this.timer = null;\n this.state = {\n isShown: false\n };\n }\n componentDidMount() {\n this.startListening();\n var {\n timeout\n } = this.props;\n if (timeout === 0) {\n this.show();\n }\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n isShown: oldIsShown\n } = prevState;\n var {\n isShown\n } = this.state;\n if (isShown !== oldIsShown) {\n if (isShown) {\n Tooltip.handleShown();\n } else {\n Tooltip.handleHidden();\n }\n }\n }\n componentWillUnmount() {\n this.stopListening();\n this.stopListeningWindow();\n this.stopTimer();\n var {\n isShown\n } = this.state;\n if (isShown) {\n Tooltip.handleHidden();\n }\n }\n\n // This is platform dependent of Node/DOM\n // Jest requires Node types\n startListening() {\n if (!this.container.current || !this.container.current.parentElement) {\n log.error(\"Tooltip doesn't have a container or a parent set!\");\n return;\n }\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('mousemove', this.handleMouseMove);\n this.parent.addEventListener('mouseleave', this.handleMouseLeave);\n this.parent.addEventListener('mousedown', this.stopShowingTooltip);\n }\n stopListening() {\n if (!this.parent) {\n return;\n }\n this.parent.removeEventListener('mousemove', this.handleMouseMove);\n this.parent.removeEventListener('mouseleave', this.handleMouseLeave);\n this.parent.removeEventListener('mousedown', this.stopShowingTooltip);\n }\n startListeningWindow() {\n window.addEventListener('mousemove', this.handleWindowMouseMove, true);\n window.addEventListener('contextmenu', this.stopShowingTooltip, true);\n window.addEventListener('wheel', this.handleWheel);\n }\n stopListeningWindow() {\n window.removeEventListener('mousemove', this.handleWindowMouseMove, true);\n window.removeEventListener('contextmenu', this.stopShowingTooltip, true);\n window.removeEventListener('wheel', this.handleWheel);\n }\n handleMouseMove() {\n this.startTimer();\n }\n handleWheel() {\n var {\n isShown\n } = this.state;\n if (this.popper.current && this.parent && isShown) {\n if (!this.popper.current.element.matches(':hover') && !this.parent.matches(':hover')) {\n this.stopTimer();\n this.hide();\n }\n }\n }\n handleMouseLeave() {\n var {\n isShown\n } = this.state;\n this.stopTimer();\n var {\n interactive\n } = this.props;\n if (!interactive && isShown) {\n this.hide();\n }\n }\n handleTimeout() {\n this.show();\n }\n handleWindowMouseMove(event) {\n var mouseX = event.clientX;\n var mouseY = event.clientY;\n var {\n isShown\n } = this.state;\n if (!this.popper.current || !this.parent) {\n return;\n }\n var popperRect = this.popper.current.element.getBoundingClientRect();\n var parentRect = this.parent.getBoundingClientRect();\n if (mouseX >= popperRect.left && mouseX <= popperRect.left + popperRect.width && mouseY >= popperRect.top && mouseY <= popperRect.top + popperRect.height) {\n this.handleMouseMove();\n } else if (mouseX >= parentRect.left && mouseX <= parentRect.left + parentRect.width && mouseY >= parentRect.top && mouseY <= parentRect.top + parentRect.height) {\n this.handleMouseMove();\n } else if (isShown) {\n this.stopTimer();\n this.hide();\n }\n }\n startTimer() {\n this.stopTimer();\n var {\n timeout,\n reshowTimeout\n } = this.props;\n var timerTimeout = timeout;\n if (Tooltip.shownTooltipCount > 0 || Date.now() - Tooltip.lastHiddenTime < Tooltip.triggerReshowThreshold) {\n timerTimeout = reshowTimeout;\n }\n this.timer = window.setTimeout(this.handleTimeout, timerTimeout);\n }\n stopTimer() {\n if (this.timer != null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n show() {\n var {\n isShown\n } = this.state;\n this.stopTimer();\n if (!isShown) {\n var _this$popper$current;\n (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.show();\n this.setState({\n isShown: true\n });\n var {\n interactive\n } = this.props;\n if (interactive) {\n this.startListeningWindow();\n }\n }\n }\n hide() {\n var _this$popper$current2;\n (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.hide();\n this.stopListeningWindow();\n }\n update() {\n var _this$popper$current3;\n (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.scheduleUpdate();\n }\n handleExited() {\n this.setState({\n isShown: false\n });\n var {\n onExited\n } = this.props;\n onExited();\n }\n stopShowingTooltip() {\n var {\n isShown\n } = this.state;\n this.stopTimer();\n if (isShown) {\n this.hide();\n }\n }\n render() {\n var {\n interactive,\n children,\n referenceObject,\n popperClassName,\n 'data-testid': dataTestId,\n onEntered\n } = this.props;\n var {\n isShown\n } = this.state;\n var {\n options\n } = this.props;\n options = _objectSpread({\n placement: 'bottom'\n }, options);\n return /*#__PURE__*/_jsx(\"div\", {\n ref: this.container,\n style: {\n display: 'none'\n },\n \"data-testid\": dataTestId,\n children: /*#__PURE__*/_jsx(Popper, {\n className: classNames(popperClassName, 'popper-tooltip'),\n options: options,\n ref: this.popper,\n onEntered: onEntered,\n onExited: this.handleExited,\n interactive: interactive,\n referenceObject: referenceObject,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"tooltip-content\",\n children: [\" \", isShown && children]\n })\n })\n });\n }\n}\n_defineProperty(Tooltip, \"defaultTimeout\", 500);\n_defineProperty(Tooltip, \"defaultReshowTimeout\", 100);\n_defineProperty(Tooltip, \"triggerReshowThreshold\", 300);\n_defineProperty(Tooltip, \"shownTooltipCount\", 0);\n_defineProperty(Tooltip, \"lastHiddenTime\", Date.now());\n_defineProperty(Tooltip, \"defaultProps\", {\n interactive: false,\n options: {},\n popperClassName: '',\n reshowTimeout: Tooltip.defaultReshowTimeout,\n timeout: Tooltip.defaultTimeout,\n onEntered: () => undefined,\n onExited: () => undefined,\n 'data-testid': undefined\n});\nexport default Tooltip;\n//# sourceMappingURL=Tooltip.js.map","import { useEffect, useState, useRef, useCallback } from 'react';\nimport { copyToClipboard } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nvar TIMEOUT_DELAY = 3500;\nvar log = Log.module('useCopyToClipboard');\nexport default function useCopyToClipboard() {\n var [copied, setCopied] = useState(false);\n var copiedTimeout = useRef(null);\n var copy = useCallback(value => {\n copyToClipboard(value).then(() => {\n setCopied(true);\n }).catch(e => log.error(\"Unable to copy \".concat(value), '\\n', e));\n }, []);\n useEffect(() => {\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current);\n if (copied) {\n copiedTimeout.current = setTimeout(() => {\n setCopied(false);\n }, TIMEOUT_DELAY);\n }\n return () => {\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current);\n };\n }, [copied]);\n return [copied, copy];\n}\n//# sourceMappingURL=useCopyToClipboard.js.map","var _excluded = [\"kind\", \"variant\", \"type\", \"tooltip\", \"icon\", \"disabled\", \"active\", \"onClick\", \"onContextMenu\", \"onMouseDown\", \"onMouseUp\", \"onMouseEnter\", \"onMouseLeave\", \"onKeyDown\", \"className\", \"style\", \"children\", \"tabIndex\", \"data-testid\", \"aria-label\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Tooltip } from \"./popper/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar BUTTON_KINDS = ['primary', 'secondary', 'tertiary', 'success', 'danger', 'inline', 'ghost'];\nvar VARIANT_KINDS = ['group-end'];\nfunction getClassName(kind, iconOnly) {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'btn-link-icon-only': iconOnly\n });\n }\n}\nfunction getVariantClasses(kind) {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\nvar Button = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n kind,\n variant,\n type,\n tooltip,\n icon,\n disabled = false,\n active,\n onClick,\n onContextMenu,\n onMouseDown,\n onMouseUp,\n onMouseEnter,\n onMouseLeave,\n onKeyDown,\n className,\n style,\n children,\n tabIndex,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n var iconElem;\n if (icon) {\n iconElem = /*#__PURE__*/React.isValidElement(icon) ? icon : /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n }\n\n // not entirely accurate, as button can have non-visible children\n var iconOnly = iconElem != null && children == null;\n var btnClassName = getClassName(kind, iconOnly);\n var tooltipElem;\n if (tooltip !== undefined) {\n tooltipElem = typeof tooltip === 'string' ? /*#__PURE__*/_jsx(Tooltip, {\n children: tooltip\n }) : tooltip;\n }\n\n // use tooltip as arial-label for iconOnly buttons only\n // if tooltip is also a string and aria-label is not set\n var ariaLabelString = ariaLabel;\n if (ariaLabel === undefined && iconOnly && tooltip != null && typeof tooltip === 'string') {\n ariaLabelString = tooltip;\n }\n var button = /*#__PURE__*/_jsxs(\"button\", _objectSpread(_objectSpread({\n \"data-testid\": dataTestId,\n ref: ref\n // eslint-disable-next-line react/button-has-type\n ,\n type: type,\n className: classNames('btn', btnClassName, variantClassName, {\n active\n }, className),\n onClick: onClick,\n onContextMenu: onContextMenu,\n onMouseUp: onMouseUp,\n onMouseDown: onMouseDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onKeyDown: onKeyDown,\n style: style,\n disabled: disabled,\n tabIndex: tabIndex,\n \"aria-label\": ariaLabelString\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, rest), {}, {\n children: [icon && iconElem, children, tooltip != null && !disabled && tooltipElem]\n }));\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled && tooltip != null ? /*#__PURE__*/_jsxs(\"span\", {\n className: \"btn-disabled-wrapper\",\n children: [button, tooltipElem]\n }) : button;\n});\nButton.displayName = 'Button';\nButton.propTypes = {\n kind: PropTypes.oneOf(BUTTON_KINDS).isRequired,\n variant: PropTypes.oneOf(VARIANT_KINDS),\n type: PropTypes.oneOf(['submit', 'reset', 'button']),\n tooltip(props) {\n var {\n tooltip,\n icon,\n children\n } = props;\n if (tooltip === undefined && icon != null && children == null) {\n return new Error('Tooltip is required for icon only buttons');\n }\n return null;\n },\n icon(props) {\n var {\n children,\n icon\n } = props;\n if (icon == null && children == null) {\n return new Error('Icon is required if no children are provided');\n }\n if (children == null && ! /*#__PURE__*/React.isValidElement(icon) && (icon == null || icon.iconName === '' || icon.iconName == null)) {\n return new Error('Icon must be react element or fontawesome IconDefinition');\n }\n return null;\n },\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n onClick(props) {\n var {\n onClick,\n type\n } = props;\n if (type === 'button' && typeof onClick !== 'function') {\n return new Error('type button requires an onClick function');\n }\n if (onClick !== undefined && typeof onClick !== 'function') {\n return new Error('onClick must be a function');\n }\n return null;\n },\n onContextMenu: PropTypes.func,\n onMouseUp: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onKeyDown: PropTypes.func,\n tabIndex: PropTypes.number,\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n 'data-testid': PropTypes.string\n};\nButton.defaultProps = {\n type: 'button',\n onClick: undefined,\n onContextMenu: undefined,\n onMouseUp: undefined,\n onMouseDown: undefined,\n onMouseEnter: undefined,\n onMouseLeave: undefined,\n onKeyDown: undefined,\n variant: undefined,\n tooltip: undefined,\n icon: undefined,\n disabled: false,\n active: undefined,\n tabIndex: undefined,\n children: undefined,\n className: undefined,\n style: {},\n 'data-testid': undefined\n};\nexport default Button;\n//# sourceMappingURL=Button.js.map","import React from 'react';\nimport { vsPassFilled, vsCopy } from '@deephaven/icons';\nimport { useCopyToClipboard } from '@deephaven/react-hooks';\nimport Button from \"./Button.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Button that has a copy icon, and copies text to a clipboard when clicked.\n */\nfunction CopyButton(_ref) {\n var {\n copy,\n kind = 'ghost',\n tooltip = 'Copy',\n className,\n style,\n 'data-testid': dataTestId,\n children\n } = _ref;\n var [copied, copyToClipboard] = useCopyToClipboard();\n return /*#__PURE__*/_jsx(Button, {\n kind: kind,\n className: className,\n style: style,\n \"data-testid\": dataTestId,\n icon: copied ? vsPassFilled : vsCopy,\n tooltip: copied ? 'Copied' : tooltip,\n onClick: () => {\n copyToClipboard(typeof copy === 'function' ? copy() : copy);\n },\n children: children\n });\n}\nexport default CopyButton;\n//# sourceMappingURL=CopyButton.js.map","import { createContext, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { DEFAULT_DARK_THEME_KEY, DEFAULT_PRELOAD_DATA_VARIABLES } from \"./ThemeModel.js\";\nimport { calculatePreloadStyleContent, getActiveThemes, getDefaultBaseThemes, getThemePreloadData, setThemePreloadData, overrideSVGFillColors } from \"./ThemeUtils.js\";\nimport { SpectrumThemeProvider } from \"./SpectrumThemeProvider.js\";\nimport \"./theme-svg.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ThemeProvider');\nexport var ThemeContext = /*#__PURE__*/createContext(null);\nexport function ThemeProvider(_ref) {\n var {\n themes: customThemes,\n defaultPreloadValues = DEFAULT_PRELOAD_DATA_VARIABLES,\n children\n } = _ref;\n var baseThemes = useMemo(() => getDefaultBaseThemes(), []);\n var [value, setValue] = useState(null);\n var [selectedThemeKey, setSelectedThemeKey] = useState(() => {\n var _getThemePreloadData$, _getThemePreloadData;\n return (_getThemePreloadData$ = (_getThemePreloadData = getThemePreloadData()) === null || _getThemePreloadData === void 0 ? void 0 : _getThemePreloadData.themeKey) !== null && _getThemePreloadData$ !== void 0 ? _getThemePreloadData$ : DEFAULT_DARK_THEME_KEY;\n });\n\n // Calculate active themes once a non-null themes array is provided.\n var activeThemes = useMemo(() => customThemes == null ? null : getActiveThemes(selectedThemeKey, {\n base: baseThemes,\n custom: customThemes !== null && customThemes !== void 0 ? customThemes : []\n }), [baseThemes, selectedThemeKey, customThemes]);\n var themes = useMemo(() => [...baseThemes, ...(customThemes !== null && customThemes !== void 0 ? customThemes : [])], [baseThemes, customThemes]);\n useEffect(function updateThemePreloadData() {\n // Don't update preload data until themes have been loaded and activated\n if (activeThemes == null || customThemes == null) {\n return;\n }\n\n // Override fill color for certain inline SVGs (the originals are provided\n // by theme-svg.scss)\n overrideSVGFillColors(defaultPreloadValues);\n var preloadStyleContent = calculatePreloadStyleContent(defaultPreloadValues);\n log.debug2('updateThemePreloadData:', {\n active: activeThemes.map(theme => theme.themeKey),\n custom: customThemes.map(theme => theme.themeKey),\n preloadStyleContent,\n selectedThemeKey\n });\n setThemePreloadData({\n themeKey: selectedThemeKey,\n preloadStyleContent\n });\n }, [activeThemes, selectedThemeKey, customThemes, defaultPreloadValues]);\n useEffect(() => {\n setValue({\n activeThemes,\n selectedThemeKey,\n themes,\n setSelectedThemeKey\n });\n }, [activeThemes, selectedThemeKey, themes]);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [activeThemes == null ? null : /*#__PURE__*/_jsx(_Fragment, {\n children: activeThemes.map(theme => /*#__PURE__*/_jsx(\"style\", {\n \"data-theme-key\": theme.themeKey,\n children: theme.styleContent\n }, theme.themeKey))\n }), value == null ? null : /*#__PURE__*/_jsx(ThemeContext.Provider, {\n value: value,\n children: /*#__PURE__*/_jsx(SpectrumThemeProvider, {\n children: children\n })\n })]\n });\n}\nexport default ThemeProvider;\n//# sourceMappingURL=ThemeProvider.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ThemeContext } from \"./ThemeProvider.js\";\n/**\n * Hook to get the current `ThemeContextValue`.\n */\nexport function useTheme() {\n return useContextOrThrow(ThemeContext, 'No ThemeContext value found. Component must be wrapped in a ThemeContext.Provider');\n}\nexport default useTheme;\n//# sourceMappingURL=useTheme.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint class-methods-use-this: \"off\" */\n/**\n * Default column data formatter. Just interpolates the value as a string and returns.\n * Extend this class and register with TableUtils to make use of it.\n */\n\nexport class TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n return true;\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n throw new Error('isSameFormat not implemented');\n }\n\n /**\n * Create and return a Format object\n * @param label The label of the format object\n * @param formatString Format string to use for the format\n * @param type The type of column to use for this format\n * @returns A format object\n */\n static makeFormat(label, formatString, type) {\n return {\n label,\n formatString,\n type\n };\n }\n\n /**\n * @param value The value to format\n * @param format Optional format object with value transformation options\n * @returns String the formatted text string of the value passed in.\n */\n format(value, format) {\n return '';\n }\n}\n_defineProperty(TableColumnFormatter, \"TYPE_GLOBAL\", 'type-global');\n_defineProperty(TableColumnFormatter, \"TYPE_CONTEXT_PRESET\", 'type-context-preset');\n_defineProperty(TableColumnFormatter, \"TYPE_CONTEXT_CUSTOM\", 'type-context-custom');\nexport default TableColumnFormatter;\n//# sourceMappingURL=TableColumnFormatter.js.map","/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\n/** Column formatter for booleans */\nclass BooleanColumnFormatter extends TableColumnFormatter {\n format(value) {\n switch (value) {\n case 1:\n case true:\n return 'true';\n case 0:\n case false:\n return 'false';\n default:\n return '';\n }\n }\n}\nexport default BooleanColumnFormatter;\n//# sourceMappingURL=BooleanColumnFormatter.js.map","/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\n/** Column formatter for chars */\nclass CharColumnFormatter extends TableColumnFormatter {\n format(value) {\n return String.fromCharCode(value);\n }\n}\nexport default CharColumnFormatter;\n//# sourceMappingURL=CharColumnFormatter.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nvar log = Log.module('DateTimeColumnFormatter');\nexport class DateTimeColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n if (format.formatString == null) {\n return false;\n }\n try {\n dh.i18n.DateTimeFormat.format(format.formatString, new Date());\n return true;\n } catch (e) {\n return false;\n }\n }\n static makeFormat(label, formatString) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;\n return {\n label,\n formatString,\n type\n };\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return formatA === formatB || formatA !== null && formatB !== null && formatA.type === formatB.type && formatA.formatString === formatB.formatString;\n }\n static makeGlobalFormatStringMap(showTimeZone, showTSeparator) {\n var separator = showTSeparator ? \"'T'\" : ' ';\n var tz = showTimeZone ? ' z' : '';\n return new Map([['yyyy-MM-dd HH:mm:ss', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSS\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSSSSSSSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSSSSSSSS\").concat(tz)]]);\n }\n static getGlobalFormats(showTimeZone, showTSeparator) {\n var formatStringMap = DateTimeColumnFormatter.makeGlobalFormatStringMap(showTimeZone, showTSeparator);\n return [...formatStringMap.keys()];\n }\n static makeFormatStringMap(showTimeZone, showTSeparator) {\n var separator = showTSeparator !== undefined && showTSeparator ? \"'T'\" : ' ';\n var tz = showTimeZone !== undefined && showTimeZone ? ' z' : '';\n return new Map([['yyyy-MM-dd', \"yyyy-MM-dd\".concat(tz)], ['MM-dd-yyyy', \"MM-dd-yyyy\".concat(tz)], ['HH:mm:ss', \"HH:mm:ss\".concat(tz)], ['HH:mm:ss.SSS', \"HH:mm:ss.SSS\".concat(tz)], ['HH:mm:ss.SSSSSSSSS', \"HH:mm:ss.SSSSSSSSS\".concat(tz)], ['yyyy-MM-dd HH:mm:ss', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSS\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSSSSSSSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSSSSSSSS\").concat(tz)]]);\n }\n static getFormats(showTimeZone, showTSeparator) {\n var formatStringMap = DateTimeColumnFormatter.makeFormatStringMap(showTimeZone, showTSeparator);\n return [...formatStringMap.keys()];\n }\n constructor(dh) {\n var {\n timeZone: timeZoneParam = '',\n showTimeZone = true,\n showTSeparator = false,\n defaultDateTimeFormatString = DateTimeColumnFormatter.DEFAULT_DATETIME_FORMAT_STRING\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"dhTimeZone\", void 0);\n _defineProperty(this, \"defaultDateTimeFormatString\", void 0);\n _defineProperty(this, \"showTimeZone\", void 0);\n _defineProperty(this, \"showTSeparator\", void 0);\n _defineProperty(this, \"formatStringMap\", void 0);\n var timeZone = timeZoneParam || DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID;\n try {\n this.dhTimeZone = dh.i18n.TimeZone.getTimeZone(timeZone);\n } catch (e) {\n log.error('Unsupported time zone id', timeZone);\n this.dhTimeZone = dh.i18n.TimeZone.getTimeZone(DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID);\n }\n this.dh = dh;\n this.defaultDateTimeFormatString = defaultDateTimeFormatString;\n this.showTimeZone = showTimeZone;\n this.showTSeparator = showTSeparator;\n this.formatStringMap = DateTimeColumnFormatter.makeFormatStringMap(showTimeZone, showTSeparator);\n }\n getEffectiveFormatString(baseFormatString) {\n var _this$formatStringMap;\n return (_this$formatStringMap = this.formatStringMap.get(baseFormatString)) !== null && _this$formatStringMap !== void 0 ? _this$formatStringMap : baseFormatString;\n }\n format(value) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var baseFormatString = format.formatString != null && format.formatString !== '' ? format.formatString : this.defaultDateTimeFormatString;\n var formatString = this.getEffectiveFormatString(baseFormatString);\n try {\n return this.dh.i18n.DateTimeFormat.format(formatString, value, this.dhTimeZone);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n_defineProperty(DateTimeColumnFormatter, \"DEFAULT_DATETIME_FORMAT_STRING\", 'yyyy-MM-dd HH:mm:ss.SSS');\n_defineProperty(DateTimeColumnFormatter, \"DEFAULT_TIME_ZONE_ID\", 'America/New_York');\nexport default DateTimeColumnFormatter;\n//# sourceMappingURL=DateTimeColumnFormatter.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nvar log = Log.module('DecimalColumnFormatter');\nexport class DecimalColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n if (format.formatString == null) {\n return false;\n }\n try {\n dh.i18n.NumberFormat.format(format.formatString, 0);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Create a DecimalColumnFormat object with the parameters specified\n * @param label Label for the format\n * @param formatString Format string for the format\n * @param multiplier Optional multiplier for the formatter\n * @param type Type of format created\n * @returns DecimalColumnFormat object\n */\n static makeFormat(label, formatString) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;\n var multiplier = arguments.length > 3 ? arguments[3] : undefined;\n return {\n label,\n type,\n formatString,\n multiplier\n };\n }\n\n /**\n * Convenient function to create a DecimalFormatObject with Preset type set\n * @param label Label for this format object\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns DecimalColumnFormat object\n */\n static makePresetFormat(label) {\n var formatString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var multiplier = arguments.length > 2 ? arguments[2] : undefined;\n return DecimalColumnFormatter.makeFormat(label, formatString, TableColumnFormatter.TYPE_CONTEXT_PRESET, multiplier);\n }\n\n /**\n * Convenient function to create a DecimalFormatObject with a default 'Custom Format' label and Custom type\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns DecimalColumnFormat object\n */\n static makeCustomFormat() {\n var formatString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var multiplier = arguments.length > 1 ? arguments[1] : undefined;\n return DecimalColumnFormatter.makeFormat('Custom Format', formatString, TableColumnFormatter.TYPE_CONTEXT_CUSTOM, multiplier);\n }\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return formatA === formatB || formatA != null && formatB != null && formatA.type === formatB.type && formatA.formatString === formatB.formatString && formatA.multiplier === formatB.multiplier;\n }\n constructor(dh) {\n var {\n defaultFormatString = DecimalColumnFormatter.DEFAULT_FORMAT_STRING\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n _defineProperty(this, \"defaultFormatString\", void 0);\n _defineProperty(this, \"dh\", void 0);\n this.dh = dh;\n this.defaultFormatString = defaultFormatString;\n }\n\n /**\n * Format a value with the provided format object\n * @param valueParam Value to format\n * @param format Format object\n * @returns Formatted string\n */\n format(valueParam) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var formatString = format.formatString != null && format.formatString !== '' ? format.formatString : this.defaultFormatString;\n var value = format.multiplier != null && format.multiplier !== 0 ? valueParam * format.multiplier : valueParam;\n try {\n return this.dh.i18n.NumberFormat.format(formatString, value);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n_defineProperty(DecimalColumnFormatter, \"DEFAULT_FORMAT_STRING\", '###,##0.0000');\n_defineProperty(DecimalColumnFormatter, \"FORMAT_PERCENT\", DecimalColumnFormatter.makePresetFormat('Percent', '##0.00%'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_BASIS_POINTS\", DecimalColumnFormatter.makePresetFormat('Basis Points', '###,##0 bp', 10000));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_MILLIONS\", DecimalColumnFormatter.makePresetFormat('Millions', '###,##0.000 mm', 0.000001));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_SCIENTIFIC_NOTATION\", DecimalColumnFormatter.makePresetFormat('Scientific Notation', '0.0000E0'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_ROUND\", DecimalColumnFormatter.makePresetFormat('Round', '###,##0'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_ROUND_TWO_DECIMALS\", DecimalColumnFormatter.makePresetFormat('0.00', '###,##0.00'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_ROUND_FOUR_DECIMALS\", DecimalColumnFormatter.makePresetFormat('0.0000', '###,##0.0000'));\nexport default DecimalColumnFormatter;\n//# sourceMappingURL=DecimalColumnFormatter.js.map","/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nclass DefaultColumnFormatter extends TableColumnFormatter {\n format(value) {\n return \"\".concat(value);\n }\n}\nexport default DefaultColumnFormatter;\n//# sourceMappingURL=DefaultColumnFormatter.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nvar log = Log.module('IntegerColumnFormatter');\n/** Column formatter for integers/whole numbers */\nexport class IntegerColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n if (format.formatString == null) {\n return false;\n }\n try {\n dh.i18n.NumberFormat.format(format.formatString, 0);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Create an IntegerColumnFormat object with the parameters specified\n * @param label Label for the format\n * @param formatString Format string for the format\n * @param multiplier Optional multiplier for the formatter\n * @param type Type of format created\n * @returns IntegerColumnFormat object\n */\n static makeFormat(label, formatString) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;\n var multiplier = arguments.length > 3 ? arguments[3] : undefined;\n return {\n label,\n type,\n formatString,\n multiplier\n };\n }\n\n /**\n * Convenient function to create a IntegerFormatObject with Preset type set\n * @param label Label for this format object\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns IntegerColumnFormat object\n */\n static makePresetFormat(label) {\n var formatString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var multiplier = arguments.length > 2 ? arguments[2] : undefined;\n return IntegerColumnFormatter.makeFormat(label, formatString, TableColumnFormatter.TYPE_CONTEXT_PRESET, multiplier);\n }\n\n /**\n * Convenient function to create a IntegerFormatObject with a default 'Custom Format' label and Custom type\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns IntegerColumnFormat object\n */\n static makeCustomFormat() {\n var formatString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var multiplier = arguments.length > 1 ? arguments[1] : undefined;\n return IntegerColumnFormatter.makeFormat('Custom Format', formatString, TableColumnFormatter.TYPE_CONTEXT_CUSTOM, multiplier);\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return formatA === formatB || formatA != null && formatB != null && formatA.type === formatB.type && formatA.formatString === formatB.formatString && formatA.multiplier === formatB.multiplier;\n }\n constructor(dh) {\n var {\n defaultFormatString = IntegerColumnFormatter.DEFAULT_FORMAT_STRING\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"defaultFormatString\", void 0);\n this.dh = dh;\n this.defaultFormatString = defaultFormatString;\n }\n\n /**\n * Format a value with the provided format object\n * @param valueParam Value to format\n * @param format Format object\n * @returns Formatted string\n */\n format(valueParam) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var formatString = format.formatString != null && format.formatString !== '' ? format.formatString : this.defaultFormatString;\n var value = format.multiplier != null && format.multiplier !== 0 ? valueParam * format.multiplier : valueParam;\n try {\n return this.dh.i18n.NumberFormat.format(formatString, value);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n_defineProperty(IntegerColumnFormatter, \"DEFAULT_FORMAT_STRING\", '###,##0');\n_defineProperty(IntegerColumnFormatter, \"FORMAT_MILLIONS\", IntegerColumnFormatter.makePresetFormat('Millions', '###,##0.000 mm', 0.000001));\n_defineProperty(IntegerColumnFormatter, \"FORMAT_SCIENTIFIC_NOTATION\", IntegerColumnFormatter.makePresetFormat('Scientific Notation', '0.0000E0'));\nexport default IntegerColumnFormatter;\n//# sourceMappingURL=IntegerColumnFormatter.js.map","/* eslint class-methods-use-this: \"off\" */\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\n/** Column formatter for strings */\nexport class StringColumnFormatter extends TableColumnFormatter {\n format(value) {\n return value;\n }\n}\nexport default StringColumnFormatter;\n//# sourceMappingURL=StringColumnFormatter.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 TableUtils from \"./TableUtils.js\";\nimport { BooleanColumnFormatter, CharColumnFormatter, DateTimeColumnFormatter, DecimalColumnFormatter, DefaultColumnFormatter, IntegerColumnFormatter, StringColumnFormatter } from \"./formatters/index.js\";\nexport class Formatter {\n /**\n * Converts FormattingRule[] to Map\n * @param columnFormattingRules Array or column formatting rules\n * @returns Map of columnName-to-format Maps indexed by normalized dataType\n */\n static makeColumnFormatMap(columnFormattingRules) {\n if (columnFormattingRules == null) {\n return new Map();\n }\n return columnFormattingRules.reduce((map, next) => {\n var dataType = TableUtils.getNormalizedType(next.columnType);\n if (dataType === null) {\n return map;\n }\n if (!map.has(dataType)) {\n map.set(dataType, new Map());\n }\n var formatMap = map.get(dataType);\n formatMap === null || formatMap === void 0 ? void 0 : formatMap.set(next.columnName, next.format);\n return map;\n }, new Map());\n }\n\n /**\n * Creates a column formatting rule\n * @param columnType Normalized data type\n * @param columnName Column name\n * @param format Format object\n */\n static makeColumnFormattingRule(columnType, columnName, format) {\n return {\n columnType,\n columnName,\n format\n };\n }\n\n /**\n * @param dh JSAPI instance\n * @param columnFormattingRules Optional array of column formatting rules\n * @param dateTimeOptions Optional object with DateTime configuration\n * @param decimalFormatOptions Optional object with Decimal configuration\n * @param integerFormatOptions Optional object with Integer configuration\n * @param truncateNumbersWithPound Determine if numbers should be truncated w/ repeating # instead of ellipsis at the end\n */\n constructor(dh) {\n var columnFormattingRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var dateTimeOptions = arguments.length > 2 ? arguments[2] : undefined;\n var decimalFormatOptions = arguments.length > 3 ? arguments[3] : undefined;\n var integerFormatOptions = arguments.length > 4 ? arguments[4] : undefined;\n var truncateNumbersWithPound = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var showEmptyStrings = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;\n var showNullStrings = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : true;\n _defineProperty(this, \"defaultColumnFormatter\", void 0);\n _defineProperty(this, \"typeFormatterMap\", void 0);\n _defineProperty(this, \"columnFormatMap\", void 0);\n _defineProperty(this, \"truncateNumbersWithPound\", void 0);\n _defineProperty(this, \"showEmptyStrings\", void 0);\n _defineProperty(this, \"showNullStrings\", void 0);\n // Formatting order:\n // - columnFormatMap[type][name]\n // - typeFormatterMap[type]\n // - defaultColumnFormatter\n\n this.defaultColumnFormatter = new DefaultColumnFormatter();\n\n // Default formatters by data type\n this.typeFormatterMap = new Map([[TableUtils.dataType.BOOLEAN, new BooleanColumnFormatter()], [TableUtils.dataType.CHAR, new CharColumnFormatter()], [TableUtils.dataType.DATETIME, new DateTimeColumnFormatter(dh, dateTimeOptions)], [TableUtils.dataType.DECIMAL, new DecimalColumnFormatter(dh, decimalFormatOptions)], [TableUtils.dataType.INT, new IntegerColumnFormatter(dh, integerFormatOptions)], [TableUtils.dataType.STRING, new StringColumnFormatter()]]);\n\n // Formats indexed by data type and column name\n this.columnFormatMap = Formatter.makeColumnFormatMap(columnFormattingRules);\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n }\n /**\n * Gets columnFormatMap indexed by name for a given column type, creates new Map entry if necessary\n * @param columnType column type\n * @param createIfNecessary create new entry if true\n * @returns Map of format strings indexed by column name or undefined if it doesn't exist\n */\n getColumnFormatMapForType(columnType) {\n var createIfNecessary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var dataType = TableUtils.getNormalizedType(columnType);\n if (dataType === null) {\n return undefined;\n }\n if (createIfNecessary && !this.columnFormatMap.has(dataType)) {\n this.columnFormatMap.set(dataType, new Map());\n }\n return this.columnFormatMap.get(dataType);\n }\n\n /**\n * Gets a column format object for a given column type and name\n * @param columnType column type\n * @param columnName column name\n * @returns format object or null for Default\n */\n getColumnFormat(columnType, columnName) {\n var _columnFormatMap$get;\n var columnFormatMap = this.getColumnFormatMapForType(columnType);\n return (_columnFormatMap$get = columnFormatMap === null || columnFormatMap === void 0 ? void 0 : columnFormatMap.get(columnName)) !== null && _columnFormatMap$get !== void 0 ? _columnFormatMap$get : null;\n }\n getColumnTypeFormatter(columnType) {\n var dataType = TableUtils.getNormalizedType(columnType);\n var columnTypeFormatter = this.defaultColumnFormatter;\n if (dataType) {\n var _this$typeFormatterMa;\n columnTypeFormatter = (_this$typeFormatterMa = this.typeFormatterMap.get(dataType)) !== null && _this$typeFormatterMa !== void 0 ? _this$typeFormatterMa : columnTypeFormatter;\n }\n return columnTypeFormatter;\n }\n\n /**\n * Gets formatted string for a given value, column type and name\n * @param value Value to format\n * @param columnType Column type used to determine the formatting settings\n * @param columnName Column name used to determine the formatting settings\n * @param formatOverride Format object passed to the formatter in place of the format defined in columnFormatMap\n */\n getFormattedString(value, columnType) {\n var columnName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var formatOverride = arguments.length > 3 ? arguments[3] : undefined;\n if (value == null) {\n return '';\n }\n var formatter = this.getColumnTypeFormatter(columnType);\n var format = formatOverride || this.getColumnFormat(columnType, columnName);\n return formatter.format(value, format !== null && format !== void 0 ? format : undefined);\n }\n\n /**\n * Gets the timeZone name\n * @returns The time zone name E.g. America/New_York\n */\n get timeZone() {\n var _formatter$dhTimeZone;\n var formatter = this.typeFormatterMap.get(TableUtils.dataType.DATETIME);\n return formatter === null || formatter === void 0 ? void 0 : (_formatter$dhTimeZone = formatter.dhTimeZone) === null || _formatter$dhTimeZone === void 0 ? void 0 : _formatter$dhTimeZone.id;\n }\n}\nexport default Formatter;\n//# sourceMappingURL=Formatter.js.map","import { TableColumnFormatter } from \"./formatters/index.js\";\nexport function getColumnFormats(settings) {\n if (settings && settings.formatter) {\n var {\n formatter\n } = settings;\n return formatter;\n }\n return undefined;\n}\nexport function getDateTimeFormatterOptions(settings) {\n return {\n timeZone: settings === null || settings === void 0 ? void 0 : settings.timeZone,\n defaultDateTimeFormatString: settings === null || settings === void 0 ? void 0 : settings.defaultDateTimeFormat,\n showTimeZone: settings === null || settings === void 0 ? void 0 : settings.showTimeZone,\n showTSeparator: settings === null || settings === void 0 ? void 0 : settings.showTSeparator\n };\n}\n\n/**\n * Check if the formatter has a custom format defined for the column name and type\n * @param formatter Formatter to check\n * @param columnName Column name\n * @param columnType Column type\n * @returns True, if a custom format is defined\n */\nexport function isCustomColumnFormatDefined(formatter, columnName, columnType) {\n var columnFormat = formatter.getColumnFormat(columnType, columnName);\n return columnFormat != null && (columnFormat.type === TableColumnFormatter.TYPE_CONTEXT_PRESET || columnFormat.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM);\n}\nexport default {\n getColumnFormats,\n getDateTimeFormatterOptions,\n isCustomColumnFormatDefined\n};\n//# sourceMappingURL=FormatterUtils.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class DownsamplingError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isDownsamplingError\", true);\n }\n}\nexport default DownsamplingError;\n//# sourceMappingURL=DownsamplingError.js.map","import { getExpressionRanges, resolveCssVariablesInRecord } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { ColorUtils } from '@deephaven/utils';\nimport chartThemeRaw from \"./ChartTheme.module.css\";\nvar log = Log.module('ChartTheme');\nexport function defaultChartTheme() {\n var _chartTheme$colorway;\n var chartTheme = resolveCssVariablesInRecord(chartThemeRaw);\n\n // The color normalization in `resolveCssVariablesInRecord` won't work for\n // colorway since it is an array of colors. We need to explicitly normalize\n // each color expression\n chartTheme.colorway = getExpressionRanges((_chartTheme$colorway = chartTheme.colorway) !== null && _chartTheme$colorway !== void 0 ? _chartTheme$colorway : '').map(_ref => {\n var [start, end] = _ref;\n return ColorUtils.normalizeCssColor(chartTheme.colorway.substring(start, end + 1));\n }).join(' ');\n log.debug2('Chart theme:', chartThemeRaw);\n log.debug2('Chart theme derived:', chartTheme);\n return Object.freeze({\n paper_bgcolor: chartTheme['paper-bgcolor'],\n plot_bgcolor: chartTheme['plot-bgcolor'],\n title_color: chartTheme['title-color'],\n legend_color: chartTheme['legend-color'],\n colorway: chartTheme.colorway,\n gridcolor: chartTheme.gridcolor,\n linecolor: chartTheme.linecolor,\n zerolinecolor: chartTheme.zerolinecolor,\n error_band_line_color: chartTheme['error-band-line-color'],\n ohlc_increasing: chartTheme['ohlc-increasing'],\n ohlc_decreasing: chartTheme['ohlc-decreasing'],\n // Geo\n coastline_color: chartTheme['coastline-color'],\n land_color: chartTheme['land-color'],\n ocean_color: chartTheme['ocean-color'],\n lake_color: chartTheme['lake-color'],\n river_color: chartTheme['river-color']\n });\n}\nexport default defaultChartTheme;\n//# sourceMappingURL=ChartTheme.js.map","import { createContext, useMemo } from 'react';\nimport { useTheme } from '@deephaven/components';\nimport defaultChartTheme from \"./ChartTheme.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ChartThemeContext = /*#__PURE__*/createContext(null);\n/*\n * Provides a chart theme based on the active themes from the ThemeProvider.\n */\nexport function ChartThemeProvider(_ref) {\n var {\n children\n } = _ref;\n var {\n activeThemes\n } = useTheme();\n var chartTheme = useMemo(defaultChartTheme, [activeThemes]);\n return /*#__PURE__*/_jsx(ChartThemeContext.Provider, {\n value: chartTheme,\n children: children\n });\n}\n//# sourceMappingURL=ChartThemeProvider.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ChartThemeContext } from \"./ChartThemeProvider.js\";\n/**\n * Hook to get the current `ChartThemeContextValue`.\n */\nexport function useChartTheme() {\n return useContextOrThrow(ChartThemeContext, 'No ChartThemeContext value found.');\n}\nexport default useChartTheme;\n//# sourceMappingURL=useChartTheme.js.map"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","_asyncToGenerator","fn","self","args","err","copyToClipboard","_x","_copyToClipboard","text","clipboard","copyToClipboardExecCommand","oldFocus","textArea","result","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","_defineProperty","obj","_toPropertyKey","_toPrimitive","input","hint","prim","res","themeSpectrumClassesCommon","palette","alias","global","light","dark","medium","large","theme","themeDHDefault","SpectrumThemeProvider","_ref","children","isPortal","colorScheme","id","useState","shortid","_jsx","Provider","POPPER_CLASS_NAME","Popper","Component","props","React","isShown","prevProps","element","popper","closeOnBlur","referenceObject","options","parent","PopperJs","popperEl","updateState","onEntered","onExited","show","className","timeout","interactive","CSSTransition","e","classNames","_jsxs","dataTestId","ReactDOM","PropTypes","ThemeExport","Popper$1","log","Log","Tooltip","prevState","oldIsShown","event","mouseX","mouseY","popperRect","parentRect","reshowTimeout","timerTimeout","_this$popper$current","_this$popper$current2","_this$popper$current3","popperClassName","Tooltip$1","TIMEOUT_DELAY","useCopyToClipboard","copied","setCopied","copiedTimeout","useRef","copy","useCallback","useEffect","_excluded","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","ref","variant","type","tooltip","icon","disabled","active","onClick","onContextMenu","onMouseDown","onMouseUp","onMouseEnter","onMouseLeave","onKeyDown","style","tabIndex","ariaLabel","rest","variantClassName","iconElem","FontAwesomeIcon","btnClassName","tooltipElem","ariaLabelString","button","Button$1","CopyButton","vsPassFilled","vsCopy","ThemeContext","createContext","ThemeProvider","customThemes","defaultPreloadValues","DEFAULT_PRELOAD_DATA_VARIABLES","baseThemes","useMemo","getDefaultBaseThemes","setValue","selectedThemeKey","setSelectedThemeKey","_getThemePreloadData$","_getThemePreloadData","getThemePreloadData","DEFAULT_DARK_THEME_KEY","activeThemes","getActiveThemes","themes","overrideSVGFillColors","preloadStyleContent","calculatePreloadStyleContent","setThemePreloadData","_Fragment","useTheme","useContextOrThrow","TableColumnFormatter","dh","format","formatA","formatB","label","formatString","TableColumnFormatter$1","BooleanColumnFormatter","BooleanColumnFormatter$1","CharColumnFormatter","CharColumnFormatter$1","DateTimeColumnFormatter","showTimeZone","showTSeparator","separator","tz","formatStringMap","timeZoneParam","defaultDateTimeFormatString","timeZone","baseFormatString","_this$formatStringMap","DecimalColumnFormatter","multiplier","defaultFormatString","valueParam","DefaultColumnFormatter","DefaultColumnFormatter$1","IntegerColumnFormatter","StringColumnFormatter","Formatter","columnFormattingRules","map","next","dataType","TableUtils","formatMap","columnType","columnName","dateTimeOptions","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","createIfNecessary","_columnFormatMap$get","columnFormatMap","columnTypeFormatter","_this$typeFormatterMa","formatOverride","formatter","_formatter$dhTimeZone","getColumnFormats","settings","getDateTimeFormatterOptions","isCustomColumnFormatDefined","columnFormat","FormatterUtils","DownsamplingError","defaultChartTheme","_chartTheme$colorway","chartTheme","resolveCssVariablesInRecord","chartThemeRaw","getExpressionRanges","start","end","ColorUtils","ChartThemeContext","ChartThemeProvider","useChartTheme"],"mappings":"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"}
1
+ {"version":3,"file":"useChartTheme-dab52f26.js","sources":["../../../utils/dist/ClipboardUtils.js","../../../components/dist/theme/theme-spectrum/index.js","../../../components/dist/SpectrumUtils.js","../../../components/dist/theme/SpectrumThemeProvider.js","../../../components/dist/popper/Popper.js","../../../components/dist/popper/Tooltip.js","../../../react-hooks/dist/useCopyToClipboard.js","../../../components/dist/Button.js","../../../components/dist/CopyButton.js","../../../components/dist/theme/ThemeProvider.js","../../../components/dist/theme/useTheme.js","../../../jsapi-utils/dist/formatters/TableColumnFormatter.js","../../../jsapi-utils/dist/formatters/BooleanColumnFormatter.js","../../../jsapi-utils/dist/formatters/CharColumnFormatter.js","../../../jsapi-utils/dist/formatters/DateTimeColumnFormatter.js","../../../jsapi-utils/dist/formatters/DecimalColumnFormatter.js","../../../jsapi-utils/dist/formatters/DefaultColumnFormatter.js","../../../jsapi-utils/dist/formatters/IntegerColumnFormatter.js","../../../jsapi-utils/dist/formatters/StringColumnFormatter.js","../../../jsapi-utils/dist/Formatter.js","../../../jsapi-utils/dist/FormatterUtils.js","../../../chart/dist/DownsamplingError.js","../../../chart/dist/ChartTheme.js","../../../chart/dist/ChartThemeProvider.js","../../../chart/dist/useChartTheme.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n/**\n * Copy the passed in text to the clipboard.\n * @param text The text to copy\n * @returns Promise Resolved on success, rejected on failure\n */\nexport function copyToClipboard(_x) {\n return _copyToClipboard.apply(this, arguments);\n}\n\n/**\n * Copy the passed in text to the clipboard using the `execCommand` functionality\n * Throws on error/failure\n * @param text The text to copy\n */\nfunction _copyToClipboard() {\n _copyToClipboard = _asyncToGenerator(function* (text) {\n var {\n clipboard\n } = navigator;\n if (clipboard !== undefined) {\n try {\n return navigator.clipboard.writeText(text);\n } catch (_unused) {\n return copyToClipboardExecCommand(text);\n }\n }\n copyToClipboardExecCommand(text);\n });\n return _copyToClipboard.apply(this, arguments);\n}\nexport function copyToClipboardExecCommand(text) {\n var oldFocus = document.activeElement;\n var textArea = document.createElement('textarea');\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n var result = document.execCommand('copy');\n document.body.removeChild(textArea);\n if (oldFocus instanceof HTMLElement) {\n oldFocus.focus();\n }\n if (!result) throw new Error('Unable to execute copy command');\n}\n//# sourceMappingURL=ClipboardUtils.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 palette from \"./theme-spectrum-palette.module.css\";\nimport alias from \"./theme-spectrum-alias.module.css\"; // don't import as module, so that classes can be used directly\nimport \"./theme-spectrum-overrides.css\";\n/**\n * Spectrum theme variables are exported as a map of css class names. The keys\n * come from css classes in the imported css modules. The values are generated\n * by Vite.\n *\n * e.g.\n * {\n * 'dh-spectrum-palette': '_dh-spectrum-palette_abr16_1',\n * 'dh-spectrum-alias': '_dh-spectrum-alias_18mbe_1',\n * }\n */\nexport var themeSpectrumClassesCommon = _objectSpread(_objectSpread({}, palette), alias);\nexport default themeSpectrumClassesCommon;\n//# sourceMappingURL=index.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { theme } from '@react-spectrum/theme-default';\nimport { themeSpectrumClassesCommon } from \"./theme/theme-spectrum/index.js\";\nvar {\n global,\n light,\n dark,\n medium,\n large\n} = theme;\n\n/**\n * Extend light + dark theme variables with DH defaults.\n *\n * A theme is just a mapped collection of css class names that are generated\n * from a collection of css modules.\n *\n * e.g.\n * {\n * global: {\n * spectrum: 'spectrum_9e130c',\n * 'spectrum--medium': 'spectrum--medium_9e130c',\n * 'spectrum--large': 'spectrum--large_9e130c',\n * 'spectrum--darkest': 'spectrum--darkest_9e130c',\n * 'spectrum--dark': 'spectrum--dark_9e130c',\n * 'spectrum--light': 'spectrum--light_9e130c',\n * 'spectrum--lightest': 'spectrum--lightest_9e130c',\n * },\n * light: {\n * 'spectrum--light': 'spectrum--light_a40724',\n * 'dh-spectrum-theme--light': '_dh-spectrum-theme--light_1hblg_22',\n * },\n * dark: {\n * 'spectrum--darkest': 'spectrum--darkest_256eeb',\n * 'dh-spectrum-theme--dark': '_dh-spectrum-theme--dark_f7kge_22',\n * },\n * medium: {\n * 'spectrum--medium': 'spectrum--medium_4b172c',\n * },\n * large: {\n * 'spectrum--large': 'spectrum--large_c40598',\n * },\n * }\n */\n/* eslint-disable import/prefer-default-export */\nexport var themeDHDefault = {\n global,\n light: _objectSpread(_objectSpread({}, light), themeSpectrumClassesCommon),\n dark: _objectSpread(_objectSpread({}, dark), themeSpectrumClassesCommon),\n // scales\n medium,\n large\n};\n//# sourceMappingURL=SpectrumUtils.js.map","import { useState } from 'react';\nimport { Provider } from '@adobe/react-spectrum';\nimport shortid from 'shortid';\nimport { themeDHDefault } from \"../SpectrumUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Wrapper around React Spectrum's theme Provider that provides DH mappings of\n * Spectrum's theme variables to DH's theme variables. Also exposes an optional\n * `isPortal` prop that if provided, adds a unique `data-unique-id` attribute to\n * the Provider. This is needed to force the Provider to render the theme wrapper\n * inside of portals.\n */\nexport function SpectrumThemeProvider(_ref) {\n var {\n children,\n isPortal = false,\n theme = themeDHDefault,\n colorScheme\n } = _ref;\n // a unique ID is used per provider to force it to render the theme wrapper element inside portals\n // based on https://github.com/adobe/react-spectrum/issues/1697#issuecomment-999827266\n // won't be needed if https://github.com/adobe/react-spectrum/pull/2669 is merged\n var [id] = useState(isPortal ? shortid() : null);\n return /*#__PURE__*/_jsx(Provider, {\n UNSAFE_className: \"spectrum-theme-provider\",\n theme: theme,\n colorScheme: colorScheme,\n \"data-unique-id\": id,\n children: children\n });\n}\n//# sourceMappingURL=SpectrumThemeProvider.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from \"../ThemeExport.js\";\nimport \"./Popper.css\";\nimport { SpectrumThemeProvider } from \"../theme/SpectrumThemeProvider.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar POPPER_CLASS_NAME = 'popper';\nclass Popper extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"element\", void 0);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"rAF\", void 0);\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = /*#__PURE__*/React.createRef();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n var {\n isShown\n } = this.props;\n this.state = {\n show: isShown,\n popper: null\n };\n }\n componentDidUpdate(prevProps) {\n var {\n isShown\n } = this.props;\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n componentWillUnmount() {\n this.destroyPopper(false);\n }\n\n // This is the request animation frame handle number\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element) {\n if (element == null || element.clientHeight > 0 || element.clientWidth > 0) {\n return element;\n }\n return this.getVisibleElement(element.parentElement);\n }\n initPopper() {\n var {\n popper\n } = this.state;\n var {\n closeOnBlur,\n referenceObject\n } = this.props;\n if (popper) {\n return;\n }\n if (this.container.current === null) {\n return;\n }\n var {\n options\n } = this.props;\n options = _objectSpread({\n placement: 'auto',\n modifiers: {\n preventOverflow: {\n boundariesElement: 'viewport'\n }\n }\n }, options);\n document.body.appendChild(this.element);\n var parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // If the current focus is not on the .popper or one of its descendants,\n // set the focus to the .popper element. This is necessary for close on\n // blur to work.\n if (closeOnBlur) {\n var popperEl = this.element.querySelector(\".\".concat(POPPER_CLASS_NAME));\n if (popperEl instanceof HTMLElement && !popperEl.contains(document.activeElement)) {\n popperEl.focus();\n }\n }\n });\n this.setState({\n popper\n });\n }\n destroyPopper() {\n var updateState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n cancelAnimationFrame(this.rAF);\n var {\n popper\n } = this.state;\n if (!popper) {\n return;\n }\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n if (updateState) {\n this.setState({\n popper: null\n });\n }\n }\n show() {\n this.initPopper();\n this.setState({\n show: true\n });\n }\n hide() {\n this.setState({\n show: false\n });\n }\n scheduleUpdate() {\n var {\n popper\n } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n handleBlur(e) {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n handleEnter() {\n var {\n onEntered\n } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit() {\n var {\n onExited\n } = this.props;\n var {\n show\n } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent() {\n var {\n className,\n children,\n timeout,\n interactive,\n closeOnBlur\n } = this.props;\n var {\n show\n } = this.state;\n return /*#__PURE__*/_jsx(SpectrumThemeProvider, {\n isPortal: true,\n children: /*#__PURE__*/_jsx(CSSTransition, {\n in: show,\n timeout: timeout,\n classNames: \"popper-transition\",\n onEntered: this.handleEnter,\n onExited: this.handleExit,\n children: /*#__PURE__*/_jsx(\"div\", {\n onClick: e => {\n // stop click events from escaping popper\n e.stopPropagation();\n },\n onKeyDown: e => {\n if (e.key === 'Escape') this.hide();\n },\n className: classNames(POPPER_CLASS_NAME, {\n interactive\n }, className),\n onBlur: closeOnBlur ? this.handleBlur : undefined,\n tabIndex: closeOnBlur ? -1 : undefined,\n role: \"presentation\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"popper-content\",\n children: [children, /*#__PURE__*/_jsx(\"div\", {\n className: \"popper-arrow\",\n \"x-arrow\": \"\"\n })]\n })\n })\n })\n });\n }\n render() {\n var {\n popper\n } = this.state;\n var {\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"popper-parent-container\",\n ref: this.container,\n style: {\n display: 'none'\n },\n \"data-testid\": dataTestId,\n children: popper && /*#__PURE__*/ReactDOM.createPortal(this.renderContent(), this.element)\n });\n }\n}\n_defineProperty(Popper, \"propTypes\", {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n 'data-testid': PropTypes.string\n});\n_defineProperty(Popper, \"defaultProps\", {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered() {\n // no-op\n },\n onExited() {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined\n});\nexport default Popper;\n//# sourceMappingURL=Popper.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport Popper from \"./Popper.js\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('Tooltip');\n/**\n * Component that can be added to an element to automatically display a tooltip.\n * Content is mounted lazily, so don't worry about complex tooltips!\n *\n * Usage:\n * <div className=\"parent-container\">\n * Hover this container to see a tooltip\n * <Tooltip>\n * <div>My tooltip content goes here!</div>\n * </Tooltip>\n * </div>\n */\nclass Tooltip extends Component {\n static handleHidden() {\n Tooltip.shownTooltipCount -= 1;\n if (Tooltip.shownTooltipCount === 0) {\n Tooltip.lastHiddenTime = Date.now();\n }\n }\n static handleShown() {\n Tooltip.shownTooltipCount += 1;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"popper\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"timer\", void 0);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowMouseMove = this.handleWindowMouseMove.bind(this);\n this.handleWheel = this.handleWheel.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.stopShowingTooltip = this.stopShowingTooltip.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.popper = /*#__PURE__*/React.createRef();\n this.parent = null;\n this.timer = null;\n this.state = {\n isShown: false\n };\n }\n componentDidMount() {\n this.startListening();\n var {\n timeout\n } = this.props;\n if (timeout === 0) {\n this.show();\n }\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n isShown: oldIsShown\n } = prevState;\n var {\n isShown\n } = this.state;\n if (isShown !== oldIsShown) {\n if (isShown) {\n Tooltip.handleShown();\n } else {\n Tooltip.handleHidden();\n }\n }\n }\n componentWillUnmount() {\n this.stopListening();\n this.stopListeningWindow();\n this.stopTimer();\n var {\n isShown\n } = this.state;\n if (isShown) {\n Tooltip.handleHidden();\n }\n }\n\n // This is platform dependent of Node/DOM\n // Jest requires Node types\n startListening() {\n if (!this.container.current || !this.container.current.parentElement) {\n log.error(\"Tooltip doesn't have a container or a parent set!\");\n return;\n }\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('mousemove', this.handleMouseMove);\n this.parent.addEventListener('mouseleave', this.handleMouseLeave);\n this.parent.addEventListener('mousedown', this.stopShowingTooltip);\n }\n stopListening() {\n if (!this.parent) {\n return;\n }\n this.parent.removeEventListener('mousemove', this.handleMouseMove);\n this.parent.removeEventListener('mouseleave', this.handleMouseLeave);\n this.parent.removeEventListener('mousedown', this.stopShowingTooltip);\n }\n startListeningWindow() {\n window.addEventListener('mousemove', this.handleWindowMouseMove, true);\n window.addEventListener('contextmenu', this.stopShowingTooltip, true);\n window.addEventListener('wheel', this.handleWheel);\n }\n stopListeningWindow() {\n window.removeEventListener('mousemove', this.handleWindowMouseMove, true);\n window.removeEventListener('contextmenu', this.stopShowingTooltip, true);\n window.removeEventListener('wheel', this.handleWheel);\n }\n handleMouseMove() {\n this.startTimer();\n }\n handleWheel() {\n var {\n isShown\n } = this.state;\n if (this.popper.current && this.parent && isShown) {\n if (!this.popper.current.element.matches(':hover') && !this.parent.matches(':hover')) {\n this.stopTimer();\n this.hide();\n }\n }\n }\n handleMouseLeave() {\n var {\n isShown\n } = this.state;\n this.stopTimer();\n var {\n interactive\n } = this.props;\n if (!interactive && isShown) {\n this.hide();\n }\n }\n handleTimeout() {\n this.show();\n }\n handleWindowMouseMove(event) {\n var mouseX = event.clientX;\n var mouseY = event.clientY;\n var {\n isShown\n } = this.state;\n if (!this.popper.current || !this.parent) {\n return;\n }\n var popperRect = this.popper.current.element.getBoundingClientRect();\n var parentRect = this.parent.getBoundingClientRect();\n if (mouseX >= popperRect.left && mouseX <= popperRect.left + popperRect.width && mouseY >= popperRect.top && mouseY <= popperRect.top + popperRect.height) {\n this.handleMouseMove();\n } else if (mouseX >= parentRect.left && mouseX <= parentRect.left + parentRect.width && mouseY >= parentRect.top && mouseY <= parentRect.top + parentRect.height) {\n this.handleMouseMove();\n } else if (isShown) {\n this.stopTimer();\n this.hide();\n }\n }\n startTimer() {\n this.stopTimer();\n var {\n timeout,\n reshowTimeout\n } = this.props;\n var timerTimeout = timeout;\n if (Tooltip.shownTooltipCount > 0 || Date.now() - Tooltip.lastHiddenTime < Tooltip.triggerReshowThreshold) {\n timerTimeout = reshowTimeout;\n }\n this.timer = window.setTimeout(this.handleTimeout, timerTimeout);\n }\n stopTimer() {\n if (this.timer != null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n show() {\n var {\n isShown\n } = this.state;\n this.stopTimer();\n if (!isShown) {\n var _this$popper$current;\n (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.show();\n this.setState({\n isShown: true\n });\n var {\n interactive\n } = this.props;\n if (interactive) {\n this.startListeningWindow();\n }\n }\n }\n hide() {\n var _this$popper$current2;\n (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.hide();\n this.stopListeningWindow();\n }\n update() {\n var _this$popper$current3;\n (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.scheduleUpdate();\n }\n handleExited() {\n this.setState({\n isShown: false\n });\n var {\n onExited\n } = this.props;\n onExited();\n }\n stopShowingTooltip() {\n var {\n isShown\n } = this.state;\n this.stopTimer();\n if (isShown) {\n this.hide();\n }\n }\n render() {\n var {\n interactive,\n children,\n referenceObject,\n popperClassName,\n 'data-testid': dataTestId,\n onEntered\n } = this.props;\n var {\n isShown\n } = this.state;\n var {\n options\n } = this.props;\n options = _objectSpread({\n placement: 'bottom'\n }, options);\n return /*#__PURE__*/_jsx(\"div\", {\n ref: this.container,\n style: {\n display: 'none'\n },\n \"data-testid\": dataTestId,\n children: /*#__PURE__*/_jsx(Popper, {\n className: classNames(popperClassName, 'popper-tooltip'),\n options: options,\n ref: this.popper,\n onEntered: onEntered,\n onExited: this.handleExited,\n interactive: interactive,\n referenceObject: referenceObject,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"tooltip-content\",\n children: [\" \", isShown && children]\n })\n })\n });\n }\n}\n_defineProperty(Tooltip, \"defaultTimeout\", 500);\n_defineProperty(Tooltip, \"defaultReshowTimeout\", 100);\n_defineProperty(Tooltip, \"triggerReshowThreshold\", 300);\n_defineProperty(Tooltip, \"shownTooltipCount\", 0);\n_defineProperty(Tooltip, \"lastHiddenTime\", Date.now());\n_defineProperty(Tooltip, \"defaultProps\", {\n interactive: false,\n options: {},\n popperClassName: '',\n reshowTimeout: Tooltip.defaultReshowTimeout,\n timeout: Tooltip.defaultTimeout,\n onEntered: () => undefined,\n onExited: () => undefined,\n 'data-testid': undefined\n});\nexport default Tooltip;\n//# sourceMappingURL=Tooltip.js.map","import { useEffect, useState, useRef, useCallback } from 'react';\nimport { copyToClipboard } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nvar TIMEOUT_DELAY = 3500;\nvar log = Log.module('useCopyToClipboard');\nexport default function useCopyToClipboard() {\n var [copied, setCopied] = useState(false);\n var copiedTimeout = useRef(null);\n var copy = useCallback(value => {\n copyToClipboard(value).then(() => {\n setCopied(true);\n }).catch(e => log.error(\"Unable to copy \".concat(value), '\\n', e));\n }, []);\n useEffect(() => {\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current);\n if (copied) {\n copiedTimeout.current = setTimeout(() => {\n setCopied(false);\n }, TIMEOUT_DELAY);\n }\n return () => {\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current);\n };\n }, [copied]);\n return [copied, copy];\n}\n//# sourceMappingURL=useCopyToClipboard.js.map","var _excluded = [\"kind\", \"variant\", \"type\", \"tooltip\", \"icon\", \"disabled\", \"active\", \"onClick\", \"onContextMenu\", \"onMouseDown\", \"onMouseUp\", \"onMouseEnter\", \"onMouseLeave\", \"onKeyDown\", \"className\", \"style\", \"children\", \"tabIndex\", \"data-testid\", \"aria-label\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Tooltip } from \"./popper/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar BUTTON_KINDS = ['primary', 'secondary', 'tertiary', 'success', 'danger', 'inline', 'ghost'];\nvar VARIANT_KINDS = ['group-end'];\nfunction getClassName(kind, iconOnly) {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'btn-link-icon-only': iconOnly\n });\n }\n}\nfunction getVariantClasses(kind) {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\nvar Button = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n kind,\n variant,\n type,\n tooltip,\n icon,\n disabled = false,\n active,\n onClick,\n onContextMenu,\n onMouseDown,\n onMouseUp,\n onMouseEnter,\n onMouseLeave,\n onKeyDown,\n className,\n style,\n children,\n tabIndex,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n var iconElem;\n if (icon) {\n iconElem = /*#__PURE__*/React.isValidElement(icon) ? icon : /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n }\n\n // not entirely accurate, as button can have non-visible children\n var iconOnly = iconElem != null && children == null;\n var btnClassName = getClassName(kind, iconOnly);\n var tooltipElem;\n if (tooltip !== undefined) {\n tooltipElem = typeof tooltip === 'string' ? /*#__PURE__*/_jsx(Tooltip, {\n children: tooltip\n }) : tooltip;\n }\n\n // use tooltip as arial-label for iconOnly buttons only\n // if tooltip is also a string and aria-label is not set\n var ariaLabelString = ariaLabel;\n if (ariaLabel === undefined && iconOnly && tooltip != null && typeof tooltip === 'string') {\n ariaLabelString = tooltip;\n }\n var button = /*#__PURE__*/_jsxs(\"button\", _objectSpread(_objectSpread({\n \"data-testid\": dataTestId,\n ref: ref\n // eslint-disable-next-line react/button-has-type\n ,\n type: type,\n className: classNames('btn', btnClassName, variantClassName, {\n active\n }, className),\n onClick: onClick,\n onContextMenu: onContextMenu,\n onMouseUp: onMouseUp,\n onMouseDown: onMouseDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onKeyDown: onKeyDown,\n style: style,\n disabled: disabled,\n tabIndex: tabIndex,\n \"aria-label\": ariaLabelString\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, rest), {}, {\n children: [icon && iconElem, children, tooltip != null && !disabled && tooltipElem]\n }));\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled && tooltip != null ? /*#__PURE__*/_jsxs(\"span\", {\n className: \"btn-disabled-wrapper\",\n children: [button, tooltipElem]\n }) : button;\n});\nButton.displayName = 'Button';\nButton.propTypes = {\n kind: PropTypes.oneOf(BUTTON_KINDS).isRequired,\n variant: PropTypes.oneOf(VARIANT_KINDS),\n type: PropTypes.oneOf(['submit', 'reset', 'button']),\n tooltip(props) {\n var {\n tooltip,\n icon,\n children\n } = props;\n if (tooltip === undefined && icon != null && children == null) {\n return new Error('Tooltip is required for icon only buttons');\n }\n return null;\n },\n icon(props) {\n var {\n children,\n icon\n } = props;\n if (icon == null && children == null) {\n return new Error('Icon is required if no children are provided');\n }\n if (children == null && ! /*#__PURE__*/React.isValidElement(icon) && (icon == null || icon.iconName === '' || icon.iconName == null)) {\n return new Error('Icon must be react element or fontawesome IconDefinition');\n }\n return null;\n },\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n onClick(props) {\n var {\n onClick,\n type\n } = props;\n if (type === 'button' && typeof onClick !== 'function') {\n return new Error('type button requires an onClick function');\n }\n if (onClick !== undefined && typeof onClick !== 'function') {\n return new Error('onClick must be a function');\n }\n return null;\n },\n onContextMenu: PropTypes.func,\n onMouseUp: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onKeyDown: PropTypes.func,\n tabIndex: PropTypes.number,\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n 'data-testid': PropTypes.string\n};\nButton.defaultProps = {\n type: 'button',\n onClick: undefined,\n onContextMenu: undefined,\n onMouseUp: undefined,\n onMouseDown: undefined,\n onMouseEnter: undefined,\n onMouseLeave: undefined,\n onKeyDown: undefined,\n variant: undefined,\n tooltip: undefined,\n icon: undefined,\n disabled: false,\n active: undefined,\n tabIndex: undefined,\n children: undefined,\n className: undefined,\n style: {},\n 'data-testid': undefined\n};\nexport default Button;\n//# sourceMappingURL=Button.js.map","import React from 'react';\nimport { vsPassFilled, vsCopy } from '@deephaven/icons';\nimport { useCopyToClipboard } from '@deephaven/react-hooks';\nimport Button from \"./Button.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Button that has a copy icon, and copies text to a clipboard when clicked.\n */\nfunction CopyButton(_ref) {\n var {\n copy,\n kind = 'ghost',\n tooltip = 'Copy',\n className,\n style,\n 'data-testid': dataTestId,\n children\n } = _ref;\n var [copied, copyToClipboard] = useCopyToClipboard();\n return /*#__PURE__*/_jsx(Button, {\n kind: kind,\n className: className,\n style: style,\n \"data-testid\": dataTestId,\n icon: copied ? vsPassFilled : vsCopy,\n tooltip: copied ? 'Copied' : tooltip,\n onClick: () => {\n copyToClipboard(typeof copy === 'function' ? copy() : copy);\n },\n children: children\n });\n}\nexport default CopyButton;\n//# sourceMappingURL=CopyButton.js.map","import { createContext, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { DEFAULT_DARK_THEME_KEY, DEFAULT_PRELOAD_DATA_VARIABLES } from \"./ThemeModel.js\";\nimport { calculatePreloadStyleContent, getActiveThemes, getDefaultBaseThemes, getThemePreloadData, setThemePreloadData, overrideSVGFillColors } from \"./ThemeUtils.js\";\nimport { SpectrumThemeProvider } from \"./SpectrumThemeProvider.js\";\nimport \"./theme-svg.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ThemeProvider');\nexport var ThemeContext = /*#__PURE__*/createContext(null);\nexport function ThemeProvider(_ref) {\n var {\n themes: customThemes,\n defaultPreloadValues = DEFAULT_PRELOAD_DATA_VARIABLES,\n children\n } = _ref;\n var baseThemes = useMemo(() => getDefaultBaseThemes(), []);\n var [value, setValue] = useState(null);\n var [selectedThemeKey, setSelectedThemeKey] = useState(() => {\n var _getThemePreloadData$, _getThemePreloadData;\n return (_getThemePreloadData$ = (_getThemePreloadData = getThemePreloadData()) === null || _getThemePreloadData === void 0 ? void 0 : _getThemePreloadData.themeKey) !== null && _getThemePreloadData$ !== void 0 ? _getThemePreloadData$ : DEFAULT_DARK_THEME_KEY;\n });\n\n // Calculate active themes once a non-null themes array is provided.\n var activeThemes = useMemo(() => customThemes == null ? null : getActiveThemes(selectedThemeKey, {\n base: baseThemes,\n custom: customThemes !== null && customThemes !== void 0 ? customThemes : []\n }), [baseThemes, selectedThemeKey, customThemes]);\n var themes = useMemo(() => [...baseThemes, ...(customThemes !== null && customThemes !== void 0 ? customThemes : [])], [baseThemes, customThemes]);\n useEffect(function updateThemePreloadData() {\n // Don't update preload data until themes have been loaded and activated\n if (activeThemes == null || customThemes == null) {\n return;\n }\n\n // Override fill color for certain inline SVGs (the originals are provided\n // by theme-svg.scss)\n overrideSVGFillColors(defaultPreloadValues);\n var preloadStyleContent = calculatePreloadStyleContent(defaultPreloadValues);\n log.debug2('updateThemePreloadData:', {\n active: activeThemes.map(theme => theme.themeKey),\n custom: customThemes.map(theme => theme.themeKey),\n preloadStyleContent,\n selectedThemeKey\n });\n setThemePreloadData({\n themeKey: selectedThemeKey,\n preloadStyleContent\n });\n }, [activeThemes, selectedThemeKey, customThemes, defaultPreloadValues]);\n useEffect(() => {\n setValue({\n activeThemes,\n selectedThemeKey,\n themes,\n setSelectedThemeKey\n });\n }, [activeThemes, selectedThemeKey, themes]);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [activeThemes == null ? null : /*#__PURE__*/_jsx(_Fragment, {\n children: activeThemes.map(theme => /*#__PURE__*/_jsx(\"style\", {\n \"data-theme-key\": theme.themeKey,\n children: theme.styleContent\n }, theme.themeKey))\n }), value == null ? null : /*#__PURE__*/_jsx(ThemeContext.Provider, {\n value: value,\n children: /*#__PURE__*/_jsx(SpectrumThemeProvider, {\n children: children\n })\n })]\n });\n}\nexport default ThemeProvider;\n//# sourceMappingURL=ThemeProvider.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ThemeContext } from \"./ThemeProvider.js\";\n/**\n * Hook to get the current `ThemeContextValue`.\n */\nexport function useTheme() {\n return useContextOrThrow(ThemeContext, 'No ThemeContext value found. Component must be wrapped in a ThemeContext.Provider');\n}\nexport default useTheme;\n//# sourceMappingURL=useTheme.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint class-methods-use-this: \"off\" */\n/**\n * Default column data formatter. Just interpolates the value as a string and returns.\n * Extend this class and register with TableUtils to make use of it.\n */\n\nexport class TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n return true;\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n throw new Error('isSameFormat not implemented');\n }\n\n /**\n * Create and return a Format object\n * @param label The label of the format object\n * @param formatString Format string to use for the format\n * @param type The type of column to use for this format\n * @returns A format object\n */\n static makeFormat(label, formatString, type) {\n return {\n label,\n formatString,\n type\n };\n }\n\n /**\n * @param value The value to format\n * @param format Optional format object with value transformation options\n * @returns String the formatted text string of the value passed in.\n */\n format(value, format) {\n return '';\n }\n}\n_defineProperty(TableColumnFormatter, \"TYPE_GLOBAL\", 'type-global');\n_defineProperty(TableColumnFormatter, \"TYPE_CONTEXT_PRESET\", 'type-context-preset');\n_defineProperty(TableColumnFormatter, \"TYPE_CONTEXT_CUSTOM\", 'type-context-custom');\nexport default TableColumnFormatter;\n//# sourceMappingURL=TableColumnFormatter.js.map","/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\n/** Column formatter for booleans */\nclass BooleanColumnFormatter extends TableColumnFormatter {\n format(value) {\n switch (value) {\n case 1:\n case true:\n return 'true';\n case 0:\n case false:\n return 'false';\n default:\n return '';\n }\n }\n}\nexport default BooleanColumnFormatter;\n//# sourceMappingURL=BooleanColumnFormatter.js.map","/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\n/** Column formatter for chars */\nclass CharColumnFormatter extends TableColumnFormatter {\n format(value) {\n return String.fromCharCode(value);\n }\n}\nexport default CharColumnFormatter;\n//# sourceMappingURL=CharColumnFormatter.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nvar log = Log.module('DateTimeColumnFormatter');\nexport class DateTimeColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n if (format.formatString == null) {\n return false;\n }\n try {\n dh.i18n.DateTimeFormat.format(format.formatString, new Date());\n return true;\n } catch (e) {\n return false;\n }\n }\n static makeFormat(label, formatString) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;\n return {\n label,\n formatString,\n type\n };\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return formatA === formatB || formatA !== null && formatB !== null && formatA.type === formatB.type && formatA.formatString === formatB.formatString;\n }\n static makeGlobalFormatStringMap(showTimeZone, showTSeparator) {\n var separator = showTSeparator ? \"'T'\" : ' ';\n var tz = showTimeZone ? ' z' : '';\n return new Map([['yyyy-MM-dd HH:mm:ss', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSS\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSSSSSSSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSSSSSSSS\").concat(tz)]]);\n }\n static getGlobalFormats(showTimeZone, showTSeparator) {\n var formatStringMap = DateTimeColumnFormatter.makeGlobalFormatStringMap(showTimeZone, showTSeparator);\n return [...formatStringMap.keys()];\n }\n static makeFormatStringMap(showTimeZone, showTSeparator) {\n var separator = showTSeparator !== undefined && showTSeparator ? \"'T'\" : ' ';\n var tz = showTimeZone !== undefined && showTimeZone ? ' z' : '';\n return new Map([['yyyy-MM-dd', \"yyyy-MM-dd\".concat(tz)], ['MM-dd-yyyy', \"MM-dd-yyyy\".concat(tz)], ['HH:mm:ss', \"HH:mm:ss\".concat(tz)], ['HH:mm:ss.SSS', \"HH:mm:ss.SSS\".concat(tz)], ['HH:mm:ss.SSSSSSSSS', \"HH:mm:ss.SSSSSSSSS\".concat(tz)], ['yyyy-MM-dd HH:mm:ss', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSS\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSSSSSSSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSSSSSSSS\").concat(tz)]]);\n }\n static getFormats(showTimeZone, showTSeparator) {\n var formatStringMap = DateTimeColumnFormatter.makeFormatStringMap(showTimeZone, showTSeparator);\n return [...formatStringMap.keys()];\n }\n constructor(dh) {\n var {\n timeZone: timeZoneParam = '',\n showTimeZone = true,\n showTSeparator = false,\n defaultDateTimeFormatString = DateTimeColumnFormatter.DEFAULT_DATETIME_FORMAT_STRING\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"dhTimeZone\", void 0);\n _defineProperty(this, \"defaultDateTimeFormatString\", void 0);\n _defineProperty(this, \"showTimeZone\", void 0);\n _defineProperty(this, \"showTSeparator\", void 0);\n _defineProperty(this, \"formatStringMap\", void 0);\n var timeZone = timeZoneParam || DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID;\n try {\n this.dhTimeZone = dh.i18n.TimeZone.getTimeZone(timeZone);\n } catch (e) {\n log.error('Unsupported time zone id', timeZone);\n this.dhTimeZone = dh.i18n.TimeZone.getTimeZone(DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID);\n }\n this.dh = dh;\n this.defaultDateTimeFormatString = defaultDateTimeFormatString;\n this.showTimeZone = showTimeZone;\n this.showTSeparator = showTSeparator;\n this.formatStringMap = DateTimeColumnFormatter.makeFormatStringMap(showTimeZone, showTSeparator);\n }\n getEffectiveFormatString(baseFormatString) {\n var _this$formatStringMap;\n return (_this$formatStringMap = this.formatStringMap.get(baseFormatString)) !== null && _this$formatStringMap !== void 0 ? _this$formatStringMap : baseFormatString;\n }\n format(value) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var baseFormatString = format.formatString != null && format.formatString !== '' ? format.formatString : this.defaultDateTimeFormatString;\n var formatString = this.getEffectiveFormatString(baseFormatString);\n try {\n return this.dh.i18n.DateTimeFormat.format(formatString, value, this.dhTimeZone);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n_defineProperty(DateTimeColumnFormatter, \"DEFAULT_DATETIME_FORMAT_STRING\", 'yyyy-MM-dd HH:mm:ss.SSS');\n_defineProperty(DateTimeColumnFormatter, \"DEFAULT_TIME_ZONE_ID\", 'America/New_York');\nexport default DateTimeColumnFormatter;\n//# sourceMappingURL=DateTimeColumnFormatter.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nvar log = Log.module('DecimalColumnFormatter');\nexport class DecimalColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n if (format.formatString == null) {\n return false;\n }\n try {\n dh.i18n.NumberFormat.format(format.formatString, 0);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Create a DecimalColumnFormat object with the parameters specified\n * @param label Label for the format\n * @param formatString Format string for the format\n * @param multiplier Optional multiplier for the formatter\n * @param type Type of format created\n * @returns DecimalColumnFormat object\n */\n static makeFormat(label, formatString) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;\n var multiplier = arguments.length > 3 ? arguments[3] : undefined;\n return {\n label,\n type,\n formatString,\n multiplier\n };\n }\n\n /**\n * Convenient function to create a DecimalFormatObject with Preset type set\n * @param label Label for this format object\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns DecimalColumnFormat object\n */\n static makePresetFormat(label) {\n var formatString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var multiplier = arguments.length > 2 ? arguments[2] : undefined;\n return DecimalColumnFormatter.makeFormat(label, formatString, TableColumnFormatter.TYPE_CONTEXT_PRESET, multiplier);\n }\n\n /**\n * Convenient function to create a DecimalFormatObject with a default 'Custom Format' label and Custom type\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns DecimalColumnFormat object\n */\n static makeCustomFormat() {\n var formatString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var multiplier = arguments.length > 1 ? arguments[1] : undefined;\n return DecimalColumnFormatter.makeFormat('Custom Format', formatString, TableColumnFormatter.TYPE_CONTEXT_CUSTOM, multiplier);\n }\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return formatA === formatB || formatA != null && formatB != null && formatA.type === formatB.type && formatA.formatString === formatB.formatString && formatA.multiplier === formatB.multiplier;\n }\n constructor(dh) {\n var {\n defaultFormatString = DecimalColumnFormatter.DEFAULT_FORMAT_STRING\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n _defineProperty(this, \"defaultFormatString\", void 0);\n _defineProperty(this, \"dh\", void 0);\n this.dh = dh;\n this.defaultFormatString = defaultFormatString;\n }\n\n /**\n * Format a value with the provided format object\n * @param valueParam Value to format\n * @param format Format object\n * @returns Formatted string\n */\n format(valueParam) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var formatString = format.formatString != null && format.formatString !== '' ? format.formatString : this.defaultFormatString;\n var value = format.multiplier != null && format.multiplier !== 0 ? valueParam * format.multiplier : valueParam;\n try {\n return this.dh.i18n.NumberFormat.format(formatString, value);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n_defineProperty(DecimalColumnFormatter, \"DEFAULT_FORMAT_STRING\", '###,##0.0000');\n_defineProperty(DecimalColumnFormatter, \"FORMAT_PERCENT\", DecimalColumnFormatter.makePresetFormat('Percent', '##0.00%'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_BASIS_POINTS\", DecimalColumnFormatter.makePresetFormat('Basis Points', '###,##0 bp', 10000));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_MILLIONS\", DecimalColumnFormatter.makePresetFormat('Millions', '###,##0.000 mm', 0.000001));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_SCIENTIFIC_NOTATION\", DecimalColumnFormatter.makePresetFormat('Scientific Notation', '0.0000E0'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_ROUND\", DecimalColumnFormatter.makePresetFormat('Round', '###,##0'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_ROUND_TWO_DECIMALS\", DecimalColumnFormatter.makePresetFormat('0.00', '###,##0.00'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_ROUND_FOUR_DECIMALS\", DecimalColumnFormatter.makePresetFormat('0.0000', '###,##0.0000'));\nexport default DecimalColumnFormatter;\n//# sourceMappingURL=DecimalColumnFormatter.js.map","/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nclass DefaultColumnFormatter extends TableColumnFormatter {\n format(value) {\n return \"\".concat(value);\n }\n}\nexport default DefaultColumnFormatter;\n//# sourceMappingURL=DefaultColumnFormatter.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nvar log = Log.module('IntegerColumnFormatter');\n/** Column formatter for integers/whole numbers */\nexport class IntegerColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n if (format.formatString == null) {\n return false;\n }\n try {\n dh.i18n.NumberFormat.format(format.formatString, 0);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Create an IntegerColumnFormat object with the parameters specified\n * @param label Label for the format\n * @param formatString Format string for the format\n * @param multiplier Optional multiplier for the formatter\n * @param type Type of format created\n * @returns IntegerColumnFormat object\n */\n static makeFormat(label, formatString) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;\n var multiplier = arguments.length > 3 ? arguments[3] : undefined;\n return {\n label,\n type,\n formatString,\n multiplier\n };\n }\n\n /**\n * Convenient function to create a IntegerFormatObject with Preset type set\n * @param label Label for this format object\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns IntegerColumnFormat object\n */\n static makePresetFormat(label) {\n var formatString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var multiplier = arguments.length > 2 ? arguments[2] : undefined;\n return IntegerColumnFormatter.makeFormat(label, formatString, TableColumnFormatter.TYPE_CONTEXT_PRESET, multiplier);\n }\n\n /**\n * Convenient function to create a IntegerFormatObject with a default 'Custom Format' label and Custom type\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns IntegerColumnFormat object\n */\n static makeCustomFormat() {\n var formatString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var multiplier = arguments.length > 1 ? arguments[1] : undefined;\n return IntegerColumnFormatter.makeFormat('Custom Format', formatString, TableColumnFormatter.TYPE_CONTEXT_CUSTOM, multiplier);\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return formatA === formatB || formatA != null && formatB != null && formatA.type === formatB.type && formatA.formatString === formatB.formatString && formatA.multiplier === formatB.multiplier;\n }\n constructor(dh) {\n var {\n defaultFormatString = IntegerColumnFormatter.DEFAULT_FORMAT_STRING\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"defaultFormatString\", void 0);\n this.dh = dh;\n this.defaultFormatString = defaultFormatString;\n }\n\n /**\n * Format a value with the provided format object\n * @param valueParam Value to format\n * @param format Format object\n * @returns Formatted string\n */\n format(valueParam) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var formatString = format.formatString != null && format.formatString !== '' ? format.formatString : this.defaultFormatString;\n var value = format.multiplier != null && format.multiplier !== 0 ? valueParam * format.multiplier : valueParam;\n try {\n return this.dh.i18n.NumberFormat.format(formatString, value);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n_defineProperty(IntegerColumnFormatter, \"DEFAULT_FORMAT_STRING\", '###,##0');\n_defineProperty(IntegerColumnFormatter, \"FORMAT_MILLIONS\", IntegerColumnFormatter.makePresetFormat('Millions', '###,##0.000 mm', 0.000001));\n_defineProperty(IntegerColumnFormatter, \"FORMAT_SCIENTIFIC_NOTATION\", IntegerColumnFormatter.makePresetFormat('Scientific Notation', '0.0000E0'));\nexport default IntegerColumnFormatter;\n//# sourceMappingURL=IntegerColumnFormatter.js.map","/* eslint class-methods-use-this: \"off\" */\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\n/** Column formatter for strings */\nexport class StringColumnFormatter extends TableColumnFormatter {\n format(value) {\n return value;\n }\n}\nexport default StringColumnFormatter;\n//# sourceMappingURL=StringColumnFormatter.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 TableUtils from \"./TableUtils.js\";\nimport { BooleanColumnFormatter, CharColumnFormatter, DateTimeColumnFormatter, DecimalColumnFormatter, DefaultColumnFormatter, IntegerColumnFormatter, StringColumnFormatter } from \"./formatters/index.js\";\nexport class Formatter {\n /**\n * Converts FormattingRule[] to Map\n * @param columnFormattingRules Array or column formatting rules\n * @returns Map of columnName-to-format Maps indexed by normalized dataType\n */\n static makeColumnFormatMap(columnFormattingRules) {\n if (columnFormattingRules == null) {\n return new Map();\n }\n return columnFormattingRules.reduce((map, next) => {\n var dataType = TableUtils.getNormalizedType(next.columnType);\n if (dataType === null) {\n return map;\n }\n if (!map.has(dataType)) {\n map.set(dataType, new Map());\n }\n var formatMap = map.get(dataType);\n formatMap === null || formatMap === void 0 ? void 0 : formatMap.set(next.columnName, next.format);\n return map;\n }, new Map());\n }\n\n /**\n * Creates a column formatting rule\n * @param columnType Normalized data type\n * @param columnName Column name\n * @param format Format object\n */\n static makeColumnFormattingRule(columnType, columnName, format) {\n return {\n columnType,\n columnName,\n format\n };\n }\n\n /**\n * @param dh JSAPI instance\n * @param columnFormattingRules Optional array of column formatting rules\n * @param dateTimeOptions Optional object with DateTime configuration\n * @param decimalFormatOptions Optional object with Decimal configuration\n * @param integerFormatOptions Optional object with Integer configuration\n * @param truncateNumbersWithPound Determine if numbers should be truncated w/ repeating # instead of ellipsis at the end\n */\n constructor(dh) {\n var columnFormattingRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var dateTimeOptions = arguments.length > 2 ? arguments[2] : undefined;\n var decimalFormatOptions = arguments.length > 3 ? arguments[3] : undefined;\n var integerFormatOptions = arguments.length > 4 ? arguments[4] : undefined;\n var truncateNumbersWithPound = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var showEmptyStrings = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;\n var showNullStrings = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : true;\n _defineProperty(this, \"defaultColumnFormatter\", void 0);\n _defineProperty(this, \"typeFormatterMap\", void 0);\n _defineProperty(this, \"columnFormatMap\", void 0);\n _defineProperty(this, \"truncateNumbersWithPound\", void 0);\n _defineProperty(this, \"showEmptyStrings\", void 0);\n _defineProperty(this, \"showNullStrings\", void 0);\n // Formatting order:\n // - columnFormatMap[type][name]\n // - typeFormatterMap[type]\n // - defaultColumnFormatter\n\n this.defaultColumnFormatter = new DefaultColumnFormatter();\n\n // Default formatters by data type\n this.typeFormatterMap = new Map([[TableUtils.dataType.BOOLEAN, new BooleanColumnFormatter()], [TableUtils.dataType.CHAR, new CharColumnFormatter()], [TableUtils.dataType.DATETIME, new DateTimeColumnFormatter(dh, dateTimeOptions)], [TableUtils.dataType.DECIMAL, new DecimalColumnFormatter(dh, decimalFormatOptions)], [TableUtils.dataType.INT, new IntegerColumnFormatter(dh, integerFormatOptions)], [TableUtils.dataType.STRING, new StringColumnFormatter()]]);\n\n // Formats indexed by data type and column name\n this.columnFormatMap = Formatter.makeColumnFormatMap(columnFormattingRules);\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n }\n /**\n * Gets columnFormatMap indexed by name for a given column type, creates new Map entry if necessary\n * @param columnType column type\n * @param createIfNecessary create new entry if true\n * @returns Map of format strings indexed by column name or undefined if it doesn't exist\n */\n getColumnFormatMapForType(columnType) {\n var createIfNecessary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var dataType = TableUtils.getNormalizedType(columnType);\n if (dataType === null) {\n return undefined;\n }\n if (createIfNecessary && !this.columnFormatMap.has(dataType)) {\n this.columnFormatMap.set(dataType, new Map());\n }\n return this.columnFormatMap.get(dataType);\n }\n\n /**\n * Gets a column format object for a given column type and name\n * @param columnType column type\n * @param columnName column name\n * @returns format object or null for Default\n */\n getColumnFormat(columnType, columnName) {\n var _columnFormatMap$get;\n var columnFormatMap = this.getColumnFormatMapForType(columnType);\n return (_columnFormatMap$get = columnFormatMap === null || columnFormatMap === void 0 ? void 0 : columnFormatMap.get(columnName)) !== null && _columnFormatMap$get !== void 0 ? _columnFormatMap$get : null;\n }\n getColumnTypeFormatter(columnType) {\n var dataType = TableUtils.getNormalizedType(columnType);\n var columnTypeFormatter = this.defaultColumnFormatter;\n if (dataType) {\n var _this$typeFormatterMa;\n columnTypeFormatter = (_this$typeFormatterMa = this.typeFormatterMap.get(dataType)) !== null && _this$typeFormatterMa !== void 0 ? _this$typeFormatterMa : columnTypeFormatter;\n }\n return columnTypeFormatter;\n }\n\n /**\n * Gets formatted string for a given value, column type and name\n * @param value Value to format\n * @param columnType Column type used to determine the formatting settings\n * @param columnName Column name used to determine the formatting settings\n * @param formatOverride Format object passed to the formatter in place of the format defined in columnFormatMap\n */\n getFormattedString(value, columnType) {\n var columnName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var formatOverride = arguments.length > 3 ? arguments[3] : undefined;\n if (value == null) {\n return '';\n }\n var formatter = this.getColumnTypeFormatter(columnType);\n var format = formatOverride || this.getColumnFormat(columnType, columnName);\n return formatter.format(value, format !== null && format !== void 0 ? format : undefined);\n }\n\n /**\n * Gets the timeZone name\n * @returns The time zone name E.g. America/New_York\n */\n get timeZone() {\n var _formatter$dhTimeZone;\n var formatter = this.typeFormatterMap.get(TableUtils.dataType.DATETIME);\n return formatter === null || formatter === void 0 ? void 0 : (_formatter$dhTimeZone = formatter.dhTimeZone) === null || _formatter$dhTimeZone === void 0 ? void 0 : _formatter$dhTimeZone.id;\n }\n}\nexport default Formatter;\n//# sourceMappingURL=Formatter.js.map","import { TableColumnFormatter } from \"./formatters/index.js\";\nexport function getColumnFormats(settings) {\n if (settings && settings.formatter) {\n var {\n formatter\n } = settings;\n return formatter;\n }\n return undefined;\n}\nexport function getDateTimeFormatterOptions(settings) {\n return {\n timeZone: settings === null || settings === void 0 ? void 0 : settings.timeZone,\n defaultDateTimeFormatString: settings === null || settings === void 0 ? void 0 : settings.defaultDateTimeFormat,\n showTimeZone: settings === null || settings === void 0 ? void 0 : settings.showTimeZone,\n showTSeparator: settings === null || settings === void 0 ? void 0 : settings.showTSeparator\n };\n}\n\n/**\n * Check if the formatter has a custom format defined for the column name and type\n * @param formatter Formatter to check\n * @param columnName Column name\n * @param columnType Column type\n * @returns True, if a custom format is defined\n */\nexport function isCustomColumnFormatDefined(formatter, columnName, columnType) {\n var columnFormat = formatter.getColumnFormat(columnType, columnName);\n return columnFormat != null && (columnFormat.type === TableColumnFormatter.TYPE_CONTEXT_PRESET || columnFormat.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM);\n}\nexport default {\n getColumnFormats,\n getDateTimeFormatterOptions,\n isCustomColumnFormatDefined\n};\n//# sourceMappingURL=FormatterUtils.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class DownsamplingError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isDownsamplingError\", true);\n }\n}\nexport default DownsamplingError;\n//# sourceMappingURL=DownsamplingError.js.map","import { getExpressionRanges, resolveCssVariablesInRecord } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { ColorUtils } from '@deephaven/utils';\nimport chartThemeRaw from \"./ChartTheme.module.css\";\nvar log = Log.module('ChartTheme');\nexport function defaultChartTheme() {\n var _chartTheme$colorway;\n var chartTheme = resolveCssVariablesInRecord(chartThemeRaw);\n\n // The color normalization in `resolveCssVariablesInRecord` won't work for\n // colorway since it is an array of colors. We need to explicitly normalize\n // each color expression\n chartTheme.colorway = getExpressionRanges((_chartTheme$colorway = chartTheme.colorway) !== null && _chartTheme$colorway !== void 0 ? _chartTheme$colorway : '').map(_ref => {\n var [start, end] = _ref;\n return ColorUtils.normalizeCssColor(chartTheme.colorway.substring(start, end + 1));\n }).join(' ');\n log.debug2('Chart theme:', chartThemeRaw);\n log.debug2('Chart theme derived:', chartTheme);\n return Object.freeze({\n paper_bgcolor: chartTheme['paper-bgcolor'],\n plot_bgcolor: chartTheme['plot-bgcolor'],\n title_color: chartTheme['title-color'],\n legend_color: chartTheme['legend-color'],\n colorway: chartTheme.colorway,\n gridcolor: chartTheme.gridcolor,\n linecolor: chartTheme.linecolor,\n zerolinecolor: chartTheme.zerolinecolor,\n error_band_line_color: chartTheme['error-band-line-color'],\n ohlc_increasing: chartTheme['ohlc-increasing'],\n ohlc_decreasing: chartTheme['ohlc-decreasing'],\n // Geo\n coastline_color: chartTheme['coastline-color'],\n land_color: chartTheme['land-color'],\n ocean_color: chartTheme['ocean-color'],\n lake_color: chartTheme['lake-color'],\n river_color: chartTheme['river-color']\n });\n}\nexport default defaultChartTheme;\n//# sourceMappingURL=ChartTheme.js.map","import { createContext, useMemo } from 'react';\nimport { useTheme } from '@deephaven/components';\nimport defaultChartTheme from \"./ChartTheme.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ChartThemeContext = /*#__PURE__*/createContext(null);\n/*\n * Provides a chart theme based on the active themes from the ThemeProvider.\n */\nexport function ChartThemeProvider(_ref) {\n var {\n children\n } = _ref;\n var {\n activeThemes\n } = useTheme();\n var chartTheme = useMemo(defaultChartTheme, [activeThemes]);\n return /*#__PURE__*/_jsx(ChartThemeContext.Provider, {\n value: chartTheme,\n children: children\n });\n}\n//# sourceMappingURL=ChartThemeProvider.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ChartThemeContext } from \"./ChartThemeProvider.js\";\n/**\n * Hook to get the current `ChartThemeContextValue`.\n */\nexport function useChartTheme() {\n return useContextOrThrow(ChartThemeContext, 'No ChartThemeContext value found.');\n}\nexport default useChartTheme;\n//# sourceMappingURL=useChartTheme.js.map"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","_asyncToGenerator","fn","self","args","err","copyToClipboard","_x","_copyToClipboard","text","clipboard","copyToClipboardExecCommand","oldFocus","textArea","result","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","_defineProperty","obj","_toPropertyKey","_toPrimitive","input","hint","prim","res","themeSpectrumClassesCommon","palette","alias","global","light","dark","medium","large","theme","themeDHDefault","SpectrumThemeProvider","_ref","children","isPortal","colorScheme","id","useState","shortid","_jsx","Provider","POPPER_CLASS_NAME","Popper","Component","props","React","isShown","prevProps","element","popper","closeOnBlur","referenceObject","options","parent","PopperJs","popperEl","updateState","onEntered","onExited","show","className","timeout","interactive","CSSTransition","e","classNames","_jsxs","dataTestId","ReactDOM","PropTypes","ThemeExport","Popper$1","log","Log","Tooltip","prevState","oldIsShown","event","mouseX","mouseY","popperRect","parentRect","reshowTimeout","timerTimeout","_this$popper$current","_this$popper$current2","_this$popper$current3","popperClassName","Tooltip$1","TIMEOUT_DELAY","useCopyToClipboard","copied","setCopied","copiedTimeout","useRef","copy","useCallback","useEffect","_excluded","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","ref","variant","type","tooltip","icon","disabled","active","onClick","onContextMenu","onMouseDown","onMouseUp","onMouseEnter","onMouseLeave","onKeyDown","style","tabIndex","ariaLabel","rest","variantClassName","iconElem","FontAwesomeIcon","btnClassName","tooltipElem","ariaLabelString","button","Button$1","CopyButton","vsPassFilled","vsCopy","ThemeContext","createContext","ThemeProvider","customThemes","defaultPreloadValues","DEFAULT_PRELOAD_DATA_VARIABLES","baseThemes","useMemo","getDefaultBaseThemes","setValue","selectedThemeKey","setSelectedThemeKey","_getThemePreloadData$","_getThemePreloadData","getThemePreloadData","DEFAULT_DARK_THEME_KEY","activeThemes","getActiveThemes","themes","overrideSVGFillColors","preloadStyleContent","calculatePreloadStyleContent","setThemePreloadData","_Fragment","useTheme","useContextOrThrow","TableColumnFormatter","dh","format","formatA","formatB","label","formatString","TableColumnFormatter$1","BooleanColumnFormatter","BooleanColumnFormatter$1","CharColumnFormatter","CharColumnFormatter$1","DateTimeColumnFormatter","showTimeZone","showTSeparator","separator","tz","formatStringMap","timeZoneParam","defaultDateTimeFormatString","timeZone","baseFormatString","_this$formatStringMap","DecimalColumnFormatter","multiplier","defaultFormatString","valueParam","DefaultColumnFormatter","DefaultColumnFormatter$1","IntegerColumnFormatter","StringColumnFormatter","Formatter","columnFormattingRules","map","next","dataType","TableUtils","formatMap","columnType","columnName","dateTimeOptions","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","createIfNecessary","_columnFormatMap$get","columnFormatMap","columnTypeFormatter","_this$typeFormatterMa","formatOverride","formatter","_formatter$dhTimeZone","getColumnFormats","settings","getDateTimeFormatterOptions","isCustomColumnFormatDefined","columnFormat","FormatterUtils","DownsamplingError","defaultChartTheme","_chartTheme$colorway","chartTheme","resolveCssVariablesInRecord","chartThemeRaw","getExpressionRanges","start","end","ColorUtils","ChartThemeContext","ChartThemeProvider","useChartTheme"],"mappings":"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"}