react-markdown-typer 1.0.3 → 1.0.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MarkdownTyperCMD/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAwB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAM9F,QAAA,MAAM,gBAAgB,uHAkLrB,CAAC;AAMF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MarkdownTyperCMD/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAwB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAQ9F,QAAA,MAAM,gBAAgB,uHA8OrB,CAAC;AAMF,eAAe,gBAAgB,CAAC"}
@@ -4,20 +4,22 @@ import { __DEV__ } from '../constant.js';
4
4
  import { useTypingTask } from '../hooks/useTypingTask.js';
5
5
  import ReactMarkdown from 'react-markdown';
6
6
  import { splitGraphemes } from '../utils/grapheme.js';
7
- const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, onBeforeTypedChar, timerType = 'setTimeout', reactMarkdownProps, disableTyping = false, autoStartTyping = true, customConvertMarkdownString }, ref) => {
8
- /** 是否自动开启打字动画, 后面发生变化将不会生效 */
7
+ import { createRehypeCursorPlugin } from '../plugins/rehypeCursor.js';
8
+ import { CursorSpan } from '../components/CursorSpan.js';
9
+ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, onBeforeTypedChar, timerType = 'setTimeout', reactMarkdownProps, disableTyping = false, autoStartTyping = true, customConvertMarkdownString, showCursor = false, cursor = '|' }, ref) => {
10
+ /** Whether to automatically start typing animation, changes after initialization will not take effect */
9
11
  const autoStartTypingRef = useRef(autoStartTyping);
10
- /** 是否打过字 */
12
+ /** Whether typing has started */
11
13
  const isStartedTypingRef = useRef(false);
12
- /** 当前需要打字的内容 */
14
+ /** Current content to be typed */
13
15
  const charsRef = useRef([]);
14
16
  /**
15
- * 打字是否已经完全结束
16
- * 如果打字已经完全结束,则不会再触发打字效果
17
+ * Whether typing has completely ended
18
+ * If typing has completely ended, typing animation will not be triggered again
17
19
  */
18
20
  const isWholeTypedEndRef = useRef(false);
19
21
  const charIndexRef = useRef(0);
20
- /** 整个内容引用 */
22
+ /** Reference to the entire content */
21
23
  const wholeContentRef = useRef({
22
24
  content: '',
23
25
  length: 0,
@@ -28,7 +30,7 @@ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedCha
28
30
  setUpdate((prev) => prev + 1);
29
31
  };
30
32
  /**
31
- * 处理字符显示逻辑
33
+ * Handle character display logic
32
34
  */
33
35
  const processCharDisplay = (char) => {
34
36
  if (!isStartedTypingRef.current) {
@@ -44,7 +46,7 @@ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedCha
44
46
  wholeContentRef.current.length = 0;
45
47
  wholeContentRef.current.prevLength = 0;
46
48
  };
47
- // 使用新的打字任务 hook
49
+ // Use new typing task hook
48
50
  const typingTask = useTypingTask({
49
51
  timerType,
50
52
  interval,
@@ -60,7 +62,7 @@ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedCha
60
62
  resetWholeContent,
61
63
  });
62
64
  /**
63
- * 内部推送处理逻辑
65
+ * Internal push processing logic
64
66
  */
65
67
  const processHasTypingPush = (content) => {
66
68
  if (content.length === 0) {
@@ -76,7 +78,7 @@ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedCha
76
78
  };
77
79
  return charObj;
78
80
  }));
79
- // 如果关闭了自动打字, 并且没有打过字, 则不开启打字动画
81
+ // If auto typing is disabled and typing hasn't started, do not start typing animation
80
82
  if (!autoStartTypingRef.current && !isStartedTypingRef.current) {
81
83
  return;
82
84
  }
@@ -86,7 +88,7 @@ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedCha
86
88
  };
87
89
  const processNoTypingPush = (content) => {
88
90
  wholeContentRef.current.content += content;
89
- // 记录打字前的长度
91
+ // Record length before typing
90
92
  wholeContentRef.current.prevLength = wholeContentRef.current.length;
91
93
  wholeContentRef.current.length += content.length;
92
94
  triggerUpdate();
@@ -97,9 +99,9 @@ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedCha
97
99
  };
