| 
					
				 | 
			
			
				@@ -8,7 +8,7 @@ import RemarkGfm from 'remark-gfm' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import SyntaxHighlighter from 'react-syntax-highlighter' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { atelierHeathLight } from 'react-syntax-highlighter/dist/esm/styles/hljs' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import type { RefObject } from 'react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { memo, useEffect, useMemo, useRef, useState } from 'react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Component, memo, useEffect, useMemo, useRef, useState } from 'react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import type { CodeComponent } from 'react-markdown/lib/ast-to-react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn from '@/utils/classnames' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import CopyBtn from '@/app/components/base/copy-btn' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -104,7 +104,7 @@ const CodeBlock: CodeComponent = memo(({ inline, className, children, ...props } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const match = /language-(\w+)/.exec(className || '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const language = match?.[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const languageShowName = getCorrectCapitalizationLanguageName(language || '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  let chartData = JSON.parse(String('{"title":{"text":"Something went wrong."}}').replace(/\n$/, '')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let chartData = JSON.parse(String('{"title":{"text":"ECharts error - Wrong JSON format."}}').replace(/\n$/, '')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (language === 'echarts') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       chartData = JSON.parse(String(children).replace(/\n$/, '')) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -143,10 +143,10 @@ const CodeBlock: CodeComponent = memo(({ inline, className, children, ...props } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ? (<Flowchart PrimitiveCode={String(children).replace(/\n$/, '')} />) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               (language === 'echarts') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ? (<div style={{ minHeight: '250px', minWidth: '250px' }}><ReactEcharts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ? (<div style={{ minHeight: '250px', minWidth: '250px' }}><ErrorBoundary><ReactEcharts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   option={chartData} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </ReactEcharts></div>) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </ReactEcharts></ErrorBoundary></div>) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 : (<SyntaxHighlighter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   {...props} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   style={atelierHeathLight} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -211,3 +211,25 @@ export function Markdown(props: { content: string; className?: string }) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// **Add an ECharts runtime error handler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Avoid error #7832 (Crash when ECharts accesses undefined objects) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// This can happen when a component attempts to access an undefined object that references an unregistered map, causing the program to crash. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default class ErrorBoundary extends Component { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  constructor(props) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    super(props) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.state = { hasError: false } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  componentDidCatch(error, errorInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.setState({ hasError: true }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.error(error, errorInfo) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  render() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.state.hasError) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return <div>Oops! ECharts reported a runtime error. <br />(see the browser console for more information)</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return this.props.children 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |