mirror of
				https://github.com/langgenius/dify.git
				synced 2025-11-04 12:53:38 +00:00 
			
		
		
		
	
		
			
	
	
		
			34 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @fileoverview ErrorBoundary component for React.
							 | 
						||
| 
								 | 
							
								 * This component was extracted from the main markdown renderer.
							 | 
						||
| 
								 | 
							
								 * It catches JavaScript errors anywhere in its child component tree,
							 | 
						||
| 
								 | 
							
								 * logs those errors, and displays a fallback UI instead of the crashed component tree.
							 | 
						||
| 
								 | 
							
								 * Primarily used around complex rendering logic like ECharts or SVG within Markdown.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								import React, { Component } from 'react'
							 | 
						||
| 
								 | 
							
								// **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: any) {
							 | 
						||
| 
								 | 
							
								    super(props)
							 | 
						||
| 
								 | 
							
								    this.state = { hasError: false }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  componentDidCatch(error: any, errorInfo: any) {
							 | 
						||
| 
								 | 
							
								    this.setState({ hasError: true })
							 | 
						||
| 
								 | 
							
								    console.error(error, errorInfo)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  render() {
							 | 
						||
| 
								 | 
							
								    // eslint-disable-next-line ts/ban-ts-comment
							 | 
						||
| 
								 | 
							
								    // @ts-expect-error
							 | 
						||
| 
								 | 
							
								    if (this.state.hasError)
							 | 
						||
| 
								 | 
							
								      return <div>Oops! An error occurred. This could be due to an ECharts runtime error or invalid SVG content. <br />(see the browser console for more information)</div>
							 | 
						||
| 
								 | 
							
								    // eslint-disable-next-line ts/ban-ts-comment
							 | 
						||
| 
								 | 
							
								    // @ts-expect-error
							 | 
						||
| 
								 | 
							
								    return this.props.children
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |