From 73af8fbb8c58b7f3986606e5f249113d1cbb9fdf Mon Sep 17 00:00:00 2001 From: one Date: Sat, 16 Aug 2025 19:10:38 +0800 Subject: [PATCH] feat: make MarkdownSvgRenderer clickable --- .../src/pages/home/Markdown/MarkdownSvgRenderer.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/pages/home/Markdown/MarkdownSvgRenderer.tsx b/src/renderer/src/pages/home/Markdown/MarkdownSvgRenderer.tsx index 6d51f5a35d..009214e94a 100644 --- a/src/renderer/src/pages/home/Markdown/MarkdownSvgRenderer.tsx +++ b/src/renderer/src/pages/home/Markdown/MarkdownSvgRenderer.tsx @@ -1,5 +1,6 @@ +import { ImagePreviewService } from '@renderer/services/ImagePreviewService' import { makeSvgSizeAdaptive } from '@renderer/utils/image' -import React, { FC, useEffect, useRef } from 'react' +import React, { FC, useCallback, useEffect, useRef } from 'react' interface SvgProps extends React.SVGProps { 'data-needs-measurement'?: 'true' @@ -33,8 +34,13 @@ const MarkdownSvgRenderer: FC = (props) => { } }, [needsMeasurement]) + const onClick = useCallback(() => { + if (!svgRef.current) return + ImagePreviewService.show(svgRef.current, { format: 'svg' }) + }, []) + // Create a mutable copy of props to potentially modify. - const finalProps = { ...restProps } + const finalProps = { ...restProps, style: { cursor: 'pointer', ...restProps.style } } // If the SVG has been measured and mutated, we prevent React from // re-applying the original width and height attributes on subsequent renders. @@ -44,7 +50,7 @@ const MarkdownSvgRenderer: FC = (props) => { delete finalProps.height } - return + return } export default MarkdownSvgRenderer