@deephaven/console 1.30.1-plotly-v4.888ad98.0.sha-888ad98 → 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 +1 @@
1
- {"version":3,"file":"Code.js","names":["React","useEffect","useState","monaco","useTheme","jsx","_jsx","Code","_ref","children","language","_useState","_useState2","_slicedToArray","colorizedHtml","setColorizedHtml","_useTheme","activeThemes","isCanceled","colorize","_colorize","apply","arguments","_asyncToGenerator","result","editor","toString","style","pointerEvents","dangerouslySetInnerHTML","__html","undefined"],"sources":["../../src/common/Code.tsx"],"sourcesContent":["import React, { useEffect, useState, type ReactNode } from 'react';\nimport * as monaco from 'monaco-editor';\nimport { useTheme } from '@deephaven/components';\n\ninterface CodeProps {\n children: ReactNode;\n language: string;\n}\n\nfunction Code({ children, language }: CodeProps): JSX.Element {\n const [colorizedHtml, setColorizedHtml] = useState<string | null>(null);\n const { activeThemes } = useTheme();\n\n useEffect(() => {\n let isCanceled = false;\n async function colorize() {\n if (children != null && activeThemes != null) {\n const result = await monaco.editor.colorize(\n children.toString(),\n language,\n {}\n );\n if (!isCanceled) {\n setColorizedHtml(result);\n }\n }\n }\n colorize();\n return () => {\n isCanceled = true;\n };\n }, [activeThemes, children, language]);\n\n return (\n <div\n // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.\n // You can still select the text event with this set\n style={{ pointerEvents: 'none' }}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={\n colorizedHtml != null ? { __html: colorizedHtml } : undefined\n }\n />\n );\n}\n\nexport default Code;\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAwB,OAAO;AAClE,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,QAAQ,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOjD,SAASC,IAAIA,CAAAC,IAAA,EAAiD;EAAA,IAA9CC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;EAChC,IAAAC,SAAA,GAA0CT,QAAQ,CAAgB,IAAI,CAAC;IAAAU,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAhEG,aAAa,GAAAF,UAAA;IAAEG,gBAAgB,GAAAH,UAAA;EACtC,IAAAI,SAAA,GAAyBZ,QAAQ,CAAC,CAAC;IAA3Ba,YAAY,GAAAD,SAAA,CAAZC,YAAY;EAEpBhB,SAAS,CAAC,MAAM;IACd,IAAIiB,UAAU,GAAG,KAAK;IAAC,SACRC,QAAQA,CAAA;MAAA,OAAAC,SAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,UAAA;MAAAA,SAAA,GAAAG,iBAAA,CAAvB,aAA0B;QACxB,IAAId,QAAQ,IAAI,IAAI,IAAIQ,YAAY,IAAI,IAAI,EAAE;UAC5C,IAAMO,MAAM,SAASrB,MAAM,CAACsB,MAAM,CAACN,QAAQ,CACzCV,QAAQ,CAACiB,QAAQ,CAAC,CAAC,EACnBhB,QAAQ,EACR,CAAC,CACH,CAAC;UACD,IAAI,CAACQ,UAAU,EAAE;YACfH,gBAAgB,CAACS,MAAM,CAAC;UAC1B;QACF;MACF,CAAC;MAAA,OAAAJ,SAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IACDH,QAAQ,CAAC,CAAC;IACV,OAAO,MAAM;MACXD,UAAU,GAAG,IAAI;IACnB,CAAC;EACH,CAAC,EAAE,CAACD,YAAY,EAAER,QAAQ,EAAEC,QAAQ,CAAC,CAAC;EAEtC,oBACEJ,IAAA;IACE;IACA;IACAqB,KAAK,EAAE;MAAEC,aAAa,EAAE;IAAO;IAC/B;IAAA;IACAC,uBAAuB,EACrBf,aAAa,IAAI,IAAI,GAAG;MAAEgB,MAAM,EAAEhB;IAAc,CAAC,GAAGiB;EACrD,CACF,CAAC;AAEN;AAEA,eAAexB,IAAI","ignoreList":[]}
1
+ {"version":3,"file":"Code.js","names":["React","useEffect","useState","Log","useTheme","MonacoUtils","jsx","_jsx","log","module","Code","_ref","children","language","_useState","_useState2","_slicedToArray","colorizedHtml","setColorizedHtml","_useState3","_useState4","isColorizeFailed","setIsColorizeFailed","_useTheme","activeThemes","isCanceled","colorize","_colorize","apply","arguments","_asyncToGenerator","monaco","load","result","editor","toString","catch","err","error","style","pointerEvents","whiteSpace","dangerouslySetInnerHTML","__html","undefined"],"sources":["../../src/common/Code.tsx"],"sourcesContent":["import React, { useEffect, useState, type ReactNode } from 'react';\nimport Log from '@deephaven/log';\nimport { useTheme } from '@deephaven/components';\nimport MonacoUtils from '../monaco/MonacoUtils';\n\nconst log = Log.module('Code');\n\ninterface CodeProps {\n children: ReactNode;\n language: string;\n}\n\nfunction Code({ children, language }: CodeProps): JSX.Element {\n const [colorizedHtml, setColorizedHtml] = useState<string | null>(null);\n const [isColorizeFailed, setIsColorizeFailed] = useState(false);\n const { activeThemes } = useTheme();\n\n useEffect(() => {\n let isCanceled = false;\n async function colorize() {\n if (children != null && activeThemes != null) {\n const monaco = await MonacoUtils.load();\n const result = await monaco.editor.colorize(\n children.toString(),\n language,\n {}\n );\n if (!isCanceled) {\n setColorizedHtml(result);\n setIsColorizeFailed(false);\n }\n }\n }\n colorize().catch(err => {\n log.error('Unable to colorize code, showing it as plain text', err);\n if (!isCanceled) {\n setIsColorizeFailed(true);\n }\n });\n return () => {\n isCanceled = true;\n };\n }, [activeThemes, children, language]);\n\n if (isColorizeFailed) {\n return (\n <div style={{ pointerEvents: 'none', whiteSpace: 'pre-wrap' }}>\n {children}\n </div>\n );\n }\n\n return (\n <div\n // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.\n // You can still select the text event with this set\n style={{ pointerEvents: 'none' }}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={\n colorizedHtml != null ? { __html: colorizedHtml } : undefined\n }\n />\n );\n}\n\nexport default Code;\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAwB,OAAO;AAClE,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,QAAQ,QAAQ,uBAAuB;AAAC,OAC1CC,WAAW;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAElB,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAM,CAAC,MAAM,CAAC;AAO9B,SAASC,IAAIA,CAAAC,IAAA,EAAiD;EAAA,IAA9CC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;EAChC,IAAAC,SAAA,GAA0CZ,QAAQ,CAAgB,IAAI,CAAC;IAAAa,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAhEG,aAAa,GAAAF,UAAA;IAAEG,gBAAgB,GAAAH,UAAA;EACtC,IAAAI,UAAA,GAAgDjB,QAAQ,CAAC,KAAK,CAAC;IAAAkB,UAAA,GAAAJ,cAAA,CAAAG,UAAA;IAAxDE,gBAAgB,GAAAD,UAAA;IAAEE,mBAAmB,GAAAF,UAAA;EAC5C,IAAAG,SAAA,GAAyBnB,QAAQ,CAAC,CAAC;IAA3BoB,YAAY,GAAAD,SAAA,CAAZC,YAAY;EAEpBvB,SAAS,CAAC,MAAM;IACd,IAAIwB,UAAU,GAAG,KAAK;IAAC,SACRC,QAAQA,CAAA;MAAA,OAAAC,SAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,UAAA;MAAAA,SAAA,GAAAG,iBAAA,CAAvB,aAA0B;QACxB,IAAIlB,QAAQ,IAAI,IAAI,IAAIY,YAAY,IAAI,IAAI,EAAE;UAC5C,IAAMO,MAAM,SAAS1B,WAAW,CAAC2B,IAAI,CAAC,CAAC;UACvC,IAAMC,MAAM,SAASF,MAAM,CAACG,MAAM,CAACR,QAAQ,CACzCd,QAAQ,CAACuB,QAAQ,CAAC,CAAC,EACnBtB,QAAQ,EACR,CAAC,CACH,CAAC;UACD,IAAI,CAACY,UAAU,EAAE;YACfP,gBAAgB,CAACe,MAAM,CAAC;YACxBX,mBAAmB,CAAC,KAAK,CAAC;UAC5B;QACF;MACF,CAAC;MAAA,OAAAK,SAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IACDH,QAAQ,CAAC,CAAC,CAACU,KAAK,CAACC,GAAG,IAAI;MACtB7B,GAAG,CAAC8B,KAAK,CAAC,mDAAmD,EAAED,GAAG,CAAC;MACnE,IAAI,CAACZ,UAAU,EAAE;QACfH,mBAAmB,CAAC,IAAI,CAAC;MAC3B;IACF,CAAC,CAAC;IACF,OAAO,MAAM;MACXG,UAAU,GAAG,IAAI;IACnB,CAAC;EACH,CAAC,EAAE,CAACD,YAAY,EAAEZ,QAAQ,EAAEC,QAAQ,CAAC,CAAC;EAEtC,IAAIQ,gBAAgB,EAAE;IACpB,oBACEd,IAAA;MAAKgC,KAAK,EAAE;QAAEC,aAAa,EAAE,MAAM;QAAEC,UAAU,EAAE;MAAW,CAAE;MAAA7B,QAAA,EAC3DA;IAAQ,CACN,CAAC;EAEV;EAEA,oBACEL,IAAA;IACE;IACA;IACAgC,KAAK,EAAE;MAAEC,aAAa,EAAE;IAAO;IAC/B;IAAA;IACAE,uBAAuB,EACrBzB,aAAa,IAAI,IAAI,GAAG;MAAE0B,MAAM,EAAE1B;IAAc,CAAC,GAAG2B;EACrD,CACF,CAAC;AAEN;AAEA,eAAelC,IAAI","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { PureComponent, type ReactElement } from 'react';
2
2
  import { type DropdownActions } from '@deephaven/components';
3
3
  import type { dh } from '@deephaven/jsapi-types';
4
- import * as monaco from 'monaco-editor';
4
+ import type * as monaco from 'monaco-editor';
5
5
  import './LogView.scss';
6
6
  import LogLevelMenuItem from './LogLevelMenuItem';
7
7
  interface LogViewProps {
@@ -28,7 +28,6 @@ declare class LogView extends PureComponent<LogViewProps, LogViewState> {
28
28
  componentWillUnmount(): void;
29
29
  cancelListener?: () => void | null;
30
30
  editor?: monaco.editor.IStandaloneCodeEditor;
31
- editorContainer: HTMLDivElement | null;
32
31
  logLevelMenuItems: Record<string, LogLevelMenuItem>;
33
32
  flushTimer?: ReturnType<typeof setTimeout>;
34
33
  bufferedMessages: dh.ide.LogItem[];
@@ -37,8 +36,8 @@ declare class LogView extends PureComponent<LogViewProps, LogViewState> {
37
36
  resetLogLevels(): void;
38
37
  startListening(): void;
39
38
  stopListening(): void;
40
- initMonaco(): void;
41
- destroyMonaco(): void;
39
+ handleEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor): void;
40
+ handleEditorWillDestroy(): void;
42
41
  triggerFindWidget(): void;
43
42
  toggleAll(): void;
44
43
  toggleLogLevel(logLevel: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"LogView.d.ts","sourceRoot":"","sources":["../../src/log/LogView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LogView.d.ts","sourceRoot":"","sources":["../../src/log/LogView.tsx"],"names":[],"mappings":"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"}
@@ -7,13 +7,32 @@ import React, { PureComponent } from 'react';
7
7
  import { Button, DropdownMenu } from '@deephaven/components';
8
8
  import { vsGear, dhTrashUndo } from '@deephaven/icons';
9
9
  import { assertNotNull } from '@deephaven/utils';
10
- import * as monaco from 'monaco-editor';
11
10
  import ConsoleUtils from "../common/ConsoleUtils.js";
12
11
  import LogLevel from "./LogLevel.js";
13
12
  import "./LogView.css";
14
13
  import LogLevelMenuItem from "./LogLevelMenuItem.js";
14
+ import Editor from "../notebook/Editor.js";
15
15
  import { MonacoUtils } from "../monaco/index.js";
16
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
+ var EDITOR_SETTINGS = {
18
+ copyWithSyntaxHighlighting: false,
19
+ fixedOverflowWidgets: true,
20
+ folding: false,
21
+ fontFamily: 'Fira Mono',
22
+ glyphMargin: false,
23
+ language: 'log',
24
+ lineDecorationsWidth: 0,
25
+ lineNumbers: 'off',
26
+ lineNumbersMinChars: 0,
27
+ minimap: {
28
+ enabled: false
29
+ },
30
+ readOnly: true,
31
+ renderLineHighlight: 'none',
32
+ scrollBeyondLastLine: false,
33
+ value: '',
34
+ wordWrap: 'on'
35
+ };
17
36
  /**
18
37
  * Log view contents. Uses a monaco editor to display/search the contents of the log.
19
38
  */
@@ -27,12 +46,13 @@ class LogView extends PureComponent {
27
46
  super(props);
28
47
  _defineProperty(this, "cancelListener", void 0);
29
48
  _defineProperty(this, "editor", void 0);
30
- _defineProperty(this, "editorContainer", void 0);
31
49
  _defineProperty(this, "logLevelMenuItems", void 0);
32
50
  _defineProperty(this, "flushTimer", void 0);
33
51
  _defineProperty(this, "bufferedMessages", void 0);
34
52
  _defineProperty(this, "messages", void 0);
35
53
  this.handleClearClick = this.handleClearClick.bind(this);
54
+ this.handleEditorInitialized = this.handleEditorInitialized.bind(this);
55
+ this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);
36
56
  this.handleFlushTimeout = this.handleFlushTimeout.bind(this);
37
57
  this.handleLogMessage = this.handleLogMessage.bind(this);
38
58
  this.handleMenuItemClick = this.handleMenuItemClick.bind(this);
@@ -40,7 +60,6 @@ class LogView extends PureComponent {
40
60
  this.handleResize = this.handleResize.bind(this);
41
61
  this.handleToggleAllClick = this.handleToggleAllClick.bind(this);
42
62
  this.logLevelMenuItems = {};
43
- this.editorContainer = null;
44
63
  this.bufferedMessages = [];
45
64
  this.messages = [];
46
65
  this.state = {
@@ -49,7 +68,6 @@ class LogView extends PureComponent {
49
68
  }
50
69
  componentDidMount() {
51
70
  this.resetLogLevels();
52
- this.initMonaco();
53
71
  this.startListening();
54
72
  window.addEventListener('resize', this.handleResize);
55
73
  }
@@ -70,7 +88,6 @@ class LogView extends PureComponent {
70
88
  componentWillUnmount() {
71
89
  this.stopFlushTimer();
72
90
  this.stopListening();
73
- this.destroyMonaco();
74
91
  window.removeEventListener('resize', this.handleResize);
75
92
  }
76
93
  getMenuActions(shownLogLevels) {
@@ -149,27 +166,9 @@ class LogView extends PureComponent {
149
166
  this.cancelListener = undefined;
150
167
  }
151
168
  }
152
- initMonaco() {
153
- assertNotNull(this.editorContainer);
154
- this.editor = monaco.editor.create(this.editorContainer, {
155
- copyWithSyntaxHighlighting: false,
156
- fixedOverflowWidgets: true,
157
- folding: false,
158
- fontFamily: 'Fira Mono',
159
- glyphMargin: false,
160
- language: 'log',
161
- lineDecorationsWidth: 0,
162
- lineNumbers: 'off',
163
- lineNumbersMinChars: 0,
164
- minimap: {
165
- enabled: false
166
- },
167
- readOnly: true,
168
- renderLineHighlight: 'none',
169
- scrollBeyondLastLine: false,
170
- value: '',
171
- wordWrap: 'on'
172
- });
169
+ handleEditorInitialized(editor) {
170
+ this.editor = editor;
171
+ var monaco = MonacoUtils.getMonaco();
173
172
 
174
173
  // Override default Monaco keybindings for `escape` and `shift-escape`
175
174
  [[monaco.KeyCode.Escape], [monaco.KeyMod.Shift | monaco.KeyCode.Escape] // eslint-disable-line no-bitwise
@@ -194,12 +193,12 @@ class LogView extends PureComponent {
194
193
  }
195
194
  });
196
195
  });
196
+
197
+ // Show anything logged before the editor existed
198
+ this.refreshLogText();
197
199
  }
198
- destroyMonaco() {
199
- if (this.editor) {
200
- this.editor.dispose();
201
- this.editor = undefined;
202
- }
200
+ handleEditorWillDestroy() {
201
+ this.editor = undefined;
203
202
  }
204
203
  triggerFindWidget() {
205
204
  var _this$editor3, _this$editor4;
@@ -457,11 +456,11 @@ class LogView extends PureComponent {
457
456
  popperOptions: popperOptions
458
457
  })
459
458
  })]
460
- }), /*#__PURE__*/_jsx("div", {
459
+ }), /*#__PURE__*/_jsx(Editor, {
461
460
  className: "log-pane-editor h-100 w-100",
462
- ref: editorContainer => {
463
- this.editorContainer = editorContainer;
464
- }
461
+ settings: EDITOR_SETTINGS,
462
+ onEditorInitialized: this.handleEditorInitialized,
463
+ onEditorWillDestroy: this.handleEditorWillDestroy
465
464
  })]
466
465
  });
