1- import { memo , useMemo , useRef , type CSSProperties } from 'react' ;
1+ import {
2+ memo ,
3+ useImperativeHandle ,
4+ useMemo ,
5+ useRef ,
6+ type CSSProperties ,
7+ } from 'react' ;
28import type { EnrichedTextProps } from '../types' ;
39import './EnrichedText.css' ;
410import { enrichedTextStyleToCSSProperties } from './styleConversion/enrichedTextStyleToCSSProperties' ;
@@ -17,6 +23,7 @@ import { usePressInteractions } from './usePressInteractions';
1723
1824export const EnrichedText = memo (
1925 ( {
26+ ref,
2027 children,
2128 htmlStyle,
2229 style,
@@ -26,6 +33,19 @@ export const EnrichedText = memo(
2633 } : EnrichedTextProps ) => {
2734 const containerRef = useRef < HTMLDivElement > ( null ) ;
2835
36+ useImperativeHandle ( ref , ( ) => ( {
37+ measureInWindow : ( ) => { } ,
38+ measure : ( ) => { } ,
39+ measureLayout : ( ) => { } ,
40+ setNativeProps : ( ) => { } ,
41+ focus : ( ) => {
42+ containerRef . current ?. focus ( ) ;
43+ } ,
44+ blur : ( ) => {
45+ containerRef . current ?. blur ( ) ;
46+ } ,
47+ } ) ) ;
48+
2949 const sanitizedHtml = useMemo ( ( ) => sanitizeHtml ( children ) , [ children ] ) ;
3050
3151 const finalHtml = useMemo (
@@ -79,6 +99,7 @@ export const EnrichedText = memo(
7999 { mentionRulesCSS ? < style > { mentionRulesCSS } </ style > : null }
80100 < div
81101 ref = { containerRef }
102+ tabIndex = { - 1 }
82103 style = { finalStyle }
83104 className = { ENRICHED_TEXT_CLASSNAME }
84105 dangerouslySetInnerHTML = { { __html : finalHtml } }
0 commit comments