ds-markdown 0.1.3 → 0.1.4-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.
Files changed (92) hide show
  1. package/dist/cjs/index.d.ts +98 -6
  2. package/dist/cjs/index.js +670 -12
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/plugins/index.d.ts +8 -1
  5. package/dist/cjs/plugins/index.js +15 -14
  6. package/dist/cjs/plugins/index.js.map +1 -1
  7. package/dist/esm/index.d.ts +98 -6
  8. package/dist/esm/index.js +664 -5
  9. package/dist/esm/index.js.map +1 -1
  10. package/dist/esm/plugins/index.d.ts +8 -1
  11. package/dist/esm/plugins/index.js +7 -2
  12. package/dist/esm/plugins/index.js.map +1 -1
  13. package/package.json +16 -6
  14. package/dist/cjs/AutoScroll/index.d.ts +0 -6
  15. package/dist/cjs/AutoScroll/index.js +0 -9
  16. package/dist/cjs/AutoScroll/index.js.map +0 -1
  17. package/dist/cjs/Markdown/index.d.ts +0 -4
  18. package/dist/cjs/Markdown/index.js +0 -70
  19. package/dist/cjs/Markdown/index.js.map +0 -1
  20. package/dist/cjs/MarkdownCMD/index.d.ts +0 -3
  21. package/dist/cjs/MarkdownCMD/index.js +0 -197
  22. package/dist/cjs/MarkdownCMD/index.js.map +0 -1
  23. package/dist/cjs/components/BlockWrap/index.d.ts +0 -9
  24. package/dist/cjs/components/BlockWrap/index.js +0 -8
  25. package/dist/cjs/components/BlockWrap/index.js.map +0 -1
  26. package/dist/cjs/components/HighReactMarkdown/index.d.ts +0 -11
  27. package/dist/cjs/components/HighReactMarkdown/index.js +0 -58
  28. package/dist/cjs/components/HighReactMarkdown/index.js.map +0 -1
  29. package/dist/cjs/constant.d.ts +0 -3
  30. package/dist/cjs/constant.js +0 -7
  31. package/dist/cjs/constant.js.map +0 -1
  32. package/dist/cjs/defined.d.ts +0 -132
  33. package/dist/cjs/defined.js +0 -3
  34. package/dist/cjs/defined.js.map +0 -1
  35. package/dist/cjs/hooks/useTypingTask.d.ts +0 -32
  36. package/dist/cjs/hooks/useTypingTask.js +0 -339
  37. package/dist/cjs/hooks/useTypingTask.js.map +0 -1
  38. package/dist/cjs/package.json +0 -1
  39. package/dist/cjs/utils/Tokenizer.d.ts +0 -47
  40. package/dist/cjs/utils/Tokenizer.js +0 -196
  41. package/dist/cjs/utils/Tokenizer.js.map +0 -1
  42. package/dist/cjs/utils/compiler.d.ts +0 -4
  43. package/dist/cjs/utils/compiler.js +0 -65
  44. package/dist/cjs/utils/compiler.js.map +0 -1
  45. package/dist/cjs/utils/methods/deepClone.d.ts +0 -1
  46. package/dist/cjs/utils/methods/deepClone.js +0 -7
  47. package/dist/cjs/utils/methods/deepClone.js.map +0 -1
  48. package/dist/cjs/utils/remarkMathBracket.d.ts +0 -7
  49. package/dist/cjs/utils/remarkMathBracket.js +0 -40
  50. package/dist/cjs/utils/remarkMathBracket.js.map +0 -1
  51. package/dist/cjs/utils/rule.d.ts +0 -25
  52. package/dist/cjs/utils/rule.js +0 -72
  53. package/dist/cjs/utils/rule.js.map +0 -1
  54. package/dist/esm/AutoScroll/index.d.ts +0 -6
  55. package/dist/esm/AutoScroll/index.js +0 -7
  56. package/dist/esm/AutoScroll/index.js.map +0 -1
  57. package/dist/esm/Markdown/index.d.ts +0 -4
  58. package/dist/esm/Markdown/index.js +0 -65
  59. package/dist/esm/Markdown/index.js.map +0 -1
  60. package/dist/esm/MarkdownCMD/index.d.ts +0 -3
  61. package/dist/esm/MarkdownCMD/index.js +0 -192
  62. package/dist/esm/MarkdownCMD/index.js.map +0 -1
  63. package/dist/esm/components/BlockWrap/index.d.ts +0 -9
  64. package/dist/esm/components/BlockWrap/index.js +0 -6
  65. package/dist/esm/components/BlockWrap/index.js.map +0 -1
  66. package/dist/esm/components/HighReactMarkdown/index.d.ts +0 -11
  67. package/dist/esm/components/HighReactMarkdown/index.js +0 -53
  68. package/dist/esm/components/HighReactMarkdown/index.js.map +0 -1
  69. package/dist/esm/constant.d.ts +0 -3
  70. package/dist/esm/constant.js +0 -4
  71. package/dist/esm/constant.js.map +0 -1
  72. package/dist/esm/defined.d.ts +0 -132
  73. package/dist/esm/defined.js +0 -2
  74. package/dist/esm/defined.js.map +0 -1
  75. package/dist/esm/hooks/useTypingTask.d.ts +0 -32
  76. package/dist/esm/hooks/useTypingTask.js +0 -335
  77. package/dist/esm/hooks/useTypingTask.js.map +0 -1
  78. package/dist/esm/utils/Tokenizer.d.ts +0 -47
  79. package/dist/esm/utils/Tokenizer.js +0 -191
  80. package/dist/esm/utils/Tokenizer.js.map +0 -1
  81. package/dist/esm/utils/compiler.d.ts +0 -4
  82. package/dist/esm/utils/compiler.js +0 -62
  83. package/dist/esm/utils/compiler.js.map +0 -1
  84. package/dist/esm/utils/methods/deepClone.d.ts +0 -1
  85. package/dist/esm/utils/methods/deepClone.js +0 -4
  86. package/dist/esm/utils/methods/deepClone.js.map +0 -1
  87. package/dist/esm/utils/remarkMathBracket.d.ts +0 -7
  88. package/dist/esm/utils/remarkMathBracket.js +0 -36
  89. package/dist/esm/utils/remarkMathBracket.js.map +0 -1
  90. package/dist/esm/utils/rule.d.ts +0 -25
  91. package/dist/esm/utils/rule.js +0 -69
  92. package/dist/esm/utils/rule.js.map +0 -1
