fix:修复单行CodeBlock中显示sub

This commit is contained in:
zhouxl 2024-12-30 16:46:01 +08:00 committed by 亢奋猫
parent dde0400f0d
commit 09e6756efe
2 changed files with 12 additions and 1 deletions

View File

@ -64,6 +64,7 @@
"adm-zip": "^0.5.16", "adm-zip": "^0.5.16",
"apache-arrow": "^18.1.0", "apache-arrow": "^18.1.0",
"docx": "^9.0.2", "docx": "^9.0.2",
"dompurify": "^3.2.3",
"electron-log": "^5.1.5", "electron-log": "^5.1.5",
"electron-store": "^8.2.0", "electron-store": "^8.2.0",
"electron-updater": "^6.3.9", "electron-updater": "^6.3.9",

View File

@ -3,6 +3,7 @@ import CopyIcon from '@renderer/components/Icons/CopyIcon'
import { useSyntaxHighlighter } from '@renderer/context/SyntaxHighlighterProvider' import { useSyntaxHighlighter } from '@renderer/context/SyntaxHighlighterProvider'
import { useSettings } from '@renderer/hooks/useSettings' import { useSettings } from '@renderer/hooks/useSettings'
import React, { memo, useEffect, useRef, useState } from 'react' import React, { memo, useEffect, useRef, useState } from 'react'
import DOMPurify from 'dompurify'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import styled from 'styled-components' import styled from 'styled-components'
@ -37,6 +38,7 @@ const ExpandButton: React.FC<{
</ExpandButtonWrapper> </ExpandButtonWrapper>
) )
} }
const ALLOWED_TAGS = ['sub'] // 允许的HTML标签
const CodeBlock: React.FC<CodeBlockProps> = ({ children, className }) => { const CodeBlock: React.FC<CodeBlockProps> = ({ children, className }) => {
const match = /language-(\w+)/.exec(className || '') const match = /language-(\w+)/.exec(className || '')
@ -133,7 +135,15 @@ const CodeBlock: React.FC<CodeBlockProps> = ({ children, className }) => {
{language === 'html' && children?.includes('</html>') && <Artifacts html={children} />} {language === 'html' && children?.includes('</html>') && <Artifacts html={children} />}
</CodeBlockWrapper> </CodeBlockWrapper>
) : ( ) : (
<code className={className}>{children}</code> <code
className={className}
dangerouslySetInnerHTML={{
__html: DOMPurify.sanitize(children, {
ALLOWED_TAGS,
ALLOWED_ATTR: [] // 不允许任何属性
})
}}
/>
) )
} }