diff --git a/src/renderer/src/components/CodeBlockView/SvgPreview.tsx b/src/renderer/src/components/CodeBlockView/SvgPreview.tsx index f7b23b4faf..b68c73f486 100644 --- a/src/renderer/src/components/CodeBlockView/SvgPreview.tsx +++ b/src/renderer/src/components/CodeBlockView/SvgPreview.tsx @@ -1,5 +1,5 @@ import { CodeTool, usePreviewToolHandlers, usePreviewTools } from '@renderer/components/CodeToolbar' -import { memo, useRef } from 'react' +import { memo, useCallback, useEffect, useRef } from 'react' import styled from 'styled-components' interface Props { @@ -10,6 +10,16 @@ interface Props { const SvgPreview: React.FC = ({ children, setTools }) => { const svgContainerRef = useRef(null) + const sanitizeSvg = useCallback((svgContent: string): string => { + return svgContent.replace(/]*>[\s\S]*?<\/style>/gi, '') + }, []) + + useEffect(() => { + if (svgContainerRef.current) { + svgContainerRef.current.innerHTML = sanitizeSvg(children) + } + }, [children, sanitizeSvg]) + // 使用通用图像工具 const { handleCopyImage, handleDownload } = usePreviewToolHandlers(svgContainerRef, { imgSelector: '.svg-preview svg', @@ -23,9 +33,7 @@ const SvgPreview: React.FC = ({ children, setTools }) => { handleDownload }) - return ( - - ) + return } const SvgPreviewContainer = styled.div`