@@ -1,132 +0,0 @@
1
- /**
2
- * 回答类型,思考和回答
3
- */
4
- export type AnswerType = 'answer' | 'thinking';
5
- export type Theme = 'light' | 'dark';
6
- /**
7
- * 字符接口
8
- */
9
- export interface IChar {
10
- content: string;
11
- answerType: AnswerType;
12
- tokenId: number;
13
- /** 字符索引 */
14
- index: number;
15
- }
16
- /**
17
- * 段落类型
18
- * 段落类型为br时,表示换行
19
- * 段落类型为text时,表示文本
20
- */
21
- export interface IParagraph {
22
- /** 段落内容 */
23
- content?: string;
24
- /** 是否已打字 */
25
- isTyped: boolean;
26
- /** 段落类型 */
27
- type: 'br' | 'text';
28
- /** 回答类型 */
29
- answerType: AnswerType;
30
- /** token 参考 */
31
- tokensReference: Record<string, ITokensReference>;
32
- }
33
- export interface ITokensReference {
34
- startIndex: number;
35
- raw: string;
36
- }
37
- export interface IOnTypedCharData {
38
- currentIndex: number;
39
- currentChar: string;
40
- answerType: AnswerType;
41
- prevStr: string;
42
- }
43
- export interface ITypedChar extends IOnTypedCharData {
44
- percent: number;
45
- currentStr: string;
46
- }
47
- export interface IBeforeTypedChar extends IOnTypedCharData {
48
- percent: number;
49
- }
50
- export interface MarkdownBaseProps {
51
- /** 计时类型: 支持setTimeout和requestAnimationFrame */
52
- timerType?: 'setTimeout' | 'requestAnimationFrame';
53
- /** 回答类型 */
54
- answerType?: 'thinking' | 'answer';
55
- /** 打字机效果间隔时间 */
56
- interval: number;
57
- /** 是否关闭打字机效果 */
58
- disableTyping?: boolean;
59
- /** 打字完成后回调, */
60
- onEnd?: (data?: IEndData) => void;
61
- /** 开始打字回调 */
62
- onStart?: (data?: IOnTypedCharData) => void;
63
- /** 打字前回调 */
64
- onBeforeTypedChar?: (data?: IBeforeTypedChar) => Promise<void>;
65
- /**
66
- * 打字机打完一个字符回调
67
- * @param char 字符
68
- * @param index 字符索引
69
- */
70
- onTypedChar?: (data?: ITypedChar) => void;
71
- /** 主题 */
72
- theme?: Theme;
73
- /** 数学公式配置 */
74
- math?: IMarkdownMath;
75
- /** 插件配置 */
76
- plugins?: IMarkdownPlugin[];
77
- /** 是否自动开启打字动画 */
78
- autoStartTyping?: boolean;
79
- }
80
- export interface MarkdownProps extends MarkdownBaseProps {
81
- children: string | undefined;
82
- }
83
- /** MarkdownCMD 组件不需要 children */
84
- export interface MarkdownCMDProps extends MarkdownBaseProps {
85
- children?: undefined;
86
- }
87
- export interface IMarkdownPlugin {
88
- remarkPlugin?: unknown;
89
- rehypePlugin?: unknown;
90
- type: 'buildIn' | 'custom';
91
- id?: any;
92
- }
93
- export interface IMarkdownMath {
94
- /** 是括号还是$作为分隔符, 默认是$ */
95
- splitSymbol: 'bracket' | 'dollar';
96
- }
97
- export interface IWholeContent {
98
- thinking: {
99
- content: string;
100
- length: number;
101
- prevLength: number;
102
- };
103
- answer: {
104
- content: string;
105
- length: number;
106
- prevLength: number;
107
- };
108
- allLength: number;
109
- }
110
- export interface MarkdownBaseRef {
111
- stop: () => void;
112
- resume: () => void;
113
- start: () => void;
114
- restart: () => void;
115
- }
116
- /** Markdown 组件的ref 类型 */
117
- export type MarkdownRef = MarkdownBaseRef;
118
- /** MarkdownCMD 组件的 ref 类型 */
119
- export interface MarkdownCMDRef extends MarkdownBaseRef {
120
- push: (content: string, answerType?: AnswerType) => void;
121
- clear: () => void;
122
- triggerWholeEnd: () => void;
123
- }
124
- export interface IEndData {
125
- manual: boolean;
126
- /** 回答字符串 */
127
- answerStr: string;
128
- /** 思考字符串 */
129
- thinkingStr: string;
130
- /** 打字机打过的字符串, 和answerStr 相同 */
131
- str: string;
132
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=defined.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defined.js","sourceRoot":"","sources":["../../src/defined.ts"],"names":[],"mappings":""}
@@ -1,32 +0,0 @@
1
- import { AnswerType, IChar, ITypedChar, IWholeContent, MarkdownProps, IEndData, IBeforeTypedChar } from '../defined.js';
2
- interface UseTypingTaskOptions {
3
- timerType: MarkdownProps['timerType'];
4
- interval: number;
5
- charsRef: React.RefObject<IChar[]>;
6
- onEnd?: (data?: IEndData) => void;
7
- onStart?: (data?: {
8
- currentIndex: number;
9
- currentChar: string;
10
- answerType: AnswerType;
11
- prevStr: string;
12
- }) => void;
13
- onBeforeTypedChar?: (data?: IBeforeTypedChar) => Promise<void>;
14
- onTypedChar?: (data?: ITypedChar) => void;
15
- processCharDisplay: (char: IChar) => void;
16
- wholeContentRef: React.RefObject<IWholeContent>;
17
- disableTyping: boolean;
18
- triggerUpdate: () => void;
19
- resetWholeContent: () => void;
20
- }
21
- export interface TypingTaskController {
22
- start: () => void;
23
- stop: () => void;
24
- clear: () => void;
25
- isTyping: () => boolean;
26
- /** 是否主动调用 stop 方法 */
27
- typedIsManualStopRef: React.RefObject<boolean>;
28
- resume: () => void;
29
- restart: () => void;
30
- }
31
- export declare const useTypingTask: (options: UseTypingTaskOptions) => TypingTaskController;
32
- export {};
@@ -1,339 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useTypingTask = void 0;
4
- const react_1 = require("react");
5
- const useTypingTask = (options) => {
6
- const { timerType = 'setTimeout', interval, charsRef, onEnd, onStart, onBeforeTypedChar, onTypedChar, processCharDisplay, wholeContentRef, disableTyping, triggerUpdate, resetWholeContent, } = options;
7
- /** 是否卸载 */
8
- const isUnmountRef = (0, react_1.useRef)(false);
9
- /** 是否正在打字 */
10
- const isTypingRef = (0, react_1.useRef)(false);
11
- /** 动画帧ID */
12
- const animationFrameRef = (0, react_1.useRef)(null);
13
- /** 传统定时器(兼容模式) */
14
- const timerRef = (0, react_1.useRef)(null);
15
- // 已经打过的字记录
16
- const typedCharsRef = (0, react_1.useRef)(undefined);
17
- // 是否主动调用 stop 方法
18
- const typedIsManualStopRef = (0, react_1.useRef)(false);
19
- const disableTypingRef = (0, react_1.useRef)(disableTyping);
20
- disableTypingRef.current = disableTyping;
21
- const intervalRef = (0, react_1.useRef)(interval);
22
- intervalRef.current = interval;
23
- const getChars = () => {
24
- return charsRef.current;
25
- };
26
- (0, react_1.useEffect)(() => {
27
- isUnmountRef.current = false;
28
- return () => {
29
- isUnmountRef.current = true;
30
- clearTimer();
31
- };
32
- }, []);
33
- /**
34
- * 触发打字开始回调
35
- * @param char 当前字符
36
- */
37
- const triggerOnStart = (char) => {
38
- if (!onStart) {
39
- return;
40
- }
41
- const prevStr = wholeContentRef.current[char.answerType].content;
42
- onStart({
43
- currentIndex: prevStr.length,
44
- currentChar: char.content,
45
- answerType: char.answerType,
46
- prevStr,
47
- });
48
- };
49
- /**
50
- * 触发打字结束回调
51
- */
52
- const triggerOnEnd = (data) => {
53
- if (!onEnd) {
54
- return;
55
- }
56
- onEnd({
57
- str: wholeContentRef.current.answer.content,
58
- answerStr: wholeContentRef.current.answer.content,
59
- thinkingStr: wholeContentRef.current.thinking.content,
60
- manual: data?.manual ?? false,
61
- });
62
- };
63
- /**
64
- * 触发打字过程中回调
65
- * @param char 当前字符
66
- */
67
- const triggerOnBeforeTypedChar = async (char) => {
68
- if (!onBeforeTypedChar) {
69
- return;
70
- }
71
- const { answerType, content, index } = char;
72
- const allLength = wholeContentRef.current.allLength;
73
- // 计算之前字符的百分比
74
- const percent = (char.index / allLength) * 100;
75
- await onBeforeTypedChar({
76
- currentIndex: index,
77
- currentChar: content,
78
- answerType: answerType,
79
- prevStr: wholeContentRef.current[answerType].content,
80
- percent,
81
- });
82
- };
83
- /** 打字完成回调 */
84
- const triggerOnTypedChar = async (char) => {
85
- if (!onTypedChar) {
86
- return;
87
- }
88
- const { answerType, content, index } = char;
89
- const allLength = wholeContentRef.current.allLength;
90
- const percent = ((char.index + 1) / allLength) * 100;
91
- onTypedChar({
92
- currentIndex: index,
93
- currentChar: content,
94
- answerType: answerType,
95
- prevStr: wholeContentRef.current[answerType].content.slice(0, index),
96
- currentStr: wholeContentRef.current[answerType].content,
97
- percent,
98
- });
99
- };
100
- /** 清除定时器 */
101
- const clearTimer = () => {
102
- // 清理 requestAnimationFrame
103
- if (animationFrameRef.current) {
104
- cancelAnimationFrame(animationFrameRef.current);
105
- animationFrameRef.current = null;
106
- }
107
- // 清理 setTimeout (可能被 timestamp 模式使用)
108
- if (timerRef.current) {
109
- clearTimeout(timerRef.current);
110
- timerRef.current = null;
111
- }
112
- isTypingRef.current = false;
113
- typedCharsRef.current = undefined;
114
- };
115
- /** 开始打字任务 */
116
- const startTypedTask = () => {
117
- /** 如果手动调用 stop 方法,则不重新开始打字 */
118
- if (typedIsManualStopRef.current) {
119
- return;
120
- }
121
- if (isTypingRef.current) {
122
- return;
123
- }
124
- if (timerType === 'requestAnimationFrame') {
125
- startAnimationFrameMode();
126
- }
127
- else {
128
- startTimeoutMode();
129
- }
130
- };
131
- /** 打字机打完所有字符 */
132
- async function typingRemainAll() {
133
- const chars = getChars();
134
- const thinkingCharsStr = chars
135
- .filter((char) => char.answerType === 'thinking')
136
- .map((char) => char.content)
137
- .join('');
138
- const answerCharsStr = chars
139
- .filter((char) => char.answerType === 'answer')
140
- .map((char) => char.content)
141
- .join('');
142
- if (thinkingCharsStr) {
143
- await onBeforeTypedChar?.({
144
- currentIndex: wholeContentRef.current.thinking.length,
145
- currentChar: thinkingCharsStr,
146
- answerType: 'thinking',
147
- prevStr: wholeContentRef.current.thinking.content,
148
- percent: 100,
149
- });
150
- }
151
- if (answerCharsStr) {
152
- await onBeforeTypedChar?.({
153
- currentIndex: wholeContentRef.current.answer.length,
154
- currentChar: answerCharsStr,
155
- answerType: 'answer',
156
- prevStr: wholeContentRef.current.answer.content,
157
- percent: 100,
158
- });
159
- }
160
- wholeContentRef.current.thinking.content += thinkingCharsStr;
161
- wholeContentRef.current.thinking.length += thinkingCharsStr.length;
162
- wholeContentRef.current.answer.content += answerCharsStr;
163
- wholeContentRef.current.answer.length += answerCharsStr.length;
164
- wholeContentRef.current.allLength += thinkingCharsStr.length + answerCharsStr.length;
165
- charsRef.current = [];
166
- isTypingRef.current = false;
167
- triggerOnEnd();
168
- triggerUpdate();
169
- }
170
- /** requestAnimationFrame 模式 */
171
- const startAnimationFrameMode = () => {
172
- let lastFrameTime = performance.now();
173
- const frameLoop = async (currentTime) => {
174
- // 如果关闭打字机效果,则打完所有字符
175
- if (disableTypingRef.current) {
176
- await typingRemainAll();
177
- return;
178
- }
179
- const chars = getChars();
180
- if (isUnmountRef.current)
181
- return;
182
- if (chars.length === 0) {
183
- stopAnimationFrame();
184
- return;
185
- }
186
- const deltaTime = currentTime - lastFrameTime;
187
- let needToTypingCharsLength = Math.max(0, Math.floor(deltaTime / intervalRef.current));
188
- needToTypingCharsLength = Math.min(needToTypingCharsLength, chars.length);
189
- if (needToTypingCharsLength > 0) {
190
- // 处理字符
191
- for (let i = 0; i < needToTypingCharsLength; i++) {
192
- const char = chars.shift();
193
- if (char === undefined)
194
- break;
195
- if (!isTypingRef.current) {
196
- isTypingRef.current = true;
197
- triggerOnStart(char);
198
- }
199
- /** 打字前回调 */
200
- await triggerOnBeforeTypedChar(char);
201
- processCharDisplay(char);
202
- /** 打字完成回调 */
203
- triggerOnTypedChar(char);
204
- }
205
- lastFrameTime = performance.now();
206
- // 继续下一帧
207
- if (chars.length > 0) {
208
- animationFrameRef.current = requestAnimationFrame(frameLoop);
209
- }
210
- else {
211
- isTypingRef.current = false;
212
- triggerOnEnd();
213
- }
214
- }
215
- else {
216
- // 本次你不需要打字,继续下一帧
217
- animationFrameRef.current = requestAnimationFrame(frameLoop);
218
- }
219
- };
220
- animationFrameRef.current = requestAnimationFrame(frameLoop);
221
- };
222
- /** 停止动画帧模式 */
223
- const stopAnimationFrame = (manual = false) => {
224
- isTypingRef.current = false;
225
- if (animationFrameRef.current) {
226
- cancelAnimationFrame(animationFrameRef.current);
227
- animationFrameRef.current = null;
228
- }
229
- if (!manual) {
230
- triggerOnEnd({ manual });
231
- }
232
- };
233
- /** setTimeout 模式 */
234
- const startTimeoutMode = () => {
235
- const nextTyped = () => {
236
- const chars = getChars();
237
- if (chars.length === 0) {
238
- stopTimeout();
239
- return;
240
- }
241
- timerRef.current = setTimeout(startTyped, intervalRef.current);
242
- };
243
- const startTyped = async (isStartPoint = false) => {
244
- // 如果关闭打字机效果,则打完所有字符
245
- if (disableTypingRef.current) {
246
- typingRemainAll();
247
- return;
248
- }
249
- const chars = getChars();
250
- if (isUnmountRef.current)
251
- return;
252
- isTypingRef.current = true;
253
- const char = chars.shift();
254
- if (char === undefined) {
255
- stopTimeout();
256
- return;
257
- }
258
- if (isStartPoint) {
259
- triggerOnStart(char);
260
- }
261
- /** 打字前回调 */
262
- await triggerOnBeforeTypedChar(char);
263
- processCharDisplay(char);
264
- /** 打字完成回调 */
265
- triggerOnTypedChar(char);
266
- nextTyped();
267
- };
268
- startTyped(true);
269
- };
270
- /** 停止超时模式 */
271
- const stopTimeout = () => {
272
- isTypingRef.current = false;
273
- if (timerRef.current) {
274
- clearTimeout(timerRef.current);
275
- timerRef.current = null;
276
- }
277
- triggerOnEnd();
278
- };
279
- const cancelTask = () => {
280
- if (timerType === 'requestAnimationFrame') {
281
- stopAnimationFrame();
282
- }
283
- else {
284
- stopTimeout();
285
- }
286
- };
287
- /** 暂时停止 */
288
- const stopTask = () => {
289
- typedIsManualStopRef.current = true;
290
- cancelTask();
291
- };
292
- /** 停止打字任务 */
293
- const endTask = () => {
294
- cancelTask();
295
- };
296
- function restartTypedTask() {
297
- endTask();
298
- // 将wholeContentRef的内容放到charsRef中
299
- charsRef.current.unshift(...wholeContentRef.current.thinking.content.split('').map((charUnit) => {
300
- const char = {
301
- content: charUnit,
302
- answerType: 'thinking',
303
- tokenId: 0,
304
- index: 0,
305
- };
306
- return char;
307
- }));
308
- charsRef.current.unshift(...wholeContentRef.current.answer.content.split('').map((charUnit) => {
309
- const char = {
310
- content: charUnit,
311
- answerType: 'answer',
312
- tokenId: 0,
313
- index: 0,
314
- };
315
- return char;
316
- }));
317
- resetWholeContent();
318
- triggerUpdate();
319
- startTypedTask();
320
- }
321
- function clear() {
322
- clearTimer();
323
- }
324
- function resume() {
325
- typedIsManualStopRef.current = false;
326
- startTypedTask();
327
- }
328
- return {
329
- start: startTypedTask,
330
- restart: restartTypedTask,
331
- stop: stopTask,
332
- resume: resume,
333
- clear: clear,
334
- isTyping: () => isTypingRef.current,
335
- typedIsManualStopRef,
336
- };
337
- };
338
- exports.useTypingTask = useTypingTask;
339
- //# sourceMappingURL=useTypingTask.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTypingTask.js","sourceRoot":"","sources":["../../../src/hooks/useTypingTask.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- { "type": "commonjs" }
@@ -1,47 +0,0 @@
1
- /** 此文件借鉴 marked 的部分代码 */
2
- export declare const getTokenId: () => number;
3
- interface Space {
4
- type: 'space';
5
- raw: string;
6
- noTrimEndRaw?: string;
7
- id: number;
8
- }
9
- interface Fence {
10
- type: 'fence';
11
- raw: string;
12
- id: number;
13
- }
14
- interface Segment {
15
- type: 'segment';
16
- raw: string;
17
- id: number;
18
- }
19
- interface List {
20
- type: 'list';
21
- raw: string;
22
- items: ListItem[];
23
- loose: boolean;
24
- id: number;
25
- }
26
- interface ListItem {
27
- type: 'list_item';
28
- raw: string;
29
- task: boolean;
30
- checked: boolean | undefined;
31
- loose: boolean;
32
- text: string;
33
- tokens: Token[];
34
- id: number;
35
- }
36
- export type Token = Space | Fence | Segment | List | ListItem;
37
- export declare class Tokenizer {
38
- /** 空行 */
39
- space(src: string): Space | undefined;
40
- /** 围栏 fence */
41
- fence(src: string): Fence | undefined;
42
- /** 块 */
43
- segment(src: string): Segment | undefined;
44
- /** 列表 */
45
- list(src: string): List | undefined;
46
- }
47
- export {};