Skip to content

Commit 284bb7a

Browse files
iamjoelcrazywoola
andauthored
fix: ref attribute in markdown causes page crash (langgenius#11369)
Co-authored-by: crazywoola <[email protected]>
1 parent eca466b commit 284bb7a

File tree

2 files changed

+5
-30
lines changed

2 files changed

+5
-30
lines changed

web/app/components/base/image-gallery/index.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ const ImageGallery: FC<Props> = ({
5353
imagePreviewUrl && (
5454
<ImagePreview
5555
url={imagePreviewUrl}
56-
onCancel={() => setImagePreviewUrl('')}
57-
/>
56+
onCancel={() => setImagePreviewUrl('')} title={''} />
5857
)
5958
}
6059
</div>

web/app/components/base/markdown.tsx

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ import RemarkGfm from 'remark-gfm'
88
import RehypeRaw from 'rehype-raw'
99
import SyntaxHighlighter from 'react-syntax-highlighter'
1010
import { atelierHeathLight } from 'react-syntax-highlighter/dist/esm/styles/hljs'
11-
import type { RefObject } from 'react'
12-
import { Component, memo, useEffect, useMemo, useRef, useState } from 'react'
11+
import { Component, memo, useMemo, useRef, useState } from 'react'
1312
import type { CodeComponent } from 'react-markdown/lib/ast-to-react'
1413
import cn from '@/utils/classnames'
1514
import CopyBtn from '@/app/components/base/copy-btn'
@@ -77,29 +76,6 @@ export function PreCode(props: { children: any }) {
7776
)
7877
}
7978

80-
// eslint-disable-next-line unused-imports/no-unused-vars
81-
const useLazyLoad = (ref: RefObject<Element>): boolean => {
82-
const [isIntersecting, setIntersecting] = useState<boolean>(false)
83-
84-
useEffect(() => {
85-
const observer = new IntersectionObserver(([entry]) => {
86-
if (entry.isIntersecting) {
87-
setIntersecting(true)
88-
observer.disconnect()
89-
}
90-
})
91-
92-
if (ref.current)
93-
observer.observe(ref.current)
94-
95-
return () => {
96-
observer.disconnect()
97-
}
98-
}, [ref])
99-
100-
return isIntersecting
101-
}
102-
10379
// **Add code block
10480
// Avoid error #185 (Maximum update depth exceeded.
10581
// This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate.
@@ -123,7 +99,7 @@ const CodeBlock: CodeComponent = memo(({ inline, className, children, ...props }
12399
try {
124100
return JSON.parse(String(children).replace(/\n$/, ''))
125101
}
126-
catch (error) {}
102+
catch (error) { }
127103
}
128104
return JSON.parse('{"title":{"text":"ECharts error - Wrong JSON format."}}')
129105
}, [language, children])
@@ -181,7 +157,7 @@ const CodeBlock: CodeComponent = memo(({ inline, className, children, ...props }
181157
>
182158
<div className='text-[13px] text-gray-500 font-normal'>{languageShowName}</div>
183159
<div style={{ display: 'flex' }}>
184-
{(['mermaid', 'svg']).includes(language!) && <SVGBtn isSVG={isSVG} setIsSVG={setIsSVG}/>}
160+
{(['mermaid', 'svg']).includes(language!) && <SVGBtn isSVG={isSVG} setIsSVG={setIsSVG} />}
185161
<CopyBtn
186162
className='mr-1'
187163
value={String(children).replace(/\n$/, '')}
@@ -261,7 +237,7 @@ export function Markdown(props: { content: string; className?: string }) {
261237
() => {
262238
return (tree) => {
263239
const iterate = (node: any) => {
264-
if (node.type === 'element' && !node.properties?.src && node.properties?.ref && node.properties.ref.startsWith('{') && node.properties.ref.endsWith('}'))
240+
if (node.type === 'element' && node.properties?.ref)
265241
delete node.properties.ref
266242

267243
if (node.children)

0 commit comments

Comments
 (0)