import type { FileUIPart } from 'ai'; import type { UPageUIMessage } from '~/types/message'; import { MODEL_REGEX, PROVIDER_REGEX } from '~/utils/constants'; import { ElementEditPreview } from './ElementEditPreview'; import { Markdown } from './Markdown'; export function UserMessage({ message }: { message: UPageUIMessage }) { const parts = message.parts; const textContent = stripMetadata(parts.find((part) => part.type === 'text')?.text || ''); const images = parts.filter((part) => part.type === 'file' && part.mediaType.startsWith('image')) as FileUIPart[]; const elementInfo = message.metadata?.elementInfo; return (
{textContent && {textContent}} {images.map((item, index) => ( {item.filename ))} {elementInfo && }
); } function stripMetadata(content: string) { const artifactRegex = /]*>[\s\S]*?<\/uPageArtifact>/gm; return content.replace(MODEL_REGEX, '').replace(PROVIDER_REGEX, '').replace(artifactRegex, ''); }