import type { HTMLAttributes } from 'react';
export interface TypewriterTextHandle {
/** 暂停动画 */
pause: () => void;
/** 继续动画 */
resume: () => void;
/** 重置至第一段文字重新开始 */
reset: () => void;
/** 跳过当前段落直接进入下一段 */
skip: () => void;
}
export interface TypewriterTextProps extends HTMLAttributes {
/** 展示文本,支持字符串数组 */
text: string | string[];
/** 打字速度,支持随机区间 */
speed?: number | {
min: number;
max: number;
};
/** 删除速度 */
deleteSpeed?: number;
/** 是否启用回删效果 */
backspace?: boolean;
/** 进入回删前的停顿时间,单位 ms */
pauseBeforeDelete?: number;
/** 每段文本开始前的停顿时间,单位 ms */
startDelay?: number;
/** 循环播放,true 表示无限循环,数字表示循环次数 */
loop?: boolean | number;
/** 是否展示光标 */
cursor?: boolean;
/** 光标字符 */
cursorChar?: string | React.ReactNode;
/** 光标闪烁速度 */
cursorBlinkSpeed?: number;
/** 每次新增字符时触发 */
onStep?: (_index: number, _output: string) => void;
/** 每段文本输入完成后触发(进入删除之前) */
onComplete?: () => void;
/** 控制屏幕阅读器播报行为 */
ariaLive?: 'off' | 'polite' | 'assertive';
}