@deephaven/dashboard-core-plugins 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.
- package/dist/ChartBuilderPlugin.js +8 -15
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPanelPlugin.js +13 -6
- package/dist/ChartPanelPlugin.js.map +1 -1
- package/dist/ChartWidgetPlugin.js +11 -4
- package/dist/ChartWidgetPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js +38 -46
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js +63 -44
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPanelPlugin.js +3 -5
- package/dist/GridPanelPlugin.js.map +1 -1
- package/dist/GridWidgetPlugin.d.ts +11 -1
- package/dist/GridWidgetPlugin.d.ts.map +1 -1
- package/dist/GridWidgetPlugin.js +48 -30
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js +3 -5
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js +18 -17
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPanelPlugin.js +3 -5
- package/dist/PandasPanelPlugin.js.map +1 -1
- package/dist/PandasWidgetPlugin.js +3 -7
- package/dist/PandasWidgetPlugin.js.map +1 -1
- package/dist/TablePluginWrapper.js +8 -10
- package/dist/TablePluginWrapper.js.map +1 -1
- package/dist/WidgetLoaderPlugin.js +24 -29
- package/dist/WidgetLoaderPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +32 -58
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +4 -5
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +7 -10
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +8 -12
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/linker/Linker.js +100 -192
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js +23 -31
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +65 -66
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js +6 -14
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +7 -9
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.js +136 -220
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ChartPanelUtils.js +3 -4
- package/dist/panels/ChartPanelUtils.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +33 -52
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js +68 -130
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.js +6 -18
- package/dist/panels/CorePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +109 -165
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +30 -55
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +81 -141
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +68 -87
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js +45 -68
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +28 -6
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +224 -280
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.js +1 -3
- package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
- package/dist/panels/LogPanel.js +6 -13
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js +28 -50
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.js +19 -38
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.js +157 -292
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +5 -15
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/PandasReloadButton.js +1 -3
- package/dist/panels/PandasReloadButton.js.map +1 -1
- package/dist/panels/WidgetPanel.js +42 -51
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +6 -10
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/useConfigureRuff.js +8 -9
- package/dist/useConfigureRuff.js.map +1 -1
- package/dist/useDashboardColumnFilters.js +4 -7
- package/dist/useDashboardColumnFilters.js.map +1 -1
- package/dist/useGridLinker.js +9 -16
- package/dist/useGridLinker.js.map +1 -1
- package/dist/useIrisGridModel.d.ts +2 -2
- package/dist/useIrisGridModel.d.ts.map +1 -1
- package/dist/useIrisGridModel.js +34 -6
- package/dist/useIrisGridModel.js.map +1 -1
- package/dist/useTablePlugin.js +27 -14
- package/dist/useTablePlugin.js.map +1 -1
- package/package.json +24 -24
|
@@ -36,10 +36,9 @@ export class ConsolePanel extends PureComponent {
|
|
|
36
36
|
_defineProperty(this, "consoleRef", void 0);
|
|
37
37
|
_defineProperty(this, "objectSubscriptionCleanup", void 0);
|
|
38
38
|
_defineProperty(this, "savePanelState", debounce(() => {
|
|
39
|
-
var
|
|
40
|
-
consoleSettings,
|
|
41
|
-
itemIds
|
|
42
|
-
} = this.state;
|
|
39
|
+
var _this$state = this.state,
|
|
40
|
+
consoleSettings = _this$state.consoleSettings,
|
|
41
|
+
itemIds = _this$state.itemIds;
|
|
43
42
|
var panelState = {
|
|
44
43
|
consoleSettings,
|
|
45
44
|
itemIds: [...itemIds]
|
|
@@ -60,14 +59,10 @@ export class ConsolePanel extends PureComponent {
|
|
|
60
59
|
this.supportsType = this.supportsType.bind(this);
|
|
61
60
|
this.iconForType = this.iconForType.bind(this);
|
|
62
61
|
this.consoleRef = /*#__PURE__*/React.createRef();
|
|
63
|
-
var
|
|
64
|
-
panelState: initialPanelState
|
|
65
|
-
} = props;
|
|
62
|
+
var initialPanelState = props.panelState;
|
|
66
63
|
var _panelState = _objectSpread(_objectSpread({}, DEFAULT_PANEL_STATE), initialPanelState || {});
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
itemIds: _itemIds
|
|
70
|
-
} = _panelState;
|
|
64
|
+
var _consoleSettings = _panelState.consoleSettings,
|
|
65
|
+
_itemIds = _panelState.itemIds;
|
|
71
66
|
this.state = {
|
|
72
67
|
consoleSettings: _consoleSettings,
|
|
73
68
|
itemIds: new Map(_itemIds),
|
|
@@ -78,9 +73,7 @@ export class ConsolePanel extends PureComponent {
|
|
|
78
73
|
};
|
|
79
74
|
}
|
|
80
75
|
componentDidMount() {
|
|
81
|
-
var
|
|
82
|
-
glEventHub
|
|
83
|
-
} = this.props;
|
|
76
|
+
var glEventHub = this.props.glEventHub;
|
|
84
77
|
// Need to close the disconnected panels when we're first loaded,
|
|
85
78
|
// as they may have been saved with the dashboard
|
|
86
79
|
this.closeDisconnectedPanels();
|
|
@@ -88,52 +81,39 @@ export class ConsolePanel extends PureComponent {
|
|
|
88
81
|
this.subscribeToFieldUpdates();
|
|
89
82
|
}
|
|
90
83
|
componentDidUpdate(prevProps, prevState) {
|
|
91
|
-
var
|
|
92
|
-
consoleSettings,
|
|
93
|
-
itemIds
|
|
94
|
-
} = this.state;
|
|
84
|
+
var _this$state2 = this.state,
|
|
85
|
+
consoleSettings = _this$state2.consoleSettings,
|
|
86
|
+
itemIds = _this$state2.itemIds;
|
|
95
87
|
if (prevState.consoleSettings !== consoleSettings || prevState.itemIds !== itemIds) {
|
|
96
88
|
this.savePanelState();
|
|
97
89
|
}
|
|
98
90
|
}
|
|
99
91
|
componentWillUnmount() {
|
|
100
92
|
var _this$objectSubscript;
|
|
101
|
-
var
|
|
102
|
-
glEventHub
|
|
103
|
-
} = this.props;
|
|
93
|
+
var glEventHub = this.props.glEventHub;
|
|
104
94
|
this.savePanelState.flush();
|
|
105
95
|
glEventHub.off(PanelEvent.MOUNT, this.handlePanelMount);
|
|
106
96
|
(_this$objectSubscript = this.objectSubscriptionCleanup) === null || _this$objectSubscript === void 0 || _this$objectSubscript.call(this);
|
|
107
97
|
}
|
|
108
98
|
subscribeToFieldUpdates() {
|
|
109
|
-
var
|
|
110
|
-
sessionWrapper
|
|
111
|
-
} = this.props;
|
|
99
|
+
var sessionWrapper = this.props.sessionWrapper;
|
|
112
100
|
if (sessionWrapper == null) {
|
|
113
101
|
return;
|
|
114
102
|
}
|
|
115
|
-
var
|
|
116
|
-
session
|
|
117
|
-
} = sessionWrapper;
|
|
103
|
+
var session = sessionWrapper.session;
|
|
118
104
|
this.objectSubscriptionCleanup = session.subscribeToFieldUpdates(updates => {
|
|
119
105
|
log.debug('Got updates', updates);
|
|
120
106
|
this.setState(_ref => {
|
|
121
|
-
var
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
updated,
|
|
126
|
-
created,
|
|
127
|
-
removed
|
|
128
|
-
} = updates;
|
|
107
|
+
var objectMap = _ref.objectMap;
|
|
108
|
+
var updated = updates.updated,
|
|
109
|
+
created = updates.created,
|
|
110
|
+
removed = updates.removed;
|
|
129
111
|
|
|
130
112
|
// Remove from the array if it's been removed OR modified. We'll add it back after if it was modified.
|
|
131
113
|
var objectsToRemove = [...updated, ...removed];
|
|
132
114
|
var newObjectMap = new Map(objectMap);
|
|
133
115
|
objectsToRemove.forEach(toRemove => {
|
|
134
|
-
var
|
|
135
|
-
title
|
|
136
|
-
} = toRemove;
|
|
116
|
+
var title = toRemove.title;
|
|
137
117
|
if (title !== undefined) {
|
|
138
118
|
newObjectMap.delete(title);
|
|
139
119
|
}
|
|
@@ -154,9 +134,7 @@ export class ConsolePanel extends PureComponent {
|
|
|
154
134
|
}
|
|
155
135
|
setItemId(name, id) {
|
|
156
136
|
this.setState(_ref2 => {
|
|
157
|
-
var
|
|
158
|
-
itemIds
|
|
159
|
-
} = _ref2;
|
|
137
|
+
var itemIds = _ref2.itemIds;
|
|
160
138
|
var newItemIds = new Map(itemIds);
|
|
161
139
|
newItemIds.set(name, id);
|
|
162
140
|
return {
|
|
@@ -166,9 +144,7 @@ export class ConsolePanel extends PureComponent {
|
|
|
166
144
|
}
|
|
167
145
|
getItemId(name) {
|
|
168
146
|
var createIfNecessary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
169
|
-
var
|
|
170
|
-
itemIds
|
|
171
|
-
} = this.state;
|
|
147
|
+
var itemIds = this.state.itemIds;
|
|
172
148
|
var id = itemIds.get(name);
|
|
173
149
|
if (id == null && createIfNecessary) {
|
|
174
150
|
id = nanoid();
|
|
@@ -183,9 +159,7 @@ export class ConsolePanel extends PureComponent {
|
|
|
183
159
|
*/
|
|
184
160
|
deleteItemId(id) {
|
|
185
161
|
this.setState(_ref3 => {
|
|
186
|
-
var
|
|
187
|
-
itemIds
|
|
188
|
-
} = _ref3;
|
|
162
|
+
var itemIds = _ref3.itemIds;
|
|
189
163
|
log.debug('Delete item', id, itemIds);
|
|
190
164
|
var key = [...itemIds.keys()].find(k => itemIds.get(k) === id);
|
|
191
165
|
if (key === undefined) {
|
|
@@ -204,9 +178,7 @@ export class ConsolePanel extends PureComponent {
|
|
|
204
178
|
}
|
|
205
179
|
handlePanelMount(panel) {
|
|
206
180
|
var _panel$props, _panel$props2;
|
|
207
|
-
var
|
|
208
|
-
itemIds
|
|
209
|
-
} = this.state;
|
|
181
|
+
var itemIds = this.state.itemIds;
|
|
210
182
|
var panelId = panel === null || panel === void 0 || (_panel$props = panel.props) === null || _panel$props === void 0 ? void 0 : _panel$props.id;
|
|
211
183
|
var sourceId = panel === null || panel === void 0 || (_panel$props2 = panel.props) === null || _panel$props2 === void 0 || (_panel$props2 = _panel$props2.metadata) === null || _panel$props2 === void 0 ? void 0 : _panel$props2.sourcePanelId;
|
|
212
184
|
if (panelId && sourceId) {
|
|
@@ -229,9 +201,7 @@ export class ConsolePanel extends PureComponent {
|
|
|
229
201
|
// When replacing a panel, LayoutUtils.openComponent adds the new panel before removing the old
|
|
230
202
|
// one, so the old panel's CLOSED event fires with the same panelId as the new panel.
|
|
231
203
|
// If a panel with panelId still exists, it was replaced and we should not delete the itemId.
|
|
232
|
-
var
|
|
233
|
-
glContainer
|
|
234
|
-
} = this.props;
|
|
204
|
+
var glContainer = this.props.glContainer;
|
|
235
205
|
var root = LayoutUtils.getRootFromContainer(glContainer);
|
|
236
206
|
var stack = LayoutUtils.getStackForConfig(root, {
|
|
237
207
|
id: panelId
|
|
@@ -244,9 +214,7 @@ export class ConsolePanel extends PureComponent {
|
|
|
244
214
|
this.deleteItemId(panelId);
|
|
245
215
|
}
|
|
246
216
|
handleFocusCommandHistory() {
|
|
247
|
-
var
|
|
248
|
-
glEventHub
|
|
249
|
-
} = this.props;
|
|
217
|
+
var glEventHub = this.props.glEventHub;
|
|
250
218
|
glEventHub.emit(ConsoleEvent.FOCUS_HISTORY);
|
|
251
219
|
}
|
|
252
220
|
handleResize() {
|
|
@@ -258,9 +226,7 @@ export class ConsolePanel extends PureComponent {
|
|
|
258
226
|
handleOpenObject(object) {
|
|
259
227
|
var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
260
228
|
assertNotNull(this.context);
|
|
261
|
-
var
|
|
262
|
-
root
|
|
263
|
-
} = this.context;
|
|
229
|
+
var root = this.context.root;
|
|
264
230
|
var oldPanelId = object.title != null ? this.getItemId(object.title, false) : null;
|
|
265
231
|
if (forceOpen || oldPanelId != null && LayoutUtils.getStackForRoot(root, {
|
|
266
232
|
id: oldPanelId
|
|
@@ -269,15 +235,11 @@ export class ConsolePanel extends PureComponent {
|
|
|
269
235
|
}
|
|
270
236
|
}
|
|
271
237
|
handleCloseObject(object) {
|
|
272
|
-
var
|
|
273
|
-
title
|
|
274
|
-
} = object;
|
|
238
|
+
var title = object.title;
|
|
275
239
|
if (title !== undefined) {
|
|
276
240
|
var id = this.getItemId(title, false);
|
|
277
241
|
if (id != null) {
|
|
278
|
-
var
|
|
279
|
-
glEventHub
|
|
280
|
-
} = this.props;
|
|
242
|
+
var glEventHub = this.props.glEventHub;
|
|
281
243
|
emitPanelClose(glEventHub, id);
|
|
282
244
|
// Just emit for all panels since there shouldn't be dashboard and panel name conflicts
|
|
283
245
|
emitCloseDashboard(glEventHub, title);
|
|
@@ -285,9 +247,7 @@ export class ConsolePanel extends PureComponent {
|
|
|
285
247
|
}
|
|
286
248
|
}
|
|
287
249
|
handleSettingsChange(consoleSettings) {
|
|
288
|
-
var
|
|
289
|
-
glEventHub
|
|
290
|
-
} = this.props;
|
|
250
|
+
var glEventHub = this.props.glEventHub;
|
|
291
251
|
log.debug('handleSettingsChange', consoleSettings);
|
|
292
252
|
this.setState({
|
|
293
253
|
consoleSettings
|
|
@@ -299,13 +259,10 @@ export class ConsolePanel extends PureComponent {
|
|
|
299
259
|
* @param widget The widget to open
|
|
300
260
|
*/
|
|
301
261
|
openWidget(widget) {
|
|
302
|
-
var
|
|
303
|
-
glEventHub,
|
|
304
|
-
plugins
|
|
305
|
-
|
|
306
|
-
var {
|
|
307
|
-
type
|
|
308
|
-
} = widget;
|
|
262
|
+
var _this$props = this.props,
|
|
263
|
+
glEventHub = _this$props.glEventHub,
|
|
264
|
+
plugins = _this$props.plugins;
|
|
265
|
+
var type = widget.type;
|
|
309
266
|
var widgetDashboardPlugin = getWidgetDashboardPlugin(plugins, type);
|
|
310
267
|
if (widgetDashboardPlugin != null) {
|
|
311
268
|
// If it can be opened as a dashboard, open it as a dashboard. Otherwise, open it as a panel.
|
|
@@ -322,18 +279,14 @@ export class ConsolePanel extends PureComponent {
|
|
|
322
279
|
* @param widget The widget to open
|
|
323
280
|
*/
|
|
324
281
|
openPanelWidget(widget) {
|
|
325
|
-
var
|
|
326
|
-
glEventHub,
|
|
327
|
-
sessionWrapper
|
|
328
|
-
} = this.props;
|
|
282
|
+
var _this$props2 = this.props,
|
|
283
|
+
glEventHub = _this$props2.glEventHub,
|
|
284
|
+
sessionWrapper = _this$props2.sessionWrapper;
|
|
329
285
|
assertNotNull(sessionWrapper);
|
|
330
|
-
var
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
var {
|
|
335
|
-
title = widget.name
|
|
336
|
-
} = widget;
|
|
286
|
+
var config = sessionWrapper.config,
|
|
287
|
+
session = sessionWrapper.session;
|
|
288
|
+
var _widget$title = widget.title,
|
|
289
|
+
title = _widget$title === void 0 ? widget.name : _widget$title;
|
|
337
290
|
assertNotNull(title);
|
|
338
291
|
var itemId = this.getItemId(title);
|
|
339
292
|
assertNotNull(itemId);
|
|
@@ -360,20 +313,16 @@ export class ConsolePanel extends PureComponent {
|
|
|
360
313
|
*/
|
|
361
314
|
closeDisconnectedPanels() {
|
|
362
315
|
var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
363
|
-
var
|
|
364
|
-
consoleSettings,
|
|
365
|
-
itemIds
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
isClosePanelsOnDisconnectEnabled = true
|
|
369
|
-
} = consoleSettings;
|
|
316
|
+
var _this$state3 = this.state,
|
|
317
|
+
consoleSettings = _this$state3.consoleSettings,
|
|
318
|
+
itemIds = _this$state3.itemIds;
|
|
319
|
+
var _consoleSettings$isCl = consoleSettings.isClosePanelsOnDisconnectEnabled,
|
|
320
|
+
isClosePanelsOnDisconnectEnabled = _consoleSettings$isCl === void 0 ? true : _consoleSettings$isCl;
|
|
370
321
|
if (!isClosePanelsOnDisconnectEnabled && !force) {
|
|
371
322
|
return;
|
|
372
323
|
}
|
|
373
324
|
var panelIdsToClose = [...itemIds.values()];
|
|
374
|
-
var
|
|
375
|
-
glEventHub
|
|
376
|
-
} = this.props;
|
|
325
|
+
var glEventHub = this.props.glEventHub;
|
|
377
326
|
panelIdsToClose.forEach(panelId => {
|
|
378
327
|
emitPanelClose(glEventHub, panelId);
|
|
379
328
|
});
|
|
@@ -386,15 +335,11 @@ export class ConsolePanel extends PureComponent {
|
|
|
386
335
|
(_this$consoleRef$curr3 = this.consoleRef.current) === null || _this$consoleRef$curr3 === void 0 || _this$consoleRef$curr3.updateDimensions();
|
|
387
336
|
}
|
|
388
337
|
supportsType(type) {
|
|
389
|
-
var
|
|
390
|
-
plugins
|
|
391
|
-
} = this.props;
|
|
338
|
+
var plugins = this.props.plugins;
|
|
392
339
|
return [...plugins.values()].some(plugin => pluginSupportsType(plugin, type));
|
|
393
340
|
}
|
|
394
341
|
iconForType(type) {
|
|
395
|
-
var
|
|
396
|
-
plugins
|
|
397
|
-
} = this.props;
|
|
342
|
+
var plugins = this.props.plugins;
|
|
398
343
|
var plugin = [...plugins.values()].find(p => pluginSupportsType(p, type));
|
|
399
344
|
if (plugin != null) {
|
|
400
345
|
return getIconForPlugin(plugin);
|
|
@@ -405,14 +350,13 @@ export class ConsolePanel extends PureComponent {
|
|
|
405
350
|
});
|
|
406
351
|
}
|
|
407
352
|
render() {
|
|
408
|
-
var
|
|
409
|
-
commandHistoryStorage,
|
|
410
|
-
glContainer,
|
|
411
|
-
glEventHub,
|
|
412
|
-
sessionWrapper,
|
|
413
|
-
timeZone,
|
|
414
|
-
unzip
|
|
415
|
-
} = this.props;
|
|
353
|
+
var _this$props3 = this.props,
|
|
354
|
+
commandHistoryStorage = _this$props3.commandHistoryStorage,
|
|
355
|
+
glContainer = _this$props3.glContainer,
|
|
356
|
+
glEventHub = _this$props3.glEventHub,
|
|
357
|
+
sessionWrapper = _this$props3.sessionWrapper,
|
|
358
|
+
timeZone = _this$props3.timeZone,
|
|
359
|
+
unzip = _this$props3.unzip;
|
|
416
360
|
if (sessionWrapper == null) {
|
|
417
361
|
return /*#__PURE__*/_jsx(LoadingOverlay, {
|
|
418
362
|
isLoading: false,
|
|
@@ -420,26 +364,20 @@ export class ConsolePanel extends PureComponent {
|
|
|
420
364
|
"data-testid": "console-panel-loading-error"
|
|
421
365
|
});
|
|
422
366
|
}
|
|
423
|
-
var
|
|
424
|
-
consoleSettings,
|
|
425
|
-
error,
|
|
426
|
-
objectMap
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
var
|
|
436
|
-
|
|
437
|
-
processInfoId
|
|
438
|
-
} = details;
|
|
439
|
-
var {
|
|
440
|
-
id: sessionId,
|
|
441
|
-
type: language
|
|
442
|
-
} = config;
|
|
367
|
+
var _this$state4 = this.state,
|
|
368
|
+
consoleSettings = _this$state4.consoleSettings,
|
|
369
|
+
error = _this$state4.error,
|
|
370
|
+
objectMap = _this$state4.objectMap;
|
|
371
|
+
var config = sessionWrapper.config,
|
|
372
|
+
session = sessionWrapper.session,
|
|
373
|
+
connection = sessionWrapper.connection,
|
|
374
|
+
_sessionWrapper$detai = sessionWrapper.details,
|
|
375
|
+
details = _sessionWrapper$detai === void 0 ? {} : _sessionWrapper$detai,
|
|
376
|
+
dh = sessionWrapper.dh;
|
|
377
|
+
var workerName = details.workerName,
|
|
378
|
+
processInfoId = details.processInfoId;
|
|
379
|
+
var sessionId = config.id,
|
|
380
|
+
language = config.type;
|
|
443
381
|
return /*#__PURE__*/_jsx(Panel, {
|
|
444
382
|
className: "iris-panel-console",
|
|
445
383
|
componentPanel: this,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePanel.js","names":["React","PureComponent","nanoid","debounce","connect","LoadingOverlay","Console","ConsoleConstants","HeapUsage","ObjectIcon","emitCloseDashboard","emitCreateDashboard","emitPanelOpen","emitPanelClose","LayoutManagerContext","LayoutUtils","PanelEvent","getVariableDescriptor","Log","getCommandHistoryStorage","getPlugins","getTimeZone","assertNotNull","getIconForPlugin","getWidgetDashboardPlugin","pluginSupportsType","ConsoleEvent","Panel","getDashboardSessionWrapper","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","DEBOUNCE_PANEL_STATE_UPDATE","DEFAULT_PANEL_STATE","Object","freeze","consoleSettings","itemIds","ConsolePanel","constructor","props","_defineProperty","state","panelState","debug","setState","handleFocusCommandHistory","bind","handleOpenObject","handleCloseObject","handleResize","handleSettingsChange","handleShow","handlePanelMount","supportsType","iconForType","consoleRef","createRef","initialPanelState","_objectSpread","Map","objectMap","error","undefined","componentDidMount","glEventHub","closeDisconnectedPanels","on","MOUNT","subscribeToFieldUpdates","componentDidUpdate","prevProps","prevState","savePanelState","componentWillUnmount","_this$objectSubscript","flush","off","objectSubscriptionCleanup","call","sessionWrapper","session","updates","_ref","updated","created","removed","objectsToRemove","newObjectMap","forEach","toRemove","title","delete","objectsToAdd","toAdd","set","setItemId","name","id","_ref2","newItemIds","getItemId","createIfNecessary","arguments","length","get","deleteItemId","_ref3","key","keys","find","k","handleTabFocus","_this$consoleRef$curr","current","focus","panel","_panel$props","_panel$props2","panelId","sourceId","metadata","sourcePanelId","pandelIds","Set","values","has","handlePanelClosed","glContainer","root","getRootFromContainer","stack","getStackForConfig","getContentItemInStack","emit","FOCUS_HISTORY","updateDimensions","object","forceOpen","context","oldPanelId","getStackForRoot","openWidget","SETTINGS_CHANGED","widget","plugins","type","widgetDashboardPlugin","dashboardPayload","createDashboardPayload","openPanelWidget","config","itemId","openOptions","fetch","getObject","sessionId","addCommand","command","_this$consoleRef$curr2","execute","force","isClosePanelsOnDisconnectEnabled","panelIdsToClose","_this$consoleRef$curr3","some","plugin","p","render","commandHistoryStorage","timeZone","unzip","isLoading","errorMessage","connection","details","dh","workerName","processInfoId","language","className","componentPanel","onResize","onShow","onTabFocus","concat","children","ref","settings","focusCommandHistory","openObject","closeObject","onSettingsChange","statusBarChildren","LANGUAGE_MAP","defaultUpdateInterval","hoverUpdateInterval","monitorDuration","showObjectsMenu","scope","mapStateToProps","ownProps","localDashboardId","ConnectedConsolePanel","forwardRef"],"sources":["../../src/panels/ConsolePanel.tsx"],"sourcesContent":["// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport { nanoid } from 'nanoid';\nimport debounce from 'lodash.debounce';\nimport { connect } from 'react-redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport {\n type CommandHistoryStorage,\n Console,\n ConsoleConstants,\n HeapUsage,\n ObjectIcon,\n} from '@deephaven/console';\nimport {\n type DashboardPanelProps,\n emitCloseDashboard,\n emitCreateDashboard,\n emitPanelOpen,\n emitPanelClose,\n LayoutManagerContext,\n LayoutUtils,\n PanelEvent,\n} from '@deephaven/dashboard';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { getVariableDescriptor } from '@deephaven/jsapi-bootstrap';\nimport { type SessionWrapper } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getCommandHistoryStorage,\n getPlugins,\n getTimeZone,\n type RootState,\n} from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n getIconForPlugin,\n getWidgetDashboardPlugin,\n pluginSupportsType,\n type PluginModuleMap,\n} from '@deephaven/plugin';\nimport type { JSZipObject } from 'jszip';\nimport { ConsoleEvent } from '../events';\nimport Panel from './CorePanel';\nimport { getDashboardSessionWrapper } from '../redux';\nimport './ConsolePanel.scss';\n\nconst log = Log.module('ConsolePanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst DEFAULT_PANEL_STATE = Object.freeze({\n consoleSettings: {},\n itemIds: [],\n});\n\ninterface ConsoleSettings {\n isClosePanelsOnDisconnectEnabled?: boolean;\n}\n\ninterface PanelState {\n consoleSettings: ConsoleSettings;\n itemIds: [string, string][];\n}\n\ntype ItemIds = Map<string, string>;\n\ninterface ConsolePanelProps extends DashboardPanelProps {\n commandHistoryStorage: CommandHistoryStorage;\n\n panelState?: PanelState;\n\n sessionWrapper?: SessionWrapper;\n\n timeZone: string;\n unzip?: (file: File) => Promise<JSZipObject[]>;\n plugins: PluginModuleMap;\n}\n\ninterface ConsolePanelState {\n consoleSettings: ConsoleSettings;\n itemIds: ItemIds;\n\n objectMap: Map<string, dh.ide.VariableDefinition>;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n error: unknown;\n}\n\nexport class ConsolePanel extends PureComponent<\n ConsolePanelProps,\n ConsolePanelState\n> {\n static COMPONENT = 'ConsolePanel';\n\n static TITLE = 'Console';\n\n static contextType = LayoutManagerContext;\n\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n declare context: React.ContextType<typeof LayoutManagerContext>;\n\n constructor(props: ConsolePanelProps) {\n super(props);\n\n this.handleFocusCommandHistory = this.handleFocusCommandHistory.bind(this);\n this.handleOpenObject = this.handleOpenObject.bind(this);\n this.handleCloseObject = this.handleCloseObject.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSettingsChange = this.handleSettingsChange.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handlePanelMount = this.handlePanelMount.bind(this);\n this.supportsType = this.supportsType.bind(this);\n this.iconForType = this.iconForType.bind(this);\n\n this.consoleRef = React.createRef();\n\n const { panelState: initialPanelState } = props;\n const panelState = {\n ...DEFAULT_PANEL_STATE,\n ...(initialPanelState || {}),\n };\n const { consoleSettings, itemIds } = panelState;\n\n this.state = {\n consoleSettings,\n itemIds: new Map(itemIds),\n\n objectMap: new Map(),\n error: undefined,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount(): void {\n const { glEventHub } = this.props;\n // Need to close the disconnected panels when we're first loaded,\n // as they may have been saved with the dashboard\n this.closeDisconnectedPanels();\n glEventHub.on(PanelEvent.MOUNT, this.handlePanelMount);\n this.subscribeToFieldUpdates();\n }\n\n componentDidUpdate(\n prevProps: ConsolePanelProps,\n prevState: ConsolePanelState\n ): void {\n const { consoleSettings, itemIds } = this.state;\n if (\n prevState.consoleSettings !== consoleSettings ||\n prevState.itemIds !== itemIds\n ) {\n this.savePanelState();\n }\n }\n\n componentWillUnmount(): void {\n const { glEventHub } = this.props;\n this.savePanelState.flush();\n glEventHub.off(PanelEvent.MOUNT, this.handlePanelMount);\n this.objectSubscriptionCleanup?.();\n }\n\n consoleRef: RefObject<Console>;\n\n objectSubscriptionCleanup?: () => void;\n\n subscribeToFieldUpdates(): void {\n const { sessionWrapper } = this.props;\n if (sessionWrapper == null) {\n return;\n }\n\n const { session } = sessionWrapper;\n\n this.objectSubscriptionCleanup = session.subscribeToFieldUpdates(\n updates => {\n log.debug('Got updates', updates);\n this.setState(({ objectMap }) => {\n const { updated, created, removed } = updates;\n\n // Remove from the array if it's been removed OR modified. We'll add it back after if it was modified.\n const objectsToRemove = [...updated, ...removed];\n const newObjectMap = new Map(objectMap);\n objectsToRemove.forEach(toRemove => {\n const { title } = toRemove;\n if (title !== undefined) {\n newObjectMap.delete(title);\n }\n });\n\n // Now add all the modified and updated widgets back in\n const objectsToAdd = [...updated, ...created];\n objectsToAdd.forEach(toAdd => {\n if (toAdd.title !== undefined) {\n newObjectMap.set(toAdd.title, toAdd);\n }\n });\n\n return { objectMap: newObjectMap };\n });\n }\n );\n }\n\n setItemId(name: string, id: string): void {\n this.setState(({ itemIds }) => {\n const newItemIds = new Map(itemIds);\n newItemIds.set(name, id);\n return { itemIds: newItemIds };\n });\n }\n\n getItemId(name: string, createIfNecessary = true): string | undefined {\n const { itemIds } = this.state;\n let id = itemIds.get(name);\n if (id == null && createIfNecessary) {\n id = nanoid();\n this.setItemId(name, id);\n }\n return id;\n }\n\n /**\n * Removes the item ID mapping from state by its ID value.\n * @param id The item ID to delete from the itemIds map.\n */\n private deleteItemId(id: string): void {\n this.setState(({ itemIds }) => {\n log.debug('Delete item', id, itemIds);\n const key = [...itemIds.keys()].find(k => itemIds.get(k) === id);\n if (key === undefined) {\n return null;\n }\n const newItemIds = new Map(itemIds);\n newItemIds.delete(key);\n return { itemIds: newItemIds };\n });\n }\n\n handleTabFocus(): void {\n this.consoleRef.current?.focus();\n }\n\n handlePanelMount(panel: {\n props: { id: string; metadata: { sourcePanelId: string } };\n }): void {\n const { itemIds } = this.state;\n const panelId = panel?.props?.id;\n const sourceId = panel?.props?.metadata?.sourcePanelId;\n if (panelId && sourceId) {\n // Check if the panel was created from a panel in this console\n const pandelIds = new Set(itemIds.values());\n if (pandelIds.has(sourceId)) {\n // The Chart Panel does not have name so map panelId to panelId\n this.setItemId(panelId, panelId);\n }\n }\n }\n\n /**\n * Handles a panel closed event. Removes the panel's item ID mapping unless\n * the panel was replaced (i.e. a panel with the same ID still exists in the layout),\n * in which case the mapping is retained for the replacement panel.\n * @param panelId The ID of the panel that was closed.\n */\n handlePanelClosed(panelId: string): void {\n // When replacing a panel, LayoutUtils.openComponent adds the new panel before removing the old\n // one, so the old panel's CLOSED event fires with the same panelId as the new panel.\n // If a panel with panelId still exists, it was replaced and we should not delete the itemId.\n const { glContainer } = this.props;\n const root = LayoutUtils.getRootFromContainer(glContainer);\n const stack = LayoutUtils.getStackForConfig(root, { id: panelId });\n if (\n stack !== null &&\n LayoutUtils.getContentItemInStack(stack, { id: panelId }) !== null\n ) {\n return;\n }\n this.deleteItemId(panelId);\n }\n\n handleFocusCommandHistory(): void {\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.FOCUS_HISTORY);\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n handleShow(): void {\n this.updateDimensions();\n }\n\n handleOpenObject(\n object: dh.ide.VariableDescriptor & { title?: string },\n forceOpen = true\n ): void {\n assertNotNull(this.context);\n const { root } = this.context;\n const oldPanelId =\n object.title != null ? this.getItemId(object.title, false) : null;\n if (\n forceOpen ||\n (oldPanelId != null &&\n LayoutUtils.getStackForRoot(\n root,\n { id: oldPanelId },\n false,\n false,\n false\n ) != null)\n ) {\n this.openWidget(object);\n }\n }\n\n handleCloseObject(object: dh.ide.VariableDefinition): void {\n const { title } = object;\n if (title !== undefined) {\n const id = this.getItemId(title, false);\n if (id != null) {\n const { glEventHub } = this.props;\n emitPanelClose(glEventHub, id);\n // Just emit for all panels since there shouldn't be dashboard and panel name conflicts\n emitCloseDashboard(glEventHub, title);\n }\n }\n }\n\n handleSettingsChange(consoleSettings: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n log.debug('handleSettingsChange', consoleSettings);\n this.setState({\n consoleSettings,\n });\n glEventHub.emit(ConsoleEvent.SETTINGS_CHANGED, consoleSettings);\n }\n\n /**\n * @param widget The widget to open\n */\n openWidget(widget: dh.ide.VariableDescriptor & { title?: string }): void {\n const { glEventHub, plugins } = this.props;\n const { type } = widget;\n const widgetDashboardPlugin = getWidgetDashboardPlugin(plugins, type);\n if (widgetDashboardPlugin != null) {\n // If it can be opened as a dashboard, open it as a dashboard. Otherwise, open it as a panel.\n const dashboardPayload =\n widgetDashboardPlugin.createDashboardPayload(widget);\n log.debug('openDashboardWidget', dashboardPayload);\n emitCreateDashboard(glEventHub, dashboardPayload);\n } else {\n this.openPanelWidget(widget);\n }\n }\n\n /**\n * Open the given widget in a new panel. This is used for all widget types except \"widget dashboard\" types, which are widgets that should be opened in a new dashboard instead of a panel.\n * @param widget The widget to open\n */\n private openPanelWidget(\n widget: dh.ide.VariableDescriptor & { title?: string }\n ): void {\n const { glEventHub, sessionWrapper } = this.props;\n assertNotNull(sessionWrapper);\n\n const { config, session } = sessionWrapper;\n const { title = widget.name } = widget;\n assertNotNull(title);\n const itemId = this.getItemId(title);\n assertNotNull(itemId);\n const openOptions = {\n fetch: () => session.getObject(widget),\n panelId: itemId,\n widget: {\n ...getVariableDescriptor(widget),\n sessionId: config.id,\n },\n };\n\n log.debug('openPanelWidget', openOptions);\n\n emitPanelOpen(glEventHub, openOptions);\n }\n\n addCommand(command: string, focus = true, execute = false): void {\n this.consoleRef.current?.addCommand(command, focus, execute);\n }\n\n /**\n * Close the disconnected panels from this session\n * @param force True to force the panels closed regardless of the current setting\n */\n closeDisconnectedPanels(force = false): void {\n const { consoleSettings, itemIds } = this.state;\n const { isClosePanelsOnDisconnectEnabled = true } = consoleSettings;\n if (!isClosePanelsOnDisconnectEnabled && !force) {\n return;\n }\n\n const panelIdsToClose = [...itemIds.values()];\n const { glEventHub } = this.props;\n panelIdsToClose.forEach(panelId => {\n emitPanelClose(glEventHub, panelId);\n });\n\n this.setState({ itemIds: new Map() });\n }\n\n savePanelState = debounce((): void => {\n const { consoleSettings, itemIds } = this.state;\n const panelState = {\n consoleSettings,\n itemIds: [...itemIds],\n };\n log.debug('Saving panel state', panelState);\n // eslint-disable-next-line react/no-unused-state\n this.setState({ panelState });\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateDimensions(): void {\n this.consoleRef.current?.updateDimensions();\n }\n\n supportsType(type: string): boolean {\n const { plugins } = this.props;\n return [...plugins.values()].some(plugin =>\n pluginSupportsType(plugin, type)\n );\n }\n\n iconForType(type: string): JSX.Element {\n const { plugins } = this.props;\n const plugin = [...plugins.values()].find(p => pluginSupportsType(p, type));\n if (plugin != null) {\n return getIconForPlugin(plugin);\n }\n // TODO: #1573 Remove this default and always return getIconForPlugin\n return <ObjectIcon type={type} />;\n }\n\n render(): ReactElement | null {\n const {\n commandHistoryStorage,\n glContainer,\n glEventHub,\n sessionWrapper,\n timeZone,\n unzip,\n } = this.props;\n\n if (sessionWrapper == null) {\n return (\n <LoadingOverlay\n isLoading={false}\n errorMessage=\"Console is disabled.\"\n data-testid=\"console-panel-loading-error\"\n />\n );\n }\n\n const { consoleSettings, error, objectMap } = this.state;\n const { config, session, connection, details = {}, dh } = sessionWrapper;\n const { workerName, processInfoId } = details;\n const { id: sessionId, type: language } = config;\n\n return (\n <Panel\n className=\"iris-panel-console\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleTabFocus}\n errorMessage={error != null ? `${error}` : undefined}\n >\n {session != null && (\n <Console\n dh={dh}\n ref={this.consoleRef}\n settings={consoleSettings}\n session={session}\n focusCommandHistory={this.handleFocusCommandHistory}\n openObject={this.handleOpenObject}\n closeObject={this.handleCloseObject}\n commandHistoryStorage={commandHistoryStorage}\n onSettingsChange={this.handleSettingsChange}\n language={language}\n statusBarChildren={\n <>\n <div>{ConsoleConstants.LANGUAGE_MAP.get(language)}</div>\n {workerName != null && (\n <>\n <div>•</div>\n {workerName}\n </>\n )}\n {processInfoId != null && (\n <>\n <div>•</div>\n {processInfoId}\n <div>•</div>\n </>\n )}\n <HeapUsage\n connection={connection}\n defaultUpdateInterval={10 * 1000}\n hoverUpdateInterval={3 * 1000}\n monitorDuration={10 * 60 * 1000}\n />\n </>\n }\n showObjectsMenu={false}\n scope={sessionId}\n timeZone={timeZone}\n objectMap={objectMap}\n unzip={unzip}\n supportsType={this.supportsType}\n iconForType={this.iconForType}\n />\n )}\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<\n ConsolePanelProps,\n 'commandHistoryStorage' | 'sessionWrapper' | 'timeZone' | 'plugins'\n> => ({\n commandHistoryStorage: getCommandHistoryStorage(\n state\n ) as CommandHistoryStorage,\n sessionWrapper: getDashboardSessionWrapper(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n plugins: getPlugins(state),\n});\n\nconst ConnectedConsolePanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(ConsolePanel);\n\nexport default ConnectedConsolePanel;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ConsolePanel.js","names":["React","PureComponent","nanoid","debounce","connect","LoadingOverlay","Console","ConsoleConstants","HeapUsage","ObjectIcon","emitCloseDashboard","emitCreateDashboard","emitPanelOpen","emitPanelClose","LayoutManagerContext","LayoutUtils","PanelEvent","getVariableDescriptor","Log","getCommandHistoryStorage","getPlugins","getTimeZone","assertNotNull","getIconForPlugin","getWidgetDashboardPlugin","pluginSupportsType","ConsoleEvent","Panel","getDashboardSessionWrapper","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","DEBOUNCE_PANEL_STATE_UPDATE","DEFAULT_PANEL_STATE","Object","freeze","consoleSettings","itemIds","ConsolePanel","constructor","props","_defineProperty","_this$state","state","panelState","debug","setState","handleFocusCommandHistory","bind","handleOpenObject","handleCloseObject","handleResize","handleSettingsChange","handleShow","handlePanelMount","supportsType","iconForType","consoleRef","createRef","initialPanelState","_objectSpread","Map","objectMap","error","undefined","componentDidMount","glEventHub","closeDisconnectedPanels","on","MOUNT","subscribeToFieldUpdates","componentDidUpdate","prevProps","prevState","_this$state2","savePanelState","componentWillUnmount","_this$objectSubscript","flush","off","objectSubscriptionCleanup","call","sessionWrapper","session","updates","_ref","updated","created","removed","objectsToRemove","newObjectMap","forEach","toRemove","title","delete","objectsToAdd","toAdd","set","setItemId","name","id","_ref2","newItemIds","getItemId","createIfNecessary","arguments","length","get","deleteItemId","_ref3","key","keys","find","k","handleTabFocus","_this$consoleRef$curr","current","focus","panel","_panel$props","_panel$props2","panelId","sourceId","metadata","sourcePanelId","pandelIds","Set","values","has","handlePanelClosed","glContainer","root","getRootFromContainer","stack","getStackForConfig","getContentItemInStack","emit","FOCUS_HISTORY","updateDimensions","object","forceOpen","context","oldPanelId","getStackForRoot","openWidget","SETTINGS_CHANGED","widget","_this$props","plugins","type","widgetDashboardPlugin","dashboardPayload","createDashboardPayload","openPanelWidget","_this$props2","config","_widget$title","itemId","openOptions","fetch","getObject","sessionId","addCommand","command","_this$consoleRef$curr2","execute","force","_this$state3","_consoleSettings$isCl","isClosePanelsOnDisconnectEnabled","panelIdsToClose","_this$consoleRef$curr3","some","plugin","p","render","_this$props3","commandHistoryStorage","timeZone","unzip","isLoading","errorMessage","_this$state4","connection","_sessionWrapper$detai","details","dh","workerName","processInfoId","language","className","componentPanel","onResize","onShow","onTabFocus","concat","children","ref","settings","focusCommandHistory","openObject","closeObject","onSettingsChange","statusBarChildren","LANGUAGE_MAP","defaultUpdateInterval","hoverUpdateInterval","monitorDuration","showObjectsMenu","scope","mapStateToProps","ownProps","localDashboardId","ConnectedConsolePanel","forwardRef"],"sources":["../../src/panels/ConsolePanel.tsx"],"sourcesContent":["// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport { nanoid } from 'nanoid';\nimport debounce from 'lodash.debounce';\nimport { connect } from 'react-redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport {\n type CommandHistoryStorage,\n Console,\n ConsoleConstants,\n HeapUsage,\n ObjectIcon,\n} from '@deephaven/console';\nimport {\n type DashboardPanelProps,\n emitCloseDashboard,\n emitCreateDashboard,\n emitPanelOpen,\n emitPanelClose,\n LayoutManagerContext,\n LayoutUtils,\n PanelEvent,\n} from '@deephaven/dashboard';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { getVariableDescriptor } from '@deephaven/jsapi-bootstrap';\nimport { type SessionWrapper } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getCommandHistoryStorage,\n getPlugins,\n getTimeZone,\n type RootState,\n} from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n getIconForPlugin,\n getWidgetDashboardPlugin,\n pluginSupportsType,\n type PluginModuleMap,\n} from '@deephaven/plugin';\nimport type { JSZipObject } from 'jszip';\nimport { ConsoleEvent } from '../events';\nimport Panel from './CorePanel';\nimport { getDashboardSessionWrapper } from '../redux';\nimport './ConsolePanel.scss';\n\nconst log = Log.module('ConsolePanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst DEFAULT_PANEL_STATE = Object.freeze({\n consoleSettings: {},\n itemIds: [],\n});\n\ninterface ConsoleSettings {\n isClosePanelsOnDisconnectEnabled?: boolean;\n}\n\ninterface PanelState {\n consoleSettings: ConsoleSettings;\n itemIds: [string, string][];\n}\n\ntype ItemIds = Map<string, string>;\n\ninterface ConsolePanelProps extends DashboardPanelProps {\n commandHistoryStorage: CommandHistoryStorage;\n\n panelState?: PanelState;\n\n sessionWrapper?: SessionWrapper;\n\n timeZone: string;\n unzip?: (file: File) => Promise<JSZipObject[]>;\n plugins: PluginModuleMap;\n}\n\ninterface ConsolePanelState {\n consoleSettings: ConsoleSettings;\n itemIds: ItemIds;\n\n objectMap: Map<string, dh.ide.VariableDefinition>;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n error: unknown;\n}\n\nexport class ConsolePanel extends PureComponent<\n ConsolePanelProps,\n ConsolePanelState\n> {\n static COMPONENT = 'ConsolePanel';\n\n static TITLE = 'Console';\n\n static contextType = LayoutManagerContext;\n\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n declare context: React.ContextType<typeof LayoutManagerContext>;\n\n constructor(props: ConsolePanelProps) {\n super(props);\n\n this.handleFocusCommandHistory = this.handleFocusCommandHistory.bind(this);\n this.handleOpenObject = this.handleOpenObject.bind(this);\n this.handleCloseObject = this.handleCloseObject.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSettingsChange = this.handleSettingsChange.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handlePanelMount = this.handlePanelMount.bind(this);\n this.supportsType = this.supportsType.bind(this);\n this.iconForType = this.iconForType.bind(this);\n\n this.consoleRef = React.createRef();\n\n const { panelState: initialPanelState } = props;\n const panelState = {\n ...DEFAULT_PANEL_STATE,\n ...(initialPanelState || {}),\n };\n const { consoleSettings, itemIds } = panelState;\n\n this.state = {\n consoleSettings,\n itemIds: new Map(itemIds),\n\n objectMap: new Map(),\n error: undefined,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount(): void {\n const { glEventHub } = this.props;\n // Need to close the disconnected panels when we're first loaded,\n // as they may have been saved with the dashboard\n this.closeDisconnectedPanels();\n glEventHub.on(PanelEvent.MOUNT, this.handlePanelMount);\n this.subscribeToFieldUpdates();\n }\n\n componentDidUpdate(\n prevProps: ConsolePanelProps,\n prevState: ConsolePanelState\n ): void {\n const { consoleSettings, itemIds } = this.state;\n if (\n prevState.consoleSettings !== consoleSettings ||\n prevState.itemIds !== itemIds\n ) {\n this.savePanelState();\n }\n }\n\n componentWillUnmount(): void {\n const { glEventHub } = this.props;\n this.savePanelState.flush();\n glEventHub.off(PanelEvent.MOUNT, this.handlePanelMount);\n this.objectSubscriptionCleanup?.();\n }\n\n consoleRef: RefObject<Console>;\n\n objectSubscriptionCleanup?: () => void;\n\n subscribeToFieldUpdates(): void {\n const { sessionWrapper } = this.props;\n if (sessionWrapper == null) {\n return;\n }\n\n const { session } = sessionWrapper;\n\n this.objectSubscriptionCleanup = session.subscribeToFieldUpdates(\n updates => {\n log.debug('Got updates', updates);\n this.setState(({ objectMap }) => {\n const { updated, created, removed } = updates;\n\n // Remove from the array if it's been removed OR modified. We'll add it back after if it was modified.\n const objectsToRemove = [...updated, ...removed];\n const newObjectMap = new Map(objectMap);\n objectsToRemove.forEach(toRemove => {\n const { title } = toRemove;\n if (title !== undefined) {\n newObjectMap.delete(title);\n }\n });\n\n // Now add all the modified and updated widgets back in\n const objectsToAdd = [...updated, ...created];\n objectsToAdd.forEach(toAdd => {\n if (toAdd.title !== undefined) {\n newObjectMap.set(toAdd.title, toAdd);\n }\n });\n\n return { objectMap: newObjectMap };\n });\n }\n );\n }\n\n setItemId(name: string, id: string): void {\n this.setState(({ itemIds }) => {\n const newItemIds = new Map(itemIds);\n newItemIds.set(name, id);\n return { itemIds: newItemIds };\n });\n }\n\n getItemId(name: string, createIfNecessary = true): string | undefined {\n const { itemIds } = this.state;\n let id = itemIds.get(name);\n if (id == null && createIfNecessary) {\n id = nanoid();\n this.setItemId(name, id);\n }\n return id;\n }\n\n /**\n * Removes the item ID mapping from state by its ID value.\n * @param id The item ID to delete from the itemIds map.\n */\n private deleteItemId(id: string): void {\n this.setState(({ itemIds }) => {\n log.debug('Delete item', id, itemIds);\n const key = [...itemIds.keys()].find(k => itemIds.get(k) === id);\n if (key === undefined) {\n return null;\n }\n const newItemIds = new Map(itemIds);\n newItemIds.delete(key);\n return { itemIds: newItemIds };\n });\n }\n\n handleTabFocus(): void {\n this.consoleRef.current?.focus();\n }\n\n handlePanelMount(panel: {\n props: { id: string; metadata: { sourcePanelId: string } };\n }): void {\n const { itemIds } = this.state;\n const panelId = panel?.props?.id;\n const sourceId = panel?.props?.metadata?.sourcePanelId;\n if (panelId && sourceId) {\n // Check if the panel was created from a panel in this console\n const pandelIds = new Set(itemIds.values());\n if (pandelIds.has(sourceId)) {\n // The Chart Panel does not have name so map panelId to panelId\n this.setItemId(panelId, panelId);\n }\n }\n }\n\n /**\n * Handles a panel closed event. Removes the panel's item ID mapping unless\n * the panel was replaced (i.e. a panel with the same ID still exists in the layout),\n * in which case the mapping is retained for the replacement panel.\n * @param panelId The ID of the panel that was closed.\n */\n handlePanelClosed(panelId: string): void {\n // When replacing a panel, LayoutUtils.openComponent adds the new panel before removing the old\n // one, so the old panel's CLOSED event fires with the same panelId as the new panel.\n // If a panel with panelId still exists, it was replaced and we should not delete the itemId.\n const { glContainer } = this.props;\n const root = LayoutUtils.getRootFromContainer(glContainer);\n const stack = LayoutUtils.getStackForConfig(root, { id: panelId });\n if (\n stack !== null &&\n LayoutUtils.getContentItemInStack(stack, { id: panelId }) !== null\n ) {\n return;\n }\n this.deleteItemId(panelId);\n }\n\n handleFocusCommandHistory(): void {\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.FOCUS_HISTORY);\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n handleShow(): void {\n this.updateDimensions();\n }\n\n handleOpenObject(\n object: dh.ide.VariableDescriptor & { title?: string },\n forceOpen = true\n ): void {\n assertNotNull(this.context);\n const { root } = this.context;\n const oldPanelId =\n object.title != null ? this.getItemId(object.title, false) : null;\n if (\n forceOpen ||\n (oldPanelId != null &&\n LayoutUtils.getStackForRoot(\n root,\n { id: oldPanelId },\n false,\n false,\n false\n ) != null)\n ) {\n this.openWidget(object);\n }\n }\n\n handleCloseObject(object: dh.ide.VariableDefinition): void {\n const { title } = object;\n if (title !== undefined) {\n const id = this.getItemId(title, false);\n if (id != null) {\n const { glEventHub } = this.props;\n emitPanelClose(glEventHub, id);\n // Just emit for all panels since there shouldn't be dashboard and panel name conflicts\n emitCloseDashboard(glEventHub, title);\n }\n }\n }\n\n handleSettingsChange(consoleSettings: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n log.debug('handleSettingsChange', consoleSettings);\n this.setState({\n consoleSettings,\n });\n glEventHub.emit(ConsoleEvent.SETTINGS_CHANGED, consoleSettings);\n }\n\n /**\n * @param widget The widget to open\n */\n openWidget(widget: dh.ide.VariableDescriptor & { title?: string }): void {\n const { glEventHub, plugins } = this.props;\n const { type } = widget;\n const widgetDashboardPlugin = getWidgetDashboardPlugin(plugins, type);\n if (widgetDashboardPlugin != null) {\n // If it can be opened as a dashboard, open it as a dashboard. Otherwise, open it as a panel.\n const dashboardPayload =\n widgetDashboardPlugin.createDashboardPayload(widget);\n log.debug('openDashboardWidget', dashboardPayload);\n emitCreateDashboard(glEventHub, dashboardPayload);\n } else {\n this.openPanelWidget(widget);\n }\n }\n\n /**\n * Open the given widget in a new panel. This is used for all widget types except \"widget dashboard\" types, which are widgets that should be opened in a new dashboard instead of a panel.\n * @param widget The widget to open\n */\n private openPanelWidget(\n widget: dh.ide.VariableDescriptor & { title?: string }\n ): void {\n const { glEventHub, sessionWrapper } = this.props;\n assertNotNull(sessionWrapper);\n\n const { config, session } = sessionWrapper;\n const { title = widget.name } = widget;\n assertNotNull(title);\n const itemId = this.getItemId(title);\n assertNotNull(itemId);\n const openOptions = {\n fetch: () => session.getObject(widget),\n panelId: itemId,\n widget: {\n ...getVariableDescriptor(widget),\n sessionId: config.id,\n },\n };\n\n log.debug('openPanelWidget', openOptions);\n\n emitPanelOpen(glEventHub, openOptions);\n }\n\n addCommand(command: string, focus = true, execute = false): void {\n this.consoleRef.current?.addCommand(command, focus, execute);\n }\n\n /**\n * Close the disconnected panels from this session\n * @param force True to force the panels closed regardless of the current setting\n */\n closeDisconnectedPanels(force = false): void {\n const { consoleSettings, itemIds } = this.state;\n const { isClosePanelsOnDisconnectEnabled = true } = consoleSettings;\n if (!isClosePanelsOnDisconnectEnabled && !force) {\n return;\n }\n\n const panelIdsToClose = [...itemIds.values()];\n const { glEventHub } = this.props;\n panelIdsToClose.forEach(panelId => {\n emitPanelClose(glEventHub, panelId);\n });\n\n this.setState({ itemIds: new Map() });\n }\n\n savePanelState = debounce((): void => {\n const { consoleSettings, itemIds } = this.state;\n const panelState = {\n consoleSettings,\n itemIds: [...itemIds],\n };\n log.debug('Saving panel state', panelState);\n // eslint-disable-next-line react/no-unused-state\n this.setState({ panelState });\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateDimensions(): void {\n this.consoleRef.current?.updateDimensions();\n }\n\n supportsType(type: string): boolean {\n const { plugins } = this.props;\n return [...plugins.values()].some(plugin =>\n pluginSupportsType(plugin, type)\n );\n }\n\n iconForType(type: string): JSX.Element {\n const { plugins } = this.props;\n const plugin = [...plugins.values()].find(p => pluginSupportsType(p, type));\n if (plugin != null) {\n return getIconForPlugin(plugin);\n }\n // TODO: #1573 Remove this default and always return getIconForPlugin\n return <ObjectIcon type={type} />;\n }\n\n render(): ReactElement | null {\n const {\n commandHistoryStorage,\n glContainer,\n glEventHub,\n sessionWrapper,\n timeZone,\n unzip,\n } = this.props;\n\n if (sessionWrapper == null) {\n return (\n <LoadingOverlay\n isLoading={false}\n errorMessage=\"Console is disabled.\"\n data-testid=\"console-panel-loading-error\"\n />\n );\n }\n\n const { consoleSettings, error, objectMap } = this.state;\n const { config, session, connection, details = {}, dh } = sessionWrapper;\n const { workerName, processInfoId } = details;\n const { id: sessionId, type: language } = config;\n\n return (\n <Panel\n className=\"iris-panel-console\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleTabFocus}\n errorMessage={error != null ? `${error}` : undefined}\n >\n {session != null && (\n <Console\n dh={dh}\n ref={this.consoleRef}\n settings={consoleSettings}\n session={session}\n focusCommandHistory={this.handleFocusCommandHistory}\n openObject={this.handleOpenObject}\n closeObject={this.handleCloseObject}\n commandHistoryStorage={commandHistoryStorage}\n onSettingsChange={this.handleSettingsChange}\n language={language}\n statusBarChildren={\n <>\n <div>{ConsoleConstants.LANGUAGE_MAP.get(language)}</div>\n {workerName != null && (\n <>\n <div>•</div>\n {workerName}\n </>\n )}\n {processInfoId != null && (\n <>\n <div>•</div>\n {processInfoId}\n <div>•</div>\n </>\n )}\n <HeapUsage\n connection={connection}\n defaultUpdateInterval={10 * 1000}\n hoverUpdateInterval={3 * 1000}\n monitorDuration={10 * 60 * 1000}\n />\n </>\n }\n showObjectsMenu={false}\n scope={sessionId}\n timeZone={timeZone}\n objectMap={objectMap}\n unzip={unzip}\n supportsType={this.supportsType}\n iconForType={this.iconForType}\n />\n )}\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<\n ConsolePanelProps,\n 'commandHistoryStorage' | 'sessionWrapper' | 'timeZone' | 'plugins'\n> => ({\n commandHistoryStorage: getCommandHistoryStorage(\n state\n ) as CommandHistoryStorage,\n sessionWrapper: getDashboardSessionWrapper(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n plugins: getPlugins(state),\n});\n\nconst ConnectedConsolePanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(ConsolePanel);\n\nexport default ConnectedConsolePanel;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/panels/CorePanel.js
CHANGED
|
@@ -25,48 +25,36 @@ class CorePanel extends PureComponent {
|
|
|
25
25
|
this.handleSessionOpened = this.handleSessionOpened.bind(this);
|
|
26
26
|
}
|
|
27
27
|
componentDidMount() {
|
|
28
|
-
var
|
|
29
|
-
glEventHub
|
|
30
|
-
} = this.props;
|
|
28
|
+
var glEventHub = this.props.glEventHub;
|
|
31
29
|
this.stopListenForSessionClosed = listenForSessionClosed(glEventHub, this.handleSessionClosed);
|
|
32
30
|
this.stopListenForSessionOpened = listenForSessionOpened(glEventHub, this.handleSessionOpened);
|
|
33
31
|
glEventHub.on(InputFilterEvent.CLEAR_ALL_FILTERS, this.handleClearAllFilters);
|
|
34
32
|
}
|
|
35
33
|
componentWillUnmount() {
|
|
36
34
|
var _this$stopListenForSe, _this$stopListenForSe2;
|
|
37
|
-
var
|
|
38
|
-
glEventHub
|
|
39
|
-
} = this.props;
|
|
35
|
+
var glEventHub = this.props.glEventHub;
|
|
40
36
|
(_this$stopListenForSe = this.stopListenForSessionClosed) === null || _this$stopListenForSe === void 0 || _this$stopListenForSe.call(this);
|
|
41
37
|
(_this$stopListenForSe2 = this.stopListenForSessionOpened) === null || _this$stopListenForSe2 === void 0 || _this$stopListenForSe2.call(this);
|
|
42
38
|
glEventHub.off(InputFilterEvent.CLEAR_ALL_FILTERS, this.handleClearAllFilters);
|
|
43
39
|
}
|
|
44
40
|
handleClearAllFilters() {
|
|
45
|
-
var
|
|
46
|
-
onClearAllFilters
|
|
47
|
-
} = this.props;
|
|
41
|
+
var onClearAllFilters = this.props.onClearAllFilters;
|
|
48
42
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
49
43
|
args[_key] = arguments[_key];
|
|
50
44
|
}
|
|
51
45
|
onClearAllFilters === null || onClearAllFilters === void 0 || onClearAllFilters(...args);
|
|
52
46
|
}
|
|
53
47
|
handleSessionClosed(session) {
|
|
54
|
-
var
|
|
55
|
-
onSessionClose
|
|
56
|
-
} = this.props;
|
|
48
|
+
var onSessionClose = this.props.onSessionClose;
|
|
57
49
|
onSessionClose === null || onSessionClose === void 0 || onSessionClose(session);
|
|
58
50
|
}
|
|
59
51
|
handleSessionOpened(session) {
|
|
60
|
-
var
|
|
61
|
-
onSessionOpen
|
|
62
|
-
} = this.props;
|
|
52
|
+
var onSessionOpen = this.props.onSessionOpen;
|
|
63
53
|
onSessionOpen === null || onSessionOpen === void 0 || onSessionOpen(session);
|
|
64
54
|
}
|
|
65
55
|
render() {
|
|
66
56
|
var _this$props = this.props,
|
|
67
|
-
|
|
68
|
-
children
|
|
69
|
-
} = _this$props,
|
|
57
|
+
children = _this$props.children,
|
|
70
58
|
otherProps = _objectWithoutProperties(_this$props, _excluded);
|
|
71
59
|
|
|
72
60
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CorePanel.js","names":["React","PureComponent","createXComponent","BasePanel","listenForSessionClosed","listenForSessionOpened","InputFilterEvent","jsx","_jsx","CorePanel","constructor","props","_defineProperty","handleClearAllFilters","bind","handleSessionClosed","handleSessionOpened","componentDidMount","glEventHub","stopListenForSessionClosed","stopListenForSessionOpened","on","CLEAR_ALL_FILTERS","componentWillUnmount","_this$stopListenForSe","_this$stopListenForSe2","call","off","onClearAllFilters","_len","arguments","length","args","Array","_key","session","onSessionClose","onSessionOpen","render","_this$props","children","otherProps","_objectWithoutProperties","_excluded","_objectSpread","XCorePanel"],"sources":["../../src/panels/CorePanel.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement } from 'react';\nimport { createXComponent } from '@deephaven/components';\nimport { type BasePanelProps, BasePanel } from '@deephaven/dashboard';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CoreConsoleSession,\n listenForSessionClosed,\n listenForSessionOpened,\n} from '../ConsoleEvents';\nimport { InputFilterEvent } from '../events';\n\nexport type CorePanelProps = BasePanelProps & {\n onClearAllFilters?: (...args: unknown[]) => void;\n onSessionClose?: (session: dh.IdeSession) => void;\n onSessionOpen?: (session: CoreConsoleSession) => void;\n};\n\n/**\n * Extends the base panel component to handle Session events and input filter events.\n */\nclass CorePanel extends PureComponent<CorePanelProps> {\n constructor(props: CorePanelProps) {\n super(props);\n\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n }\n\n componentDidMount(): void {\n const { glEventHub } = this.props;\n\n this.stopListenForSessionClosed = listenForSessionClosed(\n glEventHub,\n this.handleSessionClosed\n );\n this.stopListenForSessionOpened = listenForSessionOpened(\n glEventHub,\n this.handleSessionOpened\n );\n glEventHub.on(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n }\n\n componentWillUnmount(): void {\n const { glEventHub } = this.props;\n\n this.stopListenForSessionClosed?.();\n this.stopListenForSessionOpened?.();\n glEventHub.off(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n }\n\n stopListenForSessionClosed?: () => void;\n\n stopListenForSessionOpened?: () => void;\n\n handleClearAllFilters(...args: unknown[]): void {\n const { onClearAllFilters } = this.props;\n onClearAllFilters?.(...args);\n }\n\n handleSessionClosed(session: dh.IdeSession): void {\n const { onSessionClose } = this.props;\n onSessionClose?.(session);\n }\n\n handleSessionOpened(session: CoreConsoleSession): void {\n const { onSessionOpen } = this.props;\n onSessionOpen?.(session);\n }\n\n render(): ReactElement {\n const { children, ...otherProps } = this.props;\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <BasePanel {...otherProps}>{children}</BasePanel>;\n }\n}\n\nconst XCorePanel = createXComponent(CorePanel);\n\nexport default XCorePanel;\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,IAAIC,aAAa,QAA2B,OAAO;AAC/D,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAA8BC,SAAS,QAAQ,sBAAsB;AAAC,SAIpEC,sBAAsB,EACtBC,sBAAsB;AAAA,SAEfC,gBAAgB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAQzB;AACA;AACA;AACA,MAAMC,SAAS,SAASR,aAAa,CAAiB;EACpDS,WAAWA,CAACC,KAAqB,EAAE;IACjC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAEb,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACC,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACC,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACD,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACE,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACF,IAAI,CAAC,IAAI,CAAC;EAChE;EAEAG,iBAAiBA,CAAA,EAAS;IACxB,
|
|
1
|
+
{"version":3,"file":"CorePanel.js","names":["React","PureComponent","createXComponent","BasePanel","listenForSessionClosed","listenForSessionOpened","InputFilterEvent","jsx","_jsx","CorePanel","constructor","props","_defineProperty","handleClearAllFilters","bind","handleSessionClosed","handleSessionOpened","componentDidMount","glEventHub","stopListenForSessionClosed","stopListenForSessionOpened","on","CLEAR_ALL_FILTERS","componentWillUnmount","_this$stopListenForSe","_this$stopListenForSe2","call","off","onClearAllFilters","_len","arguments","length","args","Array","_key","session","onSessionClose","onSessionOpen","render","_this$props","children","otherProps","_objectWithoutProperties","_excluded","_objectSpread","XCorePanel"],"sources":["../../src/panels/CorePanel.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement } from 'react';\nimport { createXComponent } from '@deephaven/components';\nimport { type BasePanelProps, BasePanel } from '@deephaven/dashboard';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CoreConsoleSession,\n listenForSessionClosed,\n listenForSessionOpened,\n} from '../ConsoleEvents';\nimport { InputFilterEvent } from '../events';\n\nexport type CorePanelProps = BasePanelProps & {\n onClearAllFilters?: (...args: unknown[]) => void;\n onSessionClose?: (session: dh.IdeSession) => void;\n onSessionOpen?: (session: CoreConsoleSession) => void;\n};\n\n/**\n * Extends the base panel component to handle Session events and input filter events.\n */\nclass CorePanel extends PureComponent<CorePanelProps> {\n constructor(props: CorePanelProps) {\n super(props);\n\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n }\n\n componentDidMount(): void {\n const { glEventHub } = this.props;\n\n this.stopListenForSessionClosed = listenForSessionClosed(\n glEventHub,\n this.handleSessionClosed\n );\n this.stopListenForSessionOpened = listenForSessionOpened(\n glEventHub,\n this.handleSessionOpened\n );\n glEventHub.on(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n }\n\n componentWillUnmount(): void {\n const { glEventHub } = this.props;\n\n this.stopListenForSessionClosed?.();\n this.stopListenForSessionOpened?.();\n glEventHub.off(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n }\n\n stopListenForSessionClosed?: () => void;\n\n stopListenForSessionOpened?: () => void;\n\n handleClearAllFilters(...args: unknown[]): void {\n const { onClearAllFilters } = this.props;\n onClearAllFilters?.(...args);\n }\n\n handleSessionClosed(session: dh.IdeSession): void {\n const { onSessionClose } = this.props;\n onSessionClose?.(session);\n }\n\n handleSessionOpened(session: CoreConsoleSession): void {\n const { onSessionOpen } = this.props;\n onSessionOpen?.(session);\n }\n\n render(): ReactElement {\n const { children, ...otherProps } = this.props;\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <BasePanel {...otherProps}>{children}</BasePanel>;\n }\n}\n\nconst XCorePanel = createXComponent(CorePanel);\n\nexport default XCorePanel;\n"],"mappings":"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","ignoreList":[]}
|