ds-markdown 0.0.10-beta.1 → 0.0.10-beta.3

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.
Files changed (34) hide show
  1. package/README.md +234 -67
  2. package/dist/cjs/MarkdownCMD/index.js +183 -225
  3. package/dist/cjs/MarkdownCMD/index.js.map +1 -1
  4. package/dist/cjs/defined.d.ts +20 -0
  5. package/dist/cjs/hooks/useTypingTask.d.ts +31 -0
  6. package/dist/cjs/hooks/useTypingTask.js +226 -0
  7. package/dist/cjs/hooks/useTypingTask.js.map +1 -0
  8. package/dist/cjs/utils/Tokenizer.d.ts +11 -0
  9. package/dist/cjs/utils/Tokenizer.js +26 -4
  10. package/dist/cjs/utils/Tokenizer.js.map +1 -1
  11. package/dist/cjs/utils/compiler.js +5 -1
  12. package/dist/cjs/utils/compiler.js.map +1 -1
  13. package/dist/cjs/utils/methods/deepClone.d.ts +1 -0
  14. package/dist/cjs/utils/methods/deepClone.js +7 -0
  15. package/dist/cjs/utils/methods/deepClone.js.map +1 -0
  16. package/dist/cjs/utils/rule.js +2 -1
  17. package/dist/cjs/utils/rule.js.map +1 -1
  18. package/dist/esm/MarkdownCMD/index.js +184 -226
  19. package/dist/esm/MarkdownCMD/index.js.map +1 -1
  20. package/dist/esm/defined.d.ts +20 -0
  21. package/dist/esm/hooks/useTypingTask.d.ts +31 -0
  22. package/dist/esm/hooks/useTypingTask.js +222 -0
  23. package/dist/esm/hooks/useTypingTask.js.map +1 -0
  24. package/dist/esm/utils/Tokenizer.d.ts +11 -0
  25. package/dist/esm/utils/Tokenizer.js +24 -3
  26. package/dist/esm/utils/Tokenizer.js.map +1 -1
  27. package/dist/esm/utils/compiler.js +6 -2
  28. package/dist/esm/utils/compiler.js.map +1 -1
  29. package/dist/esm/utils/methods/deepClone.d.ts +1 -0
  30. package/dist/esm/utils/methods/deepClone.js +4 -0
  31. package/dist/esm/utils/methods/deepClone.js.map +1 -0
  32. package/dist/esm/utils/rule.js +2 -1
  33. package/dist/esm/utils/rule.js.map +1 -1
  34. package/package.json +1 -1
