@deephaven/console 1.30.0 → 1.30.1

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.
@@ -1,5 +1,5 @@
1
1
  import { PureComponent, type ReactElement, type RefObject } from 'react';
2
- import * as monaco from 'monaco-editor';
2
+ import type * as monaco from 'monaco-editor';
3
3
  import { type CancelablePromise } from '@deephaven/utils';
4
4
  import { type ViewportData } from '@deephaven/storage';
5
5
  import type { dh } from '@deephaven/jsapi-types';
@@ -54,13 +54,20 @@ export declare class ConsoleInput extends PureComponent<ConsoleInputProps, Conso
54
54
  * @returns void
55
55
  */
56
56
  setConsoleText(text: string, focus?: boolean, execute?: boolean): void;
57
- initCommandEditor(): void;
57
+ getEditorSettings(): monaco.editor.IStandaloneEditorConstructionOptions;
58
+ handleEditorInitialized(commandEditor: monaco.editor.IStandaloneCodeEditor): void;
58
59
  /**
59
- * Closes the monaco document, disposes the Monaco editor, and clears all associated cleanup state.
60
- *
61
- * @param session The session that originally received `openDocument` for this editor
60
+ * Replaces the editor's model with an empty one for the current language.
61
+ * The model is kept in state so MonacoProviders follow it.
62
62
  */
63
- destroyCommandEditor(session: dh.IdeSession): void;
63
+ createModel(): void;
64
+ handleEditorWillDestroy(): void;
65
+ openDocument(session: dh.IdeSession): void;
66
+ /**
67
+ * Closes the monaco document for the session that received `openDocument`
68
+ * @param session The session the document was opened with
69
+ */
70
+ closeDocument(session: dh.IdeSession): void;
64
71
  handleResize(): void;
65
72
  isSuggestionMenuActive(): boolean;
66
73
  isSuggestionMenuPopulated(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleInput.d.ts","sourceRoot":"","sources":["../src/ConsoleInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConsoleInput.d.ts","sourceRoot":"","sources":["../src/ConsoleInput.tsx"],"names":[],"mappings":"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"}
@@ -5,10 +5,10 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
5
5
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
6
  import React, { PureComponent } from 'react';
7
7
  import classNames from 'classnames';
8
- import * as monaco from 'monaco-editor';
9
8
  import Log from '@deephaven/log';
10
9
  import { assertNotNull, PromiseUtils } from '@deephaven/utils';
11
10
  import { MonacoProviders, MonacoTheme, MonacoUtils } from "./monaco/index.js";
11
+ import Editor from "./notebook/Editor.js";
12
12
  import "./ConsoleInput.css";
13
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  var log = Log.module('ConsoleInput');
@@ -36,6 +36,8 @@ export class ConsoleInput extends PureComponent {
36
36
  _defineProperty(this, "history", void 0);
37
37
  // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed
38
38
  _defineProperty(this, "modifiedCommands", void 0);
39
+ this.handleEditorInitialized = this.handleEditorInitialized.bind(this);
40
+ this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);
39
41
  this.handleResize = this.handleResize.bind(this);
40
42
  this.commandContainer = /*#__PURE__*/React.createRef();
41
43
  this.commandHistoryIndex = null;
@@ -52,16 +54,16 @@ export class ConsoleInput extends PureComponent {
52
54
  };
53
55
  }
54
56
  componentDidMount() {
55
- this.initCommandEditor();
56
57
  this.loadMoreHistory();
57
58
  }
58
59
  componentDidUpdate(prevProps) {
59
60
  var session = this.props.session;
60
61
  this.layoutEditor();
61
- // If the session has changed, we need to destroy the old command editor and create a new one for the new session
62
+ // The document belongs to the session that opened it
62
63
  if (prevProps.session !== session) {
63
- this.destroyCommandEditor(prevProps.session);
64
- this.initCommandEditor();
64
+ this.closeDocument(prevProps.session);
65
+ this.createModel();
66
+ this.openDocument(session);
65
67
  }
66
68
  }
