import React, { lazy, Suspense, useEffect, useState } from 'react'; import { cn } from '../../lib/utils'; import { enqueueChatMarkdownHydrate, isAiMarkdownRendererReady, scheduleWhenAiComposerIdle, subscribeAiMarkdownRendererReady, warmAiMarkdownRenderer, } from '../ai/aiMarkdownWarmup'; import { LazyLoadBoundary } from '../ui/lazy-load-boundary'; type LazyMessageResponseProps = { children?: React.ReactNode; className?: string; isAnimating?: boolean; /** * Keep plaintext until Streamdown is already warmed. Chat history uses this * so expanding the panel cannot start the ~350KB parse during first typing. */ deferUntilWarm?: boolean; }; const MessageResponse = lazy(() => import('./messageResponse').then((module) => ({ default: module.MessageResponse })), ); const PlainTextFallback = ({ children, className }: LazyMessageResponseProps) => (