silphius/app/react-components/dom/chat/message.jsx

33 lines
794 B
React
Raw Normal View History

2024-07-14 21:07:46 -05:00
import {memo, useEffect, useState} from 'react';
2024-07-14 07:24:15 -05:00
2024-07-14 21:07:46 -05:00
import {useRadians} from '@/context/radians.js';
2024-07-14 07:24:15 -05:00
import {render} from '@/dialogue.js';
import styles from './message.module.css';
2024-07-14 21:07:46 -05:00
function Message({letters}) {
const radians = useRadians();
const [localRadians, setLocalRadians] = useState(radians);
const [isAnimating, setIsAnimating] = useState(true);
2024-07-14 07:24:15 -05:00
useEffect(() => {
2024-07-14 21:07:46 -05:00
const handle = setTimeout(() => {
setIsAnimating(false);
}, 2_000);
2024-07-14 07:24:15 -05:00
return () => {
2024-07-14 21:07:46 -05:00
clearTimeout(handle);
}
2024-07-14 07:24:15 -05:00
}, []);
2024-07-14 21:07:46 -05:00
useEffect(() => {
if (isAnimating) {
setLocalRadians(radians)
}
}, [isAnimating, radians]);
2024-07-14 07:24:15 -05:00
return (
<div className={styles.message}>
2024-07-14 21:07:46 -05:00
{render(letters, '')(letters.length - 1, localRadians)}
2024-07-14 07:24:15 -05:00
</div>
)
2024-07-14 21:07:46 -05:00
}
export default memo(Message);