ds-markdown 1.0.3 → 1.0.5-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.
Files changed (76) hide show
  1. package/README.md +7 -5
  2. package/README.zh.md +5 -3
  3. package/es/AutoScroll/index.d.ts.map +1 -1
  4. package/es/AutoScroll/index.js +2 -3
  5. package/es/AutoScroll/index.js.map +1 -1
  6. package/es/Markdown/index.js +2 -2
  7. package/es/Markdown/index.js.map +1 -1
  8. package/es/MarkdownCMD/index.d.ts +1 -0
  9. package/es/MarkdownCMD/index.d.ts.map +1 -1
  10. package/es/MarkdownCMD/index.js +32 -8
  11. package/es/MarkdownCMD/index.js.map +1 -1
  12. package/es/components/CodeComponent/BlockWrap/index.js +1 -1
  13. package/es/components/CodeComponent/BlockWrap/index.js.map +1 -1
  14. package/es/components/CodeComponent/CodeBlockActions/index.d.ts +2 -2
  15. package/es/components/CodeComponent/CodeBlockActions/index.d.ts.map +1 -1
  16. package/es/components/CodeComponent/CodeBlockActions/index.js +5 -2
  17. package/es/components/CodeComponent/CodeBlockActions/index.js.map +1 -1
  18. package/es/components/CodeComponent/HighlightCode/index.d.ts +3 -2
  19. package/es/components/CodeComponent/HighlightCode/index.d.ts.map +1 -1
  20. package/es/components/CodeComponent/HighlightCode/index.js +8 -4
  21. package/es/components/CodeComponent/HighlightCode/index.js.map +1 -1
  22. package/es/components/CodeComponent/index.d.ts +3 -3
  23. package/es/components/CodeComponent/index.d.ts.map +1 -1
  24. package/es/components/CodeComponent/index.js +64 -5
  25. package/es/components/CodeComponent/index.js.map +1 -1
  26. package/es/components/CopyButton/index.d.ts +2 -2
  27. package/es/components/CopyButton/index.d.ts.map +1 -1
  28. package/es/components/CopyButton/index.js +7 -4
  29. package/es/components/CopyButton/index.js.map +1 -1
  30. package/es/components/DownloadButton/index.d.ts +2 -2
  31. package/es/components/DownloadButton/index.d.ts.map +1 -1
  32. package/es/components/DownloadButton/index.js +61 -50
  33. package/es/components/DownloadButton/index.js.map +1 -1
  34. package/es/components/Icon/index.js +3 -3
  35. package/es/components/Icon/index.js.map +1 -1
  36. package/es/components/ui/SuccessButton/index.d.ts.map +1 -1
  37. package/es/components/ui/SuccessButton/index.js +16 -13
  38. package/es/components/ui/SuccessButton/index.js.map +1 -1
  39. package/es/constant.d.ts +2 -2
  40. package/es/constant.d.ts.map +1 -1
  41. package/es/constant.js +2 -2
  42. package/es/constant.js.map +1 -1
  43. package/es/context/ConfigProvider/index.js +2 -2
  44. package/es/context/ConfigProvider/index.js.map +1 -1
  45. package/es/context/MarkdownProvider.d.ts.map +1 -1
  46. package/es/context/MarkdownProvider.js +3 -3
  47. package/es/context/MarkdownProvider.js.map +1 -1
  48. package/es/context/MarkdownThemeProvider.js +1 -1
  49. package/es/context/MarkdownThemeProvider.js.map +1 -1
  50. package/es/defined/index.d.ts +18 -17
  51. package/es/defined/index.d.ts.map +1 -1
  52. package/es/i18n/en/index.js +1 -1
  53. package/es/i18n/en/index.js.map +1 -1
  54. package/es/i18n/index.js +3 -3
  55. package/es/i18n/index.js.map +1 -1
  56. package/es/i18n/zh/index.js +1 -1
  57. package/es/i18n/zh/index.js.map +1 -1
  58. package/es/index.css +44 -0
  59. package/es/index.js +1 -1
  60. package/es/index.js.map +1 -1
  61. package/es/utils/remarkMathBracket.d.ts +10 -10
  62. package/es/utils/remarkMathBracket.js +14 -14
  63. package/es/utils/remarkMathBracket.js.map +1 -1
  64. package/package.json +4 -4
  65. package/es/utils/Tokenizer.d.ts +0 -48
  66. package/es/utils/Tokenizer.d.ts.map +0 -1
  67. package/es/utils/Tokenizer.js +0 -191
  68. package/es/utils/Tokenizer.js.map +0 -1
  69. package/es/utils/compiler.d.ts +0 -5
  70. package/es/utils/compiler.d.ts.map +0 -1
  71. package/es/utils/compiler.js +0 -62
  72. package/es/utils/compiler.js.map +0 -1
  73. package/es/utils/rule.d.ts +0 -26
  74. package/es/utils/rule.d.ts.map +0 -1
  75. package/es/utils/rule.js +0 -69
  76. package/es/utils/rule.js.map +0 -1
