@deephaven/console 0.95.1-beta.1 → 0.95.1-beta.3

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 (34) hide show
  1. package/dist/ConsoleInput.d.ts.map +1 -1
  2. package/dist/ConsoleInput.js +3 -2
  3. package/dist/ConsoleInput.js.map +1 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/monaco/MonacoProviders.d.ts +20 -0
  9. package/dist/monaco/MonacoProviders.d.ts.map +1 -1
  10. package/dist/monaco/MonacoProviders.js +223 -1
  11. package/dist/monaco/MonacoProviders.js.map +1 -1
  12. package/dist/monaco/MonacoUtils.d.ts +11 -0
  13. package/dist/monaco/MonacoUtils.d.ts.map +1 -1
  14. package/dist/monaco/MonacoUtils.js +29 -0
  15. package/dist/monaco/MonacoUtils.js.map +1 -1
  16. package/dist/monaco/RuffDefaultSettings.d.ts +19 -0
  17. package/dist/monaco/RuffDefaultSettings.d.ts.map +1 -0
  18. package/dist/monaco/RuffDefaultSettings.js +73 -0
  19. package/dist/monaco/RuffDefaultSettings.js.map +1 -0
  20. package/dist/monaco/RuffSettingsModal.css +11 -0
  21. package/dist/monaco/RuffSettingsModal.css.map +1 -0
  22. package/dist/monaco/RuffSettingsModal.d.ts +11 -0
  23. package/dist/monaco/RuffSettingsModal.d.ts.map +1 -0
  24. package/dist/monaco/RuffSettingsModal.js +173 -0
  25. package/dist/monaco/RuffSettingsModal.js.map +1 -0
  26. package/dist/monaco/index.d.ts +2 -0
  27. package/dist/monaco/index.d.ts.map +1 -1
  28. package/dist/monaco/index.js +2 -0
  29. package/dist/monaco/index.js.map +1 -1
  30. package/dist/monaco/ruffSchema.d.ts +2041 -0
  31. package/dist/monaco/ruffSchema.d.ts.map +1 -0
  32. package/dist/monaco/ruffSchema.js +1933 -0
  33. package/dist/monaco/ruffSchema.js.map +1 -0
  34. package/package.json +15 -14
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleInput.d.ts","sourceRoot":"","sources":["../src/ConsoleInput.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,qBAAqB,CAAC;AAU7B,UAAU,iBAAiB;IACzB,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,iBAAiB;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa,CAC7C,iBAAiB,EACjB,iBAAiB,CAClB;IACC,MAAM,CAAC,YAAY;;;;MAIjB;IAEF,MAAM,CAAC,gBAAgB,SAAmB;gBAE9B,KAAK,EAAE,iBAAiB;IAqBpC,iBAAiB,IAAI,IAAI;IAMzB,kBAAkB,IAAI,IAAI;IAI1B,oBAAoB,IAAI,IAAI;IAU5B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B,cAAc,EAAE,cAAc,CAAC;IAE/B,gBAAgB,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAE5C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAEpD,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,0BAA0B,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAE5C,cAAc,CAAC,EACX,iBAAiB,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC,GAC1D,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAE3C,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAGlB,gBAAgB,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAEpD;;;;;;;OAOG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAO,EAAE,OAAO,UAAQ,GAAG,IAAI;IA0BjE,iBAAiB,IAAI,IAAI;IAoIzB,oBAAoB,IAAI,IAAI;IAS5B,YAAY,IAAI,IAAI;IAIpB,sBAAsB,IAAI,OAAO;IAcjC,yBAAyB,IAAI,OAAO;IAQpC,KAAK,IAAI,IAAI;IAIb,UAAU,IAAI,IAAI;IAWlB,QAAQ,IAAI,IAAI;IAYhB,KAAK,IAAI,IAAI;IAMb,YAAY,IAAI,IAAI;IAMpB;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAiBjC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAsDtC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAkBrC,gBAAgB,IAAI,IAAI;IA6BxB,MAAM,IAAI,YAAY;CA0BvB;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ConsoleInput.d.ts","sourceRoot":"","sources":["../src/ConsoleInput.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,qBAAqB,CAAC;AAU7B,UAAU,iBAAiB;IACzB,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,iBAAiB;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa,CAC7C,iBAAiB,EACjB,iBAAiB,CAClB;IACC,MAAM,CAAC,YAAY;;;;MAIjB;IAEF,MAAM,CAAC,gBAAgB,SAAmB;gBAE9B,KAAK,EAAE,iBAAiB;IAqBpC,iBAAiB,IAAI,IAAI;IAMzB,kBAAkB,IAAI,IAAI;IAI1B,oBAAoB,IAAI,IAAI;IAU5B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B,cAAc,EAAE,cAAc,CAAC;IAE/B,gBAAgB,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAE5C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAEpD,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,0BAA0B,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAE5C,cAAc,CAAC,EACX,iBAAiB,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC,GAC1D,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAE3C,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAGlB,gBAAgB,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAEpD;;;;;;;OAOG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAO,EAAE,OAAO,UAAQ,GAAG,IAAI;IA0BjE,iBAAiB,IAAI,IAAI;IAyIzB,oBAAoB,IAAI,IAAI;IAS5B,YAAY,IAAI,IAAI;IAIpB,sBAAsB,IAAI,OAAO;IAcjC,yBAAyB,IAAI,OAAO;IAQpC,KAAK,IAAI,IAAI;IAIb,UAAU,IAAI,IAAI;IAWlB,QAAQ,IAAI,IAAI;IAYhB,KAAK,IAAI,IAAI;IAMb,YAAY,IAAI,IAAI;IAMpB;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAiBjC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAsDtC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAkBrC,gBAAgB,IAAI,IAAI;IA6BxB,MAAM,IAAI,YAAY;CA0BvB;AAED,eAAe,YAAY,CAAC"}
@@ -104,6 +104,7 @@ export class ConsoleInput extends PureComponent {
104
104
  language,
105
105
  session
106
106
  } = this.props;
107
+ var model = monaco.editor.createModel('', language, MonacoUtils.generateConsoleUri());
107
108
  var commandSettings = {
108
109
  copyWithSyntaxHighlighting: false,
109
110
  cursorStyle: 'block',
@@ -131,7 +132,8 @@ export class ConsoleInput extends PureComponent {
131
132
  },
132
133
  value: '',
133
134
  wordWrap: 'on',
134
- autoClosingBrackets: 'beforeWhitespace'
135
+ autoClosingBrackets: 'beforeWhitespace',
136
+ model
135
137
  };
136
138
  var element = this.commandContainer.current;
137
139
  assertNotNull(element);
@@ -170,7 +172,6 @@ export class ConsoleInput extends PureComponent {
170
172
  var {
171
173
  lineNumber
172
174
  } = position;
173
- var model = commandEditor === null || commandEditor === void 0 ? void 0 : commandEditor.getModel();
174
175
  if (keyEvent.code === 'ArrowUp' && !this.isSuggestionMenuPopulated() && lineNumber === 1) {
175
176
  if (commandHistoryIndex != null) {
176
177
  this.loadCommand(commandHistoryIndex + 1);
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoProviders","MonacoTheme","MonacoUtils","jsx","_jsx","jsxs","_jsxs","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","_defineProperty","handleResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","resizeObserver","window","ResizeObserver","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","disconnect","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","arguments","length","undefined","execute","debug","_this$commandEditor","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","value","wordWrap","autoClosingBrackets","element","current","editor","create","setEOL","openDocument","onDidChangeModelContent","_this$commandEditor2","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","getModel","code","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","getLineCount","altKey","shiftKey","metaKey","keyCode","KeyCode","Enter","_this$commandEditor3","command","trim","_this$commandEditor4","disableKeyBindings","KeyMod","CtrlCmd","KeyF","registerPasteHandler","observe","closeDocument","dispose","isSuggestionMenuActive","_ref","commandSuggestionContainer","_this$commandEditor5","_this$commandEditor5$","getDomNode","querySelector","classList","contains","_this$commandSuggesti","_this$commandSuggesti2","_this$commandSuggesti3","childElementCount","_this$commandEditor6","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor10","_this$commandEditor11","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","_this$commandEditor15","_this$commandEditor16","lastLine","lastCharTop","clear","_this$commandEditor17","_this$commandEditor18","_this$commandEditor19","layout","index","_this$commandEditor20","_this$commandEditor21","modifiedValue","get","historyValue","_this","_asyncToGenerator","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","_ref2","pos","arr","name","map","_ref3","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","_this$commandEditor22","_this$commandEditor23","updateOptions","render","disabled","className","children","INPUT_CLASS_NAME","ref","style","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ViewportData } from '@deephaven/storage';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './command-history';\nimport { MonacoProviders, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\ninterface ConsoleInputProps {\n session: dh.IdeSession;\n language: string;\n scope?: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSubmit: (command: string) => void;\n maxHeight?: number;\n disabled?: boolean;\n}\n\ninterface ConsoleInputState {\n commandEditorHeight: number;\n isFocused: boolean;\n model: monaco.editor.ITextModel | null;\n}\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent<\n ConsoleInputProps,\n ConsoleInputState\n> {\n static defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false,\n };\n\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props: ConsoleInputProps) {\n super(props);\n\n this.handleResize = this.handleResize.bind(this);\n\n this.commandContainer = React.createRef();\n this.commandHistoryIndex = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n this.resizeObserver = new window.ResizeObserver(this.handleResize);\n\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount(): void {\n this.initCommandEditor();\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n this.resizeObserver.disconnect();\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n resizeObserver: ResizeObserver;\n\n commandContainer: RefObject<HTMLDivElement>;\n\n commandEditor?: monaco.editor.IStandaloneCodeEditor;\n\n commandHistoryIndex: number | null;\n\n commandSuggestionContainer?: Element | null;\n\n loadingPromise?:\n | CancelablePromise<ViewportData<CommandHistoryStorageItem>>\n | CancelablePromise<CommandHistoryTable>;\n\n timestamp: number;\n\n bufferIndex: number | null;\n\n history: string[];\n\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n modifiedCommands: Map<number | null, string | null>;\n\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param text The text to set in the input\n * @param focus If the input should be focused\n * @param execute If the input should be executed\n * @returns void\n */\n setConsoleText(text: string, focus = true, execute = false): void {\n if (!text) {\n return;\n }\n\n log.debug('Command received: ', text);\n\n // Only set the console text if we're not running this command\n if (!execute) {\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor?.setValue(text);\n }\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand(text);\n }\n }\n\n initCommandEditor(): void {\n const { language, session } = this.props;\n const commandSettings = {\n copyWithSyntaxHighlighting: false,\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING,\n },\n value: '',\n wordWrap: 'on',\n autoClosingBrackets: 'beforeWhitespace',\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n\n this.commandEditor = monaco.editor.create(element, commandSettings);\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n const value = this.commandEditor?.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value ?? null);\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n const { commandEditor, commandHistoryIndex } = this;\n const position = commandEditor?.getPosition();\n assertNotNull(position);\n const { lineNumber } = position;\n const model = commandEditor?.getModel();\n if (\n keyEvent.code === 'ArrowUp' &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === 1\n ) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.code === 'ArrowDown' &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === model?.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (\n keyEvent.keyCode === monaco.KeyCode.Enter &&\n !this.isSuggestionMenuPopulated()\n ) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n const command = this.commandEditor?.getValue().trim();\n if (command !== undefined) {\n this.processCommand(command);\n this.commandEditor?.setValue('');\n }\n }\n }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n ]);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.resizeObserver.observe(element);\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor(): void {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive(): boolean {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n ?.getDomNode()\n ?.querySelector('.suggest-widget');\n }\n\n return (\n (this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')) ??\n false\n );\n }\n\n isSuggestionMenuPopulated(): boolean {\n return (\n this.isSuggestionMenuActive() &&\n (this.commandSuggestionContainer?.querySelector('.monaco-list-rows')\n ?.childElementCount ?? 0) > 0\n );\n }\n\n focus(): void {\n this.commandEditor?.focus();\n }\n\n focusStart(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor?.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n this.commandEditor?.setPosition({ lineNumber: 1, column });\n this.commandEditor?.setScrollTop(firstCharTop);\n this.commandEditor?.focus();\n }\n\n focusEnd(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor?.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n this.commandEditor?.setPosition({ lineNumber: lastLine, column });\n this.commandEditor?.setScrollTop(lastCharTop);\n this.commandEditor?.focus();\n }\n\n clear(): void {\n this.commandEditor?.focus();\n this.commandEditor?.getModel()?.setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor(): void {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index: number | null): void {\n if (index !== null && index >= this.history.length) {\n return;\n }\n\n const modifiedValue = this.modifiedCommands.get(index);\n const historyValue =\n index === null ? '' : this.history[this.history.length - index - 1];\n\n this.commandHistoryIndex = index;\n this.commandEditor?.getModel()?.setValue(modifiedValue ?? historyValue);\n\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n async loadMoreHistory(): Promise<void> {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope ?? '', this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await this.loadingPromise;\n this.bufferIndex += BUFFER_SIZE;\n if (this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n this.bufferIndex = null;\n }\n this.history = [\n ...viewportData.items\n .filter(\n ({ name }, pos, arr) => pos === 0 || name !== arr[pos - 1].name\n )\n .map(({ name }) => name)\n .reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = undefined;\n\n table.close();\n } catch (err) {\n this.loadingPromise = undefined;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n\n log.error('Error fetching history', err);\n }\n }\n\n processCommand(command: string): void {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n assertNotNull(command);\n if (\n command !== '' &&\n (this.history.length === 0 ||\n command !== this.history[this.history.length - 1])\n ) {\n this.history.push(command);\n }\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions(): void {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n assertNotNull(maxHeight);\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n\n const options = { overviewRulerLanes: shouldScroll ? undefined : 0 };\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor?.updateOptions(options);\n this.commandEditor?.layout();\n }\n );\n }\n\n render(): ReactElement {\n const { disabled, language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className={classNames('console-input-wrapper', { disabled })}>\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoProviders\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default ConsoleInput;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoProviders","MonacoTheme","MonacoUtils","jsx","_jsx","jsxs","_jsxs","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","_defineProperty","handleResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","resizeObserver","window","ResizeObserver","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","disconnect","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","arguments","length","undefined","execute","debug","_this$commandEditor","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","editor","createModel","generateConsoleUri","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","value","wordWrap","autoClosingBrackets","element","current","create","setEOL","openDocument","onDidChangeModelContent","_this$commandEditor2","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","code","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","getLineCount","altKey","shiftKey","metaKey","keyCode","KeyCode","Enter","_this$commandEditor3","command","trim","_this$commandEditor4","disableKeyBindings","KeyMod","CtrlCmd","KeyF","registerPasteHandler","observe","getModel","closeDocument","dispose","isSuggestionMenuActive","_ref","commandSuggestionContainer","_this$commandEditor5","_this$commandEditor5$","getDomNode","querySelector","classList","contains","_this$commandSuggesti","_this$commandSuggesti2","_this$commandSuggesti3","childElementCount","_this$commandEditor6","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor10","_this$commandEditor11","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","_this$commandEditor15","_this$commandEditor16","lastLine","lastCharTop","clear","_this$commandEditor17","_this$commandEditor18","_this$commandEditor19","layout","index","_this$commandEditor20","_this$commandEditor21","modifiedValue","get","historyValue","_this","_asyncToGenerator","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","_ref2","pos","arr","name","map","_ref3","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","_this$commandEditor22","_this$commandEditor23","updateOptions","render","disabled","className","children","INPUT_CLASS_NAME","ref","style","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ViewportData } from '@deephaven/storage';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './command-history';\nimport { MonacoProviders, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\ninterface ConsoleInputProps {\n session: dh.IdeSession;\n language: string;\n scope?: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSubmit: (command: string) => void;\n maxHeight?: number;\n disabled?: boolean;\n}\n\ninterface ConsoleInputState {\n commandEditorHeight: number;\n isFocused: boolean;\n model: monaco.editor.ITextModel | null;\n}\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent<\n ConsoleInputProps,\n ConsoleInputState\n> {\n static defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false,\n };\n\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props: ConsoleInputProps) {\n super(props);\n\n this.handleResize = this.handleResize.bind(this);\n\n this.commandContainer = React.createRef();\n this.commandHistoryIndex = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n this.resizeObserver = new window.ResizeObserver(this.handleResize);\n\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount(): void {\n this.initCommandEditor();\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n this.resizeObserver.disconnect();\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n resizeObserver: ResizeObserver;\n\n commandContainer: RefObject<HTMLDivElement>;\n\n commandEditor?: monaco.editor.IStandaloneCodeEditor;\n\n commandHistoryIndex: number | null;\n\n commandSuggestionContainer?: Element | null;\n\n loadingPromise?:\n | CancelablePromise<ViewportData<CommandHistoryStorageItem>>\n | CancelablePromise<CommandHistoryTable>;\n\n timestamp: number;\n\n bufferIndex: number | null;\n\n history: string[];\n\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n modifiedCommands: Map<number | null, string | null>;\n\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param text The text to set in the input\n * @param focus If the input should be focused\n * @param execute If the input should be executed\n * @returns void\n */\n setConsoleText(text: string, focus = true, execute = false): void {\n if (!text) {\n return;\n }\n\n log.debug('Command received: ', text);\n\n // Only set the console text if we're not running this command\n if (!execute) {\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor?.setValue(text);\n }\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand(text);\n }\n }\n\n initCommandEditor(): void {\n const { language, session } = this.props;\n const model = monaco.editor.createModel(\n '',\n language,\n MonacoUtils.generateConsoleUri()\n );\n const commandSettings = {\n copyWithSyntaxHighlighting: false,\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING,\n },\n value: '',\n wordWrap: 'on',\n autoClosingBrackets: 'beforeWhitespace',\n model,\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n\n this.commandEditor = monaco.editor.create(element, commandSettings);\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n const value = this.commandEditor?.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value ?? null);\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n const { commandEditor, commandHistoryIndex } = this;\n const position = commandEditor?.getPosition();\n assertNotNull(position);\n const { lineNumber } = position;\n if (\n keyEvent.code === 'ArrowUp' &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === 1\n ) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.code === 'ArrowDown' &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === model?.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (\n keyEvent.keyCode === monaco.KeyCode.Enter &&\n !this.isSuggestionMenuPopulated()\n ) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n const command = this.commandEditor?.getValue().trim();\n if (command !== undefined) {\n this.processCommand(command);\n this.commandEditor?.setValue('');\n }\n }\n }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n ]);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.resizeObserver.observe(element);\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor(): void {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive(): boolean {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n ?.getDomNode()\n ?.querySelector('.suggest-widget');\n }\n\n return (\n (this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')) ??\n false\n );\n }\n\n isSuggestionMenuPopulated(): boolean {\n return (\n this.isSuggestionMenuActive() &&\n (this.commandSuggestionContainer?.querySelector('.monaco-list-rows')\n ?.childElementCount ?? 0) > 0\n );\n }\n\n focus(): void {\n this.commandEditor?.focus();\n }\n\n focusStart(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor?.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n this.commandEditor?.setPosition({ lineNumber: 1, column });\n this.commandEditor?.setScrollTop(firstCharTop);\n this.commandEditor?.focus();\n }\n\n focusEnd(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor?.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n this.commandEditor?.setPosition({ lineNumber: lastLine, column });\n this.commandEditor?.setScrollTop(lastCharTop);\n this.commandEditor?.focus();\n }\n\n clear(): void {\n this.commandEditor?.focus();\n this.commandEditor?.getModel()?.setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor(): void {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index: number | null): void {\n if (index !== null && index >= this.history.length) {\n return;\n }\n\n const modifiedValue = this.modifiedCommands.get(index);\n const historyValue =\n index === null ? '' : this.history[this.history.length - index - 1];\n\n this.commandHistoryIndex = index;\n this.commandEditor?.getModel()?.setValue(modifiedValue ?? historyValue);\n\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n async loadMoreHistory(): Promise<void> {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope ?? '', this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await this.loadingPromise;\n this.bufferIndex += BUFFER_SIZE;\n if (this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n this.bufferIndex = null;\n }\n this.history = [\n ...viewportData.items\n .filter(\n ({ name }, pos, arr) => pos === 0 || name !== arr[pos - 1].name\n )\n .map(({ name }) => name)\n .reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = undefined;\n\n table.close();\n } catch (err) {\n this.loadingPromise = undefined;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n\n log.error('Error fetching history', err);\n }\n }\n\n processCommand(command: string): void {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n assertNotNull(command);\n if (\n command !== '' &&\n (this.history.length === 0 ||\n command !== this.history[this.history.length - 1])\n ) {\n this.history.push(command);\n }\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions(): void {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n assertNotNull(maxHeight);\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n\n const options = { overviewRulerLanes: shouldScroll ? undefined : 0 };\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor?.updateOptions(options);\n this.commandEditor?.layout();\n }\n );\n }\n\n render(): ReactElement {\n const { disabled, language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className={classNames('console-input-wrapper', { disabled })}>\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoProviders\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default ConsoleInput;\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ export { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';
12
12
  export * from './common';
13
13
  export * from './command-history';
14
14
  export * from './console-history';
15
+ export * from './monaco';
15
16
  export { default as LogView } from './log/LogView';
16
17
  export { default as HeapUsage } from './HeapUsage';
17
18
  export { default as NewTableColumnTypes } from './csv/NewTableColumnTypes';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ export { default as ScriptEditorUtils } from "./notebook/ScriptEditorUtils.js";
12
12
  export * from "./common/index.js";
13
13
  export * from "./command-history/index.js";
14
14
  export * from "./console-history/index.js";
15
+ export * from "./monaco/index.js";
15
16
  export { default as LogView } from "./log/LogView.js";
16
17
  export { default as HeapUsage } from "./HeapUsage.js";
17
18
  export { default as NewTableColumnTypes } from "./csv/NewTableColumnTypes.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Console","default","ConsoleInput","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView","HeapUsage","NewTableColumnTypes"],"sources":["../src/index.ts"],"sourcesContent":["import Console from './Console';\n\nexport default Console;\nexport { Console };\nexport { default as ConsoleInput } from './ConsoleInput';\nexport { default as SHORTCUTS } from './ConsoleShortcuts';\nexport { default as ConsoleStatusBar } from './ConsoleStatusBar';\nexport * from './monaco/MonacoThemeProvider';\nexport { default as MonacoUtils } from './monaco/MonacoUtils';\nexport { default as Editor, type EditorProps } from './notebook/Editor';\nexport { default as ScriptEditor } from './notebook/ScriptEditor';\nexport { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';\nexport * from './common';\nexport * from './command-history';\nexport * from './console-history';\nexport { default as LogView } from './log/LogView';\nexport { default as HeapUsage } from './HeapUsage';\nexport { default as NewTableColumnTypes } from './csv/NewTableColumnTypes';\n"],"mappings":"OAAOA,OAAO;AAEd,eAAeA,OAAO;AACtB,SAASA,OAAO;AAAG,SACVC,OAAO,IAAIC,YAAY;AAAA,SACvBD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,gBAAgB;AAAA;AAAA,SAE3BH,OAAO,IAAII,WAAW;AAAA,SACtBJ,OAAO,IAAIK,MAAM;AAAA,SACjBL,OAAO,IAAIM,YAAY;AAAA,SACvBN,OAAO,IAAIO,iBAAiB;AAAA;AAAA;AAAA;AAAA,SAI5BP,OAAO,IAAIQ,OAAO;AAAA,SAClBR,OAAO,IAAIS,SAAS;AAAA,SACpBT,OAAO,IAAIU,mBAAmB"}
1
+ {"version":3,"file":"index.js","names":["Console","default","ConsoleInput","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView","HeapUsage","NewTableColumnTypes"],"sources":["../src/index.ts"],"sourcesContent":["import Console from './Console';\n\nexport default Console;\nexport { Console };\nexport { default as ConsoleInput } from './ConsoleInput';\nexport { default as SHORTCUTS } from './ConsoleShortcuts';\nexport { default as ConsoleStatusBar } from './ConsoleStatusBar';\nexport * from './monaco/MonacoThemeProvider';\nexport { default as MonacoUtils } from './monaco/MonacoUtils';\nexport { default as Editor, type EditorProps } from './notebook/Editor';\nexport { default as ScriptEditor } from './notebook/ScriptEditor';\nexport { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';\nexport * from './common';\nexport * from './command-history';\nexport * from './console-history';\nexport * from './monaco';\nexport { default as LogView } from './log/LogView';\nexport { default as HeapUsage } from './HeapUsage';\nexport { default as NewTableColumnTypes } from './csv/NewTableColumnTypes';\n"],"mappings":"OAAOA,OAAO;AAEd,eAAeA,OAAO;AACtB,SAASA,OAAO;AAAG,SACVC,OAAO,IAAIC,YAAY;AAAA,SACvBD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,gBAAgB;AAAA;AAAA,SAE3BH,OAAO,IAAII,WAAW;AAAA,SACtBJ,OAAO,IAAIK,MAAM;AAAA,SACjBL,OAAO,IAAIM,YAAY;AAAA,SACvBN,OAAO,IAAIO,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,SAK5BP,OAAO,IAAIQ,OAAO;AAAA,SAClBR,OAAO,IAAIS,SAAS;AAAA,SACpBT,OAAO,IAAIU,mBAAmB"}
@@ -4,6 +4,7 @@
4
4
  import { PureComponent } from 'react';
5
5
  import * as monaco from 'monaco-editor';
6
6
  import type { dh } from '@deephaven/jsapi-types';
7
+ import { Workspace, type Diagnostic } from '@astral-sh/ruff-wasm-web';
7
8
  interface MonacoProviderProps {
8
9
  model: monaco.editor.ITextModel;
9
10
  session: dh.IdeSession;
@@ -13,6 +14,23 @@ interface MonacoProviderProps {
13
14
  * Registers a completion provider with monaco for the language and session provided.
14
15
  */
15
16
  declare class MonacoProviders extends PureComponent<MonacoProviderProps, Record<string, never>> {
17
+ static ruffWorkspace?: Workspace;
18
+ static initRuffPromise?: Promise<void>;
19
+ static isRuffEnabled: boolean;
20
+ static ruffSettings: Record<string, unknown>;
21
+ /**
22
+ * Loads and initializes Ruff.
23
+ * Subsequent calls will return the same promise.
24
+ */
25
+ static initRuff(): Promise<void>;
26
+ /**
27
+ * Sets ruff settings
28
+ * @param settings The ruff settings
29
+ */
30
+ static setRuffSettings(settings?: Record<string, unknown>): Promise<void>;
31
+ static getDiagnostics(model: monaco.editor.ITextModel): Diagnostic[];
32
+ static lintAllPython(): void;
33
+ static lintPython(model: monaco.editor.ITextModel): void;
16
34
  /**
17
35
  * Converts LSP CompletionItemKind to Monaco CompletionItemKind
18
36
  * Defaults to Variable if no LSP kind was provided
@@ -38,6 +56,8 @@ declare class MonacoProviders extends PureComponent<MonacoProviderProps, Record<
38
56
  * @returns The corresponding LSP position
39
57
  */
40
58
  static monacoToLspPosition(position: monaco.IPosition): Pick<dh.lsp.Position, 'line' | 'character'>;
59
+ static handlePythonCodeActionRequest(model: monaco.editor.ITextModel, range: monaco.Range): monaco.languages.ProviderResult<monaco.languages.CodeActionList>;
60
+ static handlePythonFormatRequest(model: monaco.editor.ITextModel, options: monaco.languages.FormattingOptions, token: monaco.CancellationToken): monaco.languages.ProviderResult<monaco.languages.TextEdit[]>;
41
61
  constructor(props: MonacoProviderProps);
42
62
  componentDidMount(): void;
43
63
  componentWillUnmount(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoProviders.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoProviders.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAIjD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,cAAM,eAAgB,SAAQ,aAAa,CACzC,mBAAmB,EACnB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IACC;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IA0DxD;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM;IAY3D;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB,CACxB,QAAQ,EAAE,MAAM,CAAC,SAAS,GACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;gBAQlC,KAAK,EAAE,mBAAmB;IAQtC,iBAAiB,IAAI,IAAI;IA2BzB,oBAAoB,IAAI,IAAI;IAM5B,4BAA4B,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAElD,2BAA2B,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAEjD,uBAAuB,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAE7C,uBAAuB,CACrB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAC1C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IAkEnE,sBAAsB,CACpB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAC/B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,oBAAoB,GAC7C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC;IAwExE,kBAAkB,CAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,GACxB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;IAkC1D,MAAM,IAAI,IAAI;CAGf;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"MonacoProviders.d.ts","sourceRoot":"","sources":["../../src/monaco/MonacoProviders.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
1
3
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
4
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
5
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
@@ -6,12 +8,93 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
6
8
  */
7
9
  import { PureComponent } from 'react';
8
10
  import * as monaco from 'monaco-editor';
11
+ import throttle from 'lodash.throttle';
9
12
  import Log from '@deephaven/log';
13
+ import init, { Workspace } from '@astral-sh/ruff-wasm-web';
14
+ import RUFF_DEFAULT_SETTINGS from "./RuffDefaultSettings.js";
15
+ import MonacoUtils from "./MonacoUtils.js";
10
16
  var log = Log.module('MonacoCompletionProvider');
11
17
  /**
12
18
  * Registers a completion provider with monaco for the language and session provided.
13
19
  */
14
20
  class MonacoProviders extends PureComponent {
21
+ /**
22
+ * Loads and initializes Ruff.
23
+ * Subsequent calls will return the same promise.
24
+ */
25
+ static initRuff() {
26
+ return _asyncToGenerator(function* () {
27
+ if (MonacoProviders.initRuffPromise) {
28
+ return MonacoProviders.initRuffPromise;
29
+ }
30
+ MonacoProviders.initRuffPromise = init({}).then(() => {
31
+ log.debug('Initialized Ruff', Workspace.version());
32
+ MonacoProviders.ruffWorkspace = new Workspace(MonacoProviders.ruffSettings);
33
+ MonacoProviders.lintAllPython();
34
+ });
35
+ return MonacoProviders.initRuffPromise;
36
+ })();
37
+ }
38
+
39
+ /**
40
+ * Sets ruff settings
41
+ * @param settings The ruff settings
42
+ */
43
+ static setRuffSettings() {
44
+ var _arguments = arguments;
45
+ return _asyncToGenerator(function* () {
46
+ var settings = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : MonacoProviders.ruffSettings;
47
+ MonacoProviders.ruffSettings = settings;
48
+
49
+ // Ruff has not been initialized yet
50
+ if (MonacoProviders.ruffWorkspace == null) {
51
+ return;
52
+ }
53
+ MonacoProviders.ruffWorkspace = new Workspace(settings);
54
+ MonacoProviders.lintAllPython();
55
+ })();
56
+ }
57
+ static getDiagnostics(model) {
58
+ if (!MonacoProviders.ruffWorkspace) {
59
+ return [];
60
+ }
61
+ var diagnostics = MonacoProviders.ruffWorkspace.check(model.getValue());
62
+ if (MonacoUtils.isConsoleModel(model)) {
63
+ // Only want SyntaxErrors for console which have no code
64
+ return diagnostics.filter(d => d.code == null);
65
+ }
66
+ return diagnostics;
67
+ }
68
+ static lintAllPython() {
69
+ if (!MonacoProviders.isRuffEnabled) {
70
+ monaco.editor.removeAllMarkers('ruff');
71
+ return;
72
+ }
73
+ monaco.editor.getModels().filter(m => m.getLanguageId() === 'python').forEach(MonacoProviders.lintPython);
74
+ }
75
+ static lintPython(model) {
76
+ if (!MonacoProviders.isRuffEnabled) {
77
+ return;
78
+ }
79
+ if (!MonacoProviders.ruffWorkspace) {
80
+ return;
81
+ }
82
+ monaco.editor.setModelMarkers(model, 'ruff', MonacoProviders.getDiagnostics(model).map(d => {
83
+ // Unused variable or import. Mark as warning and unnecessary to fade the text
84
+ var isUnnecessary = d.code === 'F401' || d.code === 'F841';
85
+ return {
86
+ startLineNumber: d.location.row,
87
+ startColumn: d.location.column,
88
+ endLineNumber: d.end_location.row,
89
+ endColumn: d.end_location.column,
90
+ message: d.code != null ? "".concat(d.code, ": ").concat(d.message) : d.message,
91
+ // SyntaxError has no code
92
+ severity: isUnnecessary ? monaco.MarkerSeverity.Warning : monaco.MarkerSeverity.Error,
93
+ tags: isUnnecessary ? [monaco.MarkerTag.Unnecessary] : []
94
+ };
95
+ }));
96
+ }
97
+
15
98
  /**
16
99
  * Converts LSP CompletionItemKind to Monaco CompletionItemKind
17
100
  * Defaults to Variable if no LSP kind was provided
@@ -114,6 +197,129 @@ class MonacoProviders extends PureComponent {
114
197
  character: position.column - 1
115
198
  };
116
199
  }
200
+ static handlePythonCodeActionRequest(model, range) {
201
+ if (!MonacoProviders.ruffWorkspace) {
202
+ return {
203
+ actions: [],
204
+ dispose: () => {
205
+ /* no-op */
206
+ }
207
+ };
208
+ }
209
+ var diagnostics = MonacoProviders.getDiagnostics(model).filter(d => {
210
+ var diagnosticRange = new monaco.Range(d.location.row, d.location.column, d.end_location.row, d.end_location.column);
211
+ return diagnosticRange.intersectRanges(range);
212
+ });
213
+ var fixActions = diagnostics.filter(_ref => {
214
+ var {
215
+ fix
216
+ } = _ref;
217
+ return fix != null;
218
+ }).map(d => {
219
+ var title = 'Fix';
220
+ if (d.fix != null) {
221
+ if (d.fix.message != null && d.fix.message !== '') {
222
+ title = "".concat(d.code, ": ").concat(d.fix.message);
223
+ } else {
224
+ title = "Fix ".concat(d.code);
225
+ }
226
+ }
227
+ return {
228
+ title,
229
+ id: "fix-".concat(d.code),
230
+ kind: 'quickfix',
231
+ edit: d.fix ? {
232
+ edits: d.fix.edits.map(edit => {
233
+ var _edit$content;
234
+ return {
235
+ resource: model.uri,
236
+ versionId: model.getVersionId(),
237
+ textEdit: {
238
+ range: {
239
+ startLineNumber: edit.location.row,
240
+ startColumn: edit.location.column,
241
+ endLineNumber: edit.end_location.row,
242
+ endColumn: edit.end_location.column
243
+ },
244
+ text: (_edit$content = edit.content) !== null && _edit$content !== void 0 ? _edit$content : ''
245
+ }
246
+ };
247
+ })
248
+ } : undefined
249
+ };
250
+ });
251
+ var disableActions = diagnostics.map(d => {
252
+ var line = model.getLineContent(d.location.row);
253
+ var lastToken = monaco.editor.tokenize(line, model.getLanguageId())[0].at(-1);
254
+ var lineEdit = {
255
+ range: {
256
+ startLineNumber: d.location.row,
257
+ startColumn: line.length + 1,
258
+ endLineNumber: d.location.row,
259
+ endColumn: line.length + 1
260
+ },
261
+ text: " # noqa: ".concat(d.code)
262
+ };
263
+ if (lastToken != null && lastToken.type.startsWith('comment')) {
264
+ // Already a comment at the end of the line
265
+ lineEdit.text = "# noqa: ".concat(d.code, " ");
266
+ if (line.startsWith('# noqa:', lastToken.offset)) {
267
+ // Already another suppressed rule on the line
268
+ lineEdit.range.startColumn = lastToken.offset + 1;
269
+ lineEdit.range.endColumn = lastToken.offset + 9; // "# noqa: " length + 1 to offset
270
+ } else {
271
+ lineEdit.range.startColumn = lastToken.offset + 1;
272
+ lineEdit.range.endColumn = line.startsWith('# ', lastToken.offset) ? lastToken.offset + 3 // "# " + 1 to offset
273
+ : lastToken.offset + 2; // "#" + 1 to offset
274
+ }
275
+ }
276
+
277
+ return [{
278
+ title: "Disable ".concat(d.code, " for this line"),
279
+ kind: 'quickfix',
280
+ edit: {
281
+ edits: [{
282
+ resource: model.uri,
283
+ versionId: model.getVersionId(),
284
+ textEdit: lineEdit
285
+ }]
286
+ }
287
+ }, {
288
+ title: "Disable ".concat(d.code, " for this file"),
289
+ kind: 'quickfix',
290
+ edit: {
291
+ edits: [{
292
+ resource: model.uri,
293
+ versionId: model.getVersionId(),
294
+ textEdit: {
295
+ range: {
296
+ startLineNumber: 1,
297
+ startColumn: 1,
298
+ endLineNumber: 1,
299
+ endColumn: 1
300
+ },
301
+ text: "# ruff: noqa: ".concat(d.code, "\n")
302
+ }
303
+ }]
304
+ }
305
+ }];
306
+ }).flat();
307
+ return {
308
+ actions: [...fixActions, ...disableActions],
309
+ dispose: () => {
310
+ /* no-op */
311
+ }
312
+ };
313
+ }
314
+ static handlePythonFormatRequest(model, options, token) {
315
+ if (!MonacoProviders.ruffWorkspace) {
316
+ return;
317
+ }
318
+ return [{
319
+ range: model.getFullModelRange(),
320
+ text: MonacoProviders.ruffWorkspace.format(model.getValue())
321
+ }];
322
+ }
117
323
  constructor(props) {
118
324
  super(props);
119
325
  _defineProperty(this, "registeredCompletionProvider", void 0);
@@ -126,7 +332,8 @@ class MonacoProviders extends PureComponent {
126
332
  componentDidMount() {
127
333
  var {
128
334
  language,
129
- session
335
+ session,
336
+ model
130
337
  } = this.props;
131
338
  this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {
132
339
  provideCompletionItems: this.handleCompletionRequest,
@@ -143,6 +350,17 @@ class MonacoProviders extends PureComponent {
143
350
  provideHover: this.handleHoverRequest
144
351
  });
145
352
  }
353
+ if (language === 'python') {
354
+ if (MonacoProviders.ruffWorkspace == null) {
355
+ MonacoProviders.initRuff(); // This will also lint all open editors
356
+ } else {
357
+ MonacoProviders.lintPython(model);
358
+ }
359
+ var throttledLint = throttle(m => MonacoProviders.lintPython(m), 250);
360
+ model.onDidChangeContent(() => {
361
+ throttledLint(model);
362
+ });
363
+ }
146
364
  }
147
365
  componentWillUnmount() {
148
366
  var _this$registeredCompl, _this$registeredSigna, _this$registeredHover;
@@ -310,5 +528,9 @@ class MonacoProviders extends PureComponent {
310
528
  return null;
311
529
  }
312
530
  }
531
+ _defineProperty(MonacoProviders, "ruffWorkspace", void 0);
532
+ _defineProperty(MonacoProviders, "initRuffPromise", void 0);
533
+ _defineProperty(MonacoProviders, "isRuffEnabled", true);
534
+ _defineProperty(MonacoProviders, "ruffSettings", RUFF_DEFAULT_SETTINGS);
313
535
  export default MonacoProviders;
314
536
  //# sourceMappingURL=MonacoProviders.js.map