@deephaven/console 0.22.3-deep-bot-test.14 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Console.d.ts +3 -3
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +9 -114
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.js +14 -90
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleMenu.js +6 -25
- package/dist/ConsoleMenu.js.map +1 -1
- package/dist/ConsolePropTypes.js.map +1 -1
- package/dist/ConsoleShortcuts.js +1 -1
- package/dist/ConsoleShortcuts.js.map +1 -1
- package/dist/ConsoleStatusBar.js +0 -16
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/HeapUsage.d.ts +1 -1
- package/dist/HeapUsage.d.ts.map +1 -1
- package/dist/HeapUsage.js +2 -18
- package/dist/HeapUsage.js.map +1 -1
- package/dist/StoragePropTypes.js.map +1 -1
- package/dist/command-history/CommandHistory.d.ts +1 -1
- package/dist/command-history/CommandHistory.d.ts.map +1 -1
- package/dist/command-history/CommandHistory.js +1 -49
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.js +0 -6
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.d.ts +4 -4
- package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItem.js +3 -6
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.d.ts +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js +3 -28
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryTypes.d.ts +2 -2
- package/dist/command-history/CommandHistoryTypes.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryViewportUpdater.d.ts +1 -1
- package/dist/command-history/CommandHistoryViewportUpdater.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryViewportUpdater.js +0 -3
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
- package/dist/command-history/index.js.map +1 -1
- package/dist/common/Code.js +2 -11
- package/dist/common/Code.js.map +1 -1
- package/dist/common/ConsoleConstants.js +0 -2
- package/dist/common/ConsoleConstants.js.map +1 -1
- package/dist/common/ConsoleUtils.js +4 -19
- package/dist/common/ConsoleUtils.js.map +1 -1
- package/dist/common/ObjectIcon.d.ts +2 -2
- package/dist/common/ObjectIcon.d.ts.map +1 -1
- package/dist/common/ObjectIcon.js +2 -8
- package/dist/common/ObjectIcon.js.map +1 -1
- package/dist/common/index.js.map +1 -1
- package/dist/console-history/ConsoleHistory.js +0 -8
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js +2 -25
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.d.ts +7 -7
- package/dist/console-history/ConsoleHistoryItemResult.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js +2 -4
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +0 -22
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js +0 -13
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/console-history/ConsoleHistoryTypes.d.ts +1 -1
- package/dist/console-history/ConsoleHistoryTypes.d.ts.map +1 -1
- package/dist/console-history/index.js.map +1 -1
- package/dist/csv/CsvFormats.d.ts +1 -1
- package/dist/csv/CsvFormats.d.ts.map +1 -1
- package/dist/csv/CsvFormats.js +0 -9
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.js +18 -51
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.d.ts +2 -2
- package/dist/csv/CsvOverlay.d.ts.map +1 -1
- package/dist/csv/CsvOverlay.js +1 -41
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.js +10 -73
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.js +15 -85
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/NewTableColumnTypes.js +0 -9
- package/dist/csv/NewTableColumnTypes.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/log/LogLevel.d.ts +8 -8
- package/dist/log/LogLevel.js.map +1 -1
- package/dist/log/LogLevelMenuItem.js +0 -5
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.d.ts +2 -2
- package/dist/log/LogView.d.ts.map +1 -1
- package/dist/log/LogView.js +21 -108
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.js +2 -14
- package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.d.ts.map +1 -1
- package/dist/monaco/MonacoUtils.js +21 -49
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/index.js.map +1 -1
- package/dist/monaco/lang/Language.d.ts +1 -1
- package/dist/monaco/lang/Language.d.ts.map +1 -1
- package/dist/monaco/lang/db.d.ts.map +1 -1
- package/dist/monaco/lang/db.js +22 -13
- package/dist/monaco/lang/db.js.map +1 -1
- package/dist/monaco/lang/groovy.d.ts.map +1 -1
- package/dist/monaco/lang/groovy.js +28 -15
- package/dist/monaco/lang/groovy.js.map +1 -1
- package/dist/monaco/lang/log.js +1 -0
- package/dist/monaco/lang/log.js.map +1 -1
- package/dist/monaco/lang/python.d.ts.map +1 -1
- package/dist/monaco/lang/python.js +30 -16
- package/dist/monaco/lang/python.js.map +1 -1
- package/dist/monaco/lang/scala.js +26 -13
- package/dist/monaco/lang/scala.js.map +1 -1
- package/dist/notebook/Editor.js +2 -21
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.d.ts +1 -1
- package/dist/notebook/ScriptEditor.d.ts.map +1 -1
- package/dist/notebook/ScriptEditor.js +0 -57
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +1 -7
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/package.json +11 -11
|
@@ -1,5 +1,4 @@
|
|
|
1
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
|
-
|
|
3
2
|
/**
|
|
4
3
|
* Script editor for large blocks of code
|
|
5
4
|
*/
|
|
@@ -13,19 +12,13 @@ import { MonacoCompletionProvider, MonacoUtils } from "../monaco/index.js";
|
|
|
13
12
|
import "./ScriptEditor.css";
|
|
14
13
|
import SHORTCUTS from "../ConsoleShortcuts.js";
|
|
15
14
|
var log = Log.module('ScriptEditor');
|
|
16
|
-
|
|
17
15
|
class ScriptEditor extends Component {
|
|
18
16
|
constructor(props) {
|
|
19
17
|
super(props);
|
|
20
|
-
|
|
21
18
|
_defineProperty(this, "contextActionCleanups", void 0);
|
|
22
|
-
|
|
23
19
|
_defineProperty(this, "completionCleanup", void 0);
|
|
24
|
-
|
|
25
20
|
_defineProperty(this, "editor", void 0);
|
|
26
|
-
|
|
27
21
|
_defineProperty(this, "editorComponent", void 0);
|
|
28
|
-
|
|
29
22
|
this.handleEditorInitialized = this.handleEditorInitialized.bind(this);
|
|
30
23
|
this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);
|
|
31
24
|
this.handleRun = this.handleRun.bind(this);
|
|
@@ -37,39 +30,31 @@ class ScriptEditor extends Component {
|
|
|
37
30
|
model: null
|
|
38
31
|
};
|
|
39
32
|
}
|
|
40
|
-
|
|
41
33
|
componentDidMount() {
|
|
42
34
|
ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);
|
|
43
35
|
}
|
|
44
|
-
|
|
45
36
|
componentDidUpdate(prevProps) {
|
|
46
37
|
var _prevProps$settings, _prevProps$settings2;
|
|
47
|
-
|
|
48
38
|
var {
|
|
49
39
|
sessionLanguage,
|
|
50
40
|
settings
|
|
51
41
|
} = this.props;
|
|
52
42
|
var language = settings === null || settings === void 0 ? void 0 : settings.language;
|
|
53
43
|
var languageChanged = language !== ((_prevProps$settings = prevProps.settings) === null || _prevProps$settings === void 0 ? void 0 : _prevProps$settings.language);
|
|
54
|
-
|
|
55
44
|
if (languageChanged) {
|
|
56
45
|
log.debug('Set language', language);
|
|
57
46
|
this.setLanguage(language);
|
|
58
47
|
}
|
|
59
|
-
|
|
60
48
|
var sessionDisconnected = sessionLanguage == null && prevProps.sessionLanguage != null;
|
|
61
49
|
var languageMatch = language === sessionLanguage;
|
|
62
50
|
var prevLanguageMatch = ((_prevProps$settings2 = prevProps.settings) === null || _prevProps$settings2 === void 0 ? void 0 : _prevProps$settings2.language) === prevProps.sessionLanguage;
|
|
63
|
-
|
|
64
51
|
if (sessionDisconnected || sessionLanguage !== undefined && prevLanguageMatch && !languageMatch) {
|
|
65
52
|
// Session disconnected or language changed from matching the session language to non-matching
|
|
66
53
|
log.debug('De-init completion and context actions');
|
|
67
54
|
this.deInitContextActions();
|
|
68
55
|
this.deInitCodeCompletion();
|
|
69
56
|
}
|
|
70
|
-
|
|
71
57
|
var sessionConnected = sessionLanguage != null && prevProps.sessionLanguage == null;
|
|
72
|
-
|
|
73
58
|
if (sessionConnected && languageMatch || sessionLanguage !== undefined && !prevLanguageMatch && languageMatch) {
|
|
74
59
|
// Session connected with a matching language or notebook language changed to matching
|
|
75
60
|
log.debug('Init completion and context actions');
|
|
@@ -77,23 +62,18 @@ class ScriptEditor extends Component {
|
|
|
77
62
|
this.initCodeCompletion();
|
|
78
63
|
}
|
|
79
64
|
}
|
|
80
|
-
|
|
81
65
|
componentWillUnmount() {
|
|
82
66
|
ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);
|
|
83
67
|
}
|
|
84
|
-
|
|
85
68
|
getValue() {
|
|
86
69
|
if (this.editor) {
|
|
87
70
|
return this.editor.getValue();
|
|
88
71
|
}
|
|
89
|
-
|
|
90
72
|
log.error('Editor not initialized');
|
|
91
73
|
return null;
|
|
92
74
|
}
|
|
93
|
-
|
|
94
75
|
getSelectedCommand() {
|
|
95
76
|
var _this$editor, _this$editor2;
|
|
96
|
-
|
|
97
77
|
var range = (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.getSelection();
|
|
98
78
|
assertNotNull(range);
|
|
99
79
|
var model = (_this$editor2 = this.editor) === null || _this$editor2 === void 0 ? void 0 : _this$editor2.getModel();
|
|
@@ -105,17 +85,14 @@ class ScriptEditor extends Component {
|
|
|
105
85
|
var {
|
|
106
86
|
endLineNumber
|
|
107
87
|
} = range;
|
|
108
|
-
|
|
109
88
|
if (endColumn === 1 && endLineNumber > startLineNumber) {
|
|
110
89
|
endLineNumber -= 1;
|
|
111
90
|
}
|
|
112
|
-
|
|
113
91
|
var startLineMinColumn = model === null || model === void 0 ? void 0 : model.getLineMinColumn(startLineNumber);
|
|
114
92
|
var endLineMaxColumn = model === null || model === void 0 ? void 0 : model.getLineMaxColumn(endLineNumber);
|
|
115
93
|
var wholeLineRange = range.setStartPosition(startLineNumber, startLineMinColumn).setEndPosition(endLineNumber, endLineMaxColumn);
|
|
116
94
|
return model === null || model === void 0 ? void 0 : model.getValueInRange(wholeLineRange);
|
|
117
95
|
}
|
|
118
|
-
|
|
119
96
|
handleEditorInitialized(innerEditor) {
|
|
120
97
|
var {
|
|
121
98
|
focusOnMount,
|
|
@@ -132,21 +109,16 @@ class ScriptEditor extends Component {
|
|
|
132
109
|
});
|
|
133
110
|
MonacoUtils.setEOL(innerEditor);
|
|
134
111
|
MonacoUtils.registerPasteHandler(innerEditor);
|
|
135
|
-
|
|
136
112
|
if (session != null && settings && sessionLanguage === settings.language) {
|
|
137
113
|
this.initContextActions();
|
|
138
114
|
this.initCodeCompletion();
|
|
139
115
|
}
|
|
140
|
-
|
|
141
116
|
innerEditor.onDidChangeModelContent(onChange);
|
|
142
|
-
|
|
143
117
|
if (focusOnMount != null && focusOnMount) {
|
|
144
118
|
innerEditor.focus();
|
|
145
119
|
}
|
|
146
|
-
|
|
147
120
|
onEditorInitialized(this.editor);
|
|
148
121
|
}
|
|
149
|
-
|
|
150
122
|
handleEditorWillDestroy(innerEditor) {
|
|
151
123
|
log.debug('handleEditorWillDestroy');
|
|
152
124
|
var {
|
|
@@ -160,18 +132,15 @@ class ScriptEditor extends Component {
|
|
|
160
132
|
});
|
|
161
133
|
this.editor = undefined;
|
|
162
134
|
}
|
|
163
|
-
|
|
164
135
|
handleRun() {
|
|
165
136
|
var {
|
|
166
137
|
onRunCommand
|
|
167
138
|
} = this.props;
|
|
168
139
|
var command = this.getValue();
|
|
169
|
-
|
|
170
140
|
if (command != null) {
|
|
171
141
|
onRunCommand(command);
|
|
172
142
|
}
|
|
173
143
|
}
|
|
174
|
-
|
|
175
144
|
handleRunSelected() {
|
|
176
145
|
var {
|
|
177
146
|
onRunCommand
|
|
@@ -179,17 +148,14 @@ class ScriptEditor extends Component {
|
|
|
179
148
|
var command = this.getSelectedCommand();
|
|
180
149
|
onRunCommand(command);
|
|
181
150
|
}
|
|
182
|
-
|
|
183
151
|
initContextActions() {
|
|
184
152
|
if (this.contextActionCleanups.length > 0) {
|
|
185
153
|
log.error('Context actions already initialized.');
|
|
186
154
|
return;
|
|
187
155
|
}
|
|
188
|
-
|
|
189
156
|
if (!this.editor) {
|
|
190
157
|
return;
|
|
191
158
|
}
|
|
192
|
-
|
|
193
159
|
var cleanups = [];
|
|
194
160
|
cleanups.push(this.editor.addAction({
|
|
195
161
|
id: 'run-code',
|
|
@@ -213,107 +179,87 @@ class ScriptEditor extends Component {
|
|
|
213
179
|
}));
|
|
214
180
|
this.contextActionCleanups = cleanups;
|
|
215
181
|
}
|
|
216
|
-
|
|
217
182
|
deInitContextActions() {
|
|
218
183
|
if (this.contextActionCleanups.length > 0) {
|
|
219
184
|
this.contextActionCleanups.forEach(cleanup => cleanup.dispose());
|
|
220
185
|
this.contextActionCleanups = [];
|
|
221
186
|
}
|
|
222
187
|
}
|
|
223
|
-
|
|
224
188
|
updateShortcuts() {
|
|
225
189
|
this.deInitContextActions();
|
|
226
190
|
this.initContextActions();
|
|
227
191
|
}
|
|
228
|
-
|
|
229
192
|
initCodeCompletion() {
|
|
230
193
|
if (this.completionCleanup != null) {
|
|
231
194
|
log.error('Code completion already initialized.');
|
|
232
195
|
return;
|
|
233
196
|
}
|
|
234
|
-
|
|
235
197
|
var {
|
|
236
198
|
session
|
|
237
199
|
} = this.props;
|
|
238
200
|
log.debug('initCodeCompletion', this.editor, session);
|
|
239
|
-
|
|
240
201
|
if (this.editor && session != null) {
|
|
241
202
|
this.completionCleanup = MonacoUtils.openDocument(this.editor, session);
|
|
242
203
|
}
|
|
243
204
|
}
|
|
244
|
-
|
|
245
205
|
deInitCodeCompletion() {
|
|
246
206
|
var {
|
|
247
207
|
session
|
|
248
208
|
} = this.props;
|
|
249
209
|
log.debug('deInitCodeCompletion', this.editor, session);
|
|
250
|
-
|
|
251
210
|
if (this.completionCleanup) {
|
|
252
211
|
this.completionCleanup.dispose();
|
|
253
212
|
this.completionCleanup = undefined;
|
|
254
213
|
}
|
|
255
|
-
|
|
256
214
|
if (this.editor && session != null) {
|
|
257
215
|
MonacoUtils.closeDocument(this.editor, session);
|
|
258
216
|
}
|
|
259
217
|
}
|
|
260
|
-
|
|
261
218
|
append(text) {
|
|
262
219
|
var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
263
220
|
assertNotNull(this.editor);
|
|
264
221
|
var model = this.editor.getModel();
|
|
265
222
|
assertNotNull(model);
|
|
266
223
|
var currentText = model.getValue();
|
|
267
|
-
|
|
268
224
|
if (currentText) {
|
|
269
225
|
model.setValue("".concat(currentText, "\n").concat(text));
|
|
270
226
|
} else {
|
|
271
227
|
model.setValue("".concat(text));
|
|
272
228
|
}
|
|
273
|
-
|
|
274
229
|
var lastLine = model.getLineCount();
|
|
275
230
|
var column = model.getLineLength(lastLine) + 1;
|
|
276
231
|
this.editor.setPosition({
|
|
277
232
|
lineNumber: lastLine,
|
|
278
233
|
column
|
|
279
234
|
});
|
|
280
|
-
|
|
281
235
|
if (focus) {
|
|
282
236
|
this.editor.focus();
|
|
283
237
|
}
|
|
284
238
|
}
|
|
285
|
-
|
|
286
239
|
updateDimensions() {
|
|
287
240
|
log.debug('updateDimensions');
|
|
288
|
-
|
|
289
241
|
if (this.editor) {
|
|
290
242
|
this.editor.layout();
|
|
291
243
|
}
|
|
292
244
|
}
|
|
293
|
-
|
|
294
245
|
focus() {
|
|
295
246
|
log.debug('focus');
|
|
296
|
-
|
|
297
247
|
if (this.editor) {
|
|
298
248
|
this.editor.focus();
|
|
299
249
|
}
|
|
300
250
|
}
|
|
301
|
-
|
|
302
251
|
toggleFind() {
|
|
303
252
|
if (this.editorComponent.current) {
|
|
304
253
|
this.editorComponent.current.toggleFind();
|
|
305
254
|
}
|
|
306
255
|
}
|
|
307
|
-
|
|
308
256
|
setLanguage(language) {
|
|
309
257
|
if (this.editorComponent.current && language !== undefined) {
|
|
310
258
|
this.editorComponent.current.setLanguage(language);
|
|
311
259
|
}
|
|
312
260
|
}
|
|
313
|
-
|
|
314
261
|
render() {
|
|
315
262
|
var _settings$language;
|
|
316
|
-
|
|
317
263
|
var {
|
|
318
264
|
error,
|
|
319
265
|
isLoaded,
|
|
@@ -347,9 +293,7 @@ class ScriptEditor extends Component {
|
|
|
347
293
|
session: session
|
|
348
294
|
}))));
|
|
349
295
|
}
|
|
350
|
-
|
|
351
296
|
}
|
|
352
|
-
|
|
353
297
|
_defineProperty(ScriptEditor, "defaultProps", {
|
|
354
298
|
error: null,
|
|
355
299
|
isLoading: false,
|
|
@@ -360,6 +304,5 @@ _defineProperty(ScriptEditor, "defaultProps", {
|
|
|
360
304
|
onEditorWillDestroy: () => undefined,
|
|
361
305
|
session: null
|
|
362
306
|
});
|
|
363
|
-
|
|
364
307
|
export default ScriptEditor;
|
|
365
308
|
//# sourceMappingURL=ScriptEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptEditor.js","names":["React","Component","LoadingOverlay","ShortcutRegistry","Log","assertNotNull","editor","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","undefined","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","innerEditor","focusOnMount","onChange","onEditorInitialized","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","onEditorWillDestroy","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"],"sources":["../../src/notebook/ScriptEditor.tsx"],"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 onEditorInitialized: (editor: editor.IStandaloneCodeEditor) => void;\n onEditorWillDestroy: (editor: editor.IStandaloneCodeEditor) => void;\n session: IdeSession;\n sessionLanguage?: string;\n settings?: editor.IStandaloneEditorConstructionOptions;\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 onEditorInitialized: (): void => undefined,\n onEditorWillDestroy: (): void => undefined,\n session: 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 !== undefined && 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 !== undefined && !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 onEditorInitialized,\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 != null && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n innerEditor.onDidChangeModelContent(onChange);\n if (focusOnMount != null && focusOnMount) {\n innerEditor.focus();\n }\n\n onEditorInitialized(this.editor);\n }\n\n handleEditorWillDestroy(innerEditor: editor.IStandaloneCodeEditor): void {\n log.debug('handleEditorWillDestroy');\n const { onEditorWillDestroy } = this.props;\n onEditorWillDestroy(innerEditor);\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 != null) {\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 != null) {\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 !== undefined) {\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 : 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 != null &&\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScriptEditor.js","names":["React","Component","LoadingOverlay","ShortcutRegistry","Log","assertNotNull","editor","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","undefined","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","innerEditor","focusOnMount","onChange","onEditorInitialized","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","onEditorWillDestroy","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"],"sources":["../../src/notebook/ScriptEditor.tsx"],"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 onEditorInitialized: (editor: editor.IStandaloneCodeEditor) => void;\n onEditorWillDestroy: (editor: editor.IStandaloneCodeEditor) => void;\n session: IdeSession | null;\n sessionLanguage?: string;\n settings?: editor.IStandaloneEditorConstructionOptions;\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 onEditorInitialized: (): void => undefined,\n onEditorWillDestroy: (): void => undefined,\n session: 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 !== undefined && 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 !== undefined && !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 onEditorInitialized,\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 != null && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n innerEditor.onDidChangeModelContent(onChange);\n if (focusOnMount != null && focusOnMount) {\n innerEditor.focus();\n }\n\n onEditorInitialized(this.editor);\n }\n\n handleEditorWillDestroy(innerEditor: editor.IStandaloneCodeEditor): void {\n log.debug('handleEditorWillDestroy');\n const { onEditorWillDestroy } = this.props;\n onEditorWillDestroy(innerEditor);\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 != null) {\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 != null) {\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 !== undefined) {\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 : 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 != null &&\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"],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ var LANGUAGES = {
|
|
|
3
3
|
python: 'Python',
|
|
4
4
|
scala: 'Scala'
|
|
5
5
|
};
|
|
6
|
-
|
|
7
6
|
class ScriptEditorUtils {
|
|
8
7
|
/** Get PQ script language from Monaco language
|
|
9
8
|
* @paramlanguage Monaco language
|
|
@@ -12,6 +11,7 @@ class ScriptEditorUtils {
|
|
|
12
11
|
static normalizeScriptLanguage(language) {
|
|
13
12
|
return LANGUAGES[language] || null;
|
|
14
13
|
}
|
|
14
|
+
|
|
15
15
|
/**
|
|
16
16
|
* Get a tooltip for disabled button based on the session status and language
|
|
17
17
|
* @param isSessionConnected True if console session connected
|
|
@@ -20,21 +20,15 @@ class ScriptEditorUtils {
|
|
|
20
20
|
* @param buttonLabel Button label to use in the tooltip message
|
|
21
21
|
* @returns Tooltip message or `null` if the session is connected and language is matching
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
23
|
static getDisabledRunTooltip(isSessionConnected, isLanguageMatching, scriptLanguageLabel, buttonLabel) {
|
|
26
24
|
if (!isSessionConnected) {
|
|
27
25
|
return "Console session not connected \u2013 ".concat(buttonLabel, " disabled");
|
|
28
26
|
}
|
|
29
|
-
|
|
30
27
|
if (!isLanguageMatching) {
|
|
31
28
|
return "".concat(scriptLanguageLabel, " doesn't match the session language \u2013 ").concat(buttonLabel, " disabled");
|
|
32
29
|
}
|
|
33
|
-
|
|
34
30
|
return null;
|
|
35
31
|
}
|
|
36
|
-
|
|
37
32
|
}
|
|
38
|
-
|
|
39
33
|
export default ScriptEditorUtils;
|
|
40
34
|
//# sourceMappingURL=ScriptEditorUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptEditorUtils.js","names":["LANGUAGES","groovy","python","scala","ScriptEditorUtils","normalizeScriptLanguage","language","getDisabledRunTooltip","isSessionConnected","isLanguageMatching","scriptLanguageLabel","buttonLabel"],"sources":["../../src/notebook/ScriptEditorUtils.ts"],"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"],"mappings":"AAAA,IAAMA,SAAS,GAAG;EAChBC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"ScriptEditorUtils.js","names":["LANGUAGES","groovy","python","scala","ScriptEditorUtils","normalizeScriptLanguage","language","getDisabledRunTooltip","isSessionConnected","isLanguageMatching","scriptLanguageLabel","buttonLabel"],"sources":["../../src/notebook/ScriptEditorUtils.ts"],"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"],"mappings":"AAAA,IAAMA,SAAS,GAAG;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE;AACT,CAAU;AAEV,MAAMC,iBAAiB,CAAC;EACtB;AACF;AACA;AACA;EACE,OAAOC,uBAAuB,CAACC,QAAgC,EAAU;IACvE,OAAON,SAAS,CAACM,QAAQ,CAAC,IAAI,IAAI;EACpC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,qBAAqB,CAC1BC,kBAA2B,EAC3BC,kBAA2B,EAC3BC,mBAA2B,EAC3BC,WAAmB,EACJ;IACf,IAAI,CAACH,kBAAkB,EAAE;MACvB,sDAA0CG,WAAW;IACvD;IACA,IAAI,CAACF,kBAAkB,EAAE;MACvB,iBAAUC,mBAAmB,wDAAyCC,WAAW;IACnF;IACA,OAAO,IAAI;EACb;AACF;AAEA,eAAeP,iBAAiB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/console",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "Deephaven Console",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@deephaven/chart": "^0.
|
|
27
|
-
"@deephaven/components": "^0.
|
|
28
|
-
"@deephaven/icons": "^0.
|
|
29
|
-
"@deephaven/jsapi-shim": "^0.
|
|
30
|
-
"@deephaven/log": "^0.
|
|
31
|
-
"@deephaven/storage": "^0.
|
|
32
|
-
"@deephaven/utils": "^0.
|
|
26
|
+
"@deephaven/chart": "^0.23.0",
|
|
27
|
+
"@deephaven/components": "^0.23.0",
|
|
28
|
+
"@deephaven/icons": "^0.23.0",
|
|
29
|
+
"@deephaven/jsapi-shim": "^0.23.0",
|
|
30
|
+
"@deephaven/log": "^0.23.0",
|
|
31
|
+
"@deephaven/storage": "^0.23.0",
|
|
32
|
+
"@deephaven/utils": "^0.23.0",
|
|
33
33
|
"@fortawesome/react-fontawesome": "^0.1.18",
|
|
34
34
|
"classnames": "^2.3.1",
|
|
35
35
|
"lodash.debounce": "^4.0.8",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"react-dom": "^17.x"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@deephaven/mocks": "^0.
|
|
51
|
-
"@deephaven/tsconfig": "^0.
|
|
50
|
+
"@deephaven/mocks": "^0.23.0",
|
|
51
|
+
"@deephaven/tsconfig": "^0.23.0"
|
|
52
52
|
},
|
|
53
53
|
"files": [
|
|
54
54
|
"dist"
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"publishConfig": {
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "94defbc26a5e0e2e3da3d71b5ae770c5bc8155e3"
|
|
63
63
|
}
|