@deephaven/dashboard-core-plugins 0.52.1-beta.0 → 0.52.1-deephaven-ui.3
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/ChartPlugin.d.ts +3 -2
- package/dist/ChartPlugin.d.ts.map +1 -1
- package/dist/ChartPlugin.js +18 -19
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ChartPluginConfig.d.ts +2 -2
- package/dist/ChartPluginConfig.d.ts.map +1 -1
- package/dist/ChartPluginConfig.js +8 -3
- package/dist/ChartPluginConfig.js.map +1 -1
- package/dist/GridPlugin.d.ts +3 -2
- package/dist/GridPlugin.d.ts.map +1 -1
- package/dist/GridPlugin.js +20 -17
- package/dist/GridPlugin.js.map +1 -1
- package/dist/GridPluginConfig.d.ts +2 -2
- package/dist/GridPluginConfig.d.ts.map +1 -1
- package/dist/GridPluginConfig.js +8 -3
- package/dist/GridPluginConfig.js.map +1 -1
- package/dist/PandasPluginConfig.js +1 -1
- package/dist/PandasPluginConfig.js.map +1 -1
- package/dist/WidgetLoaderPlugin.d.ts.map +1 -1
- package/dist/WidgetLoaderPlugin.js +6 -18
- package/dist/WidgetLoaderPlugin.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +16 -15
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +2 -1
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +1 -1
- package/dist/panels/IrisGridPanel.d.ts +7 -9
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/PandasPanel.d.ts +2 -2
- package/dist/panels/PandasPanel.d.ts.map +1 -1
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/Panel.d.ts +10 -3
- package/dist/panels/Panel.d.ts.map +1 -1
- package/dist/panels/Panel.js +17 -19
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/WidgetPanel.d.ts +3 -2
- package/dist/panels/WidgetPanel.d.ts.map +1 -1
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/useHydrateGrid.d.ts +1 -1
- package/dist/useHydrateGrid.d.ts.map +1 -1
- package/dist/useHydrateGrid.js.map +1 -1
- package/package.json +24 -24
package/dist/panels/Panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panel.js","names":["React","PureComponent","ReactDOM","classNames","memoize","ContextActions","LoadingOverlay","Tooltip","LayoutUtils","PanelEvent","assertNotNull","Log","ConsoleEvent","InputFilterEvent","TabEvent","PanelContextMenu","RenameDialog","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","Panel","constructor","props","_defineProperty","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","glEventHub","on","SESSION_CLOSED","SESSION_OPENED","focus","blur","CLEAR_ALL_FILTERS","componentDidUpdate","prevProps","componentPanel","emit","MOUNT","componentWillUnmount","off","UNMOUNT","tab","setState","getTitleFromTab","forceUpdate","onTab","e","onTabClicked","onClearAllFilters","arguments","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","onFocusCapture","onBlurCapture","createPortal","getAdditionActions","isShown","value","itemType","onCancel","onSubmit","interactive","options","placement","popperClassName","element","undefined"],"sources":["../../src/panels/Panel.tsx"],"sourcesContent":["import React, {\n Component,\n ComponentType,\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?: ComponentType | 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 { 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\n componentDidUpdate(prevProps: PanelProps): void {\n const { componentPanel, glEventHub } = this.props;\n\n // componentPanel ref could start undefined w/ WidgetLoaderPlugin wrapping panels\n if (prevProps.componentPanel == null && componentPanel != null) {\n glEventHub.emit(PanelEvent.MOUNT, componentPanel);\n }\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 if (componentPanel != null) {\n glEventHub.emit(PanelEvent.UNMOUNT, componentPanel);\n }\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
|
+
{"version":3,"file":"Panel.js","names":["React","PureComponent","ReactDOM","classNames","memoize","ContextActions","LoadingOverlay","Tooltip","LayoutUtils","PanelEvent","assertNotNull","Log","ConsoleEvent","InputFilterEvent","TabEvent","PanelContextMenu","RenameDialog","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","Panel","constructor","props","_defineProperty","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","ref","createRef","glContainer","state","title","getTitleFromContainer","showRenameDialog","isWithinPanel","componentDidMount","_this$ref$current","_this$ref$current$par","componentPanel","glEventHub","on","SESSION_CLOSED","SESSION_OPENED","focus","blur","CLEAR_ALL_FILTERS","emit","MOUNT","setState","current","parentElement","closest","componentWillUnmount","off","UNMOUNT","tab","getTitleFromTab","forceUpdate","onTab","e","onTabClicked","onClearAllFilters","arguments","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","onFocusCapture","onBlurCapture","createPortal","getAdditionActions","isShown","value","itemType","onCancel","onSubmit","interactive","options","placement","popperClassName","element","undefined"],"sources":["../../src/panels/Panel.tsx"],"sourcesContent":["import React, {\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, PanelComponent, 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 /**\n * Reference to the component panel.\n * Will wait until it is set before emitting mount/unmount events.\n *\n */\n componentPanel?: PanelComponent;\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 isWithinPanel: 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 this.ref = React.createRef<HTMLDivElement>();\n\n const { glContainer } = this.props;\n this.state = {\n title: LayoutUtils.getTitleFromContainer(glContainer),\n showRenameDialog: false,\n isWithinPanel: true,\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 ?? this);\n\n this.setState({\n isWithinPanel:\n this.ref.current?.parentElement?.closest('.dh-panel') != null,\n });\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 ?? this);\n }\n\n ref: React.RefObject<HTMLDivElement>;\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 ?? this);\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, isWithinPanel } = this.state;\n\n return (\n <div\n className={classNames('h-100 w-100 dh-panel', className)}\n onFocusCapture={this.handleFocus}\n onBlurCapture={this.handleBlur}\n ref={this.ref}\n >\n {children}\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoaded={isLoaded}\n isLoading={isLoading}\n />\n {!isWithinPanel &&\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,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PureComponent, ReactElement, ReactNode } from 'react';
|
|
2
|
+
import { PanelComponent } from '@deephaven/dashboard';
|
|
2
3
|
import type { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
3
4
|
import './WidgetPanel.scss';
|
|
4
5
|
interface WidgetPanelProps {
|
|
5
6
|
children: ReactNode;
|
|
6
|
-
componentPanel?:
|
|
7
|
+
componentPanel?: PanelComponent;
|
|
7
8
|
glContainer: Container;
|
|
8
9
|
glEventHub: EventEmitter;
|
|
9
10
|
className: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetPanel.d.ts","sourceRoot":"","sources":["../../src/panels/WidgetPanel.tsx"],"names":[],"mappings":"AAAA,OAAc,
|
|
1
|
+
{"version":3,"file":"WidgetPanel.d.ts","sourceRoot":"","sources":["../../src/panels/WidgetPanel.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKxE,OAAO,oBAAoB,CAAC;AAE5B,UAAU,gBAAgB;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;IAEzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC7C,aAAa,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,UAAU,gBAAgB;IACxB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B;AACD;;GAEG;AACH,cAAM,WAAY,SAAQ,aAAa,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACzE,MAAM,CAAC,YAAY;;;;;;;;;;;;;uBAcJ,IAAI;sBACL,IAAI;sBACJ,IAAI;iCACO,IAAI;wBACb,IAAI;8BACE,IAAI;6BACL,IAAI;sBACX,IAAI;yBACD,IAAI;0BACH,IAAI;4BACF,IAAI;MACtB;gBAEU,KAAK,EAAE,gBAAgB;IAgBnC,cAAc,IAAI,IAAI;IAKtB,eAAe,IAAI,MAAM,GAAG,SAAS;IA4BrC,yBAAyB,mBAEL,OAAO,eACV,SAAS,cACV,MAAM,cACN,MAAM,eACL,MAAM,gCAYrB;IAEF,mBAAmB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAU7C,mBAAmB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK7C,MAAM,IAAI,YAAY;CAqFvB;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetPanel.js","names":["React","PureComponent","classNames","memoize","ContextActions","copyToClipboard","Panel","WidgetPanelTooltip","jsx","_jsx","jsxs","_jsxs","WidgetPanel","constructor","props","_defineProperty","showTabTooltip","glContainer","widgetType","widgetName","description","handleSessionClosed","bind","handleSessionOpened","handleCopyName","state","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","isPanelInactive","getErrorMessage","errorMessage","concat","undefined","onSessionClose","setState","arguments","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 ComponentType,\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?: ComponentType | 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 { isPanelDisconnected, isWidgetDisconnected, 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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"}
|
|
1
|
+
{"version":3,"file":"WidgetPanel.js","names":["React","PureComponent","classNames","memoize","ContextActions","copyToClipboard","Panel","WidgetPanelTooltip","jsx","_jsx","jsxs","_jsxs","WidgetPanel","constructor","props","_defineProperty","showTabTooltip","glContainer","widgetType","widgetName","description","handleSessionClosed","bind","handleSessionOpened","handleCopyName","state","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","isPanelInactive","getErrorMessage","errorMessage","concat","undefined","onSessionClose","setState","arguments","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, { PureComponent, ReactElement, ReactNode } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { PanelComponent } from '@deephaven/dashboard';\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?: PanelComponent;\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 { isPanelDisconnected, isWidgetDisconnected, 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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"}
|
package/dist/useHydrateGrid.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DehydratedDashboardPanelProps, PanelHydrateFunction } from '@deephaven/dashboard';
|
|
2
|
-
import { IrisGridPanelProps } from './panels';
|
|
2
|
+
import { type IrisGridPanelProps } from './panels';
|
|
3
3
|
export declare function useHydrateGrid<P extends DehydratedDashboardPanelProps = DehydratedDashboardPanelProps>(): PanelHydrateFunction<P, P & Pick<IrisGridPanelProps, 'loadPlugin' | 'makeModel'>>;
|
|
4
4
|
export default useHydrateGrid;
|
|
5
5
|
//# sourceMappingURL=useHydrateGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHydrateGrid.d.ts","sourceRoot":"","sources":["../src/useHydrateGrid.ts"],"names":[],"mappings":"AACA,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAEL,kBAAkB,
|
|
1
|
+
{"version":3,"file":"useHydrateGrid.d.ts","sourceRoot":"","sources":["../src/useHydrateGrid.ts"],"names":[],"mappings":"AACA,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,UAAU,CAAC;AAGlB,wBAAgB,cAAc,CAC5B,CAAC,SAAS,6BAA6B,GAAG,6BAA6B,KACpE,oBAAoB,CACvB,CAAC,EACD,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,WAAW,CAAC,CACzD,CAuCA;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHydrateGrid.js","names":["useCallback","useApi","useConnection","IrisGridModelFactory","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","useLoadTablePlugin","useHydrateGrid","dh","connection","loadPlugin","hydrate","hydrateProps","id","metadata","_hydrateProps$metadat","name","table","type","VariableType","TABLE","Error","_objectSpread","localDashboardId","makeModel","_makeModel","_asyncToGenerator","tableName","definition","title","getObject","apply","arguments"],"sources":["../src/useHydrateGrid.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport {\n DehydratedDashboardPanelProps,\n PanelHydrateFunction,\n} from '@deephaven/dashboard';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { useConnection } from '@deephaven/jsapi-components';\nimport { Table } from '@deephaven/jsapi-types';\nimport { IrisGridModelFactory } from '@deephaven/iris-grid';\nimport {\n IrisGridPanelMetadata,\n IrisGridPanelProps,\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './panels';\nimport { useLoadTablePlugin } from './useLoadTablePlugin';\n\nexport function useHydrateGrid<\n P extends DehydratedDashboardPanelProps = DehydratedDashboardPanelProps,\n>(): PanelHydrateFunction<\n P,\n P & Pick<IrisGridPanelProps, 'loadPlugin' | 'makeModel'>\n> {\n const dh = useApi();\n const connection = useConnection();\n const loadPlugin = useLoadTablePlugin();\n\n const hydrate = useCallback(\n (hydrateProps: P, id: string) => {\n let metadata: IrisGridPanelMetadata;\n if (isIrisGridPanelMetadata(hydrateProps.metadata)) {\n metadata = hydrateProps.metadata;\n } else if (isLegacyIrisGridPanelMetadata(hydrateProps.metadata)) {\n metadata = {\n name: hydrateProps.metadata.table,\n type: hydrateProps.metadata.type ?? dh.VariableType.TABLE,\n };\n } else {\n throw new Error('Metadata is required for table panel');\n }\n\n return {\n ...hydrateProps,\n loadPlugin,\n localDashboardId: id,\n makeModel: async () => {\n const { name: tableName, type } = metadata;\n const definition = {\n title: tableName,\n name: tableName,\n type,\n };\n const table = (await connection.getObject(definition)) as Table;\n return IrisGridModelFactory.makeModel(dh, table);\n },\n };\n },\n [dh, connection, loadPlugin]\n );\n\n return hydrate;\n}\n\nexport default useHydrateGrid;\n"],"mappings":";;;;;;;AAAA,SAASA,WAAW,QAAQ,OAAO;AAKnC,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,aAAa,QAAQ,6BAA6B;AAE3D,SAASC,oBAAoB,QAAQ,sBAAsB;AAAC,SAI1DC,uBAAuB,EACvBC,6BAA6B;AAAA,SAEtBC,kBAAkB;AAE3B,OAAO,SAASC,cAAcA,CAAA,EAK5B;EACA,IAAMC,EAAE,GAAGP,MAAM,CAAC,CAAC;EACnB,IAAMQ,UAAU,GAAGP,aAAa,CAAC,CAAC;EAClC,IAAMQ,UAAU,GAAGJ,kBAAkB,CAAC,CAAC;EAEvC,IAAMK,OAAO,GAAGX,WAAW,CACzB,CAACY,YAAe,EAAEC,EAAU,KAAK;IAC/B,IAAIC,QAA+B;IACnC,IAAIV,uBAAuB,CAACQ,YAAY,CAACE,QAAQ,CAAC,EAAE;MAClDA,QAAQ,GAAGF,YAAY,CAACE,QAAQ;IAClC,CAAC,MAAM,IAAIT,6BAA6B,CAACO,YAAY,CAACE,QAAQ,CAAC,EAAE;MAAA,IAAAC,qBAAA;MAC/DD,QAAQ,GAAG;QACTE,IAAI,EAAEJ,YAAY,CAACE,QAAQ,CAACG,KAAK;QACjCC,IAAI,GAAAH,qBAAA,GAAEH,YAAY,CAACE,QAAQ,CAACI,IAAI,cAAAH,qBAAA,cAAAA,qBAAA,GAAIP,EAAE,CAACW,YAAY,CAACC;MACtD,CAAC;IACH,CAAC,MAAM;MACL,MAAM,IAAIC,KAAK,CAAC,sCAAsC,CAAC;IACzD;IAEA,OAAAC,aAAA,CAAAA,aAAA,KACKV,YAAY;MACfF,UAAU;MACVa,gBAAgB,EAAEV,EAAE;MACpBW,SAAS;QAAA,IAAAC,UAAA,GAAAC,iBAAA,CAAE,aAAY;UACrB,IAAM;YAAEV,IAAI,EAAEW,SAAS;YAAET;UAAK,CAAC,GAAGJ,QAAQ;UAC1C,IAAMc,UAAU,GAAG;YACjBC,KAAK,EAAEF,SAAS;YAChBX,IAAI,EAAEW,SAAS;YACfT;UACF,CAAC;UACD,IAAMD,KAAK,SAAUR,UAAU,CAACqB,SAAS,CAACF,UAAU,CAAW;UAC/D,OAAOzB,oBAAoB,CAACqB,SAAS,CAAChB,EAAE,EAAES,KAAK,CAAC;QAClD,CAAC;QAAA,SAAAO,UAAA;UAAA,OAAAC,UAAA,CAAAM,KAAA,OAAAC,SAAA;QAAA;QAAA,OAAAR,SAAA;MAAA;IAAA;EAEL,CAAC,EACD,CAAChB,EAAE,EAAEC,UAAU,EAAEC,UAAU,CAC7B,CAAC;EAED,OAAOC,OAAO;AAChB;AAEA,eAAeJ,cAAc"}
|
|
1
|
+
{"version":3,"file":"useHydrateGrid.js","names":["useCallback","useApi","useConnection","IrisGridModelFactory","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","useLoadTablePlugin","useHydrateGrid","dh","connection","loadPlugin","hydrate","hydrateProps","id","metadata","_hydrateProps$metadat","name","table","type","VariableType","TABLE","Error","_objectSpread","localDashboardId","makeModel","_makeModel","_asyncToGenerator","tableName","definition","title","getObject","apply","arguments"],"sources":["../src/useHydrateGrid.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport {\n DehydratedDashboardPanelProps,\n PanelHydrateFunction,\n} from '@deephaven/dashboard';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { useConnection } from '@deephaven/jsapi-components';\nimport { Table } from '@deephaven/jsapi-types';\nimport { IrisGridModelFactory } from '@deephaven/iris-grid';\nimport {\n type IrisGridPanelMetadata,\n type IrisGridPanelProps,\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './panels';\nimport { useLoadTablePlugin } from './useLoadTablePlugin';\n\nexport function useHydrateGrid<\n P extends DehydratedDashboardPanelProps = DehydratedDashboardPanelProps,\n>(): PanelHydrateFunction<\n P,\n P & Pick<IrisGridPanelProps, 'loadPlugin' | 'makeModel'>\n> {\n const dh = useApi();\n const connection = useConnection();\n const loadPlugin = useLoadTablePlugin();\n\n const hydrate = useCallback(\n (hydrateProps: P, id: string) => {\n let metadata: IrisGridPanelMetadata;\n if (isIrisGridPanelMetadata(hydrateProps.metadata)) {\n metadata = hydrateProps.metadata;\n } else if (isLegacyIrisGridPanelMetadata(hydrateProps.metadata)) {\n metadata = {\n name: hydrateProps.metadata.table,\n type: hydrateProps.metadata.type ?? dh.VariableType.TABLE,\n };\n } else {\n throw new Error('Metadata is required for table panel');\n }\n\n return {\n ...hydrateProps,\n loadPlugin,\n localDashboardId: id,\n makeModel: async () => {\n const { name: tableName, type } = metadata;\n const definition = {\n title: tableName,\n name: tableName,\n type,\n };\n const table = (await connection.getObject(definition)) as Table;\n return IrisGridModelFactory.makeModel(dh, table);\n },\n };\n },\n [dh, connection, loadPlugin]\n );\n\n return hydrate;\n}\n\nexport default useHydrateGrid;\n"],"mappings":";;;;;;;AAAA,SAASA,WAAW,QAAQ,OAAO;AAKnC,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,aAAa,QAAQ,6BAA6B;AAE3D,SAASC,oBAAoB,QAAQ,sBAAsB;AAAC,SAI1DC,uBAAuB,EACvBC,6BAA6B;AAAA,SAEtBC,kBAAkB;AAE3B,OAAO,SAASC,cAAcA,CAAA,EAK5B;EACA,IAAMC,EAAE,GAAGP,MAAM,CAAC,CAAC;EACnB,IAAMQ,UAAU,GAAGP,aAAa,CAAC,CAAC;EAClC,IAAMQ,UAAU,GAAGJ,kBAAkB,CAAC,CAAC;EAEvC,IAAMK,OAAO,GAAGX,WAAW,CACzB,CAACY,YAAe,EAAEC,EAAU,KAAK;IAC/B,IAAIC,QAA+B;IACnC,IAAIV,uBAAuB,CAACQ,YAAY,CAACE,QAAQ,CAAC,EAAE;MAClDA,QAAQ,GAAGF,YAAY,CAACE,QAAQ;IAClC,CAAC,MAAM,IAAIT,6BAA6B,CAACO,YAAY,CAACE,QAAQ,CAAC,EAAE;MAAA,IAAAC,qBAAA;MAC/DD,QAAQ,GAAG;QACTE,IAAI,EAAEJ,YAAY,CAACE,QAAQ,CAACG,KAAK;QACjCC,IAAI,GAAAH,qBAAA,GAAEH,YAAY,CAACE,QAAQ,CAACI,IAAI,cAAAH,qBAAA,cAAAA,qBAAA,GAAIP,EAAE,CAACW,YAAY,CAACC;MACtD,CAAC;IACH,CAAC,MAAM;MACL,MAAM,IAAIC,KAAK,CAAC,sCAAsC,CAAC;IACzD;IAEA,OAAAC,aAAA,CAAAA,aAAA,KACKV,YAAY;MACfF,UAAU;MACVa,gBAAgB,EAAEV,EAAE;MACpBW,SAAS;QAAA,IAAAC,UAAA,GAAAC,iBAAA,CAAE,aAAY;UACrB,IAAM;YAAEV,IAAI,EAAEW,SAAS;YAAET;UAAK,CAAC,GAAGJ,QAAQ;UAC1C,IAAMc,UAAU,GAAG;YACjBC,KAAK,EAAEF,SAAS;YAChBX,IAAI,EAAEW,SAAS;YACfT;UACF,CAAC;UACD,IAAMD,KAAK,SAAUR,UAAU,CAACqB,SAAS,CAACF,UAAU,CAAW;UAC/D,OAAOzB,oBAAoB,CAACqB,SAAS,CAAChB,EAAE,EAAES,KAAK,CAAC;QAClD,CAAC;QAAA,SAAAO,UAAA;UAAA,OAAAC,UAAA,CAAAM,KAAA,OAAAC,SAAA;QAAA;QAAA,OAAAR,SAAA;MAAA;IAAA;EAEL,CAAC,EACD,CAAChB,EAAE,EAAEC,UAAU,EAAEC,UAAU,CAC7B,CAAC;EAED,OAAOC,OAAO;AAChB;AAEA,eAAeJ,cAAc"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "0.52.1-
|
|
3
|
+
"version": "0.52.1-deephaven-ui.3+3d26d094",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,26 +22,26 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/chart": "^0.52.1-
|
|
26
|
-
"@deephaven/components": "^0.52.1-
|
|
27
|
-
"@deephaven/console": "^0.52.1-
|
|
28
|
-
"@deephaven/dashboard": "^0.52.1-
|
|
29
|
-
"@deephaven/file-explorer": "^0.52.1-
|
|
30
|
-
"@deephaven/filters": "^0.52.1-
|
|
31
|
-
"@deephaven/golden-layout": "^0.52.1-
|
|
32
|
-
"@deephaven/grid": "^0.52.1-
|
|
33
|
-
"@deephaven/icons": "^0.52.1-
|
|
34
|
-
"@deephaven/iris-grid": "^0.52.1-
|
|
35
|
-
"@deephaven/jsapi-bootstrap": "^0.52.1-
|
|
36
|
-
"@deephaven/jsapi-components": "^0.52.1-
|
|
37
|
-
"@deephaven/jsapi-types": "^0.52.1-
|
|
38
|
-
"@deephaven/jsapi-utils": "^0.52.1-
|
|
39
|
-
"@deephaven/log": "^0.52.1-
|
|
40
|
-
"@deephaven/plugin": "^0.52.1-
|
|
41
|
-
"@deephaven/react-hooks": "^0.52.1-
|
|
42
|
-
"@deephaven/redux": "^0.52.1-
|
|
43
|
-
"@deephaven/storage": "^0.52.1-
|
|
44
|
-
"@deephaven/utils": "^0.52.1-
|
|
25
|
+
"@deephaven/chart": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
26
|
+
"@deephaven/components": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
27
|
+
"@deephaven/console": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
28
|
+
"@deephaven/dashboard": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
29
|
+
"@deephaven/file-explorer": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
30
|
+
"@deephaven/filters": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
31
|
+
"@deephaven/golden-layout": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
32
|
+
"@deephaven/grid": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
33
|
+
"@deephaven/icons": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
34
|
+
"@deephaven/iris-grid": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
35
|
+
"@deephaven/jsapi-bootstrap": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
36
|
+
"@deephaven/jsapi-components": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
37
|
+
"@deephaven/jsapi-types": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
38
|
+
"@deephaven/jsapi-utils": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
39
|
+
"@deephaven/log": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
40
|
+
"@deephaven/plugin": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
41
|
+
"@deephaven/react-hooks": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
42
|
+
"@deephaven/redux": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
43
|
+
"@deephaven/storage": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
44
|
+
"@deephaven/utils": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
45
45
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
46
46
|
"classnames": "^2.3.1",
|
|
47
47
|
"deep-equal": "^2.0.5",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"react-redux": "^7.2.4"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@deephaven/jsapi-shim": "^0.52.1-
|
|
68
|
-
"@deephaven/mocks": "^0.52.1-
|
|
67
|
+
"@deephaven/jsapi-shim": "^0.52.1-deephaven-ui.3+3d26d094",
|
|
68
|
+
"@deephaven/mocks": "^0.52.1-deephaven-ui.3+3d26d094"
|
|
69
69
|
},
|
|
70
70
|
"files": [
|
|
71
71
|
"dist"
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "3d26d094937769f35c0743ceacaf0dbd66ab0d0b"
|
|
80
80
|
}
|