fix(CodeBlockView): initial view mode (#9047)

This commit is contained in:
one 2025-08-11 13:59:03 +08:00 committed by GitHub
parent d0cf3179a2
commit 28e6135f8c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -58,9 +58,12 @@ export const CodeBlockView: React.FC<Props> = memo(({ children, language, onSave
const { t } = useTranslation() const { t } = useTranslation()
const { codeEditor, codeExecution, codeImageTools, codeCollapsible, codeWrappable } = useSettings() const { codeEditor, codeExecution, codeImageTools, codeCollapsible, codeWrappable } = useSettings()
const [viewState, setViewState] = useState({ const [viewState, setViewState] = useState(() => {
mode: 'special' as ViewMode, const initialMode = SPECIAL_VIEWS.includes(language) ? 'special' : 'source'
previousMode: 'special' as ViewMode return {
mode: initialMode as ViewMode,
previousMode: initialMode as ViewMode
}
}) })
const { mode: viewMode } = viewState const { mode: viewMode } = viewState
@ -96,10 +99,18 @@ export const CodeBlockView: React.FC<Props> = memo(({ children, language, onSave
const hasSpecialView = useMemo(() => SPECIAL_VIEWS.includes(language), [language]) const hasSpecialView = useMemo(() => SPECIAL_VIEWS.includes(language), [language])
// TODO: 考虑移除
const isInSpecialView = useMemo(() => { const isInSpecialView = useMemo(() => {
return hasSpecialView && viewMode === 'special' return hasSpecialView && viewMode === 'special'
}, [hasSpecialView, viewMode]) }, [hasSpecialView, viewMode])
// 不支持特殊视图时回退到 source
useEffect(() => {
if (!hasSpecialView && viewMode !== 'source') {
setViewMode('source')
}
}, [hasSpecialView, viewMode, setViewMode])
const [expandOverride, setExpandOverride] = useState(!codeCollapsible) const [expandOverride, setExpandOverride] = useState(!codeCollapsible)
const [unwrapOverride, setUnwrapOverride] = useState(!codeWrappable) const [unwrapOverride, setUnwrapOverride] = useState(!codeWrappable)