| 
					
				 | 
			
			
				@@ -1,6 +1,5 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import React, { useEffect, useRef, useState } from 'react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import mermaid from 'mermaid' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { t } from 'i18next' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import CryptoJS from 'crypto-js' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let mermaidAPI: any 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -32,6 +31,14 @@ const Flowchart = React.forwardRef((props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const chartId = useRef(`flowchart_${CryptoJS.MD5(props.PrimitiveCode).toString()}`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const [isRender, setIsRender] = useState(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const clearFlowchartCache = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let i = localStorage.length - 1; i >= 0; --i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const key = localStorage.key(i) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (key && key.startsWith('flowchart_')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        localStorage.removeItem(key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const renderFlowchart = async (PrimitiveCode: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const cachedSvg: any = localStorage.getItem(chartId.current) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -44,15 +51,15 @@ const Flowchart = React.forwardRef((props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const svgGraph = await mermaidAPI.render(chartId.current, PrimitiveCode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // eslint-disable-next-line @typescript-eslint/no-use-before-define 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const base64Svg: any = await svgToBase64(svgGraph.svg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        localStorage.setItem(chartId.current, base64Svg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         setSvgCode(base64Svg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (chartId.current && base64Svg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          localStorage.setItem(chartId.current, base64Svg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      localStorage.clear() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // eslint-disable-next-line @typescript-eslint/ban-ts-comment 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // @ts-expect-error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      console.error(error.toString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      clearFlowchartCache() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // eslint-disable-next-line @typescript-eslint/no-use-before-define 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      handleReRender() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -70,7 +77,9 @@ const Flowchart = React.forwardRef((props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const handleReRender = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     setIsRender(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     setSvgCode(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    localStorage.removeItem(chartId.current) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (chartId.current) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      localStorage.removeItem(chartId.current) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       setIsRender(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       renderFlowchart(props.PrimitiveCode) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -90,9 +99,11 @@ const Flowchart = React.forwardRef((props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // @ts-expect-error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <div ref={ref}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        isRender && <div id={chartId.current} className="mermaid" style={style}>{svgCode && (<img src={svgCode} style={{ width: '100%', height: 'auto' }} alt="Mermaid chart" />)}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isRender 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          && <div id={chartId.current} className="mermaid" style={style}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {svgCode && <img src={svgCode} style={{ width: '100%', height: 'auto' }} alt="Mermaid chart" />} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <button onClick={handleReRender}>{t('appApi.merMaind.rerender')}</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }) 
			 |