67
69
  componentWillUnmount() {
@@ -69,8 +71,6 @@ export class ConsoleInput extends PureComponent {
69
71
  if (this.loadingPromise != null) {
70
72
  this.loadingPromise.cancel();
71
73
  }
72
- var session = this.props.session;
73
- this.destroyCommandEditor(session);
74
74
  }
75
75
  /**
76
76
  * Sets the console text from an external source.
@@ -104,12 +104,9 @@ export class ConsoleInput extends PureComponent {
104
104
  this.processCommand(text);
105
105
  }
106
106
  }
107
- initCommandEditor() {
108
- var _this$props = this.props,
109
- language = _this$props.language,
110
- session = _this$props.session;
111
- var model = monaco.editor.createModel('', language, MonacoUtils.generateConsoleUri());
112
- var commandSettings = {
107
+ getEditorSettings() {
108
+ var language = this.props.language;
109
+ return {
113
110
  copyWithSyntaxHighlighting: false,
114
111
  cursorStyle: 'block',
115
112
  fixedOverflowWidgets: true,
@@ -134,16 +131,20 @@ export class ConsoleInput extends PureComponent {
134
131
  top: TOP_PADDING,
135
132
  bottom: BOTTOM_PADDING
136
133
  },
137
- value: '',
138
134
  wordWrap: 'on',
139
135
  autoClosingBrackets: 'beforeWhitespace',
140
- model
136
+ // The model is created with a console URI in handleEditorInitialized
137
+ model: null
141
138
  };
139
+ }
140
+ handleEditorInitialized(commandEditor) {
141
+ var session = this.props.session;
142
+ var monaco = MonacoUtils.getMonaco();
142
143
  var element = this.commandContainer.current;
143
144
  assertNotNull(element);
144
- this.commandEditor = monaco.editor.create(element, commandSettings);
145
- MonacoUtils.setEOL(this.commandEditor);
146
- this.openDocumentCleanup = MonacoUtils.openDocument(this.commandEditor, session);
145
+ this.commandEditor = commandEditor;
146
+ this.createModel();
147
+ this.openDocument(session);
147
148
  this.commandEditor.onDidChangeModelContent(() => {
148
149
  var _this$commandEditor2;
149
150
  var value = (_this$commandEditor2 = this.commandEditor) === null || _this$commandEditor2 === void 0 ? void 0 : _this$commandEditor2.getValue();
@@ -167,12 +168,12 @@ export class ConsoleInput extends PureComponent {
167
168
  * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.
168
169
  */
169
170
  this.commandEditor.onKeyDown(keyEvent => {
170
- var commandEditor = this.commandEditor,
171
- commandHistoryIndex = this.commandHistoryIndex;
172
- var position = commandEditor === null || commandEditor === void 0 ? void 0 : commandEditor.getPosition();
171
+ var commandHistoryIndex = this.commandHistoryIndex;
172
+ var position = commandEditor.getPosition();
173
173
  assertNotNull(position);
174
174
  var lineNumber = position.lineNumber;
175
175
  if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {
176
+ var _commandEditor$getMod;
176
177
  if (keyEvent.code === 'ArrowUp' && !this.isSuggestionMenuPopulated() && lineNumber === 1) {
177
178
  if (commandHistoryIndex != null) {
178
179
  this.loadCommand(commandHistoryIndex + 1);
@@ -184,7 +185,7 @@ export class ConsoleInput extends PureComponent {
184
185
  keyEvent.preventDefault();
185
186
  return;
186
187
  }
187
- if (keyEvent.code === 'ArrowDown' && !this.isSuggestionMenuPopulated() && lineNumber === (model === null || model === void 0 ? void 0 : model.getLineCount())) {
188
+ if (keyEvent.code === 'ArrowDown' && !this.isSuggestionMenuPopulated() && lineNumber === ((_commandEditor$getMod = commandEditor.getModel()) === null || _commandEditor$getMod === void 0 ? void 0 : _commandEditor$getMod.getLineCount())) {
188
189
  if (commandHistoryIndex != null && commandHistoryIndex > 0) {
189
190
  this.loadCommand(commandHistoryIndex - 1);
190
191
  } else {
@@ -215,25 +216,51 @@ export class ConsoleInput extends PureComponent {
215
216
  MonacoUtils.registerPasteHandler(this.commandEditor);
216
217
  this.commandEditor.focus();
217
218
  this.resizeObserver.observe(element);
219
+ }
220
+
221
+ /**
222
+ * Replaces the editor's model with an empty one for the current language.
223
+ * The model is kept in state so MonacoProviders follow it.
224
+ */
225
+ createModel() {
226
+ var commandEditor = this.commandEditor;
227
+ if (commandEditor == null) {
228
+ return;
229
+ }
230
+ var language = this.props.language;
231
+ var previousModel = commandEditor.getModel();
232
+ var model = MonacoUtils.getMonaco().editor.createModel('', language, MonacoUtils.generateConsoleUri());
233
+ commandEditor.setModel(model);
234
+ previousModel === null || previousModel === void 0 || previousModel.dispose();
235
+ MonacoUtils.setEOL(commandEditor);
218
236
  this.updateDimensions();
219
237
  this.setState({
220
- model: this.commandEditor.getModel()
238
+ model
221
239
  });
222
240
  }
241
+ handleEditorWillDestroy() {
242
+ var _this$commandEditor5;
243
+ var session = this.props.session;
244
+ this.closeDocument(session);
245
+ (_this$commandEditor5 = this.commandEditor) === null || _this$commandEditor5 === void 0 || (_this$commandEditor5 = _this$commandEditor5.getModel()) === null || _this$commandEditor5 === void 0 || _this$commandEditor5.dispose();
246
+ this.commandEditor = undefined;
247
+ }
248
+ openDocument(session) {
249
+ if (this.commandEditor) {
250
+ this.openDocumentCleanup = MonacoUtils.openDocument(this.commandEditor, session);
251
+ }
252
+ }
223
253
 
224
254
  /**
225
- * Closes the monaco document, disposes the Monaco editor, and clears all associated cleanup state.
226
- *
227
- * @param session The session that originally received `openDocument` for this editor
255
+ * Closes the monaco document for the session that received `openDocument`
256
+ * @param session The session the document was opened with
228
257
  */
229
- destroyCommandEditor(session) {
258
+ closeDocument(session) {
230
259
  if (this.commandEditor) {
231
260
  var _this$openDocumentCle;
232
261
  (_this$openDocumentCle = this.openDocumentCleanup) === null || _this$openDocumentCle === void 0 || _this$openDocumentCle.dispose();
233
262
  this.openDocumentCleanup = undefined;
234
263
  MonacoUtils.closeDocument(this.commandEditor, session);
235
- this.commandEditor.dispose();
236
- this.commandEditor = undefined;
237
264
  }
238
265
  }
239
266
  handleResize() {
@@ -242,8 +269,8 @@ export class ConsoleInput extends PureComponent {
242
269
  isSuggestionMenuActive() {
243
270
  var _ref;
244
271
  if (!this.commandSuggestionContainer) {
245
- var _this$commandEditor5;
246
- this.commandSuggestionContainer = (_this$commandEditor5 = this.commandEditor) === null || _this$commandEditor5 === void 0 || (_this$commandEditor5 = _this$commandEditor5.getDomNode()) === null || _this$commandEditor5 === void 0 ? void 0 : _this$commandEditor5.querySelector('.suggest-widget');
272
+ var _this$commandEditor6;
273
+ this.commandSuggestionContainer = (_this$commandEditor6 = this.commandEditor) === null || _this$commandEditor6 === void 0 || (_this$commandEditor6 = _this$commandEditor6.getDomNode()) === null || _this$commandEditor6 === void 0 ? void 0 : _this$commandEditor6.querySelector('.suggest-widget');
247
274
  }
248
275
  return (_ref = this.commandSuggestionContainer && this.commandSuggestionContainer.classList.contains('visible')) !== null && _ref !== void 0 ? _ref : false;
249
276
  }
@@ -252,42 +279,42 @@ export class ConsoleInput extends PureComponent {
252
279
  return this.isSuggestionMenuActive() && ((_this$commandSuggesti = (_this$commandSuggesti2 = this.commandSuggestionContainer) === null || _this$commandSuggesti2 === void 0 || (_this$commandSuggesti2 = _this$commandSuggesti2.querySelector('.monaco-list-rows')) === null || _this$commandSuggesti2 === void 0 ? void 0 : _this$commandSuggesti2.childElementCount) !== null && _this$commandSuggesti !== void 0 ? _this$commandSuggesti : 0) > 0;
253
280
  }
254
281
  focus() {
255
- var _this$commandEditor6;
256
- (_this$commandEditor6 = this.commandEditor) === null || _this$commandEditor6 === void 0 || _this$commandEditor6.focus();
282
+ var _this$commandEditor7;
283
+ (_this$commandEditor7 = this.commandEditor) === null || _this$commandEditor7 === void 0 || _this$commandEditor7.focus();
257
284
  }
258
285
  focusStart() {
259
- var _this$commandEditor7, _this$commandEditor8, _this$commandEditor9, _this$commandEditor0, _this$commandEditor1;
260
- var model = (_this$commandEditor7 = this.commandEditor) === null || _this$commandEditor7 === void 0 ? void 0 : _this$commandEditor7.getModel();
286
+ var _this$commandEditor8, _this$commandEditor9, _this$commandEditor0, _this$commandEditor1, _this$commandEditor10;
287
+ var model = (_this$commandEditor8 = this.commandEditor) === null || _this$commandEditor8 === void 0 ? void 0 : _this$commandEditor8.getModel();
261
288
  assertNotNull(model);
262
289
  var column = model.getLineLength(1) + 1; // Length of 1st line
263
- var firstCharTop = (_this$commandEditor8 = this.commandEditor) === null || _this$commandEditor8 === void 0 ? void 0 : _this$commandEditor8.getTopForPosition(1, column);
290
+ var firstCharTop = (_this$commandEditor9 = this.commandEditor) === null || _this$commandEditor9 === void 0 ? void 0 : _this$commandEditor9.getTopForPosition(1, column);
264
291
  assertNotNull(firstCharTop);
265
- (_this$commandEditor9 = this.commandEditor) === null || _this$commandEditor9 === void 0 || _this$commandEditor9.setPosition({
292
+ (_this$commandEditor0 = this.commandEditor) === null || _this$commandEditor0 === void 0 || _this$commandEditor0.setPosition({
266
293
  lineNumber: 1,
267
294
  column
268
295
  });
269
- (_this$commandEditor0 = this.commandEditor) === null || _this$commandEditor0 === void 0 || _this$commandEditor0.setScrollTop(firstCharTop);
270
- (_this$commandEditor1 = this.commandEditor) === null || _this$commandEditor1 === void 0 || _this$commandEditor1.focus();
296
+ (_this$commandEditor1 = this.commandEditor) === null || _this$commandEditor1 === void 0 || _this$commandEditor1.setScrollTop(firstCharTop);
297
+ (_this$commandEditor10 = this.commandEditor) === null || _this$commandEditor10 === void 0 || _this$commandEditor10.focus();
271
298
  }
272
299
  focusEnd() {
273
- var _this$commandEditor10, _this$commandEditor11, _this$commandEditor12, _this$commandEditor13, _this$commandEditor14;
274
- var model = (_this$commandEditor10 = this.commandEditor) === null || _this$commandEditor10 === void 0 ? void 0 : _this$commandEditor10.getModel();
300
+ var _this$commandEditor11, _this$commandEditor12, _this$commandEditor13, _this$commandEditor14, _this$commandEditor15;
301
+ var model = (_this$commandEditor11 = this.commandEditor) === null || _this$commandEditor11 === void 0 ? void 0 : _this$commandEditor11.getModel();
275
302
  assertNotNull(model);
276
303
  var lastLine = model.getLineCount();
277
304
  var column = model.getLineLength(lastLine) + 1;
278
- var lastCharTop = (_this$commandEditor11 = this.commandEditor) === null || _this$commandEditor11 === void 0 ? void 0 : _this$commandEditor11.getTopForPosition(lastLine, column);
305
+ var lastCharTop = (_this$commandEditor12 = this.commandEditor) === null || _this$commandEditor12 === void 0 ? void 0 : _this$commandEditor12.getTopForPosition(lastLine, column);
279
306
  assertNotNull(lastCharTop);
280
- (_this$commandEditor12 = this.commandEditor) === null || _this$commandEditor12 === void 0 || _this$commandEditor12.setPosition({
307
+ (_this$commandEditor13 = this.commandEditor) === null || _this$commandEditor13 === void 0 || _this$commandEditor13.setPosition({
281
308
  lineNumber: lastLine,
282
309
  column
283
310
  });
284
- (_this$commandEditor13 = this.commandEditor) === null || _this$commandEditor13 === void 0 || _this$commandEditor13.setScrollTop(lastCharTop);
285
- (_this$commandEditor14 = this.commandEditor) === null || _this$commandEditor14 === void 0 || _this$commandEditor14.focus();
311
+ (_this$commandEditor14 = this.commandEditor) === null || _this$commandEditor14 === void 0 || _this$commandEditor14.setScrollTop(lastCharTop);
312
+ (_this$commandEditor15 = this.commandEditor) === null || _this$commandEditor15 === void 0 || _this$commandEditor15.focus();
286
313
  }
287
314
  clear() {
288
- var _this$commandEditor15, _this$commandEditor16;
289
- (_this$commandEditor15 = this.commandEditor) === null || _this$commandEditor15 === void 0 || _this$commandEditor15.focus();
290
- (_this$commandEditor16 = this.commandEditor) === null || _this$commandEditor16 === void 0 || (_this$commandEditor16 = _this$commandEditor16.getModel()) === null || _this$commandEditor16 === void 0 || _this$commandEditor16.setValue('');
315
+ var _this$commandEditor16, _this$commandEditor17;
316
+ (_this$commandEditor16 = this.commandEditor) === null || _this$commandEditor16 === void 0 || _this$commandEditor16.focus();
317
+ (_this$commandEditor17 = this.commandEditor) === null || _this$commandEditor17 === void 0 || (_this$commandEditor17 = _this$commandEditor17.getModel()) === null || _this$commandEditor17 === void 0 || _this$commandEditor17.setValue('');
291
318
  this.commandHistoryIndex = null;
292
319
  }
293
320
  layoutEditor() {
@@ -302,14 +329,14 @@ export class ConsoleInput extends PureComponent {
302
329
  * @param index The index to load. Null to load command started in the editor and not in the history
303
330
  */
304
331
  loadCommand(index) {
305
- var _this$commandEditor17;
332
+ var _this$commandEditor18;
306
333
  if (index !== null && index >= this.history.length) {
307
334
  return;
308
335
  }
309
336
  var modifiedValue = this.modifiedCommands.get(index);
310
337
  var historyValue = index === null ? '' : this.history[this.history.length - index - 1];
311
338
  this.commandHistoryIndex = index;
312
- (_this$commandEditor17 = this.commandEditor) === null || _this$commandEditor17 === void 0 || (_this$commandEditor17 = _this$commandEditor17.getModel()) === null || _this$commandEditor17 === void 0 || _this$commandEditor17.setValue(modifiedValue !== null && modifiedValue !== void 0 ? modifiedValue : historyValue);
339
+ (_this$commandEditor18 = this.commandEditor) === null || _this$commandEditor18 === void 0 || (_this$commandEditor18 = _this$commandEditor18.getModel()) === null || _this$commandEditor18 === void 0 || _this$commandEditor18.setValue(modifiedValue !== null && modifiedValue !== void 0 ? modifiedValue : historyValue);
313
340
  if (index !== null && index > this.history.length - BUFFER_SIZE) {
314
341
  this.loadMoreHistory();
315
342
  }
@@ -321,10 +348,10 @@ export class ConsoleInput extends PureComponent {
321
348
  if (_this.loadingPromise != null || _this.bufferIndex == null) {
322
349
  return;
323
350
  }
324
- var _this$props2 = _this.props,
325
- commandHistoryStorage = _this$props2.commandHistoryStorage,
326
- language = _this$props2.language,
327
- scope = _this$props2.scope;
351
+ var _this$props = _this.props,
352
+ commandHistoryStorage = _this$props.commandHistoryStorage,
353
+ language = _this$props.language,
354
+ scope = _this$props.scope;
328
355
  _this.loadingPromise = PromiseUtils.makeCancelable(commandHistoryStorage.getTable(language, scope !== null && scope !== void 0 ? scope : '', _this.timestamp), resolved => resolved.close());
329
356
  var table = yield _this.loadingPromise;
330
357
  table.setReversed(true);
@@ -386,16 +413,16 @@ export class ConsoleInput extends PureComponent {
386
413
  this.setState({
387
414
  commandEditorHeight
388
415
  }, () => {
389
- var _this$commandEditor18, _this$commandEditor19;
390
- (_this$commandEditor18 = this.commandEditor) === null || _this$commandEditor18 === void 0 || _this$commandEditor18.updateOptions(options);
391
- (_this$commandEditor19 = this.commandEditor) === null || _this$commandEditor19 === void 0 || _this$commandEditor19.layout();
416
+ var _this$commandEditor19, _this$commandEditor20;
417
+ (_this$commandEditor19 = this.commandEditor) === null || _this$commandEditor19 === void 0 || _this$commandEditor19.updateOptions(options);
418
+ (_this$commandEditor20 = this.commandEditor) === null || _this$commandEditor20 === void 0 || _this$commandEditor20.layout();
392
419
  });
393
420
  }
394
421
  render() {
395
- var _this$props3 = this.props,
396
- disabled = _this$props3.disabled,
397
- language = _this$props3.language,
398
- session = _this$props3.session;
422
+ var _this$props2 = this.props,
423
+ disabled = _this$props2.disabled,
424
+ language = _this$props2.language,
425
+ session = _this$props2.session;
399
426
  var _this$state = this.state,
400
427
  commandEditorHeight = _this$state.commandEditorHeight,
401
428
  isFocused = _this$state.isFocused,
@@ -413,7 +440,13 @@ export class ConsoleInput extends PureComponent {
413
440
  ref: this.commandContainer,
414
441
  style: {
415
442
  height: commandEditorHeight
416
- }
443
+ },
444
+ children: /*#__PURE__*/_jsx(Editor, {
445
+ className: "h-100 w-100",
446
+ settings: this.getEditorSettings(),
447
+ onEditorInitialized: this.handleEditorInitialized,
448
+ onEditorWillDestroy: this.handleEditorWillDestroy
449
+ })
417
450
  }), model && /*#__PURE__*/_jsx(MonacoProviders, {
418
451
  model: model,
419
452
  language: language,
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoProviders","MonacoTheme","MonacoUtils","jsx","_jsx","jsxs","_jsxs","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","_defineProperty","handleResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","resizeObserver","window","ResizeObserver","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","loadMoreHistory","componentDidUpdate","prevProps","session","layoutEditor","destroyCommandEditor","componentWillUnmount","disconnect","loadingPromise","cancel","setConsoleText","text","focus","arguments","length","undefined","execute","debug","_this$commandEditor","commandEditor","setValue","focusEnd","updateDimensions","processCommand","_this$props","language","editor","createModel","generateConsoleUri","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","value","wordWrap","autoClosingBrackets","element","current","create","setEOL","openDocumentCleanup","openDocument","onDidChangeModelContent","_this$commandEditor2","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","altKey","shiftKey","metaKey","code","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","getLineCount","keyCode","KeyCode","Enter","_this$commandEditor3","command","trim","_this$commandEditor4","disableKeyBindings","KeyMod","CtrlCmd","KeyF","registerPasteHandler","observe","getModel","_this$openDocumentCle","dispose","closeDocument","isSuggestionMenuActive","_ref","commandSuggestionContainer","_this$commandEditor5","getDomNode","querySelector","classList","contains","_this$commandSuggesti","_this$commandSuggesti2","childElementCount","_this$commandEditor6","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor0","_this$commandEditor1","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","_this$commandEditor10","_this$commandEditor11","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","lastLine","lastCharTop","clear","_this$commandEditor15","_this$commandEditor16","layout","index","_this$commandEditor17","modifiedValue","get","historyValue","_this","_asyncToGenerator","_this$props2","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","_ref2","pos","arr","name","map","_ref3","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","_this$commandEditor18","_this$commandEditor19","updateOptions","render","_this$props3","disabled","_this$state","className","children","INPUT_CLASS_NAME","ref","style","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ViewportData } from '@deephaven/storage';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './command-history';\nimport { MonacoProviders, 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: dh.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.handleResize = this.handleResize.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 this.resizeObserver = new window.ResizeObserver(this.handleResize);\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 this.loadMoreHistory();\n }\n\n componentDidUpdate(prevProps: ConsoleInputProps): void {\n const { session } = this.props;\n this.layoutEditor();\n // If the session has changed, we need to destroy the old command editor and create a new one for the new session\n if (prevProps.session !== session) {\n this.destroyCommandEditor(prevProps.session);\n this.initCommandEditor();\n }\n }\n\n componentWillUnmount(): void {\n this.resizeObserver.disconnect();\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n const { session } = this.props;\n this.destroyCommandEditor(session);\n }\n\n cancelListener?: () => void;\n\n openDocumentCleanup?: monaco.IDisposable;\n\n resizeObserver: ResizeObserver;\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 model = monaco.editor.createModel(\n '',\n language,\n MonacoUtils.generateConsoleUri()\n );\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 value: '',\n wordWrap: 'on',\n autoClosingBrackets: 'beforeWhitespace',\n model,\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n\n this.commandEditor = monaco.editor.create(element, commandSettings);\n\n MonacoUtils.setEOL(this.commandEditor);\n this.openDocumentCleanup = MonacoUtils.openDocument(\n this.commandEditor,\n session\n );\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\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (\n keyEvent.code === 'ArrowUp' &&\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.code === 'ArrowDown' &&\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 (\n keyEvent.keyCode === monaco.KeyCode.Enter &&\n !this.isSuggestionMenuPopulated()\n ) {\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 }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n ]);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.resizeObserver.observe(element);\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n /**\n * Closes the monaco document, disposes the Monaco editor, and clears all associated cleanup state.\n *\n * @param session The session that originally received `openDocument` for this editor\n */\n destroyCommandEditor(session: dh.IdeSession): void {\n if (this.commandEditor) {\n this.openDocumentCleanup?.dispose();\n this.openDocumentCleanup = undefined;\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n\n handleResize(): 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 <MonacoProviders\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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","ignoreList":[]}
1
+ {"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","Log","assertNotNull","PromiseUtils","MonacoProviders","MonacoTheme","MonacoUtils","Editor","jsx","_jsx","jsxs","_jsxs","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","_defineProperty","handleEditorInitialized","bind","handleEditorWillDestroy","handleResize","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","resizeObserver","window","ResizeObserver","state","commandEditorHeight","isFocused","model","componentDidMount","loadMoreHistory","componentDidUpdate","prevProps","session","layoutEditor","closeDocument","createModel","openDocument","componentWillUnmount","disconnect","loadingPromise","cancel","setConsoleText","text","focus","arguments","length","undefined","execute","debug","_this$commandEditor","commandEditor","setValue","focusEnd","updateDimensions","processCommand","getEditorSettings","language","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","wordWrap","autoClosingBrackets","monaco","getMonaco","element","current","onDidChangeModelContent","_this$commandEditor2","value","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","altKey","shiftKey","metaKey","_commandEditor$getMod","code","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","getModel","getLineCount","keyCode","KeyCode","Enter","_this$commandEditor3","command","trim","_this$commandEditor4","disableKeyBindings","KeyMod","CtrlCmd","KeyF","registerPasteHandler","observe","previousModel","editor","generateConsoleUri","setModel","dispose","setEOL","_this$commandEditor5","openDocumentCleanup","_this$openDocumentCle","isSuggestionMenuActive","_ref","commandSuggestionContainer","_this$commandEditor6","getDomNode","querySelector","classList","contains","_this$commandSuggesti","_this$commandSuggesti2","childElementCount","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor0","_this$commandEditor1","_this$commandEditor10","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","_this$commandEditor11","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","_this$commandEditor15","lastLine","lastCharTop","clear","_this$commandEditor16","_this$commandEditor17","layout","index","_this$commandEditor18","modifiedValue","get","historyValue","_this","_asyncToGenerator","_this$props","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","_ref2","pos","arr","name","map","_ref3","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","_this$commandEditor19","_this$commandEditor20","updateOptions","render","_this$props2","disabled","_this$state","className","children","INPUT_CLASS_NAME","ref","style","height","settings","onEditorInitialized","onEditorWillDestroy"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport classNames from 'classnames';\nimport type * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ViewportData } from '@deephaven/storage';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './command-history';\nimport { MonacoProviders, MonacoTheme, MonacoUtils } from './monaco';\nimport Editor from './notebook/Editor';\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: dh.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.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleResize = this.handleResize.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 this.resizeObserver = new window.ResizeObserver(this.handleResize);\n\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount(): void {\n this.loadMoreHistory();\n }\n\n componentDidUpdate(prevProps: ConsoleInputProps): void {\n const { session } = this.props;\n this.layoutEditor();\n // The document belongs to the session that opened it\n if (prevProps.session !== session) {\n this.closeDocument(prevProps.session);\n this.createModel();\n this.openDocument(session);\n }\n }\n\n componentWillUnmount(): void {\n this.resizeObserver.disconnect();\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n }\n\n cancelListener?: () => void;\n\n openDocumentCleanup?: monaco.IDisposable;\n\n resizeObserver: ResizeObserver;\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 getEditorSettings(): monaco.editor.IStandaloneEditorConstructionOptions {\n const { language } = this.props;\n return {\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 wordWrap: 'on',\n autoClosingBrackets: 'beforeWhitespace',\n // The model is created with a console URI in handleEditorInitialized\n model: null,\n };\n }\n\n handleEditorInitialized(\n commandEditor: monaco.editor.IStandaloneCodeEditor\n ): void {\n const { session } = this.props;\n const monaco = MonacoUtils.getMonaco();\n const element = this.commandContainer.current;\n assertNotNull(element);\n\n this.commandEditor = commandEditor;\n this.createModel();\n this.openDocument(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 { commandHistoryIndex } = this;\n const position = commandEditor.getPosition();\n assertNotNull(position);\n const { lineNumber } = position;\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (\n keyEvent.code === 'ArrowUp' &&\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.code === 'ArrowDown' &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === commandEditor.getModel()?.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 (\n keyEvent.keyCode === monaco.KeyCode.Enter &&\n !this.isSuggestionMenuPopulated()\n ) {\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 }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n ]);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.resizeObserver.observe(element);\n }\n\n /**\n * Replaces the editor's model with an empty one for the current language.\n * The model is kept in state so MonacoProviders follow it.\n */\n createModel(): void {\n const { commandEditor } = this;\n if (commandEditor == null) {\n return;\n }\n\n const { language } = this.props;\n const previousModel = commandEditor.getModel();\n const model = MonacoUtils.getMonaco().editor.createModel(\n '',\n language,\n MonacoUtils.generateConsoleUri()\n );\n commandEditor.setModel(model);\n previousModel?.dispose();\n MonacoUtils.setEOL(commandEditor);\n\n this.updateDimensions();\n this.setState({ model });\n }\n\n handleEditorWillDestroy(): void {\n const { session } = this.props;\n this.closeDocument(session);\n this.commandEditor?.getModel()?.dispose();\n this.commandEditor = undefined;\n }\n\n openDocument(session: dh.IdeSession): void {\n if (this.commandEditor) {\n this.openDocumentCleanup = MonacoUtils.openDocument(\n this.commandEditor,\n session\n );\n }\n }\n\n /**\n * Closes the monaco document for the session that received `openDocument`\n * @param session The session the document was opened with\n */\n closeDocument(session: dh.IdeSession): void {\n if (this.commandEditor) {\n this.openDocumentCleanup?.dispose();\n this.openDocumentCleanup = undefined;\n MonacoUtils.closeDocument(this.commandEditor, session);\n }\n }\n\n handleResize(): 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 <Editor\n className=\"h-100 w-100\"\n settings={this.getEditorSettings()}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n </div>\n {model && (\n <MonacoProviders\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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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Code.d.ts","sourceRoot":"","sources":["../../src/common/Code.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAInE,UAAU,SAAS;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,iBAAS,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAmC5D;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Code.d.ts","sourceRoot":"","sources":["../../src/common/Code.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAOnE,UAAU,SAAS;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,iBAAS,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAmD5D;AAED,eAAe,IAAI,CAAC"}
@@ -7,9 +7,11 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
7
7
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
8
8
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
9
9
  import React, { useEffect, useState } from 'react';
10
- import * as monaco from 'monaco-editor';
10
+ import Log from '@deephaven/log';
11
11
  import { useTheme } from '@deephaven/components';
12
+ import MonacoUtils from "../monaco/MonacoUtils.js";
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
+ var log = Log.module('Code');
13
15
  function Code(_ref) {
14
16
  var children = _ref.children,
15
17
  language = _ref.language;
@@ -17,6 +19,10 @@ function Code(_ref) {
17
19
  _useState2 = _slicedToArray(_useState, 2),
18
20
  colorizedHtml = _useState2[0],
19
21
  setColorizedHtml = _useState2[1];
22
+ var _useState3 = useState(false),
23
+ _useState4 = _slicedToArray(_useState3, 2),
24
+ isColorizeFailed = _useState4[0],
25
+ setIsColorizeFailed = _useState4[1];
20
26
  var _useTheme = useTheme(),
21
27
  activeThemes = _useTheme.activeThemes;
22
28
  useEffect(() => {
@@ -27,19 +33,35 @@ function Code(_ref) {
27
33
  function _colorize() {
28
34
  _colorize = _asyncToGenerator(function* () {
29
35
  if (children != null && activeThemes != null) {
36
+ var monaco = yield MonacoUtils.load();
30
37
  var result = yield monaco.editor.colorize(children.toString(), language, {});
31
38
  if (!isCanceled) {
32
39
  setColorizedHtml(result);
40
+ setIsColorizeFailed(false);
33
41
  }
34
42
  }
35
43
  });
36
44
  return _colorize.apply(this, arguments);
37
45
  }
38
- colorize();
46
+ colorize().catch(err => {
47
+ log.error('Unable to colorize code, showing it as plain text', err);
48
+ if (!isCanceled) {
49
+ setIsColorizeFailed(true);
50
+ }
51
+ });
39
52
  return () => {
40
53
  isCanceled = true;
41
54
  };
42
55
  }, [activeThemes, children, language]);
56
+ if (isColorizeFailed) {
57
+ return /*#__PURE__*/_jsx("div", {
58
+ style: {
59
+ pointerEvents: 'none',
60
+ whiteSpace: 'pre-wrap'
61
+ },
62
+ children: children
63
+ });
64
+ }
43
65
  return /*#__PURE__*/_jsx("div", {
44
66
  // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.
45
67
  // You can still select the text event with this set