refactor(editor): Update Code node editor for native Python runner (#18538)

This commit is contained in:
Iván Ovejero
2025-08-19 13:40:02 +02:00
committed by GitHub
parent 5c53c22d0a
commit fabbddefdc
7 changed files with 52 additions and 18 deletions

View File

@@ -50,19 +50,21 @@ import {
} from 'vue';
import { useCompleter } from '../components/CodeNodeEditor/completer';
import { mappingDropCursor } from '../plugins/codemirror/dragAndDrop';
import { languageFacet, type CodeEditorLanguage } from '../plugins/codemirror/format';
import { languageFacet } from '../plugins/codemirror/format';
import debounce from 'lodash/debounce';
import { ignoreUpdateAnnotation } from '../utils/forceParse';
import type { TargetNodeParameterContext } from '@/Interface';
import type { CodeNodeLanguageOption } from '@/components/CodeNodeEditor/CodeNodeEditor.vue';
export type CodeEditorLanguageParamsMap = {
json: {};
html: {};
javaScript: { mode: CodeExecutionMode };
python: { mode: CodeExecutionMode };
pythonNative: { mode: CodeExecutionMode };
};
export const useCodeEditor = <L extends CodeEditorLanguage>({
export const useCodeEditor = <L extends CodeNodeLanguageOption>({
editorRef,
editorValue,
language,
@@ -116,7 +118,7 @@ export const useCodeEditor = <L extends CodeEditorLanguage>({
targetNodeParameterContext,
);
function getInitialLanguageExtensions(lang: CodeEditorLanguage): Extension[] {
function getInitialLanguageExtensions(lang: CodeNodeLanguageOption): Extension[] {
switch (lang) {
case 'javaScript':
return [javascript()];
@@ -128,7 +130,9 @@ export const useCodeEditor = <L extends CodeEditorLanguage>({
async function getFullLanguageExtensions(): Promise<Extension[]> {
if (!editor.value) return [];
const lang = toValue(language);
const langExtensions: Extension[] = [languageFacet.of(lang)];
const langExtensions: Extension[] = [
languageFacet.of(lang === 'pythonNative' ? 'python' : lang),
];
switch (lang) {
case 'javaScript': {
@@ -136,9 +140,10 @@ export const useCodeEditor = <L extends CodeEditorLanguage>({
langExtensions.push(tsExtension);
break;
}
case 'python': {
case 'python':
case 'pythonNative': {
const pythonAutocomplete = useCompleter(mode, editor.value ?? null).autocompletionExtension(
'python',
lang,
);
langExtensions.push([python(), pythonAutocomplete]);
break;