@deephaven/console 0.11.2-package-directory.0 → 0.11.3-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/Console.css +1 -0
  2. package/dist/Console.css.map +1 -1
  3. package/dist/Console.d.ts +6 -4
  4. package/dist/Console.d.ts.map +1 -1
  5. package/dist/Console.js +19 -54
  6. package/dist/Console.js.map +1 -1
  7. package/dist/ConsoleInput.d.ts +3 -0
  8. package/dist/ConsoleInput.js +8 -3
  9. package/dist/ConsoleInput.js.map +1 -1
  10. package/dist/command-history/CommandHistoryItemTooltip.d.ts +1 -1
  11. package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
  12. package/dist/common/ObjectIcon.d.ts +1 -0
  13. package/dist/common/ObjectIcon.d.ts.map +1 -1
  14. package/dist/console-history/ConsoleHistory.d.ts +5 -0
  15. package/dist/console-history/ConsoleHistory.d.ts.map +1 -1
  16. package/dist/console-history/ConsoleHistory.js +7 -1
  17. package/dist/console-history/ConsoleHistory.js.map +1 -1
  18. package/dist/console-history/ConsoleHistoryItem.d.ts +5 -0
  19. package/dist/console-history/ConsoleHistoryItem.d.ts.map +1 -1
  20. package/dist/console-history/ConsoleHistoryItem.js +11 -5
  21. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  22. package/dist/console-history/ConsoleHistoryResultInProgress.css +11 -0
  23. package/dist/console-history/ConsoleHistoryResultInProgress.css.map +1 -1
  24. package/dist/console-history/ConsoleHistoryResultInProgress.d.ts +6 -1
  25. package/dist/console-history/ConsoleHistoryResultInProgress.d.ts.map +1 -1
  26. package/dist/console-history/ConsoleHistoryResultInProgress.js +15 -6
  27. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  28. package/dist/csv/CsvInputBar.js +3 -1
  29. package/dist/csv/CsvInputBar.js.map +1 -1
  30. package/dist/csv/CsvTypeParser.js +2 -2
  31. package/dist/log/LogView.js +2 -2
  32. package/dist/monaco/MonacoUtils.d.ts.map +1 -1
  33. package/dist/monaco/MonacoUtils.js +1 -0
  34. package/dist/monaco/MonacoUtils.js.map +1 -1
  35. package/dist/notebook/Editor.js +2 -2
  36. package/dist/notebook/ScriptEditor.d.ts.map +1 -1
  37. package/dist/notebook/ScriptEditor.js +8 -0
  38. package/dist/notebook/ScriptEditor.js.map +1 -1
  39. package/package.json +14 -14
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoUtils.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoUtils.js"],"names":[],"mappings":";AAsEA;IACE,oBAoHC;IAED;;;;OAIG;IACH,4CAEC;IAED,+CAmBC;IAED,6CAQC;IAED;;;;OAIG;IACH,sBAHW,OAAO,MAAM,CAAC,OAAO,gBACrB,OAAO,MAAM,CAAC,iBAAiB,QAIzC;IAED;;;;;OAKG;IACH,4BAHW,OAAO,MAAM,CAAC,OAAO,+BAwD/B;IAED,sDAQC;IAED;;;;;OAKG;IACH,yDAiBC;IAED,gCAGC;IAED;;;;OAIG;IACH,iEA2BC;IAED;;;;;;;;;;;OAWG;IACH,2DAFW,MAAM,QA2BhB;IAED,2DA4BC;CACF"}
1
+ {"version":3,"file":"MonacoUtils.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoUtils.js"],"names":[],"mappings":";AAuEA;IACE,oBAoHC;IAED;;;;OAIG;IACH,4CAEC;IAED,+CAmBC;IAED,6CAQC;IAED;;;;OAIG;IACH,sBAHW,OAAO,MAAM,CAAC,OAAO,gBACrB,OAAO,MAAM,CAAC,iBAAiB,QAIzC;IAED;;;;;OAKG;IACH,4BAHW,OAAO,MAAM,CAAC,OAAO,+BAwD/B;IAED,sDAQC;IAED;;;;;OAKG;IACH,yDAiBC;IAED,gCAGC;IAED;;;;OAIG;IACH,iEA2BC;IAED;;;;;;;;;;;OAWG;IACH,2DAFW,MAAM,QA2BhB;IAED,2DA4BC;CACF"}
@@ -56,6 +56,7 @@ import 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSeman
56
56
  import 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';
57
57
  import 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';
58
58
  import 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';
