@deephaven/console 0.15.1-beta.2 → 0.15.2-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Console.d.ts +129 -121
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +98 -99
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.d.ts +47 -43
- package/dist/ConsoleInput.d.ts.map +1 -1
- package/dist/ConsoleInput.js +111 -73
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleMenu.d.ts +24 -22
- package/dist/ConsoleMenu.d.ts.map +1 -1
- package/dist/ConsoleMenu.js +7 -12
- package/dist/ConsoleMenu.js.map +1 -1
- package/dist/ConsolePropTypes.d.ts +2 -2
- package/dist/ConsolePropTypes.d.ts.map +1 -1
- package/dist/ConsolePropTypes.js.map +1 -1
- package/dist/ConsoleStatusBar.d.ts +26 -29
- package/dist/ConsoleStatusBar.d.ts.map +1 -1
- package/dist/ConsoleStatusBar.js +11 -12
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/StoragePropTypes.d.ts +2 -2
- package/dist/StoragePropTypes.d.ts.map +1 -1
- package/dist/StoragePropTypes.js.map +1 -1
- package/dist/command-history/CommandHistory.d.ts +52 -77
- package/dist/command-history/CommandHistory.d.ts.map +1 -1
- package/dist/command-history/CommandHistory.js +12 -14
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.d.ts +11 -19
- package/dist/command-history/CommandHistoryActions.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryActions.js +4 -19
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.d.ts +15 -21
- package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItem.js +1 -10
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.d.ts +34 -31
- package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js +28 -36
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryTypes.d.ts +19 -0
- package/dist/command-history/CommandHistoryTypes.d.ts.map +1 -0
- package/dist/command-history/CommandHistoryTypes.js +2 -0
- package/dist/command-history/CommandHistoryTypes.js.map +1 -0
- package/dist/command-history/index.d.ts +5 -5
- package/dist/command-history/index.d.ts.map +1 -1
- package/dist/command-history/index.js.map +1 -1
- package/dist/common/Code.d.ts +10 -11
- package/dist/common/Code.d.ts.map +1 -1
- package/dist/common/Code.js +5 -5
- package/dist/common/Code.js.map +1 -1
- package/dist/common/ConsoleUtils.d.ts +20 -8
- package/dist/common/ConsoleUtils.d.ts.map +1 -1
- package/dist/common/ConsoleUtils.js +34 -10
- package/dist/common/ConsoleUtils.js.map +1 -1
- package/dist/console-history/ConsoleHistory.d.ts +19 -18
- package/dist/console-history/ConsoleHistory.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistory.js +5 -9
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.d.ts +21 -44
- package/dist/console-history/ConsoleHistoryItem.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js +12 -28
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.d.ts +13 -9
- package/dist/console-history/ConsoleHistoryItemResult.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.d.ts +25 -21
- package/dist/console-history/ConsoleHistoryResultErrorMessage.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +15 -9
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.d.ts +21 -17
- package/dist/console-history/ConsoleHistoryResultInProgress.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js +12 -10
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/console-history/ConsoleHistoryTypes.d.ts +19 -0
- package/dist/console-history/ConsoleHistoryTypes.d.ts.map +1 -0
- package/dist/console-history/ConsoleHistoryTypes.js +2 -0
- package/dist/console-history/ConsoleHistoryTypes.js.map +1 -0
- package/dist/console-history/index.d.ts +5 -5
- package/dist/console-history/index.d.ts.map +1 -1
- package/dist/console-history/index.js.map +1 -1
- package/dist/csv/CsvFormats.d.ts +13 -12
- package/dist/csv/CsvFormats.d.ts.map +1 -1
- package/dist/csv/CsvFormats.js +8 -8
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.d.ts +46 -38
- package/dist/csv/CsvInputBar.d.ts.map +1 -1
- package/dist/csv/CsvInputBar.js +15 -23
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.d.ts +40 -40
- package/dist/csv/CsvOverlay.d.ts.map +1 -1
- package/dist/csv/CsvOverlay.js +38 -29
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.d.ts +44 -46
- package/dist/csv/CsvParser.d.ts.map +1 -1
- package/dist/csv/CsvParser.js +53 -8
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.d.ts +32 -27
- package/dist/csv/CsvTypeParser.d.ts.map +1 -1
- package/dist/csv/CsvTypeParser.js +42 -8
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/NewTableColumnTypes.d.ts +1 -1
- package/dist/csv/NewTableColumnTypes.d.ts.map +1 -1
- package/dist/csv/NewTableColumnTypes.js.map +1 -1
- package/dist/declaration.d.js +2 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/index.d.ts +14 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/log/LogLevel.d.ts +1 -1
- package/dist/log/LogLevel.d.ts.map +1 -1
- package/dist/log/LogLevel.js.map +1 -1
- package/dist/log/LogLevelMenuItem.d.ts +11 -12
- package/dist/log/LogLevelMenuItem.d.ts.map +1 -1
- package/dist/log/LogLevelMenuItem.js +0 -6
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.d.ts +40 -47
- package/dist/log/LogView.d.ts.map +1 -1
- package/dist/log/LogView.js +65 -29
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.d.ts +19 -19
- package/dist/monaco/MonacoCompletionProvider.d.ts.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.js +11 -15
- package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.d.ts +77 -20
- package/dist/monaco/MonacoUtils.d.ts.map +1 -1
- package/dist/monaco/MonacoUtils.js +32 -24
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/index.d.ts +3 -2
- package/dist/monaco/index.d.ts.map +1 -1
- package/dist/monaco/index.js.map +1 -1
- package/dist/monaco/lang/Language.d.ts +7 -0
- package/dist/monaco/lang/Language.d.ts.map +1 -0
- package/dist/monaco/lang/Language.js +2 -0
- package/dist/monaco/lang/Language.js.map +1 -0
- package/dist/monaco/lang/db.d.ts +3 -93
- package/dist/monaco/lang/db.d.ts.map +1 -1
- package/dist/monaco/lang/db.js +18 -3
- package/dist/monaco/lang/db.js.map +1 -1
- package/dist/monaco/lang/groovy.d.ts +3 -146
- package/dist/monaco/lang/groovy.d.ts.map +1 -1
- package/dist/monaco/lang/groovy.js +15 -2
- package/dist/monaco/lang/groovy.js.map +1 -1
- package/dist/monaco/lang/log.d.ts +3 -40
- package/dist/monaco/lang/log.d.ts.map +1 -1
- package/dist/monaco/lang/log.js +2 -1
- package/dist/monaco/lang/log.js.map +1 -1
- package/dist/monaco/lang/python.d.ts +3 -154
- package/dist/monaco/lang/python.d.ts.map +1 -1
- package/dist/monaco/lang/python.js +15 -2
- package/dist/monaco/lang/python.js.map +1 -1
- package/dist/monaco/lang/scala.d.ts +3 -140
- package/dist/monaco/lang/scala.d.ts.map +1 -1
- package/dist/monaco/lang/scala.js +10 -3
- package/dist/monaco/lang/scala.js.map +1 -1
- package/dist/notebook/Editor.d.ts +26 -27
- package/dist/notebook/Editor.d.ts.map +1 -1
- package/dist/notebook/Editor.js +23 -19
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.d.ts +54 -51
- package/dist/notebook/ScriptEditor.d.ts.map +1 -1
- package/dist/notebook/ScriptEditor.js +45 -48
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.d.ts +15 -10
- package/dist/notebook/ScriptEditorUtils.d.ts.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +7 -7
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/package.json +12 -11
package/dist/log/LogView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/log/LogView.jsx"],"names":["React","PureComponent","FontAwesomeIcon","DropdownMenu","Tooltip","vsGear","dhTrashUndo","PropTypes","APIPropTypes","monaco","ConsoleUtils","LogLevel","LogLevelMenuItem","LogView","getLogText","logItem","date","Date","micros","timestamp","formatTimestamp","logLevel","message","constructor","props","handleClearClick","bind","handleFlushTimeout","handleLogMessage","handleMenuItemClick","handleResetClick","handleResize","handleToggleAllClick","cancelListener","editor","editorContainer","logLevelMenuItems","flushTimer","bufferedMessages","messages","state","shownLogLevels","componentDidMount","resetLogLevels","initMonaco","startListening","window","addEventListener","componentDidUpdate","prevProps","prevState","updateDimensions","refreshLogText","session","stopListening","clearLogs","componentWillUnmount","stopFlushTimer","destroyMonaco","removeEventListener","getMenuActions","actions","push","menuElement","group","order","i","AllLogLevels","on","title","element","length","isEnabled","DefaultLogLevels","indexOf","setState","onLogMessage","create","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","language","lineDecorationsWidth","lineNumbers","lineNumbersMinChars","minimap","enabled","readOnly","renderLineHighlight","scrollBeyondLastLine","value","wordWrap","addCommand","KeyCode","Escape","KeyMod","Shift","setPosition","getPosition","dispose","triggerFindWidget","focus","trigger","toggleAll","isAllEnabled","updatedLogLevels","toggleLogLevel","updateLogLevels","appendLogText","text","model","getModel","line","getLineCount","column","getLineLength","isBottomVisible","edits","range","startLineNumber","startColumn","endLineNumber","endColumn","forceMoveMarkers","applyEdits","revealLine","truncateLogIfNecessary","logText","charAt","trimRight","setValue","maxLogSize","splice","truncateSize","scrollToBottom","isLineVisible","visibleRanges","getVisibleRanges","isLogItemVisible","flush","queue","setTimeout","bufferTimeout","clearTimeout","layout","render","popperOptions","placement","STDOUT","ERROR","FATAL","STDERR","WARN","INFO","DEBUG","TRACE","propTypes","IdeSession","isRequired"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DropdownMenu, Tooltip } from '@deephaven/components';\nimport { vsGear, dhTrashUndo } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport ConsoleUtils from '../common/ConsoleUtils';\nimport LogLevel from './LogLevel';\nimport './LogView.scss';\nimport LogLevelMenuItem from './LogLevelMenuItem';\n\n/**\n * Log view contents. Uses a monaco editor to display/search the contents of the log.\n */\nclass LogView extends PureComponent {\n static DefaultLogLevels = [\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n ];\n\n static AllLogLevels = [\n LogLevel.INFO,\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n LogLevel.DEBUG,\n LogLevel.TRACE,\n ];\n\n /** ms to buffer log messages before processing them */\n static bufferTimeout = 16;\n\n /** Maximum number of messages to store in the log */\n static maxLogSize = 131072;\n\n static truncateSize = 65536;\n\n static getLogText(logItem) {\n const date = new Date(logItem.micros / 1000);\n const timestamp = ConsoleUtils.formatTimestamp(date);\n return `${timestamp} ${logItem.logLevel} ${logItem.message}`;\n }\n\n constructor(props) {\n super(props);\n\n this.handleClearClick = this.handleClearClick.bind(this);\n this.handleFlushTimeout = this.handleFlushTimeout.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleResetClick = this.handleResetClick.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleToggleAllClick = this.handleToggleAllClick.bind(this);\n\n this.cancelListener = null;\n this.editor = null;\n this.editorContainer = null;\n this.logLevelMenuItems = {};\n this.flushTimer = null;\n\n this.bufferedMessages = [];\n this.messages = [];\n\n this.state = {\n shownLogLevels: {},\n };\n }\n\n componentDidMount() {\n this.resetLogLevels();\n this.initMonaco();\n this.startListening();\n\n window.addEventListener('resize', this.handleResize);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.updateDimensions();\n\n const { shownLogLevels } = this.state;\n if (prevState.shownLogLevels !== shownLogLevels) {\n this.refreshLogText();\n }\n\n const { session } = this.props;\n if (prevProps.session !== session) {\n this.stopListening();\n this.startListening();\n // clear logs when starting a new console\n this.clearLogs();\n }\n }\n\n componentWillUnmount() {\n this.stopFlushTimer();\n this.stopListening();\n this.destroyMonaco();\n\n window.removeEventListener('resize', this.handleResize);\n }\n\n getMenuActions(shownLogLevels) {\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"log-level-menu-title\">Display Log Levels</div>\n ),\n group: 1,\n order: 10,\n });\n\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const on =\n shownLogLevels[logLevel] != null ? shownLogLevels[logLevel] : false;\n actions.push({\n title: logLevel,\n group: 1,\n order: i + 100,\n\n menuElement: (\n <LogLevelMenuItem\n logLevel={logLevel}\n on={on}\n onClick={this.handleMenuItemClick}\n ref={element => {\n this.logLevelMenuItems[logLevel] = element;\n }}\n />\n ),\n });\n }\n\n actions.push({\n group: 1,\n order: 1000,\n menuElement: (\n <div className=\"log-level-menu-controls\">\n <button\n type=\"button\"\n className=\"btn btn-link log-level-toggle-all\"\n onClick={this.handleToggleAllClick}\n >\n Toggle All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleResetClick}\n >\n Reset\n </button>\n </div>\n ),\n });\n\n return actions;\n }\n\n resetLogLevels() {\n const shownLogLevels = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const isEnabled = LogView.DefaultLogLevels.indexOf(logLevel) >= 0;\n shownLogLevels[logLevel] = isEnabled;\n }\n\n this.setState({ shownLogLevels });\n }\n\n startListening() {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n stopListening() {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = null;\n }\n }\n\n initMonaco() {\n this.editor = monaco.editor.create(this.editorContainer, {\n copyWithSyntaxHighlighting: 'false',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'log',\n lineDecorationsWidth: 0,\n lineNumbers: '',\n lineNumbersMinChars: 0,\n minimap: { enabled: false },\n readOnly: true,\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n value: '',\n wordWrap: 'on',\n });\n\n // When find widget is open, escape key closes it.\n // Instead, capture it and do nothing. Same for shift-escape.\n this.editor.addCommand(monaco.KeyCode.Escape, () => {});\n this.editor.addCommand(\n // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Shift | monaco.KeyCode.Escape,\n () => {}\n );\n\n // Restore regular escape to clear selection, when editorText has focus.\n this.editor.addCommand(\n monaco.KeyCode.Escape,\n () => {\n this.editor.setPosition(this.editor.getPosition());\n },\n 'findWidgetVisible && editorTextFocus'\n );\n\n this.editor.addCommand(\n // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Shift | monaco.KeyCode.Escape,\n () => {\n this.editor.setPosition(this.editor.getPosition());\n },\n 'findWidgetVisible && editorTextFocus'\n );\n }\n\n destroyMonaco() {\n if (this.editor) {\n this.editor.dispose();\n this.editor = null;\n }\n }\n\n triggerFindWidget() {\n // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.\n // As a workaround, just focus the editor before triggering the action\n // https://github.com/microsoft/monaco-editor/issues/2355\n this.editor.focus();\n this.editor.trigger('keyboard', 'actions.find');\n }\n\n toggleAll() {\n const { shownLogLevels } = this.state;\n let isAllEnabled = true;\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n if (!shownLogLevels[logLevel]) {\n isAllEnabled = false;\n break;\n }\n }\n\n if (isAllEnabled) {\n this.setState({ shownLogLevels: {} });\n } else {\n const updatedLogLevels = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n updatedLogLevels[logLevel] = true;\n }\n this.setState({ shownLogLevels: updatedLogLevels });\n }\n }\n\n toggleLogLevel(logLevel) {\n const { shownLogLevels } = this.state;\n const isEnabled = shownLogLevels[logLevel];\n const updatedLogLevels = {};\n updatedLogLevels[logLevel] = !isEnabled;\n this.updateLogLevels(updatedLogLevels);\n }\n\n updateLogLevels(updatedLogLevels) {\n let { shownLogLevels } = this.state;\n shownLogLevels = { ...shownLogLevels, ...updatedLogLevels };\n this.setState({ shownLogLevels });\n }\n\n appendLogText(text) {\n if (!this.editor) {\n return;\n }\n\n const model = this.editor.getModel();\n let line = model.getLineCount();\n let column = model.getLineLength(line);\n const isBottomVisible = this.isBottomVisible();\n\n const edits = [];\n if (column > 0) {\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column + 1,\n endLineNumber: line,\n endColumn: column + 1,\n },\n text: '\\n',\n forceMoveMarkers: true,\n });\n line += 1;\n column = 0;\n }\n\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column,\n endLineNumber: line,\n endColumn: column,\n },\n text,\n forceMoveMarkers: true,\n });\n\n model.applyEdits(edits);\n\n if (isBottomVisible) {\n this.editor.revealLine(model.getLineCount(), 1);\n }\n }\n\n /**\n * Refresh the contents of the log component with the updated filter text\n */\n refreshLogText() {\n if (!this.editor) {\n return;\n }\n\n this.truncateLogIfNecessary();\n\n const { shownLogLevels } = this.state;\n const isBottomVisible = this.isBottomVisible();\n\n let text = '';\n for (let i = 0; i < this.messages.length; i += 1) {\n const message = this.messages[i];\n if (shownLogLevels[message.logLevel]) {\n const logText = LogView.getLogText(message);\n if (logText.length > 0) {\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n }\n }\n text = text.trimRight();\n\n this.editor.setValue(text);\n\n if (isBottomVisible) {\n const line = this.editor.getModel().getLineCount();\n this.editor.revealLine(line, 1);\n }\n\n this.stopFlushTimer();\n this.bufferedMessages = [];\n }\n\n truncateLogIfNecessary() {\n if (this.messages.length > LogView.maxLogSize) {\n this.messages = this.messages.splice(\n this.messages.length - LogView.truncateSize\n );\n }\n }\n\n scrollToBottom() {\n if (!this.editor) {\n return;\n }\n\n const line = this.editor.getModel().getLineCount();\n this.editor.revealLine(line, 1);\n }\n\n isBottomVisible() {\n if (!this.editor) {\n return true;\n }\n\n const model = this.editor.getModel();\n const line = model.getLineCount();\n\n return this.isLineVisible(line);\n }\n\n isLineVisible(line) {\n const visibleRanges = this.editor.getVisibleRanges();\n if (visibleRanges == null || visibleRanges.length === 0) {\n return false;\n }\n\n for (let i = 0; i < visibleRanges.length; i += 1) {\n const range = visibleRanges[i];\n if (range.startLineNumber <= line && line <= range.endLineNumber) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Checks if the given log message is visible with the current filters */\n isLogItemVisible(message) {\n const { shownLogLevels } = this.state;\n return shownLogLevels[message.logLevel];\n }\n\n flush() {\n let text = '';\n for (let i = 0; i < this.bufferedMessages.length; i += 1) {\n const message = this.bufferedMessages[i];\n const logText = LogView.getLogText(message);\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n\n this.bufferedMessages = [];\n\n this.appendLogText(text);\n }\n\n queue(message) {\n this.bufferedMessages.push(message);\n if (this.bufferedMessages.length === 1) {\n this.flushTimer = setTimeout(\n this.handleFlushTimeout,\n LogView.bufferTimeout\n );\n }\n }\n\n stopFlushTimer() {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = null;\n }\n }\n\n updateDimensions() {\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n handleClearClick() {\n this.clearLogs();\n }\n\n clearLogs() {\n this.messages = [];\n this.refreshLogText();\n }\n\n handleFlushTimeout() {\n this.stopFlushTimer();\n this.flush();\n }\n\n handleLogMessage(message) {\n this.messages.push(message);\n\n if (this.editor && this.isLogItemVisible(message)) {\n this.queue(message);\n }\n }\n\n handleMenuItemClick(logLevel) {\n this.toggleLogLevel(logLevel);\n }\n\n handleResetClick() {\n this.resetLogLevels();\n }\n\n handleResize() {\n this.updateDimensions();\n }\n\n handleToggleAllClick() {\n this.toggleAll();\n }\n\n render() {\n const popperOptions = { placement: 'bottom-end' };\n const { shownLogLevels } = this.state;\n const actions = this.getMenuActions(shownLogLevels);\n return (\n <div className=\"log-pane h-100 w-100\">\n <div className=\"log-pane-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-clear-logs\"\n onClick={this.handleClearClick}\n >\n <FontAwesomeIcon icon={dhTrashUndo} />\n <Tooltip>Clear log</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-overflow\"\n >\n <FontAwesomeIcon icon={vsGear} />\n <Tooltip>Log Settings</Tooltip>\n <DropdownMenu\n actions={actions}\n popperClassName=\"log-level-menu-popper\"\n popperOptions={popperOptions}\n />\n </button>\n </div>\n <div\n className=\"log-pane-editor h-100 w-100\"\n ref={editorContainer => {\n this.editorContainer = editorContainer;\n }}\n />\n </div>\n );\n }\n}\n\nLogView.propTypes = {\n session: APIPropTypes.IdeSession.isRequired,\n};\n\nexport default LogView;\n"],"file":"LogView.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/log/LogView.tsx"],"names":["React","PureComponent","FontAwesomeIcon","DropdownMenu","Tooltip","vsGear","dhTrashUndo","assertNotNull","monaco","ConsoleUtils","LogLevel","LogLevelMenuItem","LogView","getLogText","logItem","date","Date","micros","timestamp","formatTimestamp","logLevel","message","constructor","props","handleClearClick","bind","handleFlushTimeout","handleLogMessage","handleMenuItemClick","handleResetClick","handleResize","handleToggleAllClick","logLevelMenuItems","editorContainer","bufferedMessages","messages","state","shownLogLevels","componentDidMount","resetLogLevels","initMonaco","startListening","window","addEventListener","componentDidUpdate","prevProps","prevState","updateDimensions","refreshLogText","session","stopListening","clearLogs","componentWillUnmount","stopFlushTimer","destroyMonaco","removeEventListener","getMenuActions","actions","push","menuElement","group","order","i","AllLogLevels","on","title","element","length","isEnabled","DefaultLogLevels","indexOf","setState","cancelListener","onLogMessage","undefined","editor","create","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","language","lineDecorationsWidth","lineNumbersMinChars","minimap","enabled","readOnly","renderLineHighlight","scrollBeyondLastLine","value","wordWrap","addCommand","KeyCode","Escape","KeyMod","Shift","position","getPosition","setPosition","dispose","triggerFindWidget","focus","trigger","toggleAll","isAllEnabled","updatedLogLevels","toggleLogLevel","updateLogLevels","appendLogText","text","model","getModel","line","getLineCount","column","getLineLength","isBottomVisible","edits","range","startLineNumber","startColumn","endLineNumber","endColumn","forceMoveMarkers","applyEdits","lineCount","revealLine","truncateLogIfNecessary","logText","charAt","trimRight","setValue","maxLogSize","splice","truncateSize","scrollToBottom","isLineVisible","visibleRanges","getVisibleRanges","isLogItemVisible","flush","queue","flushTimer","setTimeout","bufferTimeout","clearTimeout","layout","render","popperOptions","placement","STDOUT","ERROR","FATAL","STDERR","WARN","INFO","DEBUG","TRACE"],"mappings":"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","sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DropdownActions, DropdownMenu, Tooltip } from '@deephaven/components';\nimport { vsGear, dhTrashUndo } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\nimport { IdeSession, LogItem } from '@deephaven/jsapi-shim';\nimport { Placement } from 'popper.js';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport ConsoleUtils from '../common/ConsoleUtils';\nimport LogLevel from './LogLevel';\nimport './LogView.scss';\nimport LogLevelMenuItem from './LogLevelMenuItem';\n\ninterface LogViewProps {\n session: IdeSession;\n}\n\ninterface LogViewState {\n shownLogLevels: Record<string, boolean>;\n}\n/**\n * Log view contents. Uses a monaco editor to display/search the contents of the log.\n */\nclass LogView extends PureComponent<LogViewProps, LogViewState> {\n static DefaultLogLevels = [\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n ];\n\n static AllLogLevels = [\n LogLevel.INFO,\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n LogLevel.DEBUG,\n LogLevel.TRACE,\n ];\n\n /** ms to buffer log messages before processing them */\n static bufferTimeout = 16;\n\n /** Maximum number of messages to store in the log */\n static maxLogSize = 131072;\n\n static truncateSize = 65536;\n\n static getLogText(logItem: LogItem): string {\n const date = new Date(logItem.micros / 1000);\n const timestamp = ConsoleUtils.formatTimestamp(date);\n return `${timestamp} ${logItem.logLevel} ${logItem.message}`;\n }\n\n constructor(props: LogViewProps) {\n super(props);\n\n this.handleClearClick = this.handleClearClick.bind(this);\n this.handleFlushTimeout = this.handleFlushTimeout.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleResetClick = this.handleResetClick.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleToggleAllClick = this.handleToggleAllClick.bind(this);\n\n this.logLevelMenuItems = {};\n\n this.editorContainer = null;\n\n this.bufferedMessages = [];\n this.messages = [];\n\n this.state = {\n shownLogLevels: {},\n };\n }\n\n componentDidMount(): void {\n this.resetLogLevels();\n this.initMonaco();\n this.startListening();\n\n window.addEventListener('resize', this.handleResize);\n }\n\n componentDidUpdate(prevProps: LogViewProps, prevState: LogViewState): void {\n this.updateDimensions();\n\n const { shownLogLevels } = this.state;\n if (prevState.shownLogLevels !== shownLogLevels) {\n this.refreshLogText();\n }\n\n const { session } = this.props;\n if (prevProps.session !== session) {\n this.stopListening();\n this.startListening();\n // clear logs when starting a new console\n this.clearLogs();\n }\n }\n\n componentWillUnmount(): void {\n this.stopFlushTimer();\n this.stopListening();\n this.destroyMonaco();\n\n window.removeEventListener('resize', this.handleResize);\n }\n\n cancelListener?: () => void | null;\n\n editor?: monaco.editor.IStandaloneCodeEditor;\n\n editorContainer: HTMLDivElement | null;\n\n logLevelMenuItems: Record<string, LogLevelMenuItem>;\n\n flushTimer?: ReturnType<typeof setTimeout>;\n\n bufferedMessages: LogItem[];\n\n messages: LogItem[];\n\n getMenuActions(shownLogLevels: Record<string, boolean>): DropdownActions {\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"log-level-menu-title\">Display Log Levels</div>\n ),\n group: 1,\n order: 10,\n });\n\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const on =\n shownLogLevels[logLevel] != null ? shownLogLevels[logLevel] : false;\n actions.push({\n title: logLevel,\n group: 1,\n order: i + 100,\n\n menuElement: (\n <LogLevelMenuItem\n logLevel={logLevel}\n on={on}\n onClick={this.handleMenuItemClick}\n ref={element => {\n if (element != null) {\n this.logLevelMenuItems[logLevel] = element;\n }\n }}\n />\n ),\n });\n }\n\n actions.push({\n group: 1,\n order: 1000,\n menuElement: (\n <div className=\"log-level-menu-controls\">\n <button\n type=\"button\"\n className=\"btn btn-link log-level-toggle-all\"\n onClick={this.handleToggleAllClick}\n >\n Toggle All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleResetClick}\n >\n Reset\n </button>\n </div>\n ),\n });\n\n return actions;\n }\n\n resetLogLevels(): void {\n const shownLogLevels: Record<string, boolean> = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const isEnabled = LogView.DefaultLogLevels.indexOf(logLevel) >= 0;\n shownLogLevels[logLevel] = isEnabled;\n }\n\n this.setState({ shownLogLevels });\n }\n\n startListening(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n stopListening(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n initMonaco(): void {\n assertNotNull(this.editorContainer);\n this.editor = monaco.editor.create(this.editorContainer, {\n copyWithSyntaxHighlighting: false,\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'log',\n lineDecorationsWidth: 0,\n // I commented this out since '' is not a valid parameter for line Numbers\n // lineNumbers: '',\n lineNumbersMinChars: 0,\n minimap: { enabled: false },\n readOnly: true,\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n value: '',\n wordWrap: 'on',\n });\n\n // When find widget is open, escape key closes it.\n // Instead, capture it and do nothing. Same for shift-escape.\n this.editor.addCommand(monaco.KeyCode.Escape, () => undefined);\n this.editor.addCommand(\n // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Shift | monaco.KeyCode.Escape,\n () => undefined\n );\n\n // Restore regular escape to clear selection, when editorText has focus.\n this.editor.addCommand(\n monaco.KeyCode.Escape,\n () => {\n const position = this.editor?.getPosition();\n assertNotNull(position);\n this.editor?.setPosition(position);\n },\n 'findWidgetVisible && editorTextFocus'\n );\n\n this.editor.addCommand(\n // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Shift | monaco.KeyCode.Escape,\n () => {\n const position = this.editor?.getPosition();\n assertNotNull(position);\n this.editor?.setPosition(position);\n },\n 'findWidgetVisible && editorTextFocus'\n );\n }\n\n destroyMonaco(): void {\n if (this.editor) {\n this.editor.dispose();\n this.editor = undefined;\n }\n }\n\n triggerFindWidget(): void {\n // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.\n // As a workaround, just focus the editor before triggering the action\n // https://github.com/microsoft/monaco-editor/issues/2355\n this.editor?.focus();\n this.editor?.trigger('keyboard', 'actions.find', undefined);\n }\n\n toggleAll(): void {\n const { shownLogLevels } = this.state;\n let isAllEnabled = true;\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n if (!shownLogLevels[logLevel]) {\n isAllEnabled = false;\n break;\n }\n }\n\n if (isAllEnabled) {\n this.setState({ shownLogLevels: {} });\n } else {\n const updatedLogLevels: Record<string, boolean> = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n updatedLogLevels[logLevel] = true;\n }\n this.setState({ shownLogLevels: updatedLogLevels });\n }\n }\n\n toggleLogLevel(logLevel: string): void {\n const { shownLogLevels } = this.state;\n const isEnabled = shownLogLevels[logLevel];\n const updatedLogLevels: Record<string, boolean> = {};\n updatedLogLevels[logLevel] = !isEnabled;\n this.updateLogLevels(updatedLogLevels);\n }\n\n updateLogLevels(updatedLogLevels: Record<string, boolean>): void {\n let { shownLogLevels } = this.state;\n shownLogLevels = { ...shownLogLevels, ...updatedLogLevels };\n this.setState({ shownLogLevels });\n }\n\n appendLogText(text: string): void {\n if (!this.editor) {\n return;\n }\n\n const model = this.editor.getModel();\n let line = model?.getLineCount();\n assertNotNull(line);\n let column = model?.getLineLength(line);\n assertNotNull(column);\n const isBottomVisible = this.isBottomVisible();\n\n const edits = [];\n if (column > 0) {\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column + 1,\n endLineNumber: line,\n endColumn: column + 1,\n },\n text: '\\n',\n forceMoveMarkers: true,\n });\n line += 1;\n column = 0;\n }\n\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column,\n endLineNumber: line,\n endColumn: column,\n },\n text,\n forceMoveMarkers: true,\n });\n\n model?.applyEdits(edits);\n\n if (isBottomVisible) {\n const lineCount = model?.getLineCount();\n assertNotNull(lineCount);\n this.editor.revealLine(lineCount, 1);\n }\n }\n\n /**\n * Refresh the contents of the log component with the updated filter text\n */\n refreshLogText(): void {\n if (!this.editor) {\n return;\n }\n\n this.truncateLogIfNecessary();\n\n const { shownLogLevels } = this.state;\n const isBottomVisible = this.isBottomVisible();\n\n let text = '';\n for (let i = 0; i < this.messages.length; i += 1) {\n const message = this.messages[i];\n if (shownLogLevels[message.logLevel]) {\n const logText = LogView.getLogText(message);\n if (logText.length > 0) {\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n }\n }\n text = text.trimRight();\n\n this.editor.setValue(text);\n\n if (isBottomVisible) {\n const line = this.editor.getModel()?.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n\n this.stopFlushTimer();\n this.bufferedMessages = [];\n }\n\n truncateLogIfNecessary(): void {\n if (this.messages.length > LogView.maxLogSize) {\n this.messages = this.messages.splice(\n this.messages.length - LogView.truncateSize\n );\n }\n }\n\n scrollToBottom(): void {\n if (!this.editor) {\n return;\n }\n\n const line = this.editor?.getModel?.()?.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n\n isBottomVisible(): boolean {\n if (!this.editor) {\n return true;\n }\n\n const model = this.editor.getModel();\n const line = model?.getLineCount();\n\n assertNotNull(line);\n return this.isLineVisible(line);\n }\n\n isLineVisible(line: number): boolean {\n const visibleRanges = this.editor?.getVisibleRanges();\n if (visibleRanges == null || visibleRanges.length === 0) {\n return false;\n }\n\n for (let i = 0; i < visibleRanges.length; i += 1) {\n const range = visibleRanges[i];\n if (range.startLineNumber <= line && line <= range.endLineNumber) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Checks if the given log message is visible with the current filters */\n isLogItemVisible(message: LogItem): boolean {\n const { shownLogLevels } = this.state;\n return shownLogLevels[message.logLevel];\n }\n\n flush(): void {\n let text = '';\n for (let i = 0; i < this.bufferedMessages.length; i += 1) {\n const message = this.bufferedMessages[i];\n const logText = LogView.getLogText(message);\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n\n this.bufferedMessages = [];\n\n this.appendLogText(text);\n }\n\n queue(message: LogItem): void {\n this.bufferedMessages.push(message);\n if (this.bufferedMessages.length === 1) {\n this.flushTimer = setTimeout(\n this.handleFlushTimeout,\n LogView.bufferTimeout\n );\n }\n }\n\n stopFlushTimer(): void {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n }\n\n updateDimensions(): void {\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n handleClearClick(): void {\n this.clearLogs();\n }\n\n clearLogs(): void {\n this.messages = [];\n this.refreshLogText();\n }\n\n handleFlushTimeout(): void {\n this.stopFlushTimer();\n this.flush();\n }\n\n handleLogMessage(message: LogItem): void {\n this.messages.push(message);\n\n if (this.editor && this.isLogItemVisible(message)) {\n this.queue(message);\n }\n }\n\n handleMenuItemClick(logLevel: string): void {\n this.toggleLogLevel(logLevel);\n }\n\n handleResetClick(): void {\n this.resetLogLevels();\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n handleToggleAllClick(): void {\n this.toggleAll();\n }\n\n render(): ReactElement {\n const popperOptions = { placement: 'bottom-end' as Placement };\n const { shownLogLevels } = this.state;\n const actions = this.getMenuActions(shownLogLevels);\n return (\n <div className=\"log-pane h-100 w-100\">\n <div className=\"log-pane-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-clear-logs\"\n onClick={this.handleClearClick}\n >\n <FontAwesomeIcon icon={dhTrashUndo} />\n <Tooltip>Clear log</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-overflow\"\n >\n <FontAwesomeIcon icon={vsGear} />\n <Tooltip>Log Settings</Tooltip>\n <DropdownMenu\n actions={actions}\n popperClassName=\"log-level-menu-popper\"\n popperOptions={popperOptions}\n />\n </button>\n </div>\n <div\n className=\"log-pane-editor h-100 w-100\"\n ref={editorContainer => {\n this.editorContainer = editorContainer;\n }}\n />\n </div>\n );\n }\n}\n\nexport default LogView;\n"],"file":"LogView.js"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
export default MonacoCompletionProvider;
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
2
|
+
* Completion provider for a code session
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { PureComponent } from 'react';
|
|
5
|
+
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
|
|
6
|
+
import { IdeSession } from '@deephaven/jsapi-shim';
|
|
7
|
+
interface MonacoCompletionProviderProps {
|
|
8
|
+
model: monaco.editor.ITextModel;
|
|
9
|
+
session: IdeSession;
|
|
10
|
+
language: string;
|
|
9
11
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Registers a completion provider with monaco for the language and session provided.
|
|
14
|
+
*/
|
|
15
|
+
declare class MonacoCompletionProvider extends PureComponent<MonacoCompletionProviderProps, Record<string, never>> {
|
|
16
|
+
constructor(props: MonacoCompletionProviderProps);
|
|
17
|
+
componentDidMount(): void;
|
|
18
|
+
componentWillUnmount(): void;
|
|
19
|
+
registeredCompletionProvider?: monaco.IDisposable;
|
|
20
|
+
handleCompletionRequest(model: monaco.editor.ITextModel, position: monaco.Position, context: monaco.languages.CompletionContext): monaco.languages.ProviderResult<monaco.languages.CompletionList>;
|
|
21
|
+
render(): null;
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
import * as monaco from "monaco-editor/esm/vs/editor/editor.api.js";
|
|
23
|
-
import PropTypes from "prop-types";
|
|
23
|
+
export default MonacoCompletionProvider;
|
|
24
24
|
//# sourceMappingURL=MonacoCompletionProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonacoCompletionProvider.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoCompletionProvider.
|
|
1
|
+
{"version":3,"file":"MonacoCompletionProvider.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoCompletionProvider.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,2CAA2C,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD,UAAU,6BAA6B;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,cAAM,wBAAyB,SAAQ,aAAa,CAClD,6BAA6B,EAC7B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;gBACa,KAAK,EAAE,6BAA6B;IAMhD,iBAAiB,IAAI,IAAI;IAWzB,oBAAoB,IAAI,IAAI;IAI5B,4BAA4B,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAElD,uBAAuB,CACrB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAC1C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IA6EnE,MAAM,IAAI,IAAI;CAGf;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Completion provider for a code session
|
|
3
5
|
*/
|
|
4
6
|
import { PureComponent } from 'react';
|
|
5
|
-
import PropTypes from 'prop-types';
|
|
6
7
|
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
|
|
7
8
|
import Log from '@deephaven/log';
|
|
8
9
|
var log = Log.module('MonacoCompletionProvider');
|
|
10
|
+
|
|
9
11
|
/**
|
|
10
12
|
* Registers a completion provider with monaco for the language and session provided.
|
|
11
13
|
*/
|
|
12
|
-
|
|
13
14
|
class MonacoCompletionProvider extends PureComponent {
|
|
14
15
|
constructor(props) {
|
|
15
16
|
super(props);
|
|
17
|
+
|
|
18
|
+
_defineProperty(this, "registeredCompletionProvider", void 0);
|
|
19
|
+
|
|
16
20
|
this.handleCompletionRequest = this.handleCompletionRequest.bind(this);
|
|
17
|
-
this.registeredCompletionProvider = null;
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
componentDidMount() {
|
|
@@ -28,7 +31,9 @@ class MonacoCompletionProvider extends PureComponent {
|
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
componentWillUnmount() {
|
|
31
|
-
|
|
34
|
+
var _this$registeredCompl;
|
|
35
|
+
|
|
36
|
+
(_this$registeredCompl = this.registeredCompletionProvider) === null || _this$registeredCompl === void 0 ? void 0 : _this$registeredCompl.dispose();
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
handleCompletionRequest(model, position, context) {
|
|
@@ -55,7 +60,7 @@ class MonacoCompletionProvider extends PureComponent {
|
|
|
55
60
|
};
|
|
56
61
|
var completionItems = session.getCompletionItems(params);
|
|
57
62
|
log.debug('Completion items received: ', params, completionItems);
|
|
58
|
-
|
|
63
|
+
var monacoCompletionItems = completionItems.then(items => {
|
|
59
64
|
// Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects
|
|
60
65
|
// Need to remap the items here
|
|
61
66
|
var suggestions = items.map(item => {
|
|
@@ -105,7 +110,7 @@ class MonacoCompletionProvider extends PureComponent {
|
|
|
105
110
|
suggestions: []
|
|
106
111
|
};
|
|
107
112
|
});
|
|
108
|
-
return
|
|
113
|
+
return monacoCompletionItems;
|
|
109
114
|
}
|
|
110
115
|
|
|
111
116
|
render() {
|
|
@@ -114,14 +119,5 @@ class MonacoCompletionProvider extends PureComponent {
|
|
|
114
119
|
|
|
115
120
|
}
|
|
116
121
|
|
|
117
|
-
MonacoCompletionProvider.propTypes = {
|
|
118
|
-
model: PropTypes.shape({
|
|
119
|
-
uri: PropTypes.shape({})
|
|
120
|
-
}).isRequired,
|
|
121
|
-
session: PropTypes.shape({
|
|
122
|
-
getCompletionItems: PropTypes.func
|
|
123
|
-
}).isRequired,
|
|
124
|
-
language: PropTypes.string.isRequired
|
|
125
|
-
};
|
|
126
122
|
export default MonacoCompletionProvider;
|
|
127
123
|
//# sourceMappingURL=MonacoCompletionProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/monaco/MonacoCompletionProvider.
|
|
1
|
+
{"version":3,"sources":["../../src/monaco/MonacoCompletionProvider.tsx"],"names":["PureComponent","monaco","Log","log","module","MonacoCompletionProvider","constructor","props","handleCompletionRequest","bind","componentDidMount","language","registeredCompletionProvider","languages","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","componentWillUnmount","dispose","model","position","context","propModel","session","params","textDocument","uri","line","lineNumber","character","column","completionItems","getCompletionItems","debug","monacoCompletionItems","then","items","suggestions","map","item","label","kind","detail","documentation","sortText","filterText","textEdit","insertTextFormat","start","end","range","startLineNumber","startColumn","endLineNumber","endColumn","insertText","text","insertTextRules","incomplete","catch","error","render"],"mappings":"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","sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\n\nconst log = Log.module('MonacoCompletionProvider');\n\ninterface MonacoCompletionProviderProps {\n model: monaco.editor.ITextModel;\n session: IdeSession;\n language: string;\n}\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoCompletionProvider extends PureComponent<\n MonacoCompletionProviderProps,\n Record<string, never>\n> {\n constructor(props: MonacoCompletionProviderProps) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n }\n\n componentDidMount(): void {\n const { language } = this.props;\n this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(\n language,\n {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['\"', '.', \"'\", '(', '[', '{', ','],\n }\n );\n }\n\n componentWillUnmount(): void {\n this.registeredCompletionProvider?.dispose();\n }\n\n registeredCompletionProvider?: monaco.IDisposable;\n\n handleCompletionRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n context: monaco.languages.CompletionContext\n ): monaco.languages.ProviderResult<monaco.languages.CompletionList> {\n const { model: propModel, session } = this.props;\n if (model !== propModel) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n },\n // Yes, the Monaco API Position is different than the Position received by the LSP\n // Why? I do not know.\n position: {\n line: position.lineNumber - 1,\n character: position.column - 1,\n },\n context,\n };\n\n const completionItems = session.getCompletionItems(params);\n\n log.debug('Completion items received: ', params, completionItems);\n\n const monacoCompletionItems = completionItems\n .then(items => {\n // Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects\n // Need to remap the items here\n const suggestions = items.map(item => {\n const {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat,\n } = item;\n\n const { start, end } = textEdit.range;\n\n // Monaco expects the columns/ranges to start at 1.\n const range = {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n return {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range,\n };\n });\n\n return {\n incomplete: true,\n suggestions,\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return monacoCompletionItems;\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default MonacoCompletionProvider;\n"],"file":"MonacoCompletionProvider.js"}
|
|
@@ -1,42 +1,99 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Exports a function for initializing monaco with the deephaven theme/config
|
|
3
|
+
*/
|
|
4
|
+
import { Shortcut } from '@deephaven/components';
|
|
5
|
+
import { IdeSession } from '@deephaven/jsapi-shim';
|
|
6
|
+
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
|
|
7
|
+
import 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';
|
|
8
|
+
import 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';
|
|
9
|
+
import 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js';
|
|
10
|
+
import 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';
|
|
11
|
+
import 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';
|
|
12
|
+
import 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';
|
|
13
|
+
import 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';
|
|
14
|
+
import 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions.js';
|
|
15
|
+
import 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';
|
|
16
|
+
import 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js';
|
|
17
|
+
import 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';
|
|
18
|
+
import 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js';
|
|
19
|
+
import 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';
|
|
20
|
+
import 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js';
|
|
21
|
+
import 'monaco-editor/esm/vs/editor/contrib/find/findController.js';
|
|
22
|
+
import 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';
|
|
23
|
+
import 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';
|
|
24
|
+
import 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';
|
|
25
|
+
import 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';
|
|
26
|
+
import 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';
|
|
27
|
+
import 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';
|
|
28
|
+
import 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';
|
|
29
|
+
import 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';
|
|
30
|
+
import 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';
|
|
31
|
+
import 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';
|
|
32
|
+
import 'monaco-editor/esm/vs/editor/contrib/indentation/indentation.js';
|
|
33
|
+
import 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js';
|
|
34
|
+
import 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController.js';
|
|
35
|
+
import 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';
|
|
36
|
+
import 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';
|
|
37
|
+
import 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing.js';
|
|
38
|
+
import 'monaco-editor/esm/vs/editor/contrib/links/links.js';
|
|
39
|
+
import 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';
|
|
40
|
+
import 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';
|
|
41
|
+
import 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';
|
|
42
|
+
import 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';
|
|
43
|
+
import 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';
|
|
44
|
+
import 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';
|
|
45
|
+
import 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';
|
|
46
|
+
import 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';
|
|
47
|
+
import 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';
|
|
48
|
+
import 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js';
|
|
49
|
+
import 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';
|
|
50
|
+
import 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';
|
|
51
|
+
import 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';
|
|
52
|
+
import 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js';
|
|
53
|
+
import 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js';
|
|
54
|
+
import 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';
|
|
55
|
+
import 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';
|
|
56
|
+
import 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';
|
|
57
|
+
import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';
|
|
58
|
+
import { Language } from './lang/Language';
|
|
2
59
|
declare class MonacoUtils {
|
|
3
60
|
static init(): void;
|
|
4
61
|
/**
|
|
5
62
|
* Remove the hashtag prefix from a CSS color string.
|
|
6
63
|
* Monaco expects colors to be the value only, no hashtag.
|
|
7
|
-
* @param
|
|
64
|
+
* @param color The hex color string to remove the hashtag from, eg. '#ffffff'
|
|
8
65
|
*/
|
|
9
66
|
static removeHashtag(color: string): string;
|
|
10
|
-
static registerLanguages(languages:
|
|
11
|
-
static registerLanguage(language:
|
|
67
|
+
static registerLanguages(languages: Language[]): void;
|
|
68
|
+
static registerLanguage(language: Language): void;
|
|
12
69
|
/**
|
|
13
70
|
* Set EOL preference for the editor
|
|
14
|
-
* @param
|
|
15
|
-
* @param
|
|
71
|
+
* @param editor The editor to set the EOL for
|
|
72
|
+
* @param eolSequence EOL sequence
|
|
16
73
|
*/
|
|
17
|
-
static setEOL(editor: monaco.editor.
|
|
74
|
+
static setEOL(editor: monaco.editor.IStandaloneCodeEditor, eolSequence?: monaco.editor.EndOfLineSequence): void;
|
|
18
75
|
/**
|
|
19
76
|
* Links an editor with a provided session to provide completion items.
|
|
20
|
-
* @param
|
|
21
|
-
* @param
|
|
77
|
+
* @param session The IdeSession to link
|
|
78
|
+
* @param editor The editor to link the session to
|
|
22
79
|
* @return A cleanup function for disposing of the created listeners
|
|
23
80
|
*/
|
|
24
|
-
static openDocument(editor: monaco.editor.
|
|
25
|
-
static closeDocument(editor:
|
|
81
|
+
static openDocument(editor: monaco.editor.IStandaloneCodeEditor, session: IdeSession): monaco.IDisposable;
|
|
82
|
+
static closeDocument(editor: monaco.editor.IStandaloneCodeEditor, session: IdeSession): void;
|
|
26
83
|
/**
|
|
27
84
|
* Register a paste handle to clean up any garbage code pasted.
|
|
28
85
|
* Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.
|
|
29
86
|
* 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.
|
|
30
|
-
* @param
|
|
87
|
+
* @param editor The editor the register the paste handler for
|
|
31
88
|
*/
|
|
32
|
-
static registerPasteHandler(editor:
|
|
89
|
+
static registerPasteHandler(editor: monaco.editor.IStandaloneCodeEditor): void;
|
|
33
90
|
static isMacPlatform(): boolean;
|
|
34
91
|
/**
|
|
35
92
|
* Remove any keybindings which are used for our own shortcuts.
|
|
36
93
|
* This allows the key events to bubble up so a component higher up can capture them
|
|
37
|
-
* @param
|
|
94
|
+
* @param editor The editor to remove the keybindings from
|
|
38
95
|
*/
|
|
39
|
-
static removeConflictingKeybindings(editor:
|
|
96
|
+
static removeConflictingKeybindings(editor: monaco.editor.IStandaloneCodeEditor): void;
|
|
40
97
|
/**
|
|
41
98
|
* Remove a keybinding and allow the events to bubble up
|
|
42
99
|
* If you want the keybinding removed for all editors, add it to removeConflictingKeybindings
|
|
@@ -46,11 +103,11 @@ declare class MonacoUtils {
|
|
|
46
103
|
* https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475
|
|
47
104
|
* The issue for an API for this has apparently been open since 2016. Link below
|
|
48
105
|
* https://github.com/microsoft/monaco-editor/issues/102
|
|
49
|
-
* @param
|
|
50
|
-
* @param
|
|
106
|
+
* @param editor The editor to remove the keybinding from
|
|
107
|
+
* @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows
|
|
51
108
|
*/
|
|
52
|
-
static removeKeybinding(editor:
|
|
53
|
-
static getMonacoKeyCodeFromShortcut(shortcut:
|
|
109
|
+
static removeKeybinding(editor: monaco.editor.IStandaloneCodeEditor, keybinding: string): void;
|
|
110
|
+
static getMonacoKeyCodeFromShortcut(shortcut: Shortcut): number;
|
|
54
111
|
}
|
|
55
|
-
|
|
112
|
+
export default MonacoUtils;
|
|
56
113
|
//# sourceMappingURL=MonacoUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonacoUtils.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoUtils.
|
|
1
|
+
{"version":3,"file":"MonacoUtils.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Exports a function for initializing monaco with the deephaven theme/config
|
|
3
5
|
*/
|
|
@@ -5,6 +7,7 @@
|
|
|
5
7
|
// Default list of features here: https://github.com/microsoft/monaco-editor-webpack-plugin
|
|
6
8
|
// Mapping to paths here: https://github.com/microsoft/monaco-editor-webpack-plugin/blob/main/src/features.ts
|
|
7
9
|
// Importing this way rather than using the plugin because I don't want to hook up react-app-rewired for the build
|
|
10
|
+
import { assertNotNull } from '@deephaven/utils';
|
|
8
11
|
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
|
|
9
12
|
import 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';
|
|
10
13
|
import 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';
|
|
@@ -56,8 +59,10 @@ import 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSeman
|
|
|
56
59
|
import 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';
|
|
57
60
|
import 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';
|
|
58
61
|
import 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';
|
|
59
|
-
import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';
|
|
60
|
-
|
|
62
|
+
import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js'; // @ts-ignore
|
|
63
|
+
|
|
64
|
+
import { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js'; // @ts-ignore
|
|
65
|
+
|
|
61
66
|
import { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';
|
|
62
67
|
import Log from '@deephaven/log';
|
|
63
68
|
import MonacoTheme from "./MonacoTheme.module.css";
|
|
@@ -178,7 +183,7 @@ class MonacoUtils {
|
|
|
178
183
|
/**
|
|
179
184
|
* Remove the hashtag prefix from a CSS color string.
|
|
180
185
|
* Monaco expects colors to be the value only, no hashtag.
|
|
181
|
-
* @param
|
|
186
|
+
* @param color The hex color string to remove the hashtag from, eg. '#ffffff'
|
|
182
187
|
*/
|
|
183
188
|
|
|
184
189
|
|
|
@@ -203,10 +208,6 @@ class MonacoUtils {
|
|
|
203
208
|
}).forEach(languageParam => {
|
|
204
209
|
var language = languageParam;
|
|
205
210
|
log.debug2('Overriding default language loader:', language.id);
|
|
206
|
-
|
|
207
|
-
language.loader = () => ({
|
|
208
|
-
then: () => {}
|
|
209
|
-
});
|
|
210
211
|
}); // Then register our language definitions
|
|
211
212
|
|
|
212
213
|
languages.forEach(language => {
|
|
@@ -224,25 +225,28 @@ class MonacoUtils {
|
|
|
224
225
|
}
|
|
225
226
|
/**
|
|
226
227
|
* Set EOL preference for the editor
|
|
227
|
-
* @param
|
|
228
|
-
* @param
|
|
228
|
+
* @param editor The editor to set the EOL for
|
|
229
|
+
* @param eolSequence EOL sequence
|
|
229
230
|
*/
|
|
230
231
|
|
|
231
232
|
|
|
232
233
|
static setEOL(editor) {
|
|
234
|
+
var _editor$getModel;
|
|
235
|
+
|
|
233
236
|
var eolSequence = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : monaco.editor.EndOfLineSequence.LF;
|
|
234
|
-
editor.getModel().setEOL(eolSequence);
|
|
237
|
+
(_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 ? void 0 : _editor$getModel.setEOL(eolSequence);
|
|
235
238
|
}
|
|
236
239
|
/**
|
|
237
240
|
* Links an editor with a provided session to provide completion items.
|
|
238
|
-
* @param
|
|
239
|
-
* @param
|
|
241
|
+
* @param session The IdeSession to link
|
|
242
|
+
* @param editor The editor to link the session to
|
|
240
243
|
* @return A cleanup function for disposing of the created listeners
|
|
241
244
|
*/
|
|
242
245
|
|
|
243
246
|
|
|
244
247
|
static openDocument(editor, session) {
|
|
245
248
|
var model = editor.getModel();
|
|
249
|
+
assertNotNull(model);
|
|
246
250
|
var didOpenDocumentParams = {
|
|
247
251
|
textDocument: {
|
|
248
252
|
uri: "".concat(model.uri),
|
|
@@ -301,6 +305,7 @@ class MonacoUtils {
|
|
|
301
305
|
|
|
302
306
|
static closeDocument(editor, session) {
|
|
303
307
|
var model = editor.getModel();
|
|
308
|
+
assertNotNull(model);
|
|
304
309
|
var didCloseDocumentParams = {
|
|
305
310
|
textDocument: {
|
|
306
311
|
uri: "".concat(model.uri)
|
|
@@ -312,7 +317,7 @@ class MonacoUtils {
|
|
|
312
317
|
* Register a paste handle to clean up any garbage code pasted.
|
|
313
318
|
* Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.
|
|
314
319
|
* 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.
|
|
315
|
-
* @param
|
|
320
|
+
* @param editor The editor the register the paste handler for
|
|
316
321
|
*/
|
|
317
322
|
|
|
318
323
|
|
|
@@ -321,6 +326,7 @@ class MonacoUtils {
|
|
|
321
326
|
var smartQuotes = /“|”/g;
|
|
322
327
|
var invalidChars = /\u200b/g;
|
|
323
328
|
var editorModel = editor.getModel();
|
|
329
|
+
assertNotNull(editorModel);
|
|
324
330
|
var pastedText = editorModel.getValueInRange(pasteEvent.range);
|
|
325
331
|
|
|
326
332
|
if (smartQuotes.test(pastedText) || invalidChars.test(pastedText)) {
|
|
@@ -341,7 +347,7 @@ class MonacoUtils {
|
|
|
341
347
|
/**
|
|
342
348
|
* Remove any keybindings which are used for our own shortcuts.
|
|
343
349
|
* This allows the key events to bubble up so a component higher up can capture them
|
|
344
|
-
* @param
|
|
350
|
+
* @param editor The editor to remove the keybindings from
|
|
345
351
|
*/
|
|
346
352
|
|
|
347
353
|
|
|
@@ -359,7 +365,13 @@ class MonacoUtils {
|
|
|
359
365
|
}];
|
|
360
366
|
|
|
361
367
|
try {
|
|
362
|
-
keybindings.forEach(keybinding =>
|
|
368
|
+
keybindings.forEach(keybinding => {
|
|
369
|
+
if (MonacoUtils.isMacPlatform() && keybinding.mac === '' || !MonacoUtils.isMacPlatform() && keybinding.windows === '') {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
MonacoUtils.removeKeybinding(editor, MonacoUtils.isMacPlatform() ? keybinding.mac : keybinding.windows);
|
|
374
|
+
});
|
|
363
375
|
} catch (err) {
|
|
364
376
|
// This is probably only caused by Monaco changing private methods used here
|
|
365
377
|
log.error(err);
|
|
@@ -374,26 +386,22 @@ class MonacoUtils {
|
|
|
374
386
|
* https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475
|
|
375
387
|
* The issue for an API for this has apparently been open since 2016. Link below
|
|
376
388
|
* https://github.com/microsoft/monaco-editor/issues/102
|
|
377
|
-
* @param
|
|
378
|
-
* @param
|
|
389
|
+
* @param editor The editor to remove the keybinding from
|
|
390
|
+
* @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows
|
|
379
391
|
*/
|
|
380
392
|
|
|
381
393
|
|
|
382
394
|
static removeKeybinding(editor, keybinding) {
|
|
383
|
-
if (!keybinding) {
|
|
384
|
-
return;
|
|
385
|
-
}
|
|
386
395
|
/* eslint-disable no-underscore-dangle */
|
|
387
396
|
// It's possible a single keybinding has multiple commands depending on context
|
|
388
|
-
|
|
389
|
-
|
|
397
|
+
// @ts-ignore
|
|
390
398
|
var keybindings = editor._standaloneKeybindingService._getResolver()._map.get(keybinding);
|
|
391
399
|
|
|
392
400
|
if (keybindings) {
|
|
393
401
|
keybindings.forEach(elem => {
|
|
394
|
-
log.debug2("Removing Monaco keybinding ".concat(keybinding, " for ").concat(elem.command));
|
|
402
|
+
log.debug2("Removing Monaco keybinding ".concat(keybinding, " for ").concat(elem.command)); // @ts-ignore
|
|
395
403
|
|
|
396
|
-
editor._standaloneKeybindingService.addDynamicKeybinding("-".concat(elem.command), null, () =>
|
|
404
|
+
editor._standaloneKeybindingService.addDynamicKeybinding("-".concat(elem.command), null, () => undefined);
|
|
397
405
|
});
|
|
398
406
|
} else {
|
|
399
407
|
log.warn("Did not find any keybindings to remove for ".concat(keybinding));
|