farmcontrol-ui/src/components/Dashboard/common/codeBlockEditorUtils.js
Tom Butcher a590650d80
Some checks failed
farmcontrol/farmcontrol-ui/pipeline/head There was a failure building this commit
Refactor CodeMirror Language Support and Enhance Template Handling
- Updated fcTemplateLang to utilize new helper functions for improved template type handling.
- Introduced typedScope for better autocompletion support in JavaScript language integration.
- Enhanced CodeBlockEditor and TemplateEditor components to support cursor change events and template type management.
- Added fetchTemplateIntellisense function in ApiServerContext for improved intellisense capabilities based on cursor position.
- Refactored related components to ensure consistent handling of template types and cursor changes, enhancing user experience.
2026-09-12 23:30:00 +01:00

80 lines
2.1 KiB
JavaScript

import { python } from '@codemirror/lang-python'
import { javascriptLang } from '../../../codemirror/javascriptLang'
import { json } from '@codemirror/lang-json'
import { css } from '@codemirror/lang-css'
import { html } from '@codemirror/lang-html'
import { markdown } from '@codemirror/lang-markdown'
import { sql } from '@codemirror/lang-sql'
import { java } from '@codemirror/lang-java'
import { cpp } from '@codemirror/lang-cpp'
import { rust } from '@codemirror/lang-rust'
import { go } from '@codemirror/lang-go'
import { php } from '@codemirror/lang-php'
import { yaml } from '@codemirror/lang-yaml'
import { xml } from '@codemirror/lang-xml'
import { fcTemplateLang } from '../../../codemirror/fcTemplateLang'
import { gcodeLang } from '../../../codemirror/gcodeLang'
export function toEditorCode(code, language = 'javascript') {
if (code == null) return ''
if (typeof code === 'object' && language === 'json') {
return JSON.stringify(code, null, 2)
}
return String(code)
}
export function getCodeLanguageExtension(
language = 'javascript',
autoCompleteObject = null,
templateType
) {
const lang = Array.isArray(language) ? language[0] : language
switch (String(lang || 'javascript').toLowerCase()) {
case 'javascript':
case 'js':
return javascriptLang({ autoCompleteObject })
case 'python':
case 'py':
return python()
case 'json':
return json()
case 'xml':
return xml()
case 'fctemplatelang':
case 'ejs':
return fcTemplateLang({ autoCompleteObject, templateType })
case 'html':
return html()
case 'css':
return css()
case 'markdown':
case 'md':
return markdown()
case 'sql':
return sql()
case 'java':
return java()
case 'cpp':
case 'c++':
case 'c':
return cpp()
case 'rust':
case 'rs':
return rust()
case 'go':
return go()
case 'php':
return php()
case 'yaml':
case 'yml':
return yaml()
case 'gcode':
case 'g-code':
case 'g':
return gcodeLang()
default:
return javascriptLang({ autoCompleteObject })
}
}