59
+ import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';
59
60
  import { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';
60
61
  import { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';
61
62
  import Log from '@deephaven/log';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/monaco/MonacoUtils.js"],"names":["monaco","KeyCodeUtils","KeyMod","Log","MonacoTheme","PyLang","GroovyLang","ScalaLang","DbLang","LogLang","log","module","MonacoUtils","init","debug","registerLanguages","removeHashtag","dhDarkRules","token","foreground","string","keyword","delimiter","comment","number","storage","identifier","operator","predefined","substring","dhDarkColors","errorForeground","background","focusBorder","editor","defineTheme","base","inherit","rules","colors","debug2","setTheme","color","languages","languageIds","map","id","getLanguages","filter","includes","forEach","languageParam","language","loader","then","registerLanguage","register","onLanguage","setLanguageConfiguration","conf","setMonarchTokensProvider","setEOL","eolSequence","EndOfLineSequence","LF","getModel","openDocument","session","model","didOpenDocumentParams","textDocument","uri","languageId","getModeId","version","getVersionId","text","getValue","dispose","onDidChangeModelContent","changedEvent","changes","versionId","contentChanges","i","length","change","range","rangeLength","contentChange","start","line","startLineNumber","character","startColumn","end","endLineNumber","endColumn","push","didChangeDocumentParams","changeDocument","closeDocument","didCloseDocumentParams","registerPasteHandler","onDidPaste","pasteEvent","smartQuotes","invalidChars","editorModel","pastedText","getValueInRange","test","applyEdits","replace","isMacPlatform","platform","window","navigator","startsWith","removeConflictingKeybindings","keybindings","windows","mac","keybinding","removeKeybinding","err","error","_standaloneKeybindingService","_getResolver","_map","get","elem","command","addDynamicKeybinding","warn","getMonacoKeyCodeFromShortcut","shortcut","keyState","keyValue","isMac","metaKey","CtrlCmd","shiftKey","Shift","altKey","Alt","ctrlKey","WinCtrl","fromString"],"mappings":"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","sourcesContent":["/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\n// Instead of importing just 'monaco-editor' and importing all languages and features, just import the features and don't import all the languages we don't care about\n// Default list of features here: https://github.com/microsoft/monaco-editor-webpack-plugin\n// Mapping to paths here: https://github.com/microsoft/monaco-editor-webpack-plugin/blob/main/src/features.ts\n// Importing this way rather than using the plugin because I don't want to hook up react-app-rewired for the build\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';\nimport 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';\nimport 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js';\nimport 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js';\nimport 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';\nimport 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js';\nimport 'monaco-editor/esm/vs/editor/contrib/find/findController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';\nimport 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';\nimport 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';\nimport 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';\nimport 'monaco-editor/esm/vs/editor/contrib/indentation/indentation.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing.js';\nimport 'monaco-editor/esm/vs/editor/contrib/links/links.js';\nimport 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';\nimport 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';\nimport 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';\nimport 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';\nimport 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js';\nimport 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\nimport { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';\nimport Log from '@deephaven/log';\nimport MonacoTheme from './MonacoTheme.module.scss';\nimport PyLang from './lang/python';\nimport GroovyLang from './lang/groovy';\nimport ScalaLang from './lang/scala';\nimport DbLang from './lang/db';\nimport LogLang from './lang/log';\n\nconst log = Log.module('MonacoUtils');\n\nclass MonacoUtils {\n static init() {\n log.debug('Initializing Monaco...');\n\n const { registerLanguages, removeHashtag } = MonacoUtils;\n\n const dhDarkRules = [\n { token: '', foreground: removeHashtag(MonacoTheme.foreground) },\n { token: 'string', foreground: removeHashtag(MonacoTheme.string) },\n {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim']),\n },\n { token: 'keyword', foreground: removeHashtag(MonacoTheme.keyword) },\n {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js']),\n },\n {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter),\n },\n { token: 'comment', foreground: removeHashtag(MonacoTheme.comment) },\n { token: 'number', foreground: removeHashtag(MonacoTheme.number) },\n { token: 'storage', foreground: removeHashtag(MonacoTheme.storage) },\n {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier),\n },\n {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier']),\n },\n { token: 'operator', foreground: removeHashtag(MonacoTheme.operator) },\n {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined),\n },\n {\n token: 'error.log',\n foreground: MonacoTheme['log-error'].substring(1),\n },\n {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn']),\n },\n {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info']),\n },\n {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout']),\n },\n {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace']),\n },\n {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug']),\n },\n {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date']),\n },\n ];\n\n const dhDarkColors = {\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],\n 'editorLineNumber.foreground':\n MonacoTheme['editor-line-number-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground':\n MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background':\n MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground':\n MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground':\n MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.highlightForeground':\n MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground':\n MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground':\n MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n };\n\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors,\n });\n log.debug2('monaco theme: ', MonacoTheme);\n monaco.editor.setTheme('dh-dark');\n\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n\n log.debug('Monaco initialized.');\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param {String} color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color) {\n return color.substring(1);\n }\n\n static registerLanguages(languages) {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n const languageIds = languages.map(({ id }) => id);\n monaco.languages\n .getLanguages()\n .filter(({ id }) => languageIds.includes(id))\n .forEach(languageParam => {\n const language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n language.loader = () => ({\n then: () => {},\n });\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n\n static registerLanguage(language) {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param {monaco.editor.IEditor} editor The editor to set the EOL for\n * @param {monaco.editor.EndOfLineSequence} eolSequence EOL sequence\n */\n static setEOL(editor, eolSequence = monaco.editor.EndOfLineSequence.LF) {\n editor.getModel().setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param {dh.IdeSession} session The IdeSession to link\n * @param {monaco.editor.IEditor} editor The editor to link the session to\n * @return A cleanup function for disposing of the created listeners\n */\n static openDocument(editor, session) {\n const model = editor.getModel();\n const didOpenDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n languageId: model.getModeId(),\n version: model.getVersionId(),\n text: model.getValue(),\n },\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n\n session.openDocument(didOpenDocumentParams);\n\n const dispose = editor.onDidChangeModelContent(changedEvent => {\n const { changes, versionId } = changedEvent;\n\n const contentChanges = [];\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const { range, rangeLength, text } = change;\n const contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1,\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1,\n },\n },\n rangeLength,\n text,\n };\n\n contentChanges.push(contentChange);\n }\n\n if (contentChanges.length > 0) {\n const didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: `${model.uri}`,\n },\n contentChanges,\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n\n return dispose;\n }\n\n static closeDocument(editor, session) {\n const model = editor.getModel();\n const didCloseDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n },\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param {Monaco.editor} editor The editor the register the paste handler for\n */\n static registerPasteHandler(editor) {\n editor.onDidPaste(pasteEvent => {\n const smartQuotes = /“|”/g;\n const invalidChars = /\\u200b/g;\n const editorModel = editor.getModel();\n const pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (smartQuotes.test(pastedText) || invalidChars.test(pastedText)) {\n editorModel.applyEdits([\n {\n range: pasteEvent.range,\n text: pastedText\n .replace(smartQuotes, '\"')\n .replace(invalidChars, ''),\n },\n ]);\n }\n });\n }\n\n static isMacPlatform() {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture them\n * @param {Monaco.editor} editor The editor to remove the keybindings from\n */\n static removeConflictingKeybindings(editor) {\n // Multi-mod key events have a specific order\n // E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found\n // meta is WindowsKey on Windows and cmd on Mac\n // ctrl is ctrl Windows and ctrl on Mac\n // alt is alt on Windows and option on Mac\n const keybindings = [\n {\n windows: 'ctrl+D',\n mac: 'meta+D',\n },\n {\n windows: 'ctrl+H',\n },\n ];\n\n try {\n keybindings.forEach(keybinding =>\n MonacoUtils.removeKeybinding(\n editor,\n MonacoUtils.isMacPlatform() ? keybinding.mac : keybinding.windows\n )\n );\n } catch (err) {\n // This is probably only caused by Monaco changing private methods used here\n log.error(err);\n }\n }\n\n /**\n * Remove a keybinding and allow the events to bubble up\n * If you want the keybinding removed for all editors, add it to removeConflictingKeybindings\n * Monaco still captures the event if you choose to override the keybinding with a no-op function\n *\n * Based on the following comment to remove a keybinding and let the event bubble up\n * https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475\n * The issue for an API for this has apparently been open since 2016. Link below\n * https://github.com/microsoft/monaco-editor/issues/102\n * @param {Monaco.editor} editor The editor to remove the keybinding from\n * @param {string} keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows\n */\n static removeKeybinding(editor, keybinding) {\n if (!keybinding) {\n return;\n }\n /* eslint-disable no-underscore-dangle */\n // It's possible a single keybinding has multiple commands depending on context\n const keybindings = editor._standaloneKeybindingService\n ._getResolver()\n ._map.get(keybinding);\n\n if (keybindings) {\n keybindings.forEach(elem => {\n log.debug2(\n `Removing Monaco keybinding ${keybinding} for ${elem.command}`\n );\n editor._standaloneKeybindingService.addDynamicKeybinding(\n `-${elem.command}`,\n null,\n () => {}\n );\n });\n } else {\n log.warn(`Did not find any keybindings to remove for ${keybinding}`);\n }\n /* eslint-enable no-underscore-dangle */\n }\n\n static getMonacoKeyCodeFromShortcut(shortcut) {\n const { keyState } = shortcut;\n const { keyValue } = keyState;\n if (keyValue === null) {\n return 0;\n }\n\n const isMac = MonacoUtils.isMacPlatform();\n\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.ctrlKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.metaKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n}\n\nexport default MonacoUtils;\n"],"file":"MonacoUtils.js"}
1
+ {"version":3,"sources":["../../src/monaco/MonacoUtils.js"],"names":["monaco","KeyCodeUtils","KeyMod","Log","MonacoTheme","PyLang","GroovyLang","ScalaLang","DbLang","LogLang","log","module","MonacoUtils","init","debug","registerLanguages","removeHashtag","dhDarkRules","token","foreground","string","keyword","delimiter","comment","number","storage","identifier","operator","predefined","substring","dhDarkColors","errorForeground","background","focusBorder","editor","defineTheme","base","inherit","rules","colors","debug2","setTheme","color","languages","languageIds","map","id","getLanguages","filter","includes","forEach","languageParam","language","loader","then","registerLanguage","register","onLanguage","setLanguageConfiguration","conf","setMonarchTokensProvider","setEOL","eolSequence","EndOfLineSequence","LF","getModel","openDocument","session","model","didOpenDocumentParams","textDocument","uri","languageId","getModeId","version","getVersionId","text","getValue","dispose","onDidChangeModelContent","changedEvent","changes","versionId","contentChanges","i","length","change","range","rangeLength","contentChange","start","line","startLineNumber","character","startColumn","end","endLineNumber","endColumn","push","didChangeDocumentParams","changeDocument","closeDocument","didCloseDocumentParams","registerPasteHandler","onDidPaste","pasteEvent","smartQuotes","invalidChars","editorModel","pastedText","getValueInRange","test","applyEdits","replace","isMacPlatform","platform","window","navigator","startsWith","removeConflictingKeybindings","keybindings","windows","mac","keybinding","removeKeybinding","err","error","_standaloneKeybindingService","_getResolver","_map","get","elem","command","addDynamicKeybinding","warn","getMonacoKeyCodeFromShortcut","shortcut","keyState","keyValue","isMac","metaKey","CtrlCmd","shiftKey","Shift","altKey","Alt","ctrlKey","WinCtrl","fromString"],"mappings":"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","sourcesContent":["/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\n// Instead of importing just 'monaco-editor' and importing all languages and features, just import the features and don't import all the languages we don't care about\n// Default list of features here: https://github.com/microsoft/monaco-editor-webpack-plugin\n// Mapping to paths here: https://github.com/microsoft/monaco-editor-webpack-plugin/blob/main/src/features.ts\n// Importing this way rather than using the plugin because I don't want to hook up react-app-rewired for the build\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';\nimport 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';\nimport 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js';\nimport 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js';\nimport 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';\nimport 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js';\nimport 'monaco-editor/esm/vs/editor/contrib/find/findController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';\nimport 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';\nimport 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';\nimport 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';\nimport 'monaco-editor/esm/vs/editor/contrib/indentation/indentation.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing.js';\nimport 'monaco-editor/esm/vs/editor/contrib/links/links.js';\nimport 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';\nimport 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';\nimport 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';\nimport 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';\nimport 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js';\nimport 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';\nimport 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\nimport { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';\nimport Log from '@deephaven/log';\nimport MonacoTheme from './MonacoTheme.module.scss';\nimport PyLang from './lang/python';\nimport GroovyLang from './lang/groovy';\nimport ScalaLang from './lang/scala';\nimport DbLang from './lang/db';\nimport LogLang from './lang/log';\n\nconst log = Log.module('MonacoUtils');\n\nclass MonacoUtils {\n static init() {\n log.debug('Initializing Monaco...');\n\n const { registerLanguages, removeHashtag } = MonacoUtils;\n\n const dhDarkRules = [\n { token: '', foreground: removeHashtag(MonacoTheme.foreground) },\n { token: 'string', foreground: removeHashtag(MonacoTheme.string) },\n {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim']),\n },\n { token: 'keyword', foreground: removeHashtag(MonacoTheme.keyword) },\n {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js']),\n },\n {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter),\n },\n { token: 'comment', foreground: removeHashtag(MonacoTheme.comment) },\n { token: 'number', foreground: removeHashtag(MonacoTheme.number) },\n { token: 'storage', foreground: removeHashtag(MonacoTheme.storage) },\n {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier),\n },\n {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier']),\n },\n { token: 'operator', foreground: removeHashtag(MonacoTheme.operator) },\n {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined),\n },\n {\n token: 'error.log',\n foreground: MonacoTheme['log-error'].substring(1),\n },\n {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn']),\n },\n {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info']),\n },\n {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout']),\n },\n {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace']),\n },\n {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug']),\n },\n {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date']),\n },\n ];\n\n const dhDarkColors = {\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],\n 'editorLineNumber.foreground':\n MonacoTheme['editor-line-number-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground':\n MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background':\n MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground':\n MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground':\n MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.highlightForeground':\n MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground':\n MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground':\n MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n };\n\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors,\n });\n log.debug2('monaco theme: ', MonacoTheme);\n monaco.editor.setTheme('dh-dark');\n\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n\n log.debug('Monaco initialized.');\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param {String} color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color) {\n return color.substring(1);\n }\n\n static registerLanguages(languages) {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n const languageIds = languages.map(({ id }) => id);\n monaco.languages\n .getLanguages()\n .filter(({ id }) => languageIds.includes(id))\n .forEach(languageParam => {\n const language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n language.loader = () => ({\n then: () => {},\n });\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n\n static registerLanguage(language) {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param {monaco.editor.IEditor} editor The editor to set the EOL for\n * @param {monaco.editor.EndOfLineSequence} eolSequence EOL sequence\n */\n static setEOL(editor, eolSequence = monaco.editor.EndOfLineSequence.LF) {\n editor.getModel().setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param {dh.IdeSession} session The IdeSession to link\n * @param {monaco.editor.IEditor} editor The editor to link the session to\n * @return A cleanup function for disposing of the created listeners\n */\n static openDocument(editor, session) {\n const model = editor.getModel();\n const didOpenDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n languageId: model.getModeId(),\n version: model.getVersionId(),\n text: model.getValue(),\n },\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n\n session.openDocument(didOpenDocumentParams);\n\n const dispose = editor.onDidChangeModelContent(changedEvent => {\n const { changes, versionId } = changedEvent;\n\n const contentChanges = [];\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const { range, rangeLength, text } = change;\n const contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1,\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1,\n },\n },\n rangeLength,\n text,\n };\n\n contentChanges.push(contentChange);\n }\n\n if (contentChanges.length > 0) {\n const didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: `${model.uri}`,\n },\n contentChanges,\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n\n return dispose;\n }\n\n static closeDocument(editor, session) {\n const model = editor.getModel();\n const didCloseDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n },\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param {Monaco.editor} editor The editor the register the paste handler for\n */\n static registerPasteHandler(editor) {\n editor.onDidPaste(pasteEvent => {\n const smartQuotes = /“|”/g;\n const invalidChars = /\\u200b/g;\n const editorModel = editor.getModel();\n const pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (smartQuotes.test(pastedText) || invalidChars.test(pastedText)) {\n editorModel.applyEdits([\n {\n range: pasteEvent.range,\n text: pastedText\n .replace(smartQuotes, '\"')\n .replace(invalidChars, ''),\n },\n ]);\n }\n });\n }\n\n static isMacPlatform() {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture them\n * @param {Monaco.editor} editor The editor to remove the keybindings from\n */\n static removeConflictingKeybindings(editor) {\n // Multi-mod key events have a specific order\n // E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found\n // meta is WindowsKey on Windows and cmd on Mac\n // ctrl is ctrl Windows and ctrl on Mac\n // alt is alt on Windows and option on Mac\n const keybindings = [\n {\n windows: 'ctrl+D',\n mac: 'meta+D',\n },\n {\n windows: 'ctrl+H',\n },\n ];\n\n try {\n keybindings.forEach(keybinding =>\n MonacoUtils.removeKeybinding(\n editor,\n MonacoUtils.isMacPlatform() ? keybinding.mac : keybinding.windows\n )\n );\n } catch (err) {\n // This is probably only caused by Monaco changing private methods used here\n log.error(err);\n }\n }\n\n /**\n * Remove a keybinding and allow the events to bubble up\n * If you want the keybinding removed for all editors, add it to removeConflictingKeybindings\n * Monaco still captures the event if you choose to override the keybinding with a no-op function\n *\n * Based on the following comment to remove a keybinding and let the event bubble up\n * https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475\n * The issue for an API for this has apparently been open since 2016. Link below\n * https://github.com/microsoft/monaco-editor/issues/102\n * @param {Monaco.editor} editor The editor to remove the keybinding from\n * @param {string} keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows\n */\n static removeKeybinding(editor, keybinding) {\n if (!keybinding) {\n return;\n }\n /* eslint-disable no-underscore-dangle */\n // It's possible a single keybinding has multiple commands depending on context\n const keybindings = editor._standaloneKeybindingService\n ._getResolver()\n ._map.get(keybinding);\n\n if (keybindings) {\n keybindings.forEach(elem => {\n log.debug2(\n `Removing Monaco keybinding ${keybinding} for ${elem.command}`\n );\n editor._standaloneKeybindingService.addDynamicKeybinding(\n `-${elem.command}`,\n null,\n () => {}\n );\n });\n } else {\n log.warn(`Did not find any keybindings to remove for ${keybinding}`);\n }\n /* eslint-enable no-underscore-dangle */\n }\n\n static getMonacoKeyCodeFromShortcut(shortcut) {\n const { keyState } = shortcut;\n const { keyValue } = keyState;\n if (keyValue === null) {\n return 0;\n }\n\n const isMac = MonacoUtils.isMacPlatform();\n\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.ctrlKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.metaKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n}\n\nexport default MonacoUtils;\n"],"file":"MonacoUtils.js"}
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptEditor.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditor.jsx"],"names":[],"mappings":";AAcA;IACE,wBAgBC;IAoED,2CA0BC;IAED,gCAMC;IAED,kBAIC;IAED,0BAIC;IAgED,wBAGC;IA7LC,6BAA+B;IAC/B,uBAA6B;IAC7B,YAAkB;IAClB,sCAAwC;IAqD1C,gBAMC;IAED,0BAUC;IAkDD,2BAqDC;IAED,6BAKC;IAOD,2BAUC;IAED,6BAUC;IAED,yCAiBC;IAED,yBAKC;IAED,cAKC;IAED,mBAIC;IAED,iCAIC;CAqDF;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsBW,mCAAQ"}
1
+ {"version":3,"file":"ScriptEditor.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditor.jsx"],"names":[],"mappings":";AAcA;IACE,wBAgBC;IAwED,2CA0BC;IAED,gCAMC;IAED,kBAIC;IAED,0BAIC;IAgED,wBAGC;IAjMC,6BAA+B;IAC/B,uBAA6B;IAC7B,YAAkB;IAClB,sCAAwC;IAqD1C,gBAMC;IAED,0BAcC;IAkDD,2BAqDC;IAED,6BAKC;IAOD,2BAUC;IAED,6BAUC;IAED,yCAiBC;IAED,yBAKC;IAED,cAKC;IAED,mBAIC;IAED,iCAIC;CAqDF;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsBW,mCAAQ"}
@@ -86,8 +86,16 @@ class ScriptEditor extends Component {
86
86
  var model = this.editor.getModel();
87
87
  var {
88
88
  startLineNumber,
89
+ endColumn
90
+ } = range;
91
+ var {
89
92
  endLineNumber
90
93
  } = range;
94
+
95
+ if (endColumn === 1 && endLineNumber > startLineNumber) {
96
+ endLineNumber -= 1;
97
+ }
98
+
91
99
  var startLineMinColumn = model.getLineMinColumn(startLineNumber);
92
100
  var endLineMaxColumn = model.getLineMaxColumn(endLineNumber);
93
101
  var wholeLineRange = range.setStartPosition(startLineNumber, startLineMinColumn).setEndPosition(endLineNumber, endLineMaxColumn);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/notebook/ScriptEditor.jsx"],"names":["React","Component","PropTypes","LoadingOverlay","ShortcutRegistry","Log","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","completionCleanup","editor","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","focusOnMount","onChange","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","precondition","keybindingContext","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled","propTypes","shape","message","string","bool","func","isRequired","value","defaultProps"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,cAAT,EAAyBC,gBAAzB,QAAiD,uBAAjD;AACA,OAAOC,GAAP,MAAgB,gBAAhB;OACOC,M;SACEC,wB,EAA0BC,W;;OAE5BC,S;AAEP,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAJ,CAAW,cAAX,CAAZ;;AAEA,MAAMC,YAAN,SAA2BX,SAA3B,CAAqC;AACnCY,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AACA,SAAKC,uBAAL,GAA+B,KAAKA,uBAAL,CAA6BC,IAA7B,CAAkC,IAAlC,CAA/B;AACA,SAAKC,uBAAL,GAA+B,KAAKA,uBAAL,CAA6BD,IAA7B,CAAkC,IAAlC,CAA/B;AACA,SAAKE,SAAL,GAAiB,KAAKA,SAAL,CAAeF,IAAf,CAAoB,IAApB,CAAjB;AACA,SAAKG,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBH,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKI,eAAL,GAAuB,KAAKA,eAAL,CAAqBJ,IAArB,CAA0B,IAA1B,CAAvB;AAEA,SAAKK,qBAAL,GAA6B,EAA7B;AACA,SAAKC,iBAAL,GAAyB,IAAzB;AACA,SAAKC,MAAL,GAAc,IAAd;AACA,SAAKC,eAAL,gBAAuBxB,KAAK,CAACyB,SAAN,EAAvB;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,KAAK,EAAE;AADI,KAAb;AAGD;;AAEDC,EAAAA,iBAAiB,GAAG;AAClBxB,IAAAA,gBAAgB,CAACyB,gBAAjB,CAAkC,UAAlC,EAA8C,KAAKT,eAAnD;AACD;;AAEDU,EAAAA,kBAAkB,CAACC,SAAD,EAAY;AAC5B,QAAM;AAAEC,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAgC,KAAKnB,KAA3C;AACA,QAAM;AAAEoB,MAAAA;AAAF,QAAeD,QAArB;AAEA,QAAME,eAAe,GAAGD,QAAQ,KAAKH,SAAS,CAACE,QAAV,CAAmBC,QAAxD;;AACA,QAAIC,eAAJ,EAAqB;AACnBzB,MAAAA,GAAG,CAAC0B,KAAJ,CAAU,cAAV,EAA0BF,QAA1B;AACA,WAAKG,WAAL,CAAiBH,QAAjB;AACD;;AAED,QAAMI,mBAAmB,GACvBN,eAAe,IAAI,IAAnB,IAA2BD,SAAS,CAACC,eAAV,IAA6B,IAD1D;AAEA,QAAMO,aAAa,GAAGL,QAAQ,KAAKF,eAAnC;AACA,QAAMQ,iBAAiB,GACrBT,SAAS,CAACE,QAAV,CAAmBC,QAAnB,KAAgCH,SAAS,CAACC,eAD5C;;AAEA,QACEM,mBAAmB,IAClBN,eAAe,IAAIQ,iBAAnB,IAAwC,CAACD,aAF5C,EAGE;AACA;AACA7B,MAAAA,GAAG,CAAC0B,KAAJ,CAAU,wCAAV;AACA,WAAKK,oBAAL;AACA,WAAKC,oBAAL;AACD;;AAED,QAAMC,gBAAgB,GACpBX,eAAe,IAAI,IAAnB,IAA2BD,SAAS,CAACC,eAAV,IAA6B,IAD1D;;AAEA,QACGW,gBAAgB,IAAIJ,aAArB,IACCP,eAAe,IAAI,CAACQ,iBAApB,IAAyCD,aAF5C,EAGE;AACA;AACA7B,MAAAA,GAAG,CAAC0B,KAAJ,CAAU,qCAAV;AACA,WAAKQ,kBAAL;AACA,WAAKC,kBAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB1C,IAAAA,gBAAgB,CAAC2C,mBAAjB,CAAqC,UAArC,EAAiD,KAAK3B,eAAtD;AACD;;AAED4B,EAAAA,QAAQ,GAAG;AACT,QAAI,KAAKzB,MAAT,EAAiB;AACf,aAAO,KAAKA,MAAL,CAAYyB,QAAZ,EAAP;AACD;;AACDtC,IAAAA,GAAG,CAACuC,KAAJ,CAAU,wBAAV;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,kBAAkB,GAAG;AACnB,QAAMC,KAAK,GAAG,KAAK5B,MAAL,CAAY6B,YAAZ,EAAd;AACA,QAAMzB,KAAK,GAAG,KAAKJ,MAAL,CAAY8B,QAAZ,EAAd;AACA,QAAM;AAAEC,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAqCJ,KAA3C;AACA,QAAMK,kBAAkB,GAAG7B,KAAK,CAAC8B,gBAAN,CAAuBH,eAAvB,CAA3B;AACA,QAAMI,gBAAgB,GAAG/B,KAAK,CAACgC,gBAAN,CAAuBJ,aAAvB,CAAzB;AACA,QAAMK,cAAc,GAAGT,KAAK,CACzBU,gBADoB,CACHP,eADG,EACcE,kBADd,EAEpBM,cAFoB,CAELP,aAFK,EAEUG,gBAFV,CAAvB;AAGA,WAAO/B,KAAK,CAACoC,eAAN,CAAsBH,cAAtB,CAAP;AACD;;AAED7C,EAAAA,uBAAuB,CAACQ,MAAD,EAAS;AAC9B,QAAM;AACJyC,MAAAA,YADI;AAEJC,MAAAA,QAFI;AAGJhC,MAAAA,QAHI;AAIJiC,MAAAA,OAJI;AAKJlC,MAAAA;AALI,QAMF,KAAKlB,KANT;AAQAJ,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,yBAAV,EAAqCJ,eAArC,EAAsDkC,OAAtD,EAA+DjC,QAA/D;AAEA,SAAKV,MAAL,GAAcA,MAAd;AACA,SAAK4C,QAAL,CAAc;AAAExC,MAAAA,KAAK,EAAE,KAAKJ,MAAL,CAAY8B,QAAZ;AAAT,KAAd;AAEA7C,IAAAA,WAAW,CAAC4D,MAAZ,CAAmB7C,MAAnB;AACAf,IAAAA,WAAW,CAAC6D,oBAAZ,CAAiC9C,MAAjC;;AAEA,QAAI2C,OAAO,IAAIjC,QAAX,IAAuBD,eAAe,KAAKC,QAAQ,CAACC,QAAxD,EAAkE;AAChE,WAAKU,kBAAL;AACA,WAAKC,kBAAL;AACD;;AAEDtB,IAAAA,MAAM,CAAC+C,uBAAP,CAA+BL,QAA/B;;AACA,QAAID,YAAJ,EAAkB;AAChBzC,MAAAA,MAAM,CAACgD,KAAP;AACD;AACF;;AAEDtD,EAAAA,uBAAuB,GAAG;AACxBP,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,yBAAV;AACA,SAAKK,oBAAL;AACA,SAAKC,oBAAL;AACA,SAAKyB,QAAL,CAAc;AAAExC,MAAAA,KAAK,EAAE;AAAT,KAAd;AACA,SAAKJ,MAAL,GAAc,IAAd;AACD;;AAEDL,EAAAA,SAAS,GAAG;AACV,QAAM;AAAEsD,MAAAA;AAAF,QAAmB,KAAK1D,KAA9B;AACA,QAAM2D,OAAO,GAAG,KAAKzB,QAAL,EAAhB;AACAwB,IAAAA,YAAY,CAACC,OAAD,CAAZ;AACD;;AAEDtD,EAAAA,iBAAiB,GAAG;AAClB,QAAM;AAAEqD,MAAAA;AAAF,QAAmB,KAAK1D,KAA9B;AACA,QAAM2D,OAAO,GAAG,KAAKvB,kBAAL,EAAhB;AACAsB,IAAAA,YAAY,CAACC,OAAD,CAAZ;AACD;;AAED7B,EAAAA,kBAAkB,GAAG;AACnB,QAAI,KAAKvB,qBAAL,CAA2BqD,MAA3B,GAAoC,CAAxC,EAA2C;AACzChE,MAAAA,GAAG,CAACuC,KAAJ,CAAU,sCAAV;AACA;AACD;;AAED,QAAI,CAAC,KAAK1B,MAAV,EAAkB;AAChB;AACD;;AAED,QAAMoD,QAAQ,GAAG,EAAjB;AACAA,IAAAA,QAAQ,CAACC,IAAT,CACE,KAAKrD,MAAL,CAAYsD,SAAZ,CAAsB;AACpBC,MAAAA,EAAE,EAAE,UADgB;AAEpBC,MAAAA,KAAK,EAAE,KAFa;AAGpBC,MAAAA,WAAW,EAAE,CACXxE,WAAW,CAACyE,4BAAZ,CAAyCxE,SAAS,CAACyE,QAAV,CAAmBC,GAA5D,CADW,CAHO;AAMpBC,MAAAA,YAAY,EAAE,IANM;AAQpBC,MAAAA,iBAAiB,EAAE,IARC;AASpBC,MAAAA,kBAAkB,EAAE,YATA;AAUpBC,MAAAA,gBAAgB,EAAE,GAVE;AAYpBC,MAAAA,GAAG,EAAE,MAAM;AACT,aAAKtE,SAAL;AACA,eAAO,IAAP;AACD;AAfmB,KAAtB,CADF;AAoBAyD,IAAAA,QAAQ,CAACC,IAAT,CACE,KAAKrD,MAAL,CAAYsD,SAAZ,CAAsB;AACpBC,MAAAA,EAAE,EAAE,mBADgB;AAEpBC,MAAAA,KAAK,EAAE,cAFa;AAGpBC,MAAAA,WAAW,EAAE,CACXxE,WAAW,CAACyE,4BAAZ,CACExE,SAAS,CAACyE,QAAV,CAAmBO,YADrB,CADW,CAHO;AAQpBL,MAAAA,YAAY,EAAE,IARM;AASpBC,MAAAA,iBAAiB,EAAE,IATC;AAUpBC,MAAAA,kBAAkB,EAAE,YAVA;AAWpBC,MAAAA,gBAAgB,EAAE,GAXE;AAapBC,MAAAA,GAAG,EAAE,MAAM;AACT,aAAKrE,iBAAL;AACA,eAAO,IAAP;AACD;AAhBmB,KAAtB,CADF;AAqBA,SAAKE,qBAAL,GAA6BsD,QAA7B;AACD;;AAEDlC,EAAAA,oBAAoB,GAAG;AACrB,QAAI,KAAKpB,qBAAL,CAA2BqD,MAA3B,GAAoC,CAAxC,EAA2C;AACzC,WAAKrD,qBAAL,CAA2BqE,OAA3B,CAAmCC,OAAO,IAAIA,OAAO,CAACC,OAAR,EAA9C;AACA,WAAKvE,qBAAL,GAA6B,EAA7B;AACD;AACF;;AAEDD,EAAAA,eAAe,GAAG;AAChB,SAAKqB,oBAAL;AACA,SAAKG,kBAAL;AACD;;AAEDC,EAAAA,kBAAkB,GAAG;AACnB,QAAI,KAAKvB,iBAAL,IAA0B,IAA9B,EAAoC;AAClCZ,MAAAA,GAAG,CAACuC,KAAJ,CAAU,sCAAV;AACA;AACD;;AACD,QAAM;AAAEiB,MAAAA;AAAF,QAAc,KAAKpD,KAAzB;AACAJ,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,oBAAV,EAAgC,KAAKb,MAArC,EAA6C2C,OAA7C;;AACA,QAAI,KAAK3C,MAAL,IAAe2C,OAAnB,EAA4B;AAC1B,WAAK5C,iBAAL,GAAyBd,WAAW,CAACqF,YAAZ,CAAyB,KAAKtE,MAA9B,EAAsC2C,OAAtC,CAAzB;AACD;AACF;;AAEDxB,EAAAA,oBAAoB,GAAG;AACrB,QAAM;AAAEwB,MAAAA;AAAF,QAAc,KAAKpD,KAAzB;AACAJ,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,sBAAV,EAAkC,KAAKb,MAAvC,EAA+C2C,OAA/C;;AACA,QAAI,KAAK5C,iBAAT,EAA4B;AAC1B,WAAKA,iBAAL,CAAuBsE,OAAvB;AACA,WAAKtE,iBAAL,GAAyB,IAAzB;AACD;;AACD,QAAI,KAAKC,MAAL,IAAe2C,OAAnB,EAA4B;AAC1B1D,MAAAA,WAAW,CAACsF,aAAZ,CAA0B,KAAKvE,MAA/B,EAAuC2C,OAAvC;AACD;AACF;;AAED6B,EAAAA,MAAM,CAACC,IAAD,EAAqB;AAAA,QAAdzB,KAAc,uEAAN,IAAM;AACzB,QAAM5C,KAAK,GAAG,KAAKJ,MAAL,CAAY8B,QAAZ,EAAd;AACA,QAAM4C,WAAW,GAAGtE,KAAK,CAACqB,QAAN,EAApB;;AACA,QAAIiD,WAAJ,EAAiB;AACftE,MAAAA,KAAK,CAACuE,QAAN,WAAkBD,WAAlB,eAAkCD,IAAlC;AACD,KAFD,MAEO;AACLrE,MAAAA,KAAK,CAACuE,QAAN,WAAkBF,IAAlB;AACD;;AAED,QAAMG,QAAQ,GAAGxE,KAAK,CAACyE,YAAN,EAAjB;AACA,QAAMC,MAAM,GAAG1E,KAAK,CAAC2E,aAAN,CAAoBH,QAApB,IAAgC,CAA/C;AAEA,SAAK5E,MAAL,CAAYgF,WAAZ,CAAwB;AAAEC,MAAAA,UAAU,EAAEL,QAAd;AAAwBE,MAAAA;AAAxB,KAAxB;;AAEA,QAAI9B,KAAJ,EAAW;AACT,WAAKhD,MAAL,CAAYgD,KAAZ;AACD;AACF;;AAEDkC,EAAAA,gBAAgB,GAAG;AACjB/F,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,kBAAV;;AACA,QAAI,KAAKb,MAAT,EAAiB;AACf,WAAKA,MAAL,CAAYmF,MAAZ;AACD;AACF;;AAEDnC,EAAAA,KAAK,GAAG;AACN7D,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,OAAV;;AACA,QAAI,KAAKb,MAAT,EAAiB;AACf,WAAKA,MAAL,CAAYgD,KAAZ;AACD;AACF;;AAEDoC,EAAAA,UAAU,GAAG;AACX,QAAI,KAAKnF,eAAL,CAAqBoF,OAAzB,EAAkC;AAChC,WAAKpF,eAAL,CAAqBoF,OAArB,CAA6BD,UAA7B;AACD;AACF;;AAEDtE,EAAAA,WAAW,CAACH,QAAD,EAAW;AACpB,QAAI,KAAKV,eAAL,CAAqBoF,OAAzB,EAAkC;AAChC,WAAKpF,eAAL,CAAqBoF,OAArB,CAA6BvE,WAA7B,CAAyCH,QAAzC;AACD;AACF;;AAED2E,EAAAA,MAAM,GAAG;AACP,QAAM;AACJ5D,MAAAA,KADI;AAEJ6D,MAAAA,QAFI;AAGJC,MAAAA,SAHI;AAIJ7C,MAAAA,OAJI;AAKJlC,MAAAA,eALI;AAMJC,MAAAA;AANI,QAOF,KAAKnB,KAPT;AAQA,QAAM;AAAEa,MAAAA;AAAF,QAAY,KAAKD,KAAvB;AACA,QAAMsF,YAAY,GAAG/D,KAAK,sCAA+BA,KAA/B,IAAyC,IAAnE;AACA,QAAMgE,cAAc,GAAGhF,QAAQ,GAAGA,QAAQ,CAACC,QAAZ,GAAuB,IAAtD;AACA,QAAMgF,yBAAyB,GAC7BvF,KAAK,IAAIuC,OAAT,IAAoB+C,cAAc,KAAKjF,eADzC;AAGA,wBACE,0CACG,CAACiB,KAAK,IAAI8D,SAAV,kBACC;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,cAAD;AACE,MAAA,YAAY,EAAEC,YADhB;AAEE,MAAA,SAAS,EAAED,SAFb;AAGE,MAAA,QAAQ,EAAED;AAHZ,MADF,CAFJ,EAWGA,QAAQ,iBACP;AAAK,MAAA,SAAS,EAAC;AAAf,OACG7E,QAAQ,iBACP,uDACE,oBAAC,MAAD;AACE,MAAA,GAAG,EAAE,KAAKT,eADZ;AAEE,MAAA,QAAQ,EAAES,QAFZ;AAGE,MAAA,mBAAmB,EAAE,KAAKlB,uBAH5B;AAIE,MAAA,mBAAmB,EAAE,KAAKE;AAJ5B,MADF,EAOGiG,yBAAyB,iBACxB,oBAAC,wBAAD;AACE,MAAA,KAAK,EAAEvF,KADT;AAEE,MAAA,QAAQ,EAAEsF,cAFZ;AAGE,MAAA,OAAO,EAAE/C;AAHX,MARJ,CAFJ,CAZJ,CADF;AAmCD;;AA/TkC;;AAkUrCtD,YAAY,CAACuG,SAAb,GAAyB;AACvBlE,EAAAA,KAAK,EAAE/C,SAAS,CAACkH,KAAV,CAAgB;AAAEC,IAAAA,OAAO,EAAEnH,SAAS,CAACoH;AAArB,GAAhB,CADgB;AAEvBP,EAAAA,SAAS,EAAE7G,SAAS,CAACqH,IAFE;AAGvBT,EAAAA,QAAQ,EAAE5G,SAAS,CAACqH,IAHG;AAIvBvD,EAAAA,YAAY,EAAE9D,SAAS,CAACqH,IAJD;AAKvBtD,EAAAA,QAAQ,EAAE/D,SAAS,CAACsH,IALG;AAMvBhD,EAAAA,YAAY,EAAEtE,SAAS,CAACsH,IAAV,CAAeC,UANN;AAOvBvD,EAAAA,OAAO,EAAEhE,SAAS,CAACkH,KAAV,CAAgB,EAAhB,CAPc;AAQvBpF,EAAAA,eAAe,EAAE9B,SAAS,CAACoH,MARJ;AASvBrF,EAAAA,QAAQ,EAAE/B,SAAS,CAACkH,KAAV,CAAgB;AACxBlF,IAAAA,QAAQ,EAAEhC,SAAS,CAACoH,MADI;AAExBI,IAAAA,KAAK,EAAExH,SAAS,CAACoH;AAFO,GAAhB;AATa,CAAzB;AAeA1G,YAAY,CAAC+G,YAAb,GAA4B;AAC1B1E,EAAAA,KAAK,EAAE,IADmB;AAE1B8D,EAAAA,SAAS,EAAE,KAFe;AAG1BD,EAAAA,QAAQ,EAAE,KAHgB;AAI1B9C,EAAAA,YAAY,EAAE,IAJY;AAK1BC,EAAAA,QAAQ,EAAE,MAAM,CAAE,CALQ;AAM1BC,EAAAA,OAAO,EAAE,IANiB;AAO1BlC,EAAAA,eAAe,EAAE,IAPS;AAQ1BC,EAAAA,QAAQ,EAAE;AARgB,CAA5B;AAWA,eAAerB,YAAf","sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\nclass ScriptEditor extends Component {\n constructor(props) {\n super(props);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleRun = this.handleRun.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.updateShortcuts = this.updateShortcuts.bind(this);\n\n this.contextActionCleanups = [];\n this.completionCleanup = null;\n this.editor = null;\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount() {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps) {\n const { sessionLanguage, settings } = this.props;\n const { language } = settings;\n\n const languageChanged = language !== prevProps.settings.language;\n if (languageChanged) {\n log.debug('Set language', language);\n this.setLanguage(language);\n }\n\n const sessionDisconnected =\n sessionLanguage == null && prevProps.sessionLanguage != null;\n const languageMatch = language === sessionLanguage;\n const prevLanguageMatch =\n prevProps.settings.language === prevProps.sessionLanguage;\n if (\n sessionDisconnected ||\n (sessionLanguage && prevLanguageMatch && !languageMatch)\n ) {\n // Session disconnected or language changed from matching the session language to non-matching\n log.debug('De-init completion and context actions');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n }\n\n const sessionConnected =\n sessionLanguage != null && prevProps.sessionLanguage == null;\n if (\n (sessionConnected && languageMatch) ||\n (sessionLanguage && !prevLanguageMatch && languageMatch)\n ) {\n // Session connected with a matching language or notebook language changed to matching\n log.debug('Init completion and context actions');\n this.initContextActions();\n this.initCodeCompletion();\n }\n }\n\n componentWillUnmount() {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n getValue() {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand() {\n const range = this.editor.getSelection();\n const model = this.editor.getModel();\n const { startLineNumber, endLineNumber } = range;\n const startLineMinColumn = model.getLineMinColumn(startLineNumber);\n const endLineMaxColumn = model.getLineMaxColumn(endLineNumber);\n const wholeLineRange = range\n .setStartPosition(startLineNumber, startLineMinColumn)\n .setEndPosition(endLineNumber, endLineMaxColumn);\n return model.getValueInRange(wholeLineRange);\n }\n\n handleEditorInitialized(editor) {\n const {\n focusOnMount,\n onChange,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = editor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(editor);\n MonacoUtils.registerPasteHandler(editor);\n\n if (session && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n editor.onDidChangeModelContent(onChange);\n if (focusOnMount) {\n editor.focus();\n }\n }\n\n handleEditorWillDestroy() {\n log.debug('handleEditorWillDestroy');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = null;\n }\n\n handleRun() {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n onRunCommand(command);\n }\n\n handleRunSelected() {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions() {\n if (this.contextActionCleanups.length > 0) {\n log.error('Context actions already initialized.');\n return;\n }\n\n if (!this.editor) {\n return;\n }\n\n const cleanups = [];\n cleanups.push(\n this.editor.addAction({\n id: 'run-code',\n label: 'Run',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN),\n ],\n precondition: null,\n\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n return null;\n },\n })\n );\n\n cleanups.push(\n this.editor.addAction({\n id: 'run-selected-code',\n label: 'Run Selected',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(\n SHORTCUTS.NOTEBOOK.RUN_SELECTED\n ),\n ],\n precondition: null,\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n return null;\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions() {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts() {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion() {\n if (this.completionCleanup != null) {\n log.error('Code completion already initialized.');\n return;\n }\n const { session } = this.props;\n log.debug('initCodeCompletion', this.editor, session);\n if (this.editor && session) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion() {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = null;\n }\n if (this.editor && session) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text, focus = true) {\n const model = this.editor.getModel();\n const currentText = model.getValue();\n if (currentText) {\n model.setValue(`${currentText}\\n${text}`);\n } else {\n model.setValue(`${text}`);\n }\n\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n\n this.editor.setPosition({ lineNumber: lastLine, column });\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n updateDimensions() {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus() {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind() {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language) {\n if (this.editorComponent.current) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render() {\n const {\n error,\n isLoaded,\n isLoading,\n session,\n sessionLanguage,\n settings,\n } = this.props;\n const { model } = this.state;\n const errorMessage = error ? `Unable to open document. ${error}` : null;\n const editorLanguage = settings ? settings.language : null;\n const completionProviderEnabled =\n model && session && editorLanguage === sessionLanguage;\n\n return (\n <>\n {(error || isLoading) && (\n <div className=\"h-100 w-100 position-relative\">\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n />\n </div>\n )}\n\n {isLoaded && (\n <div className=\"h-100 w-100 script-editor\">\n {settings && (\n <>\n <Editor\n ref={this.editorComponent}\n settings={settings}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n {completionProviderEnabled && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nScriptEditor.propTypes = {\n error: PropTypes.shape({ message: PropTypes.string }),\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n focusOnMount: PropTypes.bool,\n onChange: PropTypes.func,\n onRunCommand: PropTypes.func.isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n settings: PropTypes.shape({\n language: PropTypes.string,\n value: PropTypes.string,\n }),\n};\n\nScriptEditor.defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: () => {},\n session: null,\n sessionLanguage: null,\n settings: null,\n};\n\nexport default ScriptEditor;\n"],"file":"ScriptEditor.js"}
