import { useDark } from '@rspress/core/runtime'; import { type MouseEvent, useCallback, useEffect, useRef, useState, } from 'react'; import { getPageFullUrl, getPageUrl } from './common/getPageUrl'; import MobileOperation from './common/PreviewOperations'; import IconCode from './icons/Code'; import './Preview.css'; type PreviewProps = { children: React.ReactNode[]; previewMode: 'internal' | 'iframe-follow'; demoId: string; }; interface BasePreviewProps { children: React.ReactNode[]; demoId: string; } const PreviewIframeFollow: React.FC = ({ children, demoId, }) => { const [iframeKey, setIframeKey] = useState(0); const refresh = useCallback(() => { setIframeKey(Math.random()); }, []); const iframeRef = useRef(null); const dark = useDark(); useEffect(() => { iframeRef.current?.contentWindow?.postMessage( { type: 'theme-change', dark, }, '*', ); }, [dark]); return (
{children?.[0]}