@deephaven/console 0.5.2-matplotlib.2 → 0.6.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 +3 -0
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +807 -871
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.d.ts +1 -38
- package/dist/ConsoleInput.d.ts.map +1 -1
- package/dist/ConsoleInput.js +331 -436
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleMenu.js +159 -215
- package/dist/ConsoleMenu.js.map +1 -1
- package/dist/ConsolePropTypes.js +1 -1
- package/dist/ConsolePropTypes.js.map +1 -1
- package/dist/ConsoleShortcuts.js +2 -2
- package/dist/ConsoleShortcuts.js.map +1 -1
- package/dist/ConsoleStatusBar.js +85 -125
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/StoragePropTypes.js +2 -2
- package/dist/StoragePropTypes.js.map +1 -1
- package/dist/command-history/CommandHistory.css +5 -2
- package/dist/command-history/CommandHistory.css.map +1 -1
- package/dist/command-history/CommandHistory.d.ts +5 -0
- package/dist/command-history/CommandHistory.d.ts.map +1 -1
- package/dist/command-history/CommandHistory.js +303 -391
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.css +4 -0
- package/dist/command-history/CommandHistoryActions.css.map +1 -1
- package/dist/command-history/CommandHistoryActions.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryActions.js +40 -79
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.css +1 -1
- package/dist/command-history/CommandHistoryItem.d.ts +5 -0
- package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItem.js +15 -9
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.d.ts +1 -40
- package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js +139 -189
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryViewportUpdater.js +30 -35
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
- package/dist/command-history/index.js +5 -5
- package/dist/command-history/index.js.map +1 -1
- package/dist/common/Code.js +34 -70
- package/dist/common/Code.js.map +1 -1
- package/dist/common/ConsoleConstants.js +3 -24
- package/dist/common/ConsoleConstants.js.map +1 -1
- package/dist/common/ConsoleUtils.d.ts +1 -3
- package/dist/common/ConsoleUtils.d.ts.map +1 -1
- package/dist/common/ConsoleUtils.js +60 -94
- package/dist/common/ConsoleUtils.js.map +1 -1
- package/dist/common/ObjectIcon.js +4 -2
- package/dist/common/ObjectIcon.js.map +1 -1
- package/dist/common/index.d.js +1 -34
- package/dist/common/index.d.js.map +1 -1
- package/dist/common/index.js +4 -4
- package/dist/common/index.js.map +1 -1
- package/dist/console-history/ConsoleHistory.js +27 -63
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js +116 -154
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js +4 -2
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +94 -132
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js +42 -76
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/console-history/index.js +5 -5
- package/dist/console-history/index.js.map +1 -1
- package/dist/csv/CsvFormats.js +14 -28
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.css +25 -23
- package/dist/csv/CsvInputBar.css.map +1 -1
- package/dist/csv/CsvInputBar.d.ts +2 -45
- package/dist/csv/CsvInputBar.d.ts.map +1 -1
- package/dist/csv/CsvInputBar.js +298 -372
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.js +197 -243
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.js +186 -209
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.js +185 -210
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/NewTableColumnTypes.js +1 -5
- package/dist/csv/NewTableColumnTypes.js.map +1 -1
- package/dist/index.js +14 -14
- package/dist/index.js.map +1 -1
- package/dist/log/LogLevelMenuItem.js +24 -58
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.js +429 -484
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.js +92 -124
- package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.js +315 -331
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/index.js +2 -2
- package/dist/monaco/index.js.map +1 -1
- package/dist/monaco/lang/db.js +3 -3
- package/dist/monaco/lang/db.js.map +1 -1
- package/dist/monaco/lang/groovy.js +3 -3
- package/dist/monaco/lang/groovy.js.map +1 -1
- package/dist/monaco/lang/log.js +3 -3
- package/dist/monaco/lang/log.js.map +1 -1
- package/dist/monaco/lang/python.js +3 -3
- package/dist/monaco/lang/python.js.map +1 -1
- package/dist/monaco/lang/scala.js +5 -5
- package/dist/monaco/lang/scala.js.map +1 -1
- package/dist/notebook/Editor.js +101 -141
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.js +261 -301
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +26 -42
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -22
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","props","handleClearClick","bind","handleFlushTimeout","handleLogMessage","handleMenuItemClick","handleResetClick","handleResize","handleToggleAllClick","cancelListener","editor","editorContainer","logLevelMenuItems","flushTimer","bufferedMessages","messages","state","shownLogLevels","resetLogLevels","initMonaco","startListening","window","addEventListener","prevProps","prevState","updateDimensions","refreshLogText","session","stopListening","clearLogs","stopFlushTimer","destroyMonaco","removeEventListener","actions","push","menuElement","group","order","i","logLevel","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","focus","trigger","isAllEnabled","updatedLogLevels","updateLogLevels","text","model","getModel","line","getLineCount","column","getLineLength","isBottomVisible","edits","range","startLineNumber","startColumn","endLineNumber","endColumn","forceMoveMarkers","applyEdits","revealLine","truncateLogIfNecessary","message","logText","getLogText","charAt","trimRight","setValue","maxLogSize","splice","truncateSize","isLineVisible","visibleRanges","getVisibleRanges","appendLogText","setTimeout","bufferTimeout","clearTimeout","layout","flush","isLogItemVisible","queue","toggleLogLevel","toggleAll","popperOptions","placement","getMenuActions","logItem","date","Date","micros","timestamp","formatTimestamp","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';\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.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';\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,25 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
|
-
|
|
3
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
4
|
-
|
|
5
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
6
|
-
|
|
7
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
8
|
-
|
|
9
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
10
|
-
|
|
11
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
12
|
-
|
|
13
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
14
|
-
|
|
15
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
16
|
-
|
|
17
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
18
|
-
|
|
19
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
20
|
-
|
|
21
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
22
|
-
|
|
23
1
|
/**
|
|
24
2
|
* Completion provider for a code session
|
|
25
3
|
*/
|
|
@@ -32,119 +10,109 @@ var log = Log.module('MonacoCompletionProvider');
|
|
|
32
10
|
* Registers a completion provider with monaco for the language and session provided.
|
|
33
11
|
*/
|
|
34
12
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var _this;
|
|
42
|
-
|
|
43
|
-
_classCallCheck(this, MonacoCompletionProvider);
|
|
13
|
+
class MonacoCompletionProvider extends PureComponent {
|
|
14
|
+
constructor(props) {
|
|
15
|
+
super(props);
|
|
16
|
+
this.handleCompletionRequest = this.handleCompletionRequest.bind(this);
|
|
17
|
+
this.registeredCompletionProvider = null;
|
|
18
|
+
}
|
|
44
19
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
20
|
+
componentDidMount() {
|
|
21
|
+
var {
|
|
22
|
+
language
|
|
23
|
+
} = this.props;
|
|
24
|
+
this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {
|
|
25
|
+
provideCompletionItems: this.handleCompletionRequest,
|
|
26
|
+
triggerCharacters: ['"', '.', "'", '(', '[', '{', ',']
|
|
27
|
+
});
|
|
49
28
|
}
|
|
50
29
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
var language = this.props.language;
|
|
55
|
-
this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {
|
|
56
|
-
provideCompletionItems: this.handleCompletionRequest,
|
|
57
|
-
triggerCharacters: ['"', '.', "'", '(', '[', '{', ',']
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}, {
|
|
61
|
-
key: "componentWillUnmount",
|
|
62
|
-
value: function componentWillUnmount() {
|
|
63
|
-
this.registeredCompletionProvider.dispose();
|
|
64
|
-
}
|
|
65
|
-
}, {
|
|
66
|
-
key: "handleCompletionRequest",
|
|
67
|
-
value: function handleCompletionRequest(model, position, context) {
|
|
68
|
-
var _this$props = this.props,
|
|
69
|
-
propModel = _this$props.model,
|
|
70
|
-
session = _this$props.session;
|
|
30
|
+
componentWillUnmount() {
|
|
31
|
+
this.registeredCompletionProvider.dispose();
|
|
32
|
+
}
|
|
71
33
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
34
|
+
handleCompletionRequest(model, position, context) {
|
|
35
|
+
var {
|
|
36
|
+
model: propModel,
|
|
37
|
+
session
|
|
38
|
+
} = this.props;
|
|
75
39
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
},
|
|
80
|
-
// Yes, the Monaco API Position is different than the Position received by the LSP
|
|
81
|
-
// Why? I do not know.
|
|
82
|
-
position: {
|
|
83
|
-
line: position.lineNumber - 1,
|
|
84
|
-
character: position.column - 1
|
|
85
|
-
},
|
|
86
|
-
context: context
|
|
87
|
-
};
|
|
88
|
-
var completionItems = session.getCompletionItems(params);
|
|
89
|
-
log.debug('Completion items received: ', params, completionItems);
|
|
90
|
-
completionItems = completionItems.then(function (items) {
|
|
91
|
-
// Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects
|
|
92
|
-
// Need to remap the items here
|
|
93
|
-
var suggestions = items.map(function (item) {
|
|
94
|
-
var label = item.label,
|
|
95
|
-
kind = item.kind,
|
|
96
|
-
detail = item.detail,
|
|
97
|
-
documentation = item.documentation,
|
|
98
|
-
sortText = item.sortText,
|
|
99
|
-
filterText = item.filterText,
|
|
100
|
-
textEdit = item.textEdit,
|
|
101
|
-
insertTextFormat = item.insertTextFormat;
|
|
102
|
-
var _textEdit$range = textEdit.range,
|
|
103
|
-
start = _textEdit$range.start,
|
|
104
|
-
end = _textEdit$range.end; // Monaco expects the columns/ranges to start at 1.
|
|
40
|
+
if (model !== propModel) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
105
43
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
44
|
+
var params = {
|
|
45
|
+
textDocument: {
|
|
46
|
+
uri: "".concat(model.uri)
|
|
47
|
+
},
|
|
48
|
+
// Yes, the Monaco API Position is different than the Position received by the LSP
|
|
49
|
+
// Why? I do not know.
|
|
50
|
+
position: {
|
|
51
|
+
line: position.lineNumber - 1,
|
|
52
|
+
character: position.column - 1
|
|
53
|
+
},
|
|
54
|
+
context
|
|
55
|
+
};
|
|
56
|
+
var completionItems = session.getCompletionItems(params);
|
|
57
|
+
log.debug('Completion items received: ', params, completionItems);
|
|
58
|
+
completionItems = completionItems.then(items => {
|
|
59
|
+
// Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects
|
|
60
|
+
// Need to remap the items here
|
|
61
|
+
var suggestions = items.map(item => {
|
|
62
|
+
var {
|
|
63
|
+
label,
|
|
64
|
+
kind,
|
|
65
|
+
detail,
|
|
66
|
+
documentation,
|
|
67
|
+
sortText,
|
|
68
|
+
filterText,
|
|
69
|
+
textEdit,
|
|
70
|
+
insertTextFormat
|
|
71
|
+
} = item;
|
|
72
|
+
var {
|
|
73
|
+
start,
|
|
74
|
+
end
|
|
75
|
+
} = textEdit.range; // Monaco expects the columns/ranges to start at 1.
|
|
76
|
+
|
|
77
|
+
var range = {
|
|
78
|
+
startLineNumber: start.line + 1,
|
|
79
|
+
startColumn: start.character + 1,
|
|
80
|
+
endLineNumber: end.line + 1,
|
|
81
|
+
endColumn: end.character + 1
|
|
130
82
|
};
|
|
131
|
-
})["catch"](function (error) {
|
|
132
|
-
log.error('There was an error retrieving completion items', error);
|
|
133
83
|
return {
|
|
134
|
-
|
|
84
|
+
label,
|
|
85
|
+
kind,
|
|
86
|
+
detail,
|
|
87
|
+
documentation,
|
|
88
|
+
sortText,
|
|
89
|
+
filterText,
|
|
90
|
+
insertText: textEdit.text,
|
|
91
|
+
// We are basically guessing that LSP's insertTextFormat===2 is
|
|
92
|
+
// semantically equivalent to monaco's insertTextRules===4.
|
|
93
|
+
// Why microsoft is using almost-but-not-LSP apis is beyond me....
|
|
94
|
+
insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,
|
|
95
|
+
range
|
|
135
96
|
};
|
|
136
97
|
});
|
|
137
|
-
return
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
98
|
+
return {
|
|
99
|
+
incomplete: true,
|
|
100
|
+
suggestions
|
|
101
|
+
};
|
|
102
|
+
}).catch(error => {
|
|
103
|
+
log.error('There was an error retrieving completion items', error);
|
|
104
|
+
return {
|
|
105
|
+
suggestions: []
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
return completionItems;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
render() {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
145
114
|
|
|
146
|
-
|
|
147
|
-
}(PureComponent);
|
|
115
|
+
}
|
|
148
116
|
|
|
149
117
|
MonacoCompletionProvider.propTypes = {
|
|
150
118
|
model: PropTypes.shape({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/monaco/MonacoCompletionProvider.jsx"],"names":["PureComponent","PropTypes","monaco","Log","log","module","MonacoCompletionProvider","props","handleCompletionRequest","bind","registeredCompletionProvider","language","languages","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","dispose","model","position","context","propModel","session","params","textDocument","uri","line","lineNumber","character","column","completionItems","getCompletionItems","debug","then","items","suggestions","map","item","label","kind","detail","documentation","sortText","filterText","textEdit","insertTextFormat","
|
|
1
|
+
{"version":3,"sources":["../../src/monaco/MonacoCompletionProvider.jsx"],"names":["PureComponent","PropTypes","monaco","Log","log","module","MonacoCompletionProvider","constructor","props","handleCompletionRequest","bind","registeredCompletionProvider","componentDidMount","language","languages","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","componentWillUnmount","dispose","model","position","context","propModel","session","params","textDocument","uri","line","lineNumber","character","column","completionItems","getCompletionItems","debug","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","propTypes","shape","isRequired","func","string"],"mappings":"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","sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('MonacoCompletionProvider');\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoCompletionProvider extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n\n this.registeredCompletionProvider = null;\n }\n\n componentDidMount() {\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() {\n this.registeredCompletionProvider.dispose();\n }\n\n handleCompletionRequest(model, position, context) {\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 let completionItems = session.getCompletionItems(params);\n\n log.debug('Completion items received: ', params, completionItems);\n\n completionItems = 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 => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return completionItems;\n }\n\n render() {\n return null;\n }\n}\n\nMonacoCompletionProvider.propTypes = {\n model: PropTypes.shape({ uri: PropTypes.shape({}) }).isRequired,\n session: PropTypes.shape({ getCompletionItems: PropTypes.func }).isRequired,\n language: PropTypes.string.isRequired,\n};\n\nexport default MonacoCompletionProvider;\n"],"file":"MonacoCompletionProvider.js"}
|