26 lines
961 B
TypeScript
26 lines
961 B
TypeScript
import { Settings } from '@typebot.io/schemas/features/typebot/settings'
|
|
import { defaultSettings } from '@typebot.io/schemas/features/typebot/settings/constants'
|
|
|
|
type Props = {
|
|
bubbleContent: string
|
|
typingSettings?: Settings['typingEmulation']
|
|
}
|
|
|
|
export const computeTypingDuration = ({
|
|
bubbleContent,
|
|
typingSettings,
|
|
}: Props) => {
|
|
let wordCount = bubbleContent.match(/(\w+)/g)?.length ?? 0
|
|
if (wordCount === 0) wordCount = bubbleContent.length
|
|
const { enabled, speed, maxDelay } = {
|
|
enabled: typingSettings?.enabled ?? defaultSettings.typingEmulation.enabled,
|
|
speed: typingSettings?.speed ?? defaultSettings.typingEmulation.speed,
|
|
maxDelay:
|
|
typingSettings?.maxDelay ?? defaultSettings.typingEmulation.maxDelay,
|
|
}
|
|
const typedWordsPerMinute = speed
|
|
let typingTimeout = enabled ? (wordCount / typedWordsPerMinute) * 60000 : 0
|
|
if (typingTimeout > maxDelay * 1000) typingTimeout = maxDelay * 1000
|
|
return typingTimeout
|
|
}
|