@deephaven/console 1.7.2-beta.1 → 1.7.2-react-18-alpha.3

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.
Files changed (97) hide show
  1. package/dist/Console.d.ts +1 -1
  2. package/dist/Console.d.ts.map +1 -1
  3. package/dist/Console.js +6 -8
  4. package/dist/Console.js.map +1 -1
  5. package/dist/ConsoleInput.js +30 -34
  6. package/dist/ConsoleInput.js.map +1 -1
  7. package/dist/ConsoleObjectsMenu.js +2 -3
  8. package/dist/ConsoleObjectsMenu.js.map +1 -1
  9. package/dist/ConsoleShortcuts.js +0 -1
  10. package/dist/ConsoleShortcuts.js.map +1 -1
  11. package/dist/ConsoleStatusBar.js +2 -3
  12. package/dist/ConsoleStatusBar.js.map +1 -1
  13. package/dist/HeapUsage.js +2 -3
  14. package/dist/HeapUsage.js.map +1 -1
  15. package/dist/command-history/CommandHistory.js +2 -3
  16. package/dist/command-history/CommandHistory.js.map +1 -1
  17. package/dist/command-history/CommandHistoryActions.js +1 -2
  18. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  19. package/dist/command-history/CommandHistoryItem.d.ts +1 -6
  20. package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
  21. package/dist/command-history/CommandHistoryItem.js +5 -10
  22. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  23. package/dist/command-history/CommandHistoryItemTooltip.js +2 -3
  24. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  25. package/dist/command-history/CommandHistoryStorage.js.map +1 -1
  26. package/dist/command-history/CommandHistoryTypes.js.map +1 -1
  27. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
  28. package/dist/command-history/index.js.map +1 -1
  29. package/dist/common/Code.js.map +1 -1
  30. package/dist/common/ConsoleConstants.js.map +1 -1
  31. package/dist/common/ConsoleUtils.js.map +1 -1
  32. package/dist/common/ObjectIcon.js.map +1 -1
  33. package/dist/common/index.js.map +1 -1
  34. package/dist/console-history/ConsoleHistory.js.map +1 -1
  35. package/dist/console-history/ConsoleHistoryItem.js +1 -2
  36. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  37. package/dist/console-history/ConsoleHistoryItemResult.d.ts +2 -10
  38. package/dist/console-history/ConsoleHistoryItemResult.d.ts.map +1 -1
  39. package/dist/console-history/ConsoleHistoryItemResult.js +1 -6
  40. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  41. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +1 -3
  42. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  43. package/dist/console-history/ConsoleHistoryResultInProgress.js +1 -2
  44. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  45. package/dist/console-history/ConsoleHistoryTypes.js.map +1 -1
  46. package/dist/console-history/index.js.map +1 -1
  47. package/dist/csv/CsvFormats.js.map +1 -1
  48. package/dist/csv/CsvInputBar.js +2 -3
  49. package/dist/csv/CsvInputBar.js.map +1 -1
  50. package/dist/csv/CsvOverlay.js +5 -6
  51. package/dist/csv/CsvOverlay.js.map +1 -1
  52. package/dist/csv/CsvParser.js +4 -3
  53. package/dist/csv/CsvParser.js.map +1 -1
  54. package/dist/csv/CsvTypeParser.js.map +1 -1
  55. package/dist/csv/ZipStreamHelper.js.map +1 -1
  56. package/dist/declaration.d.js.map +1 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/log/LogLevel.js.map +1 -1
  59. package/dist/log/LogLevelMenuItem.js +1 -2
  60. package/dist/log/LogLevelMenuItem.js.map +1 -1
  61. package/dist/log/LogView.js +9 -12
  62. package/dist/log/LogView.js.map +1 -1
  63. package/dist/monaco/MonacoProviders.js +3 -4
  64. package/dist/monaco/MonacoProviders.js.map +1 -1
  65. package/dist/monaco/MonacoThemeProvider.js +1 -2
  66. package/dist/monaco/MonacoThemeProvider.js.map +1 -1
  67. package/dist/monaco/MonacoUtils.js +1 -1
  68. package/dist/monaco/MonacoUtils.js.map +1 -1
  69. package/dist/monaco/RuffDefaultSettings.js +0 -1
  70. package/dist/monaco/RuffDefaultSettings.js.map +1 -1
  71. package/dist/monaco/RuffSettingsModal.js +5 -7
  72. package/dist/monaco/RuffSettingsModal.js.map +1 -1
  73. package/dist/monaco/index.js.map +1 -1
  74. package/dist/monaco/lang/Language.js.map +1 -1
  75. package/dist/monaco/lang/db.js +0 -1
  76. package/dist/monaco/lang/db.js.map +1 -1
  77. package/dist/monaco/lang/groovy.js +0 -1
  78. package/dist/monaco/lang/groovy.js.map +1 -1
  79. package/dist/monaco/lang/log.js.map +1 -1
  80. package/dist/monaco/lang/python.js +0 -1
  81. package/dist/monaco/lang/python.js.map +1 -1
  82. package/dist/monaco/lang/scala.js.map +1 -1
  83. package/dist/monaco/ruffSchema.js.map +1 -1
  84. package/dist/notebook/Editor.js +1 -1
  85. package/dist/notebook/Editor.js.map +1 -1
  86. package/dist/notebook/ScriptEditor.js +1 -3
  87. package/dist/notebook/ScriptEditor.js.map +1 -1
  88. package/dist/notebook/ScriptEditorUtils.js.map +1 -1
  89. package/package.json +14 -15
  90. package/dist/ConsolePropTypes.d.ts +0 -9
  91. package/dist/ConsolePropTypes.d.ts.map +0 -1
  92. package/dist/ConsolePropTypes.js +0 -10
  93. package/dist/ConsolePropTypes.js.map +0 -1
  94. package/dist/StoragePropTypes.d.ts +0 -14
  95. package/dist/StoragePropTypes.d.ts.map +0 -1
  96. package/dist/StoragePropTypes.js +0 -16
  97. package/dist/StoragePropTypes.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LogLevelMenuItem.js","names":["React","PureComponent","classNames","UISwitch","jsx","_jsx","jsxs","_jsxs","LogLevelMenuItem","constructor","props","handleSwitchClick","bind","logLevel","onClick","render","on","className","children"],"sources":["../../src/log/LogLevelMenuItem.tsx"],"sourcesContent":["// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { PureComponent, type ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { UISwitch } from '@deephaven/components';\nimport './LogLevelMenuItem.scss';\n\ninterface LogLevelMenuItemProps {\n logLevel: string;\n on: boolean;\n onClick: (logLevel: string) => void;\n}\n\nclass LogLevelMenuItem extends PureComponent<\n LogLevelMenuItemProps,\n Record<string, never>\n> {\n constructor(props: LogLevelMenuItemProps) {\n super(props);\n\n this.handleSwitchClick = this.handleSwitchClick.bind(this);\n }\n\n handleSwitchClick(): void {\n const { logLevel, onClick } = this.props;\n onClick(logLevel);\n }\n\n render(): ReactElement {\n const { logLevel, on } = this.props;\n return (\n <div className={classNames('log-level-menu-item', logLevel)}>\n <UISwitch on={on} onClick={this.handleSwitchClick} />\n {logLevel}\n </div>\n );\n }\n}\n\nexport default LogLevelMenuItem;\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,IAAIC,aAAa,QAA2B,OAAO;AAC/D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,QAAQ,QAAQ,uBAAuB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AASjD,MAAMC,gBAAgB,SAASP,aAAa,CAG1C;EACAQ,WAAWA,CAACC,KAA4B,EAAE;IACxC,KAAK,CAACA,KAAK,CAAC;IAEZ,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAAC;EAC5D;EAEAD,iBAAiBA,CAAA,EAAS;IACxB,IAAM;MAAEE,QAAQ;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACJ,KAAK;IACxCI,OAAO,CAACD,QAAQ,CAAC;EACnB;EAEAE,MAAMA,CAAA,EAAiB;IACrB,IAAM;MAAEF,QAAQ;MAAEG;IAAG,CAAC,GAAG,IAAI,CAACN,KAAK;IACnC,oBACEH,KAAA;MAAKU,SAAS,EAAEf,UAAU,CAAC,qBAAqB,EAAEW,QAAQ,CAAE;MAAAK,QAAA,gBAC1Db,IAAA,CAACF,QAAQ;QAACa,EAAE,EAAEA,EAAG;QAACF,OAAO,EAAE,IAAI,CAACH;MAAkB,CAAE,CAAC,EACpDE,QAAQ;IAAA,CACN,CAAC;EAEV;AACF;AAEA,eAAeL,gBAAgB"}
