1- import { memo , useMemo , type CSSProperties } from 'react' ;
1+ import { memo , useMemo , useRef , type CSSProperties } from 'react' ;
22import type { EnrichedTextProps } from '../types' ;
33import './EnrichedText.css' ;
44import { enrichedTextStyleToCSSProperties } from './styleConversion/enrichedTextStyleToCSSProperties' ;
@@ -9,9 +9,12 @@ import { buildMentionRulesCSS } from './styleConversion/buildMentionRulesCSS';
99import { sanitizeHtml } from './sanitization/htmlSanitizer' ;
1010import { prepareHtmlForWeb } from './normalization/prepareHtmlForWeb' ;
1111import { INLINE_IMAGE_CSS_VARIABLES } from './styleConversion/inlineImageCSSVariables' ;
12+ import { useImageErrorFallback } from './useImageErrorFallback' ;
1213
1314export const EnrichedText = memo (
1415 ( { children, htmlStyle, style, selectionColor } : EnrichedTextProps ) => {
16+ const containerRef = useRef < HTMLDivElement > ( null ) ;
17+
1518 const sanitizedHtml = useMemo ( ( ) => sanitizeHtml ( children ) , [ children ] ) ;
1619
1720 const finalHtml = useMemo (
@@ -52,10 +55,13 @@ export const EnrichedText = memo(
5255 [ textStyle , themingStyle , cssVars ]
5356 ) ;
5457
58+ useImageErrorFallback ( containerRef , finalHtml ) ;
59+
5560 return (
5661 < >
5762 < style > { mentionRulesCSS } </ style >
5863 < div
64+ ref = { containerRef }
5965 style = { finalStyle }
6066 className = { ENRICHED_TEXT_CLASSNAME }
6167 dangerouslySetInnerHTML = { { __html : finalHtml } }
0 commit comments