@deephaven/dashboard-core-plugins 0.22.3-beta.18 → 0.22.3-beta.21

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 (166) hide show
  1. package/dist/ChartBuilderPlugin.d.ts +1 -1
  2. package/dist/ChartBuilderPlugin.d.ts.map +1 -1
  3. package/dist/ChartBuilderPlugin.js +6 -8
  4. package/dist/ChartBuilderPlugin.js.map +1 -1
  5. package/dist/ChartPlugin.d.ts +1 -1
  6. package/dist/ChartPlugin.d.ts.map +1 -1
  7. package/dist/ChartPlugin.js +4 -8
  8. package/dist/ChartPlugin.js.map +1 -1
  9. package/dist/ConsolePlugin.d.ts +1 -1
  10. package/dist/ConsolePlugin.d.ts.map +1 -1
  11. package/dist/ConsolePlugin.js +16 -62
  12. package/dist/ConsolePlugin.js.map +1 -1
  13. package/dist/FilterPlugin.d.ts +1 -1
  14. package/dist/FilterPlugin.d.ts.map +1 -1
  15. package/dist/FilterPlugin.js +6 -13
  16. package/dist/FilterPlugin.js.map +1 -1
  17. package/dist/GridPlugin.d.ts +1 -1
  18. package/dist/GridPlugin.d.ts.map +1 -1
  19. package/dist/GridPlugin.js +4 -8
  20. package/dist/GridPlugin.js.map +1 -1
  21. package/dist/LinkerPlugin.d.ts +1 -1
  22. package/dist/LinkerPlugin.d.ts.map +1 -1
  23. package/dist/LinkerPlugin.js +2 -2
  24. package/dist/LinkerPlugin.js.map +1 -1
  25. package/dist/MarkdownPlugin.d.ts +1 -1
  26. package/dist/MarkdownPlugin.d.ts.map +1 -1
  27. package/dist/MarkdownPlugin.js +4 -8
  28. package/dist/MarkdownPlugin.js.map +1 -1
  29. package/dist/PandasPlugin.d.ts +1 -1
  30. package/dist/PandasPlugin.d.ts.map +1 -1
  31. package/dist/PandasPlugin.js +4 -8
  32. package/dist/PandasPlugin.js.map +1 -1
  33. package/dist/controls/ControlType.js +0 -6
  34. package/dist/controls/ControlType.js.map +1 -1
  35. package/dist/controls/dropdown-filter/DropdownFilter.js +7 -51
  36. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  37. package/dist/controls/input-filter/InputFilter.js +1 -31
  38. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  39. package/dist/controls/markdown/MarkdownContainer.js +0 -3
  40. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  41. package/dist/controls/markdown/MarkdownEditor.d.ts +0 -2
  42. package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
  43. package/dist/controls/markdown/MarkdownEditor.js +13 -20
  44. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  45. package/dist/controls/markdown/MarkdownStartPage.js +0 -11
  46. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  47. package/dist/controls/markdown/MarkdownUtils.js +0 -7
  48. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  49. package/dist/events/ChartEvent.js +0 -5
  50. package/dist/events/ChartEvent.js.map +1 -1
  51. package/dist/events/ConsoleEvent.js +0 -7
  52. package/dist/events/ConsoleEvent.js.map +1 -1
  53. package/dist/events/InputFilterEvent.js +0 -10
  54. package/dist/events/InputFilterEvent.js.map +1 -1
  55. package/dist/events/IrisGridEvent.js +0 -8
  56. package/dist/events/IrisGridEvent.js.map +1 -1
  57. package/dist/events/MarkdownEvent.js.map +1 -1
  58. package/dist/events/NotebookEvent.js +0 -10
  59. package/dist/events/NotebookEvent.js.map +1 -1
  60. package/dist/events/PQEvent.js +0 -5
  61. package/dist/events/PQEvent.js.map +1 -1
  62. package/dist/events/PandasEvent.js +0 -4
  63. package/dist/events/PandasEvent.js.map +1 -1
  64. package/dist/events/TabEvent.js +0 -8
  65. package/dist/events/TabEvent.js.map +1 -1
  66. package/dist/events/index.js.map +1 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/linker/Linker.d.ts +3 -0
  69. package/dist/linker/Linker.d.ts.map +1 -1
  70. package/dist/linker/Linker.js +70 -119
  71. package/dist/linker/Linker.js.map +1 -1
  72. package/dist/linker/LinkerLink.css +90 -25
  73. package/dist/linker/LinkerLink.css.map +1 -1
  74. package/dist/linker/LinkerLink.d.ts +20 -2
  75. package/dist/linker/LinkerLink.d.ts.map +1 -1
  76. package/dist/linker/LinkerLink.js +214 -23
  77. package/dist/linker/LinkerLink.js.map +1 -1
  78. package/dist/linker/LinkerOverlayContent.css +0 -4
  79. package/dist/linker/LinkerOverlayContent.css.map +1 -1
  80. package/dist/linker/LinkerOverlayContent.d.ts +11 -0
  81. package/dist/linker/LinkerOverlayContent.d.ts.map +1 -1
  82. package/dist/linker/LinkerOverlayContent.js +78 -33
  83. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  84. package/dist/linker/LinkerUtils.d.ts +9 -2
  85. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  86. package/dist/linker/LinkerUtils.js +9 -25
  87. package/dist/linker/LinkerUtils.js.map +1 -1
  88. package/dist/linker/ToolType.js.map +1 -1
  89. package/dist/panels/ChartColumnSelectorOverlay.d.ts +5 -5
  90. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
  91. package/dist/panels/ChartColumnSelectorOverlay.js +4 -7
  92. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  93. package/dist/panels/ChartFilterOverlay.d.ts +4 -4
  94. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
  95. package/dist/panels/ChartFilterOverlay.js +2 -7
  96. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  97. package/dist/panels/ChartPanel.d.ts.map +1 -1
  98. package/dist/panels/ChartPanel.js +11 -150
  99. package/dist/panels/ChartPanel.js.map +1 -1
  100. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  101. package/dist/panels/CommandHistoryPanel.js +1 -26
  102. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  103. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  104. package/dist/panels/ConsolePanel.js +12 -57
  105. package/dist/panels/ConsolePanel.js.map +1 -1
  106. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  107. package/dist/panels/DropdownFilterPanel.js +16 -122
  108. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  109. package/dist/panels/FileExplorerPanel.js +4 -33
  110. package/dist/panels/FileExplorerPanel.js.map +1 -1
  111. package/dist/panels/FilterSetManager.d.ts.map +1 -1
  112. package/dist/panels/FilterSetManager.js +13 -86
  113. package/dist/panels/FilterSetManager.js.map +1 -1
  114. package/dist/panels/FilterSetManagerPanel.js +10 -64
  115. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  116. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  117. package/dist/panels/InputFilterPanel.js +8 -38
  118. package/dist/panels/InputFilterPanel.js.map +1 -1
  119. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  120. package/dist/panels/IrisGridPanel.js +24 -133
  121. package/dist/panels/IrisGridPanel.js.map +1 -1
  122. package/dist/panels/IrisGridPanelTooltip.d.ts +5 -5
  123. package/dist/panels/IrisGridPanelTooltip.d.ts.map +1 -1
  124. package/dist/panels/IrisGridPanelTooltip.js +2 -5
  125. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  126. package/dist/panels/LogPanel.js +4 -22
  127. package/dist/panels/LogPanel.js.map +1 -1
  128. package/dist/panels/MarkdownNotebook.js +3 -30
  129. package/dist/panels/MarkdownNotebook.js.map +1 -1
  130. package/dist/panels/MarkdownPanel.js +2 -30
  131. package/dist/panels/MarkdownPanel.js.map +1 -1
  132. package/dist/panels/MockFileStorage.js +1 -14
  133. package/dist/panels/MockFileStorage.js.map +1 -1
  134. package/dist/panels/MockFileStorageTable.js +11 -30
  135. package/dist/panels/MockFileStorageTable.js.map +1 -1
  136. package/dist/panels/NotebookPanel.js +24 -182
  137. package/dist/panels/NotebookPanel.js.map +1 -1
  138. package/dist/panels/PandasPanel.js +1 -20
  139. package/dist/panels/PandasPanel.js.map +1 -1
  140. package/dist/panels/Panel.js +2 -38
  141. package/dist/panels/Panel.js.map +1 -1
  142. package/dist/panels/PanelContextMenu.js +7 -29
  143. package/dist/panels/PanelContextMenu.js.map +1 -1
  144. package/dist/panels/RenameDialog.js +2 -17
  145. package/dist/panels/RenameDialog.js.map +1 -1
  146. package/dist/panels/WidgetPanel.js +2 -20
  147. package/dist/panels/WidgetPanel.js.map +1 -1
  148. package/dist/panels/WidgetPanelTooltip.d.ts +5 -5
  149. package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
  150. package/dist/panels/WidgetPanelTooltip.js +2 -4
  151. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  152. package/dist/panels/index.js.map +1 -1
  153. package/dist/prop-types/CommonPropTypes.js +0 -3
  154. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  155. package/dist/prop-types/UIPropTypes.js.map +1 -1
  156. package/dist/prop-types/index.js.map +1 -1
  157. package/dist/redux/actionTypes.js.map +1 -1
  158. package/dist/redux/actions.js +8 -9
  159. package/dist/redux/actions.js.map +1 -1
  160. package/dist/redux/index.js.map +1 -1
  161. package/dist/redux/reducers/connection.js.map +1 -1
  162. package/dist/redux/reducers/index.js.map +1 -1
  163. package/dist/redux/reducers/sessionWrapper.js.map +1 -1
  164. package/dist/redux/selectors.js +10 -15
  165. package/dist/redux/selectors.js.map +1 -1
  166. package/package.json +21 -20
