@deephaven/console 0.5.2-matplotlib.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/Console.d.ts +3 -0
  2. package/dist/Console.d.ts.map +1 -1
  3. package/dist/Console.js +807 -871
  4. package/dist/Console.js.map +1 -1
  5. package/dist/ConsoleInput.d.ts +1 -38
  6. package/dist/ConsoleInput.d.ts.map +1 -1
  7. package/dist/ConsoleInput.js +331 -436
  8. package/dist/ConsoleInput.js.map +1 -1
  9. package/dist/ConsoleMenu.js +159 -215
  10. package/dist/ConsoleMenu.js.map +1 -1
  11. package/dist/ConsolePropTypes.js +1 -1
  12. package/dist/ConsolePropTypes.js.map +1 -1
  13. package/dist/ConsoleShortcuts.js +2 -2
  14. package/dist/ConsoleShortcuts.js.map +1 -1
  15. package/dist/ConsoleStatusBar.js +85 -125
  16. package/dist/ConsoleStatusBar.js.map +1 -1
  17. package/dist/StoragePropTypes.js +2 -2
  18. package/dist/StoragePropTypes.js.map +1 -1
  19. package/dist/command-history/CommandHistory.css +5 -2
  20. package/dist/command-history/CommandHistory.css.map +1 -1
  21. package/dist/command-history/CommandHistory.d.ts +5 -0
  22. package/dist/command-history/CommandHistory.d.ts.map +1 -1
  23. package/dist/command-history/CommandHistory.js +303 -391
  24. package/dist/command-history/CommandHistory.js.map +1 -1
  25. package/dist/command-history/CommandHistoryActions.css +4 -0
  26. package/dist/command-history/CommandHistoryActions.css.map +1 -1
  27. package/dist/command-history/CommandHistoryActions.d.ts.map +1 -1
  28. package/dist/command-history/CommandHistoryActions.js +40 -79
  29. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  30. package/dist/command-history/CommandHistoryItem.css +1 -1
  31. package/dist/command-history/CommandHistoryItem.d.ts +5 -0
  32. package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
  33. package/dist/command-history/CommandHistoryItem.js +15 -9
  34. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  35. package/dist/command-history/CommandHistoryItemTooltip.d.ts +1 -40
  36. package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
  37. package/dist/command-history/CommandHistoryItemTooltip.js +139 -189
  38. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  39. package/dist/command-history/CommandHistoryViewportUpdater.js +30 -35
  40. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
  41. package/dist/command-history/index.js +5 -5
  42. package/dist/command-history/index.js.map +1 -1
  43. package/dist/common/Code.js +34 -70
  44. package/dist/common/Code.js.map +1 -1
  45. package/dist/common/ConsoleConstants.js +3 -24
  46. package/dist/common/ConsoleConstants.js.map +1 -1
  47. package/dist/common/ConsoleUtils.d.ts +1 -3
  48. package/dist/common/ConsoleUtils.d.ts.map +1 -1
  49. package/dist/common/ConsoleUtils.js +60 -94
  50. package/dist/common/ConsoleUtils.js.map +1 -1
  51. package/dist/common/ObjectIcon.js +4 -2
  52. package/dist/common/ObjectIcon.js.map +1 -1
  53. package/dist/common/index.d.js +1 -34
  54. package/dist/common/index.d.js.map +1 -1
  55. package/dist/common/index.js +4 -4
  56. package/dist/common/index.js.map +1 -1
  57. package/dist/console-history/ConsoleHistory.js +27 -63
  58. package/dist/console-history/ConsoleHistory.js.map +1 -1
  59. package/dist/console-history/ConsoleHistoryItem.js +116 -154
  60. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  61. package/dist/console-history/ConsoleHistoryItemResult.js +4 -2
  62. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  63. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +94 -132
  64. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  65. package/dist/console-history/ConsoleHistoryResultInProgress.js +42 -76
  66. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  67. package/dist/console-history/index.js +5 -5
  68. package/dist/console-history/index.js.map +1 -1
  69. package/dist/csv/CsvFormats.js +14 -28
  70. package/dist/csv/CsvFormats.js.map +1 -1
  71. package/dist/csv/CsvInputBar.css +25 -23
  72. package/dist/csv/CsvInputBar.css.map +1 -1
  73. package/dist/csv/CsvInputBar.d.ts +2 -45
  74. package/dist/csv/CsvInputBar.d.ts.map +1 -1
  75. package/dist/csv/CsvInputBar.js +298 -372
  76. package/dist/csv/CsvInputBar.js.map +1 -1
  77. package/dist/csv/CsvOverlay.js +197 -243
  78. package/dist/csv/CsvOverlay.js.map +1 -1
  79. package/dist/csv/CsvParser.js +186 -209
  80. package/dist/csv/CsvParser.js.map +1 -1
  81. package/dist/csv/CsvTypeParser.js +185 -210
  82. package/dist/csv/CsvTypeParser.js.map +1 -1
  83. package/dist/csv/NewTableColumnTypes.js +1 -5
  84. package/dist/csv/NewTableColumnTypes.js.map +1 -1
  85. package/dist/index.js +14 -14
  86. package/dist/index.js.map +1 -1
  87. package/dist/log/LogLevelMenuItem.js +24 -58
  88. package/dist/log/LogLevelMenuItem.js.map +1 -1
  89. package/dist/log/LogView.js +429 -484
  90. package/dist/log/LogView.js.map +1 -1
  91. package/dist/monaco/MonacoCompletionProvider.js +92 -124
  92. package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
  93. package/dist/monaco/MonacoUtils.js +315 -331
  94. package/dist/monaco/MonacoUtils.js.map +1 -1
  95. package/dist/monaco/index.js +2 -2
  96. package/dist/monaco/index.js.map +1 -1
  97. package/dist/monaco/lang/db.js +3 -3
  98. package/dist/monaco/lang/db.js.map +1 -1
  99. package/dist/monaco/lang/groovy.js +3 -3
  100. package/dist/monaco/lang/groovy.js.map +1 -1
  101. package/dist/monaco/lang/log.js +3 -3
  102. package/dist/monaco/lang/log.js.map +1 -1
  103. package/dist/monaco/lang/python.js +3 -3
  104. package/dist/monaco/lang/python.js.map +1 -1
  105. package/dist/monaco/lang/scala.js +5 -5
  106. package/dist/monaco/lang/scala.js.map +1 -1
  107. package/dist/notebook/Editor.js +101 -141
  108. package/dist/notebook/Editor.js.map +1 -1
  109. package/dist/notebook/ScriptEditor.js +261 -301
  110. package/dist/notebook/ScriptEditor.js.map +1 -1
  111. package/dist/notebook/ScriptEditorUtils.js +26 -42
  112. package/dist/notebook/ScriptEditorUtils.js.map +1 -1
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +17 -22
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/log/LogView.jsx"],"names":["React","PureComponent","FontAwesomeIcon","DropdownMenu","Tooltip","vsGear","dhTrashUndo","PropTypes","APIPropTypes","monaco","ConsoleUtils","LogLevel","LogLevelMenuItem","LogView","props","handleClearClick","bind","handleFlushTimeout","handleLogMessage","handleMenuItemClick","handleResetClick","handleResize","handleToggleAllClick","cancelListener","editor","editorContainer","logLevelMenuItems","flushTimer","bufferedMessages","messages","state","shownLogLevels","resetLogLevels","initMonaco","startListening","window","addEventListener","prevProps","prevState","updateDimensions","refreshLogText","session","stopListening","clearLogs","stopFlushTimer","destroyMonaco","removeEventListener","actions","push","menuElement","group","order","i","logLevel","AllLogLevels","on","title","element","length","isEnabled","DefaultLogLevels","indexOf","setState","onLogMessage","create","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","language","lineDecorationsWidth","lineNumbers","lineNumbersMinChars","minimap","enabled","readOnly","renderLineHighlight","scrollBeyondLastLine","value","wordWrap","addCommand","KeyCode","Escape","KeyMod","Shift","setPosition","getPosition","dispose","focus","trigger","isAllEnabled","updatedLogLevels","updateLogLevels","text","model","getModel","line","getLineCount","column","getLineLength","isBottomVisible","edits","range","startLineNumber","startColumn","endLineNumber","endColumn","forceMoveMarkers","applyEdits","revealLine","truncateLogIfNecessary","message","logText","getLogText","charAt","trimRight","setValue","maxLogSize","splice","truncateSize","isLineVisible","visibleRanges","getVisibleRanges","appendLogText","setTimeout","bufferTimeout","clearTimeout","layout","flush","isLogItemVisible","queue","toggleLogLevel","toggleAll","popperOptions","placement","getMenuActions","logItem","date","Date","micros","timestamp","formatTimestamp","STDOUT","ERROR","FATAL","STDERR","WARN","INFO","DEBUG","TRACE","propTypes","IdeSession","isRequired"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DropdownMenu, Tooltip } from '@deephaven/components';\nimport { vsGear, dhTrashUndo } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nimport ConsoleUtils from '../common/ConsoleUtils';\nimport LogLevel from './LogLevel';\nimport './LogView.scss';\nimport LogLevelMenuItem from './LogLevelMenuItem';\n\n/**\n * Log view contents. Uses a monaco editor to display/search the contents of the log.\n */\nclass LogView extends PureComponent {\n static DefaultLogLevels = [\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n ];\n\n static AllLogLevels = [\n LogLevel.INFO,\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n LogLevel.DEBUG,\n LogLevel.TRACE,\n ];\n\n /** ms to buffer log messages before processing them */\n static bufferTimeout = 16;\n\n /** Maximum number of messages to store in the log */\n static maxLogSize = 131072;\n\n static truncateSize = 65536;\n\n static getLogText(logItem) {\n const date = new Date(logItem.micros / 1000);\n const timestamp = ConsoleUtils.formatTimestamp(date);\n return `${timestamp} ${logItem.logLevel} ${logItem.message}`;\n }\n\n constructor(props) {\n super(props);\n\n this.handleClearClick = this.handleClearClick.bind(this);\n this.handleFlushTimeout = this.handleFlushTimeout.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleResetClick = this.handleResetClick.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleToggleAllClick = this.handleToggleAllClick.bind(this);\n\n this.cancelListener = null;\n this.editor = null;\n this.editorContainer = null;\n this.logLevelMenuItems = {};\n this.flushTimer = null;\n\n this.bufferedMessages = [];\n this.messages = [];\n\n this.state = {\n shownLogLevels: {},\n };\n }\n\n componentDidMount() {\n this.resetLogLevels();\n this.initMonaco();\n this.startListening();\n\n window.addEventListener('resize', this.handleResize);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.updateDimensions();\n\n const { shownLogLevels } = this.state;\n if (prevState.shownLogLevels !== shownLogLevels) {\n this.refreshLogText();\n }\n\n const { session } = this.props;\n if (prevProps.session !== session) {\n this.stopListening();\n this.startListening();\n // clear logs when starting a new console\n this.clearLogs();\n }\n }\n\n componentWillUnmount() {\n this.stopFlushTimer();\n this.stopListening();\n this.destroyMonaco();\n\n window.removeEventListener('resize', this.handleResize);\n }\n\n getMenuActions(shownLogLevels) {\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"log-level-menu-title\">Display Log Levels</div>\n ),\n group: 1,\n order: 10,\n });\n\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const on =\n shownLogLevels[logLevel] != null ? shownLogLevels[logLevel] : false;\n actions.push({\n title: logLevel,\n group: 1,\n order: i + 100,\n\n menuElement: (\n <LogLevelMenuItem\n logLevel={logLevel}\n on={on}\n onClick={this.handleMenuItemClick}\n ref={element => {\n this.logLevelMenuItems[logLevel] = element;\n }}\n />\n ),\n });\n }\n\n actions.push({\n group: 1,\n order: 1000,\n menuElement: (\n <div className=\"log-level-menu-controls\">\n <button\n type=\"button\"\n className=\"btn btn-link log-level-toggle-all\"\n onClick={this.handleToggleAllClick}\n >\n Toggle All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleResetClick}\n >\n Reset\n </button>\n </div>\n ),\n });\n\n return actions;\n }\n\n resetLogLevels() {\n const shownLogLevels = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const isEnabled = LogView.DefaultLogLevels.indexOf(logLevel) >= 0;\n shownLogLevels[logLevel] = isEnabled;\n }\n\n this.setState({ shownLogLevels });\n }\n\n startListening() {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n stopListening() {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = null;\n }\n }\n\n initMonaco() {\n this.editor = monaco.editor.create(this.editorContainer, {\n copyWithSyntaxHighlighting: 'false',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'log',\n lineDecorationsWidth: 0,\n lineNumbers: '',\n lineNumbersMinChars: 0,\n minimap: { enabled: false },\n readOnly: true,\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n value: '',\n wordWrap: 'on',\n });\n\n // When find widget is open, escape key closes it.\n // Instead, capture it and do nothing. Same for shift-escape.\n this.editor.addCommand(monaco.KeyCode.Escape, () => {});\n this.editor.addCommand(\n // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Shift | monaco.KeyCode.Escape,\n () => {}\n );\n\n // Restore regular escape to clear selection, when editorText has focus.\n this.editor.addCommand(\n monaco.KeyCode.Escape,\n () => {\n this.editor.setPosition(this.editor.getPosition());\n },\n 'findWidgetVisible && editorTextFocus'\n );\n\n this.editor.addCommand(\n // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Shift | monaco.KeyCode.Escape,\n () => {\n this.editor.setPosition(this.editor.getPosition());\n },\n 'findWidgetVisible && editorTextFocus'\n );\n }\n\n destroyMonaco() {\n if (this.editor) {\n this.editor.dispose();\n this.editor = null;\n }\n }\n\n triggerFindWidget() {\n // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.\n // As a workaround, just focus the editor before triggering the action\n // https://github.com/microsoft/monaco-editor/issues/2355\n this.editor.focus();\n this.editor.trigger('keyboard', 'actions.find');\n }\n\n toggleAll() {\n const { shownLogLevels } = this.state;\n let isAllEnabled = true;\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n if (!shownLogLevels[logLevel]) {\n isAllEnabled = false;\n break;\n }\n }\n\n if (isAllEnabled) {\n this.setState({ shownLogLevels: {} });\n } else {\n const updatedLogLevels = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n updatedLogLevels[logLevel] = true;\n }\n this.setState({ shownLogLevels: updatedLogLevels });\n }\n }\n\n toggleLogLevel(logLevel) {\n const { shownLogLevels } = this.state;\n const isEnabled = shownLogLevels[logLevel];\n const updatedLogLevels = {};\n updatedLogLevels[logLevel] = !isEnabled;\n this.updateLogLevels(updatedLogLevels);\n }\n\n updateLogLevels(updatedLogLevels) {\n let { shownLogLevels } = this.state;\n shownLogLevels = { ...shownLogLevels, ...updatedLogLevels };\n this.setState({ shownLogLevels });\n }\n\n appendLogText(text) {\n if (!this.editor) {\n return;\n }\n\n const model = this.editor.getModel();\n let line = model.getLineCount();\n let column = model.getLineLength(line);\n const isBottomVisible = this.isBottomVisible();\n\n const edits = [];\n if (column > 0) {\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column + 1,\n endLineNumber: line,\n endColumn: column + 1,\n },\n text: '\\n',\n forceMoveMarkers: true,\n });\n line += 1;\n column = 0;\n }\n\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column,\n endLineNumber: line,\n endColumn: column,\n },\n text,\n forceMoveMarkers: true,\n });\n\n model.applyEdits(edits);\n\n if (isBottomVisible) {\n this.editor.revealLine(model.getLineCount(), 1);\n }\n }\n\n /**\n * Refresh the contents of the log component with the updated filter text\n */\n refreshLogText() {\n if (!this.editor) {\n return;\n }\n\n this.truncateLogIfNecessary();\n\n const { shownLogLevels } = this.state;\n const isBottomVisible = this.isBottomVisible();\n\n let text = '';\n for (let i = 0; i < this.messages.length; i += 1) {\n const message = this.messages[i];\n if (shownLogLevels[message.logLevel]) {\n const logText = LogView.getLogText(message);\n if (logText.length > 0) {\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n }\n }\n text = text.trimRight();\n\n this.editor.setValue(text);\n\n if (isBottomVisible) {\n const line = this.editor.getModel().getLineCount();\n this.editor.revealLine(line, 1);\n }\n\n this.stopFlushTimer();\n this.bufferedMessages = [];\n }\n\n truncateLogIfNecessary() {\n if (this.messages.length > LogView.maxLogSize) {\n this.messages = this.messages.splice(\n this.messages.length - LogView.truncateSize\n );\n }\n }\n\n scrollToBottom() {\n if (!this.editor) {\n return;\n }\n\n const line = this.editor.getModel().getLineCount();\n this.editor.revealLine(line, 1);\n }\n\n isBottomVisible() {\n if (!this.editor) {\n return true;\n }\n\n const model = this.editor.getModel();\n const line = model.getLineCount();\n\n return this.isLineVisible(line);\n }\n\n isLineVisible(line) {\n const visibleRanges = this.editor.getVisibleRanges();\n if (visibleRanges == null || visibleRanges.length === 0) {\n return false;\n }\n\n for (let i = 0; i < visibleRanges.length; i += 1) {\n const range = visibleRanges[i];\n if (range.startLineNumber <= line && line <= range.endLineNumber) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Checks if the given log message is visible with the current filters */\n isLogItemVisible(message) {\n const { shownLogLevels } = this.state;\n return shownLogLevels[message.logLevel];\n }\n\n flush() {\n let text = '';\n for (let i = 0; i < this.bufferedMessages.length; i += 1) {\n const message = this.bufferedMessages[i];\n const logText = LogView.getLogText(message);\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n\n this.bufferedMessages = [];\n\n this.appendLogText(text);\n }\n\n queue(message) {\n this.bufferedMessages.push(message);\n if (this.bufferedMessages.length === 1) {\n this.flushTimer = setTimeout(\n this.handleFlushTimeout,\n LogView.bufferTimeout\n );\n }\n }\n\n stopFlushTimer() {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = null;\n }\n }\n\n updateDimensions() {\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n handleClearClick() {\n this.clearLogs();\n }\n\n clearLogs() {\n this.messages = [];\n this.refreshLogText();\n }\n\n handleFlushTimeout() {\n this.stopFlushTimer();\n this.flush();\n }\n\n handleLogMessage(message) {\n this.messages.push(message);\n\n if (this.editor && this.isLogItemVisible(message)) {\n this.queue(message);\n }\n }\n\n handleMenuItemClick(logLevel) {\n this.toggleLogLevel(logLevel);\n }\n\n handleResetClick() {\n this.resetLogLevels();\n }\n\n handleResize() {\n this.updateDimensions();\n }\n\n handleToggleAllClick() {\n this.toggleAll();\n }\n\n render() {\n const popperOptions = { placement: 'bottom-end' };\n const { shownLogLevels } = this.state;\n const actions = this.getMenuActions(shownLogLevels);\n return (\n <div className=\"log-pane h-100 w-100\">\n <div className=\"log-pane-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-clear-logs\"\n onClick={this.handleClearClick}\n >\n <FontAwesomeIcon icon={dhTrashUndo} />\n <Tooltip>Clear log</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-overflow\"\n >\n <FontAwesomeIcon icon={vsGear} />\n <Tooltip>Log Settings</Tooltip>\n <DropdownMenu\n actions={actions}\n popperClassName=\"log-level-menu-popper\"\n popperOptions={popperOptions}\n />\n </button>\n </div>\n <div\n className=\"log-pane-editor h-100 w-100\"\n ref={editorContainer => {\n this.editorContainer = editorContainer;\n }}\n />\n </div>\n );\n }\n}\n\nLogView.propTypes = {\n session: APIPropTypes.IdeSession.isRequired,\n};\n\nexport default LogView;\n"],"file":"LogView.js"}
1
+ {"version":3,"sources":["../../src/log/LogView.jsx"],"names":["React","PureComponent","FontAwesomeIcon","DropdownMenu","Tooltip","vsGear","dhTrashUndo","PropTypes","APIPropTypes","monaco","ConsoleUtils","LogLevel","LogLevelMenuItem","LogView","getLogText","logItem","date","Date","micros","timestamp","formatTimestamp","logLevel","message","constructor","props","handleClearClick","bind","handleFlushTimeout","handleLogMessage","handleMenuItemClick","handleResetClick","handleResize","handleToggleAllClick","cancelListener","editor","editorContainer","logLevelMenuItems","flushTimer","bufferedMessages","messages","state","shownLogLevels","componentDidMount","resetLogLevels","initMonaco","startListening","window","addEventListener","componentDidUpdate","prevProps","prevState","updateDimensions","refreshLogText","session","stopListening","clearLogs","componentWillUnmount","stopFlushTimer","destroyMonaco","removeEventListener","getMenuActions","actions","push","menuElement","group","order","i","AllLogLevels","on","title","element","length","isEnabled","DefaultLogLevels","indexOf","setState","onLogMessage","create","copyWithSyntaxHighlighting","fixedOverflowWidgets","folding","fontFamily","glyphMargin","language","lineDecorationsWidth","lineNumbers","lineNumbersMinChars","minimap","enabled","readOnly","renderLineHighlight","scrollBeyondLastLine","value","wordWrap","addCommand","KeyCode","Escape","KeyMod","Shift","setPosition","getPosition","dispose","triggerFindWidget","focus","trigger","toggleAll","isAllEnabled","updatedLogLevels","toggleLogLevel","updateLogLevels","appendLogText","text","model","getModel","line","getLineCount","column","getLineLength","isBottomVisible","edits","range","startLineNumber","startColumn","endLineNumber","endColumn","forceMoveMarkers","applyEdits","revealLine","truncateLogIfNecessary","logText","charAt","trimRight","setValue","maxLogSize","splice","truncateSize","scrollToBottom","isLineVisible","visibleRanges","getVisibleRanges","isLogItemVisible","flush","queue","setTimeout","bufferTimeout","clearTimeout","layout","render","popperOptions","placement","STDOUT","ERROR","FATAL","STDERR","WARN","INFO","DEBUG","TRACE","propTypes","IdeSession","isRequired"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DropdownMenu, Tooltip } from '@deephaven/components';\nimport { vsGear, dhTrashUndo } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nimport ConsoleUtils from '../common/ConsoleUtils';\nimport LogLevel from './LogLevel';\nimport './LogView.scss';\nimport LogLevelMenuItem from './LogLevelMenuItem';\n\n/**\n * Log view contents. Uses a monaco editor to display/search the contents of the log.\n */\nclass LogView extends PureComponent {\n static DefaultLogLevels = [\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n ];\n\n static AllLogLevels = [\n LogLevel.INFO,\n LogLevel.STDOUT,\n LogLevel.ERROR,\n LogLevel.FATAL,\n LogLevel.STDERR,\n LogLevel.WARN,\n LogLevel.DEBUG,\n LogLevel.TRACE,\n ];\n\n /** ms to buffer log messages before processing them */\n static bufferTimeout = 16;\n\n /** Maximum number of messages to store in the log */\n static maxLogSize = 131072;\n\n static truncateSize = 65536;\n\n static getLogText(logItem) {\n const date = new Date(logItem.micros / 1000);\n const timestamp = ConsoleUtils.formatTimestamp(date);\n return `${timestamp} ${logItem.logLevel} ${logItem.message}`;\n }\n\n constructor(props) {\n super(props);\n\n this.handleClearClick = this.handleClearClick.bind(this);\n this.handleFlushTimeout = this.handleFlushTimeout.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleResetClick = this.handleResetClick.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleToggleAllClick = this.handleToggleAllClick.bind(this);\n\n this.cancelListener = null;\n this.editor = null;\n this.editorContainer = null;\n this.logLevelMenuItems = {};\n this.flushTimer = null;\n\n this.bufferedMessages = [];\n this.messages = [];\n\n this.state = {\n shownLogLevels: {},\n };\n }\n\n componentDidMount() {\n this.resetLogLevels();\n this.initMonaco();\n this.startListening();\n\n window.addEventListener('resize', this.handleResize);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.updateDimensions();\n\n const { shownLogLevels } = this.state;\n if (prevState.shownLogLevels !== shownLogLevels) {\n this.refreshLogText();\n }\n\n const { session } = this.props;\n if (prevProps.session !== session) {\n this.stopListening();\n this.startListening();\n // clear logs when starting a new console\n this.clearLogs();\n }\n }\n\n componentWillUnmount() {\n this.stopFlushTimer();\n this.stopListening();\n this.destroyMonaco();\n\n window.removeEventListener('resize', this.handleResize);\n }\n\n getMenuActions(shownLogLevels) {\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"log-level-menu-title\">Display Log Levels</div>\n ),\n group: 1,\n order: 10,\n });\n\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const on =\n shownLogLevels[logLevel] != null ? shownLogLevels[logLevel] : false;\n actions.push({\n title: logLevel,\n group: 1,\n order: i + 100,\n\n menuElement: (\n <LogLevelMenuItem\n logLevel={logLevel}\n on={on}\n onClick={this.handleMenuItemClick}\n ref={element => {\n this.logLevelMenuItems[logLevel] = element;\n }}\n />\n ),\n });\n }\n\n actions.push({\n group: 1,\n order: 1000,\n menuElement: (\n <div className=\"log-level-menu-controls\">\n <button\n type=\"button\"\n className=\"btn btn-link log-level-toggle-all\"\n onClick={this.handleToggleAllClick}\n >\n Toggle All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleResetClick}\n >\n Reset\n </button>\n </div>\n ),\n });\n\n return actions;\n }\n\n resetLogLevels() {\n const shownLogLevels = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n const isEnabled = LogView.DefaultLogLevels.indexOf(logLevel) >= 0;\n shownLogLevels[logLevel] = isEnabled;\n }\n\n this.setState({ shownLogLevels });\n }\n\n startListening() {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n stopListening() {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = null;\n }\n }\n\n initMonaco() {\n this.editor = monaco.editor.create(this.editorContainer, {\n copyWithSyntaxHighlighting: 'false',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'log',\n lineDecorationsWidth: 0,\n lineNumbers: '',\n lineNumbersMinChars: 0,\n minimap: { enabled: false },\n readOnly: true,\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n value: '',\n wordWrap: 'on',\n });\n\n // When find widget is open, escape key closes it.\n // Instead, capture it and do nothing. Same for shift-escape.\n this.editor.addCommand(monaco.KeyCode.Escape, () => {});\n this.editor.addCommand(\n // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Shift | monaco.KeyCode.Escape,\n () => {}\n );\n\n // Restore regular escape to clear selection, when editorText has focus.\n this.editor.addCommand(\n monaco.KeyCode.Escape,\n () => {\n this.editor.setPosition(this.editor.getPosition());\n },\n 'findWidgetVisible && editorTextFocus'\n );\n\n this.editor.addCommand(\n // eslint-disable-next-line no-bitwise\n monaco.KeyMod.Shift | monaco.KeyCode.Escape,\n () => {\n this.editor.setPosition(this.editor.getPosition());\n },\n 'findWidgetVisible && editorTextFocus'\n );\n }\n\n destroyMonaco() {\n if (this.editor) {\n this.editor.dispose();\n this.editor = null;\n }\n }\n\n triggerFindWidget() {\n // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.\n // As a workaround, just focus the editor before triggering the action\n // https://github.com/microsoft/monaco-editor/issues/2355\n this.editor.focus();\n this.editor.trigger('keyboard', 'actions.find');\n }\n\n toggleAll() {\n const { shownLogLevels } = this.state;\n let isAllEnabled = true;\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n if (!shownLogLevels[logLevel]) {\n isAllEnabled = false;\n break;\n }\n }\n\n if (isAllEnabled) {\n this.setState({ shownLogLevels: {} });\n } else {\n const updatedLogLevels = {};\n for (let i = 0; i < LogView.AllLogLevels.length; i += 1) {\n const logLevel = LogView.AllLogLevels[i];\n updatedLogLevels[logLevel] = true;\n }\n this.setState({ shownLogLevels: updatedLogLevels });\n }\n }\n\n toggleLogLevel(logLevel) {\n const { shownLogLevels } = this.state;\n const isEnabled = shownLogLevels[logLevel];\n const updatedLogLevels = {};\n updatedLogLevels[logLevel] = !isEnabled;\n this.updateLogLevels(updatedLogLevels);\n }\n\n updateLogLevels(updatedLogLevels) {\n let { shownLogLevels } = this.state;\n shownLogLevels = { ...shownLogLevels, ...updatedLogLevels };\n this.setState({ shownLogLevels });\n }\n\n appendLogText(text) {\n if (!this.editor) {\n return;\n }\n\n const model = this.editor.getModel();\n let line = model.getLineCount();\n let column = model.getLineLength(line);\n const isBottomVisible = this.isBottomVisible();\n\n const edits = [];\n if (column > 0) {\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column + 1,\n endLineNumber: line,\n endColumn: column + 1,\n },\n text: '\\n',\n forceMoveMarkers: true,\n });\n line += 1;\n column = 0;\n }\n\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column,\n endLineNumber: line,\n endColumn: column,\n },\n text,\n forceMoveMarkers: true,\n });\n\n model.applyEdits(edits);\n\n if (isBottomVisible) {\n this.editor.revealLine(model.getLineCount(), 1);\n }\n }\n\n /**\n * Refresh the contents of the log component with the updated filter text\n */\n refreshLogText() {\n if (!this.editor) {\n return;\n }\n\n this.truncateLogIfNecessary();\n\n const { shownLogLevels } = this.state;\n const isBottomVisible = this.isBottomVisible();\n\n let text = '';\n for (let i = 0; i < this.messages.length; i += 1) {\n const message = this.messages[i];\n if (shownLogLevels[message.logLevel]) {\n const logText = LogView.getLogText(message);\n if (logText.length > 0) {\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n }\n }\n text = text.trimRight();\n\n this.editor.setValue(text);\n\n if (isBottomVisible) {\n const line = this.editor.getModel().getLineCount();\n this.editor.revealLine(line, 1);\n }\n\n this.stopFlushTimer();\n this.bufferedMessages = [];\n }\n\n truncateLogIfNecessary() {\n if (this.messages.length > LogView.maxLogSize) {\n this.messages = this.messages.splice(\n this.messages.length - LogView.truncateSize\n );\n }\n }\n\n scrollToBottom() {\n if (!this.editor) {\n return;\n }\n\n const line = this.editor.getModel().getLineCount();\n this.editor.revealLine(line, 1);\n }\n\n isBottomVisible() {\n if (!this.editor) {\n return true;\n }\n\n const model = this.editor.getModel();\n const line = model.getLineCount();\n\n return this.isLineVisible(line);\n }\n\n isLineVisible(line) {\n const visibleRanges = this.editor.getVisibleRanges();\n if (visibleRanges == null || visibleRanges.length === 0) {\n return false;\n }\n\n for (let i = 0; i < visibleRanges.length; i += 1) {\n const range = visibleRanges[i];\n if (range.startLineNumber <= line && line <= range.endLineNumber) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Checks if the given log message is visible with the current filters */\n isLogItemVisible(message) {\n const { shownLogLevels } = this.state;\n return shownLogLevels[message.logLevel];\n }\n\n flush() {\n let text = '';\n for (let i = 0; i < this.bufferedMessages.length; i += 1) {\n const message = this.bufferedMessages[i];\n const logText = LogView.getLogText(message);\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n\n this.bufferedMessages = [];\n\n this.appendLogText(text);\n }\n\n queue(message) {\n this.bufferedMessages.push(message);\n if (this.bufferedMessages.length === 1) {\n this.flushTimer = setTimeout(\n this.handleFlushTimeout,\n LogView.bufferTimeout\n );\n }\n }\n\n stopFlushTimer() {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = null;\n }\n }\n\n updateDimensions() {\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n handleClearClick() {\n this.clearLogs();\n }\n\n clearLogs() {\n this.messages = [];\n this.refreshLogText();\n }\n\n handleFlushTimeout() {\n this.stopFlushTimer();\n this.flush();\n }\n\n handleLogMessage(message) {\n this.messages.push(message);\n\n if (this.editor && this.isLogItemVisible(message)) {\n this.queue(message);\n }\n }\n\n handleMenuItemClick(logLevel) {\n this.toggleLogLevel(logLevel);\n }\n\n handleResetClick() {\n this.resetLogLevels();\n }\n\n handleResize() {\n this.updateDimensions();\n }\n\n handleToggleAllClick() {\n this.toggleAll();\n }\n\n render() {\n const popperOptions = { placement: 'bottom-end' };\n const { shownLogLevels } = this.state;\n const actions = this.getMenuActions(shownLogLevels);\n return (\n <div className=\"log-pane h-100 w-100\">\n <div className=\"log-pane-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-clear-logs\"\n onClick={this.handleClearClick}\n >\n <FontAwesomeIcon icon={dhTrashUndo} />\n <Tooltip>Clear log</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-overflow\"\n >\n <FontAwesomeIcon icon={vsGear} />\n <Tooltip>Log Settings</Tooltip>\n <DropdownMenu\n actions={actions}\n popperClassName=\"log-level-menu-popper\"\n popperOptions={popperOptions}\n />\n </button>\n </div>\n <div\n className=\"log-pane-editor h-100 w-100\"\n ref={editorContainer => {\n this.editorContainer = editorContainer;\n }}\n />\n </div>\n );\n }\n}\n\nLogView.propTypes = {\n session: APIPropTypes.IdeSession.isRequired,\n};\n\nexport default LogView;\n"],"file":"LogView.js"}
@@ -1,25 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
-
3
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4
-
5
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6
-
7
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8
-
9
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
10
-
11
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12
-
13
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
14
-
15
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
16
-
17
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
18
-
19
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
20
-
21
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
22
-
23
1
  /**
24
2
  * Completion provider for a code session
25
3
  */
@@ -32,119 +10,109 @@ var log = Log.module('MonacoCompletionProvider');
32
10
  * Registers a completion provider with monaco for the language and session provided.
33
11
  */
34
12
 
35
- var MonacoCompletionProvider = /*#__PURE__*/function (_PureComponent) {
36
- _inherits(MonacoCompletionProvider, _PureComponent);
37
-
38
- var _super = _createSuper(MonacoCompletionProvider);
39
-
40
- function MonacoCompletionProvider(props) {
41
- var _this;
42
-
43
- _classCallCheck(this, MonacoCompletionProvider);
13
+ class MonacoCompletionProvider extends PureComponent {
14
+ constructor(props) {
15
+ super(props);
16
+ this.handleCompletionRequest = this.handleCompletionRequest.bind(this);
17
+ this.registeredCompletionProvider = null;
18
+ }
44
19
 
45
- _this = _super.call(this, props);
46
- _this.handleCompletionRequest = _this.handleCompletionRequest.bind(_assertThisInitialized(_this));
47
- _this.registeredCompletionProvider = null;
48
- return _this;
20
+ componentDidMount() {
21
+ var {
22
+ language
23
+ } = this.props;
24
+ this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {
25
+ provideCompletionItems: this.handleCompletionRequest,
26
+ triggerCharacters: ['"', '.', "'", '(', '[', '{', ',']
27
+ });
49
28
  }
50
29
 
51
- _createClass(MonacoCompletionProvider, [{
52
- key: "componentDidMount",
53
- value: function componentDidMount() {
54
- var language = this.props.language;
55
- this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {
56
- provideCompletionItems: this.handleCompletionRequest,
57
- triggerCharacters: ['"', '.', "'", '(', '[', '{', ',']
58
- });
59
- }
60
- }, {
61
- key: "componentWillUnmount",
62
- value: function componentWillUnmount() {
63
- this.registeredCompletionProvider.dispose();
64
- }
65
- }, {
66
- key: "handleCompletionRequest",
67
- value: function handleCompletionRequest(model, position, context) {
68
- var _this$props = this.props,
69
- propModel = _this$props.model,
70
- session = _this$props.session;
30
+ componentWillUnmount() {
31
+ this.registeredCompletionProvider.dispose();
32
+ }
71
33
 
72
- if (model !== propModel) {
73
- return null;
74
- }
34
+ handleCompletionRequest(model, position, context) {
35
+ var {
36
+ model: propModel,
37
+ session
38
+ } = this.props;
75
39
 
76
- var params = {
77
- textDocument: {
78
- uri: "".concat(model.uri)
79
- },
80
- // Yes, the Monaco API Position is different than the Position received by the LSP
81
- // Why? I do not know.
82
- position: {
83
- line: position.lineNumber - 1,
84
- character: position.column - 1
85
- },
86
- context: context
87
- };
88
- var completionItems = session.getCompletionItems(params);
89
- log.debug('Completion items received: ', params, completionItems);
90
- completionItems = completionItems.then(function (items) {
91
- // Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects
92
- // Need to remap the items here
93
- var suggestions = items.map(function (item) {
94
- var label = item.label,
95
- kind = item.kind,
96
- detail = item.detail,
97
- documentation = item.documentation,
98
- sortText = item.sortText,
99
- filterText = item.filterText,
100
- textEdit = item.textEdit,
101
- insertTextFormat = item.insertTextFormat;
102
- var _textEdit$range = textEdit.range,
103
- start = _textEdit$range.start,
104
- end = _textEdit$range.end; // Monaco expects the columns/ranges to start at 1.
40
+ if (model !== propModel) {
41
+ return null;
42
+ }
105
43
 
106
- var range = {
107
- startLineNumber: start.line + 1,
108
- startColumn: start.character + 1,
109
- endLineNumber: end.line + 1,
110
- endColumn: end.character + 1
111
- };
112
- return {
113
- label: label,
114
- kind: kind,
115
- detail: detail,
116
- documentation: documentation,
117
- sortText: sortText,
118
- filterText: filterText,
119
- insertText: textEdit.text,
120
- // We are basically guessing that LSP's insertTextFormat===2 is
121
- // semantically equivalent to monaco's insertTextRules===4.
122
- // Why microsoft is using almost-but-not-LSP apis is beyond me....
123
- insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,
124
- range: range
125
- };
126
- });
127
- return {
128
- incomplete: true,
129
- suggestions: suggestions
44
+ var params = {
45
+ textDocument: {
46
+ uri: "".concat(model.uri)
47
+ },
48
+ // Yes, the Monaco API Position is different than the Position received by the LSP
49
+ // Why? I do not know.
50
+ position: {
51
+ line: position.lineNumber - 1,
52
+ character: position.column - 1
53
+ },
54
+ context
55
+ };
56
+ var completionItems = session.getCompletionItems(params);
57
+ log.debug('Completion items received: ', params, completionItems);
58
+ completionItems = completionItems.then(items => {
59
+ // Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects
60
+ // Need to remap the items here
61
+ var suggestions = items.map(item => {
62
+ var {
63
+ label,
64
+ kind,
65
+ detail,
66
+ documentation,
67
+ sortText,
68
+ filterText,
69
+ textEdit,
70
+ insertTextFormat
71
+ } = item;
72
+ var {
73
+ start,
74
+ end
75
+ } = textEdit.range; // Monaco expects the columns/ranges to start at 1.
76
+
77
+ var range = {
78
+ startLineNumber: start.line + 1,
79
+ startColumn: start.character + 1,
80
+ endLineNumber: end.line + 1,
81
+ endColumn: end.character + 1
130
82
  };
131
- })["catch"](function (error) {
132
- log.error('There was an error retrieving completion items', error);
133
83
  return {
134
- suggestions: []
84
+ label,
85
+ kind,
86
+ detail,
87
+ documentation,
88
+ sortText,
89
+ filterText,
90
+ insertText: textEdit.text,
91
+ // We are basically guessing that LSP's insertTextFormat===2 is
92
+ // semantically equivalent to monaco's insertTextRules===4.
93
+ // Why microsoft is using almost-but-not-LSP apis is beyond me....
94
+ insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,
95
+ range
135
96
  };
136
97
  });
137
- return completionItems;
138
- }
139
- }, {
140
- key: "render",
141
- value: function render() {
142
- return null;
143
- }
144
- }]);
98
+ return {
99
+ incomplete: true,
100
+ suggestions
101
+ };
102
+ }).catch(error => {
103
+ log.error('There was an error retrieving completion items', error);
104
+ return {
105
+ suggestions: []
106
+ };
107
+ });
108
+ return completionItems;
109
+ }
110
+
111
+ render() {
112
+ return null;
113
+ }
145
114
 
146
- return MonacoCompletionProvider;
147
- }(PureComponent);
115
+ }
148
116
 
149
117
  MonacoCompletionProvider.propTypes = {
150
118
  model: PropTypes.shape({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/monaco/MonacoCompletionProvider.jsx"],"names":["PureComponent","PropTypes","monaco","Log","log","module","MonacoCompletionProvider","props","handleCompletionRequest","bind","registeredCompletionProvider","language","languages","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","dispose","model","position","context","propModel","session","params","textDocument","uri","line","lineNumber","character","column","completionItems","getCompletionItems","debug","then","items","suggestions","map","item","label","kind","detail","documentation","sortText","filterText","textEdit","insertTextFormat","range","start","end","startLineNumber","startColumn","endLineNumber","endColumn","insertText","text","insertTextRules","incomplete","error","propTypes","shape","isRequired","func","string"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA,SAASA,aAAT,QAA8B,OAA9B;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAO,KAAKC,MAAZ,MAAwB,wCAAxB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AAEA,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAJ,CAAW,0BAAX,CAAZ;AAEA;AACA;AACA;;IACMC,wB;;;;;AACJ,oCAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;AAEA,UAAKC,uBAAL,GAA+B,MAAKA,uBAAL,CAA6BC,IAA7B,+BAA/B;AAEA,UAAKC,4BAAL,GAAoC,IAApC;AALiB;AAMlB;;;;WAED,6BAAoB;AAClB,UAAQC,QAAR,GAAqB,KAAKJ,KAA1B,CAAQI,QAAR;AACA,WAAKD,4BAAL,GAAoCR,MAAM,CAACU,SAAP,CAAiBC,8BAAjB,CAClCF,QADkC,EAElC;AACEG,QAAAA,sBAAsB,EAAE,KAAKN,uBAD/B;AAEEO,QAAAA,iBAAiB,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B;AAFrB,OAFkC,CAApC;AAOD;;;WAED,gCAAuB;AACrB,WAAKL,4BAAL,CAAkCM,OAAlC;AACD;;;WAED,iCAAwBC,KAAxB,EAA+BC,QAA/B,EAAyCC,OAAzC,EAAkD;AAChD,wBAAsC,KAAKZ,KAA3C;AAAA,UAAea,SAAf,eAAQH,KAAR;AAAA,UAA0BI,OAA1B,eAA0BA,OAA1B;;AACA,UAAIJ,KAAK,KAAKG,SAAd,EAAyB;AACvB,eAAO,IAAP;AACD;;AAED,UAAME,MAAM,GAAG;AACbC,QAAAA,YAAY,EAAE;AACZC,UAAAA,GAAG,YAAKP,KAAK,CAACO,GAAX;AADS,SADD;AAIb;AACA;AACAN,QAAAA,QAAQ,EAAE;AACRO,UAAAA,IAAI,EAAEP,QAAQ,CAACQ,UAAT,GAAsB,CADpB;AAERC,UAAAA,SAAS,EAAET,QAAQ,CAACU,MAAT,GAAkB;AAFrB,SANG;AAUbT,QAAAA,OAAO,EAAPA;AAVa,OAAf;AAaA,UAAIU,eAAe,GAAGR,OAAO,CAACS,kBAAR,CAA2BR,MAA3B,CAAtB;AAEAlB,MAAAA,GAAG,CAAC2B,KAAJ,CAAU,6BAAV,EAAyCT,MAAzC,EAAiDO,eAAjD;AAEAA,MAAAA,eAAe,GAAGA,eAAe,CAC9BG,IADe,CACV,UAAAC,KAAK,EAAI;AACb;AACA;AACA,YAAMC,WAAW,GAAGD,KAAK,CAACE,GAAN,CAAU,UAAAC,IAAI,EAAI;AACpC,cACEC,KADF,GASID,IATJ,CACEC,KADF;AAAA,cAEEC,IAFF,GASIF,IATJ,CAEEE,IAFF;AAAA,cAGEC,MAHF,GASIH,IATJ,CAGEG,MAHF;AAAA,cAIEC,aAJF,GASIJ,IATJ,CAIEI,aAJF;AAAA,cAKEC,QALF,GASIL,IATJ,CAKEK,QALF;AAAA,cAMEC,UANF,GASIN,IATJ,CAMEM,UANF;AAAA,cAOEC,QAPF,GASIP,IATJ,CAOEO,QAPF;AAAA,cAQEC,gBARF,GASIR,IATJ,CAQEQ,gBARF;AAWA,gCAAuBD,QAAQ,CAACE,KAAhC;AAAA,cAAQC,KAAR,mBAAQA,KAAR;AAAA,cAAeC,GAAf,mBAAeA,GAAf,CAZoC,CAcpC;;AACA,cAAMF,KAAK,GAAG;AACZG,YAAAA,eAAe,EAAEF,KAAK,CAACrB,IAAN,GAAa,CADlB;AAEZwB,YAAAA,WAAW,EAAEH,KAAK,CAACnB,SAAN,GAAkB,CAFnB;AAGZuB,YAAAA,aAAa,EAAEH,GAAG,CAACtB,IAAJ,GAAW,CAHd;AAIZ0B,YAAAA,SAAS,EAAEJ,GAAG,CAACpB,SAAJ,GAAgB;AAJf,WAAd;AAMA,iBAAO;AACLU,YAAAA,KAAK,EAALA,KADK;AAELC,YAAAA,IAAI,EAAJA,IAFK;AAGLC,YAAAA,MAAM,EAANA,MAHK;AAILC,YAAAA,aAAa,EAAbA,aAJK;AAKLC,YAAAA,QAAQ,EAARA,QALK;AAMLC,YAAAA,UAAU,EAAVA,UANK;AAOLU,YAAAA,UAAU,EAAET,QAAQ,CAACU,IAPhB;AAQL;AACA;AACA;AACAC,YAAAA,eAAe,EAAEV,gBAAgB,KAAK,CAArB,GAAyB,CAAzB,GAA6BA,gBAXzC;AAYLC,YAAAA,KAAK,EAALA;AAZK,WAAP;AAcD,SAnCmB,CAApB;AAqCA,eAAO;AACLU,UAAAA,UAAU,EAAE,IADP;AAELrB,UAAAA,WAAW,EAAXA;AAFK,SAAP;AAID,OA7Ce,WA8CT,UAAAsB,KAAK,EAAI;AACdpD,QAAAA,GAAG,CAACoD,KAAJ,CAAU,gDAAV,EAA4DA,KAA5D;AACA,eAAO;AAAEtB,UAAAA,WAAW,EAAE;AAAf,SAAP;AACD,OAjDe,CAAlB;AAmDA,aAAOL,eAAP;AACD;;;WAED,kBAAS;AACP,aAAO,IAAP;AACD;;;;EAvGoC7B,a;;AA0GvCM,wBAAwB,CAACmD,SAAzB,GAAqC;AACnCxC,EAAAA,KAAK,EAAEhB,SAAS,CAACyD,KAAV,CAAgB;AAAElC,IAAAA,GAAG,EAAEvB,SAAS,CAACyD,KAAV,CAAgB,EAAhB;AAAP,GAAhB,EAA8CC,UADlB;AAEnCtC,EAAAA,OAAO,EAAEpB,SAAS,CAACyD,KAAV,CAAgB;AAAE5B,IAAAA,kBAAkB,EAAE7B,SAAS,CAAC2D;AAAhC,GAAhB,EAAwDD,UAF9B;AAGnChD,EAAAA,QAAQ,EAAEV,SAAS,CAAC4D,MAAV,CAAiBF;AAHQ,CAArC;AAMA,eAAerD,wBAAf","sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('MonacoCompletionProvider');\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoCompletionProvider extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n\n this.registeredCompletionProvider = null;\n }\n\n componentDidMount() {\n const { language } = this.props;\n this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(\n language,\n {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['\"', '.', \"'\", '(', '[', '{', ','],\n }\n );\n }\n\n componentWillUnmount() {\n this.registeredCompletionProvider.dispose();\n }\n\n handleCompletionRequest(model, position, context) {\n const { model: propModel, session } = this.props;\n if (model !== propModel) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n },\n // Yes, the Monaco API Position is different than the Position received by the LSP\n // Why? I do not know.\n position: {\n line: position.lineNumber - 1,\n character: position.column - 1,\n },\n context,\n };\n\n let completionItems = session.getCompletionItems(params);\n\n log.debug('Completion items received: ', params, completionItems);\n\n completionItems = completionItems\n .then(items => {\n // Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects\n // Need to remap the items here\n const suggestions = items.map(item => {\n const {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat,\n } = item;\n\n const { start, end } = textEdit.range;\n\n // Monaco expects the columns/ranges to start at 1.\n const range = {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n return {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range,\n };\n });\n\n return {\n incomplete: true,\n suggestions,\n };\n })\n .catch(error => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return completionItems;\n }\n\n render() {\n return null;\n }\n}\n\nMonacoCompletionProvider.propTypes = {\n model: PropTypes.shape({ uri: PropTypes.shape({}) }).isRequired,\n session: PropTypes.shape({ getCompletionItems: PropTypes.func }).isRequired,\n language: PropTypes.string.isRequired,\n};\n\nexport default MonacoCompletionProvider;\n"],"file":"MonacoCompletionProvider.js"}
1
+ {"version":3,"sources":["../../src/monaco/MonacoCompletionProvider.jsx"],"names":["PureComponent","PropTypes","monaco","Log","log","module","MonacoCompletionProvider","constructor","props","handleCompletionRequest","bind","registeredCompletionProvider","componentDidMount","language","languages","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","componentWillUnmount","dispose","model","position","context","propModel","session","params","textDocument","uri","line","lineNumber","character","column","completionItems","getCompletionItems","debug","then","items","suggestions","map","item","label","kind","detail","documentation","sortText","filterText","textEdit","insertTextFormat","start","end","range","startLineNumber","startColumn","endLineNumber","endColumn","insertText","text","insertTextRules","incomplete","catch","error","render","propTypes","shape","isRequired","func","string"],"mappings":"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","sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('MonacoCompletionProvider');\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoCompletionProvider extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n\n this.registeredCompletionProvider = null;\n }\n\n componentDidMount() {\n const { language } = this.props;\n this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(\n language,\n {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['\"', '.', \"'\", '(', '[', '{', ','],\n }\n );\n }\n\n componentWillUnmount() {\n this.registeredCompletionProvider.dispose();\n }\n\n handleCompletionRequest(model, position, context) {\n const { model: propModel, session } = this.props;\n if (model !== propModel) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n },\n // Yes, the Monaco API Position is different than the Position received by the LSP\n // Why? I do not know.\n position: {\n line: position.lineNumber - 1,\n character: position.column - 1,\n },\n context,\n };\n\n let completionItems = session.getCompletionItems(params);\n\n log.debug('Completion items received: ', params, completionItems);\n\n completionItems = completionItems\n .then(items => {\n // Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects\n // Need to remap the items here\n const suggestions = items.map(item => {\n const {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat,\n } = item;\n\n const { start, end } = textEdit.range;\n\n // Monaco expects the columns/ranges to start at 1.\n const range = {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n return {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range,\n };\n });\n\n return {\n incomplete: true,\n suggestions,\n };\n })\n .catch(error => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return completionItems;\n }\n\n render() {\n return null;\n }\n}\n\nMonacoCompletionProvider.propTypes = {\n model: PropTypes.shape({ uri: PropTypes.shape({}) }).isRequired,\n session: PropTypes.shape({ getCompletionItems: PropTypes.func }).isRequired,\n language: PropTypes.string.isRequired,\n};\n\nexport default MonacoCompletionProvider;\n"],"file":"MonacoCompletionProvider.js"}