@deephaven/dashboard 1.22.1-alpha-pivot-builder.0 → 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.
- package/dist/BasePanel.js +48 -75
- package/dist/BasePanel.js.map +1 -1
- package/dist/Dashboard.js +32 -16
- package/dist/Dashboard.js.map +1 -1
- package/dist/DashboardEvents.js +10 -10
- package/dist/DashboardEvents.js.map +1 -1
- package/dist/DashboardLayout.js +42 -25
- package/dist/DashboardLayout.js.map +1 -1
- package/dist/DashboardPanelWrapper.js +19 -14
- package/dist/DashboardPanelWrapper.js.map +1 -1
- package/dist/DashboardUtils.js +6 -13
- package/dist/DashboardUtils.js.map +1 -1
- package/dist/LazyDashboard.js +13 -6
- package/dist/LazyDashboard.js.map +1 -1
- package/dist/NavigationEvent.js +20 -20
- package/dist/NavigationEvent.js.map +1 -1
- package/dist/PanelContextMenu.js +13 -24
- package/dist/PanelContextMenu.js.map +1 -1
- package/dist/PanelErrorBoundary.js +5 -10
- package/dist/PanelErrorBoundary.js.map +1 -1
- package/dist/PanelEvent.js +10 -11
- package/dist/PanelEvent.js.map +1 -1
- package/dist/PanelManager.js +10 -28
- package/dist/PanelManager.js.map +1 -1
- package/dist/PersistentStateContext.js +22 -19
- package/dist/PersistentStateContext.js.map +1 -1
- package/dist/RenameDialog.js +17 -34
- package/dist/RenameDialog.js.map +1 -1
- package/dist/layout/LayoutUtils.js +28 -37
- package/dist/layout/LayoutUtils.js.map +1 -1
- package/dist/layout/useDashboardPanel.js +16 -25
- package/dist/layout/useDashboardPanel.js.map +1 -1
- package/dist/redux/index.js +9 -1
- package/dist/redux/index.js.map +1 -1
- package/dist/useFiber.js +10 -4
- package/dist/useFiber.js.map +1 -1
- package/dist/usePersistentState.js +25 -16
- package/dist/usePersistentState.js.map +1 -1
- 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
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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,
|
package/dist/BasePanel.js.map
CHANGED
|
@@ -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":";;;AAAA,OAAOA,KAAK,IAGVC,aAAa,QAGR,OAAO;AACd,OAAOC,QAAQ,MAAM,WAAW;AAChC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,aAAa;AACjC,SAEEC,cAAc,EACdC,gBAAgB,EAChBC,cAAc,EAEdC,OAAO,QACF,uBAAuB;AAO9B,SAASC,aAAa,EAAEC,WAAW,QAAQ,kBAAkB;AAC7D,OAAOC,GAAG,MAAM,gBAAgB;AAAC,OAC1BC,WAAW;AAAA,OAEXC,UAAU;AAAA,OACVC,gBAAgB;AAAA,OAChBC,YAAY;AAAA,OACZC,QAAQ;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAGf,IAAMC,GAAG,GAAGZ,GAAG,CAACa,MAAM,CAAC,OAAO,CAAC;AAqC/B;AACA;AACA;AACA;AACA;AACA,MAAMC,SAAS,SAASxB,aAAa,CAAiC;EACpEyB,WAAWA,CAACC,KAAqB,EAAE;IACjC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA,+BAkLQxB,OAAO,CAC5B,CACEyB,OAA2C,EAC3CC,UAAmB,EACnBC,WAAoB,KACjB;MACH,IAAMC,iBAAiB,GAAG,EAAE;MAC5B,IAAIF,UAAU,EAAE;QACdE,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAACC,cAAc,CAAC,CAAC,CAAC;MAC/C;MACA,IAAIH,WAAW,EAAE;QACfC,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAACE,eAAe,CAAC,CAAC,CAAC;MAChD;MACA,OAAO,CAAC,GAAGH,iBAAiB,EAAE,GAAGH,OAAO,CAAC;IAC3C,CACF,CAAC;IA/LC,IAAI,CAACO,eAAe,GAAG,IAAI,CAACA,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACD,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACE,UAAU,GAAG,IAAI,CAACA,UAAU,CAACF,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACG,UAAU,GAAG,IAAI,CAACA,UAAU,CAACH,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACI,YAAY,GAAG,IAAI,CAACA,YAAY,CAACJ,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACK,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACL,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACM,UAAU,GAAG,IAAI,CAACA,UAAU,CAACN,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACO,aAAa,GAAG,IAAI,CAACA,aAAa,CAACP,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACQ,cAAc,GAAG,IAAI,CAACA,cAAc,CAACR,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACS,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACT,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACU,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACV,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACW,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACX,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACY,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACZ,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACa,SAAS,GAAG,IAAI,CAACA,SAAS,CAACb,IAAI,CAAC,IAAI,CAAC;IAE1C,IAAI,CAACc,GAAG,gBAAGnD,KAAK,CAACoD,SAAS,CAAiB,CAAC;IAE5C,IAAM;MAAEC;IAAY,CAAC,GAAG,IAAI,CAAC1B,KAAK;IAClC,IAAI,CAAC2B,KAAK,GAAG;MACXC,KAAK,EAAE3C,WAAW,CAAC4C,qBAAqB,CAACH,WAAW,CAAC;MACrDI,gBAAgB,EAAE,KAAK;MACvBC,aAAa,EAAE;IACjB,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IAAA,IAAAC,iBAAA;IACxB,IAAM;MAAEC,cAAc;MAAER,WAAW;MAAES;IAAW,CAAC,GAAG,IAAI,CAACnC,KAAK;IAE9D0B,WAAW,CAACU,EAAE,CAAC,QAAQ,EAAE,IAAI,CAACtB,YAAY,CAAC;IAC3CY,WAAW,CAACU,EAAE,CAAC,MAAM,EAAE,IAAI,CAACrB,gBAAgB,CAAC;IAC7CW,WAAW,CAACU,EAAE,CAAC,OAAO,EAAE,IAAI,CAACpB,UAAU,CAAC;IACxCU,WAAW,CAACU,EAAE,CAAC,MAAM,EAAE,IAAI,CAACvB,UAAU,CAAC;IACvCa,WAAW,CAACU,EAAE,CAAC,KAAK,EAAE,IAAI,CAACb,SAAS,CAAC;IACrCG,WAAW,CAACU,EAAE,CAAC,YAAY,EAAE,IAAI,CAACd,gBAAgB,CAAC;IACnDa,UAAU,CAACC,EAAE,CAAC/C,QAAQ,CAACgD,KAAK,EAAE,IAAI,CAACnB,cAAc,CAAC;IAClDiB,UAAU,CAACC,EAAE,CAAC/C,QAAQ,CAACiD,IAAI,EAAE,IAAI,CAACrB,aAAa,CAAC;IAEhDkB,UAAU,CAACI,IAAI,CAACrD,UAAU,CAACsD,KAAK,EAAEN,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,IAAI,CAAC;IAEzD,IAAI,CAACO,QAAQ,CAAC;MACZV,aAAa,EACX,EAAAE,iBAAA,OAAI,CAACT,GAAG,CAACkB,OAAO,cAAAT,iBAAA,gBAAAA,iBAAA,GAAhBA,iBAAA,CAAkBU,aAAa,cAAAV,iBAAA,uBAA/BA,iBAAA,CAAiCW,OAAO,CAAC,WAAW,CAAC,KAAI;IAC7D,CAAC,CAAC;EACJ;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAM;MAAEX,cAAc;MAAER,WAAW;MAAES;IAAW,CAAC,GAAG,IAAI,CAACnC,KAAK;IAE9D0B,WAAW,CAACoB,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAChC,YAAY,CAAC;IAC5CY,WAAW,CAACoB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC/B,gBAAgB,CAAC;IAC9CW,WAAW,CAACoB,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC9B,UAAU,CAAC;IACzCU,WAAW,CAACoB,GAAG,CAAC,MAAM,EAAE,IAAI,CAACjC,UAAU,CAAC;IACxCa,WAAW,CAACoB,GAAG,CAAC,KAAK,EAAE,IAAI,CAACvB,SAAS,CAAC;IACtCG,WAAW,CAACoB,GAAG,CAAC,YAAY,EAAE,IAAI,CAACxB,gBAAgB,CAAC;IACpDa,UAAU,CAACW,GAAG,CAACzD,QAAQ,CAACgD,KAAK,EAAE,IAAI,CAACnB,cAAc,CAAC;IACnDiB,UAAU,CAACW,GAAG,CAACzD,QAAQ,CAACiD,IAAI,EAAE,IAAI,CAACrB,aAAa,CAAC;IAEjDkB,UAAU,CAACI,IAAI,CAACrD,UAAU,CAAC6D,OAAO,EAAEb,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,IAAI,CAAC;EAC7D;EAIAX,SAASA,CAACyB,GAAQ,EAAQ;IACxB,IAAIA,GAAG,IAAI,IAAI,EAAE;MACf,IAAI,CAACP,QAAQ,CAAC;QACZb,KAAK,EAAE3C,WAAW,CAACgE,eAAe,CAACD,GAAG;MACxC,CAAC,CAAC;IACJ;IACA;IACA;IACA,IAAI,CAACE,WAAW,CAAC,CAAC;IAElB,IAAM;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACnD,KAAK;IAC5BmD,KAAK,aAALA,KAAK,eAALA,KAAK,CAAGH,GAAG,CAAC;EACd;EAEA1B,gBAAgBA,CAAC8B,CAAa,EAAQ;IACpC,IAAM;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACrD,KAAK;IACnCqD,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGD,CAAC,CAAC;EACnB;EAEAzC,WAAWA,CAAC2C,KAAiC,EAAQ;IACnD,IAAM;MAAEpB,cAAc;MAAEC;IAAW,CAAC,GAAG,IAAI,CAACnC,KAAK;IACjDmC,UAAU,CAACI,IAAI,CAACrD,UAAU,CAACqE,KAAK,EAAErB,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,IAAI,CAAC;IAEzD,IAAM;MAAEsB;IAAQ,CAAC,GAAG,IAAI,CAACxD,KAAK;IAC9BwD,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGF,KAAK,CAAC;EAClB;EAEA1C,UAAUA,CAAC0C,KAAiC,EAAQ;IAClD,IAAM;MAAEG;IAAO,CAAC,GAAG,IAAI,CAACzD,KAAK;IAC7ByD,MAAM,aAANA,MAAM,eAANA,MAAM,CAAGH,KAAK,CAAC;EACjB;EAEAzC,UAAUA,CAAA,EAA2B;IACnC,IAAM;MAAE6C;IAAO,CAAC,GAAG,IAAI,CAAC1D,KAAK;IAAC,SAAA2D,IAAA,GAAAC,SAAA,CAAAC,MAAA,EADlBC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAEhBN,MAAM,aAANA,MAAM,eAANA,MAAM,CAAG,GAAGI,IAAI,CAAC;EACnB;EAEAhD,YAAYA,CAAA,EAA2B;IACrC,IAAM;MAAEmD;IAAS,CAAC,GAAG,IAAI,CAACjE,KAAK;IAAC,SAAAkE,KAAA,GAAAN,SAAA,CAAAC,MAAA,EADlBC,IAAI,OAAAC,KAAA,CAAAG,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJL,IAAI,CAAAK,KAAA,IAAAP,SAAA,CAAAO,KAAA;IAAA;IAElBF,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG,GAAGH,IAAI,CAAC;EACrB;EAEA/C,gBAAgBA,CAAA,EAA2B;IACzC,IAAM;MAAEqD;IAAa,CAAC,GAAG,IAAI,CAACpE,KAAK;IAAC,SAAAqE,KAAA,GAAAT,SAAA,CAAAC,MAAA,EADlBC,IAAI,OAAAC,KAAA,CAAAM,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJR,IAAI,CAAAQ,KAAA,IAAAV,SAAA,CAAAU,KAAA;IAAA;IAEtBF,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAG,GAAGN,IAAI,CAAC;EACzB;EAEA9C,UAAUA,CAAA,EAA2B;IACnC,IAAM;MAAEuD;IAAO,CAAC,GAAG,IAAI,CAACvE,KAAK;IAAC,SAAAwE,KAAA,GAAAZ,SAAA,CAAAC,MAAA,EADlBC,IAAI,OAAAC,KAAA,CAAAS,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJX,IAAI,CAAAW,KAAA,IAAAb,SAAA,CAAAa,KAAA;IAAA;IAEhBF,MAAM,aAANA,MAAM,eAANA,MAAM,CAAG,GAAGT,IAAI,CAAC;EACnB;EAEA7C,aAAaA,CAAA,EAA2B;IACtC,IAAM;MAAEyD;IAAU,CAAC,GAAG,IAAI,CAAC1E,KAAK;IAAC,SAAA2E,KAAA,GAAAf,SAAA,CAAAC,MAAA,EADlBC,IAAI,OAAAC,KAAA,CAAAY,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJd,IAAI,CAAAc,KAAA,IAAAhB,SAAA,CAAAgB,KAAA;IAAA;IAEnBF,SAAS,aAATA,SAAS,eAATA,SAAS,CAAG,GAAGZ,IAAI,CAAC;EACtB;EAEA5C,cAAcA,CAAA,EAA2B;IACvC,IAAM;MAAE2D;IAAW,CAAC,GAAG,IAAI,CAAC7E,KAAK;IAAC,SAAA8E,KAAA,GAAAlB,SAAA,CAAAC,MAAA,EADlBC,IAAI,OAAAC,KAAA,CAAAe,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJjB,IAAI,CAAAiB,KAAA,IAAAnB,SAAA,CAAAmB,KAAA;IAAA;IAEpBF,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAG,GAAGf,IAAI,CAAC;EACvB;EAEA3C,kBAAkBA,CAAA,EAAS;IACzB,IAAI,CAACsB,QAAQ,CAAC;MAAEX,gBAAgB,EAAE;IAAM,CAAC,CAAC;EAC5C;EAEAT,sBAAsBA,CAAA,EAAS;IAC7B,IAAI,CAACoB,QAAQ,CAAC;MAAEX,gBAAgB,EAAE;IAAK,CAAC,CAAC;EAC3C;EAEAV,kBAAkBA,CAAC4D,QAAgB,EAAQ;IACzC,IAAM;MAAEtD;IAAY,CAAC,GAAG,IAAI,CAAC1B,KAAK;IAClC,IAAI,CAACyC,QAAQ,CAAC;MAAEX,gBAAgB,EAAE,KAAK;MAAEF,KAAK,EAAEoD;IAAS,CAAC,CAAC;IAC3D,IAAMC,IAAI,GAAGhG,WAAW,CAACiG,oBAAoB,CAACxD,WAAW,CAAC;IAC1D,IAAMyD,MAAM,GAAGlG,WAAW,CAACmG,+BAA+B,CAAC1D,WAAW,CAAC;IACvE5C,aAAa,CAACqG,MAAM,CAAC;IACrBlG,WAAW,CAACoG,eAAe,CAACJ,IAAI,EAAEE,MAAM,EAAEH,QAAQ,CAAC;EACrD;EAEAvE,eAAeA,CAAA,EAAS;IACtB,IAAM;MAAEiB,WAAW;MAAES;IAAW,CAAC,GAAG,IAAI,CAACnC,KAAK;IAC9C,IAAMiF,IAAI,GAAGhG,WAAW,CAACiG,oBAAoB,CAACxD,WAAW,CAAC;IAC1D,IAAMyD,MAAM,GAAGlG,WAAW,CAACmG,+BAA+B,CAAC1D,WAAW,CAAC;IACvE,IAAIyD,MAAM,IAAI,IAAI,EAAE;MAClBvF,GAAG,CAAC0F,KAAK,CAAC,+CAA+C,EAAE5D,WAAW,CAAC;MACvE;IACF;IACA,IAAM6D,WAAW,GAAGtG,WAAW,CAACuG,cAAc,CAC5CP,IAAI,EACJE,MACF,CAAC;IACD,IAAII,WAAW,KAAK,IAAI,EAAE;MACxBpD,UAAU,CAACI,IAAI,CAACrD,UAAU,CAACuG,MAAM,EAAE,IAAI,EAAEF,WAAW,CAAC;IACvD;EACF;EAEAhF,cAAcA,CAAA,EAAkB;IAC9B,OAAO;MACLqB,KAAK,EAAE,YAAY;MACnB8D,KAAK,EAAE,EAAE;MACTC,KAAK,EAAEjH,cAAc,CAACkH,MAAM,CAACC,IAAI;MACjCC,MAAM,EAAE,IAAI,CAACrF;IACf,CAAC;EACH;EAEAD,eAAeA,CAAA,EAAkB;IAC/B,OAAO;MACLoB,KAAK,EAAE,QAAQ;MACf8D,KAAK,EAAE,EAAE;MACTC,KAAK,EAAEjH,cAAc,CAACkH,MAAM,CAACG,MAAM;MACnCD,MAAM,EAAE,IAAI,CAACzE;IACf,CAAC;EACH;EAmBA2E,MAAMA,CAAA,EAAiB;IACrB,IAAM;MACJC,QAAQ;MACRC,SAAS;MACTC,gBAAgB;MAChBzE,WAAW;MACXS,UAAU;MACV9B,iBAAiB,GAAGtB,WAAW;MAC/BqH,YAAY;MACZC,QAAQ,GAAG,IAAI;MACfC,SAAS,GAAG,KAAK;MACjBnG,UAAU,GAAG,KAAK;MAClBC,WAAW,GAAG;IAChB,CAAC,GAAG,IAAI,CAACJ,KAAK;IAEd,IAAM;MAAEgD,GAAG,EAAEuD;IAAM,CAAC,GAAG7E,WAAW;IAClC,IAAM;MAAEI,gBAAgB;MAAEF,KAAK;MAAEG;IAAc,CAAC,GAAG,IAAI,CAACJ,KAAK;IAE7D,oBACEhC,KAAA;MACEuG,SAAS,EAAE1H,UAAU,CAAC,sBAAsB,EAAE0H,SAAS,CAAE;MACzDM,cAAc,EAAE,IAAI,CAAC7F,WAAY;MACjC8F,aAAa,EAAE,IAAI,CAAC7F,UAAW;MAC/BY,GAAG,EAAE,IAAI,CAACA,GAAI;MAAAyE,QAAA,GAEbA,QAAQ,eACT1G,IAAA,CAACX,cAAc;QACb,eAAY,oBAAoB;QAChCwH,YAAY,EAAEA,YAAa;QAC3BC,QAAQ,EAAEA,QAAS;QACnBC,SAAS,EAAEA;MAAU,CACtB,CAAC,EACD,CAACvE,aAAa,IACbwE,KAAK,IAAI,IAAI,iBACbhI,QAAQ,CAACmI,YAAY,cACnB/G,KAAA,CAAAF,SAAA;QAAAwG,QAAA,gBACE1G,IAAA,CAACJ,gBAAgB;UACfuC,WAAW,EAAEA,WAAY;UACzBS,UAAU,EAAEA,UAAW;UACvB9B,iBAAiB,EAAE,IAAI,CAACsG,oBAAoB,CAC1CtG,iBAAiB,EACjBF,UAAU,EACVC,WACF;QAAE,CACH,CAAC,EACDA,WAAW,iBACVb,IAAA,CAACH,YAAY;UACXwH,OAAO,EAAE9E,gBAAiB;UAC1B+E,KAAK,EAAEjF,KAAM;UACbkF,QAAQ,EAAC,OAAO;UAChBC,QAAQ,EAAE,IAAI,CAAC5F,kBAAmB;UAClC6F,QAAQ,EAAE,IAAI,CAAC5F;QAAmB,CACnC,CACF,EACA+E,gBAAgB,IAAI,IAAI,iBACvB5G,IAAA,CAACV,OAAO;UACNoI,WAAW;UACXC,OAAO,EAAE;YACPC,SAAS,EAAE;UACb,CAAE;UACFC,eAAe,EAAC,kBAAkB;UAAAnB,QAAA,EAEjCE,gBAAgB,CAAC;QAAC,CACZ,CACV;MAAA,CACD,CAAC,EACHI,KAAK,CAACc,OAAO,CAAC,CAAC,CAAC,CAAC;MACnB,CAAC;IAAA,CACA,CAAC;EAEV;AACF;AAEA,IAAMC,UAAU,GAAG3I,gBAAgB,CAACmB,SAAS,CAAC;AAE9C,eAAewH,UAAU","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 =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
|
39
|
-
|
|
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);
|
package/dist/Dashboard.js.map
CHANGED
|
@@ -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":"
|
|
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":[]}
|
package/dist/DashboardEvents.js
CHANGED
|
@@ -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
|
-
|
|
5
|
-
listen
|
|
6
|
-
emit
|
|
7
|
-
useListener
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
listen
|
|
11
|
-
emit
|
|
12
|
-
useListener
|
|
13
|
-
|
|
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","
|
|
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":[]}
|
package/dist/DashboardLayout.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, { 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
|
-
|
|
36
|
-
|
|
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 =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
|
52
|
-
|
|
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
|
|
57
|
-
|
|
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
|
-
|
|
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
|
-
|
|
125
|
-
openedMap
|
|
126
|
-
} = _ref2;
|
|
142
|
+
var closed = _ref2.closed,
|
|
143
|
+
openedMap = _ref2.openedMap;
|
|
127
144
|
dispatch(updateDashboardData(id, {
|
|
128
145
|
closed,
|
|
129
146
|
openedMap
|