1
+ {"version":3,"file":"LogLevelMenuItem.js","names":["React","PureComponent","classNames","UISwitch","jsx","_jsx","jsxs","_jsxs","LogLevelMenuItem","constructor","props","handleSwitchClick","bind","logLevel","onClick","render","on","className","children"],"sources":["../../src/log/LogLevelMenuItem.tsx"],"sourcesContent":["// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { PureComponent, type ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { UISwitch } from '@deephaven/components';\nimport './LogLevelMenuItem.scss';\n\ninterface LogLevelMenuItemProps {\n logLevel: string;\n on: boolean;\n onClick: (logLevel: string) => void;\n}\n\nclass LogLevelMenuItem extends PureComponent<\n LogLevelMenuItemProps,\n Record<string, never>\n> {\n constructor(props: LogLevelMenuItemProps) {\n super(props);\n\n this.handleSwitchClick = this.handleSwitchClick.bind(this);\n }\n\n handleSwitchClick(): void {\n const { logLevel, onClick } = this.props;\n onClick(logLevel);\n }\n\n render(): ReactElement {\n const { logLevel, on } = this.props;\n return (\n <div className={classNames('log-level-menu-item', logLevel)}>\n <UISwitch on={on} onClick={this.handleSwitchClick} />\n {logLevel}\n </div>\n );\n }\n}\n\nexport default LogLevelMenuItem;\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,IAAIC,aAAa,QAA2B,OAAO;AAC/D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,QAAQ,QAAQ,uBAAuB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AASjD,MAAMC,gBAAgB,SAASP,aAAa,CAG1C;EACAQ,WAAWA,CAACC,KAA4B,EAAE;IACxC,KAAK,CAACA,KAAK,CAAC;IAEZ,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAAC;EAC5D;EAEAD,iBAAiBA,CAAA,EAAS;IACxB,IAAM;MAAEE,QAAQ;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACJ,KAAK;IACxCI,OAAO,CAACD,QAAQ,CAAC;EACnB;EAEAE,MAAMA,CAAA,EAAiB;IACrB,IAAM;MAAEF,QAAQ;MAAEG;IAAG,CAAC,GAAG,IAAI,CAACN,KAAK;IACnC,oBACEH,KAAA;MAAKU,SAAS,EAAEf,UAAU,CAAC,qBAAqB,EAAEW,QAAQ,CAAE;MAAAK,QAAA,gBAC1Db,IAAA,CAACF,QAAQ;QAACa,EAAE,EAAEA,EAAG;QAACF,OAAO,EAAE,IAAI,CAACH;MAAkB,CAAE,CAAC,EACpDE,QAAQ;IAAA,CACN,CAAC;EAEV;AACF;AAEA,eAAeL,gBAAgB","ignoreList":[]}
@@ -13,16 +13,11 @@ import LogLevel from "./LogLevel.js";
13
13
  import "./LogView.css";
14
14
  import LogLevelMenuItem from "./LogLevelMenuItem.js";
15
15
  import { MonacoUtils } from "../monaco/index.js";
16
- import { jsx as _jsx } from "react/jsx-runtime";
17
- import { jsxs as _jsxs } from "react/jsx-runtime";
16
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
17
  /**
19
18
  * Log view contents. Uses a monaco editor to display/search the contents of the log.
20
19
  */
21
20
  class LogView extends PureComponent {
22
- /** ms to buffer log messages before processing them */
23
-
24
- /** Maximum number of messages to store in the log */
25
-
26
21
  static getLogText(logItem) {
27
22
  var date = new Date(logItem.micros / 1000);
28
23
  var timestamp = ConsoleUtils.formatTimestamp(date);
@@ -201,7 +196,7 @@ class LogView extends PureComponent {
201
196
  var _this$editor, _this$editor2;
202
197
  var position = (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.getPosition();
203
198
  assertNotNull(position);
204
- (_this$editor2 = this.editor) === null || _this$editor2 === void 0 ? void 0 : _this$editor2.setPosition(position);
199
+ (_this$editor2 = this.editor) === null || _this$editor2 === void 0 || _this$editor2.setPosition(position);
205
200
  }
206
201
  });
207
202
  });
@@ -217,8 +212,8 @@ class LogView extends PureComponent {
217
212
  // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.
218
213
  // As a workaround, just focus the editor before triggering the action
219
214
  // https://github.com/microsoft/monaco-editor/issues/2355
220
- (_this$editor3 = this.editor) === null || _this$editor3 === void 0 ? void 0 : _this$editor3.focus();
221
- (_this$editor4 = this.editor) === null || _this$editor4 === void 0 ? void 0 : _this$editor4.trigger('keyboard', 'actions.find', undefined);
215
+ (_this$editor3 = this.editor) === null || _this$editor3 === void 0 || _this$editor3.focus();
216
+ (_this$editor4 = this.editor) === null || _this$editor4 === void 0 || _this$editor4.trigger('keyboard', 'actions.find', undefined);
222
217
  }
