@memori.ai/memori-react
Version:
[](https://www.npmjs.com/package/@memori.ai/memori-react)   => new Array(seconds * 20).fill(separator).join('');
const Typing = ({ useDefaultSentences = false, lang = 'en', sentence, sentences, }) => {
var _a;
const [index, setIndex] = useState(0);
const [text, setText] = useState(((_a = sentences === null || sentences === void 0 ? void 0 : sentences[lang]) === null || _a === void 0 ? void 0 : _a.length)
? `${sentences[lang][0].text.endsWith('...') ||
!sentences[lang][0].text.length
? sentences[lang][0].text
: `${sentences[lang][0].text}...`}${getSeparatorString(sentences[lang][0].delayAfter)}`
: sentence
? `${sentence.endsWith('...') || !sentence.length
? sentence
: `${sentence}...`}${getSeparatorString()}`
: '');
const [shownText, setShownText] = useState('');
const [elapsedTime, setElapsedTime] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
var _a;
setElapsedTime(prev => prev + newWordInterval);
const letter = text[shownText.length];
if (letter !== undefined && text.length > 0) {
setShownText(prev => prev + letter);
}
else if (((_a = sentences === null || sentences === void 0 ? void 0 : sentences[lang]) === null || _a === void 0 ? void 0 : _a.length) &&
index < sentences[lang].length - 1) {
const nextIndex = index + 1;
const sentence = sentences[lang][nextIndex];
setText(`${sentence.text.endsWith('...') || !sentence.text.length
? sentence.text
: `${sentence.text}...`}${getSeparatorString(sentence.delayAfter)}`);
setShownText('');
setIndex(nextIndex);
}
else if (!sentences &&
!sentence &&
(useDefaultSentences || elapsedTime > timeoutMs)) {
const sentence = defaultSentences[lang][Math.floor(Math.random() * defaultSentences[lang].length)];
setText(`${sentence.text}${getSeparatorString(sentence.delayAfter)}`);
setShownText('');
}
}, newWordInterval);
return () => clearInterval(interval);
});
return (_jsx("div", { className: "memori-chat--bubble", children: _jsxs("div", { className: "memori-chat--bubble-typing", children: [_jsxs("div", { id: "wave", children: [_jsx("span", { className: "dot" }), _jsx("span", { className: "dot" }), _jsx("span", { className: "dot" })] }), text.length > 0 && _jsx("p", { children: shownText })] }) }));
};
export default Typing;
//# sourceMappingURL=Typing.js.map