@deephaven/console 0.22.3-beta.15 → 0.22.3-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.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/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 +1 -1
- 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 +6 -6
- 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/index.js.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.js.map +1 -1
- package/dist/log/LogLevelMenuItem.js +0 -5
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.js +16 -106
- 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/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
package/dist/ConsoleInput.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
|
-
|
|
3
2
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
4
|
-
|
|
5
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
7
4
|
import React, { PureComponent } from 'react';
|
|
8
5
|
import classNames from 'classnames';
|
|
9
6
|
import * as monaco from 'monaco-editor';
|
|
@@ -17,41 +14,29 @@ var TOP_PADDING = 6;
|
|
|
17
14
|
var BOTTOM_PADDING = 6;
|
|
18
15
|
var MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;
|
|
19
16
|
var BUFFER_SIZE = 100;
|
|
20
|
-
|
|
21
17
|
/**
|
|
22
18
|
* Component for input in a console session. Handles loading the recent command history
|
|
23
19
|
*/
|
|
24
20
|
export class ConsoleInput extends PureComponent {
|
|
25
21
|
constructor(props) {
|
|
26
22
|
super(props);
|
|
27
|
-
|
|
28
23
|
_defineProperty(this, "cancelListener", void 0);
|
|
29
|
-
|
|
30
24
|
_defineProperty(this, "commandContainer", void 0);
|
|
31
|
-
|
|
32
25
|
_defineProperty(this, "commandEditor", void 0);
|
|
33
|
-
|
|
34
26
|
_defineProperty(this, "commandHistoryIndex", void 0);
|
|
35
|
-
|
|
36
27
|
_defineProperty(this, "commandSuggestionContainer", void 0);
|
|
37
|
-
|
|
38
28
|
_defineProperty(this, "loadingPromise", void 0);
|
|
39
|
-
|
|
40
29
|
_defineProperty(this, "timestamp", void 0);
|
|
41
|
-
|
|
42
30
|
_defineProperty(this, "bufferIndex", void 0);
|
|
43
|
-
|
|
44
31
|
_defineProperty(this, "history", void 0);
|
|
45
|
-
|
|
46
32
|
_defineProperty(this, "modifiedCommands", void 0);
|
|
47
|
-
|
|
48
33
|
this.handleWindowResize = this.handleWindowResize.bind(this);
|
|
49
34
|
this.commandContainer = /*#__PURE__*/React.createRef();
|
|
50
35
|
this.commandHistoryIndex = null;
|
|
51
36
|
this.timestamp = Date.now();
|
|
52
37
|
this.bufferIndex = 0;
|
|
53
|
-
this.history = [];
|
|
54
|
-
|
|
38
|
+
this.history = [];
|
|
39
|
+
// Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed
|
|
55
40
|
this.modifiedCommands = new Map();
|
|
56
41
|
this.state = {
|
|
57
42
|
commandEditorHeight: LINE_HEIGHT,
|
|
@@ -59,27 +44,21 @@ export class ConsoleInput extends PureComponent {
|
|
|
59
44
|
model: null
|
|
60
45
|
};
|
|
61
46
|
}
|
|
62
|
-
|
|
63
47
|
componentDidMount() {
|
|
64
48
|
this.initCommandEditor();
|
|
65
49
|
window.addEventListener('resize', this.handleWindowResize);
|
|
66
50
|
this.loadMoreHistory();
|
|
67
51
|
}
|
|
68
|
-
|
|
69
52
|
componentDidUpdate() {
|
|
70
53
|
this.layoutEditor();
|
|
71
54
|
}
|
|
72
|
-
|
|
73
55
|
componentWillUnmount() {
|
|
74
56
|
window.removeEventListener('resize', this.handleWindowResize);
|
|
75
|
-
|
|
76
57
|
if (this.loadingPromise != null) {
|
|
77
58
|
this.loadingPromise.cancel();
|
|
78
59
|
}
|
|
79
|
-
|
|
80
60
|
this.destroyCommandEditor();
|
|
81
61
|
}
|
|
82
|
-
|
|
83
62
|
/**
|
|
84
63
|
* Sets the console text from an external source.
|
|
85
64
|
* Sets commandHistoryIndex to null since the source is not part of the history
|
|
@@ -91,33 +70,27 @@ export class ConsoleInput extends PureComponent {
|
|
|
91
70
|
setConsoleText(text) {
|
|
92
71
|
var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
93
72
|
var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
94
|
-
|
|
95
73
|
if (!text) {
|
|
96
74
|
return;
|
|
97
75
|
}
|
|
76
|
+
log.debug('Command received: ', text);
|
|
98
77
|
|
|
99
|
-
|
|
100
|
-
|
|
78
|
+
// Only set the console text if we're not running this command
|
|
101
79
|
if (!execute) {
|
|
102
80
|
var _this$commandEditor;
|
|
103
|
-
|
|
104
81
|
// Need to set commandHistoryIndex before value
|
|
105
82
|
// On value change, modified commands map updates
|
|
106
83
|
this.commandHistoryIndex = null;
|
|
107
84
|
(_this$commandEditor = this.commandEditor) === null || _this$commandEditor === void 0 ? void 0 : _this$commandEditor.setValue(text);
|
|
108
85
|
}
|
|
109
|
-
|
|
110
86
|
if (focus) {
|
|
111
87
|
this.focusEnd();
|
|
112
88
|
}
|
|
113
|
-
|
|
114
89
|
this.updateDimensions();
|
|
115
|
-
|
|
116
90
|
if (execute) {
|
|
117
91
|
this.processCommand(text);
|
|
118
92
|
}
|
|
119
93
|
}
|
|
120
|
-
|
|
121
94
|
initCommandEditor() {
|
|
122
95
|
var {
|
|
123
96
|
language,
|
|
@@ -159,7 +132,6 @@ export class ConsoleInput extends PureComponent {
|
|
|
159
132
|
MonacoUtils.openDocument(this.commandEditor, session);
|
|
160
133
|
this.commandEditor.onDidChangeModelContent(() => {
|
|
161
134
|
var _this$commandEditor2;
|
|
162
|
-
|
|
163
135
|
var value = (_this$commandEditor2 = this.commandEditor) === null || _this$commandEditor2 === void 0 ? void 0 : _this$commandEditor2.getValue();
|
|
164
136
|
this.modifiedCommands.set(this.commandHistoryIndex, value !== null && value !== void 0 ? value : null);
|
|
165
137
|
this.updateDimensions();
|
|
@@ -174,12 +146,12 @@ export class ConsoleInput extends PureComponent {
|
|
|
174
146
|
isFocused: false
|
|
175
147
|
});
|
|
176
148
|
});
|
|
149
|
+
|
|
177
150
|
/**
|
|
178
151
|
* Register for keydown events to capture the `Enter` key.
|
|
179
152
|
* Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.
|
|
180
153
|
* Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.
|
|
181
154
|
*/
|
|
182
|
-
|
|
183
155
|
this.commandEditor.onKeyDown(keyEvent => {
|
|
184
156
|
var {
|
|
185
157
|
commandEditor,
|
|
@@ -191,46 +163,37 @@ export class ConsoleInput extends PureComponent {
|
|
|
191
163
|
lineNumber
|
|
192
164
|
} = position;
|
|
193
165
|
var model = commandEditor === null || commandEditor === void 0 ? void 0 : commandEditor.getModel();
|
|
194
|
-
|
|
195
166
|
if (keyEvent.keyCode === monaco.KeyCode.UpArrow && !this.isSuggestionMenuPopulated() && lineNumber === 1) {
|
|
196
167
|
if (commandHistoryIndex != null) {
|
|
197
168
|
this.loadCommand(commandHistoryIndex + 1);
|
|
198
169
|
} else {
|
|
199
170
|
this.loadCommand(0);
|
|
200
171
|
}
|
|
201
|
-
|
|
202
172
|
this.focusStart();
|
|
203
173
|
keyEvent.stopPropagation();
|
|
204
174
|
keyEvent.preventDefault();
|
|
205
175
|
return;
|
|
206
176
|
}
|
|
207
|
-
|
|
208
177
|
if (keyEvent.keyCode === monaco.KeyCode.DownArrow && !this.isSuggestionMenuPopulated() && lineNumber === (model === null || model === void 0 ? void 0 : model.getLineCount())) {
|
|
209
178
|
if (commandHistoryIndex != null && commandHistoryIndex > 0) {
|
|
210
179
|
this.loadCommand(commandHistoryIndex - 1);
|
|
211
180
|
} else {
|
|
212
181
|
this.loadCommand(null);
|
|
213
182
|
}
|
|
214
|
-
|
|
215
183
|
this.focusEnd();
|
|
216
184
|
keyEvent.stopPropagation();
|
|
217
185
|
keyEvent.preventDefault();
|
|
218
186
|
return;
|
|
219
187
|
}
|
|
220
|
-
|
|
221
188
|
if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {
|
|
222
189
|
if (keyEvent.keyCode === monaco.KeyCode.Enter) {
|
|
223
190
|
if (!this.isSuggestionMenuPopulated()) {
|
|
224
191
|
var _this$commandEditor3;
|
|
225
|
-
|
|
226
192
|
keyEvent.stopPropagation();
|
|
227
193
|
keyEvent.preventDefault();
|
|
228
|
-
|
|
229
194
|
var _command = (_this$commandEditor3 = this.commandEditor) === null || _this$commandEditor3 === void 0 ? void 0 : _this$commandEditor3.getValue().trim();
|
|
230
|
-
|
|
231
195
|
if (_command !== undefined) {
|
|
232
196
|
var _this$commandEditor4;
|
|
233
|
-
|
|
234
197
|
this.processCommand(_command);
|
|
235
198
|
(_this$commandEditor4 = this.commandEditor) === null || _this$commandEditor4 === void 0 ? void 0 : _this$commandEditor4.setValue('');
|
|
236
199
|
}
|
|
@@ -238,7 +201,6 @@ export class ConsoleInput extends PureComponent {
|
|
|
238
201
|
} else if (keyEvent.keyCode === monaco.KeyCode.Tab) {
|
|
239
202
|
if (!this.isSuggestionMenuActive()) {
|
|
240
203
|
var _this$commandEditor5;
|
|
241
|
-
|
|
242
204
|
keyEvent.stopPropagation();
|
|
243
205
|
keyEvent.preventDefault();
|
|
244
206
|
(_this$commandEditor5 = this.commandEditor) === null || _this$commandEditor5 === void 0 ? void 0 : _this$commandEditor5.trigger('Tab key trigger suggestions', 'editor.action.triggerSuggest', {});
|
|
@@ -248,9 +210,11 @@ export class ConsoleInput extends PureComponent {
|
|
|
248
210
|
}
|
|
249
211
|
}
|
|
250
212
|
}
|
|
251
|
-
});
|
|
213
|
+
});
|
|
252
214
|
|
|
253
|
-
|
|
215
|
+
// Override the Ctrl+F functionality so that the find window doesn't appear
|
|
216
|
+
this.commandEditor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF,
|
|
217
|
+
// eslint-disable-line no-bitwise
|
|
254
218
|
() => undefined);
|
|
255
219
|
MonacoUtils.removeConflictingKeybindings(this.commandEditor);
|
|
256
220
|
MonacoUtils.registerPasteHandler(this.commandEditor);
|
|
@@ -260,54 +224,40 @@ export class ConsoleInput extends PureComponent {
|
|
|
260
224
|
model: this.commandEditor.getModel()
|
|
261
225
|
});
|
|
262
226
|
}
|
|
263
|
-
|
|
264
227
|
destroyCommandEditor() {
|
|
265
228
|
var {
|
|
266
229
|
session
|
|
267
230
|
} = this.props;
|
|
268
|
-
|
|
269
231
|
if (this.commandEditor) {
|
|
270
232
|
MonacoUtils.closeDocument(this.commandEditor, session);
|
|
271
233
|
this.commandEditor.dispose();
|
|
272
234
|
this.commandEditor = undefined;
|
|
273
235
|
}
|
|
274
236
|
}
|
|
275
|
-
|
|
276
237
|
handleWindowResize() {
|
|
277
238
|
this.updateDimensions();
|
|
278
239
|
}
|
|
279
|
-
|
|
280
240
|
isSuggestionMenuActive() {
|
|
281
241
|
var _ref;
|
|
282
|
-
|
|
283
242
|
if (!this.commandSuggestionContainer) {
|
|
284
243
|
var _this$commandEditor6, _this$commandEditor6$;
|
|
285
|
-
|
|
286
244
|
this.commandSuggestionContainer = (_this$commandEditor6 = this.commandEditor) === null || _this$commandEditor6 === void 0 ? void 0 : (_this$commandEditor6$ = _this$commandEditor6.getDomNode()) === null || _this$commandEditor6$ === void 0 ? void 0 : _this$commandEditor6$.querySelector('.suggest-widget');
|
|
287
245
|
}
|
|
288
|
-
|
|
289
246
|
return (_ref = this.commandSuggestionContainer && this.commandSuggestionContainer.classList.contains('visible')) !== null && _ref !== void 0 ? _ref : false;
|
|
290
247
|
}
|
|
291
|
-
|
|
292
248
|
isSuggestionMenuPopulated() {
|
|
293
249
|
var _this$commandSuggesti, _this$commandSuggesti2, _this$commandSuggesti3;
|
|
294
|
-
|
|
295
250
|
return this.isSuggestionMenuActive() && ((_this$commandSuggesti = (_this$commandSuggesti2 = this.commandSuggestionContainer) === null || _this$commandSuggesti2 === void 0 ? void 0 : (_this$commandSuggesti3 = _this$commandSuggesti2.querySelector('.monaco-list-rows')) === null || _this$commandSuggesti3 === void 0 ? void 0 : _this$commandSuggesti3.childElementCount) !== null && _this$commandSuggesti !== void 0 ? _this$commandSuggesti : 0) > 0;
|
|
296
251
|
}
|
|
297
|
-
|
|
298
252
|
focus() {
|
|
299
253
|
var _this$commandEditor7;
|
|
300
|
-
|
|
301
254
|
(_this$commandEditor7 = this.commandEditor) === null || _this$commandEditor7 === void 0 ? void 0 : _this$commandEditor7.focus();
|
|
302
255
|
}
|
|
303
|
-
|
|
304
256
|
focusStart() {
|
|
305
257
|
var _this$commandEditor8, _this$commandEditor9, _this$commandEditor10, _this$commandEditor11, _this$commandEditor12;
|
|
306
|
-
|
|
307
258
|
var model = (_this$commandEditor8 = this.commandEditor) === null || _this$commandEditor8 === void 0 ? void 0 : _this$commandEditor8.getModel();
|
|
308
259
|
assertNotNull(model);
|
|
309
260
|
var column = model.getLineLength(1) + 1; // Length of 1st line
|
|
310
|
-
|
|
311
261
|
var firstCharTop = (_this$commandEditor9 = this.commandEditor) === null || _this$commandEditor9 === void 0 ? void 0 : _this$commandEditor9.getTopForPosition(1, column);
|
|
312
262
|
assertNotNull(firstCharTop);
|
|
313
263
|
(_this$commandEditor10 = this.commandEditor) === null || _this$commandEditor10 === void 0 ? void 0 : _this$commandEditor10.setPosition({
|
|
@@ -317,10 +267,8 @@ export class ConsoleInput extends PureComponent {
|
|
|
317
267
|
(_this$commandEditor11 = this.commandEditor) === null || _this$commandEditor11 === void 0 ? void 0 : _this$commandEditor11.setScrollTop(firstCharTop);
|
|
318
268
|
(_this$commandEditor12 = this.commandEditor) === null || _this$commandEditor12 === void 0 ? void 0 : _this$commandEditor12.focus();
|
|
319
269
|
}
|
|
320
|
-
|
|
321
270
|
focusEnd() {
|
|
322
271
|
var _this$commandEditor13, _this$commandEditor14, _this$commandEditor15, _this$commandEditor16, _this$commandEditor17;
|
|
323
|
-
|
|
324
272
|
var model = (_this$commandEditor13 = this.commandEditor) === null || _this$commandEditor13 === void 0 ? void 0 : _this$commandEditor13.getModel();
|
|
325
273
|
assertNotNull(model);
|
|
326
274
|
var lastLine = model.getLineCount();
|
|
@@ -334,53 +282,43 @@ export class ConsoleInput extends PureComponent {
|
|
|
334
282
|
(_this$commandEditor16 = this.commandEditor) === null || _this$commandEditor16 === void 0 ? void 0 : _this$commandEditor16.setScrollTop(lastCharTop);
|
|
335
283
|
(_this$commandEditor17 = this.commandEditor) === null || _this$commandEditor17 === void 0 ? void 0 : _this$commandEditor17.focus();
|
|
336
284
|
}
|
|
337
|
-
|
|
338
285
|
clear() {
|
|
339
286
|
var _this$commandEditor18, _this$commandEditor19, _this$commandEditor20;
|
|
340
|
-
|
|
341
287
|
(_this$commandEditor18 = this.commandEditor) === null || _this$commandEditor18 === void 0 ? void 0 : _this$commandEditor18.focus();
|
|
342
288
|
(_this$commandEditor19 = this.commandEditor) === null || _this$commandEditor19 === void 0 ? void 0 : (_this$commandEditor20 = _this$commandEditor19.getModel()) === null || _this$commandEditor20 === void 0 ? void 0 : _this$commandEditor20.setValue('');
|
|
343
289
|
this.commandHistoryIndex = null;
|
|
344
290
|
}
|
|
345
|
-
|
|
346
291
|
layoutEditor() {
|
|
347
292
|
if (this.commandEditor) {
|
|
348
293
|
this.commandEditor.layout();
|
|
349
294
|
}
|
|
350
295
|
}
|
|
296
|
+
|
|
351
297
|
/**
|
|
352
298
|
* Loads the given command from history
|
|
353
299
|
* If edits have been made to the command since last run command, loads the modified version
|
|
354
300
|
* @param index The index to load. Null to load command started in the editor and not in the history
|
|
355
301
|
*/
|
|
356
|
-
|
|
357
|
-
|
|
358
302
|
loadCommand(index) {
|
|
359
303
|
var _this$commandEditor21, _this$commandEditor22;
|
|
360
|
-
|
|
361
304
|
if (index === null || index >= this.history.length) {
|
|
362
305
|
return;
|
|
363
306
|
}
|
|
364
|
-
|
|
365
307
|
var modifiedValue = this.modifiedCommands.get(index);
|
|
366
308
|
var historyValue = index === null ? '' : this.history[this.history.length - index - 1];
|
|
367
309
|
this.commandHistoryIndex = index;
|
|
368
310
|
(_this$commandEditor21 = this.commandEditor) === null || _this$commandEditor21 === void 0 ? void 0 : (_this$commandEditor22 = _this$commandEditor21.getModel()) === null || _this$commandEditor22 === void 0 ? void 0 : _this$commandEditor22.setValue(modifiedValue !== null && modifiedValue !== void 0 ? modifiedValue : historyValue);
|
|
369
|
-
|
|
370
311
|
if (index !== null && index > this.history.length - BUFFER_SIZE) {
|
|
371
312
|
this.loadMoreHistory();
|
|
372
313
|
}
|
|
373
314
|
}
|
|
374
|
-
|
|
375
315
|
loadMoreHistory() {
|
|
376
316
|
var _this = this;
|
|
377
|
-
|
|
378
317
|
return _asyncToGenerator(function* () {
|
|
379
318
|
try {
|
|
380
319
|
if (_this.loadingPromise != null || _this.bufferIndex == null) {
|
|
381
320
|
return;
|
|
382
321
|
}
|
|
383
|
-
|
|
384
322
|
var {
|
|
385
323
|
commandHistoryStorage,
|
|
386
324
|
language,
|
|
@@ -396,13 +334,11 @@ export class ConsoleInput extends PureComponent {
|
|
|
396
334
|
_this.loadingPromise = PromiseUtils.makeCancelable(table.getViewportData(), () => table.close());
|
|
397
335
|
var viewportData = yield _this.loadingPromise;
|
|
398
336
|
_this.bufferIndex += BUFFER_SIZE;
|
|
399
|
-
|
|
400
337
|
if (_this.bufferIndex >= table.size) {
|
|
401
338
|
// We've loaded the full history, no need to load any more
|
|
402
339
|
_this.bufferIndex = null;
|
|
403
340
|
}
|
|
404
|
-
|
|
405
|
-
_this.history = [...(viewportData === null || viewportData === void 0 ? void 0 : viewportData.items.filter((_ref2, pos, arr) => {
|
|
341
|
+
_this.history = [...viewportData.items.filter((_ref2, pos, arr) => {
|
|
406
342
|
var {
|
|
407
343
|
name
|
|
408
344
|
} = _ref2;
|
|
@@ -412,50 +348,44 @@ export class ConsoleInput extends PureComponent {
|
|
|
412
348
|
name
|
|
413
349
|
} = _ref3;
|
|
414
350
|
return name;
|
|
415
|
-
}).reverse()
|
|
351
|
+
}).reverse(), ..._this.history];
|
|
416
352
|
_this.loadingPromise = undefined;
|
|
417
353
|
table.close();
|
|
418
354
|
} catch (err) {
|
|
419
355
|
_this.loadingPromise = undefined;
|
|
420
|
-
|
|
421
356
|
if (PromiseUtils.isCanceled(err)) {
|
|
422
357
|
log.debug2('Promise canceled, not loading history');
|
|
423
358
|
return;
|
|
424
359
|
}
|
|
425
|
-
|
|
426
360
|
log.error('Error fetching history', err);
|
|
427
361
|
}
|
|
428
362
|
})();
|
|
429
363
|
}
|
|
430
|
-
|
|
431
364
|
processCommand(command) {
|
|
432
365
|
this.commandHistoryIndex = null;
|
|
433
366
|
this.modifiedCommands.clear();
|
|
434
367
|
assertNotNull(command);
|
|
435
|
-
|
|
436
368
|
if (command !== '' && (this.history.length === 0 || command !== this.history[this.history.length - 1])) {
|
|
437
369
|
this.history.push(command);
|
|
438
370
|
}
|
|
439
|
-
|
|
440
371
|
this.updateDimensions();
|
|
441
372
|
var {
|
|
442
373
|
onSubmit
|
|
443
374
|
} = this.props;
|
|
444
375
|
onSubmit(command);
|
|
445
376
|
}
|
|
446
|
-
|
|
447
377
|
updateDimensions() {
|
|
448
378
|
if (!this.commandEditor) {
|
|
449
379
|
return;
|
|
450
380
|
}
|
|
451
|
-
|
|
452
381
|
var {
|
|
453
382
|
maxHeight
|
|
454
383
|
} = this.props;
|
|
455
384
|
assertNotNull(maxHeight);
|
|
456
385
|
var contentHeight = this.commandEditor.getContentHeight();
|
|
457
|
-
var commandEditorHeight = Math.max(Math.min(contentHeight, maxHeight), MIN_INPUT_HEIGHT);
|
|
386
|
+
var commandEditorHeight = Math.max(Math.min(contentHeight, maxHeight), MIN_INPUT_HEIGHT);
|
|
458
387
|
|
|
388
|
+
// Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show
|
|
459
389
|
var shouldScroll = contentHeight > commandEditorHeight;
|
|
460
390
|
var options = {
|
|
461
391
|
overviewRulerLanes: shouldScroll ? undefined : 0
|
|
@@ -464,12 +394,10 @@ export class ConsoleInput extends PureComponent {
|
|
|
464
394
|
commandEditorHeight
|
|
465
395
|
}, () => {
|
|
466
396
|
var _this$commandEditor23, _this$commandEditor24;
|
|
467
|
-
|
|
468
397
|
(_this$commandEditor23 = this.commandEditor) === null || _this$commandEditor23 === void 0 ? void 0 : _this$commandEditor23.updateOptions(options);
|
|
469
398
|
(_this$commandEditor24 = this.commandEditor) === null || _this$commandEditor24 === void 0 ? void 0 : _this$commandEditor24.layout();
|
|
470
399
|
});
|
|
471
400
|
}
|
|
472
|
-
|
|
473
401
|
render() {
|
|
474
402
|
var {
|
|
475
403
|
disabled,
|
|
@@ -501,16 +429,12 @@ export class ConsoleInput extends PureComponent {
|
|
|
501
429
|
session: session
|
|
502
430
|
})));
|
|
503
431
|
}
|
|
504
|
-
|
|
505
432
|
}
|
|
506
|
-
|
|
507
433
|
_defineProperty(ConsoleInput, "defaultProps", {
|
|
508
434
|
maxHeight: LINE_HEIGHT * 10,
|
|
509
435
|
scope: null,
|
|
510
436
|
disabled: false
|
|
511
437
|
});
|
|
512
|
-
|
|
513
438
|
_defineProperty(ConsoleInput, "INPUT_CLASS_NAME", 'console-input');
|
|
514
|
-
|
|
515
439
|
export default ConsoleInput;
|
|
516
440
|
//# sourceMappingURL=ConsoleInput.js.map
|
package/dist/ConsoleInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoCompletionProvider","MonacoTheme","MonacoUtils","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","handleWindowResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","window","addEventListener","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","removeEventListener","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","execute","debug","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","tabCompletion","value","wordWrap","element","current","editor","create","setEOL","openDocument","onDidChangeModelContent","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","getModel","keyCode","KeyCode","UpArrow","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","DownArrow","getLineCount","altKey","shiftKey","metaKey","Enter","command","trim","undefined","Tab","isSuggestionMenuActive","trigger","addCommand","KeyMod","CtrlCmd","KeyF","removeConflictingKeybindings","registerPasteHandler","closeDocument","dispose","commandSuggestionContainer","getDomNode","querySelector","classList","contains","childElementCount","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","lastLine","lastCharTop","clear","layout","index","length","modifiedValue","get","historyValue","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","pos","arr","name","map","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","updateOptions","render","disabled","INPUT_CLASS_NAME","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { ViewportData } from '@deephaven/storage';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './command-history';\nimport { MonacoCompletionProvider, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\ninterface ConsoleInputProps {\n session: IdeSession;\n language: string;\n scope?: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSubmit: (command: string) => void;\n maxHeight?: number;\n disabled?: boolean;\n}\n\ninterface ConsoleInputState {\n commandEditorHeight: number;\n isFocused: boolean;\n model: monaco.editor.ITextModel | null;\n}\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent<\n ConsoleInputProps,\n ConsoleInputState\n> {\n static defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false,\n };\n\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props: ConsoleInputProps) {\n super(props);\n\n this.handleWindowResize = this.handleWindowResize.bind(this);\n\n this.commandContainer = React.createRef();\n this.commandHistoryIndex = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount(): void {\n this.initCommandEditor();\n\n window.addEventListener('resize', this.handleWindowResize);\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('resize', this.handleWindowResize);\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n commandContainer: RefObject<HTMLDivElement>;\n\n commandEditor?: monaco.editor.IStandaloneCodeEditor;\n\n commandHistoryIndex: number | null;\n\n commandSuggestionContainer?: Element | null;\n\n loadingPromise?:\n | CancelablePromise<ViewportData<CommandHistoryStorageItem>>\n | CancelablePromise<CommandHistoryTable>;\n\n timestamp: number;\n\n bufferIndex: number | null;\n\n history: string[];\n\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n modifiedCommands: Map<number | null, string | null>;\n\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param text The text to set in the input\n * @param focus If the input should be focused\n * @param execute If the input should be executed\n * @returns void\n */\n setConsoleText(text: string, focus = true, execute = false): void {\n if (!text) {\n return;\n }\n\n log.debug('Command received: ', text);\n\n // Only set the console text if we're not running this command\n if (!execute) {\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor?.setValue(text);\n }\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand(text);\n }\n }\n\n initCommandEditor(): void {\n const { language, session } = this.props;\n const commandSettings = {\n copyWithSyntaxHighlighting: false,\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING,\n },\n tabCompletion: 'on',\n value: '',\n wordWrap: 'on',\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n this.commandEditor = monaco.editor.create(element, commandSettings);\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n const value = this.commandEditor?.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value ?? null);\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n const { commandEditor, commandHistoryIndex } = this;\n const position = commandEditor?.getPosition();\n assertNotNull(position);\n const { lineNumber } = position;\n const model = commandEditor?.getModel();\n if (\n keyEvent.keyCode === monaco.KeyCode.UpArrow &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === 1\n ) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.keyCode === monaco.KeyCode.DownArrow &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === model?.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (keyEvent.keyCode === monaco.KeyCode.Enter) {\n if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n const command = this.commandEditor?.getValue().trim();\n if (command !== undefined) {\n this.processCommand(command);\n this.commandEditor?.setValue('');\n }\n }\n } else if (keyEvent.keyCode === monaco.KeyCode.Tab) {\n if (!this.isSuggestionMenuActive()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n this.commandEditor?.trigger(\n 'Tab key trigger suggestions',\n 'editor.action.triggerSuggest',\n {}\n );\n } else if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n }\n }\n }\n });\n\n // Override the Ctrl+F functionality so that the find window doesn't appear\n this.commandEditor.addCommand(\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n () => undefined\n );\n\n MonacoUtils.removeConflictingKeybindings(this.commandEditor);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor(): void {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n\n handleWindowResize(): void {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive(): boolean {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n ?.getDomNode()\n ?.querySelector('.suggest-widget');\n }\n\n return (\n (this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')) ??\n false\n );\n }\n\n isSuggestionMenuPopulated(): boolean {\n return (\n this.isSuggestionMenuActive() &&\n (this.commandSuggestionContainer?.querySelector('.monaco-list-rows')\n ?.childElementCount ?? 0) > 0\n );\n }\n\n focus(): void {\n this.commandEditor?.focus();\n }\n\n focusStart(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor?.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n this.commandEditor?.setPosition({ lineNumber: 1, column });\n this.commandEditor?.setScrollTop(firstCharTop);\n this.commandEditor?.focus();\n }\n\n focusEnd(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor?.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n this.commandEditor?.setPosition({ lineNumber: lastLine, column });\n this.commandEditor?.setScrollTop(lastCharTop);\n this.commandEditor?.focus();\n }\n\n clear(): void {\n this.commandEditor?.focus();\n this.commandEditor?.getModel()?.setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor(): void {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index: number | null): void {\n if (index === null || index >= this.history.length) {\n return;\n }\n\n const modifiedValue = this.modifiedCommands.get(index);\n const historyValue =\n index === null ? '' : this.history[this.history.length - index - 1];\n\n this.commandHistoryIndex = index;\n this.commandEditor?.getModel()?.setValue(modifiedValue ?? historyValue);\n\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n async loadMoreHistory(): Promise<void> {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope ?? '', this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await this.loadingPromise;\n this.bufferIndex += BUFFER_SIZE;\n if (this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n this.bufferIndex = null;\n }\n this.history = [\n ...viewportData?.items\n .filter(\n ({ name }, pos, arr) => pos === 0 || name !== arr[pos - 1].name\n )\n .map(({ name }) => name)\n .reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = undefined;\n\n table.close();\n } catch (err) {\n this.loadingPromise = undefined;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n\n log.error('Error fetching history', err);\n }\n }\n\n processCommand(command: string): void {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n assertNotNull(command);\n if (\n command !== '' &&\n (this.history.length === 0 ||\n command !== this.history[this.history.length - 1])\n ) {\n this.history.push(command);\n }\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions(): void {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n assertNotNull(maxHeight);\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n\n const options = { overviewRulerLanes: shouldScroll ? undefined : 0 };\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor?.updateOptions(options);\n this.commandEditor?.layout();\n }\n );\n }\n\n render(): ReactElement {\n const { disabled, language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className={classNames('console-input-wrapper', { disabled })}>\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoCompletionProvider\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default ConsoleInput;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoCompletionProvider","MonacoTheme","MonacoUtils","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","handleWindowResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","window","addEventListener","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","removeEventListener","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","execute","debug","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","tabCompletion","value","wordWrap","element","current","editor","create","setEOL","openDocument","onDidChangeModelContent","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","getModel","keyCode","KeyCode","UpArrow","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","DownArrow","getLineCount","altKey","shiftKey","metaKey","Enter","command","trim","undefined","Tab","isSuggestionMenuActive","trigger","addCommand","KeyMod","CtrlCmd","KeyF","removeConflictingKeybindings","registerPasteHandler","closeDocument","dispose","commandSuggestionContainer","getDomNode","querySelector","classList","contains","childElementCount","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","lastLine","lastCharTop","clear","layout","index","length","modifiedValue","get","historyValue","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","pos","arr","name","map","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","updateOptions","render","disabled","INPUT_CLASS_NAME","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { ViewportData } from '@deephaven/storage';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './command-history';\nimport { MonacoCompletionProvider, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\ninterface ConsoleInputProps {\n session: IdeSession;\n language: string;\n scope?: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSubmit: (command: string) => void;\n maxHeight?: number;\n disabled?: boolean;\n}\n\ninterface ConsoleInputState {\n commandEditorHeight: number;\n isFocused: boolean;\n model: monaco.editor.ITextModel | null;\n}\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent<\n ConsoleInputProps,\n ConsoleInputState\n> {\n static defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false,\n };\n\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props: ConsoleInputProps) {\n super(props);\n\n this.handleWindowResize = this.handleWindowResize.bind(this);\n\n this.commandContainer = React.createRef();\n this.commandHistoryIndex = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount(): void {\n this.initCommandEditor();\n\n window.addEventListener('resize', this.handleWindowResize);\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('resize', this.handleWindowResize);\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n commandContainer: RefObject<HTMLDivElement>;\n\n commandEditor?: monaco.editor.IStandaloneCodeEditor;\n\n commandHistoryIndex: number | null;\n\n commandSuggestionContainer?: Element | null;\n\n loadingPromise?:\n | CancelablePromise<ViewportData<CommandHistoryStorageItem>>\n | CancelablePromise<CommandHistoryTable>;\n\n timestamp: number;\n\n bufferIndex: number | null;\n\n history: string[];\n\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n modifiedCommands: Map<number | null, string | null>;\n\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param text The text to set in the input\n * @param focus If the input should be focused\n * @param execute If the input should be executed\n * @returns void\n */\n setConsoleText(text: string, focus = true, execute = false): void {\n if (!text) {\n return;\n }\n\n log.debug('Command received: ', text);\n\n // Only set the console text if we're not running this command\n if (!execute) {\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor?.setValue(text);\n }\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand(text);\n }\n }\n\n initCommandEditor(): void {\n const { language, session } = this.props;\n const commandSettings = {\n copyWithSyntaxHighlighting: false,\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING,\n },\n tabCompletion: 'on',\n value: '',\n wordWrap: 'on',\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n this.commandEditor = monaco.editor.create(element, commandSettings);\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n const value = this.commandEditor?.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value ?? null);\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n const { commandEditor, commandHistoryIndex } = this;\n const position = commandEditor?.getPosition();\n assertNotNull(position);\n const { lineNumber } = position;\n const model = commandEditor?.getModel();\n if (\n keyEvent.keyCode === monaco.KeyCode.UpArrow &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === 1\n ) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.keyCode === monaco.KeyCode.DownArrow &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === model?.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (keyEvent.keyCode === monaco.KeyCode.Enter) {\n if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n const command = this.commandEditor?.getValue().trim();\n if (command !== undefined) {\n this.processCommand(command);\n this.commandEditor?.setValue('');\n }\n }\n } else if (keyEvent.keyCode === monaco.KeyCode.Tab) {\n if (!this.isSuggestionMenuActive()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n this.commandEditor?.trigger(\n 'Tab key trigger suggestions',\n 'editor.action.triggerSuggest',\n {}\n );\n } else if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n }\n }\n }\n });\n\n // Override the Ctrl+F functionality so that the find window doesn't appear\n this.commandEditor.addCommand(\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n () => undefined\n );\n\n MonacoUtils.removeConflictingKeybindings(this.commandEditor);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor(): void {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n\n handleWindowResize(): void {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive(): boolean {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n ?.getDomNode()\n ?.querySelector('.suggest-widget');\n }\n\n return (\n (this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')) ??\n false\n );\n }\n\n isSuggestionMenuPopulated(): boolean {\n return (\n this.isSuggestionMenuActive() &&\n (this.commandSuggestionContainer?.querySelector('.monaco-list-rows')\n ?.childElementCount ?? 0) > 0\n );\n }\n\n focus(): void {\n this.commandEditor?.focus();\n }\n\n focusStart(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor?.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n this.commandEditor?.setPosition({ lineNumber: 1, column });\n this.commandEditor?.setScrollTop(firstCharTop);\n this.commandEditor?.focus();\n }\n\n focusEnd(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor?.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n this.commandEditor?.setPosition({ lineNumber: lastLine, column });\n this.commandEditor?.setScrollTop(lastCharTop);\n this.commandEditor?.focus();\n }\n\n clear(): void {\n this.commandEditor?.focus();\n this.commandEditor?.getModel()?.setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor(): void {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index: number | null): void {\n if (index === null || index >= this.history.length) {\n return;\n }\n\n const modifiedValue = this.modifiedCommands.get(index);\n const historyValue =\n index === null ? '' : this.history[this.history.length - index - 1];\n\n this.commandHistoryIndex = index;\n this.commandEditor?.getModel()?.setValue(modifiedValue ?? historyValue);\n\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n async loadMoreHistory(): Promise<void> {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope ?? '', this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await this.loadingPromise;\n this.bufferIndex += BUFFER_SIZE;\n if (this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n this.bufferIndex = null;\n }\n this.history = [\n ...viewportData.items\n .filter(\n ({ name }, pos, arr) => pos === 0 || name !== arr[pos - 1].name\n )\n .map(({ name }) => name)\n .reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = undefined;\n\n table.close();\n } catch (err) {\n this.loadingPromise = undefined;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n\n log.error('Error fetching history', err);\n }\n }\n\n processCommand(command: string): void {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n assertNotNull(command);\n if (\n command !== '' &&\n (this.history.length === 0 ||\n command !== this.history[this.history.length - 1])\n ) {\n this.history.push(command);\n }\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions(): void {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n assertNotNull(maxHeight);\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n\n const options = { overviewRulerLanes: shouldScroll ? undefined : 0 };\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor?.updateOptions(options);\n this.commandEditor?.layout();\n }\n );\n }\n\n render(): ReactElement {\n const { disabled, language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className={classNames('console-input-wrapper', { disabled })}>\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoCompletionProvider\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default ConsoleInput;\n"],"mappings":"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"}
|