223
218
  toggleAll() {
224
219
  var {
@@ -300,7 +295,7 @@ class LogView extends PureComponent {
300
295
  text,
301
296
  forceMoveMarkers: true
302
297
  });
303
- model === null || model === void 0 ? void 0 : model.applyEdits(edits);
298
+ model === null || model === void 0 || model.applyEdits(edits);
304
299
  if (isBottomVisible) {
305
300
  var lineCount = model === null || model === void 0 ? void 0 : model.getLineCount();
306
301
  assertNotNull(lineCount);
@@ -350,11 +345,11 @@ class LogView extends PureComponent {
350
345
  }
351
346
  }
352
347
  scrollToBottom() {
353
- var _this$editor5, _this$editor5$getMode, _this$editor5$getMode2;
348
+ var _this$editor5, _this$editor5$getMode;
354
349
  if (!this.editor) {
355
350
  return;
356
351
  }
357
- var line = (_this$editor5 = this.editor) === null || _this$editor5 === void 0 ? void 0 : (_this$editor5$getMode = _this$editor5.getModel) === null || _this$editor5$getMode === void 0 ? void 0 : (_this$editor5$getMode2 = _this$editor5$getMode.call(_this$editor5)) === null || _this$editor5$getMode2 === void 0 ? void 0 : _this$editor5$getMode2.getLineCount();
352
+ var line = (_this$editor5 = this.editor) === null || _this$editor5 === void 0 || (_this$editor5$getMode = _this$editor5.getModel) === null || _this$editor5$getMode === void 0 || (_this$editor5$getMode = _this$editor5$getMode.call(_this$editor5)) === null || _this$editor5$getMode === void 0 ? void 0 : _this$editor5$getMode.getLineCount();
358
353
  assertNotNull(line);
359
354
  this.editor.revealLine(line, 1);
360
355
  }
@@ -491,7 +486,9 @@ class LogView extends PureComponent {
491
486
  }
492
487
  _defineProperty(LogView, "DefaultLogLevels", [LogLevel.STDOUT, LogLevel.ERROR, LogLevel.FATAL, LogLevel.STDERR, LogLevel.WARN]);
493
488
  _defineProperty(LogView, "AllLogLevels", [LogLevel.INFO, LogLevel.STDOUT, LogLevel.ERROR, LogLevel.FATAL, LogLevel.STDERR, LogLevel.WARN, LogLevel.DEBUG, LogLevel.TRACE]);
489
+ /** ms to buffer log messages before processing them */
494
490
  _defineProperty(LogView, "bufferTimeout", 16);
491
+ /** Maximum number of messages to store in the log */
495
492
  _defineProperty(LogView, "maxLogSize", 131072);
496
493
  _defineProperty(LogView, "truncateSize", 65536);
497
494
  export default LogView;
@@ -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","_this$editor5$getMode2","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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"}
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":[]}
@@ -311,7 +311,6 @@ class MonacoProviders extends PureComponent {
311
311
  : lastToken.offset + 2; // "#" + 1 to offset
312
312
  }
313
313
  }
