@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.
- package/dist/ConsoleInput.d.ts +13 -6
- package/dist/ConsoleInput.d.ts.map +1 -1
- package/dist/ConsoleInput.js +95 -62
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/common/Code.d.ts.map +1 -1
- package/dist/common/Code.js +24 -2
- package/dist/common/Code.js.map +1 -1
- package/dist/log/LogView.d.ts +3 -4
- package/dist/log/LogView.d.ts.map +1 -1
- package/dist/log/LogView.js +34 -35
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoProviders.d.ts +1 -1
- package/dist/monaco/MonacoProviders.d.ts.map +1 -1
- package/dist/monaco/MonacoProviders.js +11 -3
- package/dist/monaco/MonacoProviders.js.map +1 -1
- package/dist/monaco/MonacoUtils.d.ts +28 -6
- package/dist/monaco/MonacoUtils.d.ts.map +1 -1
- package/dist/monaco/MonacoUtils.js +115 -15
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/RuffSettingsModal.d.ts.map +1 -1
- package/dist/monaco/RuffSettingsModal.js +45 -30
- package/dist/monaco/RuffSettingsModal.js.map +1 -1
- package/dist/notebook/Editor.d.ts +5 -3
- package/dist/notebook/Editor.d.ts.map +1 -1
- package/dist/notebook/Editor.js +61 -44
- package/dist/notebook/Editor.js.map +1 -1
- package/package.json +2 -2
package/dist/ConsoleInput.d.ts
CHANGED
|
@@ -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
|
-
|
|
57
|
+
getEditorSettings(): monaco.editor.IStandaloneEditorConstructionOptions;
|
|
58
|
+
handleEditorInitialized(commandEditor: monaco.editor.IStandaloneCodeEditor): void;
|
|
58
59
|
/**
|
|
59
|
-
*
|
|
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
|
-
|
|
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":"AAAA,OAAc,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ConsoleInput.d.ts","sourceRoot":"","sources":["../src/ConsoleInput.tsx"],"names":[],"mappings":"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"}
|
package/dist/ConsoleInput.js
CHANGED
|
@@ -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
|
-
//
|
|
62
|
+
// The document belongs to the session that opened it
|
|
62
63
|
if (prevProps.session !== session) {
|
|
63
|
-
this.
|
|
64
|
-
this.
|
|
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
|
-
|
|
108
|
-
var
|
|
109
|
-
|
|
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 =
|
|
145
|
-
|
|
146
|
-
this.
|
|
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
|
|
171
|
-
|
|
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 === (
|
|
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
|
|
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
|
|
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
|
-
|
|
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$
|
|
246
|
-
this.commandSuggestionContainer = (_this$
|
|
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$
|
|
256
|
-
(_this$
|
|
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$
|
|
260
|
-
var model = (_this$
|
|
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$
|
|
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$
|
|
292
|
+
(_this$commandEditor0 = this.commandEditor) === null || _this$commandEditor0 === void 0 || _this$commandEditor0.setPosition({
|
|
266
293
|
lineNumber: 1,
|
|
267
294
|
column
|
|
268
295
|
});
|
|
269
|
-
(_this$
|
|
270
|
-
(_this$
|
|
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$
|
|
274
|
-
var model = (_this$
|
|
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$
|
|
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$
|
|
307
|
+
(_this$commandEditor13 = this.commandEditor) === null || _this$commandEditor13 === void 0 || _this$commandEditor13.setPosition({
|
|
281
308
|
lineNumber: lastLine,
|
|
282
309
|
column
|
|
283
310
|
});
|
|
284
|
-
(_this$
|
|
285
|
-
(_this$
|
|
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$
|
|
289
|
-
(_this$
|
|
290
|
-
(_this$
|
|
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$
|
|
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$
|
|
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$
|
|
325
|
-
commandHistoryStorage = _this$
|
|
326
|
-
language = _this$
|
|
327
|
-
scope = _this$
|
|
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$
|
|
390
|
-
(_this$
|
|
391
|
-
(_this$
|
|
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$
|
|
396
|
-
disabled = _this$
|
|
397
|
-
language = _this$
|
|
398
|
-
session = _this$
|
|
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,
|
package/dist/ConsoleInput.js.map
CHANGED
|
@@ -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":";;;;;AAAA,OAAOA,KAAK,IAAIC,aAAa,QAA2C,OAAO;AAC/E,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SACEC,aAAa,EAEbC,YAAY,QACP,kBAAkB;AAAC,SAQjBC,eAAe,EAAEC,WAAW,EAAEC,WAAW;AAAA,OAC3CC,MAAM;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGb,IAAMC,GAAG,GAAGX,GAAG,CAACY,MAAM,CAAC,cAAc,CAAC;AAEtC,IAAMC,WAAW,GAAGC,QAAQ,CAACV,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;AAC5D,IAAMW,WAAW,GAAG,CAAC;AACrB,IAAMC,cAAc,GAAG,CAAC;AACxB,IAAMC,gBAAgB,GAAGJ,WAAW,GAAGE,WAAW,GAAGC,cAAc;AACnE,IAAME,WAAW,GAAG,GAAG;AAkBvB;AACA;AACA;AACA,OAAO,MAAMC,YAAY,SAASrB,aAAa,CAG7C;EASAsB,WAAWA,CAACC,KAAwB,EAAE;IACpC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAqEf;IAAAA,eAAA;IAnEE,IAAI,CAACC,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACC,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACC,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACD,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACE,YAAY,GAAG,IAAI,CAACA,YAAY,CAACF,IAAI,CAAC,IAAI,CAAC;IAEhD,IAAI,CAACG,gBAAgB,gBAAG9B,KAAK,CAAC+B,SAAS,CAAC,CAAC;IACzC,IAAI,CAACC,mBAAmB,GAAG,IAAI;IAC/B,IAAI,CAACC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAACC,WAAW,GAAG,CAAC;IACpB,IAAI,CAACC,OAAO,GAAG,EAAE;IACjB;IACA,IAAI,CAACC,gBAAgB,GAAG,IAAIC,GAAG,CAAC,CAAC;IACjC,IAAI,CAACC,cAAc,GAAG,IAAIC,MAAM,CAACC,cAAc,CAAC,IAAI,CAACb,YAAY,CAAC;IAElE,IAAI,CAACc,KAAK,GAAG;MACXC,mBAAmB,EAAE5B,WAAW;MAChC6B,SAAS,EAAE,KAAK;MAChBC,KAAK,EAAE;IACT,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,eAAe,CAAC,CAAC;EACxB;EAEAC,kBAAkBA,CAACC,SAA4B,EAAQ;IACrD,IAAQC,OAAO,GAAK,IAAI,CAAC3B,KAAK,CAAtB2B,OAAO;IACf,IAAI,CAACC,YAAY,CAAC,CAAC;IACnB;IACA,IAAIF,SAAS,CAACC,OAAO,KAAKA,OAAO,EAAE;MACjC,IAAI,CAACE,aAAa,CAACH,SAAS,CAACC,OAAO,CAAC;MACrC,IAAI,CAACG,WAAW,CAAC,CAAC;MAClB,IAAI,CAACC,YAAY,CAACJ,OAAO,CAAC;IAC5B;EACF;EAEAK,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAAChB,cAAc,CAACiB,UAAU,CAAC,CAAC;IAEhC,IAAI,IAAI,CAACC,cAAc,IAAI,IAAI,EAAE;MAC/B,IAAI,CAACA,cAAc,CAACC,MAAM,CAAC,CAAC;IAC9B;EACF;EA6BA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,cAAcA,CAACC,IAAY,EAAuC;IAAA,IAArCC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IAAA,IAAEG,OAAO,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IACxD,IAAI,CAACF,IAAI,EAAE;MACT;IACF;IAEA/C,GAAG,CAACqD,KAAK,CAAC,oBAAoB,EAAEN,IAAI,CAAC;;IAErC;IACA,IAAI,CAACK,OAAO,EAAE;MAAA,IAAAE,mBAAA;MACZ;MACA;MACA,IAAI,CAACpC,mBAAmB,GAAG,IAAI;MAC/B,CAAAoC,mBAAA,OAAI,CAACC,aAAa,cAAAD,mBAAA,eAAlBA,mBAAA,CAAoBE,QAAQ,CAACT,IAAI,CAAC;IACpC;IAEA,IAAIC,KAAK,EAAE;MACT,IAAI,CAACS,QAAQ,CAAC,CAAC;IACjB;IAEA,IAAI,CAACC,gBAAgB,CAAC,CAAC;IAEvB,IAAIN,OAAO,EAAE;MACX,IAAI,CAACO,cAAc,CAACZ,IAAI,CAAC;IAC3B;EACF;EAEAa,iBAAiBA,CAAA,EAAuD;IACtE,IAAQC,QAAQ,GAAK,IAAI,CAACnD,KAAK,CAAvBmD,QAAQ;IAChB,OAAO;MACLC,0BAA0B,EAAE,KAAK;MACjCC,WAAW,EAAE,OAAO;MACpBC,oBAAoB,EAAE,IAAI;MAC1BC,OAAO,EAAE,KAAK;MACdC,UAAU,EAAE,WAAW;MACvBC,WAAW,EAAE,KAAK;MAClBN,QAAQ;MACRO,UAAU,EAAElE,WAAW;MACvBmE,oBAAoB,EAAE,CAAC;MACvBC,WAAW,EAAE,KAAK;MAClBC,OAAO,EAAE;QAAEC,OAAO,EAAE;MAAM,CAAC;MAC3BC,mBAAmB,EAAE,MAAM;MAC3BC,oBAAoB,EAAE,KAAK;MAC3BC,SAAS,EAAE;QACTC,SAAS,EAAE,CAAC;QACZC,UAAU,EAAE,QAAQ;QACpBC,uBAAuB,EAAE;MAC3B,CAAC;MACDC,OAAO,EAAE;QACPC,GAAG,EAAE5E,WAAW;QAChB6E,MAAM,EAAE5E;MACV,CAAC;MACD6E,QAAQ,EAAE,IAAI;MACdC,mBAAmB,EAAE,kBAAkB;MACvC;MACAnD,KAAK,EAAE;IACT,CAAC;EACH;EAEApB,uBAAuBA,CACrB2C,aAAkD,EAC5C;IACN,IAAQlB,OAAO,GAAK,IAAI,CAAC3B,KAAK,CAAtB2B,OAAO;IACf,IAAM+C,MAAM,GAAG1F,WAAW,CAAC2F,SAAS,CAAC,CAAC;IACtC,IAAMC,OAAO,GAAG,IAAI,CAACtE,gBAAgB,CAACuE,OAAO;IAC7CjG,aAAa,CAACgG,OAAO,CAAC;IAEtB,IAAI,CAAC/B,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACf,WAAW,CAAC,CAAC;IAClB,IAAI,CAACC,YAAY,CAACJ,OAAO,CAAC;IAE1B,IAAI,CAACkB,aAAa,CAACiC,uBAAuB,CAAC,MAAM;MAAA,IAAAC,oBAAA;MAC/C,IAAMC,KAAK,IAAAD,oBAAA,GAAG,IAAI,CAAClC,aAAa,cAAAkC,oBAAA,uBAAlBA,oBAAA,CAAoBE,QAAQ,CAAC,CAAC;MAC5C,IAAI,CAACnE,gBAAgB,CAACoE,GAAG,CAAC,IAAI,CAAC1E,mBAAmB,EAAEwE,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,IAAI,CAAC;MAClE,IAAI,CAAChC,gBAAgB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI,CAACH,aAAa,CAACsC,oBAAoB,CAAC,MAAM;MAC5C,IAAI,CAACC,QAAQ,CAAC;QAAE/D,SAAS,EAAE;MAAK,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,IAAI,CAACwB,aAAa,CAACwC,mBAAmB,CAAC,MAAM;MAC3C,IAAI,CAACD,QAAQ,CAAC;QAAE/D,SAAS,EAAE;MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;;IAEF;AACJ;AACA;AACA;AACA;IACI,IAAI,CAACwB,aAAa,CAACyC,SAAS,CAACC,QAAQ,IAAI;MACvC,IAAQ/E,mBAAmB,GAAK,IAAI,CAA5BA,mBAAmB;MAC3B,IAAMgF,QAAQ,GAAG3C,aAAa,CAAC4C,WAAW,CAAC,CAAC;MAC5C7G,aAAa,CAAC4G,QAAQ,CAAC;MACvB,IAAQE,UAAU,GAAKF,QAAQ,CAAvBE,UAAU;MAElB,IAAI,CAACH,QAAQ,CAACI,MAAM,IAAI,CAACJ,QAAQ,CAACK,QAAQ,IAAI,CAACL,QAAQ,CAACM,OAAO,EAAE;QAAA,IAAAC,qBAAA;QAC/D,IACEP,QAAQ,CAACQ,IAAI,KAAK,SAAS,IAC3B,CAAC,IAAI,CAACC,yBAAyB,CAAC,CAAC,IACjCN,UAAU,KAAK,CAAC,EAChB;UACA,IAAIlF,mBAAmB,IAAI,IAAI,EAAE;YAC/B,IAAI,CAACyF,WAAW,CAACzF,mBAAmB,GAAG,CAAC,CAAC;UAC3C,CAAC,MAAM;YACL,IAAI,CAACyF,WAAW,CAAC,CAAC,CAAC;UACrB;UAEA,IAAI,CAACC,UAAU,CAAC,CAAC;UACjBX,QAAQ,CAACY,eAAe,CAAC,CAAC;UAC1BZ,QAAQ,CAACa,cAAc,CAAC,CAAC;UAEzB;QACF;QAEA,IACEb,QAAQ,CAACQ,IAAI,KAAK,WAAW,IAC7B,CAAC,IAAI,CAACC,yBAAyB,CAAC,CAAC,IACjCN,UAAU,OAAAI,qBAAA,GAAKjD,aAAa,CAACwD,QAAQ,CAAC,CAAC,cAAAP,qBAAA,uBAAxBA,qBAAA,CAA0BQ,YAAY,CAAC,CAAC,GACvD;UACA,IAAI9F,mBAAmB,IAAI,IAAI,IAAIA,mBAAmB,GAAG,CAAC,EAAE;YAC1D,IAAI,CAACyF,WAAW,CAACzF,mBAAmB,GAAG,CAAC,CAAC;UAC3C,CAAC,MAAM;YACL,IAAI,CAACyF,WAAW,CAAC,IAAI,CAAC;UACxB;UAEA,IAAI,CAAClD,QAAQ,CAAC,CAAC;UACfwC,QAAQ,CAACY,eAAe,CAAC,CAAC;UAC1BZ,QAAQ,CAACa,cAAc,CAAC,CAAC;UAEzB;QACF;QAEA,IACEb,QAAQ,CAACgB,OAAO,KAAK7B,MAAM,CAAC8B,OAAO,CAACC,KAAK,IACzC,CAAC,IAAI,CAACT,yBAAyB,CAAC,CAAC,EACjC;UAAA,IAAAU,oBAAA;UACAnB,QAAQ,CAACY,eAAe,CAAC,CAAC;UAC1BZ,QAAQ,CAACa,cAAc,CAAC,CAAC;UAEzB,IAAMO,OAAO,IAAAD,oBAAA,GAAG,IAAI,CAAC7D,aAAa,cAAA6D,oBAAA,uBAAlBA,oBAAA,CAAoBzB,QAAQ,CAAC,CAAC,CAAC2B,IAAI,CAAC,CAAC;UACrD,IAAID,OAAO,KAAKlE,SAAS,EAAE;YAAA,IAAAoE,oBAAA;YACzB,IAAI,CAAC5D,cAAc,CAAC0D,OAAO,CAAC;YAC5B,CAAAE,oBAAA,OAAI,CAAChE,aAAa,cAAAgE,oBAAA,eAAlBA,oBAAA,CAAoB/D,QAAQ,CAAC,EAAE,CAAC;UAClC;QACF;MACF;IACF,CAAC,CAAC;;IAEF;IACA9D,WAAW,CAAC8H,kBAAkB,CAAC,IAAI,CAACjE,aAAa,EAAE,CACjD6B,MAAM,CAACqC,MAAM,CAACC,OAAO,GAAGtC,MAAM,CAAC8B,OAAO,CAACS,IAAI,CAAE;IAAA,CAC9C,CAAC;IAEFjI,WAAW,CAACkI,oBAAoB,CAAC,IAAI,CAACrE,aAAa,CAAC;IAEpD,IAAI,CAACA,aAAa,CAACP,KAAK,CAAC,CAAC;IAE1B,IAAI,CAACtB,cAAc,CAACmG,OAAO,CAACvC,OAAO,CAAC;EACtC;;EAEA;AACF;AACA;AACA;EACE9C,WAAWA,CAAA,EAAS;IAClB,IAAQe,aAAa,GAAK,IAAI,CAAtBA,aAAa;IACrB,IAAIA,aAAa,IAAI,IAAI,EAAE;MACzB;IACF;IAEA,IAAQM,QAAQ,GAAK,IAAI,CAACnD,KAAK,CAAvBmD,QAAQ;IAChB,IAAMiE,aAAa,GAAGvE,aAAa,CAACwD,QAAQ,CAAC,CAAC;IAC9C,IAAM/E,KAAK,GAAGtC,WAAW,CAAC2F,SAAS,CAAC,CAAC,CAAC0C,MAAM,CAACvF,WAAW,CACtD,EAAE,EACFqB,QAAQ,EACRnE,WAAW,CAACsI,kBAAkB,CAAC,CACjC,CAAC;IACDzE,aAAa,CAAC0E,QAAQ,CAACjG,KAAK,CAAC;IAC7B8F,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAEI,OAAO,CAAC,CAAC;IACxBxI,WAAW,CAACyI,MAAM,CAAC5E,aAAa,CAAC;IAEjC,IAAI,CAACG,gBAAgB,CAAC,CAAC;IACvB,IAAI,CAACoC,QAAQ,CAAC;MAAE9D;IAAM,CAAC,CAAC;EAC1B;EAEAlB,uBAAuBA,CAAA,EAAS;IAAA,IAAAsH,oBAAA;IAC9B,IAAQ/F,OAAO,GAAK,IAAI,CAAC3B,KAAK,CAAtB2B,OAAO;IACf,IAAI,CAACE,aAAa,CAACF,OAAO,CAAC;IAC3B,CAAA+F,oBAAA,OAAI,CAAC7E,aAAa,cAAA6E,oBAAA,gBAAAA,oBAAA,GAAlBA,oBAAA,CAAoBrB,QAAQ,CAAC,CAAC,cAAAqB,oBAAA,eAA9BA,oBAAA,CAAgCF,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC3E,aAAa,GAAGJ,SAAS;EAChC;EAEAV,YAAYA,CAACJ,OAAsB,EAAQ;IACzC,IAAI,IAAI,CAACkB,aAAa,EAAE;MACtB,IAAI,CAAC8E,mBAAmB,GAAG3I,WAAW,CAAC+C,YAAY,CACjD,IAAI,CAACc,aAAa,EAClBlB,OACF,CAAC;IACH;EACF;;EAEA;AACF;AACA;AACA;EACEE,aAAaA,CAACF,OAAsB,EAAQ;IAC1C,IAAI,IAAI,CAACkB,aAAa,EAAE;MAAA,IAAA+E,qBAAA;MACtB,CAAAA,qBAAA,OAAI,CAACD,mBAAmB,cAAAC,qBAAA,eAAxBA,qBAAA,CAA0BJ,OAAO,CAAC,CAAC;MACnC,IAAI,CAACG,mBAAmB,GAAGlF,SAAS;MACpCzD,WAAW,CAAC6C,aAAa,CAAC,IAAI,CAACgB,aAAa,EAAElB,OAAO,CAAC;IACxD;EACF;EAEAtB,YAAYA,CAAA,EAAS;IACnB,IAAI,CAAC2C,gBAAgB,CAAC,CAAC;EACzB;EAEA6E,sBAAsBA,CAAA,EAAY;IAAA,IAAAC,IAAA;IAChC,IAAI,CAAC,IAAI,CAACC,0BAA0B,EAAE;MAAA,IAAAC,oBAAA;MACpC,IAAI,CAACD,0BAA0B,IAAAC,oBAAA,GAAG,IAAI,CAACnF,aAAa,cAAAmF,oBAAA,gBAAAA,oBAAA,GAAlBA,oBAAA,CAC9BC,UAAU,CAAC,CAAC,cAAAD,oBAAA,uBADkBA,oBAAA,CAE9BE,aAAa,CAAC,iBAAiB,CAAC;IACtC;IAEA,QAAAJ,IAAA,GACG,IAAI,CAACC,0BAA0B,IAC9B,IAAI,CAACA,0BAA0B,CAACI,SAAS,CAACC,QAAQ,CAAC,SAAS,CAAC,cAAAN,IAAA,cAAAA,IAAA,GAC/D,KAAK;EAET;EAEA9B,yBAAyBA,CAAA,EAAY;IAAA,IAAAqC,qBAAA,EAAAC,sBAAA;IACnC,OACE,IAAI,CAACT,sBAAsB,CAAC,CAAC,IAC7B,EAAAQ,qBAAA,IAAAC,sBAAA,GAAC,IAAI,CAACP,0BAA0B,cAAAO,sBAAA,gBAAAA,sBAAA,GAA/BA,sBAAA,CAAiCJ,aAAa,CAAC,mBAAmB,CAAC,cAAAI,sBAAA,uBAAnEA,sBAAA,CACGC,iBAAiB,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,CAAC,IAAI,CAAC;EAEnC;EAEA/F,KAAKA,CAAA,EAAS;IAAA,IAAAkG,oBAAA;IACZ,CAAAA,oBAAA,OAAI,CAAC3F,aAAa,cAAA2F,oBAAA,eAAlBA,oBAAA,CAAoBlG,KAAK,CAAC,CAAC;EAC7B;EAEA4D,UAAUA,CAAA,EAAS;IAAA,IAAAuC,oBAAA,EAAAC,oBAAA,EAAAC,oBAAA,EAAAC,oBAAA,EAAAC,qBAAA;IACjB,IAAMvH,KAAK,IAAAmH,oBAAA,GAAG,IAAI,CAAC5F,aAAa,cAAA4F,oBAAA,uBAAlBA,oBAAA,CAAoBpC,QAAQ,CAAC,CAAC;IAC5CzH,aAAa,CAAC0C,KAAK,CAAC;IACpB,IAAMwH,MAAM,GAAGxH,KAAK,CAACyH,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,IAAMC,YAAY,IAAAN,oBAAA,GAAG,IAAI,CAAC7F,aAAa,cAAA6F,oBAAA,uBAAlBA,oBAAA,CAAoBO,iBAAiB,CAAC,CAAC,EAAEH,MAAM,CAAC;IACrElK,aAAa,CAACoK,YAAY,CAAC;IAC3B,CAAAL,oBAAA,OAAI,CAAC9F,aAAa,cAAA8F,oBAAA,eAAlBA,oBAAA,CAAoBO,WAAW,CAAC;MAAExD,UAAU,EAAE,CAAC;MAAEoD;IAAO,CAAC,CAAC;IAC1D,CAAAF,oBAAA,OAAI,CAAC/F,aAAa,cAAA+F,oBAAA,eAAlBA,oBAAA,CAAoBO,YAAY,CAACH,YAAY,CAAC;IAC9C,CAAAH,qBAAA,OAAI,CAAChG,aAAa,cAAAgG,qBAAA,eAAlBA,qBAAA,CAAoBvG,KAAK,CAAC,CAAC;EAC7B;EAEAS,QAAQA,CAAA,EAAS;IAAA,IAAAqG,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IACf,IAAMlI,KAAK,IAAA8H,qBAAA,GAAG,IAAI,CAACvG,aAAa,cAAAuG,qBAAA,uBAAlBA,qBAAA,CAAoB/C,QAAQ,CAAC,CAAC;IAC5CzH,aAAa,CAAC0C,KAAK,CAAC;IACpB,IAAMmI,QAAQ,GAAGnI,KAAK,CAACgF,YAAY,CAAC,CAAC;IACrC,IAAMwC,MAAM,GAAGxH,KAAK,CAACyH,aAAa,CAACU,QAAQ,CAAC,GAAG,CAAC;IAChD,IAAMC,WAAW,IAAAL,qBAAA,GAAG,IAAI,CAACxG,aAAa,cAAAwG,qBAAA,uBAAlBA,qBAAA,CAAoBJ,iBAAiB,CAACQ,QAAQ,EAAEX,MAAM,CAAC;IAC3ElK,aAAa,CAAC8K,WAAW,CAAC;IAC1B,CAAAJ,qBAAA,OAAI,CAACzG,aAAa,cAAAyG,qBAAA,eAAlBA,qBAAA,CAAoBJ,WAAW,CAAC;MAAExD,UAAU,EAAE+D,QAAQ;MAAEX;IAAO,CAAC,CAAC;IACjE,CAAAS,qBAAA,OAAI,CAAC1G,aAAa,cAAA0G,qBAAA,eAAlBA,qBAAA,CAAoBJ,YAAY,CAACO,WAAW,CAAC;IAC7C,CAAAF,qBAAA,OAAI,CAAC3G,aAAa,cAAA2G,qBAAA,eAAlBA,qBAAA,CAAoBlH,KAAK,CAAC,CAAC;EAC7B;EAEAqH,KAAKA,CAAA,EAAS;IAAA,IAAAC,qBAAA,EAAAC,qBAAA;IACZ,CAAAD,qBAAA,OAAI,CAAC/G,aAAa,cAAA+G,qBAAA,eAAlBA,qBAAA,CAAoBtH,KAAK,CAAC,CAAC;IAC3B,CAAAuH,qBAAA,OAAI,CAAChH,aAAa,cAAAgH,qBAAA,gBAAAA,qBAAA,GAAlBA,qBAAA,CAAoBxD,QAAQ,CAAC,CAAC,cAAAwD,qBAAA,eAA9BA,qBAAA,CAAgC/G,QAAQ,CAAC,EAAE,CAAC;IAC5C,IAAI,CAACtC,mBAAmB,GAAG,IAAI;EACjC;EAEAoB,YAAYA,CAAA,EAAS;IACnB,IAAI,IAAI,CAACiB,aAAa,EAAE;MACtB,IAAI,CAACA,aAAa,CAACiH,MAAM,CAAC,CAAC;IAC7B;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE7D,WAAWA,CAAC8D,KAAoB,EAAQ;IAAA,IAAAC,qBAAA;IACtC,IAAID,KAAK,KAAK,IAAI,IAAIA,KAAK,IAAI,IAAI,CAAClJ,OAAO,CAAC2B,MAAM,EAAE;MAClD;IACF;IAEA,IAAMyH,aAAa,GAAG,IAAI,CAACnJ,gBAAgB,CAACoJ,GAAG,CAACH,KAAK,CAAC;IACtD,IAAMI,YAAY,GAChBJ,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAClJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC2B,MAAM,GAAGuH,KAAK,GAAG,CAAC,CAAC;IAErE,IAAI,CAACvJ,mBAAmB,GAAGuJ,KAAK;IAChC,CAAAC,qBAAA,OAAI,CAACnH,aAAa,cAAAmH,qBAAA,gBAAAA,qBAAA,GAAlBA,qBAAA,CAAoB3D,QAAQ,CAAC,CAAC,cAAA2D,qBAAA,eAA9BA,qBAAA,CAAgClH,QAAQ,CAACmH,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAIE,YAAY,CAAC;IAEvE,IAAIJ,KAAK,KAAK,IAAI,IAAIA,KAAK,GAAG,IAAI,CAAClJ,OAAO,CAAC2B,MAAM,GAAG3C,WAAW,EAAE;MAC/D,IAAI,CAAC2B,eAAe,CAAC,CAAC;IACxB;EACF;EAEMA,eAAeA,CAAA,EAAkB;IAAA,IAAA4I,KAAA;IAAA,OAAAC,iBAAA;MACrC,IAAI;QACF,IAAID,KAAI,CAAClI,cAAc,IAAI,IAAI,IAAIkI,KAAI,CAACxJ,WAAW,IAAI,IAAI,EAAE;UAC3D;QACF;QAEA,IAAA0J,WAAA,GAAmDF,KAAI,CAACpK,KAAK;UAArDuK,qBAAqB,GAAAD,WAAA,CAArBC,qBAAqB;UAAEpH,QAAQ,GAAAmH,WAAA,CAARnH,QAAQ;UAAEqH,KAAK,GAAAF,WAAA,CAALE,KAAK;QAE9CJ,KAAI,CAAClI,cAAc,GAAGrD,YAAY,CAAC4L,cAAc,CAC/CF,qBAAqB,CAACG,QAAQ,CAACvH,QAAQ,EAAEqH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,EAAEJ,KAAI,CAAC3J,SAAS,CAAC,EACrEkK,QAAQ,IAAIA,QAAQ,CAACC,KAAK,CAAC,CAC7B,CAAC;QAED,IAAMC,KAAK,SAAST,KAAI,CAAClI,cAAc;QACvC2I,KAAK,CAACC,WAAW,CAAC,IAAI,CAAC;QACvBD,KAAK,CAACE,WAAW,CAAC;UAChBzG,GAAG,EAAE8F,KAAI,CAACxJ,WAAW;UACrB2D,MAAM,EAAE6F,KAAI,CAACxJ,WAAW,GAAGf,WAAW,GAAG;QAC3C,CAAC,CAAC;QAEFuK,KAAI,CAAClI,cAAc,GAAGrD,YAAY,CAAC4L,cAAc,CAC/CI,KAAK,CAACG,eAAe,CAAC,CAAC,EACvB,MAAMH,KAAK,CAACD,KAAK,CAAC,CACpB,CAAC;QACD,IAAMK,YAAY,SAASb,KAAI,CAAClI,cAAc;QAC9CkI,KAAI,CAACxJ,WAAW,IAAIf,WAAW;QAC/B,IAAIuK,KAAI,CAACxJ,WAAW,IAAIiK,KAAK,CAACK,IAAI,EAAE;UAClC;UACAd,KAAI,CAACxJ,WAAW,GAAG,IAAI;QACzB;QACAwJ,KAAI,CAACvJ,OAAO,GAAG,CACb,GAAGoK,YAAY,CAACE,KAAK,CAClBC,MAAM,CACL,CAAAC,KAAA,EAAWC,GAAG,EAAEC,GAAG;UAAA,IAAhBC,IAAI,GAAAH,KAAA,CAAJG,IAAI;UAAA,OAAiBF,GAAG,KAAK,CAAC,IAAIE,IAAI,KAAKD,GAAG,CAACD,GAAG,GAAG,CAAC,CAAC,CAACE,IAAI;QAAA,CACjE,CAAC,CACAC,GAAG,CAACC,KAAA;UAAA,IAAGF,IAAI,GAAAE,KAAA,CAAJF,IAAI;UAAA,OAAOA,IAAI;QAAA,EAAC,CACvBG,OAAO,CAAC,CAAC,EACZ,GAAGvB,KAAI,CAACvJ,OAAO,CAChB;QAEDuJ,KAAI,CAAClI,cAAc,GAAGO,SAAS;QAE/BoI,KAAK,CAACD,KAAK,CAAC,CAAC;MACf,CAAC,CAAC,OAAOgB,GAAG,EAAE;QACZxB,KAAI,CAAClI,cAAc,GAAGO,SAAS;QAC/B,IAAI5D,YAAY,CAACgN,UAAU,CAACD,GAAG,CAAC,EAAE;UAChCtM,GAAG,CAACwM,MAAM,CAAC,uCAAuC,CAAC;UACnD;QACF;QAEAxM,GAAG,CAACyM,KAAK,CAAC,wBAAwB,EAAEH,GAAG,CAAC;MAC1C;IAAC;EACH;EAEA3I,cAAcA,CAAC0D,OAAe,EAAQ;IACpC,IAAI,CAACnG,mBAAmB,GAAG,IAAI;IAC/B,IAAI,CAACM,gBAAgB,CAAC6I,KAAK,CAAC,CAAC;IAE7B/K,aAAa,CAAC+H,OAAO,CAAC;IACtB,IACEA,OAAO,KAAK,EAAE,KACb,IAAI,CAAC9F,OAAO,CAAC2B,MAAM,KAAK,CAAC,IACxBmE,OAAO,KAAK,IAAI,CAAC9F,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC2B,MAAM,GAAG,CAAC,CAAC,CAAC,EACpD;MACA,IAAI,CAAC3B,OAAO,CAACmL,IAAI,CAACrF,OAAO,CAAC;IAC5B;IACA,IAAI,CAAC3D,gBAAgB,CAAC,CAAC;IAEvB,IAAQiJ,QAAQ,GAAK,IAAI,CAACjM,KAAK,CAAvBiM,QAAQ;IAChBA,QAAQ,CAACtF,OAAO,CAAC;EACnB;EAEA3D,gBAAgBA,CAAA,EAAS;IACvB,IAAI,CAAC,IAAI,CAACH,aAAa,EAAE;MACvB;IACF;IAEA,IAAQqJ,SAAS,GAAK,IAAI,CAAClM,KAAK,CAAxBkM,SAAS;IACjBtN,aAAa,CAACsN,SAAS,CAAC;IACxB,IAAMC,aAAa,GAAG,IAAI,CAACtJ,aAAa,CAACuJ,gBAAgB,CAAC,CAAC;IAC3D,IAAMhL,mBAAmB,GAAGiL,IAAI,CAACC,GAAG,CAClCD,IAAI,CAACE,GAAG,CAACJ,aAAa,EAAED,SAAS,CAAC,EAClCtM,gBACF,CAAC;;IAED;IACA,IAAM4M,YAAY,GAAGL,aAAa,GAAG/K,mBAAmB;IAExD,IAAMqL,OAAO,GAAG;MAAEC,kBAAkB,EAAEF,YAAY,GAAG/J,SAAS,GAAG;IAAE,CAAC;IAEpE,IAAI,CAAC2C,QAAQ,CACX;MACEhE;IACF,CAAC,EACD,MAAM;MAAA,IAAAuL,qBAAA,EAAAC,qBAAA;MACJ,CAAAD,qBAAA,OAAI,CAAC9J,aAAa,cAAA8J,qBAAA,eAAlBA,qBAAA,CAAoBE,aAAa,CAACJ,OAAO,CAAC;MAC1C,CAAAG,qBAAA,OAAI,CAAC/J,aAAa,cAAA+J,qBAAA,eAAlBA,qBAAA,CAAoB9C,MAAM,CAAC,CAAC;IAC9B,CACF,CAAC;EACH;EAEAgD,MAAMA,CAAA,EAAiB;IACrB,IAAAC,YAAA,GAAwC,IAAI,CAAC/M,KAAK;MAA1CgN,QAAQ,GAAAD,YAAA,CAARC,QAAQ;MAAE7J,QAAQ,GAAA4J,YAAA,CAAR5J,QAAQ;MAAExB,OAAO,GAAAoL,YAAA,CAAPpL,OAAO;IACnC,IAAAsL,WAAA,GAAkD,IAAI,CAAC9L,KAAK;MAApDC,mBAAmB,GAAA6L,WAAA,CAAnB7L,mBAAmB;MAAEC,SAAS,GAAA4L,WAAA,CAAT5L,SAAS;MAAEC,KAAK,GAAA2L,WAAA,CAAL3L,KAAK;IAC7C,oBACEnC,IAAA;MAAK+N,SAAS,EAAExO,UAAU,CAAC,uBAAuB,EAAE;QAAEsO;MAAS,CAAC,CAAE;MAAAG,QAAA,eAChE9N,KAAA;QACE6N,SAAS,EAAExO,UAAU,CAAC,6BAA6B,EAAE;UACnD4D,KAAK,EAAEjB;QACT,CAAC,CAAE;QAAA8L,QAAA,gBAEHhO,IAAA;UACE+N,SAAS,EAAEpN,YAAY,CAACsN,gBAAiB;UACzCC,GAAG,EAAE,IAAI,CAAC/M,gBAAiB;UAC3BgN,KAAK,EAAE;YAAEC,MAAM,EAAEnM;UAAoB,CAAE;UAAA+L,QAAA,eAEvChO,IAAA,CAACF,MAAM;YACLiO,SAAS,EAAC,aAAa;YACvBM,QAAQ,EAAE,IAAI,CAACtK,iBAAiB,CAAC,CAAE;YACnCuK,mBAAmB,EAAE,IAAI,CAACvN,uBAAwB;YAClDwN,mBAAmB,EAAE,IAAI,CAACtN;UAAwB,CACnD;QAAC,CACC,CAAC,EACLkB,KAAK,iBACJnC,IAAA,CAACL,eAAe;UACdwC,KAAK,EAAEA,KAAM;UACb6B,QAAQ,EAAEA,QAAS;UACnBxB,OAAO,EAAEA;QAAQ,CAClB,CACF;MAAA,CACE;IAAC,CACH,CAAC;EAEV;AACF;AAAC1B,eAAA,CA/gBYH,YAAY,kBAID;EACpBoM,SAAS,EAAE1M,WAAW,GAAG,EAAE;EAC3BgL,KAAK,EAAE,IAAI;EACXwC,QAAQ,EAAE;AACZ,CAAC;AAAA/M,eAAA,CARUH,YAAY,sBAUG,eAAe;AAugB3C,eAAeA,YAAY","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;
|
|
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"}
|
package/dist/common/Code.js
CHANGED
|
@@ -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
|
|
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
|