@deephaven/console 0.15.1-beta.2 → 0.15.1-beta.4
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/Console.d.ts +129 -121
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +98 -99
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.d.ts +47 -43
- package/dist/ConsoleInput.d.ts.map +1 -1
- package/dist/ConsoleInput.js +111 -73
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleMenu.d.ts +24 -22
- package/dist/ConsoleMenu.d.ts.map +1 -1
- package/dist/ConsoleMenu.js +7 -12
- package/dist/ConsoleMenu.js.map +1 -1
- package/dist/ConsolePropTypes.d.ts +2 -2
- package/dist/ConsolePropTypes.d.ts.map +1 -1
- package/dist/ConsolePropTypes.js.map +1 -1
- package/dist/ConsoleStatusBar.d.ts +26 -29
- package/dist/ConsoleStatusBar.d.ts.map +1 -1
- package/dist/ConsoleStatusBar.js +11 -12
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/StoragePropTypes.d.ts +2 -2
- package/dist/StoragePropTypes.d.ts.map +1 -1
- package/dist/StoragePropTypes.js.map +1 -1
- package/dist/command-history/CommandHistory.d.ts +52 -77
- package/dist/command-history/CommandHistory.d.ts.map +1 -1
- package/dist/command-history/CommandHistory.js +12 -14
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.d.ts +11 -19
- package/dist/command-history/CommandHistoryActions.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryActions.js +4 -19
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.d.ts +15 -21
- package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItem.js +1 -10
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.d.ts +34 -31
- package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js +28 -36
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryTypes.d.ts +19 -0
- package/dist/command-history/CommandHistoryTypes.d.ts.map +1 -0
- package/dist/command-history/CommandHistoryTypes.js +2 -0
- package/dist/command-history/CommandHistoryTypes.js.map +1 -0
- package/dist/command-history/index.d.ts +5 -5
- package/dist/command-history/index.d.ts.map +1 -1
- package/dist/command-history/index.js.map +1 -1
- package/dist/common/Code.d.ts +10 -11
- package/dist/common/Code.d.ts.map +1 -1
- package/dist/common/Code.js +5 -5
- package/dist/common/Code.js.map +1 -1
- package/dist/common/ConsoleUtils.d.ts +20 -8
- package/dist/common/ConsoleUtils.d.ts.map +1 -1
- package/dist/common/ConsoleUtils.js +34 -10
- package/dist/common/ConsoleUtils.js.map +1 -1
- package/dist/console-history/ConsoleHistory.d.ts +19 -18
- package/dist/console-history/ConsoleHistory.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistory.js +5 -9
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.d.ts +21 -44
- package/dist/console-history/ConsoleHistoryItem.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js +12 -28
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.d.ts +13 -9
- package/dist/console-history/ConsoleHistoryItemResult.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.d.ts +25 -21
- package/dist/console-history/ConsoleHistoryResultErrorMessage.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +15 -9
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.d.ts +21 -17
- package/dist/console-history/ConsoleHistoryResultInProgress.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js +12 -10
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/console-history/ConsoleHistoryTypes.d.ts +19 -0
- package/dist/console-history/ConsoleHistoryTypes.d.ts.map +1 -0
- package/dist/console-history/ConsoleHistoryTypes.js +2 -0
- package/dist/console-history/ConsoleHistoryTypes.js.map +1 -0
- package/dist/console-history/index.d.ts +5 -5
- package/dist/console-history/index.d.ts.map +1 -1
- package/dist/console-history/index.js.map +1 -1
- package/dist/csv/CsvFormats.d.ts +13 -12
- package/dist/csv/CsvFormats.d.ts.map +1 -1
- package/dist/csv/CsvFormats.js +8 -8
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.d.ts +46 -38
- package/dist/csv/CsvInputBar.d.ts.map +1 -1
- package/dist/csv/CsvInputBar.js +15 -23
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.d.ts +40 -40
- package/dist/csv/CsvOverlay.d.ts.map +1 -1
- package/dist/csv/CsvOverlay.js +38 -29
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.d.ts +44 -46
- package/dist/csv/CsvParser.d.ts.map +1 -1
- package/dist/csv/CsvParser.js +53 -8
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.d.ts +32 -27
- package/dist/csv/CsvTypeParser.d.ts.map +1 -1
- package/dist/csv/CsvTypeParser.js +42 -8
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/NewTableColumnTypes.d.ts +1 -1
- package/dist/csv/NewTableColumnTypes.d.ts.map +1 -1
- package/dist/csv/NewTableColumnTypes.js.map +1 -1
- package/dist/declaration.d.js +2 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/index.d.ts +14 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/log/LogLevel.d.ts +1 -1
- package/dist/log/LogLevel.d.ts.map +1 -1
- package/dist/log/LogLevel.js.map +1 -1
- package/dist/log/LogLevelMenuItem.d.ts +11 -12
- package/dist/log/LogLevelMenuItem.d.ts.map +1 -1
- package/dist/log/LogLevelMenuItem.js +0 -6
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.d.ts +40 -47
- package/dist/log/LogView.d.ts.map +1 -1
- package/dist/log/LogView.js +65 -29
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.d.ts +19 -19
- package/dist/monaco/MonacoCompletionProvider.d.ts.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.js +11 -15
- package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.d.ts +77 -20
- package/dist/monaco/MonacoUtils.d.ts.map +1 -1
- package/dist/monaco/MonacoUtils.js +32 -24
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/index.d.ts +3 -2
- package/dist/monaco/index.d.ts.map +1 -1
- package/dist/monaco/index.js.map +1 -1
- package/dist/monaco/lang/Language.d.ts +7 -0
- package/dist/monaco/lang/Language.d.ts.map +1 -0
- package/dist/monaco/lang/Language.js +2 -0
- package/dist/monaco/lang/Language.js.map +1 -0
- package/dist/monaco/lang/db.d.ts +3 -93
- package/dist/monaco/lang/db.d.ts.map +1 -1
- package/dist/monaco/lang/db.js +18 -3
- package/dist/monaco/lang/db.js.map +1 -1
- package/dist/monaco/lang/groovy.d.ts +3 -146
- package/dist/monaco/lang/groovy.d.ts.map +1 -1
- package/dist/monaco/lang/groovy.js +15 -2
- package/dist/monaco/lang/groovy.js.map +1 -1
- package/dist/monaco/lang/log.d.ts +3 -40
- package/dist/monaco/lang/log.d.ts.map +1 -1
- package/dist/monaco/lang/log.js +2 -1
- package/dist/monaco/lang/log.js.map +1 -1
- package/dist/monaco/lang/python.d.ts +3 -154
- package/dist/monaco/lang/python.d.ts.map +1 -1
- package/dist/monaco/lang/python.js +15 -2
- package/dist/monaco/lang/python.js.map +1 -1
- package/dist/monaco/lang/scala.d.ts +3 -140
- package/dist/monaco/lang/scala.d.ts.map +1 -1
- package/dist/monaco/lang/scala.js +10 -3
- package/dist/monaco/lang/scala.js.map +1 -1
- package/dist/notebook/Editor.d.ts +26 -27
- package/dist/notebook/Editor.d.ts.map +1 -1
- package/dist/notebook/Editor.js +23 -19
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.d.ts +54 -51
- package/dist/notebook/ScriptEditor.d.ts.map +1 -1
- package/dist/notebook/ScriptEditor.js +45 -48
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.d.ts +15 -10
- package/dist/notebook/ScriptEditorUtils.d.ts.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +7 -7
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/package.json +12 -11
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Script editor for large blocks of code
|
|
3
5
|
*/
|
|
4
6
|
import React, { Component } from 'react';
|
|
5
|
-
import PropTypes from 'prop-types';
|
|
6
7
|
import { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';
|
|
7
8
|
import Log from '@deephaven/log';
|
|
9
|
+
import { assertNotNull } from '@deephaven/utils';
|
|
8
10
|
import Editor from "./Editor.js";
|
|
9
11
|
import { MonacoCompletionProvider, MonacoUtils } from "../monaco/index.js";
|
|
10
12
|
import "./ScriptEditor.css";
|
|
@@ -14,14 +16,21 @@ var log = Log.module('ScriptEditor');
|
|
|
14
16
|
class ScriptEditor extends Component {
|
|
15
17
|
constructor(props) {
|
|
16
18
|
super(props);
|
|
19
|
+
|
|
20
|
+
_defineProperty(this, "contextActionCleanups", void 0);
|
|
21
|
+
|
|
22
|
+
_defineProperty(this, "completionCleanup", void 0);
|
|
23
|
+
|
|
24
|
+
_defineProperty(this, "editor", void 0);
|
|
25
|
+
|
|
26
|
+
_defineProperty(this, "editorComponent", void 0);
|
|
27
|
+
|
|
17
28
|
this.handleEditorInitialized = this.handleEditorInitialized.bind(this);
|
|
18
29
|
this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);
|
|
19
30
|
this.handleRun = this.handleRun.bind(this);
|
|
20
31
|
this.handleRunSelected = this.handleRunSelected.bind(this);
|
|
21
32
|
this.updateShortcuts = this.updateShortcuts.bind(this);
|
|
22
33
|
this.contextActionCleanups = [];
|
|
23
|
-
this.completionCleanup = null;
|
|
24
|
-
this.editor = null;
|
|
25
34
|
this.editorComponent = /*#__PURE__*/React.createRef();
|
|
26
35
|
this.state = {
|
|
27
36
|
model: null
|
|
@@ -33,14 +42,14 @@ class ScriptEditor extends Component {
|
|
|
33
42
|
}
|
|
34
43
|
|
|
35
44
|
componentDidUpdate(prevProps) {
|
|
45
|
+
var _prevProps$settings, _prevProps$settings2;
|
|
46
|
+
|
|
36
47
|
var {
|
|
37
48
|
sessionLanguage,
|
|
38
49
|
settings
|
|
39
50
|
} = this.props;
|
|
40
|
-
var
|
|
41
|
-
|
|
42
|
-
} = settings;
|
|
43
|
-
var languageChanged = language !== prevProps.settings.language;
|
|
51
|
+
var language = settings === null || settings === void 0 ? void 0 : settings.language;
|
|
52
|
+
var languageChanged = language !== ((_prevProps$settings = prevProps.settings) === null || _prevProps$settings === void 0 ? void 0 : _prevProps$settings.language);
|
|
44
53
|
|
|
45
54
|
if (languageChanged) {
|
|
46
55
|
log.debug('Set language', language);
|
|
@@ -49,7 +58,7 @@ class ScriptEditor extends Component {
|
|
|
49
58
|
|
|
50
59
|
var sessionDisconnected = sessionLanguage == null && prevProps.sessionLanguage != null;
|
|
51
60
|
var languageMatch = language === sessionLanguage;
|
|
52
|
-
var prevLanguageMatch = prevProps.settings.language === prevProps.sessionLanguage;
|
|
61
|
+
var prevLanguageMatch = ((_prevProps$settings2 = prevProps.settings) === null || _prevProps$settings2 === void 0 ? void 0 : _prevProps$settings2.language) === prevProps.sessionLanguage;
|
|
53
62
|
|
|
54
63
|
if (sessionDisconnected || sessionLanguage && prevLanguageMatch && !languageMatch) {
|
|
55
64
|
// Session disconnected or language changed from matching the session language to non-matching
|
|
@@ -82,8 +91,12 @@ class ScriptEditor extends Component {
|
|
|
82
91
|
}
|
|
83
92
|
|
|
84
93
|
getSelectedCommand() {
|
|
85
|
-
var
|
|
86
|
-
|
|
94
|
+
var _this$editor, _this$editor2;
|
|
95
|
+
|
|
96
|
+
var range = (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.getSelection();
|
|
97
|
+
assertNotNull(range);
|
|
98
|
+
var model = (_this$editor2 = this.editor) === null || _this$editor2 === void 0 ? void 0 : _this$editor2.getModel();
|
|
99
|
+
assertNotNull(model);
|
|
87
100
|
var {
|
|
88
101
|
startLineNumber,
|
|
89
102
|
endColumn
|
|
@@ -96,13 +109,13 @@ class ScriptEditor extends Component {
|
|
|
96
109
|
endLineNumber -= 1;
|
|
97
110
|
}
|
|
98
111
|
|
|
99
|
-
var startLineMinColumn = model.getLineMinColumn(startLineNumber);
|
|
100
|
-
var endLineMaxColumn = model.getLineMaxColumn(endLineNumber);
|
|
112
|
+
var startLineMinColumn = model === null || model === void 0 ? void 0 : model.getLineMinColumn(startLineNumber);
|
|
113
|
+
var endLineMaxColumn = model === null || model === void 0 ? void 0 : model.getLineMaxColumn(endLineNumber);
|
|
101
114
|
var wholeLineRange = range.setStartPosition(startLineNumber, startLineMinColumn).setEndPosition(endLineNumber, endLineMaxColumn);
|
|
102
|
-
return model.getValueInRange(wholeLineRange);
|
|
115
|
+
return model === null || model === void 0 ? void 0 : model.getValueInRange(wholeLineRange);
|
|
103
116
|
}
|
|
104
117
|
|
|
105
|
-
handleEditorInitialized(
|
|
118
|
+
handleEditorInitialized(innerEditor) {
|
|
106
119
|
var {
|
|
107
120
|
focusOnMount,
|
|
108
121
|
onChange,
|
|
@@ -111,22 +124,22 @@ class ScriptEditor extends Component {
|
|
|
111
124
|
sessionLanguage
|
|
112
125
|
} = this.props;
|
|
113
126
|
log.debug('handleEditorInitialized', sessionLanguage, session, settings);
|
|
114
|
-
this.editor =
|
|
127
|
+
this.editor = innerEditor;
|
|
115
128
|
this.setState({
|
|
116
129
|
model: this.editor.getModel()
|
|
117
130
|
});
|
|
118
|
-
MonacoUtils.setEOL(
|
|
119
|
-
MonacoUtils.registerPasteHandler(
|
|
131
|
+
MonacoUtils.setEOL(innerEditor);
|
|
132
|
+
MonacoUtils.registerPasteHandler(innerEditor);
|
|
120
133
|
|
|
121
134
|
if (session && settings && sessionLanguage === settings.language) {
|
|
122
135
|
this.initContextActions();
|
|
123
136
|
this.initCodeCompletion();
|
|
124
137
|
}
|
|
125
138
|
|
|
126
|
-
|
|
139
|
+
innerEditor.onDidChangeModelContent(onChange);
|
|
127
140
|
|
|
128
141
|
if (focusOnMount) {
|
|
129
|
-
|
|
142
|
+
innerEditor.focus();
|
|
130
143
|
}
|
|
131
144
|
}
|
|
132
145
|
|
|
@@ -137,7 +150,7 @@ class ScriptEditor extends Component {
|
|
|
137
150
|
this.setState({
|
|
138
151
|
model: null
|
|
139
152
|
});
|
|
140
|
-
this.editor =
|
|
153
|
+
this.editor = undefined;
|
|
141
154
|
}
|
|
142
155
|
|
|
143
156
|
handleRun() {
|
|
@@ -145,7 +158,10 @@ class ScriptEditor extends Component {
|
|
|
145
158
|
onRunCommand
|
|
146
159
|
} = this.props;
|
|
147
160
|
var command = this.getValue();
|
|
148
|
-
|
|
161
|
+
|
|
162
|
+
if (command != null) {
|
|
163
|
+
onRunCommand(command);
|
|
164
|
+
}
|
|
149
165
|
}
|
|
150
166
|
|
|
151
167
|
handleRunSelected() {
|
|
@@ -171,26 +187,20 @@ class ScriptEditor extends Component {
|
|
|
171
187
|
id: 'run-code',
|
|
172
188
|
label: 'Run',
|
|
173
189
|
keybindings: [MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN)],
|
|
174
|
-
precondition: null,
|
|
175
|
-
keybindingContext: null,
|
|
176
190
|
contextMenuGroupId: 'navigation',
|
|
177
191
|
contextMenuOrder: 1.5,
|
|
178
192
|
run: () => {
|
|
179
193
|
this.handleRun();
|
|
180
|
-
return null;
|
|
181
194
|
}
|
|
182
195
|
}));
|
|
183
196
|
cleanups.push(this.editor.addAction({
|
|
184
197
|
id: 'run-selected-code',
|
|
185
198
|
label: 'Run Selected',
|
|
186
199
|
keybindings: [MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN_SELECTED)],
|
|
187
|
-
precondition: null,
|
|
188
|
-
keybindingContext: null,
|
|
189
200
|
contextMenuGroupId: 'navigation',
|
|
190
201
|
contextMenuOrder: 1.5,
|
|
191
202
|
run: () => {
|
|
192
203
|
this.handleRunSelected();
|
|
193
|
-
return null;
|
|
194
204
|
}
|
|
195
205
|
}));
|
|
196
206
|
this.contextActionCleanups = cleanups;
|
|
@@ -232,7 +242,7 @@ class ScriptEditor extends Component {
|
|
|
232
242
|
|
|
233
243
|
if (this.completionCleanup) {
|
|
234
244
|
this.completionCleanup.dispose();
|
|
235
|
-
this.completionCleanup =
|
|
245
|
+
this.completionCleanup = undefined;
|
|
236
246
|
}
|
|
237
247
|
|
|
238
248
|
if (this.editor && session) {
|
|
@@ -242,7 +252,9 @@ class ScriptEditor extends Component {
|
|
|
242
252
|
|
|
243
253
|
append(text) {
|
|
244
254
|
var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
255
|
+
assertNotNull(this.editor);
|
|
245
256
|
var model = this.editor.getModel();
|
|
257
|
+
assertNotNull(model);
|
|
246
258
|
var currentText = model.getValue();
|
|
247
259
|
|
|
248
260
|
if (currentText) {
|
|
@@ -286,7 +298,7 @@ class ScriptEditor extends Component {
|
|
|
286
298
|
}
|
|
287
299
|
|
|
288
300
|
setLanguage(language) {
|
|
289
|
-
if (this.editorComponent.current) {
|
|
301
|
+
if (this.editorComponent.current && language) {
|
|
290
302
|
this.editorComponent.current.setLanguage(language);
|
|
291
303
|
}
|
|
292
304
|
}
|
|
@@ -328,31 +340,16 @@ class ScriptEditor extends Component {
|
|
|
328
340
|
|
|
329
341
|
}
|
|
330
342
|
|
|
331
|
-
ScriptEditor
|
|
332
|
-
error: PropTypes.shape({
|
|
333
|
-
message: PropTypes.string
|
|
334
|
-
}),
|
|
335
|
-
isLoading: PropTypes.bool,
|
|
336
|
-
isLoaded: PropTypes.bool,
|
|
337
|
-
focusOnMount: PropTypes.bool,
|
|
338
|
-
onChange: PropTypes.func,
|
|
339
|
-
onRunCommand: PropTypes.func.isRequired,
|
|
340
|
-
session: PropTypes.shape({}),
|
|
341
|
-
sessionLanguage: PropTypes.string,
|
|
342
|
-
settings: PropTypes.shape({
|
|
343
|
-
language: PropTypes.string,
|
|
344
|
-
value: PropTypes.string
|
|
345
|
-
})
|
|
346
|
-
};
|
|
347
|
-
ScriptEditor.defaultProps = {
|
|
343
|
+
_defineProperty(ScriptEditor, "defaultProps", {
|
|
348
344
|
error: null,
|
|
349
345
|
isLoading: false,
|
|
350
346
|
isLoaded: false,
|
|
351
347
|
focusOnMount: true,
|
|
352
|
-
onChange: () =>
|
|
348
|
+
onChange: () => undefined,
|
|
353
349
|
session: null,
|
|
354
350
|
sessionLanguage: null,
|
|
355
351
|
settings: null
|
|
356
|
-
};
|
|
352
|
+
});
|
|
353
|
+
|
|
357
354
|
export default ScriptEditor;
|
|
358
355
|
//# sourceMappingURL=ScriptEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/notebook/ScriptEditor.jsx"],"names":["React","Component","PropTypes","LoadingOverlay","ShortcutRegistry","Log","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","completionCleanup","editor","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","focusOnMount","onChange","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","precondition","keybindingContext","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled","propTypes","shape","message","string","bool","func","isRequired","value","defaultProps"],"mappings":"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","sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\nclass ScriptEditor extends Component {\n constructor(props) {\n super(props);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleRun = this.handleRun.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.updateShortcuts = this.updateShortcuts.bind(this);\n\n this.contextActionCleanups = [];\n this.completionCleanup = null;\n this.editor = null;\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount() {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps) {\n const { sessionLanguage, settings } = this.props;\n const { language } = settings;\n\n const languageChanged = language !== prevProps.settings.language;\n if (languageChanged) {\n log.debug('Set language', language);\n this.setLanguage(language);\n }\n\n const sessionDisconnected =\n sessionLanguage == null && prevProps.sessionLanguage != null;\n const languageMatch = language === sessionLanguage;\n const prevLanguageMatch =\n prevProps.settings.language === prevProps.sessionLanguage;\n if (\n sessionDisconnected ||\n (sessionLanguage && prevLanguageMatch && !languageMatch)\n ) {\n // Session disconnected or language changed from matching the session language to non-matching\n log.debug('De-init completion and context actions');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n }\n\n const sessionConnected =\n sessionLanguage != null && prevProps.sessionLanguage == null;\n if (\n (sessionConnected && languageMatch) ||\n (sessionLanguage && !prevLanguageMatch && languageMatch)\n ) {\n // Session connected with a matching language or notebook language changed to matching\n log.debug('Init completion and context actions');\n this.initContextActions();\n this.initCodeCompletion();\n }\n }\n\n componentWillUnmount() {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n getValue() {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand() {\n const range = this.editor.getSelection();\n const model = this.editor.getModel();\n const { startLineNumber, endColumn } = range;\n let { endLineNumber } = range;\n if (endColumn === 1 && endLineNumber > startLineNumber) {\n endLineNumber -= 1;\n }\n const startLineMinColumn = model.getLineMinColumn(startLineNumber);\n const endLineMaxColumn = model.getLineMaxColumn(endLineNumber);\n const wholeLineRange = range\n .setStartPosition(startLineNumber, startLineMinColumn)\n .setEndPosition(endLineNumber, endLineMaxColumn);\n return model.getValueInRange(wholeLineRange);\n }\n\n handleEditorInitialized(editor) {\n const {\n focusOnMount,\n onChange,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = editor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(editor);\n MonacoUtils.registerPasteHandler(editor);\n\n if (session && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n editor.onDidChangeModelContent(onChange);\n if (focusOnMount) {\n editor.focus();\n }\n }\n\n handleEditorWillDestroy() {\n log.debug('handleEditorWillDestroy');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = null;\n }\n\n handleRun() {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n onRunCommand(command);\n }\n\n handleRunSelected() {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions() {\n if (this.contextActionCleanups.length > 0) {\n log.error('Context actions already initialized.');\n return;\n }\n\n if (!this.editor) {\n return;\n }\n\n const cleanups = [];\n cleanups.push(\n this.editor.addAction({\n id: 'run-code',\n label: 'Run',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN),\n ],\n precondition: null,\n\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n return null;\n },\n })\n );\n\n cleanups.push(\n this.editor.addAction({\n id: 'run-selected-code',\n label: 'Run Selected',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(\n SHORTCUTS.NOTEBOOK.RUN_SELECTED\n ),\n ],\n precondition: null,\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n return null;\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions() {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts() {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion() {\n if (this.completionCleanup != null) {\n log.error('Code completion already initialized.');\n return;\n }\n const { session } = this.props;\n log.debug('initCodeCompletion', this.editor, session);\n if (this.editor && session) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion() {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = null;\n }\n if (this.editor && session) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text, focus = true) {\n const model = this.editor.getModel();\n const currentText = model.getValue();\n if (currentText) {\n model.setValue(`${currentText}\\n${text}`);\n } else {\n model.setValue(`${text}`);\n }\n\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n\n this.editor.setPosition({ lineNumber: lastLine, column });\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n updateDimensions() {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus() {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind() {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language) {\n if (this.editorComponent.current) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render() {\n const {\n error,\n isLoaded,\n isLoading,\n session,\n sessionLanguage,\n settings,\n } = this.props;\n const { model } = this.state;\n const errorMessage = error ? `Unable to open document. ${error}` : null;\n const editorLanguage = settings ? settings.language : null;\n const completionProviderEnabled =\n model && session && editorLanguage === sessionLanguage;\n\n return (\n <>\n {(error || isLoading) && (\n <div className=\"h-100 w-100 position-relative\">\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n />\n </div>\n )}\n\n {isLoaded && (\n <div className=\"h-100 w-100 script-editor\">\n {settings && (\n <>\n <Editor\n ref={this.editorComponent}\n settings={settings}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n {completionProviderEnabled && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nScriptEditor.propTypes = {\n error: PropTypes.shape({ message: PropTypes.string }),\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n focusOnMount: PropTypes.bool,\n onChange: PropTypes.func,\n onRunCommand: PropTypes.func.isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n settings: PropTypes.shape({\n language: PropTypes.string,\n value: PropTypes.string,\n }),\n};\n\nScriptEditor.defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: () => {},\n session: null,\n sessionLanguage: null,\n settings: null,\n};\n\nexport default ScriptEditor;\n"],"file":"ScriptEditor.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/notebook/ScriptEditor.tsx"],"names":["React","Component","LoadingOverlay","ShortcutRegistry","Log","assertNotNull","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","editor","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","innerEditor","focusOnMount","onChange","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","undefined","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","completionCleanup","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled"],"mappings":"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","sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component, ReactElement, RefObject } from 'react';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport { editor, IDisposable } from 'monaco-editor';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\ninterface ScriptEditorProps {\n error?: { message?: string };\n isLoading: boolean;\n isLoaded: boolean;\n focusOnMount?: boolean;\n onChange: (e: editor.IModelContentChangedEvent) => void;\n onRunCommand: (command: string) => void;\n session: IdeSession;\n sessionLanguage?: string;\n settings?: {\n language: string;\n value?: string;\n };\n}\n\ninterface ScriptEditorState {\n model: editor.ITextModel | null;\n}\n\nclass ScriptEditor extends Component<ScriptEditorProps, ScriptEditorState> {\n static defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: (): void => undefined,\n session: null,\n sessionLanguage: null,\n settings: null,\n };\n\n constructor(props: ScriptEditorProps) {\n super(props);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleRun = this.handleRun.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.updateShortcuts = this.updateShortcuts.bind(this);\n\n this.contextActionCleanups = [];\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount(): void {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps: ScriptEditorProps): void {\n const { sessionLanguage, settings } = this.props;\n\n const language = settings?.language;\n\n const languageChanged = language !== prevProps.settings?.language;\n if (languageChanged) {\n log.debug('Set language', language);\n this.setLanguage(language);\n }\n\n const sessionDisconnected =\n sessionLanguage == null && prevProps.sessionLanguage != null;\n const languageMatch = language === sessionLanguage;\n const prevLanguageMatch =\n prevProps.settings?.language === prevProps.sessionLanguage;\n if (\n sessionDisconnected ||\n (sessionLanguage && prevLanguageMatch && !languageMatch)\n ) {\n // Session disconnected or language changed from matching the session language to non-matching\n log.debug('De-init completion and context actions');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n }\n\n const sessionConnected =\n sessionLanguage != null && prevProps.sessionLanguage == null;\n if (\n (sessionConnected && languageMatch) ||\n (sessionLanguage && !prevLanguageMatch && languageMatch)\n ) {\n // Session connected with a matching language or notebook language changed to matching\n log.debug('Init completion and context actions');\n this.initContextActions();\n this.initCodeCompletion();\n }\n }\n\n componentWillUnmount(): void {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n contextActionCleanups: IDisposable[];\n\n completionCleanup?: IDisposable;\n\n editor?: editor.IStandaloneCodeEditor;\n\n editorComponent: RefObject<Editor>;\n\n getValue(): string | null {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand(): string {\n const range = this.editor?.getSelection();\n assertNotNull(range);\n const model = this.editor?.getModel();\n assertNotNull(model);\n const { startLineNumber, endColumn } = range;\n let { endLineNumber } = range;\n if (endColumn === 1 && endLineNumber > startLineNumber) {\n endLineNumber -= 1;\n }\n const startLineMinColumn = model?.getLineMinColumn(startLineNumber);\n const endLineMaxColumn = model?.getLineMaxColumn(endLineNumber);\n const wholeLineRange = range\n .setStartPosition(startLineNumber, startLineMinColumn)\n .setEndPosition(endLineNumber, endLineMaxColumn);\n return model?.getValueInRange(wholeLineRange);\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n const {\n focusOnMount,\n onChange,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = innerEditor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(innerEditor);\n MonacoUtils.registerPasteHandler(innerEditor);\n\n if (session && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n innerEditor.onDidChangeModelContent(onChange);\n if (focusOnMount) {\n innerEditor.focus();\n }\n }\n\n handleEditorWillDestroy(): void {\n log.debug('handleEditorWillDestroy');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = undefined;\n }\n\n handleRun(): void {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n if (command != null) {\n onRunCommand(command);\n }\n }\n\n handleRunSelected(): void {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n log.error('Context actions already initialized.');\n return;\n }\n\n if (!this.editor) {\n return;\n }\n\n const cleanups = [];\n cleanups.push(\n this.editor.addAction({\n id: 'run-code',\n label: 'Run',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n },\n })\n );\n\n cleanups.push(\n this.editor.addAction({\n id: 'run-selected-code',\n label: 'Run Selected',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(\n SHORTCUTS.NOTEBOOK.RUN_SELECTED\n ),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts(): void {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion(): void {\n if (this.completionCleanup != null) {\n log.error('Code completion already initialized.');\n return;\n }\n const { session } = this.props;\n log.debug('initCodeCompletion', this.editor, session);\n if (this.editor && session) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion(): void {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = undefined;\n }\n if (this.editor && session) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text: string, focus = true): void {\n assertNotNull(this.editor);\n const model = this.editor.getModel();\n assertNotNull(model);\n const currentText = model.getValue();\n if (currentText) {\n model.setValue(`${currentText}\\n${text}`);\n } else {\n model.setValue(`${text}`);\n }\n\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n\n this.editor.setPosition({ lineNumber: lastLine, column });\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n updateDimensions(): void {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus(): void {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind(): void {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language?: string): void {\n if (this.editorComponent.current && language) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render(): ReactElement {\n const {\n error,\n isLoaded,\n isLoading,\n session,\n sessionLanguage,\n settings,\n } = this.props;\n const { model } = this.state;\n const errorMessage = error ? `Unable to open document. ${error}` : null;\n const editorLanguage = settings ? settings.language : null;\n const completionProviderEnabled =\n model && session && editorLanguage === sessionLanguage;\n\n return (\n <>\n {(error || isLoading) && (\n <div className=\"h-100 w-100 position-relative\">\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n />\n </div>\n )}\n\n {isLoaded && (\n <div className=\"h-100 w-100 script-editor\">\n {settings && (\n <>\n <Editor\n ref={this.editorComponent}\n settings={settings}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n {completionProviderEnabled && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nexport default ScriptEditor;\n"],"file":"ScriptEditor.js"}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
declare const LANGUAGES: {
|
|
2
|
+
readonly groovy: "Groovy";
|
|
3
|
+
readonly python: "Python";
|
|
4
|
+
readonly scala: "Scala";
|
|
5
|
+
};
|
|
2
6
|
declare class ScriptEditorUtils {
|
|
3
7
|
/** Get PQ script language from Monaco language
|
|
4
|
-
* @
|
|
5
|
-
* @returns
|
|
8
|
+
* @paramlanguage Monaco language
|
|
9
|
+
* @returns PQ script language
|
|
6
10
|
*/
|
|
7
|
-
static normalizeScriptLanguage(language:
|
|
11
|
+
static normalizeScriptLanguage(language: keyof typeof LANGUAGES): string;
|
|
8
12
|
/**
|
|
9
13
|
* Get a tooltip for disabled button based on the session status and language
|
|
10
|
-
* @param
|
|
11
|
-
* @param
|
|
12
|
-
* @param
|
|
13
|
-
* @param
|
|
14
|
-
* @returns
|
|
14
|
+
* @param isSessionConnected True if console session connected
|
|
15
|
+
* @param isLanguageMatching True if the script language is matching the session language
|
|
16
|
+
* @param scriptLanguageLabel Language label to use in the tooltip message
|
|
17
|
+
* @param buttonLabel Button label to use in the tooltip message
|
|
18
|
+
* @returns Tooltip message or `null` if the session is connected and language is matching
|
|
15
19
|
*/
|
|
16
|
-
static getDisabledRunTooltip(isSessionConnected: boolean, isLanguageMatching: boolean, scriptLanguageLabel: string, buttonLabel: string): string;
|
|
20
|
+
static getDisabledRunTooltip(isSessionConnected: boolean, isLanguageMatching: boolean, scriptLanguageLabel: string, buttonLabel: string): string | null;
|
|
17
21
|
}
|
|
22
|
+
export default ScriptEditorUtils;
|
|
18
23
|
//# sourceMappingURL=ScriptEditorUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptEditorUtils.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditorUtils.
|
|
1
|
+
{"version":3,"file":"ScriptEditorUtils.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditorUtils.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,SAAS;;;;CAIL,CAAC;AAEX,cAAM,iBAAiB;IACrB;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,OAAO,SAAS,GAAG,MAAM;IAIxE;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAC1B,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,EAAE,OAAO,EAC3B,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI;CASjB;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -6,19 +6,19 @@ var LANGUAGES = {
|
|
|
6
6
|
|
|
7
7
|
class ScriptEditorUtils {
|
|
8
8
|
/** Get PQ script language from Monaco language
|
|
9
|
-
* @
|
|
10
|
-
* @returns
|
|
9
|
+
* @paramlanguage Monaco language
|
|
10
|
+
* @returns PQ script language
|
|
11
11
|
*/
|
|
12
12
|
static normalizeScriptLanguage(language) {
|
|
13
13
|
return LANGUAGES[language] || null;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Get a tooltip for disabled button based on the session status and language
|
|
17
|
-
* @param
|
|
18
|
-
* @param
|
|
19
|
-
* @param
|
|
20
|
-
* @param
|
|
21
|
-
* @returns
|
|
17
|
+
* @param isSessionConnected True if console session connected
|
|
18
|
+
* @param isLanguageMatching True if the script language is matching the session language
|
|
19
|
+
* @param scriptLanguageLabel Language label to use in the tooltip message
|
|
20
|
+
* @param buttonLabel Button label to use in the tooltip message
|
|
21
|
+
* @returns Tooltip message or `null` if the session is connected and language is matching
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/notebook/ScriptEditorUtils.
|
|
1
|
+
{"version":3,"sources":["../../src/notebook/ScriptEditorUtils.ts"],"names":["LANGUAGES","groovy","python","scala","ScriptEditorUtils","normalizeScriptLanguage","language","getDisabledRunTooltip","isSessionConnected","isLanguageMatching","scriptLanguageLabel","buttonLabel"],"mappings":"AAAA,IAAMA,SAAS,GAAG;AAChBC,EAAAA,MAAM,EAAE,QADQ;AAEhBC,EAAAA,MAAM,EAAE,QAFQ;AAGhBC,EAAAA,KAAK,EAAE;AAHS,CAAlB;;AAMA,MAAMC,iBAAN,CAAwB;AACtB;AACF;AACA;AACA;AACgC,SAAvBC,uBAAuB,CAACC,QAAD,EAA2C;AACvE,WAAON,SAAS,CAACM,QAAD,CAAT,IAAuB,IAA9B;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AAC8B,SAArBC,qBAAqB,CAC1BC,kBAD0B,EAE1BC,kBAF0B,EAG1BC,mBAH0B,EAI1BC,WAJ0B,EAKX;AACf,QAAI,CAACH,kBAAL,EAAyB;AACvB,4DAA0CG,WAA1C;AACD;;AACD,QAAI,CAACF,kBAAL,EAAyB;AACvB,uBAAUC,mBAAV,wDAAsEC,WAAtE;AACD;;AACD,WAAO,IAAP;AACD;;AA9BqB;;AAiCxB,eAAeP,iBAAf","sourcesContent":["const LANGUAGES = {\n groovy: 'Groovy',\n python: 'Python',\n scala: 'Scala',\n} as const;\n\nclass ScriptEditorUtils {\n /** Get PQ script language from Monaco language\n * @paramlanguage Monaco language\n * @returns PQ script language\n */\n static normalizeScriptLanguage(language: keyof typeof LANGUAGES): string {\n return LANGUAGES[language] || null;\n }\n\n /**\n * Get a tooltip for disabled button based on the session status and language\n * @param isSessionConnected True if console session connected\n * @param isLanguageMatching True if the script language is matching the session language\n * @param scriptLanguageLabel Language label to use in the tooltip message\n * @param buttonLabel Button label to use in the tooltip message\n * @returns Tooltip message or `null` if the session is connected and language is matching\n */\n static getDisabledRunTooltip(\n isSessionConnected: boolean,\n isLanguageMatching: boolean,\n scriptLanguageLabel: string,\n buttonLabel: string\n ): string | null {\n if (!isSessionConnected) {\n return `Console session not connected – ${buttonLabel} disabled`;\n }\n if (!isLanguageMatching) {\n return `${scriptLanguageLabel} doesn't match the session language – ${buttonLabel} disabled`;\n }\n return null;\n }\n}\n\nexport default ScriptEditorUtils;\n"],"file":"ScriptEditorUtils.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/console",
|
|
3
|
-
"version": "0.15.1-beta.
|
|
3
|
+
"version": "0.15.1-beta.4+baeb1d7",
|
|
4
4
|
"description": "Deephaven Console",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
"start": "cross-env NODE_ENV=development npm run watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@deephaven/components": "^0.15.1-beta.
|
|
34
|
-
"@deephaven/icons": "^0.15.1-beta.
|
|
35
|
-
"@deephaven/jsapi-shim": "^0.15.1-beta.
|
|
36
|
-
"@deephaven/log": "^0.15.1-beta.
|
|
37
|
-
"@deephaven/storage": "^0.15.1-beta.
|
|
38
|
-
"@deephaven/utils": "^0.15.1-beta.
|
|
33
|
+
"@deephaven/components": "^0.15.1-beta.4+baeb1d7",
|
|
34
|
+
"@deephaven/icons": "^0.15.1-beta.4+baeb1d7",
|
|
35
|
+
"@deephaven/jsapi-shim": "^0.15.1-beta.4+baeb1d7",
|
|
36
|
+
"@deephaven/log": "^0.15.1-beta.4+baeb1d7",
|
|
37
|
+
"@deephaven/storage": "^0.15.1-beta.4+baeb1d7",
|
|
38
|
+
"@deephaven/utils": "^0.15.1-beta.4+baeb1d7",
|
|
39
39
|
"@fortawesome/react-fontawesome": "^0.1.18",
|
|
40
40
|
"classnames": "^2.3.1",
|
|
41
41
|
"lodash.debounce": "^4.0.8",
|
|
@@ -43,7 +43,8 @@
|
|
|
43
43
|
"memoize-one": "^5.1.1",
|
|
44
44
|
"memoizee": "^0.4.15",
|
|
45
45
|
"monaco-editor": "^0.27.0",
|
|
46
|
-
"papaparse": "^5.2
|
|
46
|
+
"papaparse": "^5.3.2",
|
|
47
|
+
"popper.js": "^1.16.1",
|
|
47
48
|
"prop-types": "^15.7.2",
|
|
48
49
|
"shell-quote": "^1.7.2"
|
|
49
50
|
},
|
|
@@ -52,8 +53,8 @@
|
|
|
52
53
|
"react-dom": "^17.x"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
|
-
"@deephaven/mocks": "^0.15.1-beta.
|
|
56
|
-
"@deephaven/tsconfig": "^0.15.1-beta.
|
|
56
|
+
"@deephaven/mocks": "^0.15.1-beta.4+baeb1d7",
|
|
57
|
+
"@deephaven/tsconfig": "^0.15.1-beta.4+baeb1d7"
|
|
57
58
|
},
|
|
58
59
|
"files": [
|
|
59
60
|
"dist"
|
|
@@ -64,5 +65,5 @@
|
|
|
64
65
|
"publishConfig": {
|
|
65
66
|
"access": "public"
|
|
66
67
|
},
|
|
67
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "baeb1d793fc3ec854e5a984a70d14e45c3816092"
|
|
68
69
|
}
|