@deephaven/console 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.0

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 (63) hide show
  1. package/dist/Console.js +85 -141
  2. package/dist/Console.js.map +1 -1
  3. package/dist/ConsoleInput.js +23 -41
  4. package/dist/ConsoleInput.js.map +1 -1
  5. package/dist/ConsoleObjectsMenu.js +13 -8
  6. package/dist/ConsoleObjectsMenu.js.map +1 -1
  7. package/dist/ConsoleStatusBar.js +15 -10
  8. package/dist/ConsoleStatusBar.js.map +1 -1
  9. package/dist/HeapUsage.js +33 -26
  10. package/dist/HeapUsage.js.map +1 -1
  11. package/dist/command-history/CommandHistory.js +45 -76
  12. package/dist/command-history/CommandHistory.js.map +1 -1
  13. package/dist/command-history/CommandHistoryActions.js +3 -4
  14. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  15. package/dist/command-history/CommandHistoryItem.js +5 -6
  16. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  17. package/dist/command-history/CommandHistoryItemTooltip.js +20 -33
  18. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  19. package/dist/command-history/CommandHistoryViewportUpdater.js +10 -9
  20. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
  21. package/dist/common/Code.js +14 -8
  22. package/dist/common/Code.js.map +1 -1
  23. package/dist/common/ObjectIcon.js +1 -3
  24. package/dist/common/ObjectIcon.js.map +1 -1
  25. package/dist/console-history/ConsoleHistory.js +8 -9
  26. package/dist/console-history/ConsoleHistory.js.map +1 -1
  27. package/dist/console-history/ConsoleHistoryItem.js +17 -32
  28. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  29. package/dist/console-history/ConsoleHistoryItemActions.js +3 -5
  30. package/dist/console-history/ConsoleHistoryItemActions.js.map +1 -1
  31. package/dist/console-history/ConsoleHistoryItemResult.js +1 -3
  32. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  33. package/dist/console-history/ConsoleHistoryItemTooltip.js +4 -8
  34. package/dist/console-history/ConsoleHistoryItemTooltip.js.map +1 -1
  35. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +4 -7
  36. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  37. package/dist/console-history/ConsoleHistoryResultInProgress.js +4 -7
  38. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  39. package/dist/csv/CsvInputBar.js +51 -67
  40. package/dist/csv/CsvInputBar.js.map +1 -1
  41. package/dist/csv/CsvOverlay.js +19 -31
  42. package/dist/csv/CsvOverlay.js.map +1 -1
  43. package/dist/csv/CsvParser.js +25 -36
  44. package/dist/csv/CsvParser.js.map +1 -1
  45. package/dist/csv/CsvTypeParser.js +4 -10
  46. package/dist/csv/CsvTypeParser.js.map +1 -1
  47. package/dist/log/LogLevelMenuItem.js +6 -8
  48. package/dist/log/LogLevelMenuItem.js.map +1 -1
  49. package/dist/log/LogView.js +9 -27
  50. package/dist/log/LogView.js.map +1 -1
  51. package/dist/monaco/MonacoProviders.js +27 -41
  52. package/dist/monaco/MonacoProviders.js.map +1 -1
  53. package/dist/monaco/MonacoThemeProvider.js +3 -6
  54. package/dist/monaco/MonacoThemeProvider.js.map +1 -1
  55. package/dist/monaco/MonacoUtils.js +17 -36
  56. package/dist/monaco/MonacoUtils.js.map +1 -1
  57. package/dist/monaco/RuffSettingsModal.js +29 -17
  58. package/dist/monaco/RuffSettingsModal.js.map +1 -1
  59. package/dist/notebook/Editor.js +4 -12
  60. package/dist/notebook/Editor.js.map +1 -1
  61. package/dist/notebook/ScriptEditor.js +34 -51
  62. package/dist/notebook/ScriptEditor.js.map +1 -1
  63. package/package.json +14 -14
