@deephaven/console 0.6.1-alpha.5 → 0.6.1-markdownnotebooks.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ConsoleInput.d.ts +1 -1
- package/dist/ConsoleInput.js +1 -1
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/common/Code.js +1 -1
- package/dist/common/Code.js.map +1 -1
- package/dist/log/LogView.d.ts +1 -1
- package/dist/log/LogView.js +1 -1
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.d.ts +1 -1
- package/dist/monaco/MonacoCompletionProvider.js +1 -1
- package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.d.ts +1 -1
- package/dist/monaco/MonacoUtils.js +51 -51
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/notebook/Editor.d.ts +1 -1
- package/dist/notebook/Editor.js +1 -1
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.js +1 -1
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/monaco/MonacoUtils.js"],"names":["monaco","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"],"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 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\nexport default MonacoUtils;\n"],"file":"MonacoUtils.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/monaco/MonacoUtils.js"],"names":["monaco","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"],"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';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp';\nimport 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect';\nimport 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations';\nimport 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard';\nimport 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions';\nimport 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController';\nimport 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions';\nimport 'monaco-editor/esm/vs/editor/contrib/comment/comment';\nimport 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu';\nimport 'monaco-editor/esm/vs/editor/browser/controller/coreCommands';\nimport 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo';\nimport 'monaco-editor/esm/vs/editor/contrib/dnd/dnd';\nimport 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols';\nimport 'monaco-editor/esm/vs/editor/contrib/find/findController';\nimport 'monaco-editor/esm/vs/editor/contrib/folding/folding';\nimport 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom';\nimport 'monaco-editor/esm/vs/editor/contrib/format/formatActions';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition';\nimport 'monaco-editor/esm/vs/editor/contrib/hover/hover';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard';\nimport 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace';\nimport 'monaco-editor/esm/vs/editor/contrib/indentation/indentation';\nimport 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController';\nimport 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens';\nimport 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations';\nimport 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing';\nimport 'monaco-editor/esm/vs/editor/contrib/links/links';\nimport 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor';\nimport 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch';\nimport 'monaco-editor/esm/vs/editor/contrib/rename/rename';\nimport 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect';\nimport 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2';\nimport 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast';\nimport 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose';\nimport 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators';\nimport 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens';\nimport 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter';\nimport 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations';\nimport 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations';\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\nexport default MonacoUtils;\n"],"file":"MonacoUtils.js"}
|
|
@@ -29,6 +29,6 @@ declare namespace Editor {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
import React from "react";
|
|
32
|
-
import * as monaco from "monaco-editor/esm/vs/editor/editor.api
|
|
32
|
+
import * as monaco from "monaco-editor/esm/vs/editor/editor.api";
|
|
33
33
|
import PropTypes from "prop-types";
|
|
34
34
|
//# sourceMappingURL=Editor.d.ts.map
|
package/dist/notebook/Editor.js
CHANGED
|
@@ -10,7 +10,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
10
10
|
import React, { Component } from 'react';
|
|
11
11
|
import PropTypes from 'prop-types';
|
|
12
12
|
import classNames from 'classnames';
|
|
13
|
-
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api
|
|
13
|
+
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
|
|
14
14
|
import MonacoUtils from "../monaco/MonacoUtils.js";
|
|
15
15
|
|
|
16
16
|
class Editor extends Component {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/notebook/Editor.jsx"],"names":["React","Component","PropTypes","classNames","monaco","MonacoUtils","Editor","constructor","props","handleResize","bind","container","editor","state","componentDidMount","initEditor","window","addEventListener","componentWillUnmount","removeEventListener","destroyEditor","setLanguage","language","setModelLanguage","getModel","updateDimensions","toggleFind","focus","trigger","layout","onEditorInitialized","settings","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineNumbersMinChars","minimap","enabled","scrollBeyondLastLine","tabCompletion","value","wordWrap","create","addAction","id","label","keybindings","KeyMod","CtrlCmd","KeyCode","KEY_F","precondition","keybindingContext","contextMenuGroupId","contextMenuOrder","run","removeConflictingKeybindings","onEditorWillDestroy","dispose","render","className","propTypes","string","func","shape","defaultProps"],"mappings":";;;;;;AAAA;AACA;AACA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAO,KAAKC,MAAZ,MAAwB,
|
|
1
|
+
{"version":3,"sources":["../../src/notebook/Editor.jsx"],"names":["React","Component","PropTypes","classNames","monaco","MonacoUtils","Editor","constructor","props","handleResize","bind","container","editor","state","componentDidMount","initEditor","window","addEventListener","componentWillUnmount","removeEventListener","destroyEditor","setLanguage","language","setModelLanguage","getModel","updateDimensions","toggleFind","focus","trigger","layout","onEditorInitialized","settings","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineNumbersMinChars","minimap","enabled","scrollBeyondLastLine","tabCompletion","value","wordWrap","create","addAction","id","label","keybindings","KeyMod","CtrlCmd","KeyCode","KEY_F","precondition","keybindingContext","contextMenuGroupId","contextMenuOrder","run","removeConflictingKeybindings","onEditorWillDestroy","dispose","render","className","propTypes","string","func","shape","defaultProps"],"mappings":"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","sourcesContent":["/**\n * Editor editor for large blocks of code\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nimport MonacoUtils from '../monaco/MonacoUtils';\n\nclass Editor extends Component {\n constructor(props) {\n super(props);\n\n this.handleResize = this.handleResize.bind(this);\n\n this.container = null;\n this.editor = null;\n\n this.state = {};\n }\n\n componentDidMount() {\n this.initEditor();\n\n window.addEventListener('resize', this.handleResize);\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize);\n\n this.destroyEditor();\n }\n\n setLanguage(language) {\n if (this.editor) {\n monaco.editor.setModelLanguage(this.editor.getModel(), language);\n }\n }\n\n handleResize() {\n this.updateDimensions();\n }\n\n toggleFind() {\n if (this.editor) {\n // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.\n // As a workaround, just focus the editor before triggering the action\n // https://github.com/microsoft/monaco-editor/issues/2355\n this.editor.focus();\n this.editor.trigger('toggleFind', 'actions.find');\n }\n }\n\n updateDimensions() {\n this.editor.layout();\n }\n\n initEditor() {\n const { onEditorInitialized } = this.props;\n let { settings } = this.props;\n settings = {\n copyWithSyntaxHighlighting: 'false',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: `python`,\n lineNumbersMinChars: 3,\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n tabCompletion: 'on',\n value: '',\n wordWrap: 'off',\n ...settings,\n };\n this.editor = monaco.editor.create(this.container, settings);\n this.editor.addAction({\n id: 'find',\n label: 'Find',\n keybindings: [\n // eslint-disable-next-line no-bitwise\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_F,\n ],\n precondition: null,\n keybindingContext: null,\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.0,\n\n run: () => {\n this.toggleFind();\n return null;\n },\n });\n this.editor.layout();\n MonacoUtils.removeConflictingKeybindings(this.editor);\n\n onEditorInitialized(this.editor);\n }\n\n destroyEditor() {\n const { onEditorWillDestroy } = this.props;\n onEditorWillDestroy(this.editor);\n this.editor.dispose();\n this.editor = null;\n }\n\n render() {\n const { className } = this.props;\n return (\n <div\n className={classNames('editor-container', className)}\n ref={container => {\n this.container = container;\n }}\n />\n );\n }\n}\n\nEditor.propTypes = {\n className: PropTypes.string,\n onEditorInitialized: PropTypes.func,\n onEditorWillDestroy: PropTypes.func,\n settings: PropTypes.shape({}),\n};\n\nEditor.defaultProps = {\n className: 'fill-parent-absolute',\n onEditorInitialized: () => {},\n onEditorWillDestroy: () => {},\n settings: {},\n};\n\nexport default Editor;\n"],"file":"Editor.js"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import React, { Component } from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api
|
|
6
|
+
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
|
|
7
7
|
import { LoadingOverlay } from '@deephaven/components';
|
|
8
8
|
import Log from '@deephaven/log';
|
|
9
9
|
import Editor from "./Editor.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/notebook/ScriptEditor.jsx"],"names":["React","Component","PropTypes","monaco","LoadingOverlay","Log","Editor","MonacoCompletionProvider","MonacoUtils","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","contextActionCleanups","completionCleanup","editor","editorComponent","createRef","state","model","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","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","KeyMod","Alt","KeyCode","KEY_R","precondition","keybindingContext","contextMenuGroupId","contextMenuOrder","run","Shift","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":"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","sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport { LoadingOverlay } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\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\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 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 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 // eslint-disable-next-line no-bitwise\n keybindings: [monaco.KeyMod.Alt | monaco.KeyCode.KEY_R],\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 // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Alt | monaco.KeyMod.Shift | monaco.KeyCode.KEY_R,\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 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","monaco","LoadingOverlay","Log","Editor","MonacoCompletionProvider","MonacoUtils","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","contextActionCleanups","completionCleanup","editor","editorComponent","createRef","state","model","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","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","KeyMod","Alt","KeyCode","KEY_R","precondition","keybindingContext","contextMenuGroupId","contextMenuOrder","run","Shift","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":"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","sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nimport { LoadingOverlay } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\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\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 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 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 // eslint-disable-next-line no-bitwise\n keybindings: [monaco.KeyMod.Alt | monaco.KeyCode.KEY_R],\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 // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Alt | monaco.KeyMod.Shift | monaco.KeyCode.KEY_R,\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 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"}
|