@deephaven/dashboard-core-plugins 0.5.2-matplotlib.2 → 0.6.1-fixed-deps.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartPlugin.js +25 -22
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.d.ts.map +1 -1
- package/dist/ConsolePlugin.js +130 -134
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.d.ts.map +1 -1
- package/dist/FilterPlugin.js +114 -116
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.js +29 -26
- package/dist/GridPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js +7 -5
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js +44 -45
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.d.ts +5 -2
- package/dist/PandasPlugin.d.ts.map +1 -1
- package/dist/PandasPlugin.js +12 -12
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/ControlType.d.ts +1 -0
- package/dist/controls/ControlType.d.ts.map +1 -1
- package/dist/controls/ControlType.js +3 -5
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts +6 -0
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +356 -394
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts +6 -0
- package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +256 -270
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +18 -56
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +36 -75
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +93 -133
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js +17 -32
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.js +1 -5
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.js +1 -5
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/ControlEvent.js +1 -5
- package/dist/events/ControlEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.d.ts +2 -0
- package/dist/events/InputFilterEvent.d.ts.map +1 -1
- package/dist/events/InputFilterEvent.js +3 -5
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.js +1 -5
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/NotebookEvent.js +1 -5
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.js +1 -5
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.js +1 -5
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEvent.js +1 -5
- package/dist/events/TabEvent.js.map +1 -1
- package/dist/events/index.d.ts +0 -1
- package/dist/events/index.js +9 -10
- package/dist/events/index.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -11
- package/dist/index.js.map +1 -1
- package/dist/linker/Linker.d.ts +1 -1
- package/dist/linker/Linker.js +594 -606
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js +92 -126
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +162 -220
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js +105 -114
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +19 -25
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +18 -24
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +3 -0
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +839 -873
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +160 -186
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts +1 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +327 -374
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +6 -0
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +537 -566
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.d.ts +6 -1
- package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
- package/dist/panels/FileExplorerPanel.js +208 -210
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.css +111 -0
- package/dist/panels/FilterSetManager.css.map +1 -0
- package/dist/panels/FilterSetManager.d.ts +66 -0
- package/dist/panels/FilterSetManager.d.ts.map +1 -0
- package/dist/panels/FilterSetManager.js +732 -0
- package/dist/panels/FilterSetManager.js.map +1 -0
- package/dist/panels/FilterSetManagerPanel.css +33 -0
- package/dist/panels/FilterSetManagerPanel.css.map +1 -0
- package/dist/panels/FilterSetManagerPanel.d.ts +69 -0
- package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -0
- package/dist/panels/FilterSetManagerPanel.js +383 -0
- package/dist/panels/FilterSetManagerPanel.js.map +1 -0
- package/dist/panels/InputFilterPanel.d.ts +7 -0
- package/dist/panels/InputFilterPanel.d.ts.map +1 -1
- package/dist/panels/InputFilterPanel.js +198 -206
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +11 -3
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +779 -771
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.js +80 -116
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownPanel.js +165 -199
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +3 -1
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +870 -862
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +56 -90
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/Panel.js +282 -313
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/PanelContextMenu.js +107 -158
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/panels/RenameDialog.js +144 -172
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/panels/Shortcuts.js +1 -1
- package/dist/panels/Shortcuts.js.map +1 -1
- package/dist/panels/WidgetPanel.js +133 -163
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +7 -5
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/panels/index.d.ts +1 -1
- package/dist/panels/index.js +16 -16
- package/dist/panels/index.js.map +1 -1
- package/dist/prop-types/CommonPropTypes.js +4 -8
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/prop-types/UIPropTypes.js +6 -6
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/prop-types/index.js +2 -2
- package/dist/prop-types/index.js.map +1 -1
- package/dist/redux/actions.d.ts +1 -0
- package/dist/redux/actions.d.ts.map +1 -1
- package/dist/redux/actions.js +33 -54
- package/dist/redux/actions.js.map +1 -1
- package/dist/redux/index.js +6 -21
- package/dist/redux/index.js.map +1 -1
- package/dist/redux/reducers/index.js +2 -2
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/redux/reducers/sessionWrapper.js +1 -1
- package/dist/redux/reducers/sessionWrapper.js.map +1 -1
- package/dist/redux/selectors.d.ts +1 -0
- package/dist/redux/selectors.d.ts.map +1 -1
- package/dist/redux/selectors.js +22 -18
- package/dist/redux/selectors.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -54
- package/dist/MatPlotLibPlugin.d.ts +0 -5
- package/dist/MatPlotLibPlugin.d.ts.map +0 -1
- package/dist/MatPlotLibPlugin.js +0 -45
- package/dist/MatPlotLibPlugin.js.map +0 -1
- package/dist/events/MatPlotLibEvent.d.ts +0 -5
- package/dist/events/MatPlotLibEvent.d.ts.map +0 -1
- package/dist/events/MatPlotLibEvent.js +0 -12
- package/dist/events/MatPlotLibEvent.js.map +0 -1
- package/dist/panels/MatPlotLibPanel.d.ts +0 -22
- package/dist/panels/MatPlotLibPanel.d.ts.map +0 -1
- package/dist/panels/MatPlotLibPanel.js +0 -123
- package/dist/panels/MatPlotLibPanel.js.map +0 -1
|
@@ -1,29 +1,7 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
|
-
|
|
3
1
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
4
2
|
|
|
5
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
6
4
|
|
|
7
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
8
|
-
|
|
9
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
10
|
-
|
|
11
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
12
|
-
|
|
13
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
14
|
-
|
|
15
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
16
|
-
|
|
17
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
18
|
-
|
|
19
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
20
|
-
|
|
21
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
22
|
-
|
|
23
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
24
|
-
|
|
25
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
26
|
-
|
|
27
5
|
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; }
|
|
28
6
|
|
|
29
7
|
// Wrapper for the Notebook for use in a golden layout container
|
|
@@ -43,89 +21,110 @@ import classNames from 'classnames';
|
|
|
43
21
|
import debounce from 'lodash.debounce';
|
|
44
22
|
import Log from '@deephaven/log';
|
|
45
23
|
import { Pending, PromiseUtils } from '@deephaven/utils';
|
|
46
|
-
import { ConsoleEvent, NotebookEvent } from
|
|
47
|
-
import { getDashboardSessionWrapper } from
|
|
48
|
-
import Panel from
|
|
49
|
-
import SHORTCUTS from
|
|
24
|
+
import { ConsoleEvent, NotebookEvent } from "../events/index.js";
|
|
25
|
+
import { getDashboardSessionWrapper } from "../redux/index.js";
|
|
26
|
+
import Panel from "./Panel.js";
|
|
27
|
+
import SHORTCUTS from "./Shortcuts.js";
|
|
50
28
|
import "./NotebookPanel.css";
|
|
51
29
|
var log = Log.module('NotebookPanel');
|
|
52
30
|
var DEBOUNCE_PANEL_STATE_UPDATE = 400;
|
|
53
31
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
32
|
+
class NotebookPanel extends Component {
|
|
33
|
+
static handleError(error) {
|
|
34
|
+
if (PromiseUtils.isCanceled(error)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
log.error(error);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static languageFromFileName(fileName) {
|
|
42
|
+
var extension = FileUtils.getExtension(fileName).toLowerCase();
|
|
43
|
+
|
|
44
|
+
switch (extension) {
|
|
45
|
+
case 'py':
|
|
46
|
+
case 'python':
|
|
47
|
+
return 'python';
|
|
48
|
+
|
|
49
|
+
case 'groovy':
|
|
50
|
+
return 'groovy';
|
|
51
|
+
|
|
52
|
+
case 'scala':
|
|
53
|
+
return 'scala';
|
|
54
|
+
|
|
55
|
+
default:
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
constructor(props) {
|
|
61
|
+
super(props);
|
|
62
|
+
|
|
63
|
+
_defineProperty(this, "getOverflowActions", memoize(() => [{
|
|
64
|
+
title: 'Find',
|
|
65
|
+
icon: dhFileSearch,
|
|
66
|
+
action: this.handleFind,
|
|
67
|
+
group: ContextActions.groups.high,
|
|
68
|
+
shortcut: SHORTCUTS.NOTEBOOK.FIND,
|
|
69
|
+
order: 10
|
|
70
|
+
}]));
|
|
71
|
+
|
|
72
|
+
this.handleBlur = this.handleBlur.bind(this);
|
|
73
|
+
this.handleCloseCancel = this.handleCloseCancel.bind(this);
|
|
74
|
+
this.handleCloseDiscard = this.handleCloseDiscard.bind(this);
|
|
75
|
+
this.handleCloseSave = this.handleCloseSave.bind(this);
|
|
76
|
+
this.handleCopy = this.handleCopy.bind(this);
|
|
77
|
+
this.handleEditorChange = this.handleEditorChange.bind(this);
|
|
78
|
+
this.handleFind = this.handleFind.bind(this);
|
|
79
|
+
this.handleFocus = this.handleFocus.bind(this);
|
|
80
|
+
this.handleLoadSuccess = this.handleLoadSuccess.bind(this);
|
|
81
|
+
this.handleLoadError = this.handleLoadError.bind(this);
|
|
82
|
+
this.handlePanelTabClick = this.handlePanelTabClick.bind(this);
|
|
83
|
+
this.handleRenameFile = this.handleRenameFile.bind(this);
|
|
84
|
+
this.handleResize = this.handleResize.bind(this);
|
|
85
|
+
this.handleRunCommand = this.handleRunCommand.bind(this);
|
|
86
|
+
this.handleRunAll = this.handleRunAll.bind(this);
|
|
87
|
+
this.handleRunSelected = this.handleRunSelected.bind(this);
|
|
88
|
+
this.handleSave = this.handleSave.bind(this);
|
|
89
|
+
this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);
|
|
90
|
+
this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);
|
|
91
|
+
this.handleSaveError = this.handleSaveError.bind(this);
|
|
92
|
+
this.handleSaveSuccess = this.handleSaveSuccess.bind(this);
|
|
93
|
+
this.handleSessionOpened = this.handleSessionOpened.bind(this);
|
|
94
|
+
this.handleSessionClosed = this.handleSessionClosed.bind(this);
|
|
95
|
+
this.handleShow = this.handleShow.bind(this);
|
|
96
|
+
this.handleShowRename = this.handleShowRename.bind(this);
|
|
97
|
+
this.handleTab = this.handleTab.bind(this);
|
|
98
|
+
this.handleTabFocus = this.handleTabFocus.bind(this);
|
|
99
|
+
this.handleTabBlur = this.handleTabBlur.bind(this);
|
|
100
|
+
this.pending = new Pending();
|
|
101
|
+
this.debouncedSavePanelState = debounce(this.savePanelState.bind(this), DEBOUNCE_PANEL_STATE_UPDATE);
|
|
102
|
+
this.debouncedLoad = debounce(this.load.bind(this), DEBOUNCE_PANEL_STATE_UPDATE);
|
|
103
|
+
this.notebook = null;
|
|
104
|
+
this.tabTitleElement = null;
|
|
105
|
+
this.unsavedIndicator = null;
|
|
106
|
+
this.tabInitOnce = false;
|
|
107
|
+
this.shouldPromptClose = true;
|
|
108
|
+
var {
|
|
109
|
+
isDashboardActive,
|
|
110
|
+
session,
|
|
111
|
+
sessionLanguage,
|
|
112
|
+
panelState
|
|
113
|
+
} = props;
|
|
116
114
|
var settings = {
|
|
117
115
|
value: ''
|
|
118
116
|
};
|
|
119
117
|
var fileMetadata = null;
|
|
120
|
-
var
|
|
118
|
+
var {
|
|
119
|
+
isPreview
|
|
120
|
+
} = props;
|
|
121
121
|
|
|
122
122
|
if (panelState) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
settings = _panelState$settings === void 0 ? settings : _panelState$settings;
|
|
123
|
+
({
|
|
124
|
+
fileMetadata = fileMetadata,
|
|
125
|
+
isPreview = isPreview,
|
|
126
|
+
settings = settings
|
|
127
|
+
} = panelState);
|
|
129
128
|
} // Not showing the unsaved indicator for null file id and editor content === '',
|
|
130
129
|
// may need to implement some other indication that this notebook has never been saved
|
|
131
130
|
|
|
@@ -135,870 +134,875 @@ var NotebookPanel = /*#__PURE__*/function (_Component) {
|
|
|
135
134
|
|
|
136
135
|
var isUnsaved = hasFileId && settings.value != null || !hasFileId && settings.value;
|
|
137
136
|
var changeCount = isUnsaved ? 1 : 0;
|
|
138
|
-
|
|
137
|
+
this.state = {
|
|
139
138
|
error: null,
|
|
140
|
-
isDashboardActive
|
|
139
|
+
isDashboardActive,
|
|
141
140
|
isFocused: false,
|
|
142
141
|
isLoading: true,
|
|
143
142
|
isLoaded: false,
|
|
144
|
-
isPreview
|
|
143
|
+
isPreview,
|
|
145
144
|
savedChangeCount: 0,
|
|
146
|
-
changeCount
|
|
147
|
-
fileMetadata
|
|
148
|
-
settings
|
|
149
|
-
session
|
|
150
|
-
sessionLanguage
|
|
145
|
+
changeCount,
|
|
146
|
+
fileMetadata,
|
|
147
|
+
settings,
|
|
148
|
+
session,
|
|
149
|
+
sessionLanguage,
|
|
151
150
|
// eslint-disable-next-line react/no-unused-state
|
|
152
151
|
panelState: {
|
|
153
|
-
fileMetadata
|
|
154
|
-
settings
|
|
152
|
+
fileMetadata,
|
|
153
|
+
settings
|
|
155
154
|
},
|
|
156
155
|
showCloseModal: false,
|
|
157
156
|
showSaveAsModal: false,
|
|
158
157
|
scriptCode: ''
|
|
159
158
|
};
|
|
160
|
-
log.debug('constructor', props,
|
|
161
|
-
|
|
159
|
+
log.debug('constructor', props, this.state);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
componentDidMount() {
|
|
163
|
+
var {
|
|
164
|
+
glContainer,
|
|
165
|
+
glEventHub
|
|
166
|
+
} = this.props;
|
|
167
|
+
var {
|
|
168
|
+
tab
|
|
169
|
+
} = glContainer;
|
|
170
|
+
if (tab) this.initTab(tab);
|
|
171
|
+
this.initNotebookContent();
|
|
172
|
+
glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);
|
|
173
|
+
glContainer.on('tabClicked', this.handlePanelTabClick);
|
|
162
174
|
}
|
|
163
175
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
this.initNotebookContent();
|
|
172
|
-
glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);
|
|
176
|
+
componentDidUpdate(prevProps, prevState) {
|
|
177
|
+
var {
|
|
178
|
+
isPreview
|
|
179
|
+
} = this.state;
|
|
180
|
+
|
|
181
|
+
if (isPreview !== prevState.isPreview) {
|
|
182
|
+
this.setPreviewStatus(isPreview);
|
|
173
183
|
}
|
|
174
|
-
}
|
|
175
|
-
key: "componentDidUpdate",
|
|
176
|
-
value: function componentDidUpdate(prevProps, prevState) {
|
|
177
|
-
var isPreview = this.state.isPreview;
|
|
184
|
+
}
|
|
178
185
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
186
|
+
componentWillUnmount() {
|
|
187
|
+
this.debouncedSavePanelState.flush();
|
|
188
|
+
this.pending.cancel();
|
|
189
|
+
var {
|
|
190
|
+
glContainer,
|
|
191
|
+
glEventHub
|
|
192
|
+
} = this.props;
|
|
193
|
+
var {
|
|
194
|
+
fileMetadata,
|
|
195
|
+
isPreview
|
|
196
|
+
} = this.state;
|
|
197
|
+
glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);
|
|
198
|
+
glContainer.off('tabClicked', this.handlePanelTabClick);
|
|
199
|
+
glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);
|
|
200
|
+
} // Called by TabEvent. Happens once when created, but also each time its moved.
|
|
201
|
+
// when moved, need to re-init the unsaved indicators on title elements
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
initTab(tab) {
|
|
205
|
+
if (!this.tabInitOnce) {
|
|
206
|
+
this.tabInitOnce = true;
|
|
207
|
+
this.initTabCloseOverride();
|
|
182
208
|
}
|
|
183
|
-
}, {
|
|
184
|
-
key: "componentWillUnmount",
|
|
185
|
-
value: function componentWillUnmount() {
|
|
186
|
-
this.debouncedSavePanelState.flush();
|
|
187
|
-
this.pending.cancel();
|
|
188
|
-
var glEventHub = this.props.glEventHub;
|
|
189
|
-
var _this$state = this.state,
|
|
190
|
-
fileMetadata = _this$state.fileMetadata,
|
|
191
|
-
isPreview = _this$state.isPreview;
|
|
192
|
-
glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);
|
|
193
|
-
glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);
|
|
194
|
-
} // Called by TabEvent. Happens once when created, but also each time its moved.
|
|
195
|
-
// when moved, need to re-init the unsaved indicators on title elements
|
|
196
|
-
|
|
197
|
-
}, {
|
|
198
|
-
key: "initTab",
|
|
199
|
-
value: function initTab(tab) {
|
|
200
|
-
if (!this.tabInitOnce) {
|
|
201
|
-
this.tabInitOnce = true;
|
|
202
|
-
this.initTabCloseOverride();
|
|
203
|
-
}
|
|
204
209
|
|
|
205
|
-
|
|
206
|
-
|
|
210
|
+
this.initTabClasses(tab);
|
|
211
|
+
} // override glContainer.close() with a custom closure that checks if needs saving
|
|
207
212
|
|
|
208
|
-
}, {
|
|
209
|
-
key: "initTabCloseOverride",
|
|
210
|
-
value: function initTabCloseOverride() {
|
|
211
|
-
var _this2 = this;
|
|
212
213
|
|
|
213
|
-
|
|
214
|
-
|
|
214
|
+
initTabCloseOverride() {
|
|
215
|
+
var {
|
|
216
|
+
glContainer
|
|
217
|
+
} = this.props;
|
|
218
|
+
var close = glContainer.close.bind(glContainer);
|
|
215
219
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
+
glContainer.close = () => {
|
|
221
|
+
var {
|
|
222
|
+
changeCount,
|
|
223
|
+
savedChangeCount
|
|
224
|
+
} = this.state;
|
|
220
225
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
}, {
|
|
231
|
-
key: "initTabClasses",
|
|
232
|
-
value: function initTabClasses(tab) {
|
|
233
|
-
var tabElement = tab.element.get(0);
|
|
234
|
-
var titleElement = tabElement.querySelector('.lm_title');
|
|
235
|
-
this.tabTitleElement = titleElement;
|
|
236
|
-
titleElement.classList.add('notebook-title');
|
|
237
|
-
this.setPreviewStatus();
|
|
238
|
-
}
|
|
239
|
-
}, {
|
|
240
|
-
key: "getNotebookValue",
|
|
241
|
-
value: function getNotebookValue() {
|
|
242
|
-
var _this$state2 = this.state,
|
|
243
|
-
changeCount = _this$state2.changeCount,
|
|
244
|
-
savedChangeCount = _this$state2.savedChangeCount,
|
|
245
|
-
settings = _this$state2.settings;
|
|
246
|
-
var value = settings.value;
|
|
247
|
-
|
|
248
|
-
if (changeCount !== savedChangeCount && this.notebook) {
|
|
249
|
-
var notebookValue = this.notebook.getValue();
|
|
250
|
-
return notebookValue != null ? notebookValue : value;
|
|
226
|
+
if (changeCount !== savedChangeCount && this.shouldPromptClose) {
|
|
227
|
+
this.setState({
|
|
228
|
+
showCloseModal: true
|
|
229
|
+
});
|
|
230
|
+
} else {
|
|
231
|
+
close();
|
|
251
232
|
}
|
|
233
|
+
};
|
|
234
|
+
}
|
|
252
235
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
var _this$state3 = this.state,
|
|
261
|
-
fileMetadata = _this$state3.fileMetadata,
|
|
262
|
-
settings = _this$state3.settings,
|
|
263
|
-
isPreview = _this$state3.isPreview;
|
|
264
|
-
|
|
265
|
-
if (fileMetadata && fileMetadata.id) {
|
|
266
|
-
log.debug('Init content from file');
|
|
267
|
-
this.registerFileMetadata(fileMetadata, isPreview);
|
|
268
|
-
this.load();
|
|
269
|
-
return;
|
|
270
|
-
}
|
|
236
|
+
initTabClasses(tab) {
|
|
237
|
+
var tabElement = tab.element.get(0);
|
|
238
|
+
var titleElement = tabElement.querySelector('.lm_title');
|
|
239
|
+
this.tabTitleElement = titleElement;
|
|
240
|
+
titleElement.classList.add('notebook-title');
|
|
241
|
+
this.setPreviewStatus();
|
|
242
|
+
}
|
|
271
243
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
244
|
+
getNotebookValue() {
|
|
245
|
+
var {
|
|
246
|
+
changeCount,
|
|
247
|
+
savedChangeCount,
|
|
248
|
+
settings
|
|
249
|
+
} = this.state;
|
|
250
|
+
var {
|
|
251
|
+
value
|
|
252
|
+
} = settings;
|
|
253
|
+
|
|
254
|
+
if (changeCount !== savedChangeCount && this.notebook) {
|
|
255
|
+
var notebookValue = this.notebook.getValue();
|
|
256
|
+
return notebookValue != null ? notebookValue : value;
|
|
257
|
+
}
|
|
277
258
|
|
|
259
|
+
return value;
|
|
260
|
+
}
|
|
278
261
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
value: function registerFileMetadata(fileMetadata, isPreview) {
|
|
294
|
-
var _this$props2 = this.props,
|
|
295
|
-
glEventHub = _this$props2.glEventHub,
|
|
296
|
-
metadata = _this$props2.metadata;
|
|
297
|
-
var tabId = metadata.id;
|
|
298
|
-
glEventHub.emit(NotebookEvent.REGISTER_FILE, tabId, fileMetadata, isPreview);
|
|
299
|
-
}
|
|
300
|
-
}, {
|
|
301
|
-
key: "renameTab",
|
|
302
|
-
value: function renameTab(id, title) {
|
|
303
|
-
var glEventHub = this.props.glEventHub;
|
|
304
|
-
glEventHub.emit(NotebookEvent.RENAME, id, title);
|
|
262
|
+
initNotebookContent() {
|
|
263
|
+
// Init from file,
|
|
264
|
+
// fallback to content from settings for unsaved notebook
|
|
265
|
+
var {
|
|
266
|
+
fileMetadata,
|
|
267
|
+
settings,
|
|
268
|
+
isPreview
|
|
269
|
+
} = this.state;
|
|
270
|
+
|
|
271
|
+
if (fileMetadata && fileMetadata.id) {
|
|
272
|
+
log.debug('Init content from file');
|
|
273
|
+
this.registerFileMetadata(fileMetadata, isPreview);
|
|
274
|
+
this.load();
|
|
275
|
+
return;
|
|
305
276
|
}
|
|
306
|
-
}, {
|
|
307
|
-
key: "load",
|
|
308
|
-
value: function load() {
|
|
309
|
-
var _this3 = this;
|
|
310
|
-
|
|
311
|
-
var _this$state4 = this.state,
|
|
312
|
-
fileMetadata = _this$state4.fileMetadata,
|
|
313
|
-
settings = _this$state4.settings;
|
|
314
|
-
var id = fileMetadata.id;
|
|
315
|
-
var fileStorage = this.props.fileStorage;
|
|
316
|
-
this.pending.add(fileStorage.loadFile(id)).then(function (loadedFile) {
|
|
317
|
-
log.debug('Loaded file', loadedFile);
|
|
318
|
-
var itemName = loadedFile.filename;
|
|
319
|
-
var prevItemName = _this3.state.itemName;
|
|
320
|
-
|
|
321
|
-
if (itemName !== prevItemName) {
|
|
322
|
-
var metadata = _this3.props.metadata;
|
|
323
|
-
var tabId = metadata.id;
|
|
324
|
-
|
|
325
|
-
_this3.renameTab(tabId, FileUtils.getBaseName(itemName));
|
|
326
|
-
}
|
|
327
277
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
278
|
+
if (settings.value != null) {
|
|
279
|
+
log.debug('Use content passed in the settings prop');
|
|
280
|
+
this.handleLoadSuccess();
|
|
281
|
+
return;
|
|
282
|
+
} // No settings, no metadata
|
|
331
283
|
|
|
332
|
-
if (settings.value == null) {
|
|
333
|
-
updatedSettings.value = loadedFile.content;
|
|
334
|
-
}
|
|
335
284
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
id: itemName,
|
|
339
|
-
itemName: itemName
|
|
340
|
-
},
|
|
341
|
-
settings: updatedSettings
|
|
342
|
-
});
|
|
285
|
+
this.handleLoadError(new Error('Missing file metadata'));
|
|
286
|
+
}
|
|
343
287
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
288
|
+
closeFileTabById(id) {
|
|
289
|
+
var {
|
|
290
|
+
glEventHub
|
|
291
|
+
} = this.props;
|
|
292
|
+
glEventHub.emit(NotebookEvent.CLOSE_FILE, {
|
|
293
|
+
id
|
|
294
|
+
});
|
|
295
|
+
} // Associate file id with the current tab
|
|
296
|
+
// so the next time the file is opened this tab can be focused instead of opening a new tab
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
registerFileMetadata(fileMetadata, isPreview) {
|
|
300
|
+
var {
|
|
301
|
+
glEventHub,
|
|
302
|
+
metadata
|
|
303
|
+
} = this.props;
|
|
304
|
+
var {
|
|
305
|
+
id: tabId
|
|
306
|
+
} = metadata;
|
|
307
|
+
glEventHub.emit(NotebookEvent.REGISTER_FILE, tabId, fileMetadata, isPreview);
|
|
308
|
+
}
|
|
362
309
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
this.
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
if (!this.tabTitleElement) {
|
|
399
|
-
return;
|
|
310
|
+
renameTab(id, title) {
|
|
311
|
+
var {
|
|
312
|
+
glEventHub
|
|
313
|
+
} = this.props;
|
|
314
|
+
glEventHub.emit(NotebookEvent.RENAME, id, title);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
load() {
|
|
318
|
+
var {
|
|
319
|
+
fileMetadata,
|
|
320
|
+
settings
|
|
321
|
+
} = this.state;
|
|
322
|
+
var {
|
|
323
|
+
id
|
|
324
|
+
} = fileMetadata;
|
|
325
|
+
var {
|
|
326
|
+
fileStorage
|
|
327
|
+
} = this.props;
|
|
328
|
+
this.pending.add(fileStorage.loadFile(id)).then(loadedFile => {
|
|
329
|
+
log.debug('Loaded file', loadedFile);
|
|
330
|
+
var {
|
|
331
|
+
filename: itemName
|
|
332
|
+
} = loadedFile;
|
|
333
|
+
var {
|
|
334
|
+
itemName: prevItemName
|
|
335
|
+
} = this.state;
|
|
336
|
+
|
|
337
|
+
if (itemName !== prevItemName) {
|
|
338
|
+
var {
|
|
339
|
+
metadata
|
|
340
|
+
} = this.props;
|
|
341
|
+
var {
|
|
342
|
+
id: tabId
|
|
343
|
+
} = metadata;
|
|
344
|
+
this.renameTab(tabId, FileUtils.getBaseName(itemName));
|
|
400
345
|
}
|
|
401
346
|
|
|
402
|
-
var
|
|
403
|
-
|
|
347
|
+
var updatedSettings = _objectSpread(_objectSpread({}, settings), {}, {
|
|
348
|
+
language: NotebookPanel.languageFromFileName(itemName)
|
|
349
|
+
});
|
|
404
350
|
|
|
405
|
-
if (
|
|
406
|
-
|
|
407
|
-
} else {
|
|
408
|
-
this.tabTitleElement.classList.remove('is-preview');
|
|
351
|
+
if (settings.value == null) {
|
|
352
|
+
updatedSettings.value = loadedFile.content;
|
|
409
353
|
}
|
|
410
|
-
}
|
|
411
|
-
}, {
|
|
412
|
-
key: "savePanelState",
|
|
413
|
-
value: function savePanelState() {
|
|
414
|
-
var _this4 = this;
|
|
415
354
|
|
|
416
|
-
this.setState(
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
355
|
+
this.setState({
|
|
356
|
+
fileMetadata: {
|
|
357
|
+
id: itemName,
|
|
358
|
+
itemName
|
|
359
|
+
},
|
|
360
|
+
settings: updatedSettings
|
|
361
|
+
});
|
|
362
|
+
this.debouncedSavePanelState();
|
|
363
|
+
}).then(this.handleLoadSuccess).catch(this.handleLoadError);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Attempts to save the notebook.
|
|
367
|
+
* @returns {boolean} Returns true if save has begun, false if user needed to be prompted
|
|
368
|
+
*/
|
|
422
369
|
|
|
423
|
-
var value = _this4.getNotebookValue(); // notebooks with no unsaved changes have value === null in dehydrated state
|
|
424
|
-
// content will be loaded from file when hydrating
|
|
425
370
|
|
|
371
|
+
save() {
|
|
372
|
+
var {
|
|
373
|
+
fileMetadata
|
|
374
|
+
} = this.state;
|
|
426
375
|
|
|
427
|
-
|
|
376
|
+
if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {
|
|
377
|
+
var content = this.getNotebookValue();
|
|
378
|
+
this.saveContent(fileMetadata.itemName, content);
|
|
379
|
+
return true;
|
|
380
|
+
}
|
|
428
381
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
382
|
+
this.setState({
|
|
383
|
+
showSaveAsModal: true
|
|
384
|
+
});
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Update existing file content
|
|
389
|
+
* @param {string} filename The name of the file
|
|
390
|
+
* @param {string} content New file content
|
|
391
|
+
*/
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
saveContent(filename, content) {
|
|
395
|
+
log.debug('saveContent', filename, content);
|
|
396
|
+
this.updateSavedChangeCount();
|
|
397
|
+
var {
|
|
398
|
+
fileStorage
|
|
399
|
+
} = this.props;
|
|
400
|
+
this.pending.add(fileStorage.saveFile({
|
|
401
|
+
filename,
|
|
402
|
+
content
|
|
403
|
+
})).then(this.handleSaveSuccess).catch(this.handleSaveError);
|
|
404
|
+
}
|
|
432
405
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
406
|
+
updateSavedChangeCount() {
|
|
407
|
+
this.setState((_ref) => {
|
|
408
|
+
var {
|
|
409
|
+
changeCount
|
|
410
|
+
} = _ref;
|
|
411
|
+
return {
|
|
412
|
+
savedChangeCount: changeCount
|
|
413
|
+
};
|
|
414
|
+
});
|
|
415
|
+
}
|
|
436
416
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
isPreview: isPreview
|
|
441
|
-
};
|
|
442
|
-
log.debug('Saving panel state', panelState);
|
|
443
|
-
return {
|
|
444
|
-
settings: settings,
|
|
445
|
-
// eslint-disable-next-line react/no-unused-state
|
|
446
|
-
panelState: panelState
|
|
447
|
-
};
|
|
448
|
-
});
|
|
417
|
+
setPreviewStatus() {
|
|
418
|
+
if (!this.tabTitleElement) {
|
|
419
|
+
return;
|
|
449
420
|
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
421
|
+
|
|
422
|
+
var {
|
|
423
|
+
isPreview
|
|
424
|
+
} = this.state;
|
|
425
|
+
log.debug('setPreviewStatus', this.tabTitleElement, isPreview);
|
|
426
|
+
|
|
427
|
+
if (isPreview) {
|
|
428
|
+
this.tabTitleElement.classList.add('is-preview');
|
|
429
|
+
} else {
|
|
430
|
+
this.tabTitleElement.classList.remove('is-preview');
|
|
459
431
|
}
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
savePanelState() {
|
|
435
|
+
this.setState(state => {
|
|
436
|
+
var {
|
|
437
|
+
changeCount,
|
|
438
|
+
savedChangeCount,
|
|
439
|
+
fileMetadata,
|
|
440
|
+
isPreview,
|
|
441
|
+
settings: initialSettings
|
|
442
|
+
} = state;
|
|
443
|
+
var value = this.getNotebookValue(); // notebooks with no unsaved changes have value === null in dehydrated state
|
|
444
|
+
// content will be loaded from file when hydrating
|
|
445
|
+
|
|
446
|
+
var dehydratedValue = changeCount !== savedChangeCount ? value : null;
|
|
447
|
+
|
|
448
|
+
var settings = _objectSpread(_objectSpread({}, initialSettings), {}, {
|
|
449
|
+
value
|
|
466
450
|
});
|
|
467
451
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
glContainer.close();
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
}, {
|
|
474
|
-
key: "handleCloseCancel",
|
|
475
|
-
value: function handleCloseCancel() {
|
|
476
|
-
this.shouldPromptClose = true;
|
|
477
|
-
this.setState({
|
|
478
|
-
showCloseModal: false
|
|
452
|
+
var dehydratedSettings = _objectSpread(_objectSpread({}, initialSettings), {}, {
|
|
453
|
+
value: dehydratedValue
|
|
479
454
|
});
|
|
480
|
-
}
|
|
481
|
-
}, {
|
|
482
|
-
key: "handleCopy",
|
|
483
|
-
value: function handleCopy() {
|
|
484
|
-
var _this$state5 = this.state,
|
|
485
|
-
fileMetadata = _this$state5.fileMetadata,
|
|
486
|
-
settings = _this$state5.settings;
|
|
487
|
-
var content = this.getNotebookValue();
|
|
488
|
-
var language = settings.language;
|
|
489
|
-
var itemName = fileMetadata.itemName;
|
|
490
|
-
var copyName = FileUtils.getCopyFileName(itemName);
|
|
491
|
-
log.debug('handleCopy', fileMetadata, itemName, copyName);
|
|
492
|
-
this.createNotebook(copyName, language, content);
|
|
493
|
-
}
|
|
494
|
-
}, {
|
|
495
|
-
key: "handleEditorChange",
|
|
496
|
-
value: function handleEditorChange(e) {
|
|
497
|
-
var _this5 = this;
|
|
498
455
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
456
|
+
var panelState = {
|
|
457
|
+
settings: dehydratedSettings,
|
|
458
|
+
fileMetadata,
|
|
459
|
+
isPreview
|
|
460
|
+
};
|
|
461
|
+
log.debug('Saving panel state', panelState);
|
|
462
|
+
return {
|
|
463
|
+
settings,
|
|
464
|
+
// eslint-disable-next-line react/no-unused-state
|
|
465
|
+
panelState
|
|
466
|
+
};
|
|
467
|
+
});
|
|
468
|
+
}
|
|
502
469
|
|
|
503
|
-
|
|
504
|
-
|
|
470
|
+
handleCloseDiscard() {
|
|
471
|
+
this.shouldPromptClose = false;
|
|
472
|
+
this.setState({
|
|
473
|
+
showCloseModal: false
|
|
474
|
+
});
|
|
475
|
+
var {
|
|
476
|
+
glContainer
|
|
477
|
+
} = this.props;
|
|
478
|
+
glContainer.close();
|
|
479
|
+
}
|
|
505
480
|
|
|
506
|
-
|
|
481
|
+
handleCloseSave() {
|
|
482
|
+
this.shouldPromptClose = false;
|
|
483
|
+
this.setState({
|
|
484
|
+
showCloseModal: false
|
|
485
|
+
});
|
|
507
486
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
487
|
+
if (this.save()) {
|
|
488
|
+
var {
|
|
489
|
+
glContainer
|
|
490
|
+
} = this.props;
|
|
491
|
+
glContainer.close();
|
|
492
|
+
}
|
|
493
|
+
}
|
|
512
494
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
isRedoing = e.isRedoing;
|
|
520
|
-
|
|
521
|
-
if (isUndoing) {
|
|
522
|
-
// Note that it's possible to undo past where the user last saved, if they save and then undo for example
|
|
523
|
-
return {
|
|
524
|
-
changeCount: changeCount - 1
|
|
525
|
-
};
|
|
526
|
-
}
|
|
495
|
+
handleCloseCancel() {
|
|
496
|
+
this.shouldPromptClose = true;
|
|
497
|
+
this.setState({
|
|
498
|
+
showCloseModal: false
|
|
499
|
+
});
|
|
500
|
+
}
|
|
527
501
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
502
|
+
handleCopy() {
|
|
503
|
+
var {
|
|
504
|
+
fileMetadata,
|
|
505
|
+
settings
|
|
506
|
+
} = this.state;
|
|
507
|
+
var content = this.getNotebookValue();
|
|
508
|
+
var {
|
|
509
|
+
language
|
|
510
|
+
} = settings;
|
|
511
|
+
var {
|
|
512
|
+
itemName
|
|
513
|
+
} = fileMetadata;
|
|
514
|
+
var copyName = FileUtils.getCopyFileName(itemName);
|
|
515
|
+
log.debug('handleCopy', fileMetadata, itemName, copyName);
|
|
516
|
+
this.createNotebook(copyName, language, content);
|
|
517
|
+
}
|
|
537
518
|
|
|
519
|
+
handleEditorChange(e) {
|
|
520
|
+
log.debug2('handleEditorChanged', e);
|
|
521
|
+
this.setState((_ref2) => {
|
|
522
|
+
var {
|
|
523
|
+
isPreview
|
|
524
|
+
} = _ref2;
|
|
525
|
+
|
|
526
|
+
if (isPreview) {
|
|
527
|
+
var {
|
|
528
|
+
fileMetadata
|
|
529
|
+
} = this.state;
|
|
530
|
+
this.registerFileMetadata(fileMetadata, false);
|
|
538
531
|
return {
|
|
539
|
-
|
|
532
|
+
isPreview: false
|
|
540
533
|
};
|
|
541
|
-
});
|
|
542
|
-
this.debouncedSavePanelState();
|
|
543
|
-
}
|
|
544
|
-
}, {
|
|
545
|
-
key: "handleFind",
|
|
546
|
-
value: function handleFind() {
|
|
547
|
-
if (this.notebook) {
|
|
548
|
-
this.notebook.toggleFind();
|
|
549
534
|
}
|
|
550
|
-
}
|
|
551
|
-
}, {
|
|
552
|
-
key: "handleBlur",
|
|
553
|
-
value: function handleBlur() {
|
|
554
|
-
log.debug('handleBlur');
|
|
555
|
-
this.setState({
|
|
556
|
-
isFocused: false
|
|
557
|
-
});
|
|
558
|
-
}
|
|
559
|
-
}, {
|
|
560
|
-
key: "handleFocus",
|
|
561
|
-
value: function handleFocus() {
|
|
562
|
-
log.debug('handleFocus');
|
|
563
|
-
this.setState({
|
|
564
|
-
isFocused: true
|
|
565
|
-
});
|
|
566
|
-
}
|
|
567
|
-
}, {
|
|
568
|
-
key: "handleLoadSuccess",
|
|
569
|
-
value: function handleLoadSuccess() {
|
|
570
|
-
this.setState({
|
|
571
|
-
error: null,
|
|
572
|
-
isLoaded: true,
|
|
573
|
-
isLoading: false
|
|
574
|
-
});
|
|
575
|
-
}
|
|
576
|
-
}, {
|
|
577
|
-
key: "handleLoadError",
|
|
578
|
-
value: function handleLoadError(errorParam) {
|
|
579
|
-
var error = errorParam;
|
|
580
535
|
|
|
581
|
-
|
|
582
|
-
|
|
536
|
+
return null;
|
|
537
|
+
});
|
|
538
|
+
this.setState((_ref3) => {
|
|
539
|
+
var {
|
|
540
|
+
changeCount,
|
|
541
|
+
savedChangeCount
|
|
542
|
+
} = _ref3;
|
|
543
|
+
var {
|
|
544
|
+
isUndoing,
|
|
545
|
+
isRedoing
|
|
546
|
+
} = e;
|
|
547
|
+
|
|
548
|
+
if (isUndoing) {
|
|
549
|
+
// Note that it's possible to undo past where the user last saved, if they save and then undo for example
|
|
550
|
+
return {
|
|
551
|
+
changeCount: changeCount - 1
|
|
552
|
+
};
|
|
583
553
|
}
|
|
584
554
|
|
|
585
|
-
if (
|
|
586
|
-
|
|
555
|
+
if (!isRedoing && changeCount < savedChangeCount) {
|
|
556
|
+
// We made another change after undoing some changes from the previous save
|
|
557
|
+
// Just reset the saved counter to zero and increase the unchanged saves
|
|
558
|
+
// It'll be set correctly on the next save
|
|
559
|
+
return {
|
|
560
|
+
changeCount: changeCount + 1,
|
|
561
|
+
savedChangeCount: 0
|
|
562
|
+
};
|
|
587
563
|
}
|
|
588
564
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
error: error,
|
|
592
|
-
isLoading: false
|
|
593
|
-
});
|
|
594
|
-
}
|
|
595
|
-
}, {
|
|
596
|
-
key: "handleSave",
|
|
597
|
-
value: function handleSave() {
|
|
598
|
-
log.debug('handleSave');
|
|
599
|
-
this.save();
|
|
600
|
-
}
|
|
601
|
-
}, {
|
|
602
|
-
key: "handleSaveSuccess",
|
|
603
|
-
value: function handleSaveSuccess(file) {
|
|
604
|
-
var fileStorage = this.props.fileStorage;
|
|
605
|
-
var fileMetadata = {
|
|
606
|
-
id: file.filename,
|
|
607
|
-
itemName: file.filename
|
|
565
|
+
return {
|
|
566
|
+
changeCount: changeCount + 1
|
|
608
567
|
};
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
568
|
+
});
|
|
569
|
+
this.debouncedSavePanelState();
|
|
570
|
+
}
|
|
612
571
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
572
|
+
handleFind() {
|
|
573
|
+
if (this.notebook) {
|
|
574
|
+
this.notebook.toggleFind();
|
|
575
|
+
}
|
|
576
|
+
}
|
|
616
577
|
|
|
617
|
-
|
|
578
|
+
handleBlur() {
|
|
579
|
+
log.debug('handleBlur');
|
|
580
|
+
this.setState({
|
|
581
|
+
isFocused: false
|
|
582
|
+
});
|
|
583
|
+
}
|
|
618
584
|
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
585
|
+
handleFocus() {
|
|
586
|
+
log.debug('handleFocus');
|
|
587
|
+
this.setState({
|
|
588
|
+
isFocused: true
|
|
589
|
+
});
|
|
590
|
+
}
|
|
623
591
|
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
this.registerFileMetadata(fileMetadata, false);
|
|
632
|
-
}
|
|
633
|
-
}, {
|
|
634
|
-
key: "handleSaveError",
|
|
635
|
-
value: function handleSaveError(error) {
|
|
636
|
-
if (PromiseUtils.isCanceled(error)) {
|
|
637
|
-
return;
|
|
638
|
-
} // There was an error saving, just reset the savedChangeCount
|
|
639
|
-
// It's possible if they undo changes they'll be back at the spot where it was last saved successfully,
|
|
640
|
-
// But we may as well continue showing the error until they actually save again
|
|
592
|
+
handleLoadSuccess() {
|
|
593
|
+
this.setState({
|
|
594
|
+
error: null,
|
|
595
|
+
isLoaded: true,
|
|
596
|
+
isLoading: false
|
|
597
|
+
});
|
|
598
|
+
}
|
|
641
599
|
|
|
600
|
+
handleLoadError(errorParam) {
|
|
601
|
+
var error = errorParam;
|
|
642
602
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
});
|
|
646
|
-
log.error(error);
|
|
603
|
+
if (PromiseUtils.isCanceled(error)) {
|
|
604
|
+
return;
|
|
647
605
|
}
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
this.setState({
|
|
652
|
-
showSaveAsModal: false
|
|
653
|
-
});
|
|
606
|
+
|
|
607
|
+
if (PromiseUtils.isTimedOut(error)) {
|
|
608
|
+
error = new Error('File not found.');
|
|
654
609
|
}
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
610
|
+
|
|
611
|
+
log.error(error);
|
|
612
|
+
this.setState({
|
|
613
|
+
error,
|
|
614
|
+
isLoading: false
|
|
615
|
+
});
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
handleSave() {
|
|
619
|
+
log.debug('handleSave');
|
|
620
|
+
this.save();
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
handleSaveSuccess(file) {
|
|
624
|
+
var {
|
|
625
|
+
fileStorage
|
|
626
|
+
} = this.props;
|
|
627
|
+
var fileMetadata = {
|
|
628
|
+
id: file.filename,
|
|
629
|
+
itemName: file.filename
|
|
630
|
+
};
|
|
631
|
+
var language = NotebookPanel.languageFromFileName(file.filename);
|
|
632
|
+
this.setState(state => {
|
|
633
|
+
var {
|
|
634
|
+
fileMetadata: oldMetadata
|
|
635
|
+
} = state;
|
|
636
|
+
|
|
637
|
+
var settings = _objectSpread(_objectSpread({}, state.settings), {}, {
|
|
638
|
+
language
|
|
664
639
|
});
|
|
665
640
|
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
641
|
+
log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);
|
|
642
|
+
|
|
643
|
+
if (FileUtils.hasPath(oldMetadata.itemName) && oldMetadata.itemName !== fileMetadata.itemName) {
|
|
644
|
+
log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);
|
|
645
|
+
fileStorage.deleteFile(oldMetadata.itemName).catch(NotebookPanel.handleError);
|
|
670
646
|
}
|
|
671
647
|
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
648
|
+
return {
|
|
649
|
+
fileMetadata,
|
|
650
|
+
settings,
|
|
651
|
+
isPreview: false
|
|
652
|
+
};
|
|
653
|
+
});
|
|
654
|
+
this.debouncedSavePanelState();
|
|
655
|
+
this.registerFileMetadata(fileMetadata, false);
|
|
656
|
+
}
|
|
678
657
|
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
});
|
|
686
|
-
this.debouncedSavePanelState();
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
}, {
|
|
690
|
-
key: "handleResize",
|
|
691
|
-
value: function handleResize() {
|
|
692
|
-
if (this.notebook) {
|
|
693
|
-
this.notebook.updateDimensions();
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
}, {
|
|
697
|
-
key: "handleRunCommand",
|
|
698
|
-
value: function handleRunCommand(command) {
|
|
699
|
-
this.runCommand(command);
|
|
700
|
-
}
|
|
701
|
-
}, {
|
|
702
|
-
key: "handleRunAll",
|
|
703
|
-
value: function handleRunAll() {
|
|
704
|
-
if (!this.notebook) {
|
|
705
|
-
log.error('Editor is not initialized.');
|
|
706
|
-
return;
|
|
707
|
-
}
|
|
658
|
+
handleSaveError(error) {
|
|
659
|
+
if (PromiseUtils.isCanceled(error)) {
|
|
660
|
+
return;
|
|
661
|
+
} // There was an error saving, just reset the savedChangeCount
|
|
662
|
+
// It's possible if they undo changes they'll be back at the spot where it was last saved successfully,
|
|
663
|
+
// But we may as well continue showing the error until they actually save again
|
|
708
664
|
|
|
709
|
-
this.runCommand(this.notebook.getValue());
|
|
710
|
-
}
|
|
711
|
-
}, {
|
|
712
|
-
key: "handleRunSelected",
|
|
713
|
-
value: function handleRunSelected() {
|
|
714
|
-
if (!this.notebook) {
|
|
715
|
-
log.error('Editor is not initialized.');
|
|
716
|
-
return;
|
|
717
|
-
}
|
|
718
665
|
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
666
|
+
this.setState({
|
|
667
|
+
savedChangeCount: 0
|
|
668
|
+
});
|
|
669
|
+
log.error(error);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
handleSaveAsCancel() {
|
|
673
|
+
this.setState({
|
|
674
|
+
showSaveAsModal: false
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
handleSaveAsSubmit(name) {
|
|
679
|
+
log.debug('handleSaveAsSubmit', name);
|
|
680
|
+
var {
|
|
681
|
+
fileMetadata
|
|
682
|
+
} = this.state;
|
|
683
|
+
var {
|
|
684
|
+
itemName: prevItemName
|
|
685
|
+
} = fileMetadata;
|
|
686
|
+
var content = this.getNotebookValue();
|
|
687
|
+
this.setState({
|
|
688
|
+
showSaveAsModal: false
|
|
689
|
+
});
|
|
690
|
+
|
|
691
|
+
if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {
|
|
692
|
+
var {
|
|
693
|
+
metadata
|
|
694
|
+
} = this.props;
|
|
695
|
+
var {
|
|
696
|
+
id: tabId
|
|
697
|
+
} = metadata;
|
|
698
|
+
this.renameTab(tabId, FileUtils.getBaseName(name));
|
|
737
699
|
}
|
|
738
|
-
}, {
|
|
739
|
-
key: "handleShow",
|
|
740
|
-
value: function handleShow() {
|
|
741
|
-
var _this6 = this;
|
|
742
700
|
|
|
743
|
-
|
|
701
|
+
this.saveContent(name, content);
|
|
702
|
+
}
|
|
744
703
|
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
704
|
+
handleRenameFile(oldName, newName) {
|
|
705
|
+
var {
|
|
706
|
+
fileMetadata
|
|
707
|
+
} = this.state;
|
|
748
708
|
|
|
749
|
-
|
|
750
|
-
requestAnimationFrame(function () {
|
|
751
|
-
if (_this6.notebook) {
|
|
752
|
-
_this6.notebook.focus();
|
|
753
|
-
}
|
|
754
|
-
});
|
|
755
|
-
}
|
|
756
|
-
}, {
|
|
757
|
-
key: "handleShowRename",
|
|
758
|
-
value: function handleShowRename() {
|
|
709
|
+
if (fileMetadata.id === oldName) {
|
|
759
710
|
this.setState({
|
|
760
|
-
|
|
711
|
+
fileMetadata: {
|
|
712
|
+
id: newName,
|
|
713
|
+
itemName: newName
|
|
714
|
+
}
|
|
761
715
|
});
|
|
716
|
+
this.debouncedSavePanelState();
|
|
762
717
|
}
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
this.
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
handleResize() {
|
|
721
|
+
if (this.notebook) {
|
|
722
|
+
this.notebook.updateDimensions();
|
|
768
723
|
}
|
|
769
|
-
}
|
|
770
|
-
key: "handleTabFocus",
|
|
771
|
-
value: function handleTabFocus() {
|
|
772
|
-
log.debug('handleTabFocus');
|
|
773
|
-
var glContainer = this.props.glContainer;
|
|
774
|
-
this.setState({
|
|
775
|
-
isDashboardActive: true
|
|
776
|
-
});
|
|
724
|
+
}
|
|
777
725
|
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
726
|
+
handleRunCommand(command) {
|
|
727
|
+
this.runCommand(command);
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
handleRunAll() {
|
|
731
|
+
if (!this.notebook) {
|
|
732
|
+
log.error('Editor is not initialized.');
|
|
733
|
+
return;
|
|
782
734
|
}
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
735
|
+
|
|
736
|
+
this.runCommand(this.notebook.getValue());
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
handleRunSelected() {
|
|
740
|
+
if (!this.notebook) {
|
|
741
|
+
log.error('Editor is not initialized.');
|
|
742
|
+
return;
|
|
790
743
|
}
|
|
791
|
-
}, {
|
|
792
|
-
key: "createNotebook",
|
|
793
|
-
value: function createNotebook(itemName, language, content) {
|
|
794
|
-
var glEventHub = this.props.glEventHub;
|
|
795
|
-
var _this$state6 = this.state,
|
|
796
|
-
session = _this$state6.session,
|
|
797
|
-
sessionLanguage = _this$state6.sessionLanguage,
|
|
798
|
-
settings = _this$state6.settings;
|
|
799
|
-
|
|
800
|
-
var notebookSettings = _objectSpread(_objectSpread({}, settings), {}, {
|
|
801
|
-
language: language,
|
|
802
|
-
value: content
|
|
803
|
-
});
|
|
804
744
|
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
745
|
+
this.runCommand(this.notebook.getSelectedCommand());
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
handleSessionOpened(session, _ref4) {
|
|
749
|
+
var {
|
|
750
|
+
language
|
|
751
|
+
} = _ref4;
|
|
752
|
+
this.setState({
|
|
753
|
+
session,
|
|
754
|
+
sessionLanguage: language
|
|
755
|
+
});
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
handleSessionClosed() {
|
|
759
|
+
this.setState({
|
|
760
|
+
session: null,
|
|
761
|
+
sessionLanguage: null
|
|
762
|
+
});
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
handleShow() {
|
|
766
|
+
log.debug('handleShow');
|
|
767
|
+
|
|
768
|
+
if (!this.notebook) {
|
|
769
|
+
return;
|
|
811
770
|
}
|
|
812
|
-
}, {
|
|
813
|
-
key: "runCommand",
|
|
814
|
-
value: function runCommand(command) {
|
|
815
|
-
if (!command) {
|
|
816
|
-
log.debug('Ignoring empty command.');
|
|
817
|
-
return;
|
|
818
|
-
}
|
|
819
771
|
|
|
820
|
-
|
|
821
|
-
|
|
772
|
+
this.notebook.updateDimensions();
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
handleShowRename() {
|
|
776
|
+
this.setState({
|
|
777
|
+
showSaveAsModal: true
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
handleTab(tab) {
|
|
782
|
+
log.debug('NotebookPanel tab event', tab);
|
|
783
|
+
this.initTab(tab);
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
handleTabFocus() {
|
|
787
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
788
|
+
args[_key] = arguments[_key];
|
|
822
789
|
}
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
var _this$state7 = this.state,
|
|
835
|
-
changeCount = _this$state7.changeCount,
|
|
836
|
-
savedChangeCount = _this$state7.savedChangeCount,
|
|
837
|
-
error = _this$state7.error,
|
|
838
|
-
isDashboardActive = _this$state7.isDashboardActive,
|
|
839
|
-
isLoaded = _this$state7.isLoaded,
|
|
840
|
-
isLoading = _this$state7.isLoading,
|
|
841
|
-
isPreview = _this$state7.isPreview,
|
|
842
|
-
fileMetadata = _this$state7.fileMetadata,
|
|
843
|
-
session = _this$state7.session,
|
|
844
|
-
sessionLanguage = _this$state7.sessionLanguage,
|
|
845
|
-
initialSettings = _this$state7.settings,
|
|
846
|
-
showCloseModal = _this$state7.showCloseModal,
|
|
847
|
-
showSaveAsModal = _this$state7.showSaveAsModal; // We don't want to steal focus if this isn't shown or it's just a preview
|
|
848
|
-
|
|
849
|
-
var focusOnMount = isDashboardActive && !glContainer.isHidden && !isPreview;
|
|
850
|
-
var itemName = (_fileMetadata$itemNam = fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName) !== null && _fileMetadata$itemNam !== void 0 ? _fileMetadata$itemNam : NotebookPanel.DEFAULT_NAME;
|
|
851
|
-
var isExistingItem = (fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.id) != null;
|
|
852
|
-
var overflowActions = this.getOverflowActions();
|
|
853
|
-
|
|
854
|
-
var settings = _objectSpread({}, initialSettings);
|
|
855
|
-
|
|
856
|
-
var isSessionConnected = session != null;
|
|
857
|
-
var isLanguageMatching = sessionLanguage === settings.language;
|
|
858
|
-
var runButtonsDisabled = !isLoaded || !isSessionConnected || !isLanguageMatching;
|
|
859
|
-
var toolbarDisabled = !isLoaded;
|
|
860
|
-
var contextActions = [{
|
|
861
|
-
action: this.handleSave,
|
|
862
|
-
shortcut: GLOBAL_SHORTCUTS.SAVE
|
|
863
|
-
}];
|
|
864
|
-
var disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(isSessionConnected, isLanguageMatching, 'Notebook extension', 'Run');
|
|
865
|
-
var disabledRunSelectedButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(isSessionConnected, isLanguageMatching, 'Notebook extension', 'Run Selected');
|
|
866
|
-
var additionalActions = [{
|
|
867
|
-
title: isExistingItem ? 'Rename' : 'Save As…',
|
|
868
|
-
order: 10,
|
|
869
|
-
group: ContextActions.groups.high,
|
|
870
|
-
action: this.handleShowRename
|
|
871
|
-
}, {
|
|
872
|
-
title: 'Copy File',
|
|
873
|
-
action: this.handleCopy,
|
|
874
|
-
group: ContextActions.groups.high,
|
|
875
|
-
order: 20
|
|
876
|
-
}];
|
|
877
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, tab && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement("span", {
|
|
878
|
-
className: classNames('editor-unsaved-indicator', {
|
|
879
|
-
'is-unsaved': changeCount !== savedChangeCount
|
|
880
|
-
})
|
|
881
|
-
}), tab.element.find('.lm_title_before').get(0) // tab.element is jquery element, we want a dom element
|
|
882
|
-
), /*#__PURE__*/React.createElement(Panel, {
|
|
883
|
-
className: "notebook-container",
|
|
884
|
-
componentPanel: this,
|
|
885
|
-
glContainer: glContainer,
|
|
886
|
-
glEventHub: glEventHub,
|
|
887
|
-
onTab: this.handleTab,
|
|
888
|
-
onResize: this.handleResize,
|
|
889
|
-
onShow: this.handleShow,
|
|
890
|
-
onTabFocus: this.handleTabFocus,
|
|
891
|
-
onTabBlur: this.handleTabBlur,
|
|
892
|
-
onSessionOpen: this.handleSessionOpened,
|
|
893
|
-
onSessionClose: this.handleSessionClosed,
|
|
894
|
-
onFocus: this.handleFocus,
|
|
895
|
-
onBlur: this.handleBlur,
|
|
896
|
-
additionalActions: additionalActions,
|
|
897
|
-
renderTabTooltip: function renderTabTooltip() {
|
|
898
|
-
return itemName;
|
|
899
|
-
}
|
|
900
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
901
|
-
className: "notebook-toolbar"
|
|
902
|
-
}, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("button", {
|
|
903
|
-
type: "button",
|
|
904
|
-
className: "btn btn-link btn-link-icon btn-play",
|
|
905
|
-
onClick: this.handleRunAll,
|
|
906
|
-
disabled: runButtonsDisabled
|
|
907
|
-
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
908
|
-
icon: vsRunAll,
|
|
909
|
-
transform: "grow-4"
|
|
910
|
-
}), /*#__PURE__*/React.createElement(Tooltip, null, "Run ", SHORTCUTS.NOTEBOOK.RUN.getDisplayText())), disabledRunButtonTooltip && /*#__PURE__*/React.createElement(Tooltip, null, disabledRunButtonTooltip)), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("button", {
|
|
911
|
-
type: "button",
|
|
912
|
-
className: "btn btn-link btn-link-icon btn-play",
|
|
913
|
-
onClick: this.handleRunSelected,
|
|
914
|
-
disabled: runButtonsDisabled
|
|
915
|
-
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
916
|
-
icon: vsPlay,
|
|
917
|
-
transform: "grow-4"
|
|
918
|
-
}), /*#__PURE__*/React.createElement(Tooltip, null, "Run Selected", ' ', SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText())), disabledRunSelectedButtonTooltip && /*#__PURE__*/React.createElement(Tooltip, null, disabledRunSelectedButtonTooltip)), /*#__PURE__*/React.createElement("button", {
|
|
919
|
-
type: "button",
|
|
920
|
-
className: "btn btn-link btn-link-icon mr-auto",
|
|
921
|
-
disabled: toolbarDisabled,
|
|
922
|
-
onClick: this.handleSave
|
|
923
|
-
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
924
|
-
icon: vsSave
|
|
925
|
-
}), /*#__PURE__*/React.createElement(Tooltip, null, "Save")), /*#__PURE__*/React.createElement("button", {
|
|
926
|
-
type: "button",
|
|
927
|
-
className: "btn btn-link btn-overflow btn-link-icon",
|
|
928
|
-
disabled: toolbarDisabled
|
|
929
|
-
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
930
|
-
icon: vsKebabVertical
|
|
931
|
-
}), /*#__PURE__*/React.createElement(Tooltip, null, "More Actions..."), /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
932
|
-
actions: overflowActions,
|
|
933
|
-
popperOptions: NotebookPanel.POPPER_OPTIONS
|
|
934
|
-
}))), /*#__PURE__*/React.createElement(ScriptEditor, {
|
|
935
|
-
isLoaded: isLoaded,
|
|
936
|
-
isLoading: isLoading,
|
|
937
|
-
error: error,
|
|
938
|
-
onChange: this.handleEditorChange,
|
|
939
|
-
onRunCommand: this.handleRunCommand,
|
|
940
|
-
session: session,
|
|
941
|
-
sessionLanguage: sessionLanguage,
|
|
942
|
-
settings: settings,
|
|
943
|
-
focusOnMount: focusOnMount,
|
|
944
|
-
ref: function ref(notebook) {
|
|
945
|
-
_this7.notebook = notebook;
|
|
946
|
-
}
|
|
947
|
-
}), /*#__PURE__*/React.createElement(NewItemModal, {
|
|
948
|
-
isOpen: showSaveAsModal,
|
|
949
|
-
type: "file",
|
|
950
|
-
defaultValue: itemName,
|
|
951
|
-
title: isExistingItem ? 'Rename' : 'Save file as',
|
|
952
|
-
onSubmit: this.handleSaveAsSubmit,
|
|
953
|
-
onCancel: this.handleSaveAsCancel,
|
|
954
|
-
notifyOnExtensionChange: true,
|
|
955
|
-
storage: fileStorage
|
|
956
|
-
}), /*#__PURE__*/React.createElement(BasicModal, {
|
|
957
|
-
isOpen: showCloseModal,
|
|
958
|
-
headerText: "Do you want to save the changes you made to ".concat(itemName, "?"),
|
|
959
|
-
bodyText: "Your changes will be lost if you don't save them.",
|
|
960
|
-
onCancel: this.handleCloseCancel,
|
|
961
|
-
onDiscard: this.handleCloseDiscard,
|
|
962
|
-
onConfirm: this.handleCloseSave,
|
|
963
|
-
discardButtonText: "Discard Changes",
|
|
964
|
-
confirmButtonText: "Save"
|
|
965
|
-
}), /*#__PURE__*/React.createElement(ContextActions, {
|
|
966
|
-
actions: contextActions
|
|
967
|
-
})));
|
|
790
|
+
|
|
791
|
+
log.debug('handleTabFocus', ...args);
|
|
792
|
+
var {
|
|
793
|
+
glContainer
|
|
794
|
+
} = this.props;
|
|
795
|
+
this.setState({
|
|
796
|
+
isDashboardActive: true
|
|
797
|
+
});
|
|
798
|
+
|
|
799
|
+
if (this.notebook && !glContainer.isHidden) {
|
|
800
|
+
this.notebook.updateDimensions();
|
|
968
801
|
}
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
handleTabBlur() {
|
|
805
|
+
log.debug('handleTabBlur');
|
|
806
|
+
this.setState({
|
|
807
|
+
isDashboardActive: false
|
|
808
|
+
});
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
handlePanelTabClick() {
|
|
812
|
+
log.debug('handlePanelTabClick');
|
|
813
|
+
this.focus();
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
focus() {
|
|
817
|
+
requestAnimationFrame(() => {
|
|
818
|
+
if (this.notebook) {
|
|
819
|
+
this.notebook.focus();
|
|
974
820
|
}
|
|
821
|
+
});
|
|
822
|
+
}
|
|
975
823
|
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
824
|
+
createNotebook(itemName, language, content) {
|
|
825
|
+
var {
|
|
826
|
+
glEventHub
|
|
827
|
+
} = this.props;
|
|
828
|
+
var {
|
|
829
|
+
session,
|
|
830
|
+
sessionLanguage,
|
|
831
|
+
settings
|
|
832
|
+
} = this.state;
|
|
833
|
+
|
|
834
|
+
var notebookSettings = _objectSpread(_objectSpread({}, settings), {}, {
|
|
835
|
+
language,
|
|
836
|
+
value: content
|
|
837
|
+
});
|
|
838
|
+
|
|
839
|
+
var fileMetadata = {
|
|
840
|
+
id: null,
|
|
841
|
+
itemName
|
|
842
|
+
};
|
|
843
|
+
log.debug('handleCreateNotebook', session, sessionLanguage, notebookSettings, fileMetadata);
|
|
844
|
+
glEventHub.emit(NotebookEvent.CREATE_NOTEBOOK, session, sessionLanguage, notebookSettings, fileMetadata);
|
|
845
|
+
}
|
|
982
846
|
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
847
|
+
runCommand(command) {
|
|
848
|
+
if (!command) {
|
|
849
|
+
log.debug('Ignoring empty command.');
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
987
852
|
|
|
988
|
-
|
|
989
|
-
|
|
853
|
+
var {
|
|
854
|
+
glEventHub
|
|
855
|
+
} = this.props;
|
|
856
|
+
glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);
|
|
857
|
+
}
|
|
990
858
|
|
|
991
|
-
|
|
992
|
-
|
|
859
|
+
render() {
|
|
860
|
+
var _fileMetadata$itemNam;
|
|
993
861
|
|
|
994
|
-
|
|
995
|
-
|
|
862
|
+
var {
|
|
863
|
+
fileStorage,
|
|
864
|
+
glContainer,
|
|
865
|
+
glContainer: {
|
|
866
|
+
tab
|
|
867
|
+
},
|
|
868
|
+
glEventHub
|
|
869
|
+
} = this.props;
|
|
870
|
+
var {
|
|
871
|
+
changeCount,
|
|
872
|
+
savedChangeCount,
|
|
873
|
+
error,
|
|
874
|
+
isDashboardActive,
|
|
875
|
+
isLoaded,
|
|
876
|
+
isLoading,
|
|
877
|
+
isPreview,
|
|
878
|
+
fileMetadata,
|
|
879
|
+
session,
|
|
880
|
+
sessionLanguage,
|
|
881
|
+
settings: initialSettings,
|
|
882
|
+
showCloseModal,
|
|
883
|
+
showSaveAsModal
|
|
884
|
+
} = this.state; // We don't want to steal focus if this isn't shown or it's just a preview
|
|
885
|
+
|
|
886
|
+
var focusOnMount = isDashboardActive && !glContainer.isHidden && !isPreview;
|
|
887
|
+
var itemName = (_fileMetadata$itemNam = fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName) !== null && _fileMetadata$itemNam !== void 0 ? _fileMetadata$itemNam : NotebookPanel.DEFAULT_NAME;
|
|
888
|
+
var isExistingItem = (fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.id) != null;
|
|
889
|
+
var overflowActions = this.getOverflowActions();
|
|
890
|
+
|
|
891
|
+
var settings = _objectSpread({}, initialSettings);
|
|
892
|
+
|
|
893
|
+
var isSessionConnected = session != null;
|
|
894
|
+
var isLanguageMatching = sessionLanguage === settings.language;
|
|
895
|
+
var runButtonsDisabled = !isLoaded || !isSessionConnected || !isLanguageMatching;
|
|
896
|
+
var toolbarDisabled = !isLoaded;
|
|
897
|
+
var contextActions = [{
|
|
898
|
+
action: this.handleSave,
|
|
899
|
+
shortcut: GLOBAL_SHORTCUTS.SAVE
|
|
900
|
+
}];
|
|
901
|
+
var disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(isSessionConnected, isLanguageMatching, 'Notebook extension', 'Run');
|
|
902
|
+
var disabledRunSelectedButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(isSessionConnected, isLanguageMatching, 'Notebook extension', 'Run Selected');
|
|
903
|
+
var additionalActions = [{
|
|
904
|
+
title: isExistingItem ? 'Rename' : 'Save As…',
|
|
905
|
+
order: 10,
|
|
906
|
+
group: ContextActions.groups.high,
|
|
907
|
+
action: this.handleShowRename
|
|
908
|
+
}, {
|
|
909
|
+
title: 'Copy File',
|
|
910
|
+
action: this.handleCopy,
|
|
911
|
+
group: ContextActions.groups.high,
|
|
912
|
+
order: 20
|
|
913
|
+
}];
|
|
914
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, tab && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement("span", {
|
|
915
|
+
className: classNames('editor-unsaved-indicator', {
|
|
916
|
+
'is-unsaved': changeCount !== savedChangeCount
|
|
917
|
+
})
|
|
918
|
+
}), tab.element.find('.lm_title_before').get(0) // tab.element is jquery element, we want a dom element
|
|
919
|
+
), /*#__PURE__*/React.createElement(Panel, {
|
|
920
|
+
className: "notebook-container",
|
|
921
|
+
componentPanel: this,
|
|
922
|
+
glContainer: glContainer,
|
|
923
|
+
glEventHub: glEventHub,
|
|
924
|
+
onTab: this.handleTab,
|
|
925
|
+
onResize: this.handleResize,
|
|
926
|
+
onShow: this.handleShow,
|
|
927
|
+
onTabFocus: this.handleTabFocus,
|
|
928
|
+
onTabBlur: this.handleTabBlur,
|
|
929
|
+
onSessionOpen: this.handleSessionOpened,
|
|
930
|
+
onSessionClose: this.handleSessionClosed,
|
|
931
|
+
onFocus: this.handleFocus,
|
|
932
|
+
onBlur: this.handleBlur,
|
|
933
|
+
additionalActions: additionalActions,
|
|
934
|
+
renderTabTooltip: () => itemName
|
|
935
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
936
|
+
className: "notebook-toolbar"
|
|
937
|
+
}, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("button", {
|
|
938
|
+
type: "button",
|
|
939
|
+
className: "btn btn-link btn-link-icon btn-play",
|
|
940
|
+
onClick: this.handleRunAll,
|
|
941
|
+
disabled: runButtonsDisabled
|
|
942
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
943
|
+
icon: vsRunAll,
|
|
944
|
+
transform: "grow-4"
|
|
945
|
+
}), /*#__PURE__*/React.createElement(Tooltip, null, "Run ", SHORTCUTS.NOTEBOOK.RUN.getDisplayText())), disabledRunButtonTooltip && /*#__PURE__*/React.createElement(Tooltip, null, disabledRunButtonTooltip)), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("button", {
|
|
946
|
+
type: "button",
|
|
947
|
+
className: "btn btn-link btn-link-icon btn-play",
|
|
948
|
+
onClick: this.handleRunSelected,
|
|
949
|
+
disabled: runButtonsDisabled
|
|
950
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
951
|
+
icon: vsPlay,
|
|
952
|
+
transform: "grow-4"
|
|
953
|
+
}), /*#__PURE__*/React.createElement(Tooltip, null, "Run Selected", ' ', SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText())), disabledRunSelectedButtonTooltip && /*#__PURE__*/React.createElement(Tooltip, null, disabledRunSelectedButtonTooltip)), /*#__PURE__*/React.createElement("button", {
|
|
954
|
+
type: "button",
|
|
955
|
+
className: "btn btn-link btn-link-icon mr-auto",
|
|
956
|
+
disabled: toolbarDisabled,
|
|
957
|
+
onClick: this.handleSave
|
|
958
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
959
|
+
icon: vsSave
|
|
960
|
+
}), /*#__PURE__*/React.createElement(Tooltip, null, "Save")), /*#__PURE__*/React.createElement("button", {
|
|
961
|
+
type: "button",
|
|
962
|
+
className: "btn btn-link btn-overflow btn-link-icon",
|
|
963
|
+
disabled: toolbarDisabled
|
|
964
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
965
|
+
icon: vsKebabVertical
|
|
966
|
+
}), /*#__PURE__*/React.createElement(Tooltip, null, "More Actions..."), /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
967
|
+
actions: overflowActions,
|
|
968
|
+
popperOptions: NotebookPanel.POPPER_OPTIONS
|
|
969
|
+
}))), /*#__PURE__*/React.createElement(ScriptEditor, {
|
|
970
|
+
isLoaded: isLoaded,
|
|
971
|
+
isLoading: isLoading,
|
|
972
|
+
error: error,
|
|
973
|
+
onChange: this.handleEditorChange,
|
|
974
|
+
onRunCommand: this.handleRunCommand,
|
|
975
|
+
session: session,
|
|
976
|
+
sessionLanguage: sessionLanguage,
|
|
977
|
+
settings: settings,
|
|
978
|
+
focusOnMount: focusOnMount,
|
|
979
|
+
ref: notebook => {
|
|
980
|
+
this.notebook = notebook;
|
|
996
981
|
}
|
|
997
|
-
}
|
|
998
|
-
|
|
982
|
+
}), /*#__PURE__*/React.createElement(NewItemModal, {
|
|
983
|
+
isOpen: showSaveAsModal,
|
|
984
|
+
type: "file",
|
|
985
|
+
defaultValue: itemName,
|
|
986
|
+
title: isExistingItem ? 'Rename' : 'Save file as',
|
|
987
|
+
onSubmit: this.handleSaveAsSubmit,
|
|
988
|
+
onCancel: this.handleSaveAsCancel,
|
|
989
|
+
notifyOnExtensionChange: true,
|
|
990
|
+
storage: fileStorage
|
|
991
|
+
}), /*#__PURE__*/React.createElement(BasicModal, {
|
|
992
|
+
isOpen: showCloseModal,
|
|
993
|
+
headerText: "Do you want to save the changes you made to ".concat(itemName, "?"),
|
|
994
|
+
bodyText: "Your changes will be lost if you don't save them.",
|
|
995
|
+
onCancel: this.handleCloseCancel,
|
|
996
|
+
onDiscard: this.handleCloseDiscard,
|
|
997
|
+
onConfirm: this.handleCloseSave,
|
|
998
|
+
discardButtonText: "Discard Changes",
|
|
999
|
+
confirmButtonText: "Save"
|
|
1000
|
+
}), /*#__PURE__*/React.createElement(ContextActions, {
|
|
1001
|
+
actions: contextActions
|
|
1002
|
+
})));
|
|
1003
|
+
}
|
|
999
1004
|
|
|
1000
|
-
|
|
1001
|
-
}(Component);
|
|
1005
|
+
}
|
|
1002
1006
|
|
|
1003
1007
|
_defineProperty(NotebookPanel, "COMPONENT", 'NotebookPanel');
|
|
1004
1008
|
|
|
@@ -1035,16 +1039,20 @@ NotebookPanel.defaultProps = {
|
|
|
1035
1039
|
sessionLanguage: null
|
|
1036
1040
|
};
|
|
1037
1041
|
|
|
1038
|
-
var mapStateToProps =
|
|
1042
|
+
var mapStateToProps = (state, ownProps) => {
|
|
1039
1043
|
var fileStorage = getFileStorage(state);
|
|
1040
1044
|
var sessionWrapper = getDashboardSessionWrapper(state, ownProps.localDashboardId);
|
|
1041
|
-
var
|
|
1042
|
-
|
|
1043
|
-
|
|
1045
|
+
var {
|
|
1046
|
+
session,
|
|
1047
|
+
config: sessionConfig
|
|
1048
|
+
} = sessionWrapper !== null && sessionWrapper !== void 0 ? sessionWrapper : {};
|
|
1049
|
+
var {
|
|
1050
|
+
type: sessionLanguage
|
|
1051
|
+
} = sessionConfig !== null && sessionConfig !== void 0 ? sessionConfig : {};
|
|
1044
1052
|
return {
|
|
1045
|
-
fileStorage
|
|
1046
|
-
session
|
|
1047
|
-
sessionLanguage
|
|
1053
|
+
fileStorage,
|
|
1054
|
+
session,
|
|
1055
|
+
sessionLanguage
|
|
1048
1056
|
};
|
|
1049
1057
|
};
|
|
1050
1058
|
|