1
+ {"version":3,"sources":["../../src/notebook/ScriptEditor.jsx"],"names":["React","Component","PropTypes","LoadingOverlay","ShortcutRegistry","Log","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","completionCleanup","editor","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","focusOnMount","onChange","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","precondition","keybindingContext","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled","propTypes","shape","message","string","bool","func","isRequired","value","defaultProps"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,cAAT,EAAyBC,gBAAzB,QAAiD,uBAAjD;AACA,OAAOC,GAAP,MAAgB,gBAAhB;OACOC,M;SACEC,wB,EAA0BC,W;;OAE5BC,S;AAEP,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAJ,CAAW,cAAX,CAAZ;;AAEA,MAAMC,YAAN,SAA2BX,SAA3B,CAAqC;AACnCY,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AACA,SAAKC,uBAAL,GAA+B,KAAKA,uBAAL,CAA6BC,IAA7B,CAAkC,IAAlC,CAA/B;AACA,SAAKC,uBAAL,GAA+B,KAAKA,uBAAL,CAA6BD,IAA7B,CAAkC,IAAlC,CAA/B;AACA,SAAKE,SAAL,GAAiB,KAAKA,SAAL,CAAeF,IAAf,CAAoB,IAApB,CAAjB;AACA,SAAKG,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBH,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKI,eAAL,GAAuB,KAAKA,eAAL,CAAqBJ,IAArB,CAA0B,IAA1B,CAAvB;AAEA,SAAKK,qBAAL,GAA6B,EAA7B;AACA,SAAKC,iBAAL,GAAyB,IAAzB;AACA,SAAKC,MAAL,GAAc,IAAd;AACA,SAAKC,eAAL,gBAAuBxB,KAAK,CAACyB,SAAN,EAAvB;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,KAAK,EAAE;AADI,KAAb;AAGD;;AAEDC,EAAAA,iBAAiB,GAAG;AAClBxB,IAAAA,gBAAgB,CAACyB,gBAAjB,CAAkC,UAAlC,EAA8C,KAAKT,eAAnD;AACD;;AAEDU,EAAAA,kBAAkB,CAACC,SAAD,EAAY;AAC5B,QAAM;AAAEC,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAgC,KAAKnB,KAA3C;AACA,QAAM;AAAEoB,MAAAA;AAAF,QAAeD,QAArB;AAEA,QAAME,eAAe,GAAGD,QAAQ,KAAKH,SAAS,CAACE,QAAV,CAAmBC,QAAxD;;AACA,QAAIC,eAAJ,EAAqB;AACnBzB,MAAAA,GAAG,CAAC0B,KAAJ,CAAU,cAAV,EAA0BF,QAA1B;AACA,WAAKG,WAAL,CAAiBH,QAAjB;AACD;;AAED,QAAMI,mBAAmB,GACvBN,eAAe,IAAI,IAAnB,IAA2BD,SAAS,CAACC,eAAV,IAA6B,IAD1D;AAEA,QAAMO,aAAa,GAAGL,QAAQ,KAAKF,eAAnC;AACA,QAAMQ,iBAAiB,GACrBT,SAAS,CAACE,QAAV,CAAmBC,QAAnB,KAAgCH,SAAS,CAACC,eAD5C;;AAEA,QACEM,mBAAmB,IAClBN,eAAe,IAAIQ,iBAAnB,IAAwC,CAACD,aAF5C,EAGE;AACA;AACA7B,MAAAA,GAAG,CAAC0B,KAAJ,CAAU,wCAAV;AACA,WAAKK,oBAAL;AACA,WAAKC,oBAAL;AACD;;AAED,QAAMC,gBAAgB,GACpBX,eAAe,IAAI,IAAnB,IAA2BD,SAAS,CAACC,eAAV,IAA6B,IAD1D;;AAEA,QACGW,gBAAgB,IAAIJ,aAArB,IACCP,eAAe,IAAI,CAACQ,iBAApB,IAAyCD,aAF5C,EAGE;AACA;AACA7B,MAAAA,GAAG,CAAC0B,KAAJ,CAAU,qCAAV;AACA,WAAKQ,kBAAL;AACA,WAAKC,kBAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB1C,IAAAA,gBAAgB,CAAC2C,mBAAjB,CAAqC,UAArC,EAAiD,KAAK3B,eAAtD;AACD;;AAED4B,EAAAA,QAAQ,GAAG;AACT,QAAI,KAAKzB,MAAT,EAAiB;AACf,aAAO,KAAKA,MAAL,CAAYyB,QAAZ,EAAP;AACD;;AACDtC,IAAAA,GAAG,CAACuC,KAAJ,CAAU,wBAAV;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,kBAAkB,GAAG;AACnB,QAAMC,KAAK,GAAG,KAAK5B,MAAL,CAAY6B,YAAZ,EAAd;AACA,QAAMzB,KAAK,GAAG,KAAKJ,MAAL,CAAY8B,QAAZ,EAAd;AACA,QAAM;AAAEC,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAiCJ,KAAvC;AACA,QAAI;AAAEK,MAAAA;AAAF,QAAoBL,KAAxB;;AACA,QAAII,SAAS,KAAK,CAAd,IAAmBC,aAAa,GAAGF,eAAvC,EAAwD;AACtDE,MAAAA,aAAa,IAAI,CAAjB;AACD;;AACD,QAAMC,kBAAkB,GAAG9B,KAAK,CAAC+B,gBAAN,CAAuBJ,eAAvB,CAA3B;AACA,QAAMK,gBAAgB,GAAGhC,KAAK,CAACiC,gBAAN,CAAuBJ,aAAvB,CAAzB;AACA,QAAMK,cAAc,GAAGV,KAAK,CACzBW,gBADoB,CACHR,eADG,EACcG,kBADd,EAEpBM,cAFoB,CAELP,aAFK,EAEUG,gBAFV,CAAvB;AAGA,WAAOhC,KAAK,CAACqC,eAAN,CAAsBH,cAAtB,CAAP;AACD;;AAED9C,EAAAA,uBAAuB,CAACQ,MAAD,EAAS;AAC9B,QAAM;AACJ0C,MAAAA,YADI;AAEJC,MAAAA,QAFI;AAGJjC,MAAAA,QAHI;AAIJkC,MAAAA,OAJI;AAKJnC,MAAAA;AALI,QAMF,KAAKlB,KANT;AAQAJ,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,yBAAV,EAAqCJ,eAArC,EAAsDmC,OAAtD,EAA+DlC,QAA/D;AAEA,SAAKV,MAAL,GAAcA,MAAd;AACA,SAAK6C,QAAL,CAAc;AAAEzC,MAAAA,KAAK,EAAE,KAAKJ,MAAL,CAAY8B,QAAZ;AAAT,KAAd;AAEA7C,IAAAA,WAAW,CAAC6D,MAAZ,CAAmB9C,MAAnB;AACAf,IAAAA,WAAW,CAAC8D,oBAAZ,CAAiC/C,MAAjC;;AAEA,QAAI4C,OAAO,IAAIlC,QAAX,IAAuBD,eAAe,KAAKC,QAAQ,CAACC,QAAxD,EAAkE;AAChE,WAAKU,kBAAL;AACA,WAAKC,kBAAL;AACD;;AAEDtB,IAAAA,MAAM,CAACgD,uBAAP,CAA+BL,QAA/B;;AACA,QAAID,YAAJ,EAAkB;AAChB1C,MAAAA,MAAM,CAACiD,KAAP;AACD;AACF;;AAEDvD,EAAAA,uBAAuB,GAAG;AACxBP,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,yBAAV;AACA,SAAKK,oBAAL;AACA,SAAKC,oBAAL;AACA,SAAK0B,QAAL,CAAc;AAAEzC,MAAAA,KAAK,EAAE;AAAT,KAAd;AACA,SAAKJ,MAAL,GAAc,IAAd;AACD;;AAEDL,EAAAA,SAAS,GAAG;AACV,QAAM;AAAEuD,MAAAA;AAAF,QAAmB,KAAK3D,KAA9B;AACA,QAAM4D,OAAO,GAAG,KAAK1B,QAAL,EAAhB;AACAyB,IAAAA,YAAY,CAACC,OAAD,CAAZ;AACD;;AAEDvD,EAAAA,iBAAiB,GAAG;AAClB,QAAM;AAAEsD,MAAAA;AAAF,QAAmB,KAAK3D,KAA9B;AACA,QAAM4D,OAAO,GAAG,KAAKxB,kBAAL,EAAhB;AACAuB,IAAAA,YAAY,CAACC,OAAD,CAAZ;AACD;;AAED9B,EAAAA,kBAAkB,GAAG;AACnB,QAAI,KAAKvB,qBAAL,CAA2BsD,MAA3B,GAAoC,CAAxC,EAA2C;AACzCjE,MAAAA,GAAG,CAACuC,KAAJ,CAAU,sCAAV;AACA;AACD;;AAED,QAAI,CAAC,KAAK1B,MAAV,EAAkB;AAChB;AACD;;AAED,QAAMqD,QAAQ,GAAG,EAAjB;AACAA,IAAAA,QAAQ,CAACC,IAAT,CACE,KAAKtD,MAAL,CAAYuD,SAAZ,CAAsB;AACpBC,MAAAA,EAAE,EAAE,UADgB;AAEpBC,MAAAA,KAAK,EAAE,KAFa;AAGpBC,MAAAA,WAAW,EAAE,CACXzE,WAAW,CAAC0E,4BAAZ,CAAyCzE,SAAS,CAAC0E,QAAV,CAAmBC,GAA5D,CADW,CAHO;AAMpBC,MAAAA,YAAY,EAAE,IANM;AAQpBC,MAAAA,iBAAiB,EAAE,IARC;AASpBC,MAAAA,kBAAkB,EAAE,YATA;AAUpBC,MAAAA,gBAAgB,EAAE,GAVE;AAYpBC,MAAAA,GAAG,EAAE,MAAM;AACT,aAAKvE,SAAL;AACA,eAAO,IAAP;AACD;AAfmB,KAAtB,CADF;AAoBA0D,IAAAA,QAAQ,CAACC,IAAT,CACE,KAAKtD,MAAL,CAAYuD,SAAZ,CAAsB;AACpBC,MAAAA,EAAE,EAAE,mBADgB;AAEpBC,MAAAA,KAAK,EAAE,cAFa;AAGpBC,MAAAA,WAAW,EAAE,CACXzE,WAAW,CAAC0E,4BAAZ,CACEzE,SAAS,CAAC0E,QAAV,CAAmBO,YADrB,CADW,CAHO;AAQpBL,MAAAA,YAAY,EAAE,IARM;AASpBC,MAAAA,iBAAiB,EAAE,IATC;AAUpBC,MAAAA,kBAAkB,EAAE,YAVA;AAWpBC,MAAAA,gBAAgB,EAAE,GAXE;AAapBC,MAAAA,GAAG,EAAE,MAAM;AACT,aAAKtE,iBAAL;AACA,eAAO,IAAP;AACD;AAhBmB,KAAtB,CADF;AAqBA,SAAKE,qBAAL,GAA6BuD,QAA7B;AACD;;AAEDnC,EAAAA,oBAAoB,GAAG;AACrB,QAAI,KAAKpB,qBAAL,CAA2BsD,MAA3B,GAAoC,CAAxC,EAA2C;AACzC,WAAKtD,qBAAL,CAA2BsE,OAA3B,CAAmCC,OAAO,IAAIA,OAAO,CAACC,OAAR,EAA9C;AACA,WAAKxE,qBAAL,GAA6B,EAA7B;AACD;AACF;;AAEDD,EAAAA,eAAe,GAAG;AAChB,SAAKqB,oBAAL;AACA,SAAKG,kBAAL;AACD;;AAEDC,EAAAA,kBAAkB,GAAG;AACnB,QAAI,KAAKvB,iBAAL,IAA0B,IAA9B,EAAoC;AAClCZ,MAAAA,GAAG,CAACuC,KAAJ,CAAU,sCAAV;AACA;AACD;;AACD,QAAM;AAAEkB,MAAAA;AAAF,QAAc,KAAKrD,KAAzB;AACAJ,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,oBAAV,EAAgC,KAAKb,MAArC,EAA6C4C,OAA7C;;AACA,QAAI,KAAK5C,MAAL,IAAe4C,OAAnB,EAA4B;AAC1B,WAAK7C,iBAAL,GAAyBd,WAAW,CAACsF,YAAZ,CAAyB,KAAKvE,MAA9B,EAAsC4C,OAAtC,CAAzB;AACD;AACF;;AAEDzB,EAAAA,oBAAoB,GAAG;AACrB,QAAM;AAAEyB,MAAAA;AAAF,QAAc,KAAKrD,KAAzB;AACAJ,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,sBAAV,EAAkC,KAAKb,MAAvC,EAA+C4C,OAA/C;;AACA,QAAI,KAAK7C,iBAAT,EAA4B;AAC1B,WAAKA,iBAAL,CAAuBuE,OAAvB;AACA,WAAKvE,iBAAL,GAAyB,IAAzB;AACD;;AACD,QAAI,KAAKC,MAAL,IAAe4C,OAAnB,EAA4B;AAC1B3D,MAAAA,WAAW,CAACuF,aAAZ,CAA0B,KAAKxE,MAA/B,EAAuC4C,OAAvC;AACD;AACF;;AAED6B,EAAAA,MAAM,CAACC,IAAD,EAAqB;AAAA,QAAdzB,KAAc,uEAAN,IAAM;AACzB,QAAM7C,KAAK,GAAG,KAAKJ,MAAL,CAAY8B,QAAZ,EAAd;AACA,QAAM6C,WAAW,GAAGvE,KAAK,CAACqB,QAAN,EAApB;;AACA,QAAIkD,WAAJ,EAAiB;AACfvE,MAAAA,KAAK,CAACwE,QAAN,WAAkBD,WAAlB,eAAkCD,IAAlC;AACD,KAFD,MAEO;AACLtE,MAAAA,KAAK,CAACwE,QAAN,WAAkBF,IAAlB;AACD;;AAED,QAAMG,QAAQ,GAAGzE,KAAK,CAAC0E,YAAN,EAAjB;AACA,QAAMC,MAAM,GAAG3E,KAAK,CAAC4E,aAAN,CAAoBH,QAApB,IAAgC,CAA/C;AAEA,SAAK7E,MAAL,CAAYiF,WAAZ,CAAwB;AAAEC,MAAAA,UAAU,EAAEL,QAAd;AAAwBE,MAAAA;AAAxB,KAAxB;;AAEA,QAAI9B,KAAJ,EAAW;AACT,WAAKjD,MAAL,CAAYiD,KAAZ;AACD;AACF;;AAEDkC,EAAAA,gBAAgB,GAAG;AACjBhG,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,kBAAV;;AACA,QAAI,KAAKb,MAAT,EAAiB;AACf,WAAKA,MAAL,CAAYoF,MAAZ;AACD;AACF;;AAEDnC,EAAAA,KAAK,GAAG;AACN9D,IAAAA,GAAG,CAAC0B,KAAJ,CAAU,OAAV;;AACA,QAAI,KAAKb,MAAT,EAAiB;AACf,WAAKA,MAAL,CAAYiD,KAAZ;AACD;AACF;;AAEDoC,EAAAA,UAAU,GAAG;AACX,QAAI,KAAKpF,eAAL,CAAqBqF,OAAzB,EAAkC;AAChC,WAAKrF,eAAL,CAAqBqF,OAArB,CAA6BD,UAA7B;AACD;AACF;;AAEDvE,EAAAA,WAAW,CAACH,QAAD,EAAW;AACpB,QAAI,KAAKV,eAAL,CAAqBqF,OAAzB,EAAkC;AAChC,WAAKrF,eAAL,CAAqBqF,OAArB,CAA6BxE,WAA7B,CAAyCH,QAAzC;AACD;AACF;;AAED4E,EAAAA,MAAM,GAAG;AACP,QAAM;AACJ7D,MAAAA,KADI;AAEJ8D,MAAAA,QAFI;AAGJC,MAAAA,SAHI;AAIJ7C,MAAAA,OAJI;AAKJnC,MAAAA,eALI;AAMJC,MAAAA;AANI,QAOF,KAAKnB,KAPT;AAQA,QAAM;AAAEa,MAAAA;AAAF,QAAY,KAAKD,KAAvB;AACA,QAAMuF,YAAY,GAAGhE,KAAK,sCAA+BA,KAA/B,IAAyC,IAAnE;AACA,QAAMiE,cAAc,GAAGjF,QAAQ,GAAGA,QAAQ,CAACC,QAAZ,GAAuB,IAAtD;AACA,QAAMiF,yBAAyB,GAC7BxF,KAAK,IAAIwC,OAAT,IAAoB+C,cAAc,KAAKlF,eADzC;AAGA,wBACE,0CACG,CAACiB,KAAK,IAAI+D,SAAV,kBACC;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,cAAD;AACE,MAAA,YAAY,EAAEC,YADhB;AAEE,MAAA,SAAS,EAAED,SAFb;AAGE,MAAA,QAAQ,EAAED;AAHZ,MADF,CAFJ,EAWGA,QAAQ,iBACP;AAAK,MAAA,SAAS,EAAC;AAAf,OACG9E,QAAQ,iBACP,uDACE,oBAAC,MAAD;AACE,MAAA,GAAG,EAAE,KAAKT,eADZ;AAEE,MAAA,QAAQ,EAAES,QAFZ;AAGE,MAAA,mBAAmB,EAAE,KAAKlB,uBAH5B;AAIE,MAAA,mBAAmB,EAAE,KAAKE;AAJ5B,MADF,EAOGkG,yBAAyB,iBACxB,oBAAC,wBAAD;AACE,MAAA,KAAK,EAAExF,KADT;AAEE,MAAA,QAAQ,EAAEuF,cAFZ;AAGE,MAAA,OAAO,EAAE/C;AAHX,MARJ,CAFJ,CAZJ,CADF;AAmCD;;AAnUkC;;AAsUrCvD,YAAY,CAACwG,SAAb,GAAyB;AACvBnE,EAAAA,KAAK,EAAE/C,SAAS,CAACmH,KAAV,CAAgB;AAAEC,IAAAA,OAAO,EAAEpH,SAAS,CAACqH;AAArB,GAAhB,CADgB;AAEvBP,EAAAA,SAAS,EAAE9G,SAAS,CAACsH,IAFE;AAGvBT,EAAAA,QAAQ,EAAE7G,SAAS,CAACsH,IAHG;AAIvBvD,EAAAA,YAAY,EAAE/D,SAAS,CAACsH,IAJD;AAKvBtD,EAAAA,QAAQ,EAAEhE,SAAS,CAACuH,IALG;AAMvBhD,EAAAA,YAAY,EAAEvE,SAAS,CAACuH,IAAV,CAAeC,UANN;AAOvBvD,EAAAA,OAAO,EAAEjE,SAAS,CAACmH,KAAV,CAAgB,EAAhB,CAPc;AAQvBrF,EAAAA,eAAe,EAAE9B,SAAS,CAACqH,MARJ;AASvBtF,EAAAA,QAAQ,EAAE/B,SAAS,CAACmH,KAAV,CAAgB;AACxBnF,IAAAA,QAAQ,EAAEhC,SAAS,CAACqH,MADI;AAExBI,IAAAA,KAAK,EAAEzH,SAAS,CAACqH;AAFO,GAAhB;AATa,CAAzB;AAeA3G,YAAY,CAACgH,YAAb,GAA4B;AAC1B3E,EAAAA,KAAK,EAAE,IADmB;AAE1B+D,EAAAA,SAAS,EAAE,KAFe;AAG1BD,EAAAA,QAAQ,EAAE,KAHgB;AAI1B9C,EAAAA,YAAY,EAAE,IAJY;AAK1BC,EAAAA,QAAQ,EAAE,MAAM,CAAE,CALQ;AAM1BC,EAAAA,OAAO,EAAE,IANiB;AAO1BnC,EAAAA,eAAe,EAAE,IAPS;AAQ1BC,EAAAA,QAAQ,EAAE;AARgB,CAA5B;AAWA,eAAerB,YAAf","sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\nclass ScriptEditor extends Component {\n constructor(props) {\n super(props);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleRun = this.handleRun.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.updateShortcuts = this.updateShortcuts.bind(this);\n\n this.contextActionCleanups = [];\n this.completionCleanup = null;\n this.editor = null;\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount() {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps) {\n const { sessionLanguage, settings } = this.props;\n const { language } = settings;\n\n const languageChanged = language !== prevProps.settings.language;\n if (languageChanged) {\n log.debug('Set language', language);\n this.setLanguage(language);\n }\n\n const sessionDisconnected =\n sessionLanguage == null && prevProps.sessionLanguage != null;\n const languageMatch = language === sessionLanguage;\n const prevLanguageMatch =\n prevProps.settings.language === prevProps.sessionLanguage;\n if (\n sessionDisconnected ||\n (sessionLanguage && prevLanguageMatch && !languageMatch)\n ) {\n // Session disconnected or language changed from matching the session language to non-matching\n log.debug('De-init completion and context actions');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n }\n\n const sessionConnected =\n sessionLanguage != null && prevProps.sessionLanguage == null;\n if (\n (sessionConnected && languageMatch) ||\n (sessionLanguage && !prevLanguageMatch && languageMatch)\n ) {\n // Session connected with a matching language or notebook language changed to matching\n log.debug('Init completion and context actions');\n this.initContextActions();\n this.initCodeCompletion();\n }\n }\n\n componentWillUnmount() {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n getValue() {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand() {\n const range = this.editor.getSelection();\n const model = this.editor.getModel();\n const { startLineNumber, endColumn } = range;\n let { endLineNumber } = range;\n if (endColumn === 1 && endLineNumber > startLineNumber) {\n endLineNumber -= 1;\n }\n const startLineMinColumn = model.getLineMinColumn(startLineNumber);\n const endLineMaxColumn = model.getLineMaxColumn(endLineNumber);\n const wholeLineRange = range\n .setStartPosition(startLineNumber, startLineMinColumn)\n .setEndPosition(endLineNumber, endLineMaxColumn);\n return model.getValueInRange(wholeLineRange);\n }\n\n handleEditorInitialized(editor) {\n const {\n focusOnMount,\n onChange,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = editor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(editor);\n MonacoUtils.registerPasteHandler(editor);\n\n if (session && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n editor.onDidChangeModelContent(onChange);\n if (focusOnMount) {\n editor.focus();\n }\n }\n\n handleEditorWillDestroy() {\n log.debug('handleEditorWillDestroy');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = null;\n }\n\n handleRun() {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n onRunCommand(command);\n }\n\n handleRunSelected() {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions() {\n if (this.contextActionCleanups.length > 0) {\n log.error('Context actions already initialized.');\n return;\n }\n\n if (!this.editor) {\n return;\n }\n\n const cleanups = [];\n cleanups.push(\n this.editor.addAction({\n id: 'run-code',\n label: 'Run',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN),\n ],\n precondition: null,\n\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n return null;\n },\n })\n );\n\n cleanups.push(\n this.editor.addAction({\n id: 'run-selected-code',\n label: 'Run Selected',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(\n SHORTCUTS.NOTEBOOK.RUN_SELECTED\n ),\n ],\n precondition: null,\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n return null;\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions() {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts() {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion() {\n if (this.completionCleanup != null) {\n log.error('Code completion already initialized.');\n return;\n }\n const { session } = this.props;\n log.debug('initCodeCompletion', this.editor, session);\n if (this.editor && session) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion() {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = null;\n }\n if (this.editor && session) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text, focus = true) {\n const model = this.editor.getModel();\n const currentText = model.getValue();\n if (currentText) {\n model.setValue(`${currentText}\\n${text}`);\n } else {\n model.setValue(`${text}`);\n }\n\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n\n this.editor.setPosition({ lineNumber: lastLine, column });\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n updateDimensions() {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus() {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind() {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language) {\n if (this.editorComponent.current) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render() {\n const {\n error,\n isLoaded,\n isLoading,\n session,\n sessionLanguage,\n settings,\n } = this.props;\n const { model } = this.state;\n const errorMessage = error ? `Unable to open document. ${error}` : null;\n const editorLanguage = settings ? settings.language : null;\n const completionProviderEnabled =\n model && session && editorLanguage === sessionLanguage;\n\n return (\n <>\n {(error || isLoading) && (\n <div className=\"h-100 w-100 position-relative\">\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n />\n </div>\n )}\n\n {isLoaded && (\n <div className=\"h-100 w-100 script-editor\">\n {settings && (\n <>\n <Editor\n ref={this.editorComponent}\n settings={settings}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n {completionProviderEnabled && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nScriptEditor.propTypes = {\n error: PropTypes.shape({ message: PropTypes.string }),\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n focusOnMount: PropTypes.bool,\n onChange: PropTypes.func,\n onRunCommand: PropTypes.func.isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n settings: PropTypes.shape({\n language: PropTypes.string,\n value: PropTypes.string,\n }),\n};\n\nScriptEditor.defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: () => {},\n session: null,\n sessionLanguage: null,\n settings: null,\n};\n\nexport default ScriptEditor;\n"],"file":"ScriptEditor.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/console",
3
- "version": "0.11.2-package-directory.0+c1cc3fb",
3
+ "version": "0.11.3-beta.1+afb40f2",
4
4
  "description": "Deephaven Console",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -14,7 +14,7 @@
14
14
  "source": "src/index.js",
15
15
  "types": "dist/index.d.ts",
16
16
  "engines": {
17
- "node": ">=10"
17
+ "node": ">=16"
18
18
  },
19
19
  "scripts": {
20
20
  "build": "cross-env NODE_ENV=production run-p build:*",
@@ -30,11 +30,11 @@
30
30
  "start": "cross-env NODE_ENV=development npm run watch"
31
31
  },
32
32
  "dependencies": {
33
- "@deephaven/icons": "^0.11.2-package-directory.0+c1cc3fb",
34
- "@deephaven/jsapi-shim": "^0.11.2-package-directory.0+c1cc3fb",
35
- "@deephaven/storage": "^0.11.2-package-directory.0+c1cc3fb",
36
- "@deephaven/utils": "^0.11.2-package-directory.0+c1cc3fb",
37
- "@fortawesome/react-fontawesome": "^0.1.12",
33
+ "@deephaven/icons": "^0.11.3-beta.1+afb40f2",
34
+ "@deephaven/jsapi-shim": "^0.11.3-beta.1+afb40f2",
35
+ "@deephaven/storage": "^0.11.3-beta.1+afb40f2",
36
+ "@deephaven/utils": "^0.11.3-beta.1+afb40f2",
37
+ "@fortawesome/react-fontawesome": "^0.1.15",
38
38
  "classnames": "^2.3.1",
39
39
  "jszip": "3.2.2",
40
40
  "lodash.debounce": "^4.0.8",
@@ -54,19 +54,19 @@
54
54
  },
55
55
  "devDependencies": {
56
56
  "@babel/cli": "^7.16.0",
57
- "@deephaven/components": "^0.11.2-package-directory.0+c1cc3fb",
58
- "@deephaven/log": "^0.11.2-package-directory.0+c1cc3fb",
59
- "@deephaven/mocks": "^0.11.2-package-directory.0+c1cc3fb",
60
- "@deephaven/tsconfig": "^0.11.2-package-directory.0+c1cc3fb",
57
+ "@deephaven/components": "^0.11.3-beta.1+afb40f2",
58
+ "@deephaven/log": "^0.11.3-beta.1+afb40f2",
59
+ "@deephaven/mocks": "^0.11.3-beta.1+afb40f2",
60
+ "@deephaven/tsconfig": "^0.11.3-beta.1+afb40f2",
61
61
  "@types/react": "^17.0.2",
62
- "@types/react-dom": "^17.0.2",
62
+ "@types/react-dom": "^17.0.9",
63
63
  "cross-env": "^7.0.2",
64
64
  "mini-css-extract-plugin": "^1.6.0",
65
65
  "npm-run-all": "^4.1.5",
66
66
  "react": "^17.0.2",
67
67
  "react-dom": "^17.0.2",
68
68
  "rimraf": "^3.0.2",
69
- "sass": "1.32.13"
69
+ "sass": "^1.39.0"
70
70
  },
71
71
  "files": [
72
72
  "dist"
@@ -77,5 +77,5 @@
77
77
  "publishConfig": {
78
78
  "access": "public"
79
79
  },
80
- "gitHead": "c1cc3fb15b49882e1325491308431bbf44a061e1"
80
+ "gitHead": "afb40f2b83cf4d2a5a9af464c8d581f9c10a72f3"
81
81
  }