@@ -1,20 +1,20 @@
1
1
  import { Plugin } from 'unified';
2
2
  /**
3
- * remark 插件:将 \[...\] 转换为 $$...$$,\(...\) 转换为 $...$,以便 remark-math 能识别。
3
+ * remark plugin: Convert \[...\] to $$...$$, \(...\) to $...$, so that remark-math can recognize them.
4
4
  */
5
5
  declare const remarkMathBracket: Plugin;
6
6
  /**
7
- * 将括号格式的数学公式转换为美元符号格式
8
- * 支持以下转换:
9
- * - \(...\) → $...$ (行内公式)
10
- * - \[...\] → $$...$$ (块级公式)
7
+ * Convert bracket-formatted math formulas to dollar sign format
8
+ * Supports the following conversions:
9
+ * - \(...\) → $...$ (inline formula)
10
+ * - \[...\] → $$...$$ (block formula)
11
11
  *
12
- * 特殊处理:
13
- * - 如果文本包含 Markdown 超链接,则跳过转换以避免误处理
14
- * - 使用占位符机制保护块级公式内的括号不被误转换
12
+ * Special handling:
13
+ * - If text contains Markdown links, skip conversion to avoid misprocessing
14
+ * - Use placeholder mechanism to protect brackets inside block formulas from being mis-converted
15
15
  *
16
- * @param value 要转换的字符串
17
- * @returns 转换后的字符串
16
+ * @param value String to convert
17
+ * @returns Converted string
18
18
  */
19
19
  export declare const replaceMathBracket: (value: string) => string;
20
20
  export default remarkMathBracket;
@@ -1,6 +1,6 @@
1
1
  import { visit } from 'unist-util-visit';
2
2
  /**
3
- * remark 插件:将 \[...\] 转换为 $$...$$,\(...\) 转换为 $...$,以便 remark-math 能识别。
3
+ * remark plugin: Convert \[...\] to $$...$$, \(...\) to $...$, so that remark-math can recognize them.
4
4
  */
