@deephaven/dashboard 1.22.1 → 1.22.2-alpha-pivot-builder.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/BasePanel.js +48 -75
  2. package/dist/BasePanel.js.map +1 -1
  3. package/dist/Dashboard.js +32 -16
  4. package/dist/Dashboard.js.map +1 -1
  5. package/dist/DashboardEvents.js +10 -10
  6. package/dist/DashboardEvents.js.map +1 -1
  7. package/dist/DashboardLayout.js +42 -25
  8. package/dist/DashboardLayout.js.map +1 -1
  9. package/dist/DashboardPanelWrapper.js +19 -14
  10. package/dist/DashboardPanelWrapper.js.map +1 -1
  11. package/dist/DashboardUtils.js +6 -13
  12. package/dist/DashboardUtils.js.map +1 -1
  13. package/dist/LazyDashboard.js +13 -6
  14. package/dist/LazyDashboard.js.map +1 -1
  15. package/dist/NavigationEvent.js +20 -20
  16. package/dist/NavigationEvent.js.map +1 -1
  17. package/dist/PanelContextMenu.js +13 -24
  18. package/dist/PanelContextMenu.js.map +1 -1
  19. package/dist/PanelErrorBoundary.js +5 -10
  20. package/dist/PanelErrorBoundary.js.map +1 -1
  21. package/dist/PanelEvent.js +10 -11
  22. package/dist/PanelEvent.js.map +1 -1
  23. package/dist/PanelManager.js +10 -28
  24. package/dist/PanelManager.js.map +1 -1
  25. package/dist/PersistentStateContext.js +22 -19
  26. package/dist/PersistentStateContext.js.map +1 -1
  27. package/dist/RenameDialog.js +17 -34
  28. package/dist/RenameDialog.js.map +1 -1
  29. package/dist/layout/LayoutUtils.js +28 -37
  30. package/dist/layout/LayoutUtils.js.map +1 -1
  31. package/dist/layout/useDashboardPanel.js +16 -25
  32. package/dist/layout/useDashboardPanel.js.map +1 -1
  33. package/dist/redux/index.js +9 -1
  34. package/dist/redux/index.js.map +1 -1
  35. package/dist/useFiber.js +10 -4
  36. package/dist/useFiber.js.map +1 -1
  37. package/dist/usePersistentState.js +25 -16
  38. package/dist/usePersistentState.js.map +1 -1
  39. package/package.json +10 -10
package/dist/BasePanel.js CHANGED
@@ -50,9 +50,7 @@ class BasePanel extends PureComponent {
50
50
  this.handleTabClicked = this.handleTabClicked.bind(this);
51
51
  this.handleTab = this.handleTab.bind(this);
52
52
  this.ref = /*#__PURE__*/React.createRef();
53
- var {
54
- glContainer
55
- } = this.props;
53
+ var glContainer = this.props.glContainer;
56
54
  this.state = {
57
55
  title: LayoutUtils.getTitleFromContainer(glContainer),
58
56
  showRenameDialog: false,
@@ -61,11 +59,10 @@ class BasePanel extends PureComponent {
61
59
  }
62
60
  componentDidMount() {
63
61
  var _this$ref$current;
64
- var {
65
- componentPanel,
66
- glContainer,
67
- glEventHub
68
- } = this.props;
62
+ var _this$props = this.props,
63
+ componentPanel = _this$props.componentPanel,
64
+ glContainer = _this$props.glContainer,
65
+ glEventHub = _this$props.glEventHub;
69
66
  glContainer.on('resize', this.handleResize);
70
67
  glContainer.on('show', this.handleBeforeShow);
71
68
  glContainer.on('shown', this.handleShow);
@@ -80,11 +77,10 @@ class BasePanel extends PureComponent {
80
77
  });
81
78
  }
82
79
  componentWillUnmount() {
83
- var {
84
- componentPanel,
85
- glContainer,
86
- glEventHub
87
- } = this.props;
80
+ var _this$props2 = this.props,
81
+ componentPanel = _this$props2.componentPanel,
82
+ glContainer = _this$props2.glContainer,
83
+ glEventHub = _this$props2.glEventHub;
88
84
  glContainer.off('resize', this.handleResize);
89
85
  glContainer.off('show', this.handleBeforeShow);
90
86
  glContainer.off('shown', this.handleShow);
@@ -104,83 +100,62 @@ class BasePanel extends PureComponent {
104
100
  // render after move can happen before tab event, glTab could be null
105
101
  // when tab event is emitted, force a render update
106
102
  this.forceUpdate();
107
- var {
108
- onTab
109
- } = this.props;
103
+ var onTab = this.props.onTab;
110
104
  onTab === null || onTab === void 0 || onTab(tab);
111
105
  }
112
106
  handleTabClicked(e) {
113
- var {
114
- onTabClicked
115
- } = this.props;
107
+ var onTabClicked = this.props.onTabClicked;
116
108
  onTabClicked === null || onTabClicked === void 0 || onTabClicked(e);
117
109
  }
118
110
  handleFocus(event) {
119
- var {
120
- componentPanel,
121
- glEventHub
122
- } = this.props;
111
+ var _this$props3 = this.props,
112
+ componentPanel = _this$props3.componentPanel,
113
+ glEventHub = _this$props3.glEventHub;
123
114
  glEventHub.emit(PanelEvent.FOCUS, componentPanel !== null && componentPanel !== void 0 ? componentPanel : this);
124
- var {
125
- onFocus
126
- } = this.props;
115
+ var onFocus = this.props.onFocus;
127
116
  onFocus === null || onFocus === void 0 || onFocus(event);
128
117
  }
129
118
  handleBlur(event) {
130
- var {
131
- onBlur
132
- } = this.props;
119
+ var onBlur = this.props.onBlur;
133
120
  onBlur === null || onBlur === void 0 || onBlur(event);
134
121
  }
135
122
  handleHide() {
136
- var {
137
- onHide
138
- } = this.props;
123
+ var onHide = this.props.onHide;
139
124
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
140
125
  args[_key] = arguments[_key];
141
126
  }
142
127
  onHide === null || onHide === void 0 || onHide(...args);
143
128
  }
144
129
  handleResize() {
145
- var {
146
- onResize
147
- } = this.props;
130
+ var onResize = this.props.onResize;
148
131
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
149
132
  args[_key2] = arguments[_key2];
150
133
  }
151
134
  onResize === null || onResize === void 0 || onResize(...args);
152
135
  }
