@deephaven/console 0.15.5 → 0.15.6-vite.21
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 +1 -1
- package/dist/Console.js +1 -1
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleMenu.js.map +1 -1
- package/dist/ConsolePropTypes.js.map +1 -1
- package/dist/ConsoleShortcuts.js.map +1 -1
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/StoragePropTypes.js.map +1 -1
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryStorage.js.map +1 -1
- package/dist/command-history/CommandHistoryTypes.js.map +1 -1
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
- package/dist/command-history/index.js.map +1 -1
- package/dist/common/Code.js.map +1 -1
- package/dist/common/ConsoleConstants.js.map +1 -1
- package/dist/common/ConsoleUtils.d.ts +1 -1
- package/dist/common/ConsoleUtils.js +1 -1
- package/dist/common/ConsoleUtils.js.map +1 -1
- package/dist/common/ObjectIcon.js.map +1 -1
- package/dist/common/index.d.js.map +1 -1
- package/dist/common/index.js.map +1 -1
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/console-history/ConsoleHistoryTypes.js.map +1 -1
- package/dist/console-history/index.js.map +1 -1
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/NewTableColumnTypes.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/log/LogLevel.js.map +1 -1
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.d.ts +7 -2
- package/dist/monaco/MonacoUtils.d.ts.map +1 -1
- package/dist/monaco/MonacoUtils.js +15 -2
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/index.js.map +1 -1
- package/dist/monaco/lang/Language.js.map +1 -1
- package/dist/monaco/lang/db.js.map +1 -1
- package/dist/monaco/lang/groovy.js.map +1 -1
- package/dist/monaco/lang/log.js.map +1 -1
- package/dist/monaco/lang/python.js.map +1 -1
- package/dist/monaco/lang/scala.js.map +1 -1
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/package.json +11 -10
package/dist/log/LogView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
+
{"version":3,"file":"LogView.js","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"],"sources":["../../src/log/LogView.tsx"],"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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"MonacoCompletionProvider.js","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"],"sources":["../../src/monaco/MonacoCompletionProvider.tsx"],"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"],"mappings":"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"}
|
|
@@ -56,6 +56,11 @@ import 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';
|
|
|
56
56
|
import 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';
|
|
57
57
|
import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';
|
|
58
58
|
import { Language } from './lang/Language';
|
|
59
|
+
declare global {
|
|
60
|
+
interface Window {
|
|
61
|
+
MonacoEnvironment: monaco.Environment;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
59
64
|
declare class MonacoUtils {
|
|
60
65
|
static init(): void;
|
|
61
66
|
/**
|
|
@@ -76,7 +81,7 @@ declare class MonacoUtils {
|
|
|
76
81
|
* Links an editor with a provided session to provide completion items.
|
|
77
82
|
* @param session The IdeSession to link
|
|
78
83
|
* @param editor The editor to link the session to
|
|
79
|
-
* @
|
|
84
|
+
* @returns A cleanup function for disposing of the created listeners
|
|
80
85
|
*/
|
|
81
86
|
static openDocument(editor: monaco.editor.IStandaloneCodeEditor, session: IdeSession): monaco.IDisposable;
|
|
82
87
|
static closeDocument(editor: monaco.editor.IStandaloneCodeEditor, session: IdeSession): void;
|
|
@@ -106,7 +111,7 @@ declare class MonacoUtils {
|
|
|
106
111
|
* @param editor The editor to remove the keybinding from
|
|
107
112
|
* @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows
|
|
108
113
|
*/
|
|
109
|
-
static removeKeybinding(editor: monaco.editor.IStandaloneCodeEditor, keybinding: string): void;
|
|
114
|
+
static removeKeybinding(editor: monaco.editor.IStandaloneCodeEditor, keybinding: string | undefined): void;
|
|
110
115
|
static getMonacoKeyCodeFromShortcut(shortcut: Shortcut): number;
|
|
111
116
|
}
|
|
112
117
|
export default MonacoUtils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonacoUtils.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoUtils.ts"],"names":[],"mappings":"AACA;;GAEG;AAMH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,MAAM,MAAM,2CAA2C,CAAC;AACpE,OAAO,uFAAuF,CAAC;AAC/F,OAAO,kEAAkE,CAAC;AAC1E,OAAO,wEAAwE,CAAC;AAChF,OAAO,wEAAwE,CAAC;AAChF,OAAO,4DAA4D,CAAC;AACpE,OAAO,2EAA2E,CAAC;AACnF,OAAO,oEAAoE,CAAC;AAC5E,OAAO,uEAAuE,CAAC;AAC/E,OAAO,wDAAwD,CAAC;AAChE,OAAO,gEAAgE,CAAC;AACxE,OAAO,gEAAgE,CAAC;AACxE,OAAO,8DAA8D,CAAC;AACtE,OAAO,gDAAgD,CAAC;AACxD,OAAO,wEAAwE,CAAC;AAChF,OAAO,4DAA4D,CAAC;AACpE,OAAO,wDAAwD,CAAC;AAChE,OAAO,0DAA0D,CAAC;AAClE,OAAO,6DAA6D,CAAC;AACrE,OAAO,4DAA4D,CAAC;AACpE,OAAO,6FAA6F,CAAC;AACrG,OAAO,gEAAgE,CAAC;AACxE,OAAO,iFAAiF,CAAC;AACzF,OAAO,oDAAoD,CAAC;AAC5D,OAAO,qFAAqF,CAAC;AAC7F,OAAO,sEAAsE,CAAC;AAC9E,OAAO,gEAAgE,CAAC;AACxE,OAAO,8EAA8E,CAAC;AACtF,OAAO,wEAAwE,CAAC;AAChF,OAAO,+EAA+E,CAAC;AACvF,OAAO,wEAAwE,CAAC;AAChF,OAAO,oEAAoE,CAAC;AAC5E,OAAO,oDAAoD,CAAC;AAC5D,OAAO,gEAAgE,CAAC;AACxE,OAAO,sEAAsE,CAAC;AAC9E,OAAO,6FAA6F,CAAC;AACrG,OAAO,yFAAyF,CAAC;AACjG,OAAO,+FAA+F,CAAC;AACvG,OAAO,6FAA6F,CAAC;AACrG,OAAO,sDAAsD,CAAC;AAC9D,OAAO,gEAAgE,CAAC;AACxE,OAAO,mEAAmE,CAAC;AAC3E,OAAO,kEAAkE,CAAC;AAC1E,OAAO,yFAAyF,CAAC;AACjG,OAAO,8EAA8E,CAAC;AACtF,OAAO,kEAAkE,CAAC;AAC1E,OAAO,sFAAsF,CAAC;AAC9F,OAAO,sFAAsF,CAAC;AAC9F,OAAO,wEAAwE,CAAC;AAChF,OAAO,sEAAsE,CAAC;AAC9E,OAAO,8EAA8E,CAAC;AACtF,OAAO,4EAA4E,CAAC;
|
|
1
|
+
{"version":3,"file":"MonacoUtils.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,7 +63,9 @@ import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.
|
|
|
63
63
|
|
|
64
64
|
import { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js'; // @ts-ignore
|
|
65
65
|
|
|
66
|
-
import { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';
|
|
66
|
+
import { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js'; // @ts-ignore
|
|
67
|
+
|
|
68
|
+
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
|
|
67
69
|
import Log from '@deephaven/log';
|
|
68
70
|
import MonacoTheme from "./MonacoTheme.module.css";
|
|
69
71
|
import PyLang from "./lang/python.js";
|
|
@@ -72,6 +74,12 @@ import ScalaLang from "./lang/scala.js";
|
|
|
72
74
|
import DbLang from "./lang/db.js";
|
|
73
75
|
import LogLang from "./lang/log.js";
|
|
74
76
|
var log = Log.module('MonacoUtils');
|
|
77
|
+
window.MonacoEnvironment = {
|
|
78
|
+
getWorker(workerId, label) {
|
|
79
|
+
return editorWorker();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
};
|
|
75
83
|
|
|
76
84
|
class MonacoUtils {
|
|
77
85
|
static init() {
|
|
@@ -240,7 +248,7 @@ class MonacoUtils {
|
|
|
240
248
|
* Links an editor with a provided session to provide completion items.
|
|
241
249
|
* @param session The IdeSession to link
|
|
242
250
|
* @param editor The editor to link the session to
|
|
243
|
-
* @
|
|
251
|
+
* @returns A cleanup function for disposing of the created listeners
|
|
244
252
|
*/
|
|
245
253
|
|
|
246
254
|
|
|
@@ -392,9 +400,14 @@ class MonacoUtils {
|
|
|
392
400
|
|
|
393
401
|
|
|
394
402
|
static removeKeybinding(editor, keybinding) {
|
|
403
|
+
if (!keybinding) {
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
395
406
|
/* eslint-disable no-underscore-dangle */
|
|
396
407
|
// It's possible a single keybinding has multiple commands depending on context
|
|
397
408
|
// @ts-ignore
|
|
409
|
+
|
|
410
|
+
|
|
398
411
|
var keybindings = editor._standaloneKeybindingService._getResolver()._map.get(keybinding);
|
|
399
412
|
|
|
400
413
|
if (keybindings) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/monaco/MonacoUtils.ts"],"names":["assertNotNull","monaco","KeyCodeUtils","KeyMod","Log","MonacoTheme","PyLang","GroovyLang","ScalaLang","DbLang","LogLang","log","module","MonacoUtils","init","debug","registerLanguages","removeHashtag","dhDarkRules","token","foreground","string","keyword","delimiter","comment","number","storage","identifier","operator","predefined","substring","dhDarkColors","errorForeground","background","focusBorder","editor","defineTheme","base","inherit","rules","colors","debug2","setTheme","color","languages","languageIds","map","id","getLanguages","filter","includes","forEach","languageParam","language","registerLanguage","register","onLanguage","setLanguageConfiguration","conf","setMonarchTokensProvider","setEOL","eolSequence","EndOfLineSequence","LF","getModel","openDocument","session","model","didOpenDocumentParams","textDocument","uri","languageId","getModeId","version","getVersionId","text","getValue","dispose","onDidChangeModelContent","changedEvent","changes","versionId","contentChanges","i","length","change","range","rangeLength","contentChange","start","line","startLineNumber","character","startColumn","end","endLineNumber","endColumn","push","didChangeDocumentParams","changeDocument","closeDocument","didCloseDocumentParams","registerPasteHandler","onDidPaste","pasteEvent","smartQuotes","invalidChars","editorModel","pastedText","getValueInRange","test","applyEdits","replace","isMacPlatform","platform","window","navigator","startsWith","removeConflictingKeybindings","keybindings","windows","mac","keybinding","removeKeybinding","err","error","_standaloneKeybindingService","_getResolver","_map","get","elem","command","addDynamicKeybinding","undefined","warn","getMonacoKeyCodeFromShortcut","shortcut","keyState","keyValue","isMac","metaKey","CtrlCmd","shiftKey","Shift","altKey","Alt","ctrlKey","WinCtrl","fromString"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\n// Instead of importing just 'monaco-editor' and importing all languages and features, just import the features and don't import all the languages we don't care about\n// Default list of features here: https://github.com/microsoft/monaco-editor-webpack-plugin\n// Mapping to paths here: https://github.com/microsoft/monaco-editor-webpack-plugin/blob/main/src/features.ts\n// Importing this way rather than using the plugin because I don't want to hook up react-app-rewired for the build\n\nimport { Shortcut } from '@deephaven/components';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';\nimport 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';\nimport 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js';\nimport 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js';\nimport 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';\nimport 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js';\nimport 'monaco-editor/esm/vs/editor/contrib/find/findController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';\nimport 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';\nimport 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';\nimport 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';\nimport 'monaco-editor/esm/vs/editor/contrib/indentation/indentation.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing.js';\nimport 'monaco-editor/esm/vs/editor/contrib/links/links.js';\nimport 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';\nimport 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';\nimport 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';\nimport 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';\nimport 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js';\nimport 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';\nimport 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';\n// @ts-ignore\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\n// @ts-ignore\nimport { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';\nimport Log from '@deephaven/log';\nimport MonacoTheme from './MonacoTheme.module.scss';\nimport PyLang from './lang/python';\nimport GroovyLang from './lang/groovy';\nimport ScalaLang from './lang/scala';\nimport DbLang from './lang/db';\nimport LogLang from './lang/log';\nimport { Language } from './lang/Language';\n\nconst log = Log.module('MonacoUtils');\nclass MonacoUtils {\n static init(): void {\n log.debug('Initializing Monaco...');\n\n const { registerLanguages, removeHashtag } = MonacoUtils;\n\n const dhDarkRules = [\n { token: '', foreground: removeHashtag(MonacoTheme.foreground) },\n { token: 'string', foreground: removeHashtag(MonacoTheme.string) },\n {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim']),\n },\n { token: 'keyword', foreground: removeHashtag(MonacoTheme.keyword) },\n {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js']),\n },\n {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter),\n },\n { token: 'comment', foreground: removeHashtag(MonacoTheme.comment) },\n { token: 'number', foreground: removeHashtag(MonacoTheme.number) },\n { token: 'storage', foreground: removeHashtag(MonacoTheme.storage) },\n {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier),\n },\n {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier']),\n },\n { token: 'operator', foreground: removeHashtag(MonacoTheme.operator) },\n {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined),\n },\n {\n token: 'error.log',\n foreground: MonacoTheme['log-error'].substring(1),\n },\n {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn']),\n },\n {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info']),\n },\n {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout']),\n },\n {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace']),\n },\n {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug']),\n },\n {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date']),\n },\n ];\n\n const dhDarkColors = {\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],\n 'editorLineNumber.foreground':\n MonacoTheme['editor-line-number-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground':\n MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background':\n MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground':\n MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground':\n MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.highlightForeground':\n MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground':\n MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground':\n MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n };\n\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors,\n });\n log.debug2('monaco theme: ', MonacoTheme);\n monaco.editor.setTheme('dh-dark');\n\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n\n log.debug('Monaco initialized.');\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color: string): string {\n return color.substring(1);\n }\n\n static registerLanguages(languages: Language[]): void {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n const languageIds = languages.map(({ id }) => id);\n monaco.languages\n .getLanguages()\n .filter(({ id }) => languageIds.includes(id))\n .forEach(languageParam => {\n const language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n\n static registerLanguage(language: Language): void {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param editor The editor to set the EOL for\n * @param eolSequence EOL sequence\n */\n static setEOL(\n editor: monaco.editor.IStandaloneCodeEditor,\n eolSequence = monaco.editor.EndOfLineSequence.LF\n ): void {\n editor.getModel()?.setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param session The IdeSession to link\n * @param editor The editor to link the session to\n * @return A cleanup function for disposing of the created listeners\n */\n static openDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): monaco.IDisposable {\n const model = editor.getModel();\n assertNotNull(model);\n const didOpenDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n languageId: model.getModeId(),\n version: model.getVersionId(),\n text: model.getValue(),\n },\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n\n session.openDocument(didOpenDocumentParams);\n\n const dispose = editor.onDidChangeModelContent(changedEvent => {\n const { changes, versionId } = changedEvent;\n\n const contentChanges = [];\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const { range, rangeLength, text } = change;\n const contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1,\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1,\n },\n },\n rangeLength,\n text,\n };\n\n contentChanges.push(contentChange);\n }\n\n if (contentChanges.length > 0) {\n const didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: `${model.uri}`,\n },\n contentChanges,\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n\n return dispose;\n }\n\n static closeDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): void {\n const model = editor.getModel();\n assertNotNull(model);\n const didCloseDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n },\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param editor The editor the register the paste handler for\n */\n static registerPasteHandler(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n editor.onDidPaste(pasteEvent => {\n const smartQuotes = /“|”/g;\n const invalidChars = /\\u200b/g;\n const editorModel = editor.getModel();\n assertNotNull(editorModel);\n const pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (smartQuotes.test(pastedText) || invalidChars.test(pastedText)) {\n editorModel.applyEdits([\n {\n range: pasteEvent.range,\n text: pastedText\n .replace(smartQuotes, '\"')\n .replace(invalidChars, ''),\n },\n ]);\n }\n });\n }\n\n static isMacPlatform(): boolean {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture them\n * @param editor The editor to remove the keybindings from\n */\n static removeConflictingKeybindings(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n // Multi-mod key events have a specific order\n // E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found\n // meta is WindowsKey on Windows and cmd on Mac\n // ctrl is ctrl Windows and ctrl on Mac\n // alt is alt on Windows and option on Mac\n const keybindings = [\n {\n windows: 'ctrl+D',\n mac: 'meta+D',\n },\n {\n windows: 'ctrl+H',\n },\n ];\n\n try {\n keybindings.forEach(keybinding => {\n if (\n (MonacoUtils.isMacPlatform() && keybinding.mac === '') ||\n (!MonacoUtils.isMacPlatform() && keybinding.windows === '')\n ) {\n return;\n }\n MonacoUtils.removeKeybinding(\n editor,\n (MonacoUtils.isMacPlatform()\n ? keybinding.mac\n : keybinding.windows) as string\n );\n });\n } catch (err) {\n // This is probably only caused by Monaco changing private methods used here\n log.error(err);\n }\n }\n\n /**\n * Remove a keybinding and allow the events to bubble up\n * If you want the keybinding removed for all editors, add it to removeConflictingKeybindings\n * Monaco still captures the event if you choose to override the keybinding with a no-op function\n *\n * Based on the following comment to remove a keybinding and let the event bubble up\n * https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475\n * The issue for an API for this has apparently been open since 2016. Link below\n * https://github.com/microsoft/monaco-editor/issues/102\n * @param editor The editor to remove the keybinding from\n * @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows\n */\n static removeKeybinding(\n editor: monaco.editor.IStandaloneCodeEditor,\n keybinding: string\n ): void {\n /* eslint-disable no-underscore-dangle */\n // It's possible a single keybinding has multiple commands depending on context\n // @ts-ignore\n const keybindings = editor._standaloneKeybindingService\n ._getResolver()\n ._map.get(keybinding);\n\n if (keybindings) {\n keybindings.forEach((elem: { command: unknown }) => {\n log.debug2(\n `Removing Monaco keybinding ${keybinding} for ${elem.command}`\n );\n // @ts-ignore\n editor._standaloneKeybindingService.addDynamicKeybinding(\n `-${elem.command}`,\n null,\n () => undefined\n );\n });\n } else {\n log.warn(`Did not find any keybindings to remove for ${keybinding}`);\n }\n /* eslint-enable no-underscore-dangle */\n }\n\n static getMonacoKeyCodeFromShortcut(shortcut: Shortcut): number {\n const { keyState } = shortcut;\n const { keyValue } = keyState;\n if (keyValue === null) {\n return 0;\n }\n\n const isMac = MonacoUtils.isMacPlatform();\n\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.ctrlKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.metaKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n}\n\nexport default MonacoUtils;\n"],"file":"MonacoUtils.js"}
|
|
1
|
+
{"version":3,"file":"MonacoUtils.js","names":["assertNotNull","monaco","KeyCodeUtils","KeyMod","editorWorker","Log","MonacoTheme","PyLang","GroovyLang","ScalaLang","DbLang","LogLang","log","module","window","MonacoEnvironment","getWorker","workerId","label","MonacoUtils","init","debug","registerLanguages","removeHashtag","dhDarkRules","token","foreground","string","keyword","delimiter","comment","number","storage","identifier","operator","predefined","substring","dhDarkColors","errorForeground","background","focusBorder","editor","defineTheme","base","inherit","rules","colors","debug2","setTheme","color","languages","languageIds","map","id","getLanguages","filter","includes","forEach","languageParam","language","registerLanguage","register","onLanguage","setLanguageConfiguration","conf","setMonarchTokensProvider","setEOL","eolSequence","EndOfLineSequence","LF","getModel","openDocument","session","model","didOpenDocumentParams","textDocument","uri","languageId","getModeId","version","getVersionId","text","getValue","dispose","onDidChangeModelContent","changedEvent","changes","versionId","contentChanges","i","length","change","range","rangeLength","contentChange","start","line","startLineNumber","character","startColumn","end","endLineNumber","endColumn","push","didChangeDocumentParams","changeDocument","closeDocument","didCloseDocumentParams","registerPasteHandler","onDidPaste","pasteEvent","smartQuotes","invalidChars","editorModel","pastedText","getValueInRange","test","applyEdits","replace","isMacPlatform","platform","navigator","startsWith","removeConflictingKeybindings","keybindings","windows","mac","keybinding","removeKeybinding","err","error","_standaloneKeybindingService","_getResolver","_map","get","elem","command","addDynamicKeybinding","undefined","warn","getMonacoKeyCodeFromShortcut","shortcut","keyState","keyValue","isMac","metaKey","CtrlCmd","shiftKey","Shift","altKey","Alt","ctrlKey","WinCtrl","fromString"],"sources":["../../src/monaco/MonacoUtils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\n// Instead of importing just 'monaco-editor' and importing all languages and features, just import the features and don't import all the languages we don't care about\n// Default list of features here: https://github.com/microsoft/monaco-editor-webpack-plugin\n// Mapping to paths here: https://github.com/microsoft/monaco-editor-webpack-plugin/blob/main/src/features.ts\n// Importing this way rather than using the plugin because I don't want to hook up react-app-rewired for the build\n\nimport { Shortcut } from '@deephaven/components';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';\nimport 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';\nimport 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js';\nimport 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js';\nimport 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';\nimport 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js';\nimport 'monaco-editor/esm/vs/editor/contrib/find/findController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';\nimport 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';\nimport 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';\nimport 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';\nimport 'monaco-editor/esm/vs/editor/contrib/indentation/indentation.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing.js';\nimport 'monaco-editor/esm/vs/editor/contrib/links/links.js';\nimport 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';\nimport 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';\nimport 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';\nimport 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';\nimport 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js';\nimport 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';\nimport 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';\n// @ts-ignore\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\n// @ts-ignore\nimport { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';\n// @ts-ignore\nimport editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';\nimport Log from '@deephaven/log';\nimport MonacoTheme from './MonacoTheme.module.scss';\nimport PyLang from './lang/python';\nimport GroovyLang from './lang/groovy';\nimport ScalaLang from './lang/scala';\nimport DbLang from './lang/db';\nimport LogLang from './lang/log';\nimport { Language } from './lang/Language';\n\nconst log = Log.module('MonacoUtils');\n\ndeclare global {\n interface Window {\n MonacoEnvironment: monaco.Environment;\n }\n}\n\nwindow.MonacoEnvironment = {\n getWorker(workerId, label) {\n return editorWorker();\n },\n};\n\nclass MonacoUtils {\n static init(): void {\n log.debug('Initializing Monaco...');\n\n const { registerLanguages, removeHashtag } = MonacoUtils;\n\n const dhDarkRules = [\n { token: '', foreground: removeHashtag(MonacoTheme.foreground) },\n { token: 'string', foreground: removeHashtag(MonacoTheme.string) },\n {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim']),\n },\n { token: 'keyword', foreground: removeHashtag(MonacoTheme.keyword) },\n {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js']),\n },\n {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter),\n },\n { token: 'comment', foreground: removeHashtag(MonacoTheme.comment) },\n { token: 'number', foreground: removeHashtag(MonacoTheme.number) },\n { token: 'storage', foreground: removeHashtag(MonacoTheme.storage) },\n {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier),\n },\n {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier']),\n },\n { token: 'operator', foreground: removeHashtag(MonacoTheme.operator) },\n {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined),\n },\n {\n token: 'error.log',\n foreground: MonacoTheme['log-error'].substring(1),\n },\n {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn']),\n },\n {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info']),\n },\n {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout']),\n },\n {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace']),\n },\n {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug']),\n },\n {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date']),\n },\n ];\n\n const dhDarkColors = {\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],\n 'editorLineNumber.foreground':\n MonacoTheme['editor-line-number-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground':\n MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background':\n MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground':\n MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground':\n MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.highlightForeground':\n MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground':\n MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground':\n MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n };\n\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors,\n });\n log.debug2('monaco theme: ', MonacoTheme);\n monaco.editor.setTheme('dh-dark');\n\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n\n log.debug('Monaco initialized.');\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color: string): string {\n return color.substring(1);\n }\n\n static registerLanguages(languages: Language[]): void {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n const languageIds = languages.map(({ id }) => id);\n monaco.languages\n .getLanguages()\n .filter(({ id }) => languageIds.includes(id))\n .forEach(languageParam => {\n const language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n\n static registerLanguage(language: Language): void {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param editor The editor to set the EOL for\n * @param eolSequence EOL sequence\n */\n static setEOL(\n editor: monaco.editor.IStandaloneCodeEditor,\n eolSequence = monaco.editor.EndOfLineSequence.LF\n ): void {\n editor.getModel()?.setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param session The IdeSession to link\n * @param editor The editor to link the session to\n * @returns A cleanup function for disposing of the created listeners\n */\n static openDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): monaco.IDisposable {\n const model = editor.getModel();\n assertNotNull(model);\n const didOpenDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n languageId: model.getModeId(),\n version: model.getVersionId(),\n text: model.getValue(),\n },\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n\n session.openDocument(didOpenDocumentParams);\n\n const dispose = editor.onDidChangeModelContent(changedEvent => {\n const { changes, versionId } = changedEvent;\n\n const contentChanges = [];\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const { range, rangeLength, text } = change;\n const contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1,\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1,\n },\n },\n rangeLength,\n text,\n };\n\n contentChanges.push(contentChange);\n }\n\n if (contentChanges.length > 0) {\n const didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: `${model.uri}`,\n },\n contentChanges,\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n\n return dispose;\n }\n\n static closeDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): void {\n const model = editor.getModel();\n assertNotNull(model);\n const didCloseDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n },\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param editor The editor the register the paste handler for\n */\n static registerPasteHandler(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n editor.onDidPaste(pasteEvent => {\n const smartQuotes = /“|”/g;\n const invalidChars = /\\u200b/g;\n const editorModel = editor.getModel();\n assertNotNull(editorModel);\n const pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (smartQuotes.test(pastedText) || invalidChars.test(pastedText)) {\n editorModel.applyEdits([\n {\n range: pasteEvent.range,\n text: pastedText\n .replace(smartQuotes, '\"')\n .replace(invalidChars, ''),\n },\n ]);\n }\n });\n }\n\n static isMacPlatform(): boolean {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture them\n * @param editor The editor to remove the keybindings from\n */\n static removeConflictingKeybindings(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n // Multi-mod key events have a specific order\n // E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found\n // meta is WindowsKey on Windows and cmd on Mac\n // ctrl is ctrl Windows and ctrl on Mac\n // alt is alt on Windows and option on Mac\n const keybindings = [\n {\n windows: 'ctrl+D',\n mac: 'meta+D',\n },\n {\n windows: 'ctrl+H',\n },\n ];\n\n try {\n keybindings.forEach(keybinding => {\n if (\n (MonacoUtils.isMacPlatform() && keybinding.mac === '') ||\n (!MonacoUtils.isMacPlatform() && keybinding.windows === '')\n ) {\n return;\n }\n MonacoUtils.removeKeybinding(\n editor,\n MonacoUtils.isMacPlatform() ? keybinding.mac : keybinding.windows\n );\n });\n } catch (err) {\n // This is probably only caused by Monaco changing private methods used here\n log.error(err);\n }\n }\n\n /**\n * Remove a keybinding and allow the events to bubble up\n * If you want the keybinding removed for all editors, add it to removeConflictingKeybindings\n * Monaco still captures the event if you choose to override the keybinding with a no-op function\n *\n * Based on the following comment to remove a keybinding and let the event bubble up\n * https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475\n * The issue for an API for this has apparently been open since 2016. Link below\n * https://github.com/microsoft/monaco-editor/issues/102\n * @param editor The editor to remove the keybinding from\n * @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows\n */\n static removeKeybinding(\n editor: monaco.editor.IStandaloneCodeEditor,\n keybinding: string | undefined\n ): void {\n if (!keybinding) {\n return;\n }\n\n /* eslint-disable no-underscore-dangle */\n // It's possible a single keybinding has multiple commands depending on context\n // @ts-ignore\n const keybindings = editor._standaloneKeybindingService\n ._getResolver()\n ._map.get(keybinding);\n\n if (keybindings) {\n keybindings.forEach((elem: { command: unknown }) => {\n log.debug2(\n `Removing Monaco keybinding ${keybinding} for ${elem.command}`\n );\n // @ts-ignore\n editor._standaloneKeybindingService.addDynamicKeybinding(\n `-${elem.command}`,\n null,\n () => undefined\n );\n });\n } else {\n log.warn(`Did not find any keybindings to remove for ${keybinding}`);\n }\n /* eslint-enable no-underscore-dangle */\n }\n\n static getMonacoKeyCodeFromShortcut(shortcut: Shortcut): number {\n const { keyState } = shortcut;\n const { keyValue } = keyState;\n if (keyValue === null) {\n return 0;\n }\n\n const isMac = MonacoUtils.isMacPlatform();\n\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.ctrlKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.metaKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n}\n\nexport default MonacoUtils;\n"],"mappings":"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"}
|
package/dist/monaco/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","MonacoUtils","MonacoCompletionProvider","MonacoTheme"],"sources":["../../src/monaco/index.ts"],"sourcesContent":["export { default as MonacoUtils } from './MonacoUtils';\nexport { default as MonacoCompletionProvider } from './MonacoCompletionProvider';\nexport { default as MonacoTheme } from './MonacoTheme.module.scss';\n"],"mappings":"SAASA,OAAO,IAAIC,W;SACXD,OAAO,IAAIE,wB;SACXF,OAAO,IAAIG,W"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Language.js","names":[],"sources":["../../../src/monaco/lang/Language.ts"],"sourcesContent":["import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\n\nexport type Language = {\n id: string;\n conf: monaco.languages.LanguageConfiguration;\n language:\n | monaco.languages.IMonarchLanguage\n | monaco.Thenable<monaco.languages.IMonarchLanguage>;\n};\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/monaco/lang/db.ts"],"names":["id","conf","comments","lineComment","blockComment","brackets","autoClosingPairs","open","close","notIn","surroundingPairs","onEnterRules","beforeText","RegExp","action","indentAction","folding","offSide","markers","start","end","language","tokenPostfix","keywords","builtins","operators","token","symbols","escapes","exponent","regexpctl","regexpesc","tokenizer","root","cases","$3","include","bracket","next","whitespace","comment","string","regexp","regexrange","lang"],"mappings":"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","sourcesContent":["import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport { Language } from './Language';\n\n/* eslint no-useless-escape: \"off\" */\nconst id = 'deephavenDb';\n\nconst conf: monaco.languages.LanguageConfiguration = {\n comments: {\n lineComment: '#',\n blockComment: [\"'''\", \"'''\"],\n },\n brackets: [\n ['{', '}'],\n ['[', ']'],\n ['(', ')'],\n ],\n autoClosingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"', notIn: ['string'] },\n { open: \"'\", close: \"'\", notIn: ['string', 'comment'] },\n ],\n surroundingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n onEnterRules: [\n {\n beforeText: new RegExp(\n '^\\\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\\\\s*$'\n ),\n action: { indentAction: 1 }, // see monaco.languages.IndentAction.Indent\n },\n ],\n folding: {\n offSide: true,\n markers: {\n start: new RegExp('^\\\\s*#region\\\\b'),\n end: new RegExp('^\\\\s*#endregion\\\\b'),\n },\n },\n};\n\nconst language: monaco.languages.IMonarchLanguage = {\n tokenPostfix: '.js',\n\n keywords: [\n 'boolean',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'class',\n 'const',\n 'continue',\n 'debugger',\n 'default',\n 'delete',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'export',\n 'extends',\n 'false',\n 'final',\n 'finally',\n 'float',\n 'for',\n 'function',\n 'goto',\n 'if',\n 'implements',\n 'import',\n 'in',\n 'instanceof',\n 'int',\n 'interface',\n 'long',\n 'native',\n 'new',\n 'null',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'return',\n 'short',\n 'static',\n 'super',\n 'switch',\n 'synchronized',\n 'this',\n 'throw',\n 'throws',\n 'transient',\n 'true',\n 'try',\n 'typeof',\n 'var',\n 'void',\n 'volatile',\n 'while',\n 'with',\n ],\n\n builtins: ['define', 'require', 'window', 'document', 'undefined'],\n\n operators: [\n '=',\n '>',\n '<',\n '!',\n '~',\n '?',\n ':',\n '==',\n '<=',\n '>=',\n '!=',\n '&&',\n '||',\n '++',\n '--',\n '+',\n '-',\n '*',\n '/',\n '&',\n '|',\n '^',\n '%',\n '<<',\n '>>',\n '>>>',\n '+=',\n '-=',\n '*=',\n '/=',\n '&=',\n '|=',\n '^=',\n '%=',\n '<<=',\n '>>=',\n '>>>=',\n ],\n\n // define our own brackets as '<' and '>' do not match in javascript\n brackets: [\n { open: '{', close: '}', token: 'delimiter.curly' },\n { open: '[', close: ']', token: 'delimiter.bracket' },\n { open: '(', close: ')', token: 'delimiter.parenthesis' },\n ],\n\n // common regular expressions\n symbols: /[~!@#%\\^&*-+=|\\\\:`<>.?\\/]+/,\n escapes: /\\\\(?:[btnfr\\\\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,\n exponent: /[eE][\\-+]?[0-9]+/,\n\n regexpctl: /[(){}\\[\\]\\$\\^|\\-*+?\\.]/,\n regexpesc: /\\\\(?:[bBdDfnrstvwWn0\\\\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,\n\n tokenizer: {\n root: [\n // identifiers and keywords\n [\n /([a-zA-Z_\\$][\\w\\$]*)(\\s*)(:?)/,\n {\n cases: {\n '$1@keywords': ['keyword', 'white', 'delimiter'],\n $3: ['key.identifier', 'white', 'delimiter'], // followed by :\n '$1@builtins': ['predefined.identifier', 'white', 'delimiter'],\n '@default': ['identifier', 'white', 'delimiter'],\n },\n },\n ],\n\n // whitespace\n { include: '@whitespace' },\n\n // regular expression: ensure it is terminated before beginning (otherwise it is an opeator)\n [\n /\\/(?=([^\\\\\\/]|\\\\.)+\\/)/,\n { token: 'regexp.slash', bracket: '@open', next: '@regexp' },\n ],\n\n // delimiters and operators\n [/[{}()\\[\\]]/, '@brackets'],\n [/[;,.]/, 'delimiter'],\n [\n /@symbols/,\n {\n cases: {\n '@operators': 'operator',\n '@default': '',\n },\n },\n ],\n\n // numbers\n [/\\d+\\.\\d*(@exponent)?/, 'number.float'],\n [/\\.\\d+(@exponent)?/, 'number.float'],\n [/\\d+@exponent/, 'number.float'],\n [/0[xX][\\da-fA-F]+/, 'number.hex'],\n [/0[0-7]+/, 'number.octal'],\n [/\\d+/, 'number'],\n\n // strings: recover on non-terminated strings\n [/\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'], // non-teminated string\n [/'([^'\\\\]|\\\\.)*$/, 'string.invalid'], // non-teminated string\n [/\"/, 'string', '@string.\"'],\n [/'/, 'string', \"@string.'\"],\n ],\n\n whitespace: [\n [/[ \\t\\r\\n]+/, 'white'],\n [/\\/\\*/, 'comment', '@comment'],\n [/\\/\\/.*$/, 'comment'],\n ],\n\n comment: [\n [/[^\\/*]+/, 'comment'],\n // [/\\/\\*/, 'comment', '@push' ], // nested comment not allowed :-(\n [/\\/\\*/, 'comment.invalid'],\n ['\\\\*/', 'comment', '@pop'],\n [/[\\/*]/, 'comment'],\n ],\n\n string: [\n [/[^\\\\\"']+/, 'string'],\n [/@escapes/, 'string.escape'],\n [/\\\\./, 'string.escape.invalid'],\n [\n /[\"']/,\n {\n cases: {\n '$#==$S2': { token: 'string', next: '@pop' },\n '@default': 'string',\n },\n },\n ],\n ],\n\n // We match regular expression quite precisely\n regexp: [\n [\n /(\\{)(\\d+(?:,\\d*)?)(\\})/,\n [\n '@brackets.regexp.escape.control',\n 'regexp.escape.control',\n '@brackets.regexp.escape.control',\n ],\n ],\n [\n /(\\[)(\\^?)(?=(?:[^\\]\\\\\\/]|\\\\.)+)/,\n [\n { token: '@brackets.regexp.escape.control' },\n {\n token: 'regexp.escape.control',\n next: '@regexrange',\n },\n ],\n ],\n [\n /(\\()(\\?:|\\?=|\\?!)/,\n ['@brackets.regexp.escape.control', 'regexp.escape.control'],\n ],\n [/[()]/, '@brackets.regexp.escape.control'],\n [/@regexpctl/, 'regexp.escape.control'],\n [/[^\\\\\\/]/, 'regexp'],\n [/@regexpesc/, 'regexp.escape'],\n [/\\\\\\./, 'regexp.invalid'],\n ['/', { token: 'regexp.slash', bracket: '@close' }, '@pop'],\n ],\n\n regexrange: [\n [/-/, 'regexp.escape.control'],\n [/\\^/, 'regexp.invalid'],\n [/@regexpesc/, 'regexp.escape'],\n [/[^\\]]/, 'regexp'],\n [/\\]/, '@brackets.regexp.escape.control', '@pop'],\n ],\n },\n};\n\nconst lang: Language = { id, conf, language };\nexport default lang;\n"],"file":"db.js"}
|
|
1
|
+
{"version":3,"file":"db.js","names":["id","conf","comments","lineComment","blockComment","brackets","autoClosingPairs","open","close","notIn","surroundingPairs","onEnterRules","beforeText","RegExp","action","indentAction","folding","offSide","markers","start","end","language","tokenPostfix","keywords","builtins","operators","token","symbols","escapes","exponent","regexpctl","regexpesc","tokenizer","root","cases","$3","include","bracket","next","whitespace","comment","string","regexp","regexrange","lang"],"sources":["../../../src/monaco/lang/db.ts"],"sourcesContent":["import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport { Language } from './Language';\n\n/* eslint no-useless-escape: \"off\" */\nconst id = 'deephavenDb';\n\nconst conf: monaco.languages.LanguageConfiguration = {\n comments: {\n lineComment: '#',\n blockComment: [\"'''\", \"'''\"],\n },\n brackets: [\n ['{', '}'],\n ['[', ']'],\n ['(', ')'],\n ],\n autoClosingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"', notIn: ['string'] },\n { open: \"'\", close: \"'\", notIn: ['string', 'comment'] },\n ],\n surroundingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n onEnterRules: [\n {\n beforeText: new RegExp(\n '^\\\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\\\\s*$'\n ),\n action: { indentAction: 1 }, // see monaco.languages.IndentAction.Indent\n },\n ],\n folding: {\n offSide: true,\n markers: {\n start: new RegExp('^\\\\s*#region\\\\b'),\n end: new RegExp('^\\\\s*#endregion\\\\b'),\n },\n },\n};\n\nconst language: monaco.languages.IMonarchLanguage = {\n tokenPostfix: '.js',\n\n keywords: [\n 'boolean',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'class',\n 'const',\n 'continue',\n 'debugger',\n 'default',\n 'delete',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'export',\n 'extends',\n 'false',\n 'final',\n 'finally',\n 'float',\n 'for',\n 'function',\n 'goto',\n 'if',\n 'implements',\n 'import',\n 'in',\n 'instanceof',\n 'int',\n 'interface',\n 'long',\n 'native',\n 'new',\n 'null',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'return',\n 'short',\n 'static',\n 'super',\n 'switch',\n 'synchronized',\n 'this',\n 'throw',\n 'throws',\n 'transient',\n 'true',\n 'try',\n 'typeof',\n 'var',\n 'void',\n 'volatile',\n 'while',\n 'with',\n ],\n\n builtins: ['define', 'require', 'window', 'document', 'undefined'],\n\n operators: [\n '=',\n '>',\n '<',\n '!',\n '~',\n '?',\n ':',\n '==',\n '<=',\n '>=',\n '!=',\n '&&',\n '||',\n '++',\n '--',\n '+',\n '-',\n '*',\n '/',\n '&',\n '|',\n '^',\n '%',\n '<<',\n '>>',\n '>>>',\n '+=',\n '-=',\n '*=',\n '/=',\n '&=',\n '|=',\n '^=',\n '%=',\n '<<=',\n '>>=',\n '>>>=',\n ],\n\n // define our own brackets as '<' and '>' do not match in javascript\n brackets: [\n { open: '{', close: '}', token: 'delimiter.curly' },\n { open: '[', close: ']', token: 'delimiter.bracket' },\n { open: '(', close: ')', token: 'delimiter.parenthesis' },\n ],\n\n // common regular expressions\n symbols: /[~!@#%\\^&*-+=|\\\\:`<>.?\\/]+/,\n escapes: /\\\\(?:[btnfr\\\\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,\n exponent: /[eE][\\-+]?[0-9]+/,\n\n regexpctl: /[(){}\\[\\]\\$\\^|\\-*+?\\.]/,\n regexpesc: /\\\\(?:[bBdDfnrstvwWn0\\\\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,\n\n tokenizer: {\n root: [\n // identifiers and keywords\n [\n /([a-zA-Z_\\$][\\w\\$]*)(\\s*)(:?)/,\n {\n cases: {\n '$1@keywords': ['keyword', 'white', 'delimiter'],\n $3: ['key.identifier', 'white', 'delimiter'], // followed by :\n '$1@builtins': ['predefined.identifier', 'white', 'delimiter'],\n '@default': ['identifier', 'white', 'delimiter'],\n },\n },\n ],\n\n // whitespace\n { include: '@whitespace' },\n\n // regular expression: ensure it is terminated before beginning (otherwise it is an opeator)\n [\n /\\/(?=([^\\\\\\/]|\\\\.)+\\/)/,\n { token: 'regexp.slash', bracket: '@open', next: '@regexp' },\n ],\n\n // delimiters and operators\n [/[{}()\\[\\]]/, '@brackets'],\n [/[;,.]/, 'delimiter'],\n [\n /@symbols/,\n {\n cases: {\n '@operators': 'operator',\n '@default': '',\n },\n },\n ],\n\n // numbers\n [/\\d+\\.\\d*(@exponent)?/, 'number.float'],\n [/\\.\\d+(@exponent)?/, 'number.float'],\n [/\\d+@exponent/, 'number.float'],\n [/0[xX][\\da-fA-F]+/, 'number.hex'],\n [/0[0-7]+/, 'number.octal'],\n [/\\d+/, 'number'],\n\n // strings: recover on non-terminated strings\n [/\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'], // non-teminated string\n [/'([^'\\\\]|\\\\.)*$/, 'string.invalid'], // non-teminated string\n [/\"/, 'string', '@string.\"'],\n [/'/, 'string', \"@string.'\"],\n ],\n\n whitespace: [\n [/[ \\t\\r\\n]+/, 'white'],\n [/\\/\\*/, 'comment', '@comment'],\n [/\\/\\/.*$/, 'comment'],\n ],\n\n comment: [\n [/[^\\/*]+/, 'comment'],\n // [/\\/\\*/, 'comment', '@push' ], // nested comment not allowed :-(\n [/\\/\\*/, 'comment.invalid'],\n ['\\\\*/', 'comment', '@pop'],\n [/[\\/*]/, 'comment'],\n ],\n\n string: [\n [/[^\\\\\"']+/, 'string'],\n [/@escapes/, 'string.escape'],\n [/\\\\./, 'string.escape.invalid'],\n [\n /[\"']/,\n {\n cases: {\n '$#==$S2': { token: 'string', next: '@pop' },\n '@default': 'string',\n },\n },\n ],\n ],\n\n // We match regular expression quite precisely\n regexp: [\n [\n /(\\{)(\\d+(?:,\\d*)?)(\\})/,\n [\n '@brackets.regexp.escape.control',\n 'regexp.escape.control',\n '@brackets.regexp.escape.control',\n ],\n ],\n [\n /(\\[)(\\^?)(?=(?:[^\\]\\\\\\/]|\\\\.)+)/,\n [\n { token: '@brackets.regexp.escape.control' },\n {\n token: 'regexp.escape.control',\n next: '@regexrange',\n },\n ],\n ],\n [\n /(\\()(\\?:|\\?=|\\?!)/,\n ['@brackets.regexp.escape.control', 'regexp.escape.control'],\n ],\n [/[()]/, '@brackets.regexp.escape.control'],\n [/@regexpctl/, 'regexp.escape.control'],\n [/[^\\\\\\/]/, 'regexp'],\n [/@regexpesc/, 'regexp.escape'],\n [/\\\\\\./, 'regexp.invalid'],\n ['/', { token: 'regexp.slash', bracket: '@close' }, '@pop'],\n ],\n\n regexrange: [\n [/-/, 'regexp.escape.control'],\n [/\\^/, 'regexp.invalid'],\n [/@regexpesc/, 'regexp.escape'],\n [/[^\\]]/, 'regexp'],\n [/\\]/, '@brackets.regexp.escape.control', '@pop'],\n ],\n },\n};\n\nconst lang: Language = { id, conf, language };\nexport default lang;\n"],"mappings":"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"}
|