467
466
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LogView.js","names":["React","PureComponent","Button","DropdownMenu","vsGear","dhTrashUndo","assertNotNull","monaco","ConsoleUtils","LogLevel","LogLevelMenuItem","MonacoUtils","jsx","_jsx","jsxs","_jsxs","LogView","getLogText","logItem","date","Date","micros","timestamp","formatTimestamp","concat","logLevel","message","constructor","props","_defineProperty","handleClearClick","bind","handleFlushTimeout","handleLogMessage","handleMenuItemClick","handleResetClick","handleResize","handleToggleAllClick","logLevelMenuItems","editorContainer","bufferedMessages","messages","state","shownLogLevels","componentDidMount","resetLogLevels","initMonaco","startListening","window","addEventListener","componentDidUpdate","prevProps","prevState","updateDimensions","refreshLogText","session","stopListening","clearLogs","componentWillUnmount","stopFlushTimer","destroyMonaco","removeEventListener","getMenuActions","_this","actions","push","menuElement","className","children","group","order","_loop","AllLogLevels","i","on","title","onClick","ref","element","length","kind","_loop2","isEnabled","DefaultLogLevels","some","level","setState","cancelListener","onLogMessage","undefined","editor","create","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","language","lineDecorationsWidth","lineNumbers","lineNumbersMinChars","minimap","enabled","readOnly","renderLineHighlight","scrollBeyondLastLine","value","wordWrap","KeyCode","Escape","KeyMod","Shift","forEach","keybindings","disableKeyBindings","addAction","id","label","keybindingContext","run","_this$editor","_this$editor2","position","getPosition","setPosition","dispose","triggerFindWidget","_this$editor3","_this$editor4","focus","trigger","toggleAll","isAllEnabled","updatedLogLevels","toggleLogLevel","updateLogLevels","_objectSpread","appendLogText","text","model","getModel","line","getLineCount","column","getLineLength","isBottomVisible","edits","range","startLineNumber","startColumn","endLineNumber","endColumn","forceMoveMarkers","applyEdits","lineCount","revealLine","truncateLogIfNecessary","logText","charAt","trimRight","setValue","_this$editor$getModel","maxLogSize","splice","truncateSize","scrollToBottom","_this$editor5","_this$editor5$getMode","call","isLineVisible","_this$editor6","visibleRanges","getVisibleRanges","isLogItemVisible","flush","queue","flushTimer","setTimeout","bufferTimeout","clearTimeout","layout","render","popperOptions","placement","icon","tooltip","popperClassName","STDOUT","ERROR","FATAL","STDERR","WARN","INFO","DEBUG","TRACE"],"sources":["../../src/log/LogView.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement } from 'react';\nimport {\n Button,\n type DropdownActions,\n DropdownMenu,\n} from '@deephaven/components';\nimport { vsGear, dhTrashUndo } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type Placement } from 'popper.js';\nimport * as monaco from 'monaco-editor';\nimport ConsoleUtils from '../common/ConsoleUtils';\nimport LogLevel from './LogLevel';\nimport './LogView.scss';\nimport LogLevelMenuItem from './LogLevelMenuItem';\nimport { MonacoUtils } from '../monaco';\n\ninterface LogViewProps {\n session: dh.IdeSession;\n}\n\ninterface LogViewState {\n shownLogLevels: Record<string, boolean>;\n}\n/**\n * Log view contents. Uses a monaco editor to display/search the contents of the log.\n */\nclass LogView extends PureComponent<LogViewProps, LogViewState> {\n static DefaultLogLevels = [\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n ];\n\n static AllLogLevels = [\n LogLevel.INFO,\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n LogLevel.DEBUG,\n LogLevel.TRACE,\n ];\n\n /** ms to buffer log messages before processing them */\n static bufferTimeout = 16;\n\n /** Maximum number of messages to store in the log */\n static maxLogSize = 131072;\n\n static truncateSize = 65536;\n\n static getLogText(logItem: dh.ide.LogItem): string {\n const date = new Date(logItem.micros / 1000);\n const timestamp = ConsoleUtils.formatTimestamp(date);\n return `${timestamp} ${logItem.logLevel} ${logItem.message}`;\n }\n\n constructor(props: LogViewProps) {\n super(props);\n\n this.handleClearClick = this.handleClearClick.bind(this);\n this.handleFlushTimeout = this.handleFlushTimeout.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleResetClick = this.handleResetClick.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleToggleAllClick = this.handleToggleAllClick.bind(this);\n\n this.logLevelMenuItems = {};\n\n this.editorContainer = null;\n\n this.bufferedMessages = [];\n this.messages = [];\n\n this.state = {\n shownLogLevels: {},\n };\n }\n\n componentDidMount(): void {\n this.resetLogLevels();\n this.initMonaco();\n this.startListening();\n\n window.addEventListener('resize', this.handleResize);\n }\n\n componentDidUpdate(prevProps: LogViewProps, prevState: LogViewState): void {\n this.updateDimensions();\n\n const { shownLogLevels } = this.state;\n if (prevState.shownLogLevels !== shownLogLevels) {\n this.refreshLogText();\n }\n\n const { session } = this.props;\n if (prevProps.session !== session) {\n this.stopListening();\n this.startListening();\n // clear logs when starting a new console\n this.clearLogs();\n }\n }\n\n componentWillUnmount(): void {\n this.stopFlushTimer();\n this.stopListening();\n this.destroyMonaco();\n\n window.removeEventListener('resize', this.handleResize);\n }\n\n cancelListener?: () => void | null;\n\n editor?: monaco.editor.IStandaloneCodeEditor;\n\n editorContainer: HTMLDivElement | null;\n\n logLevelMenuItems: Record<string, LogLevelMenuItem>;\n\n flushTimer?: ReturnType<typeof setTimeout>;\n\n bufferedMessages: dh.ide.LogItem[];\n\n messages: dh.ide.LogItem[];\n\n getMenuActions(shownLogLevels: Record<string, boolean>): DropdownActions {\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"log-level-menu-title\">Display Log Levels</div>\n ),\n group: 1,\n order: 10,\n });\n\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const on =\n shownLogLevels[logLevel] != null ? shownLogLevels[logLevel] : false;\n actions.push({\n title: logLevel,\n group: 1,\n order: i + 100,\n\n menuElement: (\n <LogLevelMenuItem\n logLevel={logLevel}\n on={on}\n onClick={this.handleMenuItemClick}\n ref={element => {\n if (element != null) {\n this.logLevelMenuItems[logLevel] = element;\n }\n }}\n />\n ),\n });\n }\n\n actions.push({\n group: 1,\n order: 1000,\n menuElement: (\n <div className=\"log-level-menu-controls\">\n <Button\n kind=\"ghost\"\n className=\"log-level-toggle-all\"\n onClick={this.handleToggleAllClick}\n >\n Toggle All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleResetClick}>\n Reset\n </Button>\n </div>\n ),\n });\n\n return actions;\n }\n\n resetLogLevels(): void {\n const shownLogLevels: Record<string, boolean> = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const isEnabled = LogView.DefaultLogLevels.some(\n level => level === logLevel\n );\n shownLogLevels[logLevel] = isEnabled;\n }\n\n this.setState({ shownLogLevels });\n }\n\n startListening(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n stopListening(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n initMonaco(): void {\n assertNotNull(this.editorContainer);\n this.editor = monaco.editor.create(this.editorContainer, {\n copyWithSyntaxHighlighting: false,\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'log',\n lineDecorationsWidth: 0,\n lineNumbers: 'off',\n lineNumbersMinChars: 0,\n minimap: { enabled: false },\n readOnly: true,\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n value: '',\n wordWrap: 'on',\n });\n\n // Override default Monaco keybindings for `escape` and `shift-escape`\n [\n [monaco.KeyCode.Escape],\n [monaco.KeyMod.Shift | monaco.KeyCode.Escape], // eslint-disable-line no-bitwise\n ].forEach(keybindings => {\n assertNotNull(this.editor);\n\n // Monaco default behavior is for escape key to close the find widget.\n // Instead, capture it and do nothing. Same for shift-escape.\n MonacoUtils.disableKeyBindings(this.editor, keybindings);\n\n // Restore regular escape to clear selection, when editorText has focus.\n this.editor.addAction({\n id: 'clear-selection-on-escape',\n label: '',\n keybindings: [monaco.KeyCode.Escape],\n keybindingContext: 'findWidgetVisible && editorTextFocus',\n run: () => {\n const position = this.editor?.getPosition();\n assertNotNull(position);\n this.editor?.setPosition(position);\n },\n });\n });\n }\n\n destroyMonaco(): void {\n if (this.editor) {\n this.editor.dispose();\n this.editor = undefined;\n }\n }\n\n triggerFindWidget(): void {\n // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.\n // As a workaround, just focus the editor before triggering the action\n // https://github.com/microsoft/monaco-editor/issues/2355\n this.editor?.focus();\n this.editor?.trigger('keyboard', 'actions.find', undefined);\n }\n\n toggleAll(): void {\n const { shownLogLevels } = this.state;\n let isAllEnabled = true;\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n if (!shownLogLevels[logLevel]) {\n isAllEnabled = false;\n break;\n }\n }\n\n if (isAllEnabled) {\n this.setState({ shownLogLevels: {} });\n } else {\n const updatedLogLevels: Record<string, boolean> = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n updatedLogLevels[logLevel] = true;\n }\n this.setState({ shownLogLevels: updatedLogLevels });\n }\n }\n\n toggleLogLevel(logLevel: string): void {\n const { shownLogLevels } = this.state;\n const isEnabled = shownLogLevels[logLevel];\n const updatedLogLevels: Record<string, boolean> = {};\n updatedLogLevels[logLevel] = !isEnabled;\n this.updateLogLevels(updatedLogLevels);\n }\n\n updateLogLevels(updatedLogLevels: Record<string, boolean>): void {\n let { shownLogLevels } = this.state;\n shownLogLevels = { ...shownLogLevels, ...updatedLogLevels };\n this.setState({ shownLogLevels });\n }\n\n appendLogText(text: string): void {\n if (!this.editor) {\n return;\n }\n\n const model = this.editor.getModel();\n let line = model?.getLineCount();\n assertNotNull(line);\n let column = model?.getLineLength(line);\n assertNotNull(column);\n const isBottomVisible = this.isBottomVisible();\n\n const edits = [];\n if (column > 0) {\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column + 1,\n endLineNumber: line,\n endColumn: column + 1,\n },\n text: '\\n',\n forceMoveMarkers: true,\n });\n line += 1;\n column = 0;\n }\n\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column,\n endLineNumber: line,\n endColumn: column,\n },\n text,\n forceMoveMarkers: true,\n });\n\n model?.applyEdits(edits);\n\n if (isBottomVisible) {\n const lineCount = model?.getLineCount();\n assertNotNull(lineCount);\n this.editor.revealLine(lineCount, 1);\n }\n }\n\n /**\n * Refresh the contents of the log component with the updated filter text\n */\n refreshLogText(): void {\n if (!this.editor) {\n return;\n }\n\n this.truncateLogIfNecessary();\n\n const { shownLogLevels } = this.state;\n const isBottomVisible = this.isBottomVisible();\n\n let text = '';\n for (let i = 0; i < this.messages.length; i += 1) {\n const message = this.messages[i];\n if (shownLogLevels[message.logLevel]) {\n const logText = LogView.getLogText(message);\n if (logText.length > 0) {\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n }\n }\n text = text.trimRight();\n\n this.editor.setValue(text);\n\n if (isBottomVisible) {\n const line = this.editor.getModel()?.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n\n this.stopFlushTimer();\n this.bufferedMessages = [];\n }\n\n truncateLogIfNecessary(): void {\n if (this.messages.length > LogView.maxLogSize) {\n this.messages = this.messages.splice(\n this.messages.length - LogView.truncateSize\n );\n }\n }\n\n scrollToBottom(): void {\n if (!this.editor) {\n return;\n }\n\n const line = this.editor?.getModel?.()?.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n\n isBottomVisible(): boolean {\n if (!this.editor) {\n return true;\n }\n\n const model = this.editor.getModel();\n const line = model?.getLineCount();\n\n assertNotNull(line);\n return this.isLineVisible(line);\n }\n\n isLineVisible(line: number): boolean {\n const visibleRanges = this.editor?.getVisibleRanges();\n if (visibleRanges == null || visibleRanges.length === 0) {\n return false;\n }\n\n for (let i = 0; i < visibleRanges.length; i += 1) {\n const range = visibleRanges[i];\n if (range.startLineNumber <= line && line <= range.endLineNumber) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Checks if the given log message is visible with the current filters */\n isLogItemVisible(message: dh.ide.LogItem): boolean {\n const { shownLogLevels } = this.state;\n return shownLogLevels[message.logLevel];\n }\n\n flush(): void {\n let text = '';\n for (let i = 0; i < this.bufferedMessages.length; i += 1) {\n const message = this.bufferedMessages[i];\n const logText = LogView.getLogText(message);\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n\n this.bufferedMessages = [];\n\n this.appendLogText(text);\n }\n\n queue(message: dh.ide.LogItem): void {\n this.bufferedMessages.push(message);\n if (this.bufferedMessages.length === 1) {\n this.flushTimer = setTimeout(\n this.handleFlushTimeout,\n LogView.bufferTimeout\n );\n }\n }\n\n stopFlushTimer(): void {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n }\n\n updateDimensions(): void {\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n handleClearClick(): void {\n this.clearLogs();\n }\n\n clearLogs(): void {\n this.messages = [];\n this.refreshLogText();\n }\n\n handleFlushTimeout(): void {\n this.stopFlushTimer();\n this.flush();\n }\n\n handleLogMessage(message: dh.ide.LogItem): void {\n this.messages.push(message);\n\n if (this.editor && this.isLogItemVisible(message)) {\n this.queue(message);\n }\n }\n\n handleMenuItemClick(logLevel: string): void {\n this.toggleLogLevel(logLevel);\n }\n\n handleResetClick(): void {\n this.resetLogLevels();\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n handleToggleAllClick(): void {\n this.toggleAll();\n }\n\n render(): ReactElement {\n const popperOptions = { placement: 'bottom-end' as Placement };\n const { shownLogLevels } = this.state;\n const actions = this.getMenuActions(shownLogLevels);\n return (\n <div className=\"log-pane h-100 w-100\">\n <div className=\"log-pane-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn-clear-logs\"\n onClick={this.handleClearClick}\n icon={dhTrashUndo}\n tooltip=\"Clear log\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon btn-overflow\"\n icon={vsGear}\n tooltip=\"Log Settings\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu'\n }}\n >\n <DropdownMenu\n actions={actions}\n popperClassName=\"log-level-menu-popper\"\n popperOptions={popperOptions}\n />\n </Button>\n </div>\n <div\n className=\"log-pane-editor h-100 w-100\"\n ref={editorContainer => {\n this.editorContainer = editorContainer;\n }}\n />\n </div>\n );\n }\n}\n\nexport default LogView;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LogView.js","names":["React","PureComponent","Button","DropdownMenu","vsGear","dhTrashUndo","assertNotNull","ConsoleUtils","LogLevel","LogLevelMenuItem","Editor","MonacoUtils","jsx","_jsx","jsxs","_jsxs","EDITOR_SETTINGS","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","language","lineDecorationsWidth","lineNumbers","lineNumbersMinChars","minimap","enabled","readOnly","renderLineHighlight","scrollBeyondLastLine","value","wordWrap","LogView","getLogText","logItem","date","Date","micros","timestamp","formatTimestamp","concat","logLevel","message","constructor","props","_defineProperty","handleClearClick","bind","handleEditorInitialized","handleEditorWillDestroy","handleFlushTimeout","handleLogMessage","handleMenuItemClick","handleResetClick","handleResize","handleToggleAllClick","logLevelMenuItems","bufferedMessages","messages","state","shownLogLevels","componentDidMount","resetLogLevels","startListening","window","addEventListener","componentDidUpdate","prevProps","prevState","updateDimensions","refreshLogText","session","stopListening","clearLogs","componentWillUnmount","stopFlushTimer","removeEventListener","getMenuActions","_this","actions","push","menuElement","className","children","group","order","_loop","AllLogLevels","i","on","title","onClick","ref","element","length","kind","_loop2","isEnabled","DefaultLogLevels","some","level","setState","cancelListener","onLogMessage","undefined","editor","monaco","getMonaco","KeyCode","Escape","KeyMod","Shift","forEach","keybindings","disableKeyBindings","addAction","id","label","keybindingContext","run","_this$editor","_this$editor2","position","getPosition","setPosition","triggerFindWidget","_this$editor3","_this$editor4","focus","trigger","toggleAll","isAllEnabled","updatedLogLevels","toggleLogLevel","updateLogLevels","_objectSpread","appendLogText","text","model","getModel","line","getLineCount","column","getLineLength","isBottomVisible","edits","range","startLineNumber","startColumn","endLineNumber","endColumn","forceMoveMarkers","applyEdits","lineCount","revealLine","truncateLogIfNecessary","logText","charAt","trimRight","setValue","_this$editor$getModel","maxLogSize","splice","truncateSize","scrollToBottom","_this$editor5","_this$editor5$getMode","call","isLineVisible","_this$editor6","visibleRanges","getVisibleRanges","isLogItemVisible","flush","queue","flushTimer","setTimeout","bufferTimeout","clearTimeout","layout","render","popperOptions","placement","icon","tooltip","popperClassName","settings","onEditorInitialized","onEditorWillDestroy","STDOUT","ERROR","FATAL","STDERR","WARN","INFO","DEBUG","TRACE"],"sources":["../../src/log/LogView.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement } from 'react';\nimport {\n Button,\n type DropdownActions,\n DropdownMenu,\n} from '@deephaven/components';\nimport { vsGear, dhTrashUndo } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type Placement } from 'popper.js';\nimport type * as monaco from 'monaco-editor';\nimport ConsoleUtils from '../common/ConsoleUtils';\nimport LogLevel from './LogLevel';\nimport './LogView.scss';\nimport LogLevelMenuItem from './LogLevelMenuItem';\nimport Editor from '../notebook/Editor';\nimport { MonacoUtils } from '../monaco';\n\nconst EDITOR_SETTINGS: monaco.editor.IStandaloneEditorConstructionOptions = {\n copyWithSyntaxHighlighting: false,\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'log',\n lineDecorationsWidth: 0,\n lineNumbers: 'off',\n lineNumbersMinChars: 0,\n minimap: { enabled: false },\n readOnly: true,\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n value: '',\n wordWrap: 'on',\n};\n\ninterface LogViewProps {\n session: dh.IdeSession;\n}\n\ninterface LogViewState {\n shownLogLevels: Record<string, boolean>;\n}\n/**\n * Log view contents. Uses a monaco editor to display/search the contents of the log.\n */\nclass LogView extends PureComponent<LogViewProps, LogViewState> {\n static DefaultLogLevels = [\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n ];\n\n static AllLogLevels = [\n LogLevel.INFO,\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n LogLevel.DEBUG,\n LogLevel.TRACE,\n ];\n\n /** ms to buffer log messages before processing them */\n static bufferTimeout = 16;\n\n /** Maximum number of messages to store in the log */\n static maxLogSize = 131072;\n\n static truncateSize = 65536;\n\n static getLogText(logItem: dh.ide.LogItem): string {\n const date = new Date(logItem.micros / 1000);\n const timestamp = ConsoleUtils.formatTimestamp(date);\n return `${timestamp} ${logItem.logLevel} ${logItem.message}`;\n }\n\n constructor(props: LogViewProps) {\n super(props);\n\n this.handleClearClick = this.handleClearClick.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleFlushTimeout = this.handleFlushTimeout.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleResetClick = this.handleResetClick.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleToggleAllClick = this.handleToggleAllClick.bind(this);\n\n this.logLevelMenuItems = {};\n\n this.bufferedMessages = [];\n this.messages = [];\n\n this.state = {\n shownLogLevels: {},\n };\n }\n\n componentDidMount(): void {\n this.resetLogLevels();\n this.startListening();\n\n window.addEventListener('resize', this.handleResize);\n }\n\n componentDidUpdate(prevProps: LogViewProps, prevState: LogViewState): void {\n this.updateDimensions();\n\n const { shownLogLevels } = this.state;\n if (prevState.shownLogLevels !== shownLogLevels) {\n this.refreshLogText();\n }\n\n const { session } = this.props;\n if (prevProps.session !== session) {\n this.stopListening();\n this.startListening();\n // clear logs when starting a new console\n this.clearLogs();\n }\n }\n\n componentWillUnmount(): void {\n this.stopFlushTimer();\n this.stopListening();\n\n window.removeEventListener('resize', this.handleResize);\n }\n\n cancelListener?: () => void | null;\n\n editor?: monaco.editor.IStandaloneCodeEditor;\n\n logLevelMenuItems: Record<string, LogLevelMenuItem>;\n\n flushTimer?: ReturnType<typeof setTimeout>;\n\n bufferedMessages: dh.ide.LogItem[];\n\n messages: dh.ide.LogItem[];\n\n getMenuActions(shownLogLevels: Record<string, boolean>): DropdownActions {\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"log-level-menu-title\">Display Log Levels</div>\n ),\n group: 1,\n order: 10,\n });\n\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const on =\n shownLogLevels[logLevel] != null ? shownLogLevels[logLevel] : false;\n actions.push({\n title: logLevel,\n group: 1,\n order: i + 100,\n\n menuElement: (\n <LogLevelMenuItem\n logLevel={logLevel}\n on={on}\n onClick={this.handleMenuItemClick}\n ref={element => {\n if (element != null) {\n this.logLevelMenuItems[logLevel] = element;\n }\n }}\n />\n ),\n });\n }\n\n actions.push({\n group: 1,\n order: 1000,\n menuElement: (\n <div className=\"log-level-menu-controls\">\n <Button\n kind=\"ghost\"\n className=\"log-level-toggle-all\"\n onClick={this.handleToggleAllClick}\n >\n Toggle All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleResetClick}>\n Reset\n </Button>\n </div>\n ),\n });\n\n return actions;\n }\n\n resetLogLevels(): void {\n const shownLogLevels: Record<string, boolean> = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const isEnabled = LogView.DefaultLogLevels.some(\n level => level === logLevel\n );\n shownLogLevels[logLevel] = isEnabled;\n }\n\n this.setState({ shownLogLevels });\n }\n\n startListening(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n stopListening(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n handleEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor): void {\n this.editor = editor;\n const monaco = MonacoUtils.getMonaco();\n\n // Override default Monaco keybindings for `escape` and `shift-escape`\n [\n [monaco.KeyCode.Escape],\n [monaco.KeyMod.Shift | monaco.KeyCode.Escape], // eslint-disable-line no-bitwise\n ].forEach(keybindings => {\n assertNotNull(this.editor);\n\n // Monaco default behavior is for escape key to close the find widget.\n // Instead, capture it and do nothing. Same for shift-escape.\n MonacoUtils.disableKeyBindings(this.editor, keybindings);\n\n // Restore regular escape to clear selection, when editorText has focus.\n this.editor.addAction({\n id: 'clear-selection-on-escape',\n label: '',\n keybindings: [monaco.KeyCode.Escape],\n keybindingContext: 'findWidgetVisible && editorTextFocus',\n run: () => {\n const position = this.editor?.getPosition();\n assertNotNull(position);\n this.editor?.setPosition(position);\n },\n });\n });\n\n // Show anything logged before the editor existed\n this.refreshLogText();\n }\n\n handleEditorWillDestroy(): void {\n this.editor = undefined;\n }\n\n triggerFindWidget(): void {\n // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.\n // As a workaround, just focus the editor before triggering the action\n // https://github.com/microsoft/monaco-editor/issues/2355\n this.editor?.focus();\n this.editor?.trigger('keyboard', 'actions.find', undefined);\n }\n\n toggleAll(): void {\n const { shownLogLevels } = this.state;\n let isAllEnabled = true;\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n if (!shownLogLevels[logLevel]) {\n isAllEnabled = false;\n break;\n }\n }\n\n if (isAllEnabled) {\n this.setState({ shownLogLevels: {} });\n } else {\n const updatedLogLevels: Record<string, boolean> = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n updatedLogLevels[logLevel] = true;\n }\n this.setState({ shownLogLevels: updatedLogLevels });\n }\n }\n\n toggleLogLevel(logLevel: string): void {\n const { shownLogLevels } = this.state;\n const isEnabled = shownLogLevels[logLevel];\n const updatedLogLevels: Record<string, boolean> = {};\n updatedLogLevels[logLevel] = !isEnabled;\n this.updateLogLevels(updatedLogLevels);\n }\n\n updateLogLevels(updatedLogLevels: Record<string, boolean>): void {\n let { shownLogLevels } = this.state;\n shownLogLevels = { ...shownLogLevels, ...updatedLogLevels };\n this.setState({ shownLogLevels });\n }\n\n appendLogText(text: string): void {\n if (!this.editor) {\n return;\n }\n\n const model = this.editor.getModel();\n let line = model?.getLineCount();\n assertNotNull(line);\n let column = model?.getLineLength(line);\n assertNotNull(column);\n const isBottomVisible = this.isBottomVisible();\n\n const edits = [];\n if (column > 0) {\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column + 1,\n endLineNumber: line,\n endColumn: column + 1,\n },\n text: '\\n',\n forceMoveMarkers: true,\n });\n line += 1;\n column = 0;\n }\n\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column,\n endLineNumber: line,\n endColumn: column,\n },\n text,\n forceMoveMarkers: true,\n });\n\n model?.applyEdits(edits);\n\n if (isBottomVisible) {\n const lineCount = model?.getLineCount();\n assertNotNull(lineCount);\n this.editor.revealLine(lineCount, 1);\n }\n }\n\n /**\n * Refresh the contents of the log component with the updated filter text\n */\n refreshLogText(): void {\n if (!this.editor) {\n return;\n }\n\n this.truncateLogIfNecessary();\n\n const { shownLogLevels } = this.state;\n const isBottomVisible = this.isBottomVisible();\n\n let text = '';\n for (let i = 0; i < this.messages.length; i += 1) {\n const message = this.messages[i];\n if (shownLogLevels[message.logLevel]) {\n const logText = LogView.getLogText(message);\n if (logText.length > 0) {\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n }\n }\n text = text.trimRight();\n\n this.editor.setValue(text);\n\n if (isBottomVisible) {\n const line = this.editor.getModel()?.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n\n this.stopFlushTimer();\n this.bufferedMessages = [];\n }\n\n truncateLogIfNecessary(): void {\n if (this.messages.length > LogView.maxLogSize) {\n this.messages = this.messages.splice(\n this.messages.length - LogView.truncateSize\n );\n }\n }\n\n scrollToBottom(): void {\n if (!this.editor) {\n return;\n }\n\n const line = this.editor?.getModel?.()?.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n\n isBottomVisible(): boolean {\n if (!this.editor) {\n return true;\n }\n\n const model = this.editor.getModel();\n const line = model?.getLineCount();\n\n assertNotNull(line);\n return this.isLineVisible(line);\n }\n\n isLineVisible(line: number): boolean {\n const visibleRanges = this.editor?.getVisibleRanges();\n if (visibleRanges == null || visibleRanges.length === 0) {\n return false;\n }\n\n for (let i = 0; i < visibleRanges.length; i += 1) {\n const range = visibleRanges[i];\n if (range.startLineNumber <= line && line <= range.endLineNumber) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Checks if the given log message is visible with the current filters */\n isLogItemVisible(message: dh.ide.LogItem): boolean {\n const { shownLogLevels } = this.state;\n return shownLogLevels[message.logLevel];\n }\n\n flush(): void {\n let text = '';\n for (let i = 0; i < this.bufferedMessages.length; i += 1) {\n const message = this.bufferedMessages[i];\n const logText = LogView.getLogText(message);\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n\n this.bufferedMessages = [];\n\n this.appendLogText(text);\n }\n\n queue(message: dh.ide.LogItem): void {\n this.bufferedMessages.push(message);\n if (this.bufferedMessages.length === 1) {\n this.flushTimer = setTimeout(\n this.handleFlushTimeout,\n LogView.bufferTimeout\n );\n }\n }\n\n stopFlushTimer(): void {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n }\n\n updateDimensions(): void {\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n handleClearClick(): void {\n this.clearLogs();\n }\n\n clearLogs(): void {\n this.messages = [];\n this.refreshLogText();\n }\n\n handleFlushTimeout(): void {\n this.stopFlushTimer();\n this.flush();\n }\n\n handleLogMessage(message: dh.ide.LogItem): void {\n this.messages.push(message);\n\n if (this.editor && this.isLogItemVisible(message)) {\n this.queue(message);\n }\n }\n\n handleMenuItemClick(logLevel: string): void {\n this.toggleLogLevel(logLevel);\n }\n\n handleResetClick(): void {\n this.resetLogLevels();\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n handleToggleAllClick(): void {\n this.toggleAll();\n }\n\n render(): ReactElement {\n const popperOptions = { placement: 'bottom-end' as Placement };\n const { shownLogLevels } = this.state;\n const actions = this.getMenuActions(shownLogLevels);\n return (\n <div className=\"log-pane h-100 w-100\">\n <div className=\"log-pane-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn-clear-logs\"\n onClick={this.handleClearClick}\n icon={dhTrashUndo}\n tooltip=\"Clear log\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon btn-overflow\"\n icon={vsGear}\n tooltip=\"Log Settings\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu'\n }}\n >\n <DropdownMenu\n actions={actions}\n popperClassName=\"log-level-menu-popper\"\n popperOptions={popperOptions}\n />\n </Button>\n </div>\n <Editor\n className=\"log-pane-editor h-100 w-100\"\n settings={EDITOR_SETTINGS}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n </div>\n );\n }\n}\n\nexport default LogView;\n"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
  * Completion provider for a code session
3
3
  */
4
4
  import { PureComponent } from 'react';
5
- import * as monaco from 'monaco-editor';
5
+ import type * as monaco from 'monaco-editor';
6
6
  import type { dh } from '@deephaven/jsapi-types';
7
7
  import { Workspace, type Diagnostic } from '@astral-sh/ruff-wasm-web';
8
8
  interface MonacoProviderProps {
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoProviders.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoProviders.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonacoProviders.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoProviders.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAa,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAM5E,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,cAAM,eAAgB,SAAQ,aAAa,CACzC,mBAAmB,EACnB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IACC,MAAM,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IAEjC,MAAM,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,CAAC,iBAAiB,UAAS;IAEjC,MAAM,CAAC,aAAa,UAAQ;IAE5B,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAyB;IAErE;;;OAGG;WACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBtC;;;OAGG;IACH,MAAM,CAAC,mBAAmB,IAAI,IAAI;IAoBlC;;;OAGG;IACH,MAAM,CAAC,eAAe,CACpB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAgC,GAC/D,IAAI;IAWP,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,EAAE;IAepE,MAAM,CAAC,aAAa,IAAI,IAAI;IAa5B,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI;IAmCxD;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IA0DxD;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM;IAY3D;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB,CACxB,QAAQ,EAAE,MAAM,CAAC,SAAS,GACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAQ9C,MAAM,CAAC,6BAA6B,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,GAClB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IAkKnE,MAAM,CAAC,yBAAyB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAC3C,KAAK,EAAE,MAAM,CAAC,iBAAiB,GAC9B,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAenD,KAAK,EAAE,mBAAmB;IAQtC,iBAAiB,IAAI,IAAI;IA4BzB,oBAAoB,IAAI,IAAI;IAM5B,4BAA4B,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAElD,2BAA2B,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAEjD,uBAAuB,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAE7C,uBAAuB,CACrB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAC1C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IAkEnE,sBAAsB,CACpB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAC/B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,oBAAoB,GAC7C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC;IAwExE,kBAAkB,CAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,GACxB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;IAkC1D,MAAM,IAAI,IAAI;CAGf;AAED,eAAe,eAAe,CAAC"}
@@ -7,7 +7,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
7
7
  * Completion provider for a code session
8
8
  */
9
9
  import { PureComponent } from 'react';
10
- import * as monaco from 'monaco-editor';
11
10
  import Log from '@deephaven/log';
12
11
  import init, { Workspace } from '@astral-sh/ruff-wasm-web';
13
12
  import RUFF_DEFAULT_SETTINGS from "./RuffDefaultSettings.js";
@@ -29,7 +28,12 @@ class MonacoProviders extends PureComponent {
29
28
  if (MonacoProviders.initRuffPromise) {
30
29
  return MonacoProviders.initRuffPromise;
31
30
  }
32
- MonacoProviders.initRuffPromise = init({}).then(() => {
31
+
32
+ // Ruff is only useful once an editor has loaded Monaco. Wait for that
33
+ // rather than loading Monaco here
34
+ MonacoProviders.initRuffPromise = new Promise(resolve => {
35
+ MonacoUtils.whenLoaded(resolve);
36
+ }).then(() => init({})).then(() => {
33
37
  log.debug('Initialized Ruff', Workspace.version());
34
38
  MonacoProviders.isRuffInitialized = true;
35
39
  MonacoProviders.updateRuffWorkspace();
@@ -85,6 +89,7 @@ class MonacoProviders extends PureComponent {
85
89
  return diagnostics;
86
90
  }
87
91
  static lintAllPython() {
92
+ var monaco = MonacoUtils.getMonaco();
88
93
  if (!MonacoProviders.isRuffEnabled) {
89
94
  monaco.editor.removeAllMarkers('ruff');
90
95
  return;
@@ -98,6 +103,7 @@ class MonacoProviders extends PureComponent {
98
103
  if (!MonacoProviders.ruffWorkspace) {
99
104
  return;
100
105
  }
106
+ var monaco = MonacoUtils.getMonaco();
101
107
  var diagnostics = MonacoProviders.getDiagnostics(model);
102
108
  log.debug("Linting Python document: ".concat(model.uri.toString()), diagnostics);
103
109
  monaco.editor.setModelMarkers(model, 'ruff', diagnostics.map(d => {
@@ -125,7 +131,7 @@ class MonacoProviders extends PureComponent {
125
131
  * @returns Monaco kind
126
132
  */
127
133
  static lspToMonacoKind(kind) {
128
- var monacoKinds = monaco.languages.CompletionItemKind;
134
+ var monacoKinds = MonacoUtils.getMonaco().languages.CompletionItemKind;
129
135
  switch (kind) {
130
136
  case 1:
131
137
  return monacoKinds.Text;
@@ -225,6 +231,7 @@ class MonacoProviders extends PureComponent {
225
231
  }
226
232
  };
227
233
  }
234
+ var monaco = MonacoUtils.getMonaco();
228
235
  var diagnostics = MonacoProviders.getDiagnostics(model).filter(d => {
229
236
  var diagnosticRange = new monaco.Range(d.location.row, d.location.column, d.end_location.row, d.end_location.column);
230
237
  return d.code != null &&
@@ -370,6 +377,7 @@ class MonacoProviders extends PureComponent {
370
377
  var _this$props = this.props,
371
378
  language = _this$props.language,
372
379
  session = _this$props.session;
380
+ var monaco = MonacoUtils.getMonaco();
373
381
  this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {
374
382
  provideCompletionItems: this.handleCompletionRequest,
375
383
  triggerCharacters: ['.', '"', "'"]