@deephaven/dashboard-core-plugins 0.15.5-vite.12 → 0.15.6-beta.3

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 (210) hide show
  1. package/dist/ChartBuilderPlugin.d.ts.map +1 -1
  2. package/dist/ChartBuilderPlugin.js +2 -1
  3. package/dist/ChartBuilderPlugin.js.map +1 -1
  4. package/dist/ChartPlugin.d.ts +2 -1
  5. package/dist/ChartPlugin.d.ts.map +1 -1
  6. package/dist/ChartPlugin.js.map +1 -1
  7. package/dist/ConsolePlugin.js.map +1 -1
  8. package/dist/FilterPlugin.js +1 -1
  9. package/dist/FilterPlugin.js.map +1 -1
  10. package/dist/GridPlugin.d.ts +2 -1
  11. package/dist/GridPlugin.d.ts.map +1 -1
  12. package/dist/GridPlugin.js.map +1 -1
  13. package/dist/LinkerPlugin.js.map +1 -1
  14. package/dist/MarkdownPlugin.js.map +1 -1
  15. package/dist/PandasPlugin.d.ts +2 -1
  16. package/dist/PandasPlugin.d.ts.map +1 -1
  17. package/dist/PandasPlugin.js.map +1 -1
  18. package/dist/controls/ControlType.d.ts +1 -1
  19. package/dist/controls/ControlType.d.ts.map +1 -1
  20. package/dist/controls/ControlType.js.map +1 -1
  21. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +73 -81
  22. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  23. package/dist/controls/dropdown-filter/DropdownFilter.js +41 -58
  24. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  25. package/dist/controls/input-filter/InputFilter.d.ts +46 -46
  26. package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
  27. package/dist/controls/input-filter/InputFilter.js +32 -39
  28. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  29. package/dist/controls/markdown/MarkdownContainer.d.ts +11 -16
  30. package/dist/controls/markdown/MarkdownContainer.d.ts.map +1 -1
  31. package/dist/controls/markdown/MarkdownContainer.js +5 -8
  32. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  33. package/dist/controls/markdown/MarkdownEditor.d.ts +17 -19
  34. package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
  35. package/dist/controls/markdown/MarkdownEditor.js +5 -8
  36. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  37. package/dist/controls/markdown/MarkdownStartPage.d.ts +24 -28
  38. package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -1
  39. package/dist/controls/markdown/MarkdownStartPage.js +19 -23
  40. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  41. package/dist/controls/markdown/MarkdownUtils.d.ts +4 -4
  42. package/dist/controls/markdown/MarkdownUtils.d.ts.map +1 -1
  43. package/dist/controls/markdown/MarkdownUtils.js +2 -2
  44. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  45. package/dist/events/ChartEvent.d.ts +1 -1
  46. package/dist/events/ChartEvent.d.ts.map +1 -1
  47. package/dist/events/ChartEvent.js.map +1 -1
  48. package/dist/events/ConsoleEvent.d.ts +1 -1
  49. package/dist/events/ConsoleEvent.d.ts.map +1 -1
  50. package/dist/events/ConsoleEvent.js.map +1 -1
  51. package/dist/events/InputFilterEvent.d.ts +1 -1
  52. package/dist/events/InputFilterEvent.d.ts.map +1 -1
  53. package/dist/events/InputFilterEvent.js.map +1 -1
  54. package/dist/events/IrisGridEvent.d.ts +1 -1
  55. package/dist/events/IrisGridEvent.d.ts.map +1 -1
  56. package/dist/events/IrisGridEvent.js.map +1 -1
  57. package/dist/events/MarkdownEvent.js.map +1 -1
  58. package/dist/events/NotebookEvent.d.ts +1 -1
  59. package/dist/events/NotebookEvent.d.ts.map +1 -1
  60. package/dist/events/NotebookEvent.js.map +1 -1
  61. package/dist/events/PQEvent.d.ts +1 -1
  62. package/dist/events/PQEvent.d.ts.map +1 -1
  63. package/dist/events/PQEvent.js.map +1 -1
  64. package/dist/events/PandasEvent.d.ts +1 -1
  65. package/dist/events/PandasEvent.d.ts.map +1 -1
  66. package/dist/events/PandasEvent.js.map +1 -1
  67. package/dist/events/TabEvent.d.ts +1 -1
  68. package/dist/events/TabEvent.d.ts.map +1 -1
  69. package/dist/events/TabEvent.js.map +1 -1
  70. package/dist/events/index.d.ts +8 -8
  71. package/dist/events/index.d.ts.map +1 -1
  72. package/dist/events/index.js.map +1 -1
  73. package/dist/index.d.ts +1 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/linker/ColumnSelectionValidator.d.ts +4 -0
  78. package/dist/linker/ColumnSelectionValidator.d.ts.map +1 -0
  79. package/dist/linker/ColumnSelectionValidator.js +2 -0
  80. package/dist/linker/ColumnSelectionValidator.js.map +1 -0
  81. package/dist/linker/Linker.d.ts +11 -11
  82. package/dist/linker/Linker.js +1 -1
  83. package/dist/linker/Linker.js.map +1 -1
  84. package/dist/linker/LinkerLink.js.map +1 -1
  85. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  86. package/dist/linker/LinkerUtils.d.ts +3 -3
  87. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  88. package/dist/linker/LinkerUtils.js.map +1 -1
  89. package/dist/linker/ToolType.d.ts +1 -1
  90. package/dist/linker/ToolType.d.ts.map +1 -1
  91. package/dist/linker/ToolType.js.map +1 -1
  92. package/dist/linker/index.d.ts +2 -0
  93. package/dist/linker/index.d.ts.map +1 -0
  94. package/dist/linker/index.js +2 -0
  95. package/dist/linker/index.js.map +1 -0
  96. package/dist/panels/ChartColumnSelectorOverlay.d.ts +22 -26
  97. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
  98. package/dist/panels/ChartColumnSelectorOverlay.js +5 -14
  99. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  100. package/dist/panels/ChartFilterOverlay.d.ts +29 -21
  101. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
  102. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  103. package/dist/panels/ChartPanel.d.ts +187 -152
  104. package/dist/panels/ChartPanel.d.ts.map +1 -1
  105. package/dist/panels/ChartPanel.js +87 -84
  106. package/dist/panels/ChartPanel.js.map +1 -1
  107. package/dist/panels/CommandHistoryPanel.d.ts +41 -56
  108. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  109. package/dist/panels/CommandHistoryPanel.js +13 -35
  110. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  111. package/dist/panels/ConsolePanel.d.ts +63 -73
  112. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  113. package/dist/panels/ConsolePanel.js +67 -83
  114. package/dist/panels/ConsolePanel.js.map +1 -1
  115. package/dist/panels/DropdownFilterPanel.d.ts +110 -106
  116. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  117. package/dist/panels/DropdownFilterPanel.js +60 -62
  118. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  119. package/dist/panels/FileExplorerPanel.d.ts +5 -7
  120. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  121. package/dist/panels/FileExplorerPanel.js.map +1 -1
  122. package/dist/panels/FilterSetManager.d.ts +3 -1
  123. package/dist/panels/FilterSetManager.d.ts.map +1 -1
  124. package/dist/panels/FilterSetManager.js.map +1 -1
  125. package/dist/panels/FilterSetManagerPanel.d.ts +83 -62
  126. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
  127. package/dist/panels/FilterSetManagerPanel.js +58 -36
  128. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  129. package/dist/panels/InputFilterPanel.d.ts +50 -51
  130. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  131. package/dist/panels/InputFilterPanel.js +35 -34
  132. package/dist/panels/InputFilterPanel.js.map +1 -1
  133. package/dist/panels/IrisGridPanel.d.ts +191 -178
  134. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  135. package/dist/panels/IrisGridPanel.js +150 -179
  136. package/dist/panels/IrisGridPanel.js.map +1 -1
  137. package/dist/panels/LogPanel.d.ts +29 -45
  138. package/dist/panels/LogPanel.d.ts.map +1 -1
  139. package/dist/panels/LogPanel.js +9 -11
  140. package/dist/panels/LogPanel.js.map +1 -1
  141. package/dist/panels/MarkdownNotebook.d.ts +34 -34
  142. package/dist/panels/MarkdownNotebook.d.ts.map +1 -1
  143. package/dist/panels/MarkdownNotebook.js +21 -18
  144. package/dist/panels/MarkdownNotebook.js.map +1 -1
  145. package/dist/panels/MarkdownPanel.d.ts +41 -47
  146. package/dist/panels/MarkdownPanel.d.ts.map +1 -1
  147. package/dist/panels/MarkdownPanel.js +17 -19
  148. package/dist/panels/MarkdownPanel.js.map +1 -1
  149. package/dist/panels/NotebookPanel.d.ts +137 -115
  150. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  151. package/dist/panels/NotebookPanel.js +95 -69
  152. package/dist/panels/NotebookPanel.js.map +1 -1
  153. package/dist/panels/PandasPanel.d.ts +20 -17
  154. package/dist/panels/PandasPanel.d.ts.map +1 -1
  155. package/dist/panels/PandasPanel.js +18 -14
  156. package/dist/panels/PandasPanel.js.map +1 -1
  157. package/dist/panels/Panel.d.ts +87 -123
  158. package/dist/panels/Panel.d.ts.map +1 -1
  159. package/dist/panels/Panel.js +29 -54
  160. package/dist/panels/Panel.js.map +1 -1
  161. package/dist/panels/PanelContextMenu.d.ts +16 -31
  162. package/dist/panels/PanelContextMenu.d.ts.map +1 -1
  163. package/dist/panels/PanelContextMenu.js +12 -15
  164. package/dist/panels/PanelContextMenu.js.map +1 -1
  165. package/dist/panels/RenameDialog.d.ts +26 -28
  166. package/dist/panels/RenameDialog.d.ts.map +1 -1
  167. package/dist/panels/RenameDialog.js +15 -19
  168. package/dist/panels/RenameDialog.js.map +1 -1
  169. package/dist/panels/WidgetPanel.d.ts +72 -106
  170. package/dist/panels/WidgetPanel.d.ts.map +1 -1
  171. package/dist/panels/WidgetPanel.js +17 -47
  172. package/dist/panels/WidgetPanel.js.map +1 -1
  173. package/dist/panels/WidgetPanelTooltip.d.ts +29 -22
  174. package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
  175. package/dist/panels/WidgetPanelTooltip.js +1 -1
  176. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  177. package/dist/panels/index.d.ts +3 -0
  178. package/dist/panels/index.d.ts.map +1 -1
  179. package/dist/panels/index.js +3 -0
  180. package/dist/panels/index.js.map +1 -1
  181. package/dist/prop-types/CommonPropTypes.d.ts +4 -4
  182. package/dist/prop-types/CommonPropTypes.d.ts.map +1 -1
  183. package/dist/prop-types/CommonPropTypes.js +1 -1
  184. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  185. package/dist/prop-types/UIPropTypes.d.ts +2 -7
  186. package/dist/prop-types/UIPropTypes.d.ts.map +1 -1
  187. package/dist/prop-types/UIPropTypes.js +0 -7
  188. package/dist/prop-types/UIPropTypes.js.map +1 -1
  189. package/dist/prop-types/index.d.ts +2 -2
  190. package/dist/prop-types/index.d.ts.map +1 -1
  191. package/dist/prop-types/index.js.map +1 -1
  192. package/dist/redux/actionTypes.d.ts +1 -1
  193. package/dist/redux/actionTypes.d.ts.map +1 -1
  194. package/dist/redux/actionTypes.js.map +1 -1
  195. package/dist/redux/actions.d.ts +63 -8
  196. package/dist/redux/actions.d.ts.map +1 -1
  197. package/dist/redux/actions.js +17 -17
  198. package/dist/redux/actions.js.map +1 -1
  199. package/dist/redux/index.js.map +1 -1
  200. package/dist/redux/reducers/index.d.ts +3 -4
  201. package/dist/redux/reducers/index.d.ts.map +1 -1
  202. package/dist/redux/reducers/index.js.map +1 -1
  203. package/dist/redux/reducers/sessionWrapper.d.ts +1 -1
  204. package/dist/redux/reducers/sessionWrapper.d.ts.map +1 -1
  205. package/dist/redux/reducers/sessionWrapper.js.map +1 -1
  206. package/dist/redux/selectors.d.ts +63 -9
  207. package/dist/redux/selectors.d.ts.map +1 -1
  208. package/dist/redux/selectors.js +27 -27
  209. package/dist/redux/selectors.js.map +1 -1
  210. package/package.json +21 -17
