@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.
Files changed (105) hide show
  1. package/dist/ChartBuilderPlugin.js +8 -15
  2. package/dist/ChartBuilderPlugin.js.map +1 -1
  3. package/dist/ChartPanelPlugin.js +13 -6
  4. package/dist/ChartPanelPlugin.js.map +1 -1
  5. package/dist/ChartWidgetPlugin.js +11 -4
  6. package/dist/ChartWidgetPlugin.js.map +1 -1
  7. package/dist/ConsolePlugin.js +38 -46
  8. package/dist/ConsolePlugin.js.map +1 -1
  9. package/dist/FilterPlugin.js +63 -44
  10. package/dist/FilterPlugin.js.map +1 -1
  11. package/dist/GridPanelPlugin.js +3 -5
  12. package/dist/GridPanelPlugin.js.map +1 -1
  13. package/dist/GridWidgetPlugin.d.ts +11 -1
  14. package/dist/GridWidgetPlugin.d.ts.map +1 -1
  15. package/dist/GridWidgetPlugin.js +48 -30
  16. package/dist/GridWidgetPlugin.js.map +1 -1
  17. package/dist/LinkerPlugin.js +3 -5
  18. package/dist/LinkerPlugin.js.map +1 -1
  19. package/dist/MarkdownPlugin.js +18 -17
  20. package/dist/MarkdownPlugin.js.map +1 -1
  21. package/dist/PandasPanelPlugin.js +3 -5
  22. package/dist/PandasPanelPlugin.js.map +1 -1
  23. package/dist/PandasWidgetPlugin.js +3 -7
  24. package/dist/PandasWidgetPlugin.js.map +1 -1
  25. package/dist/TablePluginWrapper.js +8 -10
  26. package/dist/TablePluginWrapper.js.map +1 -1
  27. package/dist/WidgetLoaderPlugin.js +24 -29
  28. package/dist/WidgetLoaderPlugin.js.map +1 -1
  29. package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
  30. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  31. package/dist/controls/input-filter/InputFilter.js +32 -58
  32. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  33. package/dist/controls/markdown/MarkdownContainer.js +4 -5
  34. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  35. package/dist/controls/markdown/MarkdownEditor.js +7 -10
  36. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  37. package/dist/controls/markdown/MarkdownStartPage.js +8 -12
  38. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  39. package/dist/linker/Linker.js +100 -192
  40. package/dist/linker/Linker.js.map +1 -1
  41. package/dist/linker/LinkerLink.js +23 -31
  42. package/dist/linker/LinkerLink.js.map +1 -1
  43. package/dist/linker/LinkerOverlayContent.js +65 -66
  44. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  45. package/dist/linker/LinkerUtils.js +6 -14
  46. package/dist/linker/LinkerUtils.js.map +1 -1
  47. package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
  48. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  49. package/dist/panels/ChartFilterOverlay.js +7 -9
  50. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  51. package/dist/panels/ChartPanel.js +136 -220
  52. package/dist/panels/ChartPanel.js.map +1 -1
  53. package/dist/panels/ChartPanelUtils.js +3 -4
  54. package/dist/panels/ChartPanelUtils.js.map +1 -1
  55. package/dist/panels/CommandHistoryPanel.js +33 -52
  56. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  57. package/dist/panels/ConsolePanel.js +68 -130
  58. package/dist/panels/ConsolePanel.js.map +1 -1
  59. package/dist/panels/CorePanel.js +6 -18
  60. package/dist/panels/CorePanel.js.map +1 -1
  61. package/dist/panels/DropdownFilterPanel.js +109 -165
  62. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  63. package/dist/panels/FileExplorerPanel.js +30 -55
  64. package/dist/panels/FileExplorerPanel.js.map +1 -1
  65. package/dist/panels/FilterSetManager.js +81 -141
  66. package/dist/panels/FilterSetManager.js.map +1 -1
  67. package/dist/panels/FilterSetManagerPanel.js +68 -87
  68. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  69. package/dist/panels/InputFilterPanel.js +45 -68
  70. package/dist/panels/InputFilterPanel.js.map +1 -1
  71. package/dist/panels/IrisGridPanel.d.ts +28 -6
  72. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  73. package/dist/panels/IrisGridPanel.js +224 -280
  74. package/dist/panels/IrisGridPanel.js.map +1 -1
  75. package/dist/panels/IrisGridPanelTooltip.js +1 -3
  76. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  77. package/dist/panels/LogPanel.js +6 -13
  78. package/dist/panels/LogPanel.js.map +1 -1
  79. package/dist/panels/MarkdownNotebook.js +28 -50
  80. package/dist/panels/MarkdownNotebook.js.map +1 -1
  81. package/dist/panels/MarkdownPanel.js +19 -38
  82. package/dist/panels/MarkdownPanel.js.map +1 -1
  83. package/dist/panels/NotebookPanel.js +157 -292
  84. package/dist/panels/NotebookPanel.js.map +1 -1
  85. package/dist/panels/PandasPanel.js +5 -15
  86. package/dist/panels/PandasPanel.js.map +1 -1
  87. package/dist/panels/PandasReloadButton.js +1 -3
  88. package/dist/panels/PandasReloadButton.js.map +1 -1
  89. package/dist/panels/WidgetPanel.js +42 -51
  90. package/dist/panels/WidgetPanel.js.map +1 -1
  91. package/dist/panels/WidgetPanelTooltip.js +6 -10
  92. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  93. package/dist/useConfigureRuff.js +8 -9
  94. package/dist/useConfigureRuff.js.map +1 -1
  95. package/dist/useDashboardColumnFilters.js +4 -7
  96. package/dist/useDashboardColumnFilters.js.map +1 -1
  97. package/dist/useGridLinker.js +9 -16
  98. package/dist/useGridLinker.js.map +1 -1
  99. package/dist/useIrisGridModel.d.ts +2 -2
  100. package/dist/useIrisGridModel.d.ts.map +1 -1
  101. package/dist/useIrisGridModel.js +34 -6
  102. package/dist/useIrisGridModel.js.map +1 -1
  103. package/dist/useTablePlugin.js +27 -14
  104. package/dist/useTablePlugin.js.map +1 -1
  105. 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
- consoleSettings: _consoleSettings,
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
- objectMap
123
- } = _ref;
124
- var {
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
- } = this.props;
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
- config,
332
- session
333
- } = sessionWrapper;
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
- } = this.state;
367
- var {
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
- } = this.state;
428
- var {
429
- config,
430
- session,
431
- connection,
432
- details = {},
433
- dh
434
- } = sessionWrapper;
435
- var {
436
- workerName,
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":[]}
@@ -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":"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","ignoreList":[]}
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":[]}