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,335 +0,0 @@
1
- import { useEffect, useRef } from 'react';
2
- export const useTypingTask = (options) => {
3
- const { timerType = 'setTimeout', interval, charsRef, onEnd, onStart, onBeforeTypedChar, onTypedChar, processCharDisplay, wholeContentRef, disableTyping, triggerUpdate, resetWholeContent, } = options;
4
- /** 是否卸载 */
5
- const isUnmountRef = useRef(false);
6
- /** 是否正在打字 */
7
- const isTypingRef = useRef(false);
8
- /** 动画帧ID */
9
- const animationFrameRef = useRef(null);
10
- /** 传统定时器(兼容模式) */
11
- const timerRef = useRef(null);
12
- // 已经打过的字记录
13
- const typedCharsRef = useRef(undefined);
14
- // 是否主动调用 stop 方法
15
- const typedIsManualStopRef = useRef(false);
16
- const disableTypingRef = useRef(disableTyping);
17
- disableTypingRef.current = disableTyping;
18
- const intervalRef = useRef(interval);
19
- intervalRef.current = interval;
20
- const getChars = () => {
21
- return charsRef.current;
22
- };
23
- useEffect(() => {
24
- isUnmountRef.current = false;
25
- return () => {
26
- isUnmountRef.current = true;
27
- clearTimer();
28
- };
29
- }, []);
30
- /**
31
- * 触发打字开始回调
32
- * @param char 当前字符
33
- */
34
- const triggerOnStart = (char) => {
35
- if (!onStart) {
36
- return;
37
- }
38
- const prevStr = wholeContentRef.current[char.answerType].content;
39
- onStart({
40
- currentIndex: prevStr.length,
41
- currentChar: char.content,
42
- answerType: char.answerType,
43
- prevStr,
44
- });
45
- };
46
- /**
47
- * 触发打字结束回调
48
- */
49
- const triggerOnEnd = (data) => {
50
- if (!onEnd) {
51
- return;
52
- }
53
- onEnd({
54
- str: wholeContentRef.current.answer.content,
55
- answerStr: wholeContentRef.current.answer.content,
56
- thinkingStr: wholeContentRef.current.thinking.content,
57
- manual: data?.manual ?? false,
58
- });
59
- };
60
- /**
61
- * 触发打字过程中回调
62
- * @param char 当前字符
63
- */
64
- const triggerOnBeforeTypedChar = async (char) => {
65
- if (!onBeforeTypedChar) {
66
- return;
67
- }
68
- const { answerType, content, index } = char;
69
- const allLength = wholeContentRef.current.allLength;
70
- // 计算之前字符的百分比
71
- const percent = (char.index / allLength) * 100;
72
- await onBeforeTypedChar({
73
- currentIndex: index,
74
- currentChar: content,
75
- answerType: answerType,
76
- prevStr: wholeContentRef.current[answerType].content,
77
- percent,
78
- });
79
- };
80
- /** 打字完成回调 */
81
- const triggerOnTypedChar = async (char) => {
82
- if (!onTypedChar) {
83
- return;
84
- }
85
- const { answerType, content, index } = char;
86
- const allLength = wholeContentRef.current.allLength;
87
- const percent = ((char.index + 1) / allLength) * 100;
88
- onTypedChar({
89
- currentIndex: index,
90
- currentChar: content,
91
- answerType: answerType,
92
- prevStr: wholeContentRef.current[answerType].content.slice(0, index),
93
- currentStr: wholeContentRef.current[answerType].content,
94
- percent,
95
- });
96
- };
97
- /** 清除定时器 */
98
- const clearTimer = () => {
99
- // 清理 requestAnimationFrame
100
- if (animationFrameRef.current) {
101
- cancelAnimationFrame(animationFrameRef.current);
102
- animationFrameRef.current = null;
103
- }
104
- // 清理 setTimeout (可能被 timestamp 模式使用)
105
- if (timerRef.current) {
106
- clearTimeout(timerRef.current);
107
- timerRef.current = null;
108
- }
109
- isTypingRef.current = false;
110
- typedCharsRef.current = undefined;
111
- };
112
- /** 开始打字任务 */
113
- const startTypedTask = () => {
114
- /** 如果手动调用 stop 方法,则不重新开始打字 */
115
- if (typedIsManualStopRef.current) {
116
- return;
117
- }
118
- if (isTypingRef.current) {
119
- return;
120
- }
121
- if (timerType === 'requestAnimationFrame') {
122
- startAnimationFrameMode();
123
- }
124
- else {
125
- startTimeoutMode();
126
- }
127
- };
128
- /** 打字机打完所有字符 */
129
- async function typingRemainAll() {
130
- const chars = getChars();
131
- const thinkingCharsStr = chars
132
- .filter((char) => char.answerType === 'thinking')
133
- .map((char) => char.content)
134
- .join('');
135
- const answerCharsStr = chars
136
- .filter((char) => char.answerType === 'answer')
137
- .map((char) => char.content)
138
- .join('');
139
- if (thinkingCharsStr) {
140
- await onBeforeTypedChar?.({
141
- currentIndex: wholeContentRef.current.thinking.length,
142
- currentChar: thinkingCharsStr,
143
- answerType: 'thinking',
144
- prevStr: wholeContentRef.current.thinking.content,
145
- percent: 100,
146
- });
147
- }
148
- if (answerCharsStr) {
149
- await onBeforeTypedChar?.({
150
- currentIndex: wholeContentRef.current.answer.length,
151
- currentChar: answerCharsStr,
152
- answerType: 'answer',
153
- prevStr: wholeContentRef.current.answer.content,
154
- percent: 100,
155
- });
156
- }
157
- wholeContentRef.current.thinking.content += thinkingCharsStr;
158
- wholeContentRef.current.thinking.length += thinkingCharsStr.length;
159
- wholeContentRef.current.answer.content += answerCharsStr;
160
- wholeContentRef.current.answer.length += answerCharsStr.length;
161
- wholeContentRef.current.allLength += thinkingCharsStr.length + answerCharsStr.length;
162
- charsRef.current = [];
163
- isTypingRef.current = false;
164
- triggerOnEnd();
165
- triggerUpdate();
166
- }
167
- /** requestAnimationFrame 模式 */
168
- const startAnimationFrameMode = () => {
169
- let lastFrameTime = performance.now();
170
- const frameLoop = async (currentTime) => {
171
- // 如果关闭打字机效果,则打完所有字符
172
- if (disableTypingRef.current) {
173
- await typingRemainAll();
174
- return;
175
- }
176
- const chars = getChars();
177
- if (isUnmountRef.current)
178
- return;
179
- if (chars.length === 0) {
180
- stopAnimationFrame();
181
- return;
182
- }
183
- const deltaTime = currentTime - lastFrameTime;
184
- let needToTypingCharsLength = Math.max(0, Math.floor(deltaTime / intervalRef.current));
185
- needToTypingCharsLength = Math.min(needToTypingCharsLength, chars.length);
186
- if (needToTypingCharsLength > 0) {
187
- // 处理字符
188
- for (let i = 0; i < needToTypingCharsLength; i++) {
189
- const char = chars.shift();
190
- if (char === undefined)
191
- break;
192
- if (!isTypingRef.current) {
193
- isTypingRef.current = true;
194
- triggerOnStart(char);
195
- }
196
- /** 打字前回调 */
197
- await triggerOnBeforeTypedChar(char);
198
- processCharDisplay(char);
199
- /** 打字完成回调 */
200
- triggerOnTypedChar(char);
201
- }
202
- lastFrameTime = performance.now();
203
- // 继续下一帧
204
- if (chars.length > 0) {
205
- animationFrameRef.current = requestAnimationFrame(frameLoop);
206
- }
207
- else {
208
- isTypingRef.current = false;
209
- triggerOnEnd();
210
- }
211
- }
212
- else {
213
- // 本次你不需要打字,继续下一帧
214
- animationFrameRef.current = requestAnimationFrame(frameLoop);
215
- }
216
- };
217
- animationFrameRef.current = requestAnimationFrame(frameLoop);
218
- };
219
- /** 停止动画帧模式 */
220
- const stopAnimationFrame = (manual = false) => {
221
- isTypingRef.current = false;
222
- if (animationFrameRef.current) {
223
- cancelAnimationFrame(animationFrameRef.current);
224
- animationFrameRef.current = null;
225
- }
226
- if (!manual) {
227
- triggerOnEnd({ manual });
228
- }
229
- };
230
- /** setTimeout 模式 */
231
- const startTimeoutMode = () => {
232
- const nextTyped = () => {
233
- const chars = getChars();
234
- if (chars.length === 0) {
235
- stopTimeout();
236
- return;
237
- }
238
- timerRef.current = setTimeout(startTyped, intervalRef.current);
239
- };
240
- const startTyped = async (isStartPoint = false) => {
241
- // 如果关闭打字机效果,则打完所有字符
242
- if (disableTypingRef.current) {
243
- typingRemainAll();
244
- return;
245
- }
246
- const chars = getChars();
247
- if (isUnmountRef.current)
248
- return;
249
- isTypingRef.current = true;
250
- const char = chars.shift();
251
- if (char === undefined) {
252
- stopTimeout();
253
- return;
254
- }
255
- if (isStartPoint) {
256
- triggerOnStart(char);
257
- }
258
- /** 打字前回调 */
259
- await triggerOnBeforeTypedChar(char);
260
- processCharDisplay(char);
261
- /** 打字完成回调 */
262
- triggerOnTypedChar(char);
263
- nextTyped();
264
- };
265
- startTyped(true);
266
- };
267
- /** 停止超时模式 */
268
- const stopTimeout = () => {
269
- isTypingRef.current = false;
270
- if (timerRef.current) {
271
- clearTimeout(timerRef.current);
272
- timerRef.current = null;
273
- }
274
- triggerOnEnd();
275
- };
276
- const cancelTask = () => {
277
- if (timerType === 'requestAnimationFrame') {
278
- stopAnimationFrame();
279
- }
280
- else {
281
- stopTimeout();
282
- }
283
- };
284
- /** 暂时停止 */
285
- const stopTask = () => {
286
- typedIsManualStopRef.current = true;
287
- cancelTask();
288
- };
289
- /** 停止打字任务 */
290
- const endTask = () => {
291
- cancelTask();
292
- };
293
- function restartTypedTask() {
294
- endTask();
295
- // 将wholeContentRef的内容放到charsRef中
296
- charsRef.current.unshift(...wholeContentRef.current.thinking.content.split('').map((charUnit) => {
297
- const char = {
298
- content: charUnit,
299
- answerType: 'thinking',
300
- tokenId: 0,
301
- index: 0,
302
- };
303
- return char;
304
- }));
305
- charsRef.current.unshift(...wholeContentRef.current.answer.content.split('').map((charUnit) => {
306
- const char = {
307
- content: charUnit,
308
- answerType: 'answer',
309
- tokenId: 0,
310
- index: 0,
311
- };
312
- return char;
313
- }));
314
- resetWholeContent();
315
- triggerUpdate();
316
- startTypedTask();
317
- }
318
- function clear() {
319
- clearTimer();
320
- }
321
- function resume() {
322
- typedIsManualStopRef.current = false;
323
- startTypedTask();
324
- }
325
- return {
326
- start: startTypedTask,
327
- restart: restartTypedTask,
328
- stop: stopTask,
329
- resume: resume,
330
- clear: clear,
331
- isTyping: () => isTypingRef.current,
332
- typedIsManualStopRef,
333
- };
334
- };
335
- //# 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,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 {};
@@ -1,191 +0,0 @@
1
- /** 此文件借鉴 marked 的部分代码 */
2
- import { rules } from './rule.js';
3
- let id = 0;
4
- export const getTokenId = () => {
5
- return id++;
6
- };
7
- export class Tokenizer {
8
- /** 空行 */
9
- space(src) {
10
- const cap = rules.block.newline.exec(src);
11
- if (cap) {
12
- return {
13
- type: 'space',
14
- raw: cap[0],
15
- id: getTokenId(),
16
- };
17
- }
18
- }
19
- /** 围栏 fence */
20
- fence(src) {
21
- const cap = rules.block.fences.exec(src);
22
- if (cap) {
23
- return {
24
- type: 'fence',
25
- raw: cap[0],
26
- id: getTokenId(),
27
- };
28
- }
29
- }
30
- /** 块 */
31
- segment(src) {
32
- const cap = rules.block.segment.exec(src);
33
- if (cap) {
34
- return {
35
- type: 'segment',
36
- raw: cap[0],
37
- id: getTokenId(),
38
- };
39
- }
40
- }
41
- /** 列表 */
42
- list(src) {
43
- let cap = rules.block.list.exec(src);
44
- if (cap) {
45
- let bull = cap[1].trim();
46
- const isordered = bull.length > 1;
47
- const list = {
48
- type: 'list',
49
- raw: '',
50
- items: [],
51
- loose: false,
52
- id: getTokenId(),
53
- };
54
- bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`;
55
- // Get next list item
56
- const itemRegex = rules.other.listItemRegex(bull);
57
- while (src) {
58
- let endEarly = false;
59
- let raw = '';
60
- let itemContents = '';
61
- if (!(cap = itemRegex.exec(src))) {
62
- break;
63
- }
64
- if (rules.block.hr.test(src)) {
65
- // End list if bullet was actually HR (possibly move into itemRegex?)
66
- break;
67
- }
68
- raw = cap[0];
69
- src = src.substring(raw.length);
70
- /** 获取列表项 */
71
- let line = cap[2].split('\n', 1)[0].replace(rules.other.listReplaceTabs, (t) => ' '.repeat(3 * t.length));
72
- let nextLine = src.split('\n', 1)[0];
73
- let blankLine = !line.trim();
74
- let indent = 0;
75
- if (blankLine) {
76
- indent = cap[1].length + 1;
77
- }
78
- else {
79
- indent = cap[2].search(rules.other.nonSpaceChar); // Find first non-space char
80
- indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
81
- itemContents = line.slice(indent);
82
- indent += cap[1].length;
83
- }
84
- if (blankLine && src === '') {
85
- endEarly = true;
86
- }
87
- else if (blankLine && rules.other.blankLine.test(nextLine)) {
88
- // Items begin with at most one blank line
89
- raw += nextLine + '\n';
90
- src = src.substring(nextLine.length + 1);
91
- endEarly = true;
92
- }
93
- if (!endEarly) {
94
- const nextBulletRegex = rules.other.nextBulletRegex(indent);
95
- const hrRegex = rules.other.hrRegex(indent);
96
- const fencesBeginRegex = rules.other.fencesBeginRegex(indent);
97
- const headingBeginRegex = rules.other.headingBeginRegex(indent);
98
- const htmlBeginRegex = rules.other.htmlBeginRegex(indent);
99
- // Check if following lines should be included in List Item
100
- while (src) {
101
- const rawLine = src.split('\n', 1)[0];
102
- const nextLineWithoutTabs = nextLine.replace(rules.other.tabCharGlobal, ' ');
103
- nextLine = rawLine;
104
- // End list item if found code fences
105
- if (fencesBeginRegex.test(nextLine)) {
106
- break;
107
- }
108
- // End list item if found start of new heading
109
- if (headingBeginRegex.test(nextLine)) {
110
- break;
111
- }
112
- // End list item if found start of html block
113
- if (htmlBeginRegex.test(nextLine)) {
114
- break;
115
- }
116
- // End list item if found start of new bullet
117
- if (nextBulletRegex.test(nextLine)) {
118
- break;
119
- }
120
- // Horizontal rule found
121
- if (hrRegex.test(nextLine)) {
122
- break;
123
- }
124
- if (nextLineWithoutTabs.search(rules.other.nonSpaceChar) >= indent || !nextLine.trim()) {
125
- // Dedent if possible
126
- itemContents += '\n' + nextLineWithoutTabs.slice(indent);
127
- }
128
- else {
129
- // not enough indentation
130
- if (blankLine) {
131
- break;
132
- }
133
- // paragraph continuation unless last line was a different block level element
134
- if (line.replace(rules.other.tabCharGlobal, ' ').search(rules.other.nonSpaceChar) >= 4) {
135
- // indented code block
136
- break;
137
- }
138
- if (fencesBeginRegex.test(line)) {
139
- break;
140
- }
141
- if (headingBeginRegex.test(line)) {
142
- break;
143
- }
144
- if (hrRegex.test(line)) {
145
- break;
146
- }
147
- itemContents += '\n' + nextLine;
148
- }
149
- if (!blankLine && !nextLine.trim()) {
150
- // Check if current line is blank
151
- blankLine = true;
152
- }
153
- raw += rawLine + '\n';
154
- src = src.substring(rawLine.length + 1);
155
- line = nextLineWithoutTabs.slice(indent);
156
- }
157
- }
158
- let ischecked;
159
- const istask = rules.other.listIsTask.exec(itemContents);
160
- if (istask) {
161
- ischecked = istask[0] !== '[ ] ';
162
- itemContents = itemContents.replace(rules.other.listReplaceTask, '');
163
- }
164
- list.items.push({
165
- type: 'list_item',
166
- raw,
167
- task: !!istask,
168
- checked: ischecked,
169
- loose: false,
170
- text: itemContents,
171
- tokens: [],
172
- id: getTokenId(),
173
- });
174
- list.raw += raw;
175
- }
176
- // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
177
- const lastItem = list.items.at(-1);
178
- if (lastItem) {
179
- lastItem.raw = lastItem.raw.trimEnd();
180
- lastItem.text = lastItem.text.trimEnd();
181
- }
182
- else {
183
- // not a list since there were no items
184
- return;
185
- }
186
- list.raw = list.raw.trimEnd();
187
- return list;
188
- }
189
- }
190
- }
191
- //# sourceMappingURL=Tokenizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tokenizer.js","sourceRoot":"","sources":["../../../src/utils/Tokenizer.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAEzB,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,IAAI,EAAE,GAAG,CAAC,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,OAAO,EAAE,EAAE,CAAC;AACd,CAAC,CAAC;AAyCF,MAAM,OAAO,SAAS;IACpB,SAAS;IACT,KAAK,CAAC,GAAW;QACf,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACX,EAAE,EAAE,UAAU,EAAE;aACjB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,eAAe;IACf,KAAK,CAAC,GAAW;QACf,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,GAAG,EAAE,CAAC;YACR,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACX,EAAE,EAAE,UAAU,EAAE;aACjB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,QAAQ;IACR,OAAO,CAAC,GAAW;QACjB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACX,EAAE,EAAE,UAAU,EAAE;aACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,SAAS;IACT,IAAI,CAAC,GAAW;QACd,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAElC,MAAM,IAAI,GAAS;gBACjB,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,KAAK;gBACZ,EAAE,EAAE,UAAU,EAAE;aACjB,CAAC;YAEF,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAE/D,qBAAqB;YACrB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAElD,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,IAAI,GAAG,GAAG,EAAE,CAAC;gBACb,IAAI,YAAY,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACjC,MAAM;gBACR,CAAC;gBAED,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,qEAAqE;oBACrE,MAAM;gBACR,CAAC;gBAED,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACb,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEhC,YAAY;gBACZ,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAElH,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAE7B,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B;oBAC9E,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,kEAAkE;oBACpG,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC1B,CAAC;gBACD,IAAI,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;oBAC5B,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;qBAAM,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7D,0CAA0C;oBAC1C,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC;oBACvB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACzC,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;gBAED,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC5C,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC9D,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBAChE,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAE1D,2DAA2D;oBAC3D,OAAO,GAAG,EAAE,CAAC;wBACX,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;wBAChF,QAAQ,GAAG,OAAO,CAAC;wBAEnB,qCAAqC;wBACrC,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACpC,MAAM;wBACR,CAAC;wBAED,8CAA8C;wBAC9C,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACrC,MAAM;wBACR,CAAC;wBAED,6CAA6C;wBAC7C,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAClC,MAAM;wBACR,CAAC;wBAED,6CAA6C;wBAC7C,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACnC,MAAM;wBACR,CAAC;wBAED,wBAAwB;wBACxB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC3B,MAAM;wBACR,CAAC;wBAED,IAAI,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;4BACvF,qBAAqB;4BACrB,YAAY,IAAI,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBAC3D,CAAC;6BAAM,CAAC;4BACN,yBAAyB;4BACzB,IAAI,SAAS,EAAE,CAAC;gCACd,MAAM;4BACR,CAAC;4BACD,8EAA8E;4BAC9E,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gCAC1F,sBAAsB;gCACtB,MAAM;4BACR,CAAC;4BACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gCAChC,MAAM;4BACR,CAAC;4BACD,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gCACjC,MAAM;4BACR,CAAC;4BACD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gCACvB,MAAM;4BACR,CAAC;4BAED,YAAY,IAAI,IAAI,GAAG,QAAQ,CAAC;wBAClC,CAAC;wBAED,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;4BACnC,iCAAiC;4BACjC,SAAS,GAAG,IAAI,CAAC;wBACnB,CAAC;wBAED,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC;wBACtB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACxC,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAED,IAAI,SAA8B,CAAC;gBAEnC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACzD,IAAI,MAAM,EAAE,CAAC;oBACX,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;oBACjC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBACvE,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,WAAW;oBACjB,GAAG;oBACH,IAAI,EAAE,CAAC,CAAC,MAAM;oBACd,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,EAAE;oBACV,EAAE,EAAE,UAAU,EAAE;iBACjB,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;YAClB,CAAC;YAED,qJAAqJ;YACrJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnC,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,uCAAuC;gBACvC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAE9B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +0,0 @@
1
- import { Token } from './Tokenizer.js';
2
- declare function createCompiler(src: string): Token[];
3
- export declare const compiler: typeof createCompiler;
4
- export {};
@@ -1,62 +0,0 @@
1
- import { getTokenId, Tokenizer } from './Tokenizer.js';
2
- function compile(src) {
3
- const tokenizer = new Tokenizer();
4
- const tokens = [];
5
- let prevScr = src;
6
- while (src) {
7
- if (src.length === 0) {
8
- break;
9
- }
10
- // TODO: 临时方案
11
- if (src.trim().length === 0 && tokens.length > 0) {
12
- const lastToken = tokens[tokens.length - 1];
13
- // 如果只剩下空格或换行符,则加到上一个token中
14
- if (lastToken.type === 'list') {
15
- lastToken.raw = lastToken.raw + src;
16
- break;
17
- }
18
- }
19
- const space = tokenizer.space(src);
20
- if (space) {
21
- tokens.push(space);
22
- src = src.slice(space.raw.length);
23
- continue;
24
- }
25
- const list = tokenizer.list(src);
26
- if (list) {
27
- tokens.push(list);
28
- src = src.slice(list.raw.length);
29
- continue;
30
- }
31
- const fence = tokenizer.fence(src);
32
- if (fence) {
33
- tokens.push(fence);
34
- src = src.slice(fence.raw.length);
35
- continue;
36
- }
37
- const segment = tokenizer.segment(src);
38
- if (segment) {
39
- tokens.push(segment);
40
- src = src.slice(segment.raw.length);
41
- continue;
42
- }
43
- if (prevScr === src && src) {
44
- // 如果src没有变化,则认为是一个段落
45
- // todo: 后面会做优化,进行细分
46
- tokens.push({
47
- type: 'segment',
48
- raw: src,
49
- id: getTokenId(),
50
- });
51
- src = '';
52
- }
53
- prevScr = src;
54
- }
55
- return tokens;
56
- }
57
- function createCompiler(src) {
58
- const tokens = compile(src);
59
- return tokens;
60
- }
61
- export const compiler = createCompiler;
62
- //# sourceMappingURL=compiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/utils/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAS,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE9D,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAElC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM;QACR,CAAC;QAED,aAAa;QACb,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,2BAA2B;YAC3B,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;gBACpC,MAAM;YACR,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;YAC3B,qBAAqB;YACrB,oBAAoB;YACpB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,GAAG;gBACR,EAAE,EAAE,UAAU,EAAE;aACjB,CAAC,CAAC;YACH,GAAG,GAAG,EAAE,CAAC;QACX,CAAC;QACD,OAAO,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC"}