@@ -190,10 +190,8 @@ class MonacoProviders extends PureComponent {
190
190
  * @returns The corresponding monaco range
191
191
  */
192
192
  static lspToMonacoRange(range) {
193
- var {
194
- start,
195
- end
196
- } = range;
193
+ var start = range.start,
194
+ end = range.end;
197
195
 
198
196
  // Monaco expects the columns/ranges to start at 1. LSP starts at 0
199
197
  return {
@@ -234,9 +232,7 @@ class MonacoProviders extends PureComponent {
234
232
  diagnosticRange.intersectRanges(range);
235
233
  });
236
234
  var fixActions = diagnostics.filter(_ref => {
237
- var {
238
- fix
239
- } = _ref;
235
+ var fix = _ref.fix;
240
236
  return fix != null;
241
237
  }).map(d => {
242
238
  var title = 'Fix';
@@ -371,10 +367,9 @@ class MonacoProviders extends PureComponent {
371
367
  this.handleHoverRequest = this.handleHoverRequest.bind(this);
372
368
  }
373
369
  componentDidMount() {
374
- var {
375
- language,
376
- session
377
- } = this.props;
370
+ var _this$props = this.props,
371
+ language = _this$props.language,
372
+ session = _this$props.session;
378
373
  this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {
379
374
  provideCompletionItems: this.handleCompletionRequest,
380
375
  triggerCharacters: ['.', '"', "'"]
@@ -398,10 +393,9 @@ class MonacoProviders extends PureComponent {
398
393
  (_this$registeredHover = this.registeredHoverProvider) === null || _this$registeredHover === void 0 || _this$registeredHover.dispose();
399
394
  }
400
395
  handleCompletionRequest(model, position, context) {
401
- var {
402
- model: propModel,
403
- session
404
- } = this.props;
396
+ var _this$props2 = this.props,
397
+ propModel = _this$props2.model,
398
+ session = _this$props2.session;
405
399
  if (model !== propModel) {
406
400
  return null;
407
401
  }
@@ -418,16 +412,14 @@ class MonacoProviders extends PureComponent {
418
412
  var monacoCompletionItems = completionItems.then(items => {
419
413
  log.debug('Completion items received: ', params, items);
420
414
  var suggestions = items.map(item => {
421
- var {
422
- label,
423
- kind,
424
- detail,
425
- documentation,
426
- sortText,
427
- filterText,
428
- textEdit,
429
- insertTextFormat
430
- } = item;
415
+ var label = item.label,
416
+ kind = item.kind,
417
+ detail = item.detail,
418
+ documentation = item.documentation,
419
+ sortText = item.sortText,
420
+ filterText = item.filterText,
421
+ textEdit = item.textEdit,
422
+ insertTextFormat = item.insertTextFormat;
431
423
  return {
432
424
  label,
433
425
  kind: MonacoProviders.lspToMonacoKind(kind),
@@ -466,10 +458,9 @@ class MonacoProviders extends PureComponent {
466
458
  /* no-op */
467
459
  }
468
460
  };
469
- var {
470
- model: propModel,
471
- session
472
- } = this.props;
461
+ var _this$props3 = this.props,
462
+ propModel = _this$props3.model,
463
+ session = _this$props3.session;
473
464
  if (model !== propModel || session.getSignatureHelp == null) {
474
465
  return null;
475
466
  }
@@ -486,11 +477,9 @@ class MonacoProviders extends PureComponent {
486
477
  var monacoSignatures = signatureItems.then(items => {
487
478
  log.debug('Signatures received: ', params, signatureItems);
488
479
  var signatures = items.map(item => {
489
- var {
490
- label,
491
- documentation,
492
- parameters
493
- } = item;
480
+ var label = item.label,
481
+ documentation = item.documentation,
482
+ parameters = item.parameters;
494
483
  return {
495
484
  documentation: (documentation === null || documentation === void 0 ? void 0 : documentation.kind) === 'markdown' ? documentation : documentation === null || documentation === void 0 ? void 0 : documentation.value,
496
485
  label,
@@ -521,10 +510,9 @@ class MonacoProviders extends PureComponent {
521
510
  return monacoSignatures;
522
511
  }
523
512
  handleHoverRequest(model, position) {
524
- var {
525
- model: propModel,
526
- session
527
- } = this.props;
513
+ var _this$props4 = this.props,
514
+ propModel = _this$props4.model,
515
+ session = _this$props4.session;
528
516
  if (model !== propModel || session.getHover == null) {
529
517
  return null;
530
518
  }
@@ -539,9 +527,7 @@ class MonacoProviders extends PureComponent {
539
527
  log.debug('Requested hover', params);
540
528
  var monacoHover = hover.then(hoverItem => {
541
529
  log.debug('Hover received: ', params, hoverItem);
542
- var {
543
- contents: hoverContents
544
- } = hoverItem;
530
+ var hoverContents = hoverItem.contents;
545
531
  return {
546
532
  contents: hoverContents != null ? [hoverContents] : []
547
533
  };
@@ -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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","ignoreList":[]}
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","_this$props","language","session","registeredCompletionProvider","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","getSignatureHelp","registeredSignatureProvider","registerSignatureHelpProvider","provideSignatureHelp","signatureHelpTriggerCharacters","getHover","registeredHoverProvider","registerHoverProvider","provideHover","componentWillUnmount","_this$registeredCompl","_this$registeredSigna","_this$registeredHover","context","_this$props2","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","_this$props3","signatureItems","monacoSignatures","parameters","_this$props4","hover","monacoHover","hoverItem","hoverContents","contents","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":[]}
@@ -3,12 +3,9 @@ import { useTheme } from '@deephaven/components';
3
3
  import MonacoUtils from "./MonacoUtils.js";
4
4
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
5
5
  export function MonacoThemeProvider(_ref) {
6
- var {
7
- children
8
- } = _ref;
9
- var {
10
- activeThemes
11
- } = useTheme();
6
+ var children = _ref.children;
7
+ var _useTheme = useTheme(),
8
+ activeThemes = _useTheme.activeThemes;
12
9
  useEffect(function refreshMonacoTheme() {
13
10
  if (activeThemes != null) {
14
11
  MonacoUtils.initTheme();
@@ -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,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":[]}
1
+ {"version":3,"file":"MonacoThemeProvider.js","names":["useEffect","useTheme","MonacoUtils","Fragment","_Fragment","jsx","_jsx","MonacoThemeProvider","_ref","children","_useTheme","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,IADxCC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;EAER,IAAAC,SAAA,GAAyBT,QAAQ,CAAC,CAAC;IAA3BU,YAAY,GAAAD,SAAA,CAAZC,YAAY;EAEpBX,SAAS,CACP,SAASY,kBAAkBA,CAAA,EAAG;IAC5B,IAAID,YAAY,IAAI,IAAI,EAAE;MACxBT,WAAW,CAACW,SAAS,CAAC,CAAC;IACzB;EACF,CAAC,EACD,CAACF,YAAY,CACf,CAAC;;EAED;EACA,oBAAOL,IAAA,CAAAF,SAAA;IAAAK,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB","ignoreList":[]}
@@ -34,17 +34,14 @@ class MonacoUtils {
34
34
  * The workers should be provided by the caller and bundled by their build system (e.g. Vite, Webpack)
35
35
  */
36
36
  static init() {
37
- var {
38
- getWorker
39
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
37
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
38
+ getWorker = _ref.getWorker;
40
39
  log.debug('Initializing Monaco...');
41
40
  if (getWorker !== undefined) {
42
41
  MonacoUtils.registerGetWorker(getWorker);
43
42
  }
44
- var {
45
- initTheme,
46
- registerLanguages
47
- } = MonacoUtils;
43
+ var initTheme = MonacoUtils.initTheme,
44
+ registerLanguages = MonacoUtils.registerLanguages;
48
45
  initTheme();
49
46
  registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);
50
47
  monaco.languages.onLanguage('python', () => {
@@ -78,9 +75,7 @@ class MonacoUtils {
78
75
  */
79
76
  static initTheme() {
80
77
  var _MonacoTheme$logErro, _MonacoTheme$logErro2;
81
- var {
82
- removeHashtag
83
- } = MonacoUtils;
78
+ var removeHashtag = MonacoUtils.removeHashtag;
84
79
  var MonacoTheme = resolveCssVariablesInRecord(MonacoThemeRaw);
85
80
  log.debug2('Monaco theme:', MonacoThemeRaw);
86
81
  log.debug2('Monaco theme derived:', MonacoTheme);
@@ -234,16 +229,12 @@ class MonacoUtils {
234
229
  static registerLanguages(languages) {
235
230
  // First override the default loader for any language we have a custom definition for
236
231
  // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867
237
- var languageIds = languages.map(_ref => {
238
- var {
239
- id
240
- } = _ref;
232
+ var languageIds = languages.map(_ref2 => {
233
+ var id = _ref2.id;
241
234
  return id;
242
235
  });
243
- monaco.languages.getLanguages().filter(_ref2 => {
244
- var {
245
- id
246
- } = _ref2;
236
+ monaco.languages.getLanguages().filter(_ref3 => {
237
+ var id = _ref3.id;
247
238
  return languageIds.includes(id);
248
239
  }).forEach(languageParam => {
249
240
  var language = languageParam;
@@ -295,18 +286,14 @@ class MonacoUtils {
295
286
  log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);
296
287
  session.openDocument(didOpenDocumentParams);
297
288
  var dispose = editor.onDidChangeModelContent(changedEvent => {
298
- var {
299
- changes,
300
- versionId
301
- } = changedEvent;
289
+ var changes = changedEvent.changes,
290
+ versionId = changedEvent.versionId;
302
291
  var contentChanges = [];
303
292
  for (var i = 0; i < changes.length; i += 1) {
304
293
  var change = changes[i];
305
- var {
306
- range,
307
- rangeLength,
308
- text
309
- } = change;
294
+ var range = change.range,
295
+ rangeLength = change.rangeLength,
296
+ text = change.text;
310
297
  var contentChange = {
311
298
  range: {
312
299
  start: {
@@ -371,9 +358,7 @@ class MonacoUtils {
371
358
  });
372
359
  }
373
360
  static isMacPlatform() {
374
- var {
375
- platform
376
- } = window.navigator;
361
+ var platform = window.navigator.platform;
377
362
  return platform.startsWith('Mac');
378
363
  }
379
364
 
@@ -428,12 +413,8 @@ class MonacoUtils {
428
413
  });
429
414
  }
430
415
  static getMonacoKeyCodeFromShortcut(shortcut) {
431
- var {
432
- keyState
433
- } = shortcut;
434
- var {
435
- keyValue
436
- } = keyState;
416
+ var keyState = shortcut.keyState;
417
+ var keyValue = keyState.keyValue;
437
418
  if (keyValue === null) {
438
419
  return 0;
439
420
  }