@@ -7,20 +7,18 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
7
7
  // Wrapper for the Notebook for use in a golden layout container
8
8
  import React, { Component } from 'react';
9
9
  import ReactDOM from 'react-dom';
10
- import PropTypes from 'prop-types';
11
10
  import memoize from 'memoize-one';
12
11
  import { connect } from 'react-redux';
13
12
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
14
13
  import { BasicModal, ContextActions, DropdownMenu, Tooltip, GLOBAL_SHORTCUTS } from '@deephaven/components';
15
14
  import { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';
16
- import { GLPropTypes } from '@deephaven/dashboard';
17
15
  import { FileUtils, NewItemModal } from '@deephaven/file-explorer';
18
16
  import { vsSave, vsKebabVertical, dhFileSearch, vsPlay, dhRunSelection } from '@deephaven/icons';
19
17
  import { getFileStorage } from '@deephaven/redux';
20
18
  import classNames from 'classnames';
21
19
  import debounce from 'lodash.debounce';
22
20
  import Log from '@deephaven/log';
23
- import { Pending, PromiseUtils } from '@deephaven/utils';
21
+ import { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';
24
22
  import { ConsoleEvent, NotebookEvent } from "../events/index.js";
25
23
  import { getDashboardSessionWrapper } from "../redux/index.js";
26
24
  import Panel from "./Panel.js";
@@ -58,8 +56,24 @@ class NotebookPanel extends Component {
58
56
  }
59
57
 
60
58
  constructor(props) {
59
+ var _fileMetadata;
60
+
61
61
  super(props);
62
62
 
63
+ _defineProperty(this, "pending", void 0);
64
+
65
+ _defineProperty(this, "debouncedSavePanelState", void 0);
66
+
67
+ _defineProperty(this, "debouncedLoad", void 0);
68
+
69
+ _defineProperty(this, "notebook", void 0);
70
+
71
+ _defineProperty(this, "tabTitleElement", void 0);
72
+
73
+ _defineProperty(this, "tabInitOnce", void 0);
74
+
75
+ _defineProperty(this, "shouldPromptClose", void 0);
76
+
63
77
  _defineProperty(this, "getOverflowActions", memoize(() => [{
64
78
  title: 'Find',
65
79
  icon: dhFileSearch,
@@ -104,7 +118,6 @@ class NotebookPanel extends Component {
104
118
  this.debouncedLoad = debounce(this.load.bind(this), DEBOUNCE_PANEL_STATE_UPDATE);
105
119
  this.notebook = null;
106
120
  this.tabTitleElement = null;
107
- this.unsavedIndicator = null;
108
121
  this.tabInitOnce = false;
109
122
  this.shouldPromptClose = true;
110
123
  var {
@@ -114,7 +127,8 @@ class NotebookPanel extends Component {
114
127
  panelState
115
128
  } = props;
116
129
  var settings = {
117
- value: ''
130
+ value: '',
131
+ language: ''
118
132
  };
119
133
  var fileMetadata = null;
120
134
  var {
@@ -131,13 +145,13 @@ class NotebookPanel extends Component {
131
145
  // may need to implement some other indication that this notebook has never been saved
132
146
 
133
147
 
134
- var hasFileId = fileMetadata.itemName && FileUtils.hasPath(fileMetadata.itemName); // Unsaved if file id != null and content != null
148
+ var hasFileId = ((_fileMetadata = fileMetadata) === null || _fileMetadata === void 0 ? void 0 : _fileMetadata.itemName) && FileUtils.hasPath(fileMetadata.itemName); // Unsaved if file id != null and content != null
135
149
  // OR file id is null AND content is not null or ''
136
150
 
137
151
  var isUnsaved = hasFileId && settings.value != null || !hasFileId && settings.value;
138
152
  var changeCount = isUnsaved ? 1 : 0;
139
153
  this.state = {
140
- error: null,
154
+ error: undefined,
141
155
  isDashboardActive,
142
156
  isFocused: false,
143
157
  isLoading: true,
@@ -181,7 +195,7 @@ class NotebookPanel extends Component {
181
195
  } = this.state;
182
196
 
183
197
  if (isPreview !== prevState.isPreview) {
184
- this.setPreviewStatus(isPreview);
198
+ this.setPreviewStatus();
185
199
  }
186
200
  }
187
201
 
@@ -199,10 +213,10 @@ class NotebookPanel extends Component {
199
213
  glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);
200
214
  glContainer.off('tabClicked', this.handlePanelTabClick);
201
215
  glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);
202
- } // Called by TabEvent. Happens once when created, but also each time its moved.
203
- // when moved, need to re-init the unsaved indicators on title elements
204
-
216
+ }
205
217
 
218
+ // Called by TabEvent. Happens once when created, but also each time its moved.
219
+ // when moved, need to re-init the unsaved indicators on title elements
206
220
  initTab(tab) {
207
221
  if (!this.tabInitOnce) {
208
222
  this.tabInitOnce = true;
@@ -232,14 +246,17 @@ class NotebookPanel extends Component {
232
246
  } else {
233
247
  close();
234
248
  }
249
+
250
+ return true;
235
251
  };
236
252
  }
237
253
 
238
254
  initTabClasses(tab) {
239
255
  var tabElement = tab.element.get(0);
256
+ assertNotNull(tabElement);
240
257
  var titleElement = tabElement.querySelector('.lm_title');
241
258
  this.tabTitleElement = titleElement;
242
- titleElement.classList.add('notebook-title');
259
+ titleElement === null || titleElement === void 0 ? void 0 : titleElement.classList.add('notebook-title');
243
260
  this.setPreviewStatus();
244
261
  }
245
262
 
@@ -321,6 +338,7 @@ class NotebookPanel extends Component {
321
338
  fileMetadata,
322
339
  settings
323
340
  } = this.state;
341
+ assertNotNull(fileMetadata);
324
342
  var {
325
343
  id
326
344
  } = fileMetadata;
@@ -328,6 +346,8 @@ class NotebookPanel extends Component {
328
346
  fileStorage
329
347
  } = this.props;
330
348
  this.pending.add(fileStorage.loadFile(id)).then(loadedFile => {
349
+ var _NotebookPanel$langua;
350
+
331
351
  log.debug('Loaded file', loadedFile);
332
352
  var {
333
353
  filename: itemName
@@ -347,7 +367,7 @@ class NotebookPanel extends Component {
347
367
  }
348
368
 
349
369
  var updatedSettings = _objectSpread(_objectSpread({}, settings), {}, {
350
- language: NotebookPanel.languageFromFileName(itemName)
370
+ language: (_NotebookPanel$langua = NotebookPanel.languageFromFileName(itemName)) !== null && _NotebookPanel$langua !== void 0 ? _NotebookPanel$langua : ''
351
371
  });
352
372
 
353
373
  if (settings.value == null) {
@@ -366,7 +386,7 @@ class NotebookPanel extends Component {
366
386
  }
367
387
  /**
368
388
  * Attempts to save the notebook.
369
- * @returns {boolean} Returns true if save has begun, false if user needed to be prompted
389
+ * @returns Returns true if save has begun, false if user needed to be prompted
370
390
  */
371
391
 
372
392
 
@@ -377,8 +397,13 @@ class NotebookPanel extends Component {
377
397
 
378
398
  if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {
379
399
  var content = this.getNotebookValue();
380
- this.saveContent(fileMetadata.itemName, content);
381
- return true;
400
+
401
+ if (content != null) {
402
+ this.saveContent(fileMetadata.itemName, content);
403
+ return true;
404
+ }
405
+
406
+ return false;
382
407
  }
383
408
 
384
409
  this.setState({
@@ -388,8 +413,8 @@ class NotebookPanel extends Component {
388
413
  }
389
414
  /**
390
415
  * Update existing file content
391
- * @param {string} filename The name of the file
392
- * @param {string} content New file content
416
+ * @param filename The name of the file
417
+ * @param content New file content
393
418
  */
394
419
 
395
420
 
@@ -401,7 +426,8 @@ class NotebookPanel extends Component {
401
426
  } = this.props;
402
427
  this.pending.add(fileStorage.saveFile({
403
428
  filename,
404
- content
429
+ content,
430
+ basename: filename
405
431
  })).then(this.handleSaveSuccess).catch(this.handleSaveError);
406
432
  }
407
433
 
@@ -506,6 +532,7 @@ class NotebookPanel extends Component {
506
532
  fileMetadata,
507
533
  settings
508
534
  } = this.state;
535
+ assertNotNull(fileMetadata);
509
536
  var content = this.getNotebookValue();
510
537
  var {
511
538
  language
@@ -515,17 +542,17 @@ class NotebookPanel extends Component {
515
542
  } = fileMetadata;
516
543
  var copyName = FileUtils.getCopyFileName(itemName);
517
544
  log.debug('handleCopy', fileMetadata, itemName, copyName);
518
- this.createNotebook(copyName, language, content);
545
+ this.createNotebook(copyName, language, content !== null && content !== void 0 ? content : undefined);
519
546
  }
520
547
 
521
548
  handleEditorChange(e) {
522
549
  log.debug2('handleEditorChanged', e);
523
550
  this.removePreviewStatus();
524
- this.setState(_ref2 => {
551
+ this.setState(state => {
525
552
  var {
526
553
  changeCount,
527
554
  savedChangeCount
528
- } = _ref2;
555
+ } = state;
529
556
  var {
530
557
  isUndoing,
531
558
  isRedoing
@@ -534,7 +561,8 @@ class NotebookPanel extends Component {
534
561
  if (isUndoing) {
535
562
  // Note that it's possible to undo past where the user last saved, if they save and then undo for example
536
563
  return {
537
- changeCount: changeCount - 1
564
+ changeCount: changeCount - 1,
565
+ savedChangeCount
538
566
  };
539
567
  }
540
568
 
@@ -549,7 +577,8 @@ class NotebookPanel extends Component {
549
577
  }
550
578
 
551
579
  return {
552
- changeCount: changeCount + 1
580
+ changeCount: changeCount + 1,
581
+ savedChangeCount
553
582
  };
554
583
  });
555
584
  this.debouncedSavePanelState();
@@ -575,7 +604,7 @@ class NotebookPanel extends Component {
575
604
  });
576
605
  }
577
606
  /**
578
- * @param {MouseEvent} event The click event from clicking on the link
607
+ * @param event The click event from clicking on the link
579
608
  */
580
609
 
581
610
 
@@ -587,7 +616,7 @@ class NotebookPanel extends Component {
587
616
  } = this.props;
588
617
  var {
589
618
  href
590
- } = event.target;
619
+ } = event.currentTarget;
591
620
 
592
621
  if (!href || !href.startsWith(notebooksUrl)) {
593
622
  return;
@@ -619,7 +648,7 @@ class NotebookPanel extends Component {
619
648
 
620
649
  handleLoadSuccess() {
621
650
  this.setState({
622
- error: null,
651
+ error: undefined,
623
652
  isLoaded: true,
624
653
  isLoading: false
625
654
  });
@@ -649,6 +678,8 @@ class NotebookPanel extends Component {
649
678
  }
650
679
 
651
680
  handleSaveSuccess(file) {
681
+ var _NotebookPanel$langua2;
682
+
652
683
  var {
653
684
  fileStorage
654
685
  } = this.props;
@@ -656,7 +687,7 @@ class NotebookPanel extends Component {
656
687
  id: file.filename,
657
688
  itemName: file.filename
658
689
  };
659
- var language = NotebookPanel.languageFromFileName(file.filename);
690
+ var language = (_NotebookPanel$langua2 = NotebookPanel.languageFromFileName(file.filename)) !== null && _NotebookPanel$langua2 !== void 0 ? _NotebookPanel$langua2 : '';
660
691
  this.setState(state => {
661
692
  var {
662
693
  fileMetadata: oldMetadata
@@ -668,7 +699,7 @@ class NotebookPanel extends Component {
668
699
 
669
700
  log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);
670
701
 
671
- if (FileUtils.hasPath(oldMetadata.itemName) && oldMetadata.itemName !== fileMetadata.itemName) {
702
+ if (oldMetadata && FileUtils.hasPath(oldMetadata.itemName) && oldMetadata.itemName !== fileMetadata.itemName) {
672
703
  log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);
673
704
  fileStorage.deleteFile(oldMetadata.itemName).catch(NotebookPanel.handleError);
674
705
  }
@@ -704,14 +735,21 @@ class NotebookPanel extends Component {
704
735
  }
705
736
 
706
737
  handleSaveAsSubmit(name) {
738
+ var _this$getNotebookValu;
739
+
707
740
  log.debug('handleSaveAsSubmit', name);
708
741
  var {
709
742
  fileMetadata
710
743
  } = this.state;
744
+
745
+ if (!fileMetadata) {
746
+ return;
747
+ }
748
+
711
749
  var {
712
750
  itemName: prevItemName
713
751
  } = fileMetadata;
714
- var content = this.getNotebookValue();
752
+ var content = (_this$getNotebookValu = this.getNotebookValue()) !== null && _this$getNotebookValu !== void 0 ? _this$getNotebookValu : '';
715
753
  this.setState({
716
754
  showSaveAsModal: false
717
755
  });
@@ -734,7 +772,7 @@ class NotebookPanel extends Component {
734
772
  fileMetadata
735
773
  } = this.state;
736
774
 
737
- if (fileMetadata.id === oldName) {
775
+ if (fileMetadata && fileMetadata.id === oldName) {
738
776
  this.setState({
739
777
  fileMetadata: {
740
778
  id: newName,
@@ -756,12 +794,14 @@ class NotebookPanel extends Component {
756
794
  }
757
795
 
758
796
  handleRunAll() {
797
+ var _this$notebook$getVal;
798
+
759
799
  if (!this.notebook) {
760
800
  log.error('Editor is not initialized.');
761
801
  return;
762
802
  }
763
803
 
764
- this.runCommand(this.notebook.getValue());
804
+ this.runCommand((_this$notebook$getVal = this.notebook.getValue()) !== null && _this$notebook$getVal !== void 0 ? _this$notebook$getVal : undefined);
765
805
  }
766
806
 
767
807
  handleRunSelected() {
@@ -773,10 +813,10 @@ class NotebookPanel extends Component {
773
813
  this.runCommand(this.notebook.getSelectedCommand());
774
814
  }
775
815
 
776
- handleSessionOpened(session, _ref3) {
816
+ handleSessionOpened(session, _ref2) {
777
817
  var {
778
818
  language
779
- } = _ref3;
819
+ } = _ref2;
780
820
  this.setState({
781
821
  session,
782
822
  sessionLanguage: language
@@ -785,8 +825,8 @@ class NotebookPanel extends Component {
785
825
 
786
826
  handleSessionClosed() {
787
827
  this.setState({
788
- session: null,
789
- sessionLanguage: null
828
+ session: undefined,
829
+ sessionLanguage: undefined
790
830
  });
791
831
  }
792
832
 
@@ -839,7 +879,7 @@ class NotebookPanel extends Component {
839
879
  }
840
880
  /**
841
881
  * Transform the link URI to load from where the notebook is if it's relative
842
- * @param {String} src The link to transform
882
+ * @param src The link to transform
843
883
  * @returns String the transformed link
844
884
  */
845
885
 
@@ -882,7 +922,8 @@ class NotebookPanel extends Component {
882
922
  });
883
923
  }
884
924
 
885
- createNotebook(itemName, language, content) {
925
+ createNotebook(itemName, language) {
926
+ var content = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
886
927
  var {
887
928
  glEventHub
888
929
  } = this.props;
@@ -919,16 +960,20 @@ class NotebookPanel extends Component {
919
960
  }
920
961
 
921
962
  removePreviewStatus() {
922
- this.setState(_ref4 => {
963
+ this.setState(_ref3 => {
923
964
  var {
924
965
  isPreview
925
- } = _ref4;
966
+ } = _ref3;
926
967
 
927
968
  if (isPreview) {
928
969
  var {
929
970
  fileMetadata
930
971
  } = this.state;
931
- this.registerFileMetadata(fileMetadata, false);
972
+
973
+ if (fileMetadata) {
974
+ this.registerFileMetadata(fileMetadata, false);
975
+ }
976
+
932
977
  return {
933
978
  isPreview: false
934
979
  };
@@ -939,7 +984,7 @@ class NotebookPanel extends Component {
939
984
  }
940
985
 
941
986
  render() {
942
- var _fileMetadata$itemNam;
987
+ var _fileMetadata$itemNam, _settings$value;
943
988
 
944
989
  var {
945
990
  fileStorage,
@@ -994,11 +1039,12 @@ class NotebookPanel extends Component {
994
1039
  group: ContextActions.groups.high,
995
1040
  order: 20
996
1041
  }];
997
- return /*#__PURE__*/React.createElement(React.Fragment, null, tab && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement("span", {
1042
+ var portal = tab === null || tab === void 0 ? void 0 : tab.element.find('.lm_title_before').get(0);
1043
+ return /*#__PURE__*/React.createElement(React.Fragment, null, portal && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement("span", {
998
1044
  className: classNames('editor-unsaved-indicator', {
999
1045
  'is-unsaved': changeCount !== savedChangeCount
1000
1046
  })
1001
- }), tab.element.find('.lm_title_before').get(0) // tab.element is jquery element, we want a dom element
1047
+ }), portal // tab.element is jquery element, we want a dom element
1002
1048
  ), /*#__PURE__*/React.createElement(Panel, {
1003
1049
  className: "notebook-container",
1004
1050
  componentPanel: this,
@@ -1063,7 +1109,7 @@ class NotebookPanel extends Component {
1063
1109
  this.notebook = notebook;
1064
1110
  }
1065
1111
  })), isMarkdown && /*#__PURE__*/React.createElement(MarkdownNotebook, {
1066
- content: settings.value,
1112
+ content: (_settings$value = settings.value) !== null && _settings$value !== void 0 ? _settings$value : '',
1067
1113
  onLinkClick: this.handleLinkClick,
1068
1114
  onRunCode: this.handleRunCommand,
1069
1115
  transformImageUri: this.handleTransformLinkUri,
@@ -1101,33 +1147,13 @@ _defineProperty(NotebookPanel, "POPPER_OPTIONS", {
1101
1147
 
1102
1148
  _defineProperty(NotebookPanel, "DEFAULT_NAME", 'Untitled');
1103
1149
 
1104
- NotebookPanel.propTypes = {
1105
- fileStorage: PropTypes.shape({
1106
- deleteFile: PropTypes.func.isRequired,
1107
- loadFile: PropTypes.func.isRequired,
1108
- saveFile: PropTypes.func.isRequired
1109
- }).isRequired,
1110
- glContainer: GLPropTypes.Container.isRequired,
1111
- glEventHub: GLPropTypes.EventHub.isRequired,
1112
- isDashboardActive: PropTypes.bool,
1113
- isPreview: PropTypes.bool,
1114
- metadata: PropTypes.shape({
1115
- id: PropTypes.string.isRequired
1116
- }).isRequired,
1117
- session: PropTypes.shape({}),
1118
- sessionLanguage: PropTypes.string,
1119
- panelState: PropTypes.shape({
1120
- settings: PropTypes.shape({}),
1121
- fileMetadata: PropTypes.shape({})
1122
- }).isRequired,
1123
- notebooksUrl: PropTypes.string.isRequired
1124
- };
1125
- NotebookPanel.defaultProps = {
1150
+ _defineProperty(NotebookPanel, "defaultProps", {
1126
1151
  isDashboardActive: true,
1127
1152
  isPreview: false,
1128
1153
  session: null,
1129
- sessionLanguage: null
1130
- };
1154
+ sessionLanguage: null,
1155
+ notebooksUrl: new URL("".concat(process.env.REACT_APP_NOTEBOOKS_URL, "/"), "".concat(window.location)).href
1156
+ });
1131
1157
 
1132
1158
  var mapStateToProps = (state, ownProps) => {
1133
1159
  var fileStorage = getFileStorage(state);