153
136
  handleBeforeShow() {
154
- var {
155
- onBeforeShow
156
- } = this.props;
137
+ var onBeforeShow = this.props.onBeforeShow;
157
138
  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
158
139
  args[_key3] = arguments[_key3];
159
140
  }
160
141
  onBeforeShow === null || onBeforeShow === void 0 || onBeforeShow(...args);
161
142
  }
162
143
  handleShow() {
163
- var {
164
- onShow
165
- } = this.props;
144
+ var onShow = this.props.onShow;
166
145
  for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
167
146
  args[_key4] = arguments[_key4];
168
147
  }
169
148
  onShow === null || onShow === void 0 || onShow(...args);
170
149
  }
171
150
  handleTabBlur() {
172
- var {
173
- onTabBlur
174
- } = this.props;
151
+ var onTabBlur = this.props.onTabBlur;
175
152
  for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
176
153
  args[_key5] = arguments[_key5];
177
154
  }
178
155
  onTabBlur === null || onTabBlur === void 0 || onTabBlur(...args);
179
156
  }
180
157
  handleTabFocus() {
181
- var {
182
- onTabFocus
183
- } = this.props;
158
+ var onTabFocus = this.props.onTabFocus;
184
159
  for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
185
160
  args[_key6] = arguments[_key6];
186
161
  }
@@ -197,9 +172,7 @@ class BasePanel extends PureComponent {
197
172
  });
198
173
  }