314
-
315
314
  return [{
316
315
  title: "Disable ".concat(d.code, " for ").concat(duplicateCodes.has(d.code) ? "line ".concat(d.location.row) : 'this line'),
317
316
  kind: 'quickfix',
@@ -394,9 +393,9 @@ class MonacoProviders extends PureComponent {
394
393
  }
395
394
  componentWillUnmount() {
396
395
  var _this$registeredCompl, _this$registeredSigna, _this$registeredHover;
397
- (_this$registeredCompl = this.registeredCompletionProvider) === null || _this$registeredCompl === void 0 ? void 0 : _this$registeredCompl.dispose();
398
- (_this$registeredSigna = this.registeredSignatureProvider) === null || _this$registeredSigna === void 0 ? void 0 : _this$registeredSigna.dispose();
399
- (_this$registeredHover = this.registeredHoverProvider) === null || _this$registeredHover === void 0 ? void 0 : _this$registeredHover.dispose();
396
+ (_this$registeredCompl = this.registeredCompletionProvider) === null || _this$registeredCompl === void 0 || _this$registeredCompl.dispose();
397
+ (_this$registeredSigna = this.registeredSignatureProvider) === null || _this$registeredSigna === void 0 || _this$registeredSigna.dispose();
398
+ (_this$registeredHover = this.registeredHoverProvider) === null || _this$registeredHover === void 0 || _this$registeredHover.dispose();
400
399
  }
401
400
  handleCompletionRequest(model, position, context) {
402
401
  var {
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoProviders.js","names":["PureComponent","monaco","Log","init","Workspace","RUFF_DEFAULT_SETTINGS","MonacoUtils","log","module","MonacoProviders","initRuff","_asyncToGenerator","isRuffEnabled","initRuffPromise","then","debug","version","isRuffInitialized","updateRuffWorkspace","prevLog","console","undefined","ruffWorkspace","ruffSettings","lintAllPython","setRuffSettings","settings","arguments","length","getDiagnostics","model","diagnostics","check","getValue","isConsoleModel","filter","d","code","editor","removeAllMarkers","getModels","m","getLanguageId","forEach","lintPython","concat","uri","toString","setModelMarkers","map","isUnnecessary","isSyntaxError","startLineNumber","location","row","startColumn","column","endLineNumber","end_location","endColumn","message","severity","MarkerSeverity","Error","Warning","tags","MarkerTag","Unnecessary","lspToMonacoKind","kind","monacoKinds","languages","CompletionItemKind","Text","Method","Function","Constructor","Field","Variable","Class","Interface","Module","Property","Unit","Value","Enum","Keyword","Snippet","Color","File","Reference","Folder","EnumMember","Constant","Struct","Event","Operator","TypeParameter","lspToMonacoRange","range","start","end","line","character","monacoToLspPosition","position","lineNumber","handlePythonCodeActionRequest","actions","dispose","diagnosticRange","Range","intersectRanges","fixActions","_ref","fix","title","id","edit","edits","_edit$content","resource","versionId","getVersionId","textEdit","text","content","seenCodes","Set","duplicateCodes","has","add","disableLineActions","getLineContent","lastToken","tokenize","at","lineEdit","type","startsWith","offset","flat","action","i","arr","find","a","disableGlobalActions","handlePythonFormatRequest","options","token","getFullModelRange","format","constructor","props","_defineProperty","handleCompletionRequest","bind","handleSignatureRequest","handleHoverRequest","componentDidMount","language","session","registeredCompletionProvider","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","getSignatureHelp","registeredSignatureProvider","registerSignatureHelpProvider","provideSignatureHelp","signatureHelpTriggerCharacters","getHover","registeredHoverProvider","registerHoverProvider","provideHover","componentWillUnmount","_this$registeredCompl","_this$registeredSigna","_this$registeredHover","context","propModel","params","textDocument","completionItems","getCompletionItems","monacoCompletionItems","items","suggestions","item","label","detail","documentation","sortText","filterText","insertTextFormat","value","insertText","insertTextRules","incomplete","catch","error","defaultResult","signatures","activeSignature","activeParameter","signatureItems","monacoSignatures","parameters","hover","monacoHover","hoverItem","contents","hoverContents","render"],"sources":["../../src/monaco/MonacoProviders.tsx"],"sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport type { dh } from '@deephaven/jsapi-types';\nimport init, { Workspace, type Diagnostic } from '@astral-sh/ruff-wasm-web';\nimport RUFF_DEFAULT_SETTINGS from './RuffDefaultSettings';\nimport MonacoUtils from './MonacoUtils';\n\nconst log = Log.module('MonacoCompletionProvider');\n\ninterface MonacoProviderProps {\n model: monaco.editor.ITextModel;\n session: dh.IdeSession;\n language: string;\n}\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoProviders extends PureComponent<\n MonacoProviderProps,\n Record<string, never>\n> {\n static ruffWorkspace?: Workspace;\n\n static initRuffPromise?: Promise<void>;\n\n static isRuffInitialized = false;\n\n static isRuffEnabled = true;\n\n static ruffSettings: Record<string, unknown> = RUFF_DEFAULT_SETTINGS;\n\n /**\n * Loads and initializes Ruff if it is enabled.\n * Subsequent calls will return the same promise.\n */\n static async initRuff(): Promise<void> {\n if (!MonacoProviders.isRuffEnabled) {\n return;\n }\n if (MonacoProviders.initRuffPromise) {\n return MonacoProviders.initRuffPromise;\n }\n\n MonacoProviders.initRuffPromise = init({}).then(() => {\n log.debug('Initialized Ruff', Workspace.version());\n MonacoProviders.isRuffInitialized = true;\n MonacoProviders.updateRuffWorkspace();\n });\n\n return MonacoProviders.initRuffPromise;\n }\n\n /**\n * Updates the current ruff workspace with MonacoProviders.ruffSettings.\n * Re-lints all Python models after updating.\n */\n static updateRuffWorkspace(): void {\n if (!MonacoProviders.isRuffInitialized) {\n return;\n }\n\n /* eslint-disable no-console */\n const prevLog = console.log;\n try {\n console.log = () => undefined; // Suppress not useful ruff-wasm-web logs when it creates the workspace\n MonacoProviders.ruffWorkspace = new Workspace(\n MonacoProviders.ruffSettings\n );\n } finally {\n console.log = prevLog; // Restore console.log\n }\n /* eslint-enable no-console */\n\n MonacoProviders.lintAllPython();\n }\n\n /**\n * Sets ruff settings\n * @param settings The ruff settings\n */\n static setRuffSettings(\n settings: Record<string, unknown> = MonacoProviders.ruffSettings\n ): void {\n MonacoProviders.ruffSettings = settings;\n\n if (!MonacoProviders.isRuffInitialized) {\n MonacoProviders.initRuff();\n return;\n }\n\n MonacoProviders.updateRuffWorkspace();\n }\n\n static getDiagnostics(model: monaco.editor.ITextModel): Diagnostic[] {\n if (!MonacoProviders.ruffWorkspace) {\n return [];\n }\n\n const diagnostics = MonacoProviders.ruffWorkspace.check(\n model.getValue()\n ) as Diagnostic[];\n if (MonacoUtils.isConsoleModel(model)) {\n // Only want SyntaxErrors for console which have no code\n return diagnostics.filter(d => d.code == null);\n }\n return diagnostics;\n }\n\n static lintAllPython(): void {\n if (!MonacoProviders.isRuffEnabled) {\n monaco.editor.removeAllMarkers('ruff');\n return;\n }\n\n monaco.editor\n .getModels()\n .filter(m => m.getLanguageId() === 'python')\n .forEach(MonacoProviders.lintPython);\n }\n\n static lintPython(model: monaco.editor.ITextModel): void {\n if (!MonacoProviders.isRuffEnabled) {\n return;\n }\n\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n\n const diagnostics = MonacoProviders.getDiagnostics(model);\n log.debug(`Linting Python document: ${model.uri.toString()}`, diagnostics);\n\n monaco.editor.setModelMarkers(\n model,\n 'ruff',\n diagnostics.map((d: Diagnostic) => {\n // Unused variable or import. Mark as unnecessary to fade the text\n const isUnnecessary = d.code === 'F401' || d.code === 'F841';\n const isSyntaxError = d.code == null; // SyntaxError has no error code\n return {\n startLineNumber: d.location.row,\n startColumn: d.location.column,\n endLineNumber: d.end_location.row,\n endColumn: d.end_location.column,\n message: isSyntaxError ? d.message : `${d.code}: ${d.message}`,\n severity: isSyntaxError\n ? monaco.MarkerSeverity.Error\n : monaco.MarkerSeverity.Warning,\n tags: isUnnecessary ? [monaco.MarkerTag.Unnecessary] : [],\n };\n })\n );\n }\n\n /**\n * Converts LSP CompletionItemKind to Monaco CompletionItemKind\n * Defaults to Variable if no LSP kind was provided\n * https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItemKind\n *\n * @param kind The LSP kind\n * @returns Monaco kind\n */\n static lspToMonacoKind(kind: number | undefined): number {\n const monacoKinds = monaco.languages.CompletionItemKind;\n switch (kind) {\n case 1:\n return monacoKinds.Text;\n case 2:\n return monacoKinds.Method;\n case 3:\n return monacoKinds.Function;\n case 4:\n return monacoKinds.Constructor;\n case 5:\n return monacoKinds.Field;\n case 6:\n return monacoKinds.Variable;\n case 7:\n return monacoKinds.Class;\n case 8:\n return monacoKinds.Interface;\n case 9:\n return monacoKinds.Module;\n case 10:\n return monacoKinds.Property;\n case 11:\n return monacoKinds.Unit;\n case 12:\n return monacoKinds.Value;\n case 13:\n return monacoKinds.Enum;\n case 14:\n return monacoKinds.Keyword;\n case 15:\n return monacoKinds.Snippet;\n case 16:\n return monacoKinds.Color;\n case 17:\n return monacoKinds.File;\n case 18:\n return monacoKinds.Reference;\n case 19:\n return monacoKinds.Folder;\n case 20:\n return monacoKinds.EnumMember;\n case 21:\n return monacoKinds.Constant;\n case 22:\n return monacoKinds.Struct;\n case 23:\n return monacoKinds.Event;\n case 24:\n return monacoKinds.Operator;\n case 25:\n return monacoKinds.TypeParameter;\n default:\n return monacoKinds.Variable;\n }\n }\n\n /**\n * Converts an LSP document range to a monaco range\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param range The LSP document range to convert\n * @returns The corresponding monaco range\n */\n static lspToMonacoRange(range: dh.lsp.Range): monaco.IRange {\n const { start, end } = range;\n\n // Monaco expects the columns/ranges to start at 1. LSP starts at 0\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n }\n\n /**\n * Converts a monaco position to an LSP position\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param position The monaco position\n * @returns The corresponding LSP position\n */\n static monacoToLspPosition(\n position: monaco.IPosition\n ): Pick<dh.lsp.Position, 'line' | 'character'> {\n // Monaco 1-indexes Position. LSP 0-indexes Position\n return {\n line: position.lineNumber - 1,\n character: position.column - 1,\n };\n }\n\n static handlePythonCodeActionRequest(\n model: monaco.editor.ITextModel,\n range: monaco.Range\n ): monaco.languages.ProviderResult<monaco.languages.CodeActionList> {\n if (!MonacoProviders.isRuffEnabled || !MonacoProviders.ruffWorkspace) {\n return {\n actions: [],\n dispose: () => {\n /* no-op */\n },\n };\n }\n\n const diagnostics = MonacoProviders.getDiagnostics(model).filter(d => {\n const diagnosticRange = new monaco.Range(\n d.location.row,\n d.location.column,\n d.end_location.row,\n d.end_location.column\n );\n return (\n d.code != null && // Syntax errors have no code and can't be fixed/disabled\n diagnosticRange.intersectRanges(range)\n );\n });\n\n const fixActions: monaco.languages.CodeAction[] = diagnostics\n .filter(({ fix }) => fix != null)\n .map(d => {\n let title = 'Fix';\n if (d.fix != null) {\n if (d.fix.message != null && d.fix.message !== '') {\n title = `${d.code}: ${d.fix.message}`;\n } else {\n title = `Fix ${d.code}`;\n }\n }\n return {\n title,\n id: `fix-${d.code}`,\n kind: 'quickfix',\n edit: d.fix\n ? {\n edits: d.fix.edits.map(edit => ({\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: edit.location.row,\n startColumn: edit.location.column,\n endLineNumber: edit.end_location.row,\n endColumn: edit.end_location.column,\n },\n text: edit.content ?? '',\n },\n })),\n }\n : undefined,\n };\n });\n\n const seenCodes = new Set<string>();\n const duplicateCodes = new Set<string>();\n diagnostics.forEach(d => {\n if (d.code == null) {\n return;\n }\n if (seenCodes.has(d.code)) {\n duplicateCodes.add(d.code);\n }\n seenCodes.add(d.code);\n });\n\n const disableLineActions: monaco.languages.CodeAction[] = diagnostics\n .map(d => {\n if (d.code == null) {\n // The nulls are already filtered out, but TS doesn't know that\n return [];\n }\n const line = model.getLineContent(d.location.row);\n const lastToken = monaco.editor\n .tokenize(line, model.getLanguageId())[0]\n .at(-1);\n const lineEdit = {\n range: {\n startLineNumber: d.location.row,\n startColumn: line.length + 1,\n endLineNumber: d.location.row,\n endColumn: line.length + 1,\n },\n text: ` # noqa: ${d.code}`,\n };\n if (lastToken != null && lastToken.type.startsWith('comment')) {\n // Already a comment at the end of the line\n lineEdit.text = `# noqa: ${d.code} `;\n if (line.startsWith('# noqa:', lastToken.offset)) {\n // Already another suppressed rule on the line\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = lastToken.offset + 9; // \"# noqa: \" length + 1 to offset\n } else {\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = line.startsWith('# ', lastToken.offset)\n ? lastToken.offset + 3 // \"# \" + 1 to offset\n : lastToken.offset + 2; // \"#\" + 1 to offset\n }\n }\n return [\n {\n title: `Disable ${d.code} for ${\n duplicateCodes.has(d.code)\n ? `line ${d.location.row}`\n : 'this line'\n }`,\n kind: 'quickfix',\n edit: {\n edits: [\n {\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: lineEdit,\n },\n ],\n },\n },\n ];\n })\n .flat()\n .filter(\n // Remove actions with duplicate titles as you can't disable the same rule on a line twice\n (action, i, arr) => arr.find(a => a.title === action.title) === action\n );\n\n const disableGlobalActions: monaco.languages.CodeAction[] = [\n ...seenCodes,\n ].map(code => ({\n title: `Disable ${code} for this file`,\n kind: 'quickfix',\n edit: {\n edits: [\n {\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1,\n },\n text: `# ruff: noqa: ${code}\\n`,\n },\n },\n ],\n },\n }));\n\n return {\n actions: [...fixActions, ...disableLineActions, ...disableGlobalActions],\n dispose: () => {\n /* no-op */\n },\n };\n }\n\n static handlePythonFormatRequest(\n model: monaco.editor.ITextModel,\n options: monaco.languages.FormattingOptions,\n token: monaco.CancellationToken\n ): monaco.languages.ProviderResult<monaco.languages.TextEdit[]> {\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n\n log.debug(`Formatting Python document: ${model.uri.toString}`);\n\n return [\n {\n range: model.getFullModelRange(),\n text: MonacoProviders.ruffWorkspace.format(model.getValue()),\n },\n ];\n }\n\n constructor(props: MonacoProviderProps) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n this.handleSignatureRequest = this.handleSignatureRequest.bind(this);\n this.handleHoverRequest = this.handleHoverRequest.bind(this);\n }\n\n componentDidMount(): void {\n const { language, session } = this.props;\n\n this.registeredCompletionProvider =\n monaco.languages.registerCompletionItemProvider(language, {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['.', '\"', \"'\"],\n });\n\n if (session.getSignatureHelp != null) {\n this.registeredSignatureProvider =\n monaco.languages.registerSignatureHelpProvider(language, {\n provideSignatureHelp: this.handleSignatureRequest,\n signatureHelpTriggerCharacters: ['(', ','],\n });\n }\n\n if (session.getHover != null) {\n this.registeredHoverProvider = monaco.languages.registerHoverProvider(\n language,\n {\n provideHover: this.handleHoverRequest,\n }\n );\n }\n }\n\n componentWillUnmount(): void {\n this.registeredCompletionProvider?.dispose();\n this.registeredSignatureProvider?.dispose();\n this.registeredHoverProvider?.dispose();\n }\n\n registeredCompletionProvider?: monaco.IDisposable;\n\n registeredSignatureProvider?: monaco.IDisposable;\n\n registeredHoverProvider?: monaco.IDisposable;\n\n handleCompletionRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n context: monaco.languages.CompletionContext\n ): monaco.languages.ProviderResult<monaco.languages.CompletionList> {\n const { model: propModel, session } = this.props;\n if (model !== propModel) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context,\n };\n\n const completionItems = session.getCompletionItems(params);\n log.debug('Requested completion items', params);\n\n const monacoCompletionItems = completionItems\n .then(items => {\n log.debug('Completion items received: ', params, items);\n\n const suggestions = items.map(item => {\n const {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat,\n } = item;\n\n return {\n label,\n kind: MonacoProviders.lspToMonacoKind(kind),\n detail,\n documentation:\n documentation?.kind === 'markdown'\n ? documentation\n : documentation?.value,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range: MonacoProviders.lspToMonacoRange(textEdit.range),\n };\n });\n\n return {\n incomplete: true,\n suggestions,\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return monacoCompletionItems;\n }\n\n handleSignatureRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n token: monaco.CancellationToken,\n context: monaco.languages.SignatureHelpContext\n ): monaco.languages.ProviderResult<monaco.languages.SignatureHelpResult> {\n const defaultResult: monaco.languages.SignatureHelpResult = {\n value: {\n signatures: [],\n activeSignature: 0,\n activeParameter: 0,\n },\n dispose: () => {\n /* no-op */\n },\n };\n\n const { model: propModel, session } = this.props;\n if (model !== propModel || session.getSignatureHelp == null) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context,\n };\n\n const signatureItems = session.getSignatureHelp(params);\n log.debug('Requested signature help', params);\n\n const monacoSignatures = signatureItems\n .then(items => {\n log.debug('Signatures received: ', params, signatureItems);\n const signatures = items.map(item => {\n const { label, documentation, parameters } = item;\n\n return {\n documentation:\n documentation?.kind === 'markdown'\n ? documentation\n : documentation?.value,\n label,\n parameters: parameters ?? [],\n };\n });\n\n if (signatures.length === 0) {\n return defaultResult;\n }\n\n // For now we will assume we only autocomplete Python w/ 1 signature\n // For multiple signatures, this may need to be sent through the request as context\n const activeSignature = 0;\n\n return {\n value: {\n signatures,\n activeSignature,\n activeParameter: items[activeSignature].activeParameter,\n },\n dispose: () => {\n /* no-op */\n },\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return defaultResult;\n });\n\n return monacoSignatures;\n }\n\n handleHoverRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position\n ): monaco.languages.ProviderResult<monaco.languages.Hover> {\n const { model: propModel, session } = this.props;\n if (model !== propModel || session.getHover == null) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n };\n\n const hover = session.getHover(params);\n log.debug('Requested hover', params);\n\n const monacoHover = hover\n .then(hoverItem => {\n log.debug('Hover received: ', params, hoverItem);\n const { contents: hoverContents } = hoverItem;\n\n return {\n contents: hoverContents != null ? [hoverContents] : [],\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving hover', error);\n return { contents: [] };\n });\n\n return monacoHover;\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default MonacoProviders;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MonacoProviders.js","names":["PureComponent","monaco","Log","init","Workspace","RUFF_DEFAULT_SETTINGS","MonacoUtils","log","module","MonacoProviders","initRuff","_asyncToGenerator","isRuffEnabled","initRuffPromise","then","debug","version","isRuffInitialized","updateRuffWorkspace","prevLog","console","undefined","ruffWorkspace","ruffSettings","lintAllPython","setRuffSettings","settings","arguments","length","getDiagnostics","model","diagnostics","check","getValue","isConsoleModel","filter","d","code","editor","removeAllMarkers","getModels","m","getLanguageId","forEach","lintPython","concat","uri","toString","setModelMarkers","map","isUnnecessary","isSyntaxError","startLineNumber","location","row","startColumn","column","endLineNumber","end_location","endColumn","message","severity","MarkerSeverity","Error","Warning","tags","MarkerTag","Unnecessary","lspToMonacoKind","kind","monacoKinds","languages","CompletionItemKind","Text","Method","Function","Constructor","Field","Variable","Class","Interface","Module","Property","Unit","Value","Enum","Keyword","Snippet","Color","File","Reference","Folder","EnumMember","Constant","Struct","Event","Operator","TypeParameter","lspToMonacoRange","range","start","end","line","character","monacoToLspPosition","position","lineNumber","handlePythonCodeActionRequest","actions","dispose","diagnosticRange","Range","intersectRanges","fixActions","_ref","fix","title","id","edit","edits","_edit$content","resource","versionId","getVersionId","textEdit","text","content","seenCodes","Set","duplicateCodes","has","add","disableLineActions","getLineContent","lastToken","tokenize","at","lineEdit","type","startsWith","offset","flat","action","i","arr","find","a","disableGlobalActions","handlePythonFormatRequest","options","token","getFullModelRange","format","constructor","props","_defineProperty","handleCompletionRequest","bind","handleSignatureRequest","handleHoverRequest","componentDidMount","language","session","registeredCompletionProvider","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","getSignatureHelp","registeredSignatureProvider","registerSignatureHelpProvider","provideSignatureHelp","signatureHelpTriggerCharacters","getHover","registeredHoverProvider","registerHoverProvider","provideHover","componentWillUnmount","_this$registeredCompl","_this$registeredSigna","_this$registeredHover","context","propModel","params","textDocument","completionItems","getCompletionItems","monacoCompletionItems","items","suggestions","item","label","detail","documentation","sortText","filterText","insertTextFormat","value","insertText","insertTextRules","incomplete","catch","error","defaultResult","signatures","activeSignature","activeParameter","signatureItems","monacoSignatures","parameters","hover","monacoHover","hoverItem","contents","hoverContents","render"],"sources":["../../src/monaco/MonacoProviders.tsx"],"sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport type { dh } from '@deephaven/jsapi-types';\nimport init, { Workspace, type Diagnostic } from '@astral-sh/ruff-wasm-web';\nimport RUFF_DEFAULT_SETTINGS from './RuffDefaultSettings';\nimport MonacoUtils from './MonacoUtils';\n\nconst log = Log.module('MonacoCompletionProvider');\n\ninterface MonacoProviderProps {\n model: monaco.editor.ITextModel;\n session: dh.IdeSession;\n language: string;\n}\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoProviders extends PureComponent<\n MonacoProviderProps,\n Record<string, never>\n> {\n static ruffWorkspace?: Workspace;\n\n static initRuffPromise?: Promise<void>;\n\n static isRuffInitialized = false;\n\n static isRuffEnabled = true;\n\n static ruffSettings: Record<string, unknown> = RUFF_DEFAULT_SETTINGS;\n\n /**\n * Loads and initializes Ruff if it is enabled.\n * Subsequent calls will return the same promise.\n */\n static async initRuff(): Promise<void> {\n if (!MonacoProviders.isRuffEnabled) {\n return;\n }\n if (MonacoProviders.initRuffPromise) {\n return MonacoProviders.initRuffPromise;\n }\n\n MonacoProviders.initRuffPromise = init({}).then(() => {\n log.debug('Initialized Ruff', Workspace.version());\n MonacoProviders.isRuffInitialized = true;\n MonacoProviders.updateRuffWorkspace();\n });\n\n return MonacoProviders.initRuffPromise;\n }\n\n /**\n * Updates the current ruff workspace with MonacoProviders.ruffSettings.\n * Re-lints all Python models after updating.\n */\n static updateRuffWorkspace(): void {\n if (!MonacoProviders.isRuffInitialized) {\n return;\n }\n\n /* eslint-disable no-console */\n const prevLog = console.log;\n try {\n console.log = () => undefined; // Suppress not useful ruff-wasm-web logs when it creates the workspace\n MonacoProviders.ruffWorkspace = new Workspace(\n MonacoProviders.ruffSettings\n );\n } finally {\n console.log = prevLog; // Restore console.log\n }\n /* eslint-enable no-console */\n\n MonacoProviders.lintAllPython();\n }\n\n /**\n * Sets ruff settings\n * @param settings The ruff settings\n */\n static setRuffSettings(\n settings: Record<string, unknown> = MonacoProviders.ruffSettings\n ): void {\n MonacoProviders.ruffSettings = settings;\n\n if (!MonacoProviders.isRuffInitialized) {\n MonacoProviders.initRuff();\n return;\n }\n\n MonacoProviders.updateRuffWorkspace();\n }\n\n static getDiagnostics(model: monaco.editor.ITextModel): Diagnostic[] {\n if (!MonacoProviders.ruffWorkspace) {\n return [];\n }\n\n const diagnostics = MonacoProviders.ruffWorkspace.check(\n model.getValue()\n ) as Diagnostic[];\n if (MonacoUtils.isConsoleModel(model)) {\n // Only want SyntaxErrors for console which have no code\n return diagnostics.filter(d => d.code == null);\n }\n return diagnostics;\n }\n\n static lintAllPython(): void {\n if (!MonacoProviders.isRuffEnabled) {\n monaco.editor.removeAllMarkers('ruff');\n return;\n }\n\n monaco.editor\n .getModels()\n .filter(m => m.getLanguageId() === 'python')\n .forEach(MonacoProviders.lintPython);\n }\n\n static lintPython(model: monaco.editor.ITextModel): void {\n if (!MonacoProviders.isRuffEnabled) {\n return;\n }\n\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n\n const diagnostics = MonacoProviders.getDiagnostics(model);\n log.debug(`Linting Python document: ${model.uri.toString()}`, diagnostics);\n\n monaco.editor.setModelMarkers(\n model,\n 'ruff',\n diagnostics.map((d: Diagnostic) => {\n // Unused variable or import. Mark as unnecessary to fade the text\n const isUnnecessary = d.code === 'F401' || d.code === 'F841';\n const isSyntaxError = d.code == null; // SyntaxError has no error code\n return {\n startLineNumber: d.location.row,\n startColumn: d.location.column,\n endLineNumber: d.end_location.row,\n endColumn: d.end_location.column,\n message: isSyntaxError ? d.message : `${d.code}: ${d.message}`,\n severity: isSyntaxError\n ? monaco.MarkerSeverity.Error\n : monaco.MarkerSeverity.Warning,\n tags: isUnnecessary ? [monaco.MarkerTag.Unnecessary] : [],\n };\n })\n );\n }\n\n /**\n * Converts LSP CompletionItemKind to Monaco CompletionItemKind\n * Defaults to Variable if no LSP kind was provided\n * https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItemKind\n *\n * @param kind The LSP kind\n * @returns Monaco kind\n */\n static lspToMonacoKind(kind: number | undefined): number {\n const monacoKinds = monaco.languages.CompletionItemKind;\n switch (kind) {\n case 1:\n return monacoKinds.Text;\n case 2:\n return monacoKinds.Method;\n case 3:\n return monacoKinds.Function;\n case 4:\n return monacoKinds.Constructor;\n case 5:\n return monacoKinds.Field;\n case 6:\n return monacoKinds.Variable;\n case 7:\n return monacoKinds.Class;\n case 8:\n return monacoKinds.Interface;\n case 9:\n return monacoKinds.Module;\n case 10:\n return monacoKinds.Property;\n case 11:\n return monacoKinds.Unit;\n case 12:\n return monacoKinds.Value;\n case 13:\n return monacoKinds.Enum;\n case 14:\n return monacoKinds.Keyword;\n case 15:\n return monacoKinds.Snippet;\n case 16:\n return monacoKinds.Color;\n case 17:\n return monacoKinds.File;\n case 18:\n return monacoKinds.Reference;\n case 19:\n return monacoKinds.Folder;\n case 20:\n return monacoKinds.EnumMember;\n case 21:\n return monacoKinds.Constant;\n case 22:\n return monacoKinds.Struct;\n case 23:\n return monacoKinds.Event;\n case 24:\n return monacoKinds.Operator;\n case 25:\n return monacoKinds.TypeParameter;\n default:\n return monacoKinds.Variable;\n }\n }\n\n /**\n * Converts an LSP document range to a monaco range\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param range The LSP document range to convert\n * @returns The corresponding monaco range\n */\n static lspToMonacoRange(range: dh.lsp.Range): monaco.IRange {\n const { start, end } = range;\n\n // Monaco expects the columns/ranges to start at 1. LSP starts at 0\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n }\n\n /**\n * Converts a monaco position to an LSP position\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param position The monaco position\n * @returns The corresponding LSP position\n */\n static monacoToLspPosition(\n position: monaco.IPosition\n ): Pick<dh.lsp.Position, 'line' | 'character'> {\n // Monaco 1-indexes Position. LSP 0-indexes Position\n return {\n line: position.lineNumber - 1,\n character: position.column - 1,\n };\n }\n\n static handlePythonCodeActionRequest(\n model: monaco.editor.ITextModel,\n range: monaco.Range\n ): monaco.languages.ProviderResult<monaco.languages.CodeActionList> {\n if (!MonacoProviders.isRuffEnabled || !MonacoProviders.ruffWorkspace) {\n return {\n actions: [],\n dispose: () => {\n /* no-op */\n },\n };\n }\n\n const diagnostics = MonacoProviders.getDiagnostics(model).filter(d => {\n const diagnosticRange = new monaco.Range(\n d.location.row,\n d.location.column,\n d.end_location.row,\n d.end_location.column\n );\n return (\n d.code != null && // Syntax errors have no code and can't be fixed/disabled\n diagnosticRange.intersectRanges(range)\n );\n });\n\n const fixActions: monaco.languages.CodeAction[] = diagnostics\n .filter(({ fix }) => fix != null)\n .map(d => {\n let title = 'Fix';\n if (d.fix != null) {\n if (d.fix.message != null && d.fix.message !== '') {\n title = `${d.code}: ${d.fix.message}`;\n } else {\n title = `Fix ${d.code}`;\n }\n }\n return {\n title,\n id: `fix-${d.code}`,\n kind: 'quickfix',\n edit: d.fix\n ? {\n edits: d.fix.edits.map(edit => ({\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: edit.location.row,\n startColumn: edit.location.column,\n endLineNumber: edit.end_location.row,\n endColumn: edit.end_location.column,\n },\n text: edit.content ?? '',\n },\n })),\n }\n : undefined,\n };\n });\n\n const seenCodes = new Set<string>();\n const duplicateCodes = new Set<string>();\n diagnostics.forEach(d => {\n if (d.code == null) {\n return;\n }\n if (seenCodes.has(d.code)) {\n duplicateCodes.add(d.code);\n }\n seenCodes.add(d.code);\n });\n\n const disableLineActions: monaco.languages.CodeAction[] = diagnostics\n .map(d => {\n if (d.code == null) {\n // The nulls are already filtered out, but TS doesn't know that\n return [];\n }\n const line = model.getLineContent(d.location.row);\n const lastToken = monaco.editor\n .tokenize(line, model.getLanguageId())[0]\n .at(-1);\n const lineEdit = {\n range: {\n startLineNumber: d.location.row,\n startColumn: line.length + 1,\n endLineNumber: d.location.row,\n endColumn: line.length + 1,\n },\n text: ` # noqa: ${d.code}`,\n };\n if (lastToken != null && lastToken.type.startsWith('comment')) {\n // Already a comment at the end of the line\n lineEdit.text = `# noqa: ${d.code} `;\n if (line.startsWith('# noqa:', lastToken.offset)) {\n // Already another suppressed rule on the line\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = lastToken.offset + 9; // \"# noqa: \" length + 1 to offset\n } else {\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = line.startsWith('# ', lastToken.offset)\n ? lastToken.offset + 3 // \"# \" + 1 to offset\n : lastToken.offset + 2; // \"#\" + 1 to offset\n }\n }\n return [\n {\n title: `Disable ${d.code} for ${\n duplicateCodes.has(d.code)\n ? `line ${d.location.row}`\n : 'this line'\n }`,\n kind: 'quickfix',\n edit: {\n edits: [\n {\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: lineEdit,\n },\n ],\n },\n },\n ];\n })\n .flat()\n .filter(\n // Remove actions with duplicate titles as you can't disable the same rule on a line twice\n (action, i, arr) => arr.find(a => a.title === action.title) === action\n );\n\n const disableGlobalActions: monaco.languages.CodeAction[] = [\n ...seenCodes,\n ].map(code => ({\n title: `Disable ${code} for this file`,\n kind: 'quickfix',\n edit: {\n edits: [\n {\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1,\n },\n text: `# ruff: noqa: ${code}\\n`,\n },\n },\n ],\n },\n }));\n\n return {\n actions: [...fixActions, ...disableLineActions, ...disableGlobalActions],\n dispose: () => {\n /* no-op */\n },\n };\n }\n\n static handlePythonFormatRequest(\n model: monaco.editor.ITextModel,\n options: monaco.languages.FormattingOptions,\n token: monaco.CancellationToken\n ): monaco.languages.ProviderResult<monaco.languages.TextEdit[]> {\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n\n log.debug(`Formatting Python document: ${model.uri.toString}`);\n\n return [\n {\n range: model.getFullModelRange(),\n text: MonacoProviders.ruffWorkspace.format(model.getValue()),\n },\n ];\n }\n\n constructor(props: MonacoProviderProps) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n this.handleSignatureRequest = this.handleSignatureRequest.bind(this);\n this.handleHoverRequest = this.handleHoverRequest.bind(this);\n }\n\n componentDidMount(): void {\n const { language, session } = this.props;\n\n this.registeredCompletionProvider =\n monaco.languages.registerCompletionItemProvider(language, {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['.', '\"', \"'\"],\n });\n\n if (session.getSignatureHelp != null) {\n this.registeredSignatureProvider =\n monaco.languages.registerSignatureHelpProvider(language, {\n provideSignatureHelp: this.handleSignatureRequest,\n signatureHelpTriggerCharacters: ['(', ','],\n });\n }\n\n if (session.getHover != null) {\n this.registeredHoverProvider = monaco.languages.registerHoverProvider(\n language,\n {\n provideHover: this.handleHoverRequest,\n }\n );\n }\n }\n\n componentWillUnmount(): void {\n this.registeredCompletionProvider?.dispose();\n this.registeredSignatureProvider?.dispose();\n this.registeredHoverProvider?.dispose();\n }\n\n registeredCompletionProvider?: monaco.IDisposable;\n\n registeredSignatureProvider?: monaco.IDisposable;\n\n registeredHoverProvider?: monaco.IDisposable;\n\n handleCompletionRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n context: monaco.languages.CompletionContext\n ): monaco.languages.ProviderResult<monaco.languages.CompletionList> {\n const { model: propModel, session } = this.props;\n if (model !== propModel) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context,\n };\n\n const completionItems = session.getCompletionItems(params);\n log.debug('Requested completion items', params);\n\n const monacoCompletionItems = completionItems\n .then(items => {\n log.debug('Completion items received: ', params, items);\n\n const suggestions = items.map(item => {\n const {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat,\n } = item;\n\n return {\n label,\n kind: MonacoProviders.lspToMonacoKind(kind),\n detail,\n documentation:\n documentation?.kind === 'markdown'\n ? documentation\n : documentation?.value,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range: MonacoProviders.lspToMonacoRange(textEdit.range),\n };\n });\n\n return {\n incomplete: true,\n suggestions,\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return monacoCompletionItems;\n }\n\n handleSignatureRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n token: monaco.CancellationToken,\n context: monaco.languages.SignatureHelpContext\n ): monaco.languages.ProviderResult<monaco.languages.SignatureHelpResult> {\n const defaultResult: monaco.languages.SignatureHelpResult = {\n value: {\n signatures: [],\n activeSignature: 0,\n activeParameter: 0,\n },\n dispose: () => {\n /* no-op */\n },\n };\n\n const { model: propModel, session } = this.props;\n if (model !== propModel || session.getSignatureHelp == null) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context,\n };\n\n const signatureItems = session.getSignatureHelp(params);\n log.debug('Requested signature help', params);\n\n const monacoSignatures = signatureItems\n .then(items => {\n log.debug('Signatures received: ', params, signatureItems);\n const signatures = items.map(item => {\n const { label, documentation, parameters } = item;\n\n return {\n documentation:\n documentation?.kind === 'markdown'\n ? documentation\n : documentation?.value,\n label,\n parameters: parameters ?? [],\n };\n });\n\n if (signatures.length === 0) {\n return defaultResult;\n }\n\n // For now we will assume we only autocomplete Python w/ 1 signature\n // For multiple signatures, this may need to be sent through the request as context\n const activeSignature = 0;\n\n return {\n value: {\n signatures,\n activeSignature,\n activeParameter: items[activeSignature].activeParameter,\n },\n dispose: () => {\n /* no-op */\n },\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return defaultResult;\n });\n\n return monacoSignatures;\n }\n\n handleHoverRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position\n ): monaco.languages.ProviderResult<monaco.languages.Hover> {\n const { model: propModel, session } = this.props;\n if (model !== propModel || session.getHover == null) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n version: model.getVersionId(),\n },\n position: MonacoProviders.monacoToLspPosition(position),\n };\n\n const hover = session.getHover(params);\n log.debug('Requested hover', params);\n\n const monacoHover = hover\n .then(hoverItem => {\n log.debug('Hover received: ', params, hoverItem);\n const { contents: hoverContents } = hoverItem;\n\n return {\n contents: hoverContents != null ? [hoverContents] : [],\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving hover', error);\n return { contents: [] };\n });\n\n return monacoHover;\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default MonacoProviders;\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,7 @@
1
1
  import { useEffect } from 'react';
2
2
  import { useTheme } from '@deephaven/components';
3
3
  import MonacoUtils from "./MonacoUtils.js";
4
- import { Fragment as _Fragment } from "react/jsx-runtime";
5
- import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
6
5
  export function MonacoThemeProvider(_ref) {
7
6
  var {
8
7
  children
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoThemeProvider.js","names":["useEffect","useTheme","MonacoUtils","Fragment","_Fragment","jsx","_jsx","MonacoThemeProvider","_ref","children","activeThemes","refreshMonacoTheme","initTheme"],"sources":["../../src/monaco/MonacoThemeProvider.tsx"],"sourcesContent":["import { type ReactNode, useEffect } from 'react';\nimport { useTheme } from '@deephaven/components';\nimport MonacoUtils from './MonacoUtils';\n\nexport interface MonacoThemeProviderProps {\n children: ReactNode;\n}\n\nexport function MonacoThemeProvider({\n children,\n}: MonacoThemeProviderProps): JSX.Element {\n const { activeThemes } = useTheme();\n\n useEffect(\n function refreshMonacoTheme() {\n if (activeThemes != null) {\n MonacoUtils.initTheme();\n }\n },\n [activeThemes]\n );\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>;\n}\n"],"mappings":"AAAA,SAAyBA,SAAS,QAAQ,OAAO;AACjD,SAASC,QAAQ,QAAQ,uBAAuB;AAAC,OAC1CC,WAAW;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAMlB,OAAO,SAASC,mBAAmBA,CAAAC,IAAA,EAEO;EAAA,IAFN;IAClCC;EACwB,CAAC,GAAAD,IAAA;EACzB,IAAM;IAAEE;EAAa,CAAC,GAAGT,QAAQ,CAAC,CAAC;EAEnCD,SAAS,CACP,SAASW,kBAAkBA,CAAA,EAAG;IAC5B,IAAID,YAAY,IAAI,IAAI,EAAE;MACxBR,WAAW,CAACU,SAAS,CAAC,CAAC;IACzB;EACF,CAAC,EACD,CAACF,YAAY,CACf,CAAC;;EAED;EACA,oBAAOJ,IAAA,CAAAF,SAAA;IAAAK,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB"}
1
+ {"version":3,"file":"MonacoThemeProvider.js","names":["useEffect","useTheme","MonacoUtils","Fragment","_Fragment","jsx","_jsx","MonacoThemeProvider","_ref","children","activeThemes","refreshMonacoTheme","initTheme"],"sources":["../../src/monaco/MonacoThemeProvider.tsx"],"sourcesContent":["import { type ReactNode, useEffect } from 'react';\nimport { useTheme } from '@deephaven/components';\nimport MonacoUtils from './MonacoUtils';\n\nexport interface MonacoThemeProviderProps {\n children: ReactNode;\n}\n\nexport function MonacoThemeProvider({\n children,\n}: MonacoThemeProviderProps): JSX.Element {\n const { activeThemes } = useTheme();\n\n useEffect(\n function refreshMonacoTheme() {\n if (activeThemes != null) {\n MonacoUtils.initTheme();\n }\n },\n [activeThemes]\n );\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>;\n}\n"],"mappings":"AAAA,SAAyBA,SAAS,QAAQ,OAAO;AACjD,SAASC,QAAQ,QAAQ,uBAAuB;AAAC,OAC1CC,WAAW;AAAA,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAMlB,OAAO,SAASC,mBAAmBA,CAAAC,IAAA,EAEO;EAAA,IAFN;IAClCC;EACwB,CAAC,GAAAD,IAAA;EACzB,IAAM;IAAEE;EAAa,CAAC,GAAGT,QAAQ,CAAC,CAAC;EAEnCD,SAAS,CACP,SAASW,kBAAkBA,CAAA,EAAG;IAC5B,IAAID,YAAY,IAAI,IAAI,EAAE;MACxBR,WAAW,CAACU,SAAS,CAAC,CAAC;IACzB;EACF,CAAC,EACD,CAACF,YAAY,CACf,CAAC;;EAED;EACA,oBAAOJ,IAAA,CAAAF,SAAA;IAAAK,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB","ignoreList":[]}
@@ -268,7 +268,7 @@ class MonacoUtils {
268
268
  static setEOL(editor) {
269
269
  var _editor$getModel;
270
270
  var eolSequence = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : monaco.editor.EndOfLineSequence.LF;
271
- (_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 ? void 0 : _editor$getModel.setEOL(eolSequence);
271
+ (_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 || _editor$getModel.setEOL(eolSequence);
272
272
  }
273
273
 
274
274
  /**