@@ -1,9 +1,6 @@
1
1
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
-
3
2
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
-
5
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
4
  // Wrapper for the Notebook for use in a golden layout container
8
5
  import React, { Component } from 'react';
9
6
  import ReactDOM from 'react-dom';
@@ -26,60 +23,42 @@ import MarkdownNotebook from "./MarkdownNotebook.js";
26
23
  import "./NotebookPanel.css";
27
24
  var log = Log.module('NotebookPanel');
28
25
  var DEBOUNCE_PANEL_STATE_UPDATE = 400;
29
-
30
26
  class NotebookPanel extends Component {
31
27
  static handleError(error) {
32
28
  if (PromiseUtils.isCanceled(error)) {
33
29
  return;
34
30
  }
35
-
36
31
  log.error(error);
37
32
  }
38
-
39
33
  static languageFromFileName(fileName) {
40
34
  var extension = FileUtils.getExtension(fileName).toLowerCase();
41
-
42
35
  switch (extension) {
43
36
  case 'py':
44
37
  case 'python':
45
38
  return 'python';
46
-
47
39
  case 'groovy':
48
40
  return 'groovy';
49
-
50
41
  case 'scala':
51
42
  return 'scala';
52
-
53
43
  default:
54
44
  return null;
55
45
  }
56
46
  }
57
-
58
47
  constructor(props) {
59
48
  super(props);
60
-
61
49
  _defineProperty(this, "pending", void 0);
62
-
63
50
  _defineProperty(this, "debouncedSavePanelState", void 0);
64
-
65
51
  _defineProperty(this, "debouncedLoad", void 0);
66
-
67
52
  _defineProperty(this, "notebook", void 0);
68
-
69
53
  _defineProperty(this, "tabTitleElement", void 0);
70
-
71
54
  _defineProperty(this, "tabInitOnce", void 0);
72
-
73
55
  _defineProperty(this, "shouldPromptClose", void 0);
74
-
75
56
  _defineProperty(this, "editor", void 0);
76
-
77
57
  _defineProperty(this, "getSettings", memoize((initialSettings, isMinimapEnabled) => _objectSpread(_objectSpread({}, initialSettings), {}, {
78
58
  minimap: {
79
59
  enabled: isMinimapEnabled
80
60
  }
81
61
  })));
82
-
83
62
  _defineProperty(this, "getOverflowActions", memoize((isMinimapEnabled, isWordWrapEnabled) => [{
84
63
  title: 'Find',
85
64
  icon: dhFileSearch,
@@ -102,7 +81,6 @@ class NotebookPanel extends Component {
102
81
  shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,
103
82
  order: 30
104
83
  }]));
105
-
106
84
  this.handleBlur = this.handleBlur.bind(this);
107
85
  this.handleCloseCancel = this.handleCloseCancel.bind(this);
108
86
  this.handleCloseDiscard = this.handleCloseDiscard.bind(this);
@@ -160,20 +138,20 @@ class NotebookPanel extends Component {
160
138
  var {
161
139
  isPreview
162
140
  } = props;
163
-
164
141
  if (panelState != null) {
165
142
  ({
166
143
  fileMetadata = fileMetadata,
167
144
  isPreview = isPreview,
168
145
  settings = settings
169
146
  } = panelState);
170
- } // Not showing the unsaved indicator for null file id and editor content === '',
171
- // may need to implement some other indication that this notebook has never been saved
147
+ }
172
148
 
149
+ // Not showing the unsaved indicator for null file id and editor content === '',
150
+ // may need to implement some other indication that this notebook has never been saved
151
+ var hasFileId = fileMetadata != null && FileUtils.hasPath(fileMetadata.itemName);
173
152
 
174
- var hasFileId = fileMetadata != null && FileUtils.hasPath(fileMetadata.itemName); // Unsaved if file id != null and content != null
153
+ // Unsaved if file id != null and content != null
175
154
  // OR file id is null AND content is not null or ''
176
-
177
155
  var isUnsaved = hasFileId === true && settings.value != null || !hasFileId && settings.value != null && settings.value.length > 0;
178
156
  var changeCount = isUnsaved ? 1 : 0;
179
157
  this.state = {
@@ -200,7 +178,6 @@ class NotebookPanel extends Component {
200
178
  };
201
179
  log.debug('constructor', props, this.state);
202
180
  }
203
-
204
181
  componentDidMount() {
205
182
  var {
206
183
  glContainer,
@@ -214,7 +191,6 @@ class NotebookPanel extends Component {
214
191
  glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);
215
192
  glContainer.on('tabClicked', this.handlePanelTabClick);
216
193
  }
217
-
218
194
  componentDidUpdate(prevProps, prevState) {
219
195
  var {
220
196
  isPreview,
@@ -226,21 +202,17 @@ class NotebookPanel extends Component {
226
202
  var {
227
203
  defaultNotebookSettings
228
204
  } = this.props;
229
-
230
205
  if (isPreview !== prevState.isPreview) {
231
206
  this.setPreviewStatus();
232
207
  }
233
-
234
208
  if (wordWrap !== prevState.settings.wordWrap) {
235
209
  this.updateEditorWordWrap();
236
210
  this.debouncedSavePanelState();
237
211
  }
238
-
239
212
  if (defaultNotebookSettings.isMinimapEnabled !== prevProps.defaultNotebookSettings.isMinimapEnabled) {
240
213
  this.updateEditorMinimap();
241
214
  }
242
215
  }
243
-
244
216
  componentWillUnmount() {
245
217
  this.debouncedSavePanelState.flush();
246
218
  this.pending.cancel();
@@ -256,7 +228,6 @@ class NotebookPanel extends Component {
256
228
  glContainer.off('tabClicked', this.handlePanelTabClick);
257
229
  glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);
258
230
  }
259
-
260
231
  // Called by TabEvent. Happens once when created, but also each time its moved.
261
232
  // when moved, need to re-init the unsaved indicators on title elements
262
233
  initTab(tab) {
@@ -264,23 +235,20 @@ class NotebookPanel extends Component {
264
235
  this.tabInitOnce = true;
265
236
  this.initTabCloseOverride();
266
237
  }
267
-
268
238
  this.initTabClasses(tab);
269
- } // override glContainer.close() with a custom closure that checks if needs saving
270
-
239
+ }
271
240
 
241
+ // override glContainer.close() with a custom closure that checks if needs saving
272
242
  initTabCloseOverride() {
273
243
  var {
274
244
  glContainer
275
245
  } = this.props;
276
246
  var close = glContainer.close.bind(glContainer);
277
-
278
247
  glContainer.close = () => {
279
248
  var {
280
249
  changeCount,
281
250
  savedChangeCount
282
251
  } = this.state;
283
-
284
252
  if (changeCount !== savedChangeCount && this.shouldPromptClose) {
285
253
  this.setState({
286
254
  showCloseModal: true
@@ -288,11 +256,9 @@ class NotebookPanel extends Component {
288
256
  } else {
289
257
  close();
290
258
  }
291
-
292
259
  return true;
293
260
  };
294
261
  }
295
-
296
262
  initTabClasses(tab) {
297
263
  var tabElement = tab.element.get(0);
298
264
  assertNotNull(tabElement);
@@ -301,7 +267,6 @@ class NotebookPanel extends Component {
301
267
  titleElement === null || titleElement === void 0 ? void 0 : titleElement.classList.add('notebook-title');
302
268
  this.setPreviewStatus();
303
269
  }
304
-
305
270
  getNotebookValue() {
306
271
  var {
307
272
  changeCount,
@@ -311,15 +276,12 @@ class NotebookPanel extends Component {
311
276
  var {
312
277
  value
313
278
  } = settings;
314
-
315
279
  if (changeCount !== savedChangeCount && this.notebook) {
316
280
  var notebookValue = this.notebook.getValue();
317
281
  return notebookValue != null ? notebookValue : value;
318
282
  }
319
-
320
283
  return value;
321
284
  }
322
-
323
285
  initNotebookContent() {
324
286
  // Init from file,
325
287
  // fallback to content from settings for unsaved notebook
@@ -328,24 +290,20 @@ class NotebookPanel extends Component {
328
290
  settings,
329
291
  isPreview
330
292
  } = this.state;
331
-
332
293
  if (fileMetadata && fileMetadata.id) {
333
294
  log.debug('Init content from file');
334
295
  this.registerFileMetadata(fileMetadata, isPreview);
335
296
  this.load();
336
297
  return;
337
298
  }
338
-
339
299
  if (settings.value != null) {
340
300
  log.debug('Use content passed in the settings prop');
341
301
  this.handleLoadSuccess();
342
302
  return;
343
- } // No settings, no metadata
344
-
345
-
303
+ }
304
+ // No settings, no metadata
346
305
  this.handleLoadError(new Error('Missing file metadata'));
347
306
  }
348
-
349
307
  closeFileTabById(id) {
350
308
  var {
351
309
  glEventHub
@@ -353,10 +311,10 @@ class NotebookPanel extends Component {
353
311
  glEventHub.emit(NotebookEvent.CLOSE_FILE, {
354
312
  id
355
313
  });
356
- } // Associate file id with the current tab
357
- // so the next time the file is opened this tab can be focused instead of opening a new tab
358
-
314
+ }
359
315
 
316
+ // Associate file id with the current tab
317
+ // so the next time the file is opened this tab can be focused instead of opening a new tab
360
318
  registerFileMetadata(fileMetadata, isPreview) {
361
319
  var {
362
320
  glEventHub,
@@ -367,14 +325,12 @@ class NotebookPanel extends Component {
367
325
  } = metadata;
368
326
  glEventHub.emit(NotebookEvent.REGISTER_FILE, tabId, fileMetadata, isPreview);
369
327
  }
370
-
371
328
  renameTab(id, title) {
372
329
  var {
373
330
  glEventHub
374
331
  } = this.props;
375
332
  glEventHub.emit(NotebookEvent.RENAME, id, title);
376
333
  }
377
-
378
334
  load() {
379
335
  var {
380
336
  fileMetadata,
@@ -389,7 +345,6 @@ class NotebookPanel extends Component {
389
345
  } = this.props;
390
346
  this.pending.add(fileStorage.loadFile(id)).then(loadedFile => {
391
347
  var _NotebookPanel$langua;
392
-
393
348
  log.debug('Loaded file', loadedFile);
394
349
  var {
395
350
  filename: itemName
@@ -397,7 +352,6 @@ class NotebookPanel extends Component {
397
352
  var {
398
353
  itemName: prevItemName
399
354
  } = this.state;
400
-
401
355
  if (itemName !== prevItemName) {
402
356
  var {
403
357
  metadata
@@ -407,19 +361,15 @@ class NotebookPanel extends Component {
407
361
  } = metadata;
408
362
  this.renameTab(tabId, FileUtils.getBaseName(itemName));
409
363
  }
410
-
411
364
  var updatedSettings = _objectSpread(_objectSpread({}, settings), {}, {
412
365
  language: (_NotebookPanel$langua = NotebookPanel.languageFromFileName(itemName)) !== null && _NotebookPanel$langua !== void 0 ? _NotebookPanel$langua : ''
413
366
  });
414
-
415
367
  if (settings.value == null) {
416
368
  updatedSettings.value = loadedFile.content;
417
369
  }
418
-
419
370
  if (settings.wordWrap === undefined) {
420
371
  settings.wordWrap = 'off';
421
372
  }
422
-
423
373
  this.setState({
424
374
  fileMetadata: {
425
375
  id: itemName,
@@ -430,40 +380,34 @@ class NotebookPanel extends Component {
430
380
  this.debouncedSavePanelState();
431
381
  }).then(this.handleLoadSuccess).catch(this.handleLoadError);
432
382
  }
383
+
433
384
  /**
434
385
  * Attempts to save the notebook.
435
386
  * @returns Returns true if save has begun, false if user needed to be prompted
436
387
  */
437
-
438
-
439
388
  save() {
440
389
  var {
441
390
  fileMetadata
442
391
  } = this.state;
443
-
444
392
  if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {
445
393
  var content = this.getNotebookValue();
446
-
447
394
  if (content !== undefined) {
448
395
  this.saveContent(fileMetadata.itemName, content);
449
396
  return true;
450
397
  }
451
-
452
398
  return false;
453
399
  }
454
-
455
400
  this.setState({
456
401
  showSaveAsModal: true
457
402
  });
458
403
  return false;
459
404
  }
405
+
460
406
  /**
461
407
  * Update existing file content
462
408
  * @param filename The name of the file
463
409
  * @param content New file content
464
410
  */
465
-
466
-
467
411
  saveContent(filename, content) {
468
412
  log.debug('saveContent', filename, content);
469
413
  this.updateSavedChangeCount();
@@ -476,7 +420,6 @@ class NotebookPanel extends Component {
476
420
  basename: filename
477
421
  })).then(this.handleSaveSuccess).catch(this.handleSaveError);
478
422
  }
479
-
480
423
  updateSavedChangeCount() {
481
424
  this.setState(_ref => {
482
425
  var {
@@ -487,24 +430,20 @@ class NotebookPanel extends Component {
487
430
  };
488
431
  });
489
432
  }
490
-
491
433
  setPreviewStatus() {
492
434
  if (!this.tabTitleElement) {
493
435
  return;
494
436
  }
495
-
496
437
  var {
497
438
  isPreview
498
439
  } = this.state;
499
440
  log.debug('setPreviewStatus', this.tabTitleElement, isPreview);
500
-
501
441
  if (isPreview) {
502
442
  this.tabTitleElement.classList.add('is-preview');
503
443
  } else {
504
444
  this.tabTitleElement.classList.remove('is-preview');
505
445
  }
506
446
  }
507
-
508
447
  savePanelState() {
509
448
  this.setState(state => {
510
449
  var {
@@ -514,19 +453,16 @@ class NotebookPanel extends Component {
514
453
  isPreview,
515
454
  settings: initialSettings
516
455
  } = state;
517
- var value = this.getNotebookValue(); // notebooks with no unsaved changes have value === null in dehydrated state
456
+ var value = this.getNotebookValue();
457
+ // notebooks with no unsaved changes have value === null in dehydrated state
518
458
  // content will be loaded from file when hydrating
519
-
520
459
  var dehydratedValue = changeCount !== savedChangeCount ? value : undefined;
521
-
522
460
  var settings = _objectSpread(_objectSpread({}, initialSettings), {}, {
523
461
  value
524
462
  });
525
-
526
463
  var dehydratedSettings = _objectSpread(_objectSpread({}, initialSettings), {}, {
527
464
  value: dehydratedValue
528
465
  });
529
-
530
466
  var panelState = {
531
467
  settings: dehydratedSettings,
532
468
  fileMetadata,
@@ -540,7 +476,6 @@ class NotebookPanel extends Component {
540
476
  };
541
477
  });
542
478
  }
543
-
544
479
  handleCloseDiscard() {
545
480
  this.shouldPromptClose = false;
546
481
  this.setState({
@@ -551,13 +486,11 @@ class NotebookPanel extends Component {
551
486
  } = this.props;
552
487
  glContainer.close();
553
488
  }
554
-
555
489
  handleCloseSave() {
556
490
  this.shouldPromptClose = false;
557
491
  this.setState({
558
492
  showCloseModal: false
559
493
  });
560
-
561
494
  if (this.save()) {
562
495
  var {
563
496
  glContainer
@@ -565,14 +498,12 @@ class NotebookPanel extends Component {
565
498
  glContainer.close();
566
499
  }
567
500
  }
568
-
569
501
  handleCloseCancel() {
570
502
  this.shouldPromptClose = true;
571
503
  this.setState({
572
504
  showCloseModal: false
573
505
  });
574
506
  }
575
-
576
507
  handleCopy() {
577
508
  var {
578
509
  fileMetadata,
@@ -590,15 +521,12 @@ class NotebookPanel extends Component {
590
521
  log.debug('handleCopy', fileMetadata, itemName, copyName);
591
522
  this.createNotebook(copyName, language, content);
592
523
  }
593
-
594
524
  handleEditorInitialized(innerEditor) {
595
525
  this.editor = innerEditor;
596
526
  }
597
-
598
527
  handleEditorWillDestroy() {
599
528
  this.editor = undefined;
600
529
  }
601
-
602
530
  handleEditorChange(e) {
603
531
  log.debug2('handleEditorChanged', e);
604
532
  this.removePreviewStatus();
@@ -611,7 +539,6 @@ class NotebookPanel extends Component {
611
539
  isUndoing,
612
540
  isRedoing
613
541
  } = e;
614
-
615
542
  if (isUndoing) {
616
543
  // Note that it's possible to undo past where the user last saved, if they save and then undo for example
617
544
  return {
@@ -619,7 +546,6 @@ class NotebookPanel extends Component {
619
546
  savedChangeCount
620
547
  };
621
548
  }
622
-
623
549
  if (!isRedoing && changeCount < savedChangeCount) {
624
550
  // We made another change after undoing some changes from the previous save
625
551
  // Just reset the saved counter to zero and increase the unchanged saves
@@ -629,7 +555,6 @@ class NotebookPanel extends Component {
629
555
  savedChangeCount: 0
630
556
  };
631
557
  }
632
-
633
558
  return {
634
559
  changeCount: changeCount + 1,
635
560
  savedChangeCount
@@ -637,13 +562,11 @@ class NotebookPanel extends Component {
637
562
  });
638
563
  this.debouncedSavePanelState();
639
564
  }
640
-
641
565
  handleFind() {
642
566
  if (this.notebook) {
643
567
  this.notebook.toggleFind();
644
568
  }
645
569
  }
646
-
647
570
  updateEditorMinimap() {
648
571
  if (this.editor) {
649
572
  var {
@@ -656,23 +579,19 @@ class NotebookPanel extends Component {
656
579
  });
657
580
  }
658
581
  }
659
-
660
582
  handleMinimapChange() {
661
583
  var {
662
584
  settings,
663
585
  defaultNotebookSettings,
664
586
  saveSettings
665
587
  } = this.props;
666
-
667
588
  var newSettings = _objectSpread(_objectSpread({}, settings), {}, {
668
589
  defaultNotebookSettings: {
669
590
  isMinimapEnabled: !defaultNotebookSettings.isMinimapEnabled
670
591
  }
671
592
  });
672
-
673
593
  saveSettings(newSettings);
674
594
  }
675
-
676
595
  updateEditorWordWrap() {
677
596
  if (this.editor) {
678
597
  var {
@@ -686,7 +605,6 @@ class NotebookPanel extends Component {
686
605
  });
687
606
  }
688
607
  }
689
-
690
608
  handleWordWrapChange() {
691
609
  if (this.editor) {
692
610
  this.setState(prevState => {
@@ -702,25 +620,22 @@ class NotebookPanel extends Component {
702
620
  });
703
621
  }
704
622
  }
705
-
706
623
  handleBlur() {
707
624
  log.debug('handleBlur');
708
625
  this.setState({
709
626
  isFocused: false
710
627
  });
711
628
  }
712
-
713
629
  handleFocus() {
714
630
  log.debug('handleFocus');
715
631
  this.setState({
716
632
  isFocused: true
717
633
  });
718
634
  }
635
+
719
636
  /**
720
637
  * @param event The click event from clicking on the link
721
638
  */
722
-
723
-
724
639
  handleLinkClick(event) {
725
640
  var {
726
641
  notebooksUrl,
@@ -730,20 +645,16 @@ class NotebookPanel extends Component {
730
645
  var {
731
646
  href
732
647
  } = event.currentTarget;
733
-
734
648
  if (!href || !href.startsWith(notebooksUrl)) {
735
649
  return;
736
650
  }
737
-
738
651
  event.stopPropagation();
739
652
  event.preventDefault();
740
653
  var notebookPath = "/".concat(href.substring(notebooksUrl.length)).replace(/%20/g, ' ');
741
-
742
654
  if (notebookPath === '/') {
743
655
  log.debug('Ignoring invalid notebook link', notebookPath);
744
656
  return;
745
657
  }
746
-
747
658
  log.debug('Notebook link clicked, opening', notebookPath);
748
659
  var {
749
660
  glEventHub
@@ -758,7 +669,6 @@ class NotebookPanel extends Component {
758
669
  };
759
670
  glEventHub.emit(NotebookEvent.SELECT_NOTEBOOK, session, sessionLanguage, notebookSettings, fileMetadata);
760
671
  }
761
-
762
672
  handleLoadSuccess() {
763
673
  this.setState({
764
674
  error: undefined,
@@ -766,33 +676,26 @@ class NotebookPanel extends Component {
766
676
  isLoading: false
767
677
  });
768
678
  }
769
-
770
679
  handleLoadError(errorParam) {
771
680
  var error = errorParam;
772
-
773
681
  if (PromiseUtils.isCanceled(error)) {
774
682
  return;
775
683
  }
776
-
777
684
  if (PromiseUtils.isTimedOut(error)) {
778
685
  error = new Error('File not found.');
779
686
  }
780
-
781
687
  log.error(error);
782
688
  this.setState({
783
689
  error,
784
690
  isLoading: false
785
691
  });
786
692
  }
787
-
788
693
  handleSave() {
789
694
  log.debug('handleSave');
790
695
  this.save();
791
696
  }
792
-
793
697
  handleSaveSuccess(file) {
794
698
  var _NotebookPanel$langua2;
795
-
796
699
  var {
797
700
  fileStorage
798
701
  } = this.props;
@@ -805,18 +708,14 @@ class NotebookPanel extends Component {
805
708
  var {
806
709
  fileMetadata: oldMetadata
807
710
  } = state;
808
-
809
711
  var settings = _objectSpread(_objectSpread({}, state.settings), {}, {
810
712
  language
811
713
  });
812
-
813
714
  log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);
814
-
815
715
  if (oldMetadata && FileUtils.hasPath(oldMetadata.itemName) && oldMetadata.itemName !== fileMetadata.itemName) {
816
716
  log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);
817
717
  fileStorage.deleteFile(oldMetadata.itemName).catch(NotebookPanel.handleError);
818
718
  }
819
-
820
719
  return {
821
720
  fileMetadata,
822
721
  settings,
@@ -826,39 +725,32 @@ class NotebookPanel extends Component {
826
725
  this.debouncedSavePanelState();
827
726
  this.registerFileMetadata(fileMetadata, false);
828
727
  }
829
-
830
728
  handleSaveError(error) {
831
729
  if (PromiseUtils.isCanceled(error)) {
832
730
  return;
833
- } // There was an error saving, just reset the savedChangeCount
731
+ }
732
+ // There was an error saving, just reset the savedChangeCount
834
733
  // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,
835
734
  // But we may as well continue showing the error until they actually save again
836
-
837
-
838
735
  this.setState({
839
736
  savedChangeCount: 0
840
737
  });
841
738
  log.error(error);
842
739
  }
843
-
844
740
  handleSaveAsCancel() {
845
741
  this.setState({
846
742
  showSaveAsModal: false
847
743
  });
848
744
  }
849
-
850
745
  handleSaveAsSubmit(name) {
851
746
  var _this$getNotebookValu;
852
-
853
747
  log.debug('handleSaveAsSubmit', name);
854
748
  var {
855
749
  fileMetadata
856
750
  } = this.state;
857
-
858
751
  if (!fileMetadata) {
859
752
  return;
860
753
  }
861
-
862
754
  var {
863
755
  itemName: prevItemName
864
756
  } = fileMetadata;
@@ -866,7 +758,6 @@ class NotebookPanel extends Component {
866
758
  this.setState({
867
759
  showSaveAsModal: false
868
760
  });
869
-
870
761
  if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {
871
762
  var {
872
763
  metadata
@@ -876,15 +767,12 @@ class NotebookPanel extends Component {
876
767
  } = metadata;
877
768
  this.renameTab(tabId, FileUtils.getBaseName(name));
878
769
  }
879
-
880
770
  this.saveContent(name, content);
881
771
  }
882
-
883
772
  handleRenameFile(oldName, newName) {
884
773
  var {
885
774
  fileMetadata
886
775
  } = this.state;
887
-
888
776
  if (fileMetadata && fileMetadata.id === oldName) {
889
777
  this.setState({
890
778
  fileMetadata: {
@@ -895,37 +783,28 @@ class NotebookPanel extends Component {
895
783
  this.debouncedSavePanelState();
896
784
  }
897
785
  }
898
-
899
786
  handleResize() {
900
787
  var _this$notebook;
901
-
902
788
  (_this$notebook = this.notebook) === null || _this$notebook === void 0 ? void 0 : _this$notebook.updateDimensions();
903
789
  }
904
-
905
790
  handleRunCommand(command) {
906
791
  this.runCommand(command);
907
792
  }
908
-
909
793
  handleRunAll() {
910
794
  var _this$notebook$getVal;
911
-
912
795
  if (!this.notebook) {
913
796
  log.error('Editor is not initialized.');
914
797
  return;
915
798
  }
916
-
917
799
  this.runCommand((_this$notebook$getVal = this.notebook.getValue()) !== null && _this$notebook$getVal !== void 0 ? _this$notebook$getVal : undefined);
918
800
  }
919
-
920
801
  handleRunSelected() {
921
802
  if (!this.notebook) {
922
803
  log.error('Editor is not initialized.');
923
804
  return;
924
805
  }
925
-
926
806
  this.runCommand(this.notebook.getSelectedCommand());
927
807
  }
928
-
929
808
  handleSessionOpened(session, _ref2) {
930
809
  var {
931
810
  language
@@ -935,37 +814,30 @@ class NotebookPanel extends Component {
935
814
  sessionLanguage: language
936
815
  });
937
816
  }
938
-
939
817
  handleSessionClosed() {
940
818
  this.setState({
941
819
  session: undefined,
942
820
  sessionLanguage: undefined
943
821
  });
944
822
  }
945
-
946
823
  handleShow() {
947
824
  var _this$notebook2;
948
-
949
825
  log.debug('handleShow');
950
826
  (_this$notebook2 = this.notebook) === null || _this$notebook2 === void 0 ? void 0 : _this$notebook2.updateDimensions();
951
827
  }
952
-
953
828
  handleShowRename() {
954
829
  this.setState({
955
830
  showSaveAsModal: true
956
831
  });
957
832
  }
958
-
959
833
  handleTab(tab) {
960
834
  log.debug('NotebookPanel tab event', tab);
961
835
  this.initTab(tab);
962
836
  }
963
-
964
837
  handleTabFocus() {
965
838
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
966
839
  args[_key] = arguments[_key];
967
840
  }
968
-
969
841
  log.debug('handleTabFocus', ...args);
970
842
  var {
971
843
  glContainer
@@ -973,30 +845,26 @@ class NotebookPanel extends Component {
973
845
  this.setState({
974
846
  isDashboardActive: true
975
847
  });
976
-
977
848
  if (this.notebook && !glContainer.isHidden) {
978
849
  this.notebook.updateDimensions();
979
850
  }
980
851
  }
981
-
982
852
  handleTabBlur() {
983
853
  log.debug('handleTabBlur');
984
854
  this.setState({
985
855
  isDashboardActive: false
986
856
  });
987
857
  }
988
-
989
858
  handlePanelTabClick() {
990
859
  log.debug('handlePanelTabClick');
991
860
  this.focus();
992
861
  }
862
+
993
863
  /**
994
864
  * Transform the link URI to load from where the notebook is if it's relative
995
865
  * @param src The link to transform
996
866
  * @returns String the transformed link
997
867
  */
998
-
999
-
1000
868
  handleTransformLinkUri(src) {
1001
869
  var {
1002
870
  notebooksUrl
@@ -1004,29 +872,22 @@ class NotebookPanel extends Component {
1004
872
  var {
1005
873
  fileMetadata
1006
874
  } = this.state;
1007
-
1008
875
  if (src.endsWith('/')) {
1009
876
  return src;
1010
877
  }
1011
-
1012
878
  if (src.startsWith('/')) {
1013
879
  return "".concat(notebooksUrl).concat(src.substring(1));
1014
880
  }
1015
-
1016
881
  var itemName = fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName;
1017
-
1018
882
  if (itemName === undefined) {
1019
883
  return src;
1020
884
  }
1021
-
1022
885
  if (itemName.charAt(0) === '/') {
1023
886
  itemName = itemName.substring(1);
1024
887
  }
1025
-
1026
888
  var itemUri = new URL(itemName, notebooksUrl);
1027
889
  return new URL(src, itemUri).href;
1028
890
  }
1029
-
1030
891
  focus() {
1031
892
  requestAnimationFrame(() => {
1032
893
  if (this.notebook) {
@@ -1034,7 +895,6 @@ class NotebookPanel extends Component {
1034
895
  }
1035
896
  });
1036
897
  }
1037
-
1038
898
  createNotebook(itemName, language) {
1039
899
  var content = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
1040
900
  var {
@@ -1045,12 +905,10 @@ class NotebookPanel extends Component {
1045
905
  sessionLanguage,
1046
906
  settings
1047
907
  } = this.state;
1048
-
1049
908
  var notebookSettings = _objectSpread(_objectSpread({}, settings), {}, {
1050
909
  language,
1051
910
  value: content
1052
911
  });
1053
-
1054
912
  var fileMetadata = {
1055
913
  id: null,
1056
914
  itemName
@@ -1058,44 +916,36 @@ class NotebookPanel extends Component {
1058
916
  log.debug('handleCreateNotebook', session, sessionLanguage, notebookSettings, fileMetadata);
1059
917
  glEventHub.emit(NotebookEvent.CREATE_NOTEBOOK, session, sessionLanguage, notebookSettings, fileMetadata);
1060
918
  }
1061
-
1062
919
  runCommand(command) {
1063
920
  if (command === undefined) {
1064
921
  log.debug('Ignoring empty command.');
1065
922
  return;
1066
923
  }
1067
-
1068
924
  this.removePreviewStatus();
1069
925
  var {
1070
926
  glEventHub
1071
927
  } = this.props;
1072
928
  glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);
1073
929
  }
1074
-
1075
930
  removePreviewStatus() {
1076
931
  this.setState(_ref3 => {
1077
932
  var {
1078
933
  isPreview
1079
934
  } = _ref3;
1080
-
1081
935
  if (isPreview) {
1082
936
  var {
1083
937
  fileMetadata
1084
938
  } = this.state;
1085
-
1086
939
  if (fileMetadata) {
1087
940
  this.registerFileMetadata(fileMetadata, false);
1088
941
  }
1089
-
1090
942
  return {
1091
943
  isPreview: false
1092
944
  };
1093
945
  }
1094
-
1095
946
  return null;
1096
947
  });
1097
948
  }
1098
-
1099
949
  getDropdownOverflowActions() {
1100
950
  var {
1101
951
  defaultNotebookSettings
@@ -1105,10 +955,8 @@ class NotebookPanel extends Component {
1105
955
  } = this.state;
1106
956
  return this.getOverflowActions(defaultNotebookSettings.isMinimapEnabled, this.getSettings(initialSettings, defaultNotebookSettings.isMinimapEnabled).wordWrap === 'on');
1107
957
  }
1108
-
1109
958
  render() {
1110
959
  var _fileMetadata$itemNam, _settings$value;
1111
-
1112
960
  var {
1113
961
  fileStorage,
1114
962
  glContainer,
@@ -1132,8 +980,8 @@ class NotebookPanel extends Component {
1132
980
  settings: initialSettings,
1133
981
  showCloseModal,
1134
982
  showSaveAsModal
1135
- } = this.state; // We don't want to steal focus if this isn't shown or it's just a preview
1136
-
983
+ } = this.state;
984
+ // We don't want to steal focus if this isn't shown or it's just a preview
1137
985
  var focusOnMount = isDashboardActive && !glContainer.isHidden && !isPreview;
1138
986
  var itemName = (_fileMetadata$itemNam = fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName) !== null && _fileMetadata$itemNam !== void 0 ? _fileMetadata$itemNam : NotebookPanel.DEFAULT_NAME;
1139
987
  var isMarkdown = itemName.endsWith('.md');
@@ -1226,7 +1074,8 @@ class NotebookPanel extends Component {
1226
1074
  disabled: toolbarDisabled,
1227
1075
  icon: vsKebabVertical,
1228
1076
  tooltip: "More Actions...",
1229
- onClick: () => {// no-op: click is handled in `DropdownMenu`
1077
+ onClick: () => {
1078
+ // no-op: click is handled in `DropdownMenu`
1230
1079
  }
1231
1080
  }, /*#__PURE__*/React.createElement(DropdownMenu, {
1232
1081
  actions: this.getDropdownOverflowActions,
@@ -1274,17 +1123,12 @@ class NotebookPanel extends Component {
1274
1123
  actions: contextActions
1275
1124
  })));
1276
1125
  }
1277
-
1278
1126
  }
1279
-
1280
1127
  _defineProperty(NotebookPanel, "COMPONENT", 'NotebookPanel');
1281
-
1282
1128
  _defineProperty(NotebookPanel, "POPPER_OPTIONS", {
1283
1129
  placement: 'bottom-end'
1284
1130
  });
1285
-
1286
1131
  _defineProperty(NotebookPanel, "DEFAULT_NAME", 'Untitled');
1287
-
1288
1132
  _defineProperty(NotebookPanel, "defaultProps", {
1289
1133
  isDashboardActive: true,
1290
1134
  isPreview: false,
@@ -1292,7 +1136,6 @@ _defineProperty(NotebookPanel, "defaultProps", {
1292
1136
  sessionLanguage: null,
1293
1137
  defaultNotebookSettings: null
1294
1138
  });
1295
-
1296
1139
  var mapStateToProps = (state, ownProps) => {
1297
1140
  var fileStorage = getFileStorage(state);
1298
1141
  var settings = getSettings(state);
@@ -1313,7 +1156,6 @@ var mapStateToProps = (state, ownProps) => {
1313
1156
  sessionLanguage
1314
1157
  };
1315
1158
  };
1316
-
1317
1159
  export default connect(mapStateToProps, {
1318
1160
  saveSettings: saveSettingsAction
1319
1161
  }, null, {