5
5
  const remarkMathBracket = () => (tree, file) => {
6
6
  visit(tree, 'text', (node) => {
@@ -11,35 +11,35 @@ const remarkMathBracket = () => (tree, file) => {
11
11
  });
12
12
  };
13
13
  /**
14
- * 将括号格式的数学公式转换为美元符号格式
15
- * 支持以下转换:
16
- * - \(...\) → $...$ (行内公式)
17
- * - \[...\] → $$...$$ (块级公式)
14
+ * Convert bracket-formatted math formulas to dollar sign format
15
+ * Supports the following conversions:
16
+ * - \(...\) → $...$ (inline formula)
17
+ * - \[...\] → $$...$$ (block formula)
18
18
  *
19
- * 特殊处理:
20
- * - 如果文本包含 Markdown 超链接,则跳过转换以避免误处理
21
- * - 使用占位符机制保护块级公式内的括号不被误转换
19
+ * Special handling:
20
+ * - If text contains Markdown links, skip conversion to avoid misprocessing
21
+ * - Use placeholder mechanism to protect brackets inside block formulas from being mis-converted
22
22
  *
23
- * @param value 要转换的字符串
24
- * @returns 转换后的字符串
23
+ * @param value String to convert
24
+ * @returns Converted string
25
25
  */
26
26
  export const replaceMathBracket = (value) => {
27
- // 1. 提取所有块级公式内容,临时替换为占位符, [...]
27
+ // 1. Extract all block formula content, temporarily replace with placeholder, [...]
28
28
  const blockMatches = [];
29
29
  let replaced = value.replace(/\\+\[([\s\S]+?)\\+\]/g, (_m, p1) => {
30
30
  blockMatches.push(p1);
31
31
  return `__BLOCK_MATH_${blockMatches.length - 1}__`;
32
32
  });
33
- // 也需要兼容 $$ xxxx $$ 这种写法
33
+ // Also need to support $$ xxxx $$ format
34
34
  replaced = replaced.replace(/\$\$([\s\S]+?)\$\$/g, (_m, p1) => {
35
35
  blockMatches.push(p1);
36
36
  return `__BLOCK_MATH_${blockMatches.length - 1}__`;
37
37
  });
38
- // 2. 替换块级公式外部的 ( ... ) $...$
38
+ // 2. Replace ( ... ) outside block formulas with $...$
39
39
  replaced = replaced.replace(/\\+\(([^)]+?)\\+\)/g, (_m, p1) => {
40
40
  return '$' + p1 + '$';
41
41
  });
42
- // 3. 还原块级公式内容,保持其内部小括号原样
42
+ // 3. Restore block formula content, keep internal parentheses unchanged
43
43
  replaced = replaced.replace(/__BLOCK_MATH_(\d+)__/g, (_m, idx) => {
44
44
  return '$$' + blockMatches[Number(idx)] + '$$';
45
45
  });
@@ -1 +1 @@
1
- {"version":3,"file":"remarkMathBracket.js","sourceRoot":"","sources":["../../src/utils/remarkMathBracket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC;;GAEG;AACH,MAAM,iBAAiB,GAAW,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACrD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAuB,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE;IAClD,gCAAgC;IAChC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC/D,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,OAAO,gBAAgB,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5D,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,OAAO,gBAAgB,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5D,OAAO,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/D,OAAO,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"remarkMathBracket.js","sourceRoot":"","sources":["../../src/utils/remarkMathBracket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC;;GAEG;AACH,MAAM,iBAAiB,GAAW,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACrD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAuB,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE;IAClD,oFAAoF;IACpF,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC/D,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,OAAO,gBAAgB,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,yCAAyC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5D,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,OAAO,gBAAgB,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,uDAAuD;IACvD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5D,OAAO,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/D,OAAO,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ds-markdown",
3
3
  "private": false,
4
- "version": "1.0.3",
4
+ "version": "1.0.5-beta.0",
5
5
  "main": "./dist/esm/index.js",
6
6
  "module": "./dist/esm/index.js",
7
7
  "style": "./dist/style.css",
@@ -71,14 +71,13 @@
71
71
  "preview": "vite preview",
72
72
  "release": "npm run build && node scripts/set-tag.cjs && cross-env RELEASE_MODE=true npm publish",
73
73
  "prepublishOnly": "node scripts/prepublish.js",
74
- "pretest": "rimraf dist && npm run build:esm",
75
74
  "test": "jest"
76
75
  },
77
76
  "dependencies": {
78
77
  "classnames": "^2.5.1",
79
78
  "katex": "^0.16.22",
80
79
  "react-markdown": "^10.1.0",
81
- "react-markdown-typer": "^1.0.3",
80
+ "react-markdown-typer": "^1.0.4-beta.0",
82
81
  "react-router-dom": "^7.7.1",
83
82
  "react-syntax-highlighter": "^15.6.1",
84
83
  "rehype-katex": "^7.0.1",
@@ -102,6 +101,7 @@
102
101
  "@rollup/plugin-terser": "^0.4.4",
103
102
  "@rollup/plugin-typescript": "^12.1.1",
104
103
  "@testing-library/jest-dom": "^6.6.3",
104
+ "@testing-library/react": "^16.3.1",
105
105
  "@types/jest": "^29.5.14",
106
106
  "@types/react": "^18.3.23",
107
107
  "@types/react-dom": "^18.3.7",
@@ -156,6 +156,6 @@
156
156
  "react-markdown"
157
157
  ],
158
158
  "publishConfig": {
159
- "tag": "latest"
159
+ "tag": "beta"
160
160
  }
161
161
  }
@@ -1,48 +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 {};
48
- //# sourceMappingURL=Tokenizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/utils/Tokenizer.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAMzB,eAAO,MAAM,UAAU,cAEtB,CAAC;AAEF,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,OAAO;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,IAAI;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;AAE9D,qBAAa,SAAS;IACpB,SAAS;IACT,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAUrC,eAAe;IACf,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAUrC,QAAQ;IACR,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAWzC,SAAS;IACT,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;CA6KpC"}
@@ -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":"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"}
@@ -1,5 +0,0 @@
1
- import { Token } from './Tokenizer.js';
2
- declare function createCompiler(src: string): Token[];
3
- export declare const compiler: typeof createCompiler;
4
- export {};
5
- //# sourceMappingURL=compiler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/utils/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAa,MAAM,aAAa,CAAC;AA8D3D,iBAAS,cAAc,CAAC,GAAG,EAAE,MAAM,WAGlC;AAED,eAAO,MAAM,QAAQ,uBAAiB,CAAC"}
@@ -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,aAAa,CAAC;AAE3D,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"}
@@ -1,26 +0,0 @@
1
- /** 此文件借鉴 marked 的部分代码 */
2
- export declare const rules: {
3
- block: {
4
- newline: RegExp;
5
- fences: RegExp;
6
- segment: RegExp;
7
- list: RegExp;
8
- hr: RegExp;
9
- };
10
- other: {
11
- caret: RegExp;
12
- listItemRegex: (bull: string) => RegExp;
13
- nextBulletRegex: (indent: number) => RegExp;
14
- listReplaceTabs: RegExp;
15
- nonSpaceChar: RegExp;
16
- blankLine: RegExp;
17
- listIsTask: RegExp;
18
- listReplaceTask: RegExp;
19
- tabCharGlobal: RegExp;
20
- hrRegex: (indent: number) => RegExp;
21
- headingBeginRegex: (indent: number) => RegExp;
22
- htmlBeginRegex: (indent: number) => RegExp;
23
- fencesBeginRegex: (indent: number) => RegExp;
24
- };
25
- };
26
- //# sourceMappingURL=rule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../src/utils/rule.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAuEzB,eAAO,MAAM,KAAK;;;;;;;;;;8BAnEM,MAAM;kCACF,MAAM;;;;;;;0BAOd,MAAM;oCACI,MAAM;iCACT,MAAM;mCACJ,MAAM;;CA2DlC,CAAC"}
package/es/utils/rule.js DELETED
@@ -1,69 +0,0 @@
1
- /** 此文件借鉴 marked 的部分代码 */
2
- const other = {
3
- caret: /(^|[^[])\^/g,
4
- listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`),
5
- nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),
6
- listReplaceTabs: /^\t+/,
7
- nonSpaceChar: /[^ ]/,
8
- blankLine: /^[ \t]*$/,
9
- listIsTask: /^\[[ xX]\] /,
10
- listReplaceTask: /^\[[ xX]\] +/,
11
- tabCharGlobal: /\t/g,
12
- hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),
13
- headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),
14
- htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),
15
- fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`),
16
- };
17
- /**
18
- * 编辑正则表达式
19
- * @param regex 正则表达式
20
- * @param opt 正则表达式选项
21
- * @returns 编辑后的正则表达式
22
- */
23
- function edit(regex, opt = '') {
24
- let source = typeof regex === 'string' ? regex : regex.source;
25
- const obj = {
26
- replace: (name, val) => {
27
- let valSource = typeof val === 'string' ? val : val.source;
28
- valSource = valSource.replace(other.caret, '$1');
29
- source = source.replace(name, valSource);
30
- return obj;
31
- },
32
- getRegex: () => {
33
- return new RegExp(source, opt);
34
- },
35
- };
36
- return obj;
37
- }
38
- const newline = /^(?:[ \t]*(?:\n|$))+/;
39
- const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/;
40
- /** 列表 */
41
- const bullet = /(?:[*+-]|\d{1,9}[.)])/;
42
- /** 列表 */
43
- const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/)
44
- .replace(/bull/g, bullet)
45
- .getRegex();
46
- /** 围栏 fence
47
- * 什么是围栏: 围栏是用来包裹代码块的,比如 ```javascript 和 ``` 之间就是围栏
48
- */
49
- const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/;
50
- // 一个块
51
- // const _segment = /^([^\n]+(?:\n(?!fences|list|hr| +\n)[^\n]+)*)/;
52
- const _segment = /^([^\n]+(?:\n(?!fences|list|hr| +\n|\n)[^\n]+)*\n?)/;
53
- const segment = edit(_segment)
54
- .replace(/fences/, fences)
55
- .replace(/list/, list)
56
- .replace(/hr/, hr)
57
- .getRegex();
58
- const blockNormal = {
59
- newline,
60
- fences,
61
- segment,
62
- list,
63
- hr,
64
- };
65
- export const rules = {
66
- block: blockNormal,
67
- other,
68
- };
69
- //# sourceMappingURL=rule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/utils/rule.ts"],"names":[],"mappings":"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"}