199
174
  handleRenameSubmit(newTitle) {
200
- var {
201
- glContainer
202
- } = this.props;
175
+ var glContainer = this.props.glContainer;
203
176
  this.setState({
204
177
  showRenameDialog: false,
205
178
  title: newTitle
@@ -210,10 +183,9 @@ class BasePanel extends PureComponent {
210
183
  LayoutUtils.renameComponent(root, config, newTitle);
211
184
  }
212
185
  handleCopyPanel() {
213
- var {
214
- glContainer,
215
- glEventHub
216
- } = this.props;
186
+ var _this$props4 = this.props,
187
+ glContainer = _this$props4.glContainer,
188
+ glEventHub = _this$props4.glEventHub;
217
189
  var root = LayoutUtils.getRootFromContainer(glContainer);
218
190
  var config = LayoutUtils.getComponentConfigFromContainer(glContainer);
219
191
  if (config == null) {
@@ -242,27 +214,28 @@ class BasePanel extends PureComponent {
242
214
  };
243
215
  }
244
216
  render() {
245
- var {
246
- children,
247
- className,
248
- renderTabTooltip,
249
- glContainer,
250
- glEventHub,
251
- additionalActions = EMPTY_ARRAY,
252
- errorMessage,
253
- isLoaded = true,
254
- isLoading = false,
255
- isClonable = false,
256
- isRenamable = false
257
- } = this.props;
258
- var {
259
- tab: glTab
260
- } = glContainer;
261
- var {
262
- showRenameDialog,
263
- title,
264
- isWithinPanel
265
- } = this.state;
217
+ var _this$props5 = this.props,
218
+ children = _this$props5.children,
219
+ className = _this$props5.className,
220
+ renderTabTooltip = _this$props5.renderTabTooltip,
221
+ glContainer = _this$props5.glContainer,
222
+ glEventHub = _this$props5.glEventHub,
223
+ _this$props5$addition = _this$props5.additionalActions,
224
+ additionalActions = _this$props5$addition === void 0 ? EMPTY_ARRAY : _this$props5$addition,
225
+ errorMessage = _this$props5.errorMessage,
226
+ _this$props5$isLoaded = _this$props5.isLoaded,
227
+ isLoaded = _this$props5$isLoaded === void 0 ? true : _this$props5$isLoaded,
228
+ _this$props5$isLoadin = _this$props5.isLoading,
229
+ isLoading = _this$props5$isLoadin === void 0 ? false : _this$props5$isLoadin,
230
+ _this$props5$isClonab = _this$props5.isClonable,
231
+ isClonable = _this$props5$isClonab === void 0 ? false : _this$props5$isClonab,
232
+ _this$props5$isRenama = _this$props5.isRenamable,
233
+ isRenamable = _this$props5$isRenama === void 0 ? false : _this$props5$isRenama;
234
+ var glTab = glContainer.tab;
235
+ var _this$state = this.state,
236
+ showRenameDialog = _this$state.showRenameDialog,
237
+ title = _this$state.title,
238
+ isWithinPanel = _this$state.isWithinPanel;
266
239
  return /*#__PURE__*/_jsxs("div", {
267
240
  className: classNames('h-100 w-100 dh-panel', className),
268
241
  onFocusCapture: this.handleFocus,
@@ -1 +1 @@
1
- {"version":3,"file":"BasePanel.js","names":["React","PureComponent","ReactDOM","classNames","memoize","ContextActions","createXComponent","LoadingOverlay","Tooltip","assertNotNull","EMPTY_ARRAY","Log","LayoutUtils","PanelEvent","PanelContextMenu","RenameDialog","TabEvent","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","BasePanel","constructor","props","_defineProperty","actions","isClonable","isRenamable","additionalActions","push","getCloneAction","getRenameAction","handleCopyPanel","bind","handleFocus","handleBlur","handleHide","handleResize","handleBeforeShow","handleShow","handleTabBlur","handleTabFocus","handleRenameCancel","handleRenameSubmit","handleShowRenameDialog","handleTabClicked","handleTab","ref","createRef","glContainer","state","title","getTitleFromContainer","showRenameDialog","isWithinPanel","componentDidMount","_this$ref$current","componentPanel","glEventHub","on","focus","blur","emit","MOUNT","setState","current","parentElement","closest","componentWillUnmount","off","UNMOUNT","tab","getTitleFromTab","forceUpdate","onTab","e","onTabClicked","event","FOCUS","onFocus","onBlur","onHide","_len","arguments","length","args","Array","_key","onResize","_len2","_key2","onBeforeShow","_len3","_key3","onShow","_len4","_key4","onTabBlur","_len5","_key5","onTabFocus","_len6","_key6","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","getAdditionalActions","isShown","value","itemType","onCancel","onSubmit","interactive","options","placement","popperClassName","element","XBasePanel"],"sources":["../src/BasePanel.tsx"],"sourcesContent":["import React, {\n type FocusEvent,\n type FocusEventHandler,\n PureComponent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport {\n type ContextAction,\n ContextActions,\n createXComponent,\n LoadingOverlay,\n type ResolvableContextAction,\n Tooltip,\n} from '@deephaven/components';\nimport type {\n Container,\n EventEmitter,\n ReactComponentConfig,\n Tab,\n} from '@deephaven/golden-layout';\nimport { assertNotNull, EMPTY_ARRAY } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport LayoutUtils from './layout/LayoutUtils';\nimport { type PanelComponent } from './DashboardPlugin';\nimport PanelEvent from './PanelEvent';\nimport PanelContextMenu from './PanelContextMenu';\nimport RenameDialog from './RenameDialog';\nimport TabEvent from './TabEvent';\nimport './Panel.scss';\n\nconst log = Log.module('Panel');\n\nexport type BasePanelProps = {\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 onHide?: (...args: unknown[]) => void;\n onResize?: (...args: unknown[]) => 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?: ResolvableContextAction[];\n errorMessage?: string;\n isLoading?: boolean;\n isLoaded?: boolean;\n isClonable?: boolean;\n isRenamable?: boolean;\n};\n\ninterface BasePanelState {\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\n */\nclass BasePanel extends PureComponent<BasePanelProps, BasePanelState> {\n constructor(props: BasePanelProps) {\n super(props);\n\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.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(TabEvent.focus, this.handleTabFocus);\n glEventHub.on(TabEvent.blur, this.handleTabBlur);\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(TabEvent.focus, this.handleTabFocus);\n glEventHub.off(TabEvent.blur, this.handleTabBlur);\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 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 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 getAdditionalActions = memoize(\n (\n actions: readonly ResolvableContextAction[],\n isClonable: boolean,\n isRenamable: boolean\n ) => {\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 glEventHub,\n additionalActions = EMPTY_ARRAY,\n errorMessage,\n isLoaded = true,\n isLoading = false,\n isClonable = false,\n isRenamable = false,\n } = this.props;\n\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 data-testid=\"base-panel-loading\"\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 glEventHub={glEventHub}\n additionalActions={this.getAdditionalActions(\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\nconst XBasePanel = createXComponent(BasePanel);\n\nexport default XBasePanel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BasePanel.js","names":["React","PureComponent","ReactDOM","classNames","memoize","ContextActions","createXComponent","LoadingOverlay","Tooltip","assertNotNull","EMPTY_ARRAY","Log","LayoutUtils","PanelEvent","PanelContextMenu","RenameDialog","TabEvent","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","BasePanel","constructor","props","_defineProperty","actions","isClonable","isRenamable","additionalActions","push","getCloneAction","getRenameAction","handleCopyPanel","bind","handleFocus","handleBlur","handleHide","handleResize","handleBeforeShow","handleShow","handleTabBlur","handleTabFocus","handleRenameCancel","handleRenameSubmit","handleShowRenameDialog","handleTabClicked","handleTab","ref","createRef","glContainer","state","title","getTitleFromContainer","showRenameDialog","isWithinPanel","componentDidMount","_this$ref$current","_this$props","componentPanel","glEventHub","on","focus","blur","emit","MOUNT","setState","current","parentElement","closest","componentWillUnmount","_this$props2","off","UNMOUNT","tab","getTitleFromTab","forceUpdate","onTab","e","onTabClicked","event","_this$props3","FOCUS","onFocus","onBlur","onHide","_len","arguments","length","args","Array","_key","onResize","_len2","_key2","onBeforeShow","_len3","_key3","onShow","_len4","_key4","onTabBlur","_len5","_key5","onTabFocus","_len6","_key6","newTitle","root","getRootFromContainer","config","getComponentConfigFromContainer","renameComponent","_this$props4","error","cloneConfig","cloneComponent","CLONED","order","group","groups","high","action","medium","render","_this$props5","children","className","renderTabTooltip","_this$props5$addition","errorMessage","_this$props5$isLoaded","isLoaded","_this$props5$isLoadin","isLoading","_this$props5$isClonab","_this$props5$isRenama","glTab","_this$state","onFocusCapture","onBlurCapture","createPortal","getAdditionalActions","isShown","value","itemType","onCancel","onSubmit","interactive","options","placement","popperClassName","element","XBasePanel"],"sources":["../src/BasePanel.tsx"],"sourcesContent":["import React, {\n type FocusEvent,\n type FocusEventHandler,\n PureComponent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport {\n type ContextAction,\n ContextActions,\n createXComponent,\n LoadingOverlay,\n type ResolvableContextAction,\n Tooltip,\n} from '@deephaven/components';\nimport type {\n Container,\n EventEmitter,\n ReactComponentConfig,\n Tab,\n} from '@deephaven/golden-layout';\nimport { assertNotNull, EMPTY_ARRAY } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport LayoutUtils from './layout/LayoutUtils';\nimport { type PanelComponent } from './DashboardPlugin';\nimport PanelEvent from './PanelEvent';\nimport PanelContextMenu from './PanelContextMenu';\nimport RenameDialog from './RenameDialog';\nimport TabEvent from './TabEvent';\nimport './Panel.scss';\n\nconst log = Log.module('Panel');\n\nexport type BasePanelProps = {\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 onHide?: (...args: unknown[]) => void;\n onResize?: (...args: unknown[]) => 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?: ResolvableContextAction[];\n errorMessage?: string;\n isLoading?: boolean;\n isLoaded?: boolean;\n isClonable?: boolean;\n isRenamable?: boolean;\n};\n\ninterface BasePanelState {\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\n */\nclass BasePanel extends PureComponent<BasePanelProps, BasePanelState> {\n constructor(props: BasePanelProps) {\n super(props);\n\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.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(TabEvent.focus, this.handleTabFocus);\n glEventHub.on(TabEvent.blur, this.handleTabBlur);\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(TabEvent.focus, this.handleTabFocus);\n glEventHub.off(TabEvent.blur, this.handleTabBlur);\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 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 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 getAdditionalActions = memoize(\n (\n actions: readonly ResolvableContextAction[],\n isClonable: boolean,\n isRenamable: boolean\n ) => {\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 glEventHub,\n additionalActions = EMPTY_ARRAY,\n errorMessage,\n isLoaded = true,\n isLoading = false,\n isClonable = false,\n isRenamable = false,\n } = this.props;\n\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 data-testid=\"base-panel-loading\"\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 glEventHub={glEventHub}\n additionalActions={this.getAdditionalActions(\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\nconst XBasePanel = createXComponent(BasePanel);\n\nexport default XBasePanel;\n"],"mappings":"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","ignoreList":[]}
package/dist/Dashboard.js CHANGED
@@ -3,6 +3,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
3
3
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
5
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
7
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
9
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
11
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
6
12
  import React, { useEffect, useMemo, useRef, useState } from 'react';
7
13
  import throttle from 'lodash.throttle';
8
14
  import GoldenLayout from '@deephaven/golden-layout';
@@ -20,23 +26,33 @@ var RESIZE_THROTTLE = 100;
20
26
  var DEFAULT_CALLBACK = () => undefined;
21
27
  var EMPTY_OBJECT = Object.freeze({});
22
28
  export function Dashboard(_ref) {
23
- var {
24
- id = 'default',
25
- children,
26
- emptyDashboard,
27
- layoutConfig,
28
- layoutSettings = EMPTY_OBJECT,
29
- onLayoutConfigChange = DEFAULT_CALLBACK,
30
- onGoldenLayoutChange = DEFAULT_CALLBACK,
31
- onLayoutInitialized = DEFAULT_CALLBACK,
32
- fallbackComponent = PanelPlaceholder,
33
- hydrate,
34
- dehydrate,
35
- panelWrapper
36
- } = _ref;
29
+ var _ref$id = _ref.id,
30
+ id = _ref$id === void 0 ? 'default' : _ref$id,
31
+ children = _ref.children,
32
+ emptyDashboard = _ref.emptyDashboard,
33
+ layoutConfig = _ref.layoutConfig,
34
+ _ref$layoutSettings = _ref.layoutSettings,
35
+ layoutSettings = _ref$layoutSettings === void 0 ? EMPTY_OBJECT : _ref$layoutSettings,
36
+ _ref$onLayoutConfigCh = _ref.onLayoutConfigChange,
37
+ onLayoutConfigChange = _ref$onLayoutConfigCh === void 0 ? DEFAULT_CALLBACK : _ref$onLayoutConfigCh,
38
+ _ref$onGoldenLayoutCh = _ref.onGoldenLayoutChange,
39
+ onGoldenLayoutChange = _ref$onGoldenLayoutCh === void 0 ? DEFAULT_CALLBACK : _ref$onGoldenLayoutCh,
40
+ _ref$onLayoutInitiali = _ref.onLayoutInitialized,
41
+ onLayoutInitialized = _ref$onLayoutInitiali === void 0 ? DEFAULT_CALLBACK : _ref$onLayoutInitiali,
42
+ _ref$fallbackComponen = _ref.fallbackComponent,
43
+ fallbackComponent = _ref$fallbackComponen === void 0 ? PanelPlaceholder : _ref$fallbackComponen,
44
+ hydrate = _ref.hydrate,
45
+ dehydrate = _ref.dehydrate,
46
+ panelWrapper = _ref.panelWrapper;
37
47
  var layoutElement = useRef(null);
38
- var [isInitialized, setIsInitialized] = useState(false);
39
- var [layout, setLayout] = useState();
48
+ var _useState = useState(false),
49
+ _useState2 = _slicedToArray(_useState, 2),
50
+ isInitialized = _useState2[0],
51
+ setIsInitialized = _useState2[1];
52
+ var _useState3 = useState(),
53
+ _useState4 = _slicedToArray(_useState3, 2),
54
+ layout = _useState4[0],
55
+ setLayout = _useState4[1];
40
56
  useEffect(function initDashboard() {
41
57
  if (!layoutElement.current) {
42
58
  setLayout(undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"Dashboard.js","names":["React","useEffect","useMemo","useRef","useState","throttle","GoldenLayout","useResizeObserver","LayoutUtils","PanelPlaceholder","DashboardLayout","LayoutManagerContext","DashboardIdContext","FiberProvider","jsx","_jsx","jsxs","_jsxs","RESIZE_THROTTLE","DEFAULT_CALLBACK","undefined","EMPTY_OBJECT","Object","freeze","Dashboard","_ref","id","children","emptyDashboard","layoutConfig","layoutSettings","onLayoutConfigChange","onGoldenLayoutChange","onLayoutInitialized","fallbackComponent","hydrate","dehydrate","panelWrapper","layoutElement","isInitialized","setIsInitialized","layout","setLayout","initDashboard","current","config","_objectSpread","makeDefaultLayout","settings","assign","content","newLayout","onInit","off","on","setFallbackComponent","init","destroy","handleResize","isInitialised","updateSize","className","ref","Provider","value","onLayoutChange"],"sources":["../src/Dashboard.tsx"],"sourcesContent":["import React, {\n type ComponentType,\n type ForwardRefExoticComponent,\n type RefAttributes,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport throttle from 'lodash.throttle';\nimport GoldenLayout from '@deephaven/golden-layout';\nimport type { ItemConfig, Settings } from '@deephaven/golden-layout';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport './layout/GoldenLayout.scss';\nimport LayoutUtils from './layout/LayoutUtils';\nimport PanelPlaceholder from './PanelPlaceholder';\nimport DashboardLayout, { type DashboardLayoutConfig } from './DashboardLayout';\nimport {\n type PanelDehydrateFunction,\n type PanelHydrateFunction,\n type PanelProps,\n} from './DashboardPlugin';\nimport './Dashboard.scss';\nimport { LayoutManagerContext } from './layout';\nimport { DashboardIdContext } from './useDashboardId';\nimport { FiberProvider } from './useFiber';\n\nconst RESIZE_THROTTLE = 100;\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nconst EMPTY_OBJECT = Object.freeze({});\n\nexport type DashboardProps = {\n id?: string;\n children?: React.ReactNode | React.ReactNode[];\n emptyDashboard?: React.ReactNode;\n layoutConfig?: ItemConfig[];\n layoutSettings?: Partial<Settings>;\n onLayoutConfigChange?: (dehydratedLayout: DashboardLayoutConfig) => void;\n onGoldenLayoutChange?: (goldenLayout: GoldenLayout) => void;\n onLayoutInitialized?: () => void;\n fallbackComponent?: ForwardRefExoticComponent<\n PanelProps & RefAttributes<HTMLDivElement>\n >;\n hydrate?: PanelHydrateFunction;\n dehydrate?: PanelDehydrateFunction;\n\n /** Component to wrap each panel with */\n panelWrapper?: ComponentType<React.PropsWithChildren<PanelProps>>;\n};\n\nexport function Dashboard({\n id = 'default',\n children,\n emptyDashboard,\n layoutConfig,\n layoutSettings = EMPTY_OBJECT,\n onLayoutConfigChange = DEFAULT_CALLBACK,\n onGoldenLayoutChange = DEFAULT_CALLBACK,\n onLayoutInitialized = DEFAULT_CALLBACK,\n fallbackComponent = PanelPlaceholder,\n hydrate,\n dehydrate,\n panelWrapper,\n}: DashboardProps): JSX.Element {\n const layoutElement = useRef<HTMLDivElement>(null);\n const [isInitialized, setIsInitialized] = useState(false);\n const [layout, setLayout] = useState<GoldenLayout>();\n\n useEffect(\n function initDashboard() {\n if (!layoutElement.current) {\n setLayout(undefined);\n return;\n }\n const config = {\n ...LayoutUtils.makeDefaultLayout(),\n };\n if (config.settings === undefined) {\n config.settings = {};\n }\n Object.assign(config.settings, layoutSettings);\n\n // Load our content later after plugins have registered\n config.content = [];\n\n const newLayout = new GoldenLayout(config, layoutElement.current);\n\n const onInit = (): void => {\n newLayout.off('initialised', onInit);\n setIsInitialized(true);\n };\n newLayout.on('initialised', onInit);\n\n if (fallbackComponent != null) {\n newLayout.setFallbackComponent(fallbackComponent);\n }\n\n newLayout.init();\n\n setLayout(newLayout);\n\n onGoldenLayoutChange(newLayout);\n\n return () => {\n newLayout.destroy();\n };\n },\n [\n layoutSettings,\n fallbackComponent,\n onGoldenLayoutChange,\n setIsInitialized,\n setLayout,\n ]\n );\n\n const handleResize = useMemo(\n () =>\n throttle(() => {\n if (layout != null && layout.isInitialised) {\n layout?.updateSize();\n }\n }, RESIZE_THROTTLE),\n [layout]\n );\n\n useResizeObserver(layoutElement.current, handleResize);\n\n return (\n <div className=\"dashboard-container w-100 h-100\">\n <div className=\"w-100 h-100\" ref={layoutElement} />\n {isInitialized && layout && (\n <LayoutManagerContext.Provider value={layout}>\n <DashboardIdContext.Provider value={id}>\n <FiberProvider>\n <DashboardLayout\n emptyDashboard={emptyDashboard}\n id={id}\n layout={layout}\n layoutConfig={layoutConfig}\n onLayoutChange={onLayoutConfigChange}\n onLayoutInitialized={onLayoutInitialized}\n hydrate={hydrate}\n dehydrate={dehydrate}\n panelWrapper={panelWrapper}\n >\n {children}\n </DashboardLayout>\n </FiberProvider>\n </DashboardIdContext.Provider>\n </LayoutManagerContext.Provider>\n )}\n </div>\n );\n}\n\nexport default Dashboard;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Dashboard.js","names":["React","useEffect","useMemo","useRef","useState","throttle","GoldenLayout","useResizeObserver","LayoutUtils","PanelPlaceholder","DashboardLayout","LayoutManagerContext","DashboardIdContext","FiberProvider","jsx","_jsx","jsxs","_jsxs","RESIZE_THROTTLE","DEFAULT_CALLBACK","undefined","EMPTY_OBJECT","Object","freeze","Dashboard","_ref","_ref$id","id","children","emptyDashboard","layoutConfig","_ref$layoutSettings","layoutSettings","_ref$onLayoutConfigCh","onLayoutConfigChange","_ref$onGoldenLayoutCh","onGoldenLayoutChange","_ref$onLayoutInitiali","onLayoutInitialized","_ref$fallbackComponen","fallbackComponent","hydrate","dehydrate","panelWrapper","layoutElement","_useState","_useState2","_slicedToArray","isInitialized","setIsInitialized","_useState3","_useState4","layout","setLayout","initDashboard","current","config","_objectSpread","makeDefaultLayout","settings","assign","content","newLayout","onInit","off","on","setFallbackComponent","init","destroy","handleResize","isInitialised","updateSize","className","ref","Provider","value","onLayoutChange"],"sources":["../src/Dashboard.tsx"],"sourcesContent":["import React, {\n type ComponentType,\n type ForwardRefExoticComponent,\n type RefAttributes,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport throttle from 'lodash.throttle';\nimport GoldenLayout from '@deephaven/golden-layout';\nimport type { ItemConfig, Settings } from '@deephaven/golden-layout';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport './layout/GoldenLayout.scss';\nimport LayoutUtils from './layout/LayoutUtils';\nimport PanelPlaceholder from './PanelPlaceholder';\nimport DashboardLayout, { type DashboardLayoutConfig } from './DashboardLayout';\nimport {\n type PanelDehydrateFunction,\n type PanelHydrateFunction,\n type PanelProps,\n} from './DashboardPlugin';\nimport './Dashboard.scss';\nimport { LayoutManagerContext } from './layout';\nimport { DashboardIdContext } from './useDashboardId';\nimport { FiberProvider } from './useFiber';\n\nconst RESIZE_THROTTLE = 100;\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nconst EMPTY_OBJECT = Object.freeze({});\n\nexport type DashboardProps = {\n id?: string;\n children?: React.ReactNode | React.ReactNode[];\n emptyDashboard?: React.ReactNode;\n layoutConfig?: ItemConfig[];\n layoutSettings?: Partial<Settings>;\n onLayoutConfigChange?: (dehydratedLayout: DashboardLayoutConfig) => void;\n onGoldenLayoutChange?: (goldenLayout: GoldenLayout) => void;\n onLayoutInitialized?: () => void;\n fallbackComponent?: ForwardRefExoticComponent<\n PanelProps & RefAttributes<HTMLDivElement>\n >;\n hydrate?: PanelHydrateFunction;\n dehydrate?: PanelDehydrateFunction;\n\n /** Component to wrap each panel with */\n panelWrapper?: ComponentType<React.PropsWithChildren<PanelProps>>;\n};\n\nexport function Dashboard({\n id = 'default',\n children,\n emptyDashboard,\n layoutConfig,\n layoutSettings = EMPTY_OBJECT,\n onLayoutConfigChange = DEFAULT_CALLBACK,\n onGoldenLayoutChange = DEFAULT_CALLBACK,\n onLayoutInitialized = DEFAULT_CALLBACK,\n fallbackComponent = PanelPlaceholder,\n hydrate,\n dehydrate,\n panelWrapper,\n}: DashboardProps): JSX.Element {\n const layoutElement = useRef<HTMLDivElement>(null);\n const [isInitialized, setIsInitialized] = useState(false);\n const [layout, setLayout] = useState<GoldenLayout>();\n\n useEffect(\n function initDashboard() {\n if (!layoutElement.current) {\n setLayout(undefined);\n return;\n }\n const config = {\n ...LayoutUtils.makeDefaultLayout(),\n };\n if (config.settings === undefined) {\n config.settings = {};\n }\n Object.assign(config.settings, layoutSettings);\n\n // Load our content later after plugins have registered\n config.content = [];\n\n const newLayout = new GoldenLayout(config, layoutElement.current);\n\n const onInit = (): void => {\n newLayout.off('initialised', onInit);\n setIsInitialized(true);\n };\n newLayout.on('initialised', onInit);\n\n if (fallbackComponent != null) {\n newLayout.setFallbackComponent(fallbackComponent);\n }\n\n newLayout.init();\n\n setLayout(newLayout);\n\n onGoldenLayoutChange(newLayout);\n\n return () => {\n newLayout.destroy();\n };\n },\n [\n layoutSettings,\n fallbackComponent,\n onGoldenLayoutChange,\n setIsInitialized,\n setLayout,\n ]\n );\n\n const handleResize = useMemo(\n () =>\n throttle(() => {\n if (layout != null && layout.isInitialised) {\n layout?.updateSize();\n }\n }, RESIZE_THROTTLE),\n [layout]\n );\n\n useResizeObserver(layoutElement.current, handleResize);\n\n return (\n <div className=\"dashboard-container w-100 h-100\">\n <div className=\"w-100 h-100\" ref={layoutElement} />\n {isInitialized && layout && (\n <LayoutManagerContext.Provider value={layout}>\n <DashboardIdContext.Provider value={id}>\n <FiberProvider>\n <DashboardLayout\n emptyDashboard={emptyDashboard}\n id={id}\n layout={layout}\n layoutConfig={layoutConfig}\n onLayoutChange={onLayoutConfigChange}\n onLayoutInitialized={onLayoutInitialized}\n hydrate={hydrate}\n dehydrate={dehydrate}\n panelWrapper={panelWrapper}\n >\n {children}\n </DashboardLayout>\n </FiberProvider>\n </DashboardIdContext.Provider>\n </LayoutManagerContext.Provider>\n )}\n </div>\n );\n}\n\nexport default Dashboard;\n"],"mappings":"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","ignoreList":[]}
@@ -1,14 +1,14 @@
1
1
  import { makeEventFunctions } from '@deephaven/golden-layout';
2
2
  export var CREATE_DASHBOARD = 'CREATE_DASHBOARD';
3
3
  export var CLOSE_DASHBOARD = 'CLOSE_DASHBOARD';
4
- export var {
5
- listen: listenForCreateDashboard,
6
- emit: emitCreateDashboard,
7
- useListener: useCreateDashboardListener
8
- } = makeEventFunctions(CREATE_DASHBOARD);
9
- export var {
10
- listen: listenForCloseDashboard,
11
- emit: emitCloseDashboard,
12
- useListener: useCloseDashboardListener
13
- } = makeEventFunctions(CLOSE_DASHBOARD);
4
+ var _makeEventFunctions = makeEventFunctions(CREATE_DASHBOARD),
5
+ listenForCreateDashboard = _makeEventFunctions.listen,
6
+ emitCreateDashboard = _makeEventFunctions.emit,
7
+ useCreateDashboardListener = _makeEventFunctions.useListener;
8
+ export { listenForCreateDashboard, emitCreateDashboard, useCreateDashboardListener };
9
+ var _makeEventFunctions2 = makeEventFunctions(CLOSE_DASHBOARD),
10
+ listenForCloseDashboard = _makeEventFunctions2.listen,
11
+ emitCloseDashboard = _makeEventFunctions2.emit,
12
+ useCloseDashboardListener = _makeEventFunctions2.useListener;
13
+ export { listenForCloseDashboard, emitCloseDashboard, useCloseDashboardListener };
14
14
  //# sourceMappingURL=DashboardEvents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardEvents.js","names":["makeEventFunctions","CREATE_DASHBOARD","CLOSE_DASHBOARD","listen","listenForCreateDashboard","emit","emitCreateDashboard","useListener","useCreateDashboardListener","listenForCloseDashboard","emitCloseDashboard","useCloseDashboardListener"],"sources":["../src/DashboardEvents.ts"],"sourcesContent":["import { makeEventFunctions } from '@deephaven/golden-layout';\n\nexport const CREATE_DASHBOARD = 'CREATE_DASHBOARD';\n\nexport const CLOSE_DASHBOARD = 'CLOSE_DASHBOARD';\n\nexport interface CreateDashboardPayload<T = unknown> {\n pluginId: string;\n title: string;\n data: T;\n}\n\nexport const {\n listen: listenForCreateDashboard,\n emit: emitCreateDashboard,\n useListener: useCreateDashboardListener,\n} = makeEventFunctions<[detail: CreateDashboardPayload]>(CREATE_DASHBOARD);\n\nexport const {\n listen: listenForCloseDashboard,\n emit: emitCloseDashboard,\n useListener: useCloseDashboardListener,\n} = makeEventFunctions<[title: string]>(CLOSE_DASHBOARD);\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,0BAA0B;AAE7D,OAAO,IAAMC,gBAAgB,GAAG,kBAAkB;AAElD,OAAO,IAAMC,eAAe,GAAG,iBAAiB;AAQhD,OAAO,IAAM;EACXC,MAAM,EAAEC,wBAAwB;EAChCC,IAAI,EAAEC,mBAAmB;EACzBC,WAAW,EAAEC;AACf,CAAC,GAAGR,kBAAkB,CAAmCC,gBAAgB,CAAC;AAE1E,OAAO,IAAM;EACXE,MAAM,EAAEM,uBAAuB;EAC/BJ,IAAI,EAAEK,kBAAkB;EACxBH,WAAW,EAAEI;AACf,CAAC,GAAGX,kBAAkB,CAAkBE,eAAe,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"DashboardEvents.js","names":["makeEventFunctions","CREATE_DASHBOARD","CLOSE_DASHBOARD","_makeEventFunctions","listenForCreateDashboard","listen","emitCreateDashboard","emit","useCreateDashboardListener","useListener","_makeEventFunctions2","listenForCloseDashboard","emitCloseDashboard","useCloseDashboardListener"],"sources":["../src/DashboardEvents.ts"],"sourcesContent":["import { makeEventFunctions } from '@deephaven/golden-layout';\n\nexport const CREATE_DASHBOARD = 'CREATE_DASHBOARD';\n\nexport const CLOSE_DASHBOARD = 'CLOSE_DASHBOARD';\n\nexport interface CreateDashboardPayload<T = unknown> {\n pluginId: string;\n title: string;\n data: T;\n}\n\nexport const {\n listen: listenForCreateDashboard,\n emit: emitCreateDashboard,\n useListener: useCreateDashboardListener,\n} = makeEventFunctions<[detail: CreateDashboardPayload]>(CREATE_DASHBOARD);\n\nexport const {\n listen: listenForCloseDashboard,\n emit: emitCloseDashboard,\n useListener: useCloseDashboardListener,\n} = makeEventFunctions<[title: string]>(CLOSE_DASHBOARD);\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,0BAA0B;AAE7D,OAAO,IAAMC,gBAAgB,GAAG,kBAAkB;AAElD,OAAO,IAAMC,eAAe,GAAG,iBAAiB;AAQzC,IAAAC,mBAAA,GAIHH,kBAAkB,CAAmCC,gBAAgB,CAAC;EAHhEG,wBAAwB,GAAAD,mBAAA,CAAhCE,MAAM;EACAC,mBAAmB,GAAAH,mBAAA,CAAzBI,IAAI;EACSC,0BAA0B,GAAAL,mBAAA,CAAvCM,WAAW;AAC8D,SAAAL,wBAAA,EAAAE,mBAAA,EAAAE,0BAAA;AAEpE,IAAAE,oBAAA,GAIHV,kBAAkB,CAAkBE,eAAe,CAAC;EAH9CS,uBAAuB,GAAAD,oBAAA,CAA/BL,MAAM;EACAO,kBAAkB,GAAAF,oBAAA,CAAxBH,IAAI;EACSM,yBAAyB,GAAAH,oBAAA,CAAtCD,WAAW;AAC4C,SAAAE,uBAAA,EAAAC,kBAAA,EAAAC,yBAAA","ignoreList":[]}
@@ -3,6 +3,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
3
3
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
5
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
7
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
9
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
11
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
6
12
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
7
13
  import Log from '@deephaven/log';
8
14
  import { usePrevious, useThrottledCallback } from '@deephaven/react-hooks';
@@ -31,30 +37,45 @@ var FALLBACK_CALLBACK = props => props;
31
37
  */
32
38
  export function DashboardLayout(_ref) {
33
39
  var _useSelector, _closed;
34
- var {
35
- id,
36
- children,
37
- emptyDashboard = /*#__PURE__*/_jsx("div", {
40
+ var id = _ref.id,
41
+ children = _ref.children,
42
+ _ref$emptyDashboard = _ref.emptyDashboard,
43
+ emptyDashboard = _ref$emptyDashboard === void 0 ? /*#__PURE__*/_jsx("div", {
38
44
  className: "dashboard-empty",
39
45
  children: "Dashboard is empty."
40
- }),
41
- layout,
42
- layoutConfig = DEFAULT_LAYOUT_CONFIG,
43
- onLayoutChange = DEFAULT_CALLBACK,
44
- onLayoutInitialized = DEFAULT_CALLBACK,
45
- hydrate = hydrateDefault,
46
- dehydrate = dehydrateDefault,
47
- panelWrapper
48
- } = _ref;
46
+ }) : _ref$emptyDashboard,
47
+ layout = _ref.layout,
48
+ _ref$layoutConfig = _ref.layoutConfig,
49
+ layoutConfig = _ref$layoutConfig === void 0 ? DEFAULT_LAYOUT_CONFIG : _ref$layoutConfig,
50
+ _ref$onLayoutChange = _ref.onLayoutChange,
51
+ onLayoutChange = _ref$onLayoutChange === void 0 ? DEFAULT_CALLBACK : _ref$onLayoutChange,
52
+ _ref$onLayoutInitiali = _ref.onLayoutInitialized,
53
+ onLayoutInitialized = _ref$onLayoutInitiali === void 0 ? DEFAULT_CALLBACK : _ref$onLayoutInitiali,
54
+ _ref$hydrate = _ref.hydrate,
55
+ hydrate = _ref$hydrate === void 0 ? hydrateDefault : _ref$hydrate,
56
+ _ref$dehydrate = _ref.dehydrate,
57
+ dehydrate = _ref$dehydrate === void 0 ? dehydrateDefault : _ref$dehydrate,
58
+ panelWrapper = _ref.panelWrapper;
49
59
  var dispatch = useDispatch();
50
60
  var data = (_useSelector = useSelector(state => getDashboardData(state, id))) !== null && _useSelector !== void 0 ? _useSelector : EMPTY_OBJECT;
51
- var [isDashboardEmpty, setIsDashboardEmpty] = useState(false);
52
- var [isItemDragging, setIsItemDragging] = useState(false);
61
+ var _useState = useState(false),
62
+ _useState2 = _slicedToArray(_useState, 2),
63
+ isDashboardEmpty = _useState2[0],
64
+ setIsDashboardEmpty = _useState2[1];
65
+ var _useState3 = useState(false),
66
+ _useState4 = _slicedToArray(_useState3, 2),
67
+ isItemDragging = _useState4[0],
68
+ setIsItemDragging = _useState4[1];
53
69
  // `lastConfig` is intentionally a ref rather than state so it can be written synchronously inside the throttled body before `onLayoutChange` runs.
54
70
  // This guarantees any subsequent render triggered by the parent observes the latest value, regardless of how that render was scheduled (see DH-21843).
55
71
  var lastConfigRef = useRef();
56
- var [initialClosedPanels] = useState((_closed = data === null || data === void 0 ? void 0 : data.closed) !== null && _closed !== void 0 ? _closed : []);
57
- var [layoutChildren, setLayoutChildren] = useState(layout.getReactChildren());
72
+ var _useState5 = useState((_closed = data === null || data === void 0 ? void 0 : data.closed) !== null && _closed !== void 0 ? _closed : []),
73
+ _useState6 = _slicedToArray(_useState5, 1),
74
+ initialClosedPanels = _useState6[0];
75
+ var _useState7 = useState(layout.getReactChildren()),
76
+ _useState8 = _slicedToArray(_useState7, 2),
77
+ layoutChildren = _useState8[0],
78
+ setLayoutChildren = _useState8[1];
58
79
  var hydrateMap = useMemo(() => new Map(), []);
59
80
  var dehydrateMap = useMemo(() => new Map(), []);
60
81
  var registerComponent = useCallback(function (name, componentType) {
@@ -84,10 +105,8 @@ export function DashboardLayout(_ref) {
84
105
  _jsx(CType, _objectSpread({}, props));
85
106
 
86
107
  // Props supplied by GoldenLayout
87
- var {
88
- glContainer,
89
- glEventHub
90
- } = props;
108
+ var glContainer = props.glContainer,
109
+ glEventHub = props.glEventHub;
91
110
  var panelId = LayoutUtils.getIdFromContainer(glContainer);
92
111
  return /*#__PURE__*/_jsx(PanelErrorBoundary, {
93
112
  glContainer: glContainer,
@@ -120,10 +139,8 @@ export function DashboardLayout(_ref) {
120
139
  return ((_dehydrateMap$get = dehydrateMap.get(name)) !== null && _dehydrateMap$get !== void 0 ? _dehydrateMap$get : FALLBACK_CALLBACK)(config, id);
121
140
  }, [dehydrateMap, id]);
122
141
  var panelManager = useMemo(() => new PanelManager(layout, hydrateComponent, dehydrateComponent, new Map(), initialClosedPanels, _ref2 => {
123
- var {
124
- closed,
125
- openedMap
126
- } = _ref2;
142
+ var closed = _ref2.closed,
143
+ openedMap = _ref2.openedMap;
127
144
  dispatch(updateDashboardData(id, {
128
145
  closed,
129
146
  openedMap