import { NodeViewWrapper, NodeViewContent } from '@tiptap/react'; import React, { useRef, useLayoutEffect, useState, useEffect } from 'react'; import { strings } from '@douyinfe/semi-foundation/aiChatInput/constants'; export default (props: any) => { const isEmpty = props.node.textContent === strings.ZERO_WIDTH_CHAR; const placeholder = props.node.attrs.placeholder || ''; const placeholderRef = useRef(null); const [placeholderWidth, setPlaceholderWidth] = useState( undefined, ); useLayoutEffect(() => { if (isEmpty && placeholderRef.current) { const timer = setTimeout(() => { setPlaceholderWidth(placeholderRef.current?.offsetWidth); }); return () => { clearTimeout(timer); }; } return undefined; }, [isEmpty, placeholder]); return ( {isEmpty && ( {placeholder} )} ); };