@deephaven/dashboard-core-plugins 0.42.1-beta.2 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/prop-types/UIPropTypes.d.ts +1 -6
- package/dist/prop-types/UIPropTypes.d.ts.map +1 -1
- package/package.json +22 -22
- package/dist/ChartBuilderPlugin.js +0 -54
- package/dist/ChartBuilderPlugin.js.map +0 -1
- package/dist/ChartPlugin.js +0 -66
- package/dist/ChartPlugin.js.map +0 -1
- package/dist/ConsolePlugin.js +0 -396
- package/dist/ConsolePlugin.js.map +0 -1
- package/dist/FilterPlugin.js +0 -205
- package/dist/FilterPlugin.js.map +0 -1
- package/dist/GridPlugin.js +0 -74
- package/dist/GridPlugin.js.map +0 -1
- package/dist/LinkerPlugin.js +0 -18
- package/dist/LinkerPlugin.js.map +0 -1
- package/dist/MarkdownPlugin.js +0 -87
- package/dist/MarkdownPlugin.js.map +0 -1
- package/dist/PandasPlugin.js +0 -66
- package/dist/PandasPlugin.js.map +0 -1
- package/dist/controls/ControlType.js +0 -10
- package/dist/controls/ControlType.js.map +0 -1
- package/dist/controls/dropdown-filter/DropdownFilter.css +0 -86
- package/dist/controls/dropdown-filter/DropdownFilter.css.map +0 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +0 -417
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +0 -1
- package/dist/controls/input-filter/InputFilter.css +0 -75
- package/dist/controls/input-filter/InputFilter.css.map +0 -1
- package/dist/controls/input-filter/InputFilter.js +0 -291
- package/dist/controls/input-filter/InputFilter.js.map +0 -1
- package/dist/controls/markdown/MarkdownContainer.js +0 -30
- package/dist/controls/markdown/MarkdownContainer.js.map +0 -1
- package/dist/controls/markdown/MarkdownEditor.js +0 -52
- package/dist/controls/markdown/MarkdownEditor.js.map +0 -1
- package/dist/controls/markdown/MarkdownStartPage.js +0 -109
- package/dist/controls/markdown/MarkdownStartPage.js.map +0 -1
- package/dist/controls/markdown/MarkdownUtils.js +0 -23
- package/dist/controls/markdown/MarkdownUtils.js.map +0 -1
- package/dist/events/ChartEvent.js +0 -9
- package/dist/events/ChartEvent.js.map +0 -1
- package/dist/events/ConsoleEvent.js +0 -11
- package/dist/events/ConsoleEvent.js.map +0 -1
- package/dist/events/InputFilterEvent.js +0 -14
- package/dist/events/InputFilterEvent.js.map +0 -1
- package/dist/events/IrisGridEvent.js +0 -12
- package/dist/events/IrisGridEvent.js.map +0 -1
- package/dist/events/MarkdownEvent.js +0 -4
- package/dist/events/MarkdownEvent.js.map +0 -1
- package/dist/events/NotebookEvent.js +0 -15
- package/dist/events/NotebookEvent.js.map +0 -1
- package/dist/events/PQEvent.js +0 -9
- package/dist/events/PQEvent.js.map +0 -1
- package/dist/events/PandasEvent.js +0 -8
- package/dist/events/PandasEvent.js.map +0 -1
- package/dist/events/TabEvent.js +0 -12
- package/dist/events/TabEvent.js.map +0 -1
- package/dist/events/index.js +0 -9
- package/dist/events/index.js.map +0 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +0 -1
- package/dist/linker/ColumnSelectionValidator.js +0 -2
- package/dist/linker/ColumnSelectionValidator.js.map +0 -1
- package/dist/linker/Linker.js +0 -736
- package/dist/linker/Linker.js.map +0 -1
- package/dist/linker/LinkerLink.css +0 -142
- package/dist/linker/LinkerLink.css.map +0 -1
- package/dist/linker/LinkerLink.js +0 -314
- package/dist/linker/LinkerLink.js.map +0 -1
- package/dist/linker/LinkerOverlayContent.css +0 -63
- package/dist/linker/LinkerOverlayContent.css.map +0 -1
- package/dist/linker/LinkerOverlayContent.js +0 -343
- package/dist/linker/LinkerOverlayContent.js.map +0 -1
- package/dist/linker/LinkerUtils.js +0 -139
- package/dist/linker/LinkerUtils.js.map +0 -1
- package/dist/linker/ToolType.js +0 -5
- package/dist/linker/ToolType.js.map +0 -1
- package/dist/linker/index.js +0 -2
- package/dist/linker/index.js.map +0 -1
- package/dist/panels/ChartColumnSelectorOverlay.css +0 -11
- package/dist/panels/ChartColumnSelectorOverlay.css.map +0 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +0 -38
- package/dist/panels/ChartColumnSelectorOverlay.js.map +0 -1
- package/dist/panels/ChartFilterOverlay.css +0 -22
- package/dist/panels/ChartFilterOverlay.css.map +0 -1
- package/dist/panels/ChartFilterOverlay.js +0 -90
- package/dist/panels/ChartFilterOverlay.js.map +0 -1
- package/dist/panels/ChartPanel.css +0 -38
- package/dist/panels/ChartPanel.css.map +0 -1
- package/dist/panels/ChartPanel.js +0 -971
- package/dist/panels/ChartPanel.js.map +0 -1
- package/dist/panels/ChartPanelUtils.js +0 -5
- package/dist/panels/ChartPanelUtils.js.map +0 -1
- package/dist/panels/CommandHistoryPanel.css +0 -19
- package/dist/panels/CommandHistoryPanel.css.map +0 -1
- package/dist/panels/CommandHistoryPanel.js +0 -195
- package/dist/panels/CommandHistoryPanel.js.map +0 -1
- package/dist/panels/ConsolePanel.css +0 -19
- package/dist/panels/ConsolePanel.css.map +0 -1
- package/dist/panels/ConsolePanel.js +0 -365
- package/dist/panels/ConsolePanel.js.map +0 -1
- package/dist/panels/DropdownFilterPanel.css +0 -6
- package/dist/panels/DropdownFilterPanel.css.map +0 -1
- package/dist/panels/DropdownFilterPanel.js +0 -685
- package/dist/panels/DropdownFilterPanel.js.map +0 -1
- package/dist/panels/FileExplorerPanel.css +0 -6
- package/dist/panels/FileExplorerPanel.css.map +0 -1
- package/dist/panels/FileExplorerPanel.js +0 -252
- package/dist/panels/FileExplorerPanel.js.map +0 -1
- package/dist/panels/FilterSetManager.css +0 -112
- package/dist/panels/FilterSetManager.css.map +0 -1
- package/dist/panels/FilterSetManager.js +0 -689
- package/dist/panels/FilterSetManager.js.map +0 -1
- package/dist/panels/FilterSetManagerPanel.css +0 -34
- package/dist/panels/FilterSetManagerPanel.css.map +0 -1
- package/dist/panels/FilterSetManagerPanel.js +0 -345
- package/dist/panels/FilterSetManagerPanel.js.map +0 -1
- package/dist/panels/InputFilterPanel.js +0 -232
- package/dist/panels/InputFilterPanel.js.map +0 -1
- package/dist/panels/IrisGridPanel.css +0 -24
- package/dist/panels/IrisGridPanel.css.map +0 -1
- package/dist/panels/IrisGridPanel.js +0 -1018
- package/dist/panels/IrisGridPanel.js.map +0 -1
- package/dist/panels/IrisGridPanelTooltip.js +0 -39
- package/dist/panels/IrisGridPanelTooltip.js.map +0 -1
- package/dist/panels/LogPanel.css +0 -15
- package/dist/panels/LogPanel.css.map +0 -1
- package/dist/panels/LogPanel.js +0 -110
- package/dist/panels/LogPanel.js.map +0 -1
- package/dist/panels/MarkdownNotebook.css +0 -107
- package/dist/panels/MarkdownNotebook.css.map +0 -1
- package/dist/panels/MarkdownNotebook.js +0 -232
- package/dist/panels/MarkdownNotebook.js.map +0 -1
- package/dist/panels/MarkdownPanel.css +0 -90
- package/dist/panels/MarkdownPanel.css.map +0 -1
- package/dist/panels/MarkdownPanel.js +0 -202
- package/dist/panels/MarkdownPanel.js.map +0 -1
- package/dist/panels/MockFileStorage.js +0 -70
- package/dist/panels/MockFileStorage.js.map +0 -1
- package/dist/panels/MockFileStorageTable.js +0 -80
- package/dist/panels/MockFileStorageTable.js.map +0 -1
- package/dist/panels/NotebookPanel.css +0 -44
- package/dist/panels/NotebookPanel.css.map +0 -1
- package/dist/panels/NotebookPanel.js +0 -1224
- package/dist/panels/NotebookPanel.js.map +0 -1
- package/dist/panels/PandasPanel.css +0 -15
- package/dist/panels/PandasPanel.css.map +0 -1
- package/dist/panels/PandasPanel.js +0 -86
- package/dist/panels/PandasPanel.js.map +0 -1
- package/dist/panels/Panel.js +0 -314
- package/dist/panels/Panel.js.map +0 -1
- package/dist/panels/PanelContextMenu.js +0 -126
- package/dist/panels/PanelContextMenu.js.map +0 -1
- package/dist/panels/RenameDialog.js +0 -156
- package/dist/panels/RenameDialog.js.map +0 -1
- package/dist/panels/WidgetPanel.css +0 -17
- package/dist/panels/WidgetPanel.css.map +0 -1
- package/dist/panels/WidgetPanel.js +0 -189
- package/dist/panels/WidgetPanel.js.map +0 -1
- package/dist/panels/WidgetPanelTooltip.css +0 -40
- package/dist/panels/WidgetPanelTooltip.css.map +0 -1
- package/dist/panels/WidgetPanelTooltip.js +0 -49
- package/dist/panels/WidgetPanelTooltip.js.map +0 -1
- package/dist/panels/index.js +0 -22
- package/dist/panels/index.js.map +0 -1
- package/dist/prop-types/CommonPropTypes.js +0 -9
- package/dist/prop-types/CommonPropTypes.js.map +0 -1
- package/dist/prop-types/UIPropTypes.js +0 -47
- package/dist/prop-types/UIPropTypes.js.map +0 -1
- package/dist/prop-types/index.js +0 -3
- package/dist/prop-types/index.js.map +0 -1
- package/dist/redux/actionTypes.js +0 -3
- package/dist/redux/actionTypes.js.map +0 -1
- package/dist/redux/actions.js +0 -88
- package/dist/redux/actions.js.map +0 -1
- package/dist/redux/index.js +0 -10
- package/dist/redux/index.js.map +0 -1
- package/dist/redux/reducers/connection.js +0 -7
- package/dist/redux/reducers/connection.js.map +0 -1
- package/dist/redux/reducers/index.js +0 -5
- package/dist/redux/reducers/index.js.map +0 -1
- package/dist/redux/reducers/sessionWrapper.js +0 -7
- package/dist/redux/reducers/sessionWrapper.js.map +0 -1
- package/dist/redux/selectors.js +0 -92
- package/dist/redux/selectors.js.map +0 -1
package/dist/panels/Panel.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Panel.js","names":["React","PureComponent","ReactDOM","classNames","memoize","ContextActions","LoadingOverlay","Tooltip","LayoutUtils","PanelEvent","assertNotNull","Log","ConsoleEvent","InputFilterEvent","TabEvent","PanelContextMenu","RenameDialog","log","module","Panel","constructor","props","actions","isClonable","isRenamable","additionalActions","push","getCloneAction","getRenameAction","handleClearAllFilters","bind","handleCopyPanel","handleFocus","handleBlur","handleHide","handleResize","handleSessionClosed","handleSessionOpened","handleBeforeShow","handleShow","handleTabBlur","handleTabFocus","handleRenameCancel","handleRenameSubmit","handleShowRenameDialog","handleTabClicked","handleTab","glContainer","state","title","getTitleFromContainer","showRenameDialog","componentDidMount","componentPanel","glEventHub","on","SESSION_CLOSED","SESSION_OPENED","focus","blur","CLEAR_ALL_FILTERS","emit","MOUNT","componentWillUnmount","off","UNMOUNT","tab","setState","getTitleFromTab","forceUpdate","onTab","e","onTabClicked","onClearAllFilters","event","FOCUS","onFocus","onBlur","onHide","onResize","session","onSessionClose","params","onSessionOpen","onBeforeShow","onShow","onTabBlur","onTabFocus","newTitle","root","getRootFromContainer","config","getComponentConfigFromContainer","renameComponent","error","cloneConfig","cloneComponent","CLONED","order","group","groups","high","action","medium","render","children","className","renderTabTooltip","errorMessage","isLoaded","isLoading","glTab","createPortal","getAdditionActions","placement","element","undefined"],"sources":["../../src/panels/Panel.tsx"],"sourcesContent":["import React, {\n Component,\n FocusEvent,\n FocusEventHandler,\n PureComponent,\n ReactElement,\n ReactNode,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport {\n ContextAction,\n ContextActions,\n LoadingOverlay,\n Tooltip,\n} from '@deephaven/components';\nimport { LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport type {\n Container,\n EventEmitter,\n ReactComponentConfig,\n Tab,\n} from '@deephaven/golden-layout';\nimport { assertNotNull } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport type { IdeSession } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, InputFilterEvent, TabEvent } from '../events';\nimport PanelContextMenu from './PanelContextMenu';\nimport RenameDialog from './RenameDialog';\n\nconst log = Log.module('Panel');\n\ninterface PanelProps {\n componentPanel: Component;\n children: ReactNode;\n glContainer: Container;\n glEventHub: EventEmitter;\n className: string;\n onFocus: FocusEventHandler<HTMLDivElement>;\n onBlur: FocusEventHandler<HTMLDivElement>;\n onTab: (tab: Tab) => void;\n onTabClicked: (e: MouseEvent) => void;\n onClearAllFilters: (...args: unknown[]) => void;\n onHide: (...args: unknown[]) => void;\n onResize: (...args: unknown[]) => void;\n onSessionClose: (session: IdeSession) => void;\n onSessionOpen: (\n session: IdeSession,\n { language, sessionId }: { language: string; sessionId: string }\n ) => void;\n onBeforeShow: (...args: unknown[]) => void;\n onShow: (...args: unknown[]) => void;\n onTabBlur: (...args: unknown[]) => void;\n onTabFocus: (...args: unknown[]) => void;\n renderTabTooltip: () => ReactNode;\n additionalActions: ContextAction[];\n errorMessage: string;\n isLoading: boolean;\n isLoaded: boolean;\n isClonable: boolean;\n isRenamable: boolean;\n}\n\ninterface PanelState {\n title?: string | null;\n showRenameDialog: boolean;\n}\n/**\n * Generic panel component that emits mount/unmount/focus events.\n * Also wires up some triggers for common events:\n * Focus, Resize, Show, Session open/close, client disconnect/reconnect.\n */\nclass Panel extends PureComponent<PanelProps, PanelState> {\n static defaultProps = {\n className: '',\n onTab: (): void => undefined,\n onTabClicked: (): void => undefined,\n onClearAllFilters: (): void => undefined,\n onFocus: (): void => undefined,\n onBlur: (): void => undefined,\n onHide: (): void => undefined,\n onResize: (): void => undefined,\n onSessionClose: (): void => undefined,\n onSessionOpen: (): void => undefined,\n onBeforeShow: (): void => undefined,\n onShow: (): void => undefined,\n onTabBlur: (): void => undefined,\n onTabFocus: (): void => undefined,\n renderTabTooltip: null,\n additionalActions: [],\n errorMessage: null,\n isLoading: false,\n isLoaded: true,\n isClonable: false,\n isRenamable: false,\n };\n\n constructor(props: PanelProps) {\n super(props);\n\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleCopyPanel = this.handleCopyPanel.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleBeforeShow = this.handleBeforeShow.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n this.handleShowRenameDialog = this.handleShowRenameDialog.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleTab = this.handleTab.bind(this);\n\n const { glContainer } = this.props;\n this.state = {\n title: LayoutUtils.getTitleFromContainer(glContainer),\n showRenameDialog: false,\n };\n }\n\n componentDidMount(): void {\n const { componentPanel, glContainer, glEventHub } = this.props;\n\n glContainer.on('resize', this.handleResize);\n glContainer.on('show', this.handleBeforeShow);\n glContainer.on('shown', this.handleShow);\n glContainer.on('hide', this.handleHide);\n glContainer.on('tab', this.handleTab);\n glContainer.on('tabClicked', this.handleTabClicked);\n glEventHub.on(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.on(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.on(TabEvent.focus, this.handleTabFocus);\n glEventHub.on(TabEvent.blur, this.handleTabBlur);\n glEventHub.on(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n\n glEventHub.emit(PanelEvent.MOUNT, componentPanel);\n }\n\n componentWillUnmount(): void {\n const { componentPanel, glContainer, glEventHub } = this.props;\n\n glContainer.off('resize', this.handleResize);\n glContainer.off('show', this.handleBeforeShow);\n glContainer.off('shown', this.handleShow);\n glContainer.off('hide', this.handleHide);\n glContainer.off('tab', this.handleTab);\n glContainer.off('tabClicked', this.handleTabClicked);\n glEventHub.off(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.off(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.off(TabEvent.focus, this.handleTabFocus);\n glEventHub.off(TabEvent.blur, this.handleTabBlur);\n glEventHub.off(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n\n glEventHub.emit(PanelEvent.UNMOUNT, componentPanel);\n }\n\n handleTab(tab: Tab): void {\n if (tab != null) {\n this.setState({\n title: LayoutUtils.getTitleFromTab(tab),\n });\n }\n // render after move can happen before tab event, glTab could be null\n // when tab event is emitted, force a render update\n this.forceUpdate();\n\n const { onTab } = this.props;\n onTab(tab);\n }\n\n handleTabClicked(e: MouseEvent): void {\n const { onTabClicked } = this.props;\n onTabClicked(e);\n }\n\n handleClearAllFilters(...args: unknown[]): void {\n const { onClearAllFilters } = this.props;\n onClearAllFilters(...args);\n }\n\n handleFocus(event: FocusEvent<HTMLDivElement>): void {\n const { componentPanel, glEventHub } = this.props;\n glEventHub.emit(PanelEvent.FOCUS, componentPanel);\n\n const { onFocus } = this.props;\n onFocus(event);\n }\n\n handleBlur(event: FocusEvent<HTMLDivElement>): void {\n const { onBlur } = this.props;\n onBlur(event);\n }\n\n handleHide(...args: unknown[]): void {\n const { onHide } = this.props;\n onHide(...args);\n }\n\n handleResize(...args: unknown[]): void {\n const { onResize } = this.props;\n onResize(...args);\n }\n\n handleSessionClosed(session: IdeSession): void {\n const { onSessionClose } = this.props;\n onSessionClose(session);\n }\n\n handleSessionOpened(\n session: IdeSession,\n params: { language: string; sessionId: string }\n ): void {\n const { onSessionOpen } = this.props;\n onSessionOpen(session, params);\n }\n\n handleBeforeShow(...args: unknown[]): void {\n const { onBeforeShow } = this.props;\n onBeforeShow(...args);\n }\n\n handleShow(...args: unknown[]): void {\n const { onShow } = this.props;\n onShow(...args);\n }\n\n handleTabBlur(...args: unknown[]): void {\n const { onTabBlur } = this.props;\n onTabBlur(...args);\n }\n\n handleTabFocus(...args: unknown[]): void {\n const { onTabFocus } = this.props;\n onTabFocus(...args);\n }\n\n handleRenameCancel(): void {\n this.setState({ showRenameDialog: false });\n }\n\n handleShowRenameDialog(): void {\n this.setState({ showRenameDialog: true });\n }\n\n handleRenameSubmit(newTitle: string): void {\n const { glContainer } = this.props;\n this.setState({ showRenameDialog: false, title: newTitle });\n const root = LayoutUtils.getRootFromContainer(glContainer);\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n assertNotNull(config);\n LayoutUtils.renameComponent(root, config, newTitle);\n }\n\n handleCopyPanel(): void {\n const { glContainer, glEventHub } = this.props;\n const root = LayoutUtils.getRootFromContainer(glContainer);\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const cloneConfig = LayoutUtils.cloneComponent(\n root,\n config as ReactComponentConfig\n );\n if (cloneConfig !== null) {\n glEventHub.emit(PanelEvent.CLONED, this, cloneConfig);\n }\n }\n\n getCloneAction(): ContextAction {\n return {\n title: 'Copy Panel',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleCopyPanel,\n };\n }\n\n getRenameAction(): ContextAction {\n return {\n title: 'Rename',\n order: 10,\n group: ContextActions.groups.medium,\n action: this.handleShowRenameDialog,\n };\n }\n\n getAdditionActions = memoize(\n (actions: ContextAction[], isClonable: boolean, isRenamable: boolean) => {\n const additionalActions = [];\n if (isClonable) {\n additionalActions.push(this.getCloneAction());\n }\n if (isRenamable) {\n additionalActions.push(this.getRenameAction());\n }\n return [...additionalActions, ...actions];\n }\n );\n\n render(): ReactElement {\n const {\n children,\n className,\n renderTabTooltip,\n glContainer,\n additionalActions,\n errorMessage,\n isLoaded,\n isLoading,\n isClonable,\n isRenamable,\n } = this.props;\n const { tab: glTab } = glContainer;\n const { showRenameDialog, title } = this.state;\n\n return (\n <div\n className={classNames('h-100 w-100 iris-panel', className)}\n onFocusCapture={this.handleFocus}\n onBlurCapture={this.handleBlur}\n >\n {children}\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoaded={isLoaded}\n isLoading={isLoading}\n />\n {glTab != null &&\n ReactDOM.createPortal(\n <>\n <PanelContextMenu\n glContainer={glContainer}\n additionalActions={this.getAdditionActions(\n additionalActions,\n isClonable,\n isRenamable\n )}\n />\n {isRenamable && (\n <RenameDialog\n isShown={showRenameDialog}\n value={title}\n itemType=\"Panel\"\n onCancel={this.handleRenameCancel}\n onSubmit={this.handleRenameSubmit}\n />\n )}\n {renderTabTooltip != null && (\n <Tooltip\n interactive\n options={{\n placement: 'bottom',\n }}\n popperClassName=\"panel-tab-popper\"\n >\n {renderTabTooltip()}\n </Tooltip>\n )}\n </>,\n glTab.element[0] // tab.element is jquery element, we want a dom element\n )}\n </div>\n );\n }\n}\n\nexport default Panel;\n"],"mappings":"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"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
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; }
|
|
2
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
-
function _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); }
|
|
4
|
-
import React, { PureComponent } from 'react';
|
|
5
|
-
import { ContextActions } from '@deephaven/components';
|
|
6
|
-
class PanelContextMenu extends PureComponent {
|
|
7
|
-
constructor(props) {
|
|
8
|
-
super(props);
|
|
9
|
-
this.handleCloseTab = this.handleCloseTab.bind(this);
|
|
10
|
-
this.handleCloseTabsRight = this.handleCloseTabsRight.bind(this);
|
|
11
|
-
this.handleCloseTabsAll = this.handleCloseTabsAll.bind(this);
|
|
12
|
-
}
|
|
13
|
-
getAllTabs() {
|
|
14
|
-
var _glContainer$tab$head, _glContainer$tab, _glContainer$tab$head2;
|
|
15
|
-
// return a clone of the tabs array, or returns empty array if null
|
|
16
|
-
var {
|
|
17
|
-
glContainer
|
|
18
|
-
} = this.props;
|
|
19
|
-
return [...((_glContainer$tab$head = glContainer === null || glContainer === void 0 ? void 0 : (_glContainer$tab = glContainer.tab) === null || _glContainer$tab === void 0 ? void 0 : (_glContainer$tab$head2 = _glContainer$tab.header) === null || _glContainer$tab$head2 === void 0 ? void 0 : _glContainer$tab$head2.tabs) !== null && _glContainer$tab$head !== void 0 ? _glContainer$tab$head : [])];
|
|
20
|
-
}
|
|
21
|
-
handleCloseTab() {
|
|
22
|
-
var {
|
|
23
|
-
glContainer
|
|
24
|
-
} = this.props;
|
|
25
|
-
glContainer.close();
|
|
26
|
-
}
|
|
27
|
-
handleCloseTabsAll() {
|
|
28
|
-
var tabs = this.getAllTabs();
|
|
29
|
-
|
|
30
|
-
// No need to check if isClosable, golden-layout returns
|
|
31
|
-
// false when attempting to close tabs that you can't
|
|
32
|
-
tabs.forEach(tab => {
|
|
33
|
-
var _container;
|
|
34
|
-
return (_container = (tab === null || tab === void 0 ? void 0 : tab.contentItem).container) === null || _container === void 0 ? void 0 : _container.close();
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
handleCloseTabsRight() {
|
|
38
|
-
var {
|
|
39
|
-
glContainer
|
|
40
|
-
} = this.props;
|
|
41
|
-
var tabs = this.getAllTabs();
|
|
42
|
-
for (var i = tabs.length - 1; i > 0; i -= 1) {
|
|
43
|
-
var _tabs$i$contentItem, _tabs$i$contentItem$c, _glContainer$tab2, _glContainer$tab2$con, _glContainer$tab2$con2, _container2, _tabs$i;
|
|
44
|
-
if (((_tabs$i$contentItem = tabs[i].contentItem) === null || _tabs$i$contentItem === void 0 ? void 0 : (_tabs$i$contentItem$c = _tabs$i$contentItem.config) === null || _tabs$i$contentItem$c === void 0 ? void 0 : _tabs$i$contentItem$c.id) === ((_glContainer$tab2 = glContainer.tab) === null || _glContainer$tab2 === void 0 ? void 0 : (_glContainer$tab2$con = _glContainer$tab2.contentItem) === null || _glContainer$tab2$con === void 0 ? void 0 : (_glContainer$tab2$con2 = _glContainer$tab2$con.config) === null || _glContainer$tab2$con2 === void 0 ? void 0 : _glContainer$tab2$con2.id)) {
|
|
45
|
-
break; // end when we get back to current id
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// eslint-disable-next-line no-unused-expressions
|
|
49
|
-
(_container2 = ((_tabs$i = tabs[i]) === null || _tabs$i === void 0 ? void 0 : _tabs$i.contentItem).container) === null || _container2 === void 0 ? void 0 : _container2.close();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
canCloseTabsRight() {
|
|
53
|
-
var {
|
|
54
|
-
glContainer
|
|
55
|
-
} = this.props;
|
|
56
|
-
var tabs = this.getAllTabs();
|
|
57
|
-
var disabled = true;
|
|
58
|
-
for (var i = tabs.length - 1; i > 0; i -= 1) {
|
|
59
|
-
var _tabs$i$contentItem2, _tabs$i$contentItem2$, _glContainer$tab3, _glContainer$tab3$con, _glContainer$tab3$con2, _tabs$i2, _tabs$i2$contentItem, _tabs$i2$contentItem$;
|
|
60
|
-
if (((_tabs$i$contentItem2 = tabs[i].contentItem) === null || _tabs$i$contentItem2 === void 0 ? void 0 : (_tabs$i$contentItem2$ = _tabs$i$contentItem2.config) === null || _tabs$i$contentItem2$ === void 0 ? void 0 : _tabs$i$contentItem2$.id) === ((_glContainer$tab3 = glContainer.tab) === null || _glContainer$tab3 === void 0 ? void 0 : (_glContainer$tab3$con = _glContainer$tab3.contentItem) === null || _glContainer$tab3$con === void 0 ? void 0 : (_glContainer$tab3$con2 = _glContainer$tab3$con.config) === null || _glContainer$tab3$con2 === void 0 ? void 0 : _glContainer$tab3$con2.id)) {
|
|
61
|
-
break; // end when we get back to current id
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
var closable = Boolean((_tabs$i2 = tabs[i]) === null || _tabs$i2 === void 0 ? void 0 : (_tabs$i2$contentItem = _tabs$i2.contentItem) === null || _tabs$i2$contentItem === void 0 ? void 0 : (_tabs$i2$contentItem$ = _tabs$i2$contentItem.config) === null || _tabs$i2$contentItem$ === void 0 ? void 0 : _tabs$i2$contentItem$.isClosable);
|
|
65
|
-
if (closable) {
|
|
66
|
-
disabled = false;
|
|
67
|
-
break; // end if we find a closeable tab
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return disabled;
|
|
72
|
-
}
|
|
73
|
-
canCloseAny() {
|
|
74
|
-
var tabs = this.getAllTabs();
|
|
75
|
-
var disabled = true;
|
|
76
|
-
for (var i = tabs.length - 1; i > 0; i -= 1) {
|
|
77
|
-
var _tabs$i3, _tabs$i3$contentItem, _tabs$i3$contentItem$;
|
|
78
|
-
var closable = Boolean((_tabs$i3 = tabs[i]) === null || _tabs$i3 === void 0 ? void 0 : (_tabs$i3$contentItem = _tabs$i3.contentItem) === null || _tabs$i3$contentItem === void 0 ? void 0 : (_tabs$i3$contentItem$ = _tabs$i3$contentItem.config) === null || _tabs$i3$contentItem$ === void 0 ? void 0 : _tabs$i3$contentItem$.isClosable);
|
|
79
|
-
if (closable) {
|
|
80
|
-
disabled = false;
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return disabled;
|
|
85
|
-
}
|
|
86
|
-
render() {
|
|
87
|
-
var _glContainer$tab4, _glContainer$tab4$con, _glContainer$tab4$con2;
|
|
88
|
-
var {
|
|
89
|
-
additionalActions,
|
|
90
|
-
glContainer
|
|
91
|
-
} = this.props;
|
|
92
|
-
var contextActions = [...additionalActions];
|
|
93
|
-
var closable = (_glContainer$tab4 = glContainer.tab) === null || _glContainer$tab4 === void 0 ? void 0 : (_glContainer$tab4$con = _glContainer$tab4.contentItem) === null || _glContainer$tab4$con === void 0 ? void 0 : (_glContainer$tab4$con2 = _glContainer$tab4$con.config) === null || _glContainer$tab4$con2 === void 0 ? void 0 : _glContainer$tab4$con2.isClosable;
|
|
94
|
-
contextActions.push({
|
|
95
|
-
title: 'Close',
|
|
96
|
-
order: 10,
|
|
97
|
-
group: ContextActions.groups.low,
|
|
98
|
-
action: this.handleCloseTab,
|
|
99
|
-
disabled: closable === undefined || !closable
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
// pushed as function so the disable check happens on run
|
|
103
|
-
contextActions.push(() => ({
|
|
104
|
-
title: 'Close Tabs to Right',
|
|
105
|
-
order: 20,
|
|
106
|
-
group: ContextActions.groups.low,
|
|
107
|
-
action: this.handleCloseTabsRight,
|
|
108
|
-
disabled: this.canCloseTabsRight()
|
|
109
|
-
}));
|
|
110
|
-
contextActions.push(() => ({
|
|
111
|
-
title: 'Close All',
|
|
112
|
-
order: 30,
|
|
113
|
-
group: ContextActions.groups.low,
|
|
114
|
-
action: this.handleCloseTabsAll,
|
|
115
|
-
disabled: this.canCloseAny()
|
|
116
|
-
}));
|
|
117
|
-
return /*#__PURE__*/React.createElement(ContextActions, {
|
|
118
|
-
actions: contextActions
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
_defineProperty(PanelContextMenu, "defaultProps", {
|
|
123
|
-
additionalActions: []
|
|
124
|
-
});
|
|
125
|
-
export default PanelContextMenu;
|
|
126
|
-
//# sourceMappingURL=PanelContextMenu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PanelContextMenu.js","names":["React","PureComponent","ContextActions","PanelContextMenu","constructor","props","handleCloseTab","bind","handleCloseTabsRight","handleCloseTabsAll","getAllTabs","glContainer","tab","header","tabs","close","forEach","contentItem","container","i","length","config","id","canCloseTabsRight","disabled","closable","Boolean","isClosable","canCloseAny","render","additionalActions","contextActions","push","title","order","group","groups","low","action","undefined"],"sources":["../../src/panels/PanelContextMenu.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport { ContextAction, ContextActions } from '@deephaven/components';\nimport type { Container, Tab } from '@deephaven/golden-layout';\n\ninterface PanelContextMenuProps {\n additionalActions: ContextAction[];\n glContainer: Container;\n}\n\ninterface HasContainer {\n container: {\n close: () => void;\n };\n}\nclass PanelContextMenu extends PureComponent<\n PanelContextMenuProps,\n Record<string, never>\n> {\n static defaultProps = {\n additionalActions: [],\n };\n\n constructor(props: PanelContextMenuProps) {\n super(props);\n\n this.handleCloseTab = this.handleCloseTab.bind(this);\n this.handleCloseTabsRight = this.handleCloseTabsRight.bind(this);\n this.handleCloseTabsAll = this.handleCloseTabsAll.bind(this);\n }\n\n getAllTabs(): Tab[] {\n // return a clone of the tabs array, or returns empty array if null\n const { glContainer } = this.props;\n return [...(glContainer?.tab?.header?.tabs ?? [])];\n }\n\n handleCloseTab(): void {\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseTabsAll(): void {\n const tabs = this.getAllTabs();\n\n // No need to check if isClosable, golden-layout returns\n // false when attempting to close tabs that you can't\n tabs.forEach(tab =>\n ((tab?.contentItem as unknown) as HasContainer).container?.close()\n );\n }\n\n handleCloseTabsRight(): void {\n const { glContainer } = this.props;\n const tabs = this.getAllTabs();\n\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (\n tabs[i].contentItem?.config?.id ===\n glContainer.tab?.contentItem?.config?.id\n ) {\n break; // end when we get back to current id\n }\n\n // eslint-disable-next-line no-unused-expressions\n ((tabs[i]?.contentItem as unknown) as HasContainer).container?.close();\n }\n }\n\n canCloseTabsRight(): boolean {\n const { glContainer } = this.props;\n const tabs = this.getAllTabs();\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (\n tabs[i].contentItem?.config?.id ===\n glContainer.tab?.contentItem?.config?.id\n ) {\n break; // end when we get back to current id\n }\n const closable = Boolean(tabs[i]?.contentItem?.config?.isClosable);\n if (closable) {\n disabled = false;\n break; // end if we find a closeable tab\n }\n }\n return disabled;\n }\n\n canCloseAny(): boolean {\n const tabs = this.getAllTabs();\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n const closable = Boolean(tabs[i]?.contentItem?.config?.isClosable);\n if (closable) {\n disabled = false;\n break;\n }\n }\n return disabled;\n }\n\n render(): ReactElement {\n const { additionalActions, glContainer } = this.props;\n\n const contextActions: (ContextAction | (() => ContextAction))[] = [\n ...additionalActions,\n ];\n\n const closable = glContainer.tab?.contentItem?.config?.isClosable;\n contextActions.push({\n title: 'Close',\n order: 10,\n group: ContextActions.groups.low,\n action: this.handleCloseTab,\n disabled: closable === undefined || !closable,\n });\n\n // pushed as function so the disable check happens on run\n contextActions.push(() => ({\n title: 'Close Tabs to Right',\n order: 20,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsRight,\n disabled: this.canCloseTabsRight(),\n }));\n\n contextActions.push(() => ({\n title: 'Close All',\n order: 30,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsAll,\n disabled: this.canCloseAny(),\n }));\n\n return <ContextActions actions={contextActions} />;\n }\n}\n\nexport default PanelContextMenu;\n"],"mappings":"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"}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
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; }
|
|
2
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
-
function _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); }
|
|
4
|
-
import React, { PureComponent } from 'react';
|
|
5
|
-
import classNames from 'classnames';
|
|
6
|
-
import { Button, Popper } from '@deephaven/components';
|
|
7
|
-
export default class RenameDialog extends PureComponent {
|
|
8
|
-
constructor(props) {
|
|
9
|
-
super(props);
|
|
10
|
-
_defineProperty(this, "renameInputRef", void 0);
|
|
11
|
-
this.handleRenameDialogOpened = this.handleRenameDialogOpened.bind(this);
|
|
12
|
-
this.handleRenameInputChange = this.handleRenameInputChange.bind(this);
|
|
13
|
-
this.handleRenameCancel = this.handleRenameCancel.bind(this);
|
|
14
|
-
this.handleRenameSubmit = this.handleRenameSubmit.bind(this);
|
|
15
|
-
this.renameInputRef = /*#__PURE__*/React.createRef();
|
|
16
|
-
var {
|
|
17
|
-
value
|
|
18
|
-
} = props;
|
|
19
|
-
this.state = {
|
|
20
|
-
value,
|
|
21
|
-
valueWasValidated: false
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
componentDidUpdate(prevProps) {
|
|
25
|
-
var {
|
|
26
|
-
isShown: prevIsShown
|
|
27
|
-
} = prevProps;
|
|
28
|
-
var {
|
|
29
|
-
isShown
|
|
30
|
-
} = this.props;
|
|
31
|
-
// Reset the state on dialog shown and not on the `value` prop change
|
|
32
|
-
// so the input keeps the internal value while the dialog is open.
|
|
33
|
-
// Useful in case the `value` prop update is triggered externally
|
|
34
|
-
// i.e. by someone else renaming the same shared dashboard
|
|
35
|
-
if (isShown && !prevIsShown) {
|
|
36
|
-
this.resetState();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
resetState() {
|
|
40
|
-
var {
|
|
41
|
-
value
|
|
42
|
-
} = this.props;
|
|
43
|
-
this.setState({
|
|
44
|
-
value,
|
|
45
|
-
valueWasValidated: false
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
handleRenameDialogOpened() {
|
|
49
|
-
var _this$renameInputRef, _this$renameInputRef$;
|
|
50
|
-
(_this$renameInputRef = this.renameInputRef) === null || _this$renameInputRef === void 0 ? void 0 : (_this$renameInputRef$ = _this$renameInputRef.current) === null || _this$renameInputRef$ === void 0 ? void 0 : _this$renameInputRef$.focus();
|
|
51
|
-
}
|
|
52
|
-
handleRenameInputChange(event) {
|
|
53
|
-
this.setState({
|
|
54
|
-
value: event.target.value
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
handleRenameCancel() {
|
|
58
|
-
var {
|
|
59
|
-
onCancel
|
|
60
|
-
} = this.props;
|
|
61
|
-
onCancel();
|
|
62
|
-
}
|
|
63
|
-
handleRenameSubmit(event) {
|
|
64
|
-
event.stopPropagation();
|
|
65
|
-
event.preventDefault();
|
|
66
|
-
var {
|
|
67
|
-
value
|
|
68
|
-
} = this.state;
|
|
69
|
-
var newTitle = value === null || value === void 0 ? void 0 : value.trim();
|
|
70
|
-
if (newTitle !== undefined && newTitle !== '') {
|
|
71
|
-
var {
|
|
72
|
-
onSubmit
|
|
73
|
-
} = this.props;
|
|
74
|
-
onSubmit(newTitle);
|
|
75
|
-
} else {
|
|
76
|
-
this.setState({
|
|
77
|
-
value: newTitle,
|
|
78
|
-
valueWasValidated: true
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
renderRenameDialog() {
|
|
83
|
-
var {
|
|
84
|
-
isShared,
|
|
85
|
-
isOwner,
|
|
86
|
-
itemType
|
|
87
|
-
} = this.props;
|
|
88
|
-
var {
|
|
89
|
-
value,
|
|
90
|
-
valueWasValidated
|
|
91
|
-
} = this.state;
|
|
92
|
-
return /*#__PURE__*/React.createElement("form", {
|
|
93
|
-
className: classNames('p-3', {
|
|
94
|
-
'was-validated': valueWasValidated
|
|
95
|
-
}),
|
|
96
|
-
onSubmit: this.handleRenameSubmit,
|
|
97
|
-
noValidate: true,
|
|
98
|
-
role: "presentation",
|
|
99
|
-
onMouseDown: event => {
|
|
100
|
-
// block events in the NewTabScreen ItemList
|
|
101
|
-
event.stopPropagation();
|
|
102
|
-
},
|
|
103
|
-
onMouseUp: event => {
|
|
104
|
-
event.stopPropagation();
|
|
105
|
-
}
|
|
106
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
107
|
-
className: "form-group"
|
|
108
|
-
}, /*#__PURE__*/React.createElement("label", {
|
|
109
|
-
htmlFor: "rename-dialog-".concat(itemType, "-input")
|
|
110
|
-
}, "Rename ", itemType), /*#__PURE__*/React.createElement("input", {
|
|
111
|
-
type: "text",
|
|
112
|
-
className: "form-control",
|
|
113
|
-
id: "rename-dialog-".concat(itemType, "-input"),
|
|
114
|
-
value: value !== null && value !== void 0 ? value : undefined,
|
|
115
|
-
ref: this.renameInputRef,
|
|
116
|
-
onChange: this.handleRenameInputChange,
|
|
117
|
-
required: true
|
|
118
|
-
}), /*#__PURE__*/React.createElement("div", {
|
|
119
|
-
className: "invalid-feedback"
|
|
120
|
-
}, itemType, " name cannot be empty"), (isShared || !isOwner) && /*#__PURE__*/React.createElement("div", {
|
|
121
|
-
className: "pt-2"
|
|
122
|
-
}, "Renaming this ", itemType, " will rename for all users.")), /*#__PURE__*/React.createElement("div", {
|
|
123
|
-
className: "text-right"
|
|
124
|
-
}, /*#__PURE__*/React.createElement(Button, {
|
|
125
|
-
kind: "secondary",
|
|
126
|
-
className: "mr-2",
|
|
127
|
-
onClick: this.handleRenameCancel
|
|
128
|
-
}, "Cancel"), /*#__PURE__*/React.createElement(Button, {
|
|
129
|
-
kind: "primary",
|
|
130
|
-
type: "submit"
|
|
131
|
-
}, "Rename")));
|
|
132
|
-
}
|
|
133
|
-
render() {
|
|
134
|
-
var {
|
|
135
|
-
isShown,
|
|
136
|
-
onCancel
|
|
137
|
-
} = this.props;
|
|
138
|
-
return /*#__PURE__*/React.createElement(Popper, {
|
|
139
|
-
isShown: isShown,
|
|
140
|
-
onEntered: this.handleRenameDialogOpened,
|
|
141
|
-
onExited: onCancel,
|
|
142
|
-
options: {
|
|
143
|
-
placement: 'bottom'
|
|
144
|
-
},
|
|
145
|
-
interactive: true,
|
|
146
|
-
closeOnBlur: true
|
|
147
|
-
}, this.renderRenameDialog());
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
_defineProperty(RenameDialog, "defaultProps", {
|
|
151
|
-
isShared: false,
|
|
152
|
-
isOwner: true,
|
|
153
|
-
itemType: 'Item',
|
|
154
|
-
value: ''
|
|
155
|
-
});
|
|
156
|
-
//# sourceMappingURL=RenameDialog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RenameDialog.js","names":["React","PureComponent","classNames","Button","Popper","RenameDialog","constructor","props","handleRenameDialogOpened","bind","handleRenameInputChange","handleRenameCancel","handleRenameSubmit","renameInputRef","createRef","value","state","valueWasValidated","componentDidUpdate","prevProps","isShown","prevIsShown","resetState","setState","current","focus","event","target","onCancel","stopPropagation","preventDefault","newTitle","trim","undefined","onSubmit","renderRenameDialog","isShared","isOwner","itemType","render","placement"],"sources":["../../src/panels/RenameDialog.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n FormEvent,\n PureComponent,\n ReactElement,\n RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport { Button, Popper } from '@deephaven/components';\n\ninterface RenameDialogProps {\n isShared: boolean;\n isOwner: boolean;\n isShown: boolean;\n itemType: string;\n onSubmit: (title: string) => void;\n onCancel: () => void;\n value?: string | null;\n}\n\ninterface RenameDialogState {\n value?: string | null;\n valueWasValidated: boolean;\n}\n\nexport default class RenameDialog extends PureComponent<\n RenameDialogProps,\n RenameDialogState\n> {\n static defaultProps = {\n isShared: false,\n isOwner: true,\n itemType: 'Item',\n value: '',\n };\n\n constructor(props: RenameDialogProps) {\n super(props);\n\n this.handleRenameDialogOpened = this.handleRenameDialogOpened.bind(this);\n this.handleRenameInputChange = this.handleRenameInputChange.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n\n this.renameInputRef = React.createRef();\n\n const { value } = props;\n\n this.state = {\n value,\n valueWasValidated: false,\n };\n }\n\n componentDidUpdate(prevProps: RenameDialogProps): void {\n const { isShown: prevIsShown } = prevProps;\n const { isShown } = this.props;\n // Reset the state on dialog shown and not on the `value` prop change\n // so the input keeps the internal value while the dialog is open.\n // Useful in case the `value` prop update is triggered externally\n // i.e. by someone else renaming the same shared dashboard\n if (isShown && !prevIsShown) {\n this.resetState();\n }\n }\n\n renameInputRef: RefObject<HTMLInputElement>;\n\n resetState(): void {\n const { value } = this.props;\n this.setState({ value, valueWasValidated: false });\n }\n\n handleRenameDialogOpened(): void {\n this.renameInputRef?.current?.focus();\n }\n\n handleRenameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({ value: event.target.value });\n }\n\n handleRenameCancel(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n handleRenameSubmit(event: FormEvent<HTMLFormElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { value } = this.state;\n const newTitle = value?.trim();\n if (newTitle !== undefined && newTitle !== '') {\n const { onSubmit } = this.props;\n onSubmit(newTitle);\n } else {\n this.setState({ value: newTitle, valueWasValidated: true });\n }\n }\n\n renderRenameDialog(): ReactElement {\n const { isShared, isOwner, itemType } = this.props;\n const { value, valueWasValidated } = this.state;\n\n return (\n <form\n className={classNames('p-3', { 'was-validated': valueWasValidated })}\n onSubmit={this.handleRenameSubmit}\n noValidate\n role=\"presentation\"\n onMouseDown={event => {\n // block events in the NewTabScreen ItemList\n event.stopPropagation();\n }}\n onMouseUp={event => {\n event.stopPropagation();\n }}\n >\n <div className=\"form-group\">\n <label htmlFor={`rename-dialog-${itemType}-input`}>\n Rename {itemType}\n </label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`rename-dialog-${itemType}-input`}\n value={value ?? undefined}\n ref={this.renameInputRef}\n onChange={this.handleRenameInputChange}\n required\n />\n <div className=\"invalid-feedback\">\n {itemType} name cannot be empty\n </div>\n {(isShared || !isOwner) && (\n <div className=\"pt-2\">\n Renaming this {itemType} will rename for all users.\n </div>\n )}\n </div>\n\n <div className=\"text-right\">\n <Button\n kind=\"secondary\"\n className=\"mr-2\"\n onClick={this.handleRenameCancel}\n >\n Cancel\n </Button>\n <Button kind=\"primary\" type=\"submit\">\n Rename\n </Button>\n </div>\n </form>\n );\n }\n\n render(): ReactElement {\n const { isShown, onCancel } = this.props;\n return (\n <Popper\n isShown={isShown}\n onEntered={this.handleRenameDialogOpened}\n onExited={onCancel}\n options={{\n placement: 'bottom',\n }}\n interactive\n closeOnBlur\n >\n {this.renderRenameDialog()}\n </Popper>\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
2
|
-
.query-status-bar {
|
|
3
|
-
position: absolute;
|
|
4
|
-
bottom: 0;
|
|
5
|
-
left: 0;
|
|
6
|
-
z-index: 30;
|
|
7
|
-
text-align: left;
|
|
8
|
-
display: block;
|
|
9
|
-
padding: 3px 5px;
|
|
10
|
-
background: rgba(45, 42, 46, 0.95);
|
|
11
|
-
color: #c0bfbf;
|
|
12
|
-
border-top: 1px solid #5b5a5c;
|
|
13
|
-
border-right: 1px solid #5b5a5c;
|
|
14
|
-
min-width: 400px;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/*# sourceMappingURL=WidgetPanel.css.map */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/panels/WidgetPanel.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OCSS;EDRT;EACA;EACA","file":"WidgetPanel.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n.query-status-bar {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: 30;\n text-align: left;\n display: block;\n padding: 3px 5px;\n background: rgba($content-bg, 0.95);\n color: $gray-300;\n border-top: 1px solid $gray-500;\n border-right: 1px solid $gray-500;\n min-width: 400px;\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
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; }
|
|
2
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
-
function _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); }
|
|
4
|
-
import React, { PureComponent } from 'react';
|
|
5
|
-
import classNames from 'classnames';
|
|
6
|
-
import memoize from 'memoize-one';
|
|
7
|
-
import { ContextActions } from '@deephaven/components';
|
|
8
|
-
import { copyToClipboard } from '@deephaven/utils';
|
|
9
|
-
import Panel from "./Panel.js";
|
|
10
|
-
import WidgetPanelTooltip from "./WidgetPanelTooltip.js";
|
|
11
|
-
import "./WidgetPanel.css";
|
|
12
|
-
/**
|
|
13
|
-
* Widget panel component that has a loading spinner and displays an error message when set
|
|
14
|
-
*/
|
|
15
|
-
class WidgetPanel extends PureComponent {
|
|
16
|
-
constructor(props) {
|
|
17
|
-
super(props);
|
|
18
|
-
_defineProperty(this, "getCachedRenderTabTooltip", memoize((showTabTooltip, glContainer, widgetType, widgetName, description) => showTabTooltip ? () => /*#__PURE__*/React.createElement(WidgetPanelTooltip, {
|
|
19
|
-
glContainer: glContainer,
|
|
20
|
-
widgetType: widgetType,
|
|
21
|
-
widgetName: widgetName,
|
|
22
|
-
description: description
|
|
23
|
-
}) : null));
|
|
24
|
-
this.handleSessionClosed = this.handleSessionClosed.bind(this);
|
|
25
|
-
this.handleSessionOpened = this.handleSessionOpened.bind(this);
|
|
26
|
-
this.handleCopyName = this.handleCopyName.bind(this);
|
|
27
|
-
this.state = {
|
|
28
|
-
isClientDisconnected: false,
|
|
29
|
-
isPanelDisconnected: false,
|
|
30
|
-
isWidgetDisconnected: false,
|
|
31
|
-
isWaitingForReconnect: false,
|
|
32
|
-
isPanelInactive: false
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
handleCopyName() {
|
|
36
|
-
var {
|
|
37
|
-
widgetName
|
|
38
|
-
} = this.props;
|
|
39
|
-
copyToClipboard(widgetName);
|
|
40
|
-
}
|
|
41
|
-
getErrorMessage() {
|
|
42
|
-
var {
|
|
43
|
-
errorMessage
|
|
44
|
-
} = this.props;
|
|
45
|
-
var {
|
|
46
|
-
isClientDisconnected,
|
|
47
|
-
isPanelDisconnected,
|
|
48
|
-
isWidgetDisconnected,
|
|
49
|
-
isWaitingForReconnect
|
|
50
|
-
} = this.state;
|
|
51
|
-
if (errorMessage) {
|
|
52
|
-
return "".concat(errorMessage);
|
|
53
|
-
}
|
|
54
|
-
if (isClientDisconnected && isPanelDisconnected && isWaitingForReconnect) {
|
|
55
|
-
return 'Disconnected from server.\nCheck your internet connection.';
|
|
56
|
-
}
|
|
57
|
-
if (isClientDisconnected && isPanelDisconnected) {
|
|
58
|
-
return 'Disconnected from server.';
|
|
59
|
-
}
|
|
60
|
-
if (isPanelDisconnected) {
|
|
61
|
-
var {
|
|
62
|
-
widgetName,
|
|
63
|
-
widgetType
|
|
64
|
-
} = this.props;
|
|
65
|
-
return "Variable \"".concat(widgetName, "\" not set.\n").concat(widgetType, " does not exist yet.");
|
|
66
|
-
}
|
|
67
|
-
if (isWidgetDisconnected) {
|
|
68
|
-
var {
|
|
69
|
-
widgetName: _widgetName
|
|
70
|
-
} = this.props;
|
|
71
|
-
return "".concat(_widgetName, " is unavailable.");
|
|
72
|
-
}
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
handleSessionClosed() {
|
|
76
|
-
var {
|
|
77
|
-
onSessionClose
|
|
78
|
-
} = this.props;
|
|
79
|
-
// The session has closed and we won't be able to reconnect, as this widget isn't persisted
|
|
80
|
-
this.setState({
|
|
81
|
-
isPanelDisconnected: true,
|
|
82
|
-
isWaitingForReconnect: false
|
|
83
|
-
});
|
|
84
|
-
onSessionClose(...arguments);
|
|
85
|
-
}
|
|
86
|
-
handleSessionOpened() {
|
|
87
|
-
var {
|
|
88
|
-
onSessionOpen
|
|
89
|
-
} = this.props;
|
|
90
|
-
onSessionOpen(...arguments);
|
|
91
|
-
}
|
|
92
|
-
render() {
|
|
93
|
-
var {
|
|
94
|
-
children,
|
|
95
|
-
className,
|
|
96
|
-
componentPanel,
|
|
97
|
-
isLoaded,
|
|
98
|
-
isLoading,
|
|
99
|
-
glContainer,
|
|
100
|
-
glEventHub,
|
|
101
|
-
isDisconnected,
|
|
102
|
-
isClonable,
|
|
103
|
-
isRenamable,
|
|
104
|
-
showTabTooltip,
|
|
105
|
-
renderTabTooltip,
|
|
106
|
-
widgetType,
|
|
107
|
-
widgetName,
|
|
108
|
-
description,
|
|
109
|
-
onClearAllFilters,
|
|
110
|
-
onHide,
|
|
111
|
-
onFocus,
|
|
112
|
-
onBlur,
|
|
113
|
-
onResize,
|
|
114
|
-
onShow,
|
|
115
|
-
onTabBlur,
|
|
116
|
-
onTabFocus,
|
|
117
|
-
onTabClicked
|
|
118
|
-
} = this.props;
|
|
119
|
-
var {
|
|
120
|
-
isPanelDisconnected,
|
|
121
|
-
isWidgetDisconnected,
|
|
122
|
-
isPanelInactive
|
|
123
|
-
} = this.state;
|
|
124
|
-
var errorMessage = this.getErrorMessage();
|
|
125
|
-
var doRenderTabTooltip = renderTabTooltip !== null && renderTabTooltip !== void 0 ? renderTabTooltip : this.getCachedRenderTabTooltip(showTabTooltip, glContainer, widgetType, widgetName, description);
|
|
126
|
-
var additionalActions = [{
|
|
127
|
-
title: "Copy ".concat(widgetType, " Name"),
|
|
128
|
-
group: ContextActions.groups.medium,
|
|
129
|
-
order: 20,
|
|
130
|
-
action: this.handleCopyName
|
|
131
|
-
}];
|
|
132
|
-
return /*#__PURE__*/React.createElement(Panel, {
|
|
133
|
-
className: classNames(className, {
|
|
134
|
-
disconnected: isPanelDisconnected || isWidgetDisconnected || isDisconnected,
|
|
135
|
-
inactive: isPanelInactive
|
|
136
|
-
}),
|
|
137
|
-
componentPanel: componentPanel,
|
|
138
|
-
glContainer: glContainer,
|
|
139
|
-
glEventHub: glEventHub,
|
|
140
|
-
onClearAllFilters: onClearAllFilters,
|
|
141
|
-
onHide: onHide,
|
|
142
|
-
onFocus: onFocus,
|
|
143
|
-
onBlur: onBlur,
|
|
144
|
-
onResize: onResize,
|
|
145
|
-
onShow: onShow,
|
|
146
|
-
onSessionClose: this.handleSessionClosed,
|
|
147
|
-
onSessionOpen: this.handleSessionOpened,
|
|
148
|
-
onTabBlur: onTabBlur,
|
|
149
|
-
onTabFocus: onTabFocus,
|
|
150
|
-
onTabClicked: onTabClicked,
|
|
151
|
-
renderTabTooltip: doRenderTabTooltip,
|
|
152
|
-
errorMessage: errorMessage,
|
|
153
|
-
isLoaded: isLoaded,
|
|
154
|
-
isLoading: isLoading,
|
|
155
|
-
isClonable: isClonable,
|
|
156
|
-
isRenamable: isRenamable,
|
|
157
|
-
additionalActions: additionalActions
|
|
158
|
-
}, children, isPanelInactive && /*#__PURE__*/React.createElement("div", {
|
|
159
|
-
className: "fill-parent-absolute"
|
|
160
|
-
}));
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
_defineProperty(WidgetPanel, "defaultProps", {
|
|
164
|
-
className: '',
|
|
165
|
-
errorMessage: null,
|
|
166
|
-
isClonable: true,
|
|
167
|
-
isDisconnected: false,
|
|
168
|
-
isLoading: false,
|
|
169
|
-
isLoaded: true,
|
|
170
|
-
isRenamable: true,
|
|
171
|
-
showTabTooltip: true,
|
|
172
|
-
widgetName: 'Widget',
|
|
173
|
-
widgetType: 'Widget',
|
|
174
|
-
renderTabTooltip: null,
|
|
175
|
-
description: '',
|
|
176
|
-
onFocus: () => undefined,
|
|
177
|
-
onBlur: () => undefined,
|
|
178
|
-
onHide: () => undefined,
|
|
179
|
-
onClearAllFilters: () => undefined,
|
|
180
|
-
onResize: () => undefined,
|
|
181
|
-
onSessionClose: () => undefined,
|
|
182
|
-
onSessionOpen: () => undefined,
|
|
183
|
-
onShow: () => undefined,
|
|
184
|
-
onTabBlur: () => undefined,
|
|
185
|
-
onTabFocus: () => undefined,
|
|
186
|
-
onTabClicked: () => undefined
|
|
187
|
-
});
|
|
188
|
-
export default WidgetPanel;
|
|
189
|
-
//# sourceMappingURL=WidgetPanel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetPanel.js","names":["React","PureComponent","classNames","memoize","ContextActions","copyToClipboard","Panel","WidgetPanelTooltip","WidgetPanel","constructor","props","showTabTooltip","glContainer","widgetType","widgetName","description","handleSessionClosed","bind","handleSessionOpened","handleCopyName","state","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","isPanelInactive","getErrorMessage","errorMessage","undefined","onSessionClose","setState","onSessionOpen","render","children","className","componentPanel","isLoaded","isLoading","glEventHub","isDisconnected","isClonable","isRenamable","renderTabTooltip","onClearAllFilters","onHide","onFocus","onBlur","onResize","onShow","onTabBlur","onTabFocus","onTabClicked","doRenderTabTooltip","getCachedRenderTabTooltip","additionalActions","title","group","groups","medium","order","action","disconnected","inactive"],"sources":["../../src/panels/WidgetPanel.tsx"],"sourcesContent":["import React, {\n Component,\n PureComponent,\n ReactElement,\n ReactNode,\n} from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { ContextActions } from '@deephaven/components';\nimport { copyToClipboard } from '@deephaven/utils';\nimport Panel from './Panel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './WidgetPanel.scss';\n\ninterface WidgetPanelProps {\n children: ReactNode;\n componentPanel: Component;\n\n glContainer: Container;\n glEventHub: EventEmitter;\n\n className: string;\n errorMessage: string;\n isClonable: boolean;\n isDisconnected: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isRenamable: boolean;\n showTabTooltip: boolean;\n widgetName: string;\n widgetType: string;\n renderTabTooltip: () => ReactNode;\n description: string;\n\n onFocus: () => void;\n onBlur: () => void;\n onHide: () => void;\n onClearAllFilters: () => void;\n onResize: () => void;\n onSessionClose: (...args: unknown[]) => void;\n onSessionOpen: (...args: unknown[]) => void;\n onShow: () => void;\n onTabBlur: () => void;\n onTabFocus: () => void;\n onTabClicked: () => void;\n}\n\ninterface WidgetPanelState {\n isClientDisconnected: boolean;\n isPanelDisconnected: boolean;\n isWidgetDisconnected: boolean;\n isWaitingForReconnect: boolean;\n isPanelInactive: boolean;\n}\n/**\n * Widget panel component that has a loading spinner and displays an error message when set\n */\nclass WidgetPanel extends PureComponent<WidgetPanelProps, WidgetPanelState> {\n static defaultProps = {\n className: '',\n errorMessage: null,\n isClonable: true,\n isDisconnected: false,\n isLoading: false,\n isLoaded: true,\n isRenamable: true,\n showTabTooltip: true,\n widgetName: 'Widget',\n widgetType: 'Widget',\n renderTabTooltip: null,\n description: '',\n\n onFocus: (): void => undefined,\n onBlur: (): void => undefined,\n onHide: (): void => undefined,\n onClearAllFilters: (): void => undefined,\n onResize: (): void => undefined,\n onSessionClose: (): void => undefined,\n onSessionOpen: (): void => undefined,\n onShow: (): void => undefined,\n onTabBlur: (): void => undefined,\n onTabFocus: (): void => undefined,\n onTabClicked: (): void => undefined,\n };\n\n constructor(props: WidgetPanelProps) {\n super(props);\n\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleCopyName = this.handleCopyName.bind(this);\n\n this.state = {\n isClientDisconnected: false,\n isPanelDisconnected: false,\n isWidgetDisconnected: false,\n isWaitingForReconnect: false,\n isPanelInactive: false,\n };\n }\n\n handleCopyName(): void {\n const { widgetName } = this.props;\n copyToClipboard(widgetName);\n }\n\n getErrorMessage(): string | undefined {\n const { errorMessage } = this.props;\n const {\n isClientDisconnected,\n isPanelDisconnected,\n isWidgetDisconnected,\n isWaitingForReconnect,\n } = this.state;\n if (errorMessage) {\n return `${errorMessage}`;\n }\n if (isClientDisconnected && isPanelDisconnected && isWaitingForReconnect) {\n return 'Disconnected from server.\\nCheck your internet connection.';\n }\n if (isClientDisconnected && isPanelDisconnected) {\n return 'Disconnected from server.';\n }\n if (isPanelDisconnected) {\n const { widgetName, widgetType } = this.props;\n return `Variable \"${widgetName}\" not set.\\n${widgetType} does not exist yet.`;\n }\n if (isWidgetDisconnected) {\n const { widgetName } = this.props;\n return `${widgetName} is unavailable.`;\n }\n return undefined;\n }\n\n getCachedRenderTabTooltip = memoize(\n (\n showTabTooltip: boolean,\n glContainer: Container,\n widgetType: string,\n widgetName: string,\n description: string\n ) =>\n showTabTooltip\n ? () => (\n <WidgetPanelTooltip\n glContainer={glContainer}\n widgetType={widgetType}\n widgetName={widgetName}\n description={description}\n />\n )\n : null\n );\n\n handleSessionClosed(...args: unknown[]): void {\n const { onSessionClose } = this.props;\n // The session has closed and we won't be able to reconnect, as this widget isn't persisted\n this.setState({\n isPanelDisconnected: true,\n isWaitingForReconnect: false,\n });\n onSessionClose(...args);\n }\n\n handleSessionOpened(...args: unknown[]): void {\n const { onSessionOpen } = this.props;\n onSessionOpen(...args);\n }\n\n render(): ReactElement {\n const {\n children,\n className,\n componentPanel,\n isLoaded,\n isLoading,\n glContainer,\n glEventHub,\n isDisconnected,\n isClonable,\n isRenamable,\n showTabTooltip,\n renderTabTooltip,\n widgetType,\n widgetName,\n description,\n\n onClearAllFilters,\n onHide,\n onFocus,\n onBlur,\n onResize,\n onShow,\n onTabBlur,\n onTabFocus,\n onTabClicked,\n } = this.props;\n\n const {\n isPanelDisconnected,\n isWidgetDisconnected,\n isPanelInactive,\n } = this.state;\n const errorMessage = this.getErrorMessage();\n const doRenderTabTooltip =\n renderTabTooltip ??\n this.getCachedRenderTabTooltip(\n showTabTooltip,\n glContainer,\n widgetType,\n widgetName,\n description\n );\n\n const additionalActions = [\n {\n title: `Copy ${widgetType} Name`,\n group: ContextActions.groups.medium,\n order: 20,\n action: this.handleCopyName,\n },\n ];\n\n return (\n <Panel\n className={classNames(className, {\n disconnected:\n isPanelDisconnected || isWidgetDisconnected || isDisconnected,\n inactive: isPanelInactive,\n })}\n componentPanel={componentPanel}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={onClearAllFilters}\n onHide={onHide}\n onFocus={onFocus}\n onBlur={onBlur}\n onResize={onResize}\n onShow={onShow}\n onSessionClose={this.handleSessionClosed}\n onSessionOpen={this.handleSessionOpened}\n onTabBlur={onTabBlur}\n onTabFocus={onTabFocus}\n onTabClicked={onTabClicked}\n renderTabTooltip={doRenderTabTooltip}\n errorMessage={errorMessage}\n isLoaded={isLoaded}\n isLoading={isLoading}\n isClonable={isClonable}\n isRenamable={isRenamable}\n additionalActions={additionalActions}\n >\n {children}\n {isPanelInactive && <div className=\"fill-parent-absolute\" />}\n </Panel>\n );\n }\n}\n\nexport default WidgetPanel;\n"],"mappings":"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"}
|