import { TypingBubble } from '@/components/bubbles/TypingBubble' import { TextBubbleContent, TypingEmulation } from 'models' import { createSignal, onMount } from 'solid-js' import { computeTypingDuration } from '../utils/computeTypingDuration' type Props = { content: Pick onTransitionEnd: () => void typingEmulation?: TypingEmulation } export const showAnimationDuration = 400 const defaultTypingEmulation = { enabled: true, speed: 300, maxDelay: 1.5, } export const TextBubble = (props: Props) => { const [isTyping, setIsTyping] = createSignal(true) const onTypingEnd = () => { setIsTyping(false) setTimeout(() => { props.onTransitionEnd() }, showAnimationDuration) } onMount(() => { if (!isTyping) return const typingDuration = computeTypingDuration( props.content.plainText, props.typingEmulation ?? defaultTypingEmulation ) setTimeout(() => { onTypingEnd() }, typingDuration) }) return (
{isTyping() && }

) }