@@ -9,7 +9,9 @@ const index_js_1 = __importDefault(require("../components/HighReactMarkdown/inde
9
9
  const classnames_1 = __importDefault(require("classnames"));
10
10
  const compiler_js_1 = require("../utils/compiler.js");
11
11
  const constant_js_1 = require("../constant.js");
12
- const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, isClosePrettyTyped = false, onEnd, onStart, onTypedChar }, ref) => {
12
+ const deepClone_js_1 = __importDefault(require("../utils/methods/deepClone.js"));
13
+ const useTypingTask_js_1 = require("../hooks/useTypingTask.js");
14
+ const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, onEnd, onStart, onTypedChar, timerType = 'requestAnimationFrame' }, ref) => {
13
15
  /** 当前需要打字的内容 */
14
16
  const charsRef = (0, react_1.useRef)([]);
15
17
  /**
@@ -17,23 +19,6 @@ const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, isClosePrettyTyped
17
19
  * 如果打字已经完全结束,则不会再触发打字效果
18
20
  */
19
21
  const isWholeTypedEndRef = (0, react_1.useRef)(false);
20
- /** 已经打过的字 */
21
- const typedCharsRef = (0, react_1.useRef)(undefined);
22
- /** 是否卸载 */
23
- const isUnmountRef = (0, react_1.useRef)(false);
24
- /** 是否正在打字 */
25
- const isTypedRef = (0, react_1.useRef)(false);
26
- /** 打字结束回调, */
27
- const onEndRef = (0, react_1.useRef)(onEnd);
28
- onEndRef.current = onEnd;
29
- /** 打字开始回调 */
30
- const onStartRef = (0, react_1.useRef)(onStart);
31
- onStartRef.current = onStart;
32
- /** 打字过程中回调 */
33
- const onTypedCharRef = (0, react_1.useRef)(onTypedChar);
34
- onTypedCharRef.current = onTypedChar;
35
- /** 打字定时器 */
36
- const timerRef = (0, react_1.useRef)(null);
37
22
  /**
38
23
  * 稳定段落
39
24
  * 稳定段落是已经打过字,并且不会再变化的段落
@@ -43,211 +28,122 @@ const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, isClosePrettyTyped
43
28
  const [currentSegment, setCurrentSegment] = (0, react_1.useState)(undefined);
44
29
  /** 当前段落引用 */
45
30
  const currentParagraphRef = (0, react_1.useRef)(undefined);
46
- currentParagraphRef.current = currentSegment;
47
- /** 清除打字定时器 */
48
- const clearTimer = () => {
49
- if (timerRef.current) {
50
- clearTimeout(timerRef.current);
51
- timerRef.current = null;
52
- }
53
- isTypedRef.current = false;
54
- };
55
- (0, react_1.useEffect)(() => {
56
- isUnmountRef.current = false;
57
- return () => {
58
- isUnmountRef.current = true;
59
- };
60
- }, []);
61
- /** 思考段落 */
62
- const thinkingParagraphs = (0, react_1.useMemo)(() => stableSegments.filter((paragraph) => paragraph.answerType === 'thinking'), [stableSegments]);
63
- /** 回答段落 */
64
- const answerParagraphs = (0, react_1.useMemo)(() => stableSegments.filter((paragraph) => paragraph.answerType === 'answer'), [stableSegments]);
65
- /**
66
- * 记录打过的字
67
- * @param char 当前字符
68
- * @returns
69
- */
70
- const recordTypedChars = (char) => {
71
- let prevStr = '';
72
- if (!typedCharsRef.current || typedCharsRef.current.answerType !== char.answerType) {
73
- typedCharsRef.current = {
74
- typedContent: char.content,
75
- answerType: char.answerType,
76
- prevStr: '',
77
- };
78
- }
79
- else {
80
- prevStr = typedCharsRef.current.typedContent;
81
- typedCharsRef.current.typedContent += char.content;
82
- typedCharsRef.current.prevStr = prevStr;
83
- }
84
- return {
85
- prevStr,
86
- nextStr: typedCharsRef.current?.typedContent || '',
87
- };
88
- };
89
- /**
90
- * 触发打字开始回调
91
- * @param char 当前字符
92
- */
93
- const triggerOnStart = (char) => {
94
- const onStartFn = onStartRef.current;
95
- if (!onStartFn) {
96
- return;
97
- }
98
- const { prevStr } = recordTypedChars(char);
99
- onStartRef.current?.({
100
- currentIndex: prevStr.length,
101
- currentChar: char.content,
102
- answerType: char.answerType,
103
- prevStr,
104
- });
105
- };
106
- /**
107
- * 触发打字结束回调
108
- */
109
- const triggerOnEnd = () => {
110
- const onEndFn = onEndRef.current;
111
- if (!onEndFn) {
112
- return;
113
- }
114
- onEndFn({
115
- str: typedCharsRef.current?.typedContent,
116
- answerType: typedCharsRef.current?.answerType,
117
- });
118
- };
31
+ // currentParagraphRef.current = currentSegment;
119
32
  /**
120
- * 触发打字过程中回调
121
- * @param char 当前字符
122
- * @param isStartPoint 是否是开始打字(第一个字)
33
+ * 处理字符显示逻辑
123
34
  */
124
- const triggerOnTypedChar = (char, isStartPoint = false) => {
125
- const onTypedCharFn = onTypedCharRef.current;
126
- if (!isStartPoint) {
127
- recordTypedChars(char);
128
- }
129
- if (!onTypedCharFn) {
130
- return;
131
- }
132
- onTypedCharFn({
133
- currentIndex: typedCharsRef.current?.prevStr.length || 0,
134
- currentChar: char.content,
135
- answerType: char.answerType,
136
- prevStr: typedCharsRef.current?.prevStr || '',
137
- });
138
- };
139
- /** 开始打字任务 */
140
- const startTypedTask = () => {
141
- if (isTypedRef.current) {
142
- return;
143
- }
144
- const chars = charsRef.current;
145
- /** 停止打字 */
146
- const stopTyped = () => {
147
- isTypedRef.current = false;
148
- if (timerRef.current) {
149
- clearTimeout(timerRef.current);
150
- timerRef.current = null;
151
- }
152
- triggerOnEnd();
153
- };
154
- /** 打下一个字 */
155
- const nextTyped = () => {
156
- if (chars.length === 0) {
157
- stopTyped();
158
- return;
159
- }
160
- timerRef.current = setTimeout(startTyped, interval);
161
- };
162
- /**
163
- * 开始打字
164
- * @param isStartPoint 是否是开始打字
165
- */
166
- function startTyped(isStartPoint = false) {
167
- if (isUnmountRef.current) {
168
- return;
169
- }
170
- isTypedRef.current = true;
171
- const char = chars.shift();
172
- if (char === undefined) {
173
- stopTyped();
174
- return;
175
- }
176
- if (isStartPoint) {
177
- triggerOnStart(char);
178
- triggerOnTypedChar(char, isStartPoint);
179
- }
180
- else {
181
- triggerOnTypedChar(char);
182
- }
183
- const currentSegment = currentParagraphRef.current;
184
- /** 如果碰到 space 则需要处理成两个段落 */
185
- if (char.contentType === 'space') {
186
- if (currentSegment) {
187
- setStableSegments((prev) => {
188
- const newParagraphs = [...prev];
189
- if (currentSegment) {
190
- newParagraphs.push({ ...currentSegment, isTyped: false });
191
- }
192
- newParagraphs.push({
193
- content: '',
194
- isTyped: false,
195
- type: 'br',
196
- answerType: char.answerType,
197
- });
198
- return newParagraphs;
199
- });
200
- setCurrentSegment(undefined);
201
- }
202
- else {
203
- setStableSegments((prev) => {
204
- const newParagraphs = [...prev];
35
+ const processCharDisplay = (char) => {
36
+ const currentSegment = currentParagraphRef.current;
37
+ /** 如果碰到 space,和split_segment 则需要处理成两个段落 */
38
+ if (char.contentType === 'space' || char.contentType === 'split_segment') {
39
+ if (currentSegment) {
40
+ setStableSegments((prev) => {
41
+ const newParagraphs = [...prev];
42
+ // 放入到稳定队列
43
+ if (currentSegment) {
44
+ newParagraphs.push({ ...currentSegment, isTyped: false });
45
+ }
46
+ if (char.contentType === 'space') {
205
47
  newParagraphs.push({
206
48
  content: '',
207
49
  isTyped: false,
208
50
  type: 'br',
209
51
  answerType: char.answerType,
52
+ tokensReference: {
53
+ [char.tokenId]: {
54
+ startIndex: 0,
55
+ raw: char.content,
56
+ },
57
+ },
210
58
  });
211
- return newParagraphs;
212
- });
213
- }
214
- nextTyped();
215
- return;
216
- }
217
- // 处理当前段落
218
- let _currentParagraph = currentSegment;
219
- const newCurrentParagraph = {
220
- content: '',
221
- isTyped: false,
222
- type: 'text',
223
- answerType: char.answerType,
224
- };
225
- if (!_currentParagraph) {
226
- // 如果当前没有段落,则直接设置为当前段落
227
- _currentParagraph = newCurrentParagraph;
59
+ }
60
+ return newParagraphs;
61
+ });
62
+ setCurrentSegment(() => undefined);
63
+ currentParagraphRef.current = undefined;
228
64
  }
229
- else if (currentSegment && currentSegment?.answerType !== char.answerType) {
230
- // 如果当前段落和当前字符的回答类型不一致,则需要处理成两个段落
65
+ else {
231
66
  setStableSegments((prev) => {
232
67
  const newParagraphs = [...prev];
233
- newParagraphs.push({ ...currentSegment, isTyped: false });
68
+ newParagraphs.push({
69
+ content: '',
70
+ isTyped: false,
71
+ type: 'br',
72
+ answerType: char.answerType,
73
+ tokensReference: {
74
+ [char.tokenId]: {
75
+ startIndex: 0,
76
+ raw: char.content,
77
+ },
78
+ },
79
+ });
234
80
  return newParagraphs;
235
81
  });
236
- _currentParagraph = newCurrentParagraph;
237
- setCurrentSegment(_currentParagraph);
238
82
  }
239
- setCurrentSegment((prev) => {
240
- return {
241
- ..._currentParagraph,
242
- content: (prev?.content || '') + char.content,
243
- isTyped: true,
244
- };
83
+ return;
84
+ }
85
+ // 处理当前段落
86
+ const newCurrentParagraph = {
87
+ content: '',
88
+ isTyped: false,
89
+ type: 'text',
90
+ answerType: char.answerType,
91
+ tokensReference: {},
92
+ };
93
+ let _currentParagraph = currentSegment;
94
+ if (!_currentParagraph) {
95
+ // 如果当前没有段落,则直接设置为新当前段落
96
+ _currentParagraph = newCurrentParagraph;
97
+ }
98
+ else if (currentSegment && currentSegment?.answerType !== char.answerType) {
99
+ // 如果当前段落和当前字符的回答类型不一致,则需要处理成两个段落
100
+ setStableSegments((prev) => {
101
+ const newParagraphs = [...prev];
102
+ newParagraphs.push({ ...currentSegment, isTyped: false });
103
+ return newParagraphs;
245
104
  });
246
- nextTyped();
105
+ _currentParagraph = newCurrentParagraph;
247
106
  }
248
- startTyped(true);
107
+ const tokensReference = (0, deepClone_js_1.default)(_currentParagraph.tokensReference);
108
+ if (tokensReference[char.tokenId]) {
109
+ tokensReference[char.tokenId].raw += char.content;
110
+ tokensReference[char.tokenId].startIndex = currentSegment?.content?.length || 0;
111
+ }
112
+ else {
113
+ tokensReference[char.tokenId] = {
114
+ startIndex: currentSegment?.content?.length || 0,
115
+ raw: char.content,
116
+ };
117
+ }
118
+ const newCurrentSegment = {
119
+ ..._currentParagraph,
120
+ tokensReference,
121
+ content: (currentSegment?.content || '') + char.content,
122
+ isTyped: true,
123
+ };
124
+ currentParagraphRef.current = newCurrentSegment;
125
+ setCurrentSegment(() => newCurrentSegment);
249
126
  };
250
- const lastSegmentRaw = (0, react_1.useRef)('');
127
+ /** 思考段落 */
128
+ const thinkingParagraphs = (0, react_1.useMemo)(() => stableSegments.filter((paragraph) => paragraph.answerType === 'thinking'), [stableSegments]);
129
+ /** 回答段落 */
130
+ const answerParagraphs = (0, react_1.useMemo)(() => stableSegments.filter((paragraph) => paragraph.answerType === 'answer'), [stableSegments]);
131
+ // 使用新的打字任务 hook
132
+ const typingTask = (0, useTypingTask_js_1.useTypingTask)({
133
+ timerType,
134
+ interval,
135
+ charsRef,
136
+ onEnd,
137
+ onStart,
138
+ onTypedChar,
139
+ processCharDisplay,
140
+ });
141
+ const lastSegmentRawRef = (0, react_1.useRef)({
142
+ thinking: '',
143
+ answer: '',
144
+ thinkingReference: null,
145
+ answerReference: null,
146
+ });
251
147
  (0, react_1.useImperativeHandle)(ref, () => ({
252
148
  /**
253
149
  * 添加内容
@@ -255,55 +151,117 @@ const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, isClosePrettyTyped
255
151
  * @param answerType 回答类型 {AnswerType}
256
152
  */
257
153
  push: (content, answerType) => {
154
+ if (content.length === 0) {
155
+ return;
156
+ }
157
+ const lastSegmentReference = lastSegmentRawRef.current[`${answerType}Reference`];
258
158
  if (isWholeTypedEndRef.current) {
259
159
  if (constant_js_1.__DEV__) {
260
160
  console.warn('打字已经完全结束,不能再添加新的内容');
261
161
  }
262
162
  return;
263
163
  }
264
- if (!lastSegmentRaw.current) {
265
- lastSegmentRaw.current = content;
164
+ let currentLastSegmentReference = null;
165
+ let currentLastSegmentRaw = '';
166
+ let lastSegmentRaw = '';
167
+ if (lastSegmentReference) {
168
+ lastSegmentRaw = lastSegmentReference.noTrimEndRaw || lastSegmentReference.raw;
169
+ currentLastSegmentRaw = lastSegmentRaw + content;
266
170
  }
267
171
  else {
268
- lastSegmentRaw.current += content;
172
+ currentLastSegmentRaw = content;
269
173
  }
270
- const tokens = (0, compiler_js_1.compiler)(lastSegmentRaw.current);
271
- // 如果最后一个token是segment,则把最后一个token的raw赋值给lastSegmentRaw
272
- if (tokens[tokens.length - 1].type === 'segment') {
273
- lastSegmentRaw.current = tokens[tokens.length - 1].raw;
174
+ const tokens = (0, compiler_js_1.compiler)(currentLastSegmentRaw);
175
+ // 如果最后一个token是space,则把lastSegmentRaw设置为空
176
+ if (tokens[tokens.length - 1].type === 'space') {
177
+ currentLastSegmentReference = null;
274
178
  }
275
179
  else {
276
- lastSegmentRaw.current = '';
180
+ currentLastSegmentReference = tokens[tokens.length - 1];
277
181
  }
278
- tokens.forEach((token) => {
279
- if (token.type === 'space') {
280
- charsRef.current.push({ content: token.raw, answerType, contentType: 'space' });
182
+ const pushAndSplitSegment = (raw, currenIndex) => {
183
+ const currentToken = tokens[currenIndex];
184
+ if (currenIndex > 0) {
185
+ const prevToken = tokens[currenIndex - 1];
186
+ if (prevToken.type !== 'space' && currentToken.type !== 'space') {
187
+ charsRef.current.push({ content: '', answerType, contentType: 'split_segment', tokenId: currentToken.id });
188
+ }
281
189
  }
282
- else {
283
- charsRef.current.push(...token.raw.split('').map((char) => ({ content: char, answerType, contentType: 'segment' })));
190
+ charsRef.current.push(...raw.split('').map((char) => ({ content: char, answerType, contentType: 'segment', tokenId: currentToken.id })));
191
+ };
192
+ if (!lastSegmentReference) {
193
+ tokens.forEach((token, i) => {
194
+ if (token.type === 'space') {
195
+ charsRef.current.push({ content: token.raw, answerType, contentType: 'space', tokenId: token.id });
196
+ }
197
+ else {
198
+ pushAndSplitSegment(token.raw, i);
199
+ }
200
+ });
201
+ }
202
+ else {
203
+ let str = '';
204
+ let firstSpaceIndex = -1;
205
+ let nextTokenIndex = lastSegmentRaw.length;
206
+ for (let i = 0; i < tokens.length; i++) {
207
+ const token = tokens[i];
208
+ if (token.type === 'space') {
209
+ if (firstSpaceIndex === -1) {
210
+ firstSpaceIndex = str.length;
211
+ }
212
+ str += token.raw;
213
+ if (lastSegmentRaw.length > firstSpaceIndex) {
214
+ // 如果lastSegmentRaw的长度大于firstSpaceIndex,则需要将当前设置为 segment
215
+ charsRef.current.push(...token.raw.split('').map((char) => ({ content: char, answerType, contentType: 'segment', tokenId: token.id })));
216
+ }
217
+ else {
218
+ charsRef.current.push({ content: token.raw, answerType, contentType: 'space', tokenId: token.id });
219
+ }
220
+ }
221
+ else {
222
+ str += token.noTrimEndRaw || token.raw;
223
+ const realRaw = str.slice(nextTokenIndex);
224
+ if (realRaw.length > 0) {
225
+ pushAndSplitSegment(realRaw, i);
226
+ }
227
+ }
228
+ nextTokenIndex = str.length;
284
229
  }
285
- });
286
- if (!isTypedRef.current) {
287
- startTypedTask();
230
+ }
231
+ lastSegmentRawRef.current[`${answerType}Reference`] = currentLastSegmentReference;
232
+ if (!typingTask.isTyping()) {
233
+ typingTask.start();
288
234
  }
289
235
  },
290
236
  /**
291
237
  * 清除打字任务
292
238
  */
293
239
  clear: () => {
294
- clearTimer();
240
+ typingTask.stop();
295
241
  charsRef.current = [];
296
242
  setStableSegments([]);
297
243
  setCurrentSegment(undefined);
298
244
  isWholeTypedEndRef.current = false;
245
+ currentParagraphRef.current = undefined;
246
+ typingTask.clear();
247
+ lastSegmentRawRef.current = {
248
+ thinking: '',
249
+ answer: '',
250
+ thinkingReference: null,
251
+ answerReference: null,
252
+ };
299
253
  },
300
254
  /**
301
255
  * 主动触发打字结束
302
256
  */
303
257
  triggerWholeEnd: () => {
304
258
  isWholeTypedEndRef.current = true;
305
- if (!isTypedRef.current) {
306
- triggerOnEnd();
259
+ if (!typingTask.isTyping()) {
260
+ // 这里需要手动触发结束回调,因为 hook 中的 triggerOnEnd 不能直接调用
261
+ onEnd?.({
262
+ str: undefined,
263
+ answerType: undefined,
264
+ });
307
265
  }
308
266
  },
309
267
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"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"}
@@ -2,6 +2,18 @@
2
2
  * 回答类型,思考和回答
3
3
  */
4
4
  export type AnswerType = 'answer' | 'thinking';
5
+ /**
6
+ * 字符接口
7
+ */
8
+ export interface IChar {
9
+ content: string;
10
+ answerType: AnswerType;
11
+ /**
12
+ * split_segment 两个连续的段落,需要做分割
13
+ */
14
+ contentType: 'space' | 'segment' | 'split_segment';
15
+ tokenId: number;
16
+ }
5
17
  /**
6
18
  * 段落类型
7
19
  * 段落类型为br时,表示换行
@@ -16,8 +28,16 @@ export interface IParagraph {
16
28
  type: 'br' | 'text';
17
29
  /** 回答类型 */
18
30
  answerType: AnswerType;
31
+ /** token 参考 */
32
+ tokensReference: Record<string, ITokensReference>;
33
+ }
34
+ export interface ITokensReference {
35
+ startIndex: number;
36
+ raw: string;
19
37
  }
20
38
  export interface MarkdownProps {
39
+ /** 计时类型: 支持setTimeout和requestAnimationFrame */
40
+ timerType?: 'setTimeout' | 'requestAnimationFrame';
21
41
  /** 打字机效果间隔时间 */
22
42
  interval: number;
23
43
  /** 是否关闭匀速打字机效果 */
@@ -0,0 +1,31 @@
1
+ import { AnswerType, IChar, MarkdownProps } from '../defined.js';
2
+ interface UseTypingTaskOptions {
3
+ timerType: MarkdownProps['timerType'];
4
+ interval: number;
5
+ charsRef: React.MutableRefObject<IChar[]>;
6
+ onEnd?: (data?: {
7
+ str?: string;
8
+ answerType?: AnswerType;
9
+ }) => void;
10
+ onStart?: (data?: {
11
+ currentIndex: number;
12
+ currentChar: string;
13
+ answerType: AnswerType;
14
+ prevStr: string;
15
+ }) => void;
16
+ onTypedChar?: (data?: {
17
+ currentIndex: number;
18
+ currentChar: string;
19
+ answerType: AnswerType;
20
+ prevStr: string;
21
+ }) => void;
22
+ processCharDisplay: (char: IChar) => void;
23
+ }
24
+ export interface TypingTaskController {
25
+ start: () => void;
26
+ stop: () => void;
27
+ clear: () => void;
28
+ isTyping: () => boolean;
29
+ }
30
+ export declare const useTypingTask: (options: UseTypingTaskOptions) => TypingTaskController;
31
+ export {};