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.
- package/README.md +238 -729
- package/README.zh.md +238 -699
- package/es/MarkdownTyperCMD/index.d.ts.map +1 -1
- package/es/MarkdownTyperCMD/index.js +75 -23
- package/es/MarkdownTyperCMD/index.js.map +1 -1
- package/es/components/CursorSpan.d.ts +14 -0
- package/es/components/CursorSpan.d.ts.map +1 -0
- package/es/components/CursorSpan.js +19 -0
- package/es/components/CursorSpan.js.map +1 -0
- package/es/constant.d.ts +1 -1
- package/es/constant.d.ts.map +1 -1
- package/es/constant.js +1 -1
- package/es/constant.js.map +1 -1
- package/es/defined.d.ts +30 -26
- package/es/defined.d.ts.map +1 -1
- package/es/hooks/useTypingTask.d.ts +3 -1
- package/es/hooks/useTypingTask.d.ts.map +1 -1
- package/es/hooks/useTypingTask.js +46 -45
- package/es/hooks/useTypingTask.js.map +1 -1
- package/es/index.d.ts +2 -1
- package/es/index.d.ts.map +1 -1
- package/es/index.js +2 -1
- package/es/index.js.map +1 -1
- package/es/plugins/rehypeCursor.d.ts +8 -0
- package/es/plugins/rehypeCursor.d.ts.map +1 -0
- package/es/plugins/rehypeCursor.js +54 -0
- package/es/plugins/rehypeCursor.js.map +1 -0
- package/package.json +2 -2
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
//
|
|
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
|
|
102
|
-
* @param 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
|
-
//
|
|
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
|
-
|
|
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":";AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEnF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
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
package/es/constant.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,SAAyC,CAAC;AAE9D,
|
|
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
package/es/constant.js.map
CHANGED
|
@@ -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,
|
|
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
|
-
/**
|
|
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
|
-
*
|
|
24
|
-
*
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
|
101
|
+
/** Markdown component ref type */
|
|
98
102
|
export type MarkdownTyperRef = MarkdownBaseRef;
|
|
99
|
-
/** MarkdownCMD
|
|
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
|
-
/**
|
|
111
|
+
/** The string typed by the typewriter, same as answerStr */
|
|
108
112
|
str: string;
|
|
109
113
|
}
|
|
110
114
|
//# sourceMappingURL=defined.d.ts.map
|
package/es/defined.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defined.d.ts","sourceRoot":"","sources":["../src/defined.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,MAAM,YAAY,GACpB,MAAM,GACN;IACE,
|
|
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
|
-
/**
|
|
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,
|
|
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"}
|