98
100
  useImperativeHandle(ref, () => ({
99
101
  /**
100
- * 添加内容
101
- * @param content 内容 {string}
102
- * @param answerType 回答类型 {AnswerType}
102
+ * Add content
103
+ * @param content Content {string}
104
+ * @param answerType Answer type {AnswerType}
103
105
  */
104
106
  push: (content) => {
105
107
  if (disableTyping) {
@@ -109,7 +111,7 @@ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedCha
109
111
  processHasTypingPush(content);
110
112
  },
111
113
  /**
112
- * 清除打字任务
114
+ * Clear typing task
113
115
  */
114
116
  clear: () => {
115
117
  typingTask.stop();
@@ -121,34 +123,34 @@ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedCha
121
123
  isStartedTypingRef.current = false;
122
124
  triggerUpdate();
123
125
  },
124
- /** 开启打字,只有在关闭了自动打字才生效 */
126
+ /** Start typing, only takes effect when auto typing is disabled */
125
127
  start: () => {
126
128
  if (!autoStartTypingRef.current) {
127
129
  typingTask.start();
128
130
  }
129
131
  },
130
- /** 停止打字任务 */
132
+ /** Stop typing task */
131
133
  stop: () => {
132
134
  typingTask.stop();
133
135
  },
134
- /** 重新开始打字任务 */
136
+ /** Resume typing task */
135
137
  resume: () => {
136
138
  typingTask.resume();
137
139
  },
138
140
  /**
139
- * 主动触发打字结束
141
+ * Manually trigger typing end
140
142
  */
141
143
  triggerWholeEnd: () => {
142
144
  isWholeTypedEndRef.current = true;
143
145
  if (!typingTask.isTyping()) {
144
- // 这里需要手动触发结束回调,因为 hook 中的 triggerOnEnd 不能直接调用
146
+ // Need to manually trigger end callback here, because triggerOnEnd in hook cannot be called directly
145
147
  onEnd === null || onEnd === void 0 ? void 0 : onEnd({
146
148
  str: wholeContentRef.current.content,
147
149
  manual: true,
148
150
  });
149
151
  }
150
152
  },
151
- /** 重新开始打字任务 */
153
+ /** Restart typing task */
152
154
  restart: () => {
153
155
  typingTask.restart();
154
156
  },
@@ -156,7 +158,57 @@ const MarkdownTyperCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedCha
156
158
  const markdownString = useMemo(() => {
157
159
  return (customConvertMarkdownString === null || customConvertMarkdownString === void 0 ? void 0 : customConvertMarkdownString(wholeContentRef.current.content)) || wholeContentRef.current.content;
158
160
  }, [wholeContentRef.current.content, customConvertMarkdownString]);
159
- return _jsx(ReactMarkdown, { ...reactMarkdownProps, children: markdownString });
161
+ // Show cursor when typing is in progress and showCursor is enabled
162
+ // Use ref to avoid re-render timing issues
163
+ const shouldShowCursor = showCursor && typingTask.isTypingRef.current && !disableTyping;
164
+ // Build display string with cursor placeholder
165
+ const displayString = useMemo(() => {
166
+ // Check if currently typing using ref (not state)
167
+ const isCurrentlyTyping = typingTask.isTypingRef.current;
168
+ if (showCursor && isCurrentlyTyping && !disableTyping) {
169
+ // Use a unique marker that won't conflict with markdown syntax
170
+ // Using zero-width space to make it invisible if somehow rendered
171
+ return markdownString + '\u200B__MDTYPER_CURSOR__\u200B';
172
+ }
173
+ return markdownString;
174
+ }, [markdownString, showCursor, disableTyping, typingTask.isTypingRef]);
175
+ // Create rehype plugin to handle cursor placeholder
176
+ const rehypeCursorPlugin = useMemo(() => {
177
+ if (!shouldShowCursor) {
178
+ return null;
179
+ }
180
+ return createRehypeCursorPlugin(cursor);
181
+ }, [shouldShowCursor, cursor]);
182
+ // Merge rehype plugins
183
+ const mergedRehypePlugins = useMemo(() => {
184
+ const basePlugins = (reactMarkdownProps === null || reactMarkdownProps === void 0 ? void 0 : reactMarkdownProps.rehypePlugins) || [];
185
+ if (rehypeCursorPlugin) {
186
+ return [...basePlugins, rehypeCursorPlugin];
187
+ }
188
+ return basePlugins;
189
+ }, [reactMarkdownProps === null || reactMarkdownProps === void 0 ? void 0 : reactMarkdownProps.rehypePlugins, rehypeCursorPlugin]);
190
+ // Merge components
191
+ const mergedComponents = useMemo(() => {
192
+ if (!shouldShowCursor || typeof cursor === 'string') {
193
+ return reactMarkdownProps === null || reactMarkdownProps === void 0 ? void 0 : reactMarkdownProps.components;
194
+ }
195
+ // For ReactNode cursor, wrap span component to handle cursor placeholder
196
+ return {
197
+ ...reactMarkdownProps === null || reactMarkdownProps === void 0 ? void 0 : reactMarkdownProps.components,
198
+ span: (props) => {
199
+ var _a;
200
+ return (_jsx(CursorSpan, { cursor: cursor, userSpanComponent: (_a = reactMarkdownProps === null || reactMarkdownProps === void 0 ? void 0 : reactMarkdownProps.components) === null || _a === void 0 ? void 0 : _a.span, ...props }));
201
+ },
202
+ };
203
+ }, [shouldShowCursor, cursor, reactMarkdownProps === null || reactMarkdownProps === void 0 ? void 0 : reactMarkdownProps.components]);
204
+ const mergedReactMarkdownProps = useMemo(() => {
205
+ return {
206
+ ...reactMarkdownProps,
207
+ rehypePlugins: mergedRehypePlugins,
208
+ components: mergedComponents,
209
+ };
210
+ }, [reactMarkdownProps, mergedRehypePlugins, mergedComponents]);
211
+ return _jsx(ReactMarkdown, { ...mergedReactMarkdownProps, children: displayString });
160
212
  });
161
213
  if (__DEV__) {
162
214
  MarkdownTyperCMD.displayName = 'MarkdownTyperCMD';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/MarkdownTyperCMD/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/MarkdownTyperCMD/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ interface CursorSpanProps {
3
+ cursor: React.ReactNode;
4
+ userSpanComponent?: React.ComponentType<any>;
5
+ node?: any;
6
+ [key: string]: any;
7
+ }
8
+ /**
9
+ * Span component that handles cursor placeholder rendering
10
+ * Falls back to user's custom span component if not a cursor placeholder
11
+ */
12
+ export declare const CursorSpan: React.FC<CursorSpanProps>;
13
+ export {};
14
+ //# sourceMappingURL=CursorSpan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorSpan.d.ts","sourceRoot":"","sources":["../../src/components/CursorSpan.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,eAAe;IACvB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmBhD,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Span component that handles cursor placeholder rendering
4
+ * Falls back to user's custom span component if not a cursor placeholder
5
+ */
6
+ export const CursorSpan = ({ cursor, userSpanComponent, node, ...props }) => {
7
+ // Render cursor component for placeholder
8
+ if (props['data-cursor-placeholder'] === 'true') {
9
+ return _jsx(_Fragment, { children: cursor });
10
+ }
11
+ // Normal span rendering - use user's custom component if provided
12
+ if (userSpanComponent) {
13
+ const UserSpan = userSpanComponent;
14
+ return _jsx(UserSpan, { node: node, ...props });
15
+ }
16
+ // Default span
17
+ return _jsx("span", { ...props });
18
+ };
19
+ //# sourceMappingURL=CursorSpan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorSpan.js","sourceRoot":"","sources":["../../src/components/CursorSpan.tsx"],"names":[],"mappings":";AASA;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EACpD,MAAM,EACN,iBAAiB,EACjB,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,EAAE;IACH,0CAA0C;IAC1C,IAAI,KAAK,CAAC,yBAAyB,CAAC,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,4BAAG,MAAM,GAAI,CAAC;IACvB,CAAC;IAED,kEAAkE;IAClE,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACnC,OAAO,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,KAAM,KAAK,GAAI,CAAC;IAC7C,CAAC;IAED,eAAe;IACf,OAAO,kBAAU,KAAK,GAAI,CAAC;AAC7B,CAAC,CAAC"}
package/es/constant.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export declare const __DEV__: boolean;
2
- /** 数学公式插件id */
2
+ /** KaTeX plugin ID */
3
3
  export declare const katexId: unique symbol;
4
4
  //# sourceMappingURL=constant.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,SAAyC,CAAC;AAE9D,eAAe;AACf,eAAO,MAAM,OAAO,eAAkB,CAAC"}
1
+ {"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,SAAyC,CAAC;AAE9D,sBAAsB;AACtB,eAAO,MAAM,OAAO,eAAkB,CAAC"}
package/es/constant.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export const __DEV__ = process.env.NODE_ENV === 'development';
2
- /** 数学公式插件id */
2
+ /** KaTeX plugin ID */
3
3
  export const katexId = Symbol('katex');
4
4
  //# sourceMappingURL=constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constant.js","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AAE9D,eAAe;AACf,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"constant.js","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AAE9D,sBAAsB;AACtB,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC"}
package/es/defined.d.ts CHANGED
@@ -1,32 +1,32 @@
1
1
  import { Options } from 'react-markdown';
2
2
  export type IntervalType = number | {
3
- /** 最大间隔 */
3
+ /** Maximum interval */
4
4
  max: number;
5
- /** 最小间隔 */
5
+ /** Minimum interval */
6
6
  min: number;
7
- /** 曲线函数自定义 */
7
+ /** Custom curve function */
8
8
  curveFn?: (x: number) => number;
9
- /** 曲线函数,如果配置了curveFn,则curve无效 */
9
+ /** Curve function, if curveFn is configured, curve will be ignored */
10
10
  curve?: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear' | 'step-start' | 'step-end';
11
11
  };
12
12
  /**
13
- * 字符接口
13
+ * Character interface
14
14
  */
15
15
  export interface IChar {
16
16
  content: string;
17
17
  tokenId: number;
18
- /** 字符索引 */
18
+ /** Character index */
19
19
  index: number;
20
20
  }
21
21
  /**
22
- * 段落类型
23
- * 段落类型为br时,表示换行
24
- * 段落类型为text时,表示文本
22
+ * Paragraph type
23
+ * When paragraph type is br, it represents a line break
24
+ * When paragraph type is text, it represents text
25
25
  */
26
26
  export interface IParagraph {
27
- /** 段落内容 */
27
+ /** Paragraph content */
28
28
  content?: string;
29
- /** 是否已打字 */
29
+ /** Whether it has been typed */
30
30
  isTyped: boolean;
31
31
  }
32
32
  export interface ITokensReference {
@@ -47,33 +47,37 @@ export interface IBeforeTypedChar extends IOnTypedCharData {
47
47
  }
48
48
  export interface MarkdownTyperBaseProps {
49
49
  reactMarkdownProps?: Options;
50
- /** 计时类型: 支持setTimeoutrequestAnimationFrame */
50
+ /** Timer type: supports setTimeout and requestAnimationFrame */
51
51
  timerType?: 'setTimeout' | 'requestAnimationFrame';
52
- /** 打字机效果间隔时间 */
52
+ /** Typing animation interval time */
53
53
  interval: IntervalType;
54
- /** 是否关闭打字机效果 */
54
+ /** Whether to disable typing animation */
55
55
  disableTyping?: boolean;
56
- /** 打字完成后回调, */
56
+ /** Callback after typing is complete */
57
57
  onEnd?: (data?: IEndData) => void;
58
- /** 开始打字回调 */
58
+ /** Callback when typing starts */
59
59
  onStart?: (data?: IOnTypedCharData) => void;
60
- /** 打字前回调 */
60
+ /** Callback before typing a character */
61
61
  onBeforeTypedChar?: (data?: IBeforeTypedChar) => Promise<void>;
62
62
  /**
63
- * 打字机打完一个字符回调
64
- * @param char 字符
65
- * @param index 字符索引
63
+ * Callback after typing a character
64
+ * @param char Character
65
+ * @param index Character index
66
66
  */
67
67
  onTypedChar?: (data?: ITypedChar) => void;
68
- /** 是否自动开启打字动画 */
68
+ /** Whether to automatically start typing animation */
69
69
  autoStartTyping?: boolean;
70
- /** 自定义转换markdown string 函数 */
70
+ /** Custom function to convert markdown string */
71
71
  customConvertMarkdownString?: (markdownString: string) => string;
72
+ /** Whether to show cursor during typing */
73
+ showCursor?: boolean;
74
+ /** Custom cursor, can be string or ReactNode, default is '|' */
75
+ cursor?: React.ReactNode;
72
76
  }
73
77
  export interface MarkdownTyperProps extends MarkdownTyperBaseProps {
74
78
  children: string | undefined;
75
79
  }
76
- /** MarkdownCMD 组件不需要 children */
80
+ /** MarkdownCMD component does not need children */
77
81
  export interface MarkdownTyperCMDProps extends MarkdownTyperBaseProps {
78
82
  children?: undefined;
79
83
  }
@@ -94,9 +98,9 @@ export interface MarkdownBaseRef {
94
98
  start: () => void;
95
99
  restart: () => void;
96
100
  }
97
- /** Markdown 组件的ref 类型 */
101
+ /** Markdown component ref type */
98
102
  export type MarkdownTyperRef = MarkdownBaseRef;
99
- /** MarkdownCMD 组件的 ref 类型 */
103
+ /** MarkdownCMD component ref type */
100
104
  export interface MarkdownTyperCMDRef extends MarkdownBaseRef {
101
105
  push: (content: string) => void;
102
106
  clear: () => void;
@@ -104,7 +108,7 @@ export interface MarkdownTyperCMDRef extends MarkdownBaseRef {
104
108
  }
105
109
  export interface IEndData {
106
110
  manual: boolean;
107
- /** 打字机打过的字符串, answerStr 相同 */
111
+ /** The string typed by the typewriter, same as answerStr */
108
112
  str: string;
109
113
  }
110
114
  //# sourceMappingURL=defined.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defined.d.ts","sourceRoot":"","sources":["../src/defined.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defined.d.ts","sourceRoot":"","sources":["../src/defined.ts"],"names":[],"mappings":"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"}
@@ -22,10 +22,12 @@ export interface TypingTaskController {
22
22
  stop: () => void;
23
23
  clear: () => void;
24
24
  isTyping: () => boolean;
25
- /** 是否主动调用 stop 方法 */
25
+ /** Whether stop method was called manually */
26
26
  typedIsManualStopRef: React.RefObject<boolean>;
27
27
  resume: () => void;
28
28
  restart: () => void;
29
+ /** Whether currently typing (for cursor display) */
30
+ isTypingRef: React.RefObject<boolean>;
29
31
  }
30
32
  export declare const useTypingTask: (options: UseTypingTaskOptions) => TypingTaskController;
31
33
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useTypingTask.d.ts","sourceRoot":"","sources":["../../src/hooks/useTypingTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5H,UAAU,oBAAoB;IAC5B,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1F,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAChD,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,qBAAqB;IACrB,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,oBAAoB,KAAG,oBA6Z7D,CAAC"}
1
+ {"version":3,"file":"useTypingTask.d.ts","sourceRoot":"","sources":["../../src/hooks/useTypingTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5H,UAAU,oBAAoB;IAC5B,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1F,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAChD,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,8CAA8C;IAC9C,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oDAAoD;IACpD,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,oBAAoB,KAAG,oBA8Z7D,CAAC"}