ds-markdown 0.1.1 → 0.1.2-beta.1
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.en.md +129 -240
- package/README.ja.md +209 -161
- package/README.ko.md +323 -236
- package/README.md +67 -37
- package/dist/cjs/Markdown/index.d.ts +2 -7
- package/dist/cjs/Markdown/index.js.map +1 -1
- package/dist/cjs/MarkdownCMD/index.d.ts +2 -2
- package/dist/cjs/MarkdownCMD/index.js +24 -18
- package/dist/cjs/MarkdownCMD/index.js.map +1 -1
- package/dist/cjs/defined.d.ts +14 -4
- package/dist/cjs/hooks/useTypingTask.d.ts +2 -0
- package/dist/cjs/hooks/useTypingTask.js +53 -2
- package/dist/cjs/hooks/useTypingTask.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/esm/Markdown/index.d.ts +2 -7
- package/dist/esm/Markdown/index.js.map +1 -1
- package/dist/esm/MarkdownCMD/index.d.ts +2 -2
- package/dist/esm/MarkdownCMD/index.js +24 -18
- package/dist/esm/MarkdownCMD/index.js.map +1 -1
- package/dist/esm/defined.d.ts +14 -4
- package/dist/esm/hooks/useTypingTask.d.ts +2 -0
- package/dist/esm/hooks/useTypingTask.js +53 -2
- package/dist/esm/hooks/useTypingTask.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -20,39 +20,30 @@
|
|
|
20
20
|
|
|
21
21
|
## ✨ 核心特性
|
|
22
22
|
|
|
23
|
-
###
|
|
23
|
+
### 🤖 **AI 对话场景**
|
|
24
24
|
|
|
25
25
|
- 1:1 复刻 [DeepSeek 官网](https://chat.deepseek.com/) 聊天响应效果
|
|
26
26
|
- 支持思考过程 (`thinking`) 和回答内容 (`answer`) 双模式
|
|
27
|
-
-
|
|
28
|
-
- 支持亮色/暗色主题切换,完美适配不同场景
|
|
27
|
+
- 流式数据完美适配,零延迟响应用户输入
|
|
29
28
|
|
|
30
|
-
###
|
|
29
|
+
### 📊 **内容展示场景**
|
|
31
30
|
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
31
|
+
- 完整 Markdown 语法支持,包括代码高亮、表格、列表等
|
|
32
|
+
- 数学公式渲染 (KaTeX),支持 `$...$` 和 `\[...\]` 语法
|
|
33
|
+
- 支持亮色/暗色主题,适配不同产品风格
|
|
34
|
+
- 插件化架构,支持 remark/rehype 插件扩展
|
|
35
|
+
|
|
36
|
+
### 🔧 **开发体验**
|
|
37
|
+
|
|
38
|
+
- 支持打字中断 `stop` 和继续 `resume`
|
|
39
|
+
- 支持打字关闭与开启
|
|
35
40
|
|
|
36
41
|
### 🎬 **流畅动画**
|
|
37
42
|
|
|
43
|
+
- 双模式定时器优化,支持`requestAnimationFrame`和`setTimeout`模式
|
|
38
44
|
- 高频打字支持(`requestAnimationFrame`模式下打字间隔最低可接近于`0ms`)
|
|
39
|
-
-
|
|
45
|
+
- 帧同步渲染,与浏览器刷新完美配合
|
|
40
46
|
- 智能字符批量处理,视觉效果更自然
|
|
41
|
-
- 支持打字的中断 `stop` 和 继续`resume`
|
|
42
|
-
|
|
43
|
-
### 🔧 **灵活易用**
|
|
44
|
-
|
|
45
|
-
- **声明式 API**:适合简单场景,React 风格
|
|
46
|
-
- **命令式 API**:适合流式数据,性能更优
|
|
47
|
-
- **TypeScript 原生支持**:完整类型提示
|
|
48
|
-
|
|
49
|
-
### 🧮 **数学公式支持**
|
|
50
|
-
|
|
51
|
-
- **KaTeX 集成**:高性能数学公式渲染
|
|
52
|
-
- **插件化架构**:通过插件系统灵活配置
|
|
53
|
-
- **双语法支持**:`$...$` 和 `\[...\]` 两种分隔符
|
|
54
|
-
- **流式兼容**:完美支持打字动画中的数学公式
|
|
55
|
-
- **主题适配**:自动适配亮色/暗色主题
|
|
56
47
|
|
|
57
48
|
---
|
|
58
49
|
|
|
@@ -107,6 +98,27 @@ function App() {
|
|
|
107
98
|
}
|
|
108
99
|
```
|
|
109
100
|
|
|
101
|
+
### 禁用打字动画
|
|
102
|
+
|
|
103
|
+
```tsx
|
|
104
|
+
import DsMarkdown from 'ds-markdown';
|
|
105
|
+
import 'ds-markdown/style.css';
|
|
106
|
+
|
|
107
|
+
function StaticDemo() {
|
|
108
|
+
const [disableTyping, setDisableTyping] = useState(false);
|
|
109
|
+
|
|
110
|
+
return (
|
|
111
|
+
<div>
|
|
112
|
+
<button onClick={() => setDisableTyping(!disableTyping)}>{disableTyping ? '开启' : '关闭'}打字机效果</button>
|
|
113
|
+
|
|
114
|
+
<DsMarkdown interval={20} answerType="answer" disableTyping={disableTyping}>
|
|
115
|
+
# 静态展示模式 当 `disableTyping` 为 `true` 时,内容会立即全部显示,无打字动画效果。 这在某些场景下非常有用: - 📄 静态文档展示 - 🔄 切换显示模式 - ⚡ 快速预览内容
|
|
116
|
+
</DsMarkdown>
|
|
117
|
+
</div>
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
110
122
|
### 数学公式支持
|
|
111
123
|
|
|
112
124
|
```tsx
|
|
@@ -174,19 +186,26 @@ React 19 带来了许多激动人心的新特性:
|
|
|
174
186
|
|
|
175
187
|
## 📚 完整 API 文档
|
|
176
188
|
|
|
177
|
-
###
|
|
189
|
+
### 默认导出 DsMarkdown 和 MarkdownCMD 的 props
|
|
178
190
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
|
184
|
-
|
|
|
185
|
-
| `
|
|
186
|
-
| `
|
|
187
|
-
| `
|
|
188
|
-
| `
|
|
189
|
-
| `
|
|
191
|
+
```js
|
|
192
|
+
import DsMarkdown, { MarkdownCMD } from 'ds-markdown';
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
| 属性 | 类型 | 说明 | 默认值 |
|
|
196
|
+
| --------------- | --------------------------------------------- | ----------------------- | ----------------------------------------------------------- |
|
|
197
|
+
| `interval` | `number` | 打字间隔 (毫秒) | `30` |
|
|
198
|
+
| `timerType` | `'setTimeout'` \| `'requestAnimationFrame'` | 定时器类型 | 当前默认值是`setTimeout`,后期会改为`requestAnimationFrame` |
|
|
199
|
+
| `answerType` | `'thinking'` \| `'answer'` | 内容类型 (影响样式主题) | `'answer'` |
|
|
200
|
+
| `theme` | `'light'` \| `'dark'` | 主题类型 | `'light'` |
|
|
201
|
+
| `plugins` | `IMarkdownPlugin[]` | 插件配置 | `[]` |
|
|
202
|
+
| `math` | [IMarkdownMath](#IMarkdownMath) | 数学公式配置 | `{ splitSymbol: 'dollar' }` |
|
|
203
|
+
| `onEnd` | `(data: EndData) => void` | 打字结束回调 | - |
|
|
204
|
+
| `onStart` | `(data: StartData) => void` | 打字开始回调 | - |
|
|
205
|
+
| `onTypedChar` | `(data: `[ITypedChar](#ITypedChar)`) => void` | 每字符打字回调 | - |
|
|
206
|
+
| `disableTyping` | `boolean` | 禁用打字动画效果 | `false` |
|
|
207
|
+
|
|
208
|
+
> 注意: 如果当在打字中 `disableTyping`从 `true` 变为 `false`,则在下一个打字触发时,会把剩下的所有字一次性显示
|
|
190
209
|
|
|
191
210
|
### ITypedChar
|
|
192
211
|
|
|
@@ -216,7 +235,16 @@ React 19 带来了许多激动人心的新特性:
|
|
|
216
235
|
| `type` | `'buildIn'` \| `'custom'` | 插件类型 | - |
|
|
217
236
|
| `id` | `any` | 插件唯一标识 | - |
|
|
218
237
|
|
|
219
|
-
###
|
|
238
|
+
### 组件暴露的方法
|
|
239
|
+
|
|
240
|
+
#### 默认导出 DsMarkdown
|
|
241
|
+
|
|
242
|
+
| 方法 | 参数 | 说明 |
|
|
243
|
+
| -------- | ---- | ------------ |
|
|
244
|
+
| `stop` | - | 暂停打字动画 |
|
|
245
|
+
| `resume` | - | 恢复打字动画 |
|
|
246
|
+
|
|
247
|
+
#### MarkdownCMD 暴露的方法
|
|
220
248
|
|
|
221
249
|
| 方法 | 参数 | 说明 |
|
|
222
250
|
| ----------------- | ------------------------------------------- | ------------------ |
|
|
@@ -237,7 +265,9 @@ markdownRef.current?.resume(); // 恢复动画
|
|
|
237
265
|
|
|
238
266
|
## 🧮 数学公式使用指南
|
|
239
267
|
|
|
240
|
-
[
|
|
268
|
+
[DEMO1:勾股定理](https://stackblitz.com/edit/vitejs-vite-z94syu8j?file=src%2FApp.tsx)
|
|
269
|
+
|
|
270
|
+
[DEMO2:题目解答](https://stackblitz.com/edit/vitejs-vite-xk9lxagc?file=README.md)
|
|
241
271
|
|
|
242
272
|
### 基本语法
|
|
243
273
|
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
children: string | undefined;
|
|
5
|
-
answerType: AnswerType;
|
|
6
|
-
theme?: Theme;
|
|
7
|
-
}
|
|
8
|
-
declare const _default: React.NamedExoticComponent<MarkdownImplProps & React.RefAttributes<import("../defined.js").MarkdownBaseRef>>;
|
|
2
|
+
import { MarkdownProps } from '../defined.js';
|
|
3
|
+
declare const _default: React.NamedExoticComponent<MarkdownProps & React.RefAttributes<import("../defined.js").MarkdownBaseRef>>;
|
|
9
4
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Markdown/index.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAiG;AACjG,gDAAyC;AAEzC,uEAAkD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Markdown/index.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAiG;AACjG,gDAAyC;AAEzC,uEAAkD;AAMlD,MAAM,aAAa,GAAiC,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IACrH,MAAM,MAAM,GAAG,IAAA,cAAM,EAAiB,IAAK,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC3B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,qBAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,SAAS,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,SAAS,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;gBAC7B,UAAU,GAAG,OAAO,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,OAAO,CAAC;oBACrB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACzB,CAAC;YACH,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC5C,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1B,IAAA,2BAAmB,EAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QACtC,IAAI,EAAE,GAAG,EAAE;YACT,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,OAAO,uBAAC,kBAAW,IAAC,GAAG,EAAE,MAAM,KAAM,IAAI,GAAI,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAA6B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACrE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,UAAU,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEvD,IAAI,qBAAO,EAAE,CAAC;QACZ,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,uBAAC,aAAa,OAAK,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,GAAI,CAAC;AAChF,CAAC,CAAC,CAAC;AAEH,kBAAe,IAAA,YAAI,EAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const MarkdownCMD: import("react").ForwardRefExoticComponent<
|
|
1
|
+
import { MarkdownCMDProps, MarkdownCMDRef } from '../defined.js';
|
|
2
|
+
declare const MarkdownCMD: import("react").ForwardRefExoticComponent<MarkdownCMDProps & import("react").RefAttributes<MarkdownCMDRef>>;
|
|
3
3
|
export default MarkdownCMD;
|
|
@@ -9,7 +9,7 @@ const index_js_1 = __importDefault(require("../components/HighReactMarkdown/inde
|
|
|
9
9
|
const classnames_1 = __importDefault(require("classnames"));
|
|
10
10
|
const constant_js_1 = require("../constant.js");
|
|
11
11
|
const useTypingTask_js_1 = require("../hooks/useTypingTask.js");
|
|
12
|
-
const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, onEnd, onStart, onTypedChar, timerType = 'setTimeout', theme = 'light', math, plugins }, ref) => {
|
|
12
|
+
const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, onEnd, onStart, onTypedChar, timerType = 'setTimeout', theme = 'light', math, plugins, disableTyping = false }, ref) => {
|
|
13
13
|
/** 当前需要打字的内容 */
|
|
14
14
|
const charsRef = (0, react_1.useRef)([]);
|
|
15
15
|
/**
|
|
@@ -30,9 +30,9 @@ const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, onEnd, onStart, on
|
|
|
30
30
|
},
|
|
31
31
|
allLength: 0,
|
|
32
32
|
});
|
|
33
|
-
const [, setUpdate] = (0, react_1.useState)(
|
|
33
|
+
const [, setUpdate] = (0, react_1.useState)(0);
|
|
34
34
|
const triggerUpdate = () => {
|
|
35
|
-
setUpdate((prev) =>
|
|
35
|
+
setUpdate((prev) => prev + 1);
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
38
38
|
* 处理字符显示逻辑
|
|
@@ -58,11 +58,13 @@ const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, onEnd, onStart, on
|
|
|
58
58
|
onTypedChar,
|
|
59
59
|
processCharDisplay,
|
|
60
60
|
wholeContentRef,
|
|
61
|
+
disableTyping,
|
|
62
|
+
triggerUpdate,
|
|
61
63
|
});
|
|
62
64
|
/**
|
|
63
65
|
* 内部推送处理逻辑
|
|
64
66
|
*/
|
|
65
|
-
const
|
|
67
|
+
const processHasTypingPush = (content, answerType) => {
|
|
66
68
|
if (content.length === 0) {
|
|
67
69
|
return;
|
|
68
70
|
}
|
|
@@ -82,14 +84,23 @@ const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, onEnd, onStart, on
|
|
|
82
84
|
typingTask.start();
|
|
83
85
|
}
|
|
84
86
|
};
|
|
87
|
+
const processNoTypingPush = (content, answerType) => {
|
|
88
|
+
wholeContentRef.current[answerType].content += content;
|
|
89
|
+
wholeContentRef.current[answerType].length += content.length;
|
|
90
|
+
triggerUpdate();
|
|
91
|
+
};
|
|
85
92
|
(0, react_1.useImperativeHandle)(ref, () => ({
|
|
86
93
|
/**
|
|
87
94
|
* 添加内容
|
|
88
95
|
* @param content 内容 {string}
|
|
89
96
|
* @param answerType 回答类型 {AnswerType}
|
|
90
97
|
*/
|
|
91
|
-
push: (content, answerType) => {
|
|
92
|
-
|
|
98
|
+
push: (content, answerType = 'answer') => {
|
|
99
|
+
if (disableTyping) {
|
|
100
|
+
processNoTypingPush(content, answerType);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
processHasTypingPush(content, answerType);
|
|
93
104
|
},
|
|
94
105
|
/**
|
|
95
106
|
* 清除打字任务
|
|
@@ -98,17 +109,11 @@ const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, onEnd, onStart, on
|
|
|
98
109
|
typingTask.stop();
|
|
99
110
|
typingTask.typedIsManualStopRef.current = false;
|
|
100
111
|
charsRef.current = [];
|
|
101
|
-
wholeContentRef.current =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
answer: {
|
|
107
|
-
content: '',
|
|
108
|
-
length: 0,
|
|
109
|
-
},
|
|
110
|
-
allLength: 0,
|
|
111
|
-
};
|
|
112
|
+
wholeContentRef.current.thinking.content = '';
|
|
113
|
+
wholeContentRef.current.thinking.length = 0;
|
|
114
|
+
wholeContentRef.current.answer.content = '';
|
|
115
|
+
wholeContentRef.current.answer.length = 0;
|
|
116
|
+
wholeContentRef.current.allLength = 0;
|
|
112
117
|
isWholeTypedEndRef.current = false;
|
|
113
118
|
charIndexRef.current = 0;
|
|
114
119
|
triggerUpdate();
|
|
@@ -139,7 +144,8 @@ const MarkdownCMD = (0, react_1.forwardRef)(({ interval = 30, onEnd, onStart, on
|
|
|
139
144
|
*/
|
|
140
145
|
}));
|
|
141
146
|
const getParagraphs = (answerType) => {
|
|
142
|
-
|
|
147
|
+
const content = wholeContentRef.current[answerType].content || '';
|
|
148
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: `ds-markdown-paragraph ds-typed-${answerType}`, children: (0, jsx_runtime_1.jsx)(index_js_1.default, { theme: theme, math: math, plugins: plugins, children: content }) }));
|
|
143
149
|
};
|
|
144
150
|
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)({
|
|
145
151
|
'ds-markdown': true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAA0E;AAE1E,wFAAyE;AACzE,4DAAoC;AAEpC,gDAAyC;AACzC,gEAA0D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"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"}
|
package/dist/cjs/defined.d.ts
CHANGED
|
@@ -47,13 +47,15 @@ export interface IOnTypedCharData {
|
|
|
47
47
|
export interface ITypedChar extends IOnTypedCharData {
|
|
48
48
|
percent: number;
|
|
49
49
|
}
|
|
50
|
-
export interface
|
|
50
|
+
export interface MarkdownBaseProps {
|
|
51
51
|
/** 计时类型: 支持setTimeout和requestAnimationFrame */
|
|
52
52
|
timerType?: 'setTimeout' | 'requestAnimationFrame';
|
|
53
|
+
/** 回答类型 */
|
|
54
|
+
answerType?: 'thinking' | 'answer';
|
|
53
55
|
/** 打字机效果间隔时间 */
|
|
54
56
|
interval: number;
|
|
55
|
-
/**
|
|
56
|
-
|
|
57
|
+
/** 是否关闭打字机效果 */
|
|
58
|
+
disableTyping?: boolean;
|
|
57
59
|
/** 打字完成后回调, */
|
|
58
60
|
onEnd?: (data?: {
|
|
59
61
|
str?: string;
|
|
@@ -71,8 +73,16 @@ export interface MarkdownProps {
|
|
|
71
73
|
theme?: Theme;
|
|
72
74
|
/** 数学公式配置 */
|
|
73
75
|
math?: IMarkdownMath;
|
|
76
|
+
/** 插件配置 */
|
|
74
77
|
plugins?: IMarkdownPlugin[];
|
|
75
78
|
}
|
|
79
|
+
export interface MarkdownProps extends MarkdownBaseProps {
|
|
80
|
+
children: string | undefined;
|
|
81
|
+
}
|
|
82
|
+
/** MarkdownCMD 组件不需要 children */
|
|
83
|
+
export interface MarkdownCMDProps extends MarkdownBaseProps {
|
|
84
|
+
children?: undefined;
|
|
85
|
+
}
|
|
76
86
|
export interface IMarkdownPlugin {
|
|
77
87
|
remarkPlugin?: unknown;
|
|
78
88
|
rehypePlugin?: unknown;
|
|
@@ -102,7 +112,7 @@ export interface MarkdownBaseRef {
|
|
|
102
112
|
export type MarkdownRef = MarkdownBaseRef;
|
|
103
113
|
/** MarkdownCMD 组件的 ref 类型 */
|
|
104
114
|
export interface MarkdownCMDRef extends MarkdownBaseRef {
|
|
105
|
-
push: (content: string, answerType
|
|
115
|
+
push: (content: string, answerType?: AnswerType) => void;
|
|
106
116
|
clear: () => void;
|
|
107
117
|
triggerWholeEnd: () => void;
|
|
108
118
|
}
|
|
@@ -17,6 +17,8 @@ interface UseTypingTaskOptions {
|
|
|
17
17
|
onTypedChar?: (data?: ITypedChar) => void;
|
|
18
18
|
processCharDisplay: (char: IChar) => void;
|
|
19
19
|
wholeContentRef: React.RefObject<IWholeContent>;
|
|
20
|
+
disableTyping: boolean;
|
|
21
|
+
triggerUpdate: () => void;
|
|
20
22
|
}
|
|
21
23
|
export interface TypingTaskController {
|
|
22
24
|
start: () => void;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useTypingTask = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const useTypingTask = (options) => {
|
|
6
|
-
const { timerType = 'setTimeout', interval, charsRef, onEnd, onStart, onTypedChar, processCharDisplay, wholeContentRef } = options;
|
|
6
|
+
const { timerType = 'setTimeout', interval, charsRef, onEnd, onStart, onTypedChar, processCharDisplay, wholeContentRef, disableTyping, triggerUpdate } = options;
|
|
7
7
|
/** 是否卸载 */
|
|
8
8
|
const isUnmountRef = (0, react_1.useRef)(false);
|
|
9
9
|
/** 是否正在打字 */
|
|
@@ -16,6 +16,8 @@ const useTypingTask = (options) => {
|
|
|
16
16
|
const typedCharsRef = (0, react_1.useRef)(undefined);
|
|
17
17
|
// 是否主动调用 stop 方法
|
|
18
18
|
const typedIsManualStopRef = (0, react_1.useRef)(false);
|
|
19
|
+
const disableTypingRef = (0, react_1.useRef)(disableTyping);
|
|
20
|
+
disableTypingRef.current = disableTyping;
|
|
19
21
|
const getChars = () => {
|
|
20
22
|
return charsRef.current;
|
|
21
23
|
};
|
|
@@ -74,7 +76,7 @@ const useTypingTask = (options) => {
|
|
|
74
76
|
}
|
|
75
77
|
onEnd({
|
|
76
78
|
str: typedCharsRef.current?.typedContent,
|
|
77
|
-
answerType: typedCharsRef.current?.answerType,
|
|
79
|
+
answerType: typedCharsRef.current?.answerType || 'answer',
|
|
78
80
|
manual: data?.manual ?? false,
|
|
79
81
|
});
|
|
80
82
|
};
|
|
@@ -132,10 +134,54 @@ const useTypingTask = (options) => {
|
|
|
132
134
|
startTimeoutMode();
|
|
133
135
|
}
|
|
134
136
|
};
|
|
137
|
+
/** 打字机打完所有字符 */
|
|
138
|
+
function typingRemainAll() {
|
|
139
|
+
const chars = getChars();
|
|
140
|
+
const thinkingCharsStr = chars
|
|
141
|
+
.filter((char) => char.answerType === 'thinking')
|
|
142
|
+
.map((char) => char.content)
|
|
143
|
+
.join('');
|
|
144
|
+
const answerCharsStr = chars
|
|
145
|
+
.filter((char) => char.answerType === 'answer')
|
|
146
|
+
.map((char) => char.content)
|
|
147
|
+
.join('');
|
|
148
|
+
if (thinkingCharsStr) {
|
|
149
|
+
onTypedChar?.({
|
|
150
|
+
currentIndex: wholeContentRef.current.thinking.length,
|
|
151
|
+
currentChar: thinkingCharsStr,
|
|
152
|
+
answerType: 'thinking',
|
|
153
|
+
prevStr: typedCharsRef.current?.prevStr || '',
|
|
154
|
+
percent: 100,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
if (answerCharsStr) {
|
|
158
|
+
onTypedChar?.({
|
|
159
|
+
currentIndex: wholeContentRef.current.answer.length,
|
|
160
|
+
currentChar: answerCharsStr,
|
|
161
|
+
answerType: 'answer',
|
|
162
|
+
prevStr: typedCharsRef.current?.prevStr || '',
|
|
163
|
+
percent: 100,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
wholeContentRef.current.thinking.content += thinkingCharsStr;
|
|
167
|
+
wholeContentRef.current.thinking.length += thinkingCharsStr.length;
|
|
168
|
+
wholeContentRef.current.answer.content += answerCharsStr;
|
|
169
|
+
wholeContentRef.current.answer.length += answerCharsStr.length;
|
|
170
|
+
wholeContentRef.current.allLength += thinkingCharsStr.length + answerCharsStr.length;
|
|
171
|
+
charsRef.current = [];
|
|
172
|
+
isTypedRef.current = false;
|
|
173
|
+
triggerOnEnd();
|
|
174
|
+
triggerUpdate();
|
|
175
|
+
}
|
|
135
176
|
/** requestAnimationFrame 模式 */
|
|
136
177
|
const startAnimationFrameMode = () => {
|
|
137
178
|
let lastFrameTime = 0;
|
|
138
179
|
const frameLoop = (currentTime) => {
|
|
180
|
+
// 如果关闭打字机效果,则打完所有字符
|
|
181
|
+
if (disableTypingRef.current) {
|
|
182
|
+
typingRemainAll();
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
139
185
|
const chars = getChars();
|
|
140
186
|
if (isUnmountRef.current)
|
|
141
187
|
return;
|
|
@@ -199,6 +245,11 @@ const useTypingTask = (options) => {
|
|
|
199
245
|
timerRef.current = setTimeout(startTyped, interval);
|
|
200
246
|
};
|
|
201
247
|
const startTyped = (isStartPoint = false) => {
|
|
248
|
+
// 如果关闭打字机效果,则打完所有字符
|
|
249
|
+
if (disableTypingRef.current) {
|
|
250
|
+
typingRemainAll();
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
202
253
|
const chars = getChars();
|
|
203
254
|
if (isUnmountRef.current)
|
|
204
255
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTypingTask.js","sourceRoot":"","sources":["../../../src/hooks/useTypingTask.ts"],"names":[],"mappings":";;;AAAA,iCAA0C;
|
|
1
|
+
{"version":3,"file":"useTypingTask.js","sourceRoot":"","sources":["../../../src/hooks/useTypingTask.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import MarkdownCMD from './MarkdownCMD/index.js';
|
|
2
2
|
import Markdown from './Markdown/index.js';
|
|
3
|
-
import type { MarkdownCMDRef, MarkdownRef, IMarkdownMath, ITypedChar } from './defined.js';
|
|
3
|
+
import type { MarkdownCMDRef, MarkdownRef, IMarkdownMath, ITypedChar, MarkdownProps, MarkdownCMDProps } from './defined.js';
|
|
4
4
|
export default Markdown;
|
|
5
|
-
export type { MarkdownCMDRef, MarkdownRef, IMarkdownMath, ITypedChar };
|
|
5
|
+
export type { MarkdownCMDRef, MarkdownRef, IMarkdownMath, ITypedChar, MarkdownProps, MarkdownCMDProps };
|
|
6
6
|
export { Markdown, MarkdownCMD };
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
children: string | undefined;
|
|
5
|
-
answerType: AnswerType;
|
|
6
|
-
theme?: Theme;
|
|
7
|
-
}
|
|
8
|
-
declare const _default: React.NamedExoticComponent<MarkdownImplProps & React.RefAttributes<import("../defined.js").MarkdownBaseRef>>;
|
|
2
|
+
import { MarkdownProps } from '../defined.js';
|
|
3
|
+
declare const _default: React.NamedExoticComponent<MarkdownProps & React.RefAttributes<import("../defined.js").MarkdownBaseRef>>;
|
|
9
4
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Markdown/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,WAAW,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Markdown/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const MarkdownCMD: import("react").ForwardRefExoticComponent<
|
|
1
|
+
import { MarkdownCMDProps, MarkdownCMDRef } from '../defined.js';
|
|
2
|
+
declare const MarkdownCMD: import("react").ForwardRefExoticComponent<MarkdownCMDProps & import("react").RefAttributes<MarkdownCMDRef>>;
|
|
3
3
|
export default MarkdownCMD;
|
|
@@ -4,7 +4,7 @@ import HighReactMarkdown from '../components/HighReactMarkdown/index.js';
|
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import { __DEV__ } from '../constant.js';
|
|
6
6
|
import { useTypingTask } from '../hooks/useTypingTask.js';
|
|
7
|
-
const MarkdownCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, timerType = 'setTimeout', theme = 'light', math, plugins }, ref) => {
|
|
7
|
+
const MarkdownCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, timerType = 'setTimeout', theme = 'light', math, plugins, disableTyping = false }, ref) => {
|
|
8
8
|
/** 当前需要打字的内容 */
|
|
9
9
|
const charsRef = useRef([]);
|
|
10
10
|
/**
|
|
@@ -25,9 +25,9 @@ const MarkdownCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, ti
|
|
|
25
25
|
},
|
|
26
26
|
allLength: 0,
|
|
27
27
|
});
|
|
28
|
-
const [, setUpdate] = useState(
|
|
28
|
+
const [, setUpdate] = useState(0);
|
|
29
29
|
const triggerUpdate = () => {
|
|
30
|
-
setUpdate((prev) =>
|
|
30
|
+
setUpdate((prev) => prev + 1);
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
33
|
* 处理字符显示逻辑
|
|
@@ -53,11 +53,13 @@ const MarkdownCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, ti
|
|
|
53
53
|
onTypedChar,
|
|
54
54
|
processCharDisplay,
|
|
55
55
|
wholeContentRef,
|
|
56
|
+
disableTyping,
|
|
57
|
+
triggerUpdate,
|
|
56
58
|
});
|
|
57
59
|
/**
|
|
58
60
|
* 内部推送处理逻辑
|
|
59
61
|
*/
|
|
60
|
-
const
|
|
62
|
+
const processHasTypingPush = (content, answerType) => {
|
|
61
63
|
if (content.length === 0) {
|
|
62
64
|
return;
|
|
63
65
|
}
|
|
@@ -77,14 +79,23 @@ const MarkdownCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, ti
|
|
|
77
79
|
typingTask.start();
|
|
78
80
|
}
|
|
79
81
|
};
|
|
82
|
+
const processNoTypingPush = (content, answerType) => {
|
|
83
|
+
wholeContentRef.current[answerType].content += content;
|
|
84
|
+
wholeContentRef.current[answerType].length += content.length;
|
|
85
|
+
triggerUpdate();
|
|
86
|
+
};
|
|
80
87
|
useImperativeHandle(ref, () => ({
|
|
81
88
|
/**
|
|
82
89
|
* 添加内容
|
|
83
90
|
* @param content 内容 {string}
|
|
84
91
|
* @param answerType 回答类型 {AnswerType}
|
|
85
92
|
*/
|
|
86
|
-
push: (content, answerType) => {
|
|
87
|
-
|
|
93
|
+
push: (content, answerType = 'answer') => {
|
|
94
|
+
if (disableTyping) {
|
|
95
|
+
processNoTypingPush(content, answerType);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
processHasTypingPush(content, answerType);
|
|
88
99
|
},
|
|
89
100
|
/**
|
|
90
101
|
* 清除打字任务
|
|
@@ -93,17 +104,11 @@ const MarkdownCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, ti
|
|
|
93
104
|
typingTask.stop();
|
|
94
105
|
typingTask.typedIsManualStopRef.current = false;
|
|
95
106
|
charsRef.current = [];
|
|
96
|
-
wholeContentRef.current =
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
answer: {
|
|
102
|
-
content: '',
|
|
103
|
-
length: 0,
|
|
104
|
-
},
|
|
105
|
-
allLength: 0,
|
|
106
|
-
};
|
|
107
|
+
wholeContentRef.current.thinking.content = '';
|
|
108
|
+
wholeContentRef.current.thinking.length = 0;
|
|
109
|
+
wholeContentRef.current.answer.content = '';
|
|
110
|
+
wholeContentRef.current.answer.length = 0;
|
|
111
|
+
wholeContentRef.current.allLength = 0;
|
|
107
112
|
isWholeTypedEndRef.current = false;
|
|
108
113
|
charIndexRef.current = 0;
|
|
109
114
|
triggerUpdate();
|
|
@@ -134,7 +139,8 @@ const MarkdownCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, ti
|
|
|
134
139
|
*/
|
|
135
140
|
}));
|
|
136
141
|
const getParagraphs = (answerType) => {
|
|
137
|
-
|
|
142
|
+
const content = wholeContentRef.current[answerType].content || '';
|
|
143
|
+
return (_jsx("div", { className: `ds-markdown-paragraph ds-typed-${answerType}`, children: _jsx(HighReactMarkdown, { theme: theme, math: math, plugins: plugins, children: content }) }));
|
|
138
144
|
};
|
|
139
145
|
return (_jsxs("div", { className: classNames({
|
|
140
146
|
'ds-markdown': true,
|