Refactor CodeBlockEditor and Extract Utility Functions
- Moved the `toEditorCode` and `getCodeLanguageExtension` functions from CodeBlockEditor to a new utility file, `codeBlockEditorUtils.js`, for better code organization and reusability. - Updated imports in CodeDiffViewer and DiffLabel components to reference the new utility file, ensuring consistent functionality across the application.
This commit is contained in:
parent
cf1b7a792a
commit
802de940ab
@ -3,25 +3,14 @@ import PropTypes from 'prop-types'
|
|||||||
import CodeMirror from '@uiw/react-codemirror'
|
import CodeMirror from '@uiw/react-codemirror'
|
||||||
import { EditorView, Decoration, ViewPlugin } from '@codemirror/view'
|
import { EditorView, Decoration, ViewPlugin } from '@codemirror/view'
|
||||||
import { StateField } from '@codemirror/state'
|
import { StateField } from '@codemirror/state'
|
||||||
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 {
|
import {
|
||||||
farmControlDark,
|
farmControlDark,
|
||||||
farmControlLight
|
farmControlLight
|
||||||
} from '../../../codemirror/farmControlTheme'
|
} from '../../../codemirror/farmControlTheme'
|
||||||
import { fcTemplateLang } from '../../../codemirror/fcTemplateLang'
|
import {
|
||||||
|
getCodeLanguageExtension,
|
||||||
|
toEditorCode
|
||||||
|
} from './codeBlockEditorUtils'
|
||||||
import { useThemeContext } from '../context/ThemeContext'
|
import { useThemeContext } from '../context/ThemeContext'
|
||||||
import ScrollBox from './ScrollBox'
|
import ScrollBox from './ScrollBox'
|
||||||
import { Button, Modal, Typography, Card } from 'antd'
|
import { Button, Modal, Typography, Card } from 'antd'
|
||||||
@ -99,64 +88,6 @@ function createScrollBoxSyncExtension() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
|
||||||
) {
|
|
||||||
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 })
|
|
||||||
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()
|
|
||||||
default:
|
|
||||||
return javascriptLang({ autoCompleteObject })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function buildErrorLineDecorations(state, errorLineSet) {
|
function buildErrorLineDecorations(state, errorLineSet) {
|
||||||
if (!errorLineSet.size) {
|
if (!errorLineSet.size) {
|
||||||
return Decoration.none
|
return Decoration.none
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import { useThemeContext } from '../context/ThemeContext'
|
|||||||
import {
|
import {
|
||||||
getCodeLanguageExtension,
|
getCodeLanguageExtension,
|
||||||
toEditorCode
|
toEditorCode
|
||||||
} from './CodeBlockEditor'
|
} from './codeBlockEditorUtils'
|
||||||
|
|
||||||
export default function CodeDiffViewer({
|
export default function CodeDiffViewer({
|
||||||
oldCode = '',
|
oldCode = '',
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
|
|||||||
import { Button, Modal, Typography, theme, Flex } from 'antd'
|
import { Button, Modal, Typography, theme, Flex } from 'antd'
|
||||||
import { presentableDiff } from '@codemirror/merge'
|
import { presentableDiff } from '@codemirror/merge'
|
||||||
import CodeDiffViewer from './CodeDiffViewer'
|
import CodeDiffViewer from './CodeDiffViewer'
|
||||||
import { toEditorCode } from './CodeBlockEditor'
|
import { toEditorCode } from './codeBlockEditorUtils'
|
||||||
|
|
||||||
const { Link, Text } = Typography
|
const { Link, Text } = Typography
|
||||||
|
|
||||||
|
|||||||
73
src/components/Dashboard/common/codeBlockEditorUtils.js
Normal file
73
src/components/Dashboard/common/codeBlockEditorUtils.js
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
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'
|
||||||
|
|
||||||
|
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
|
||||||
|
) {
|
||||||
|
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 })
|
||||||
|
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()
|
||||||
|
default:
|
||||||
|
return javascriptLang({ autoCompleteObject })
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user