ds-markdown 0.1.3-beta.1 → 0.1.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +14 -14
  2. package/dist/cjs/index.d.ts +98 -6
  3. package/dist/cjs/index.js +2 -12
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/plugins/index.d.ts +8 -1
  6. package/dist/cjs/plugins/index.js +2 -24
  7. package/dist/cjs/plugins/index.js.map +1 -1
  8. package/dist/esm/index.d.ts +98 -6
  9. package/dist/esm/index.js +2 -5
  10. package/dist/esm/index.js.map +1 -1
  11. package/dist/esm/plugins/index.d.ts +8 -1
  12. package/dist/esm/plugins/index.js +2 -17
  13. package/dist/esm/plugins/index.js.map +1 -1
  14. package/package.json +15 -5
  15. package/dist/cjs/AutoScroll/index.d.ts +0 -6
  16. package/dist/cjs/AutoScroll/index.js +0 -9
  17. package/dist/cjs/AutoScroll/index.js.map +0 -1
  18. package/dist/cjs/Markdown/index.d.ts +0 -4
  19. package/dist/cjs/Markdown/index.js +0 -70
  20. package/dist/cjs/Markdown/index.js.map +0 -1
  21. package/dist/cjs/MarkdownCMD/index.d.ts +0 -3
  22. package/dist/cjs/MarkdownCMD/index.js +0 -197
  23. package/dist/cjs/MarkdownCMD/index.js.map +0 -1
  24. package/dist/cjs/components/BlockWrap/index.d.ts +0 -9
  25. package/dist/cjs/components/BlockWrap/index.js +0 -8
  26. package/dist/cjs/components/BlockWrap/index.js.map +0 -1
  27. package/dist/cjs/components/HighReactMarkdown/index.d.ts +0 -11
  28. package/dist/cjs/components/HighReactMarkdown/index.js +0 -58
  29. package/dist/cjs/components/HighReactMarkdown/index.js.map +0 -1
  30. package/dist/cjs/constant.d.ts +0 -3
  31. package/dist/cjs/constant.js +0 -7
  32. package/dist/cjs/constant.js.map +0 -1
  33. package/dist/cjs/defined.d.ts +0 -132
  34. package/dist/cjs/defined.js +0 -3
  35. package/dist/cjs/defined.js.map +0 -1
  36. package/dist/cjs/hooks/useTypingTask.d.ts +0 -32
  37. package/dist/cjs/hooks/useTypingTask.js +0 -338
  38. package/dist/cjs/hooks/useTypingTask.js.map +0 -1
  39. package/dist/cjs/package.json +0 -1
  40. package/dist/cjs/utils/Tokenizer.d.ts +0 -47
  41. package/dist/cjs/utils/Tokenizer.js +0 -196
  42. package/dist/cjs/utils/Tokenizer.js.map +0 -1
  43. package/dist/cjs/utils/compiler.d.ts +0 -4
  44. package/dist/cjs/utils/compiler.js +0 -65
  45. package/dist/cjs/utils/compiler.js.map +0 -1
  46. package/dist/cjs/utils/methods/deepClone.d.ts +0 -1
  47. package/dist/cjs/utils/methods/deepClone.js +0 -7
  48. package/dist/cjs/utils/methods/deepClone.js.map +0 -1
  49. package/dist/cjs/utils/remarkMathBracket.d.ts +0 -7
  50. package/dist/cjs/utils/remarkMathBracket.js +0 -40
  51. package/dist/cjs/utils/remarkMathBracket.js.map +0 -1
  52. package/dist/cjs/utils/rule.d.ts +0 -25
  53. package/dist/cjs/utils/rule.js +0 -72
  54. package/dist/cjs/utils/rule.js.map +0 -1
  55. package/dist/esm/AutoScroll/index.d.ts +0 -6
  56. package/dist/esm/AutoScroll/index.js +0 -7
  57. package/dist/esm/AutoScroll/index.js.map +0 -1
  58. package/dist/esm/Markdown/index.d.ts +0 -4
  59. package/dist/esm/Markdown/index.js +0 -65
  60. package/dist/esm/Markdown/index.js.map +0 -1
  61. package/dist/esm/MarkdownCMD/index.d.ts +0 -3
  62. package/dist/esm/MarkdownCMD/index.js +0 -192
  63. package/dist/esm/MarkdownCMD/index.js.map +0 -1
  64. package/dist/esm/components/BlockWrap/index.d.ts +0 -9
  65. package/dist/esm/components/BlockWrap/index.js +0 -6
  66. package/dist/esm/components/BlockWrap/index.js.map +0 -1
  67. package/dist/esm/components/HighReactMarkdown/index.d.ts +0 -11
  68. package/dist/esm/components/HighReactMarkdown/index.js +0 -53
  69. package/dist/esm/components/HighReactMarkdown/index.js.map +0 -1
  70. package/dist/esm/constant.d.ts +0 -3
  71. package/dist/esm/constant.js +0 -4
  72. package/dist/esm/constant.js.map +0 -1
  73. package/dist/esm/defined.d.ts +0 -132
  74. package/dist/esm/defined.js +0 -2
  75. package/dist/esm/defined.js.map +0 -1
  76. package/dist/esm/hooks/useTypingTask.d.ts +0 -32
  77. package/dist/esm/hooks/useTypingTask.js +0 -334
  78. package/dist/esm/hooks/useTypingTask.js.map +0 -1
  79. package/dist/esm/utils/Tokenizer.d.ts +0 -47
  80. package/dist/esm/utils/Tokenizer.js +0 -191
  81. package/dist/esm/utils/Tokenizer.js.map +0 -1
  82. package/dist/esm/utils/compiler.d.ts +0 -4
  83. package/dist/esm/utils/compiler.js +0 -62
  84. package/dist/esm/utils/compiler.js.map +0 -1
  85. package/dist/esm/utils/methods/deepClone.d.ts +0 -1
  86. package/dist/esm/utils/methods/deepClone.js +0 -4
  87. package/dist/esm/utils/methods/deepClone.js.map +0 -1
  88. package/dist/esm/utils/remarkMathBracket.d.ts +0 -7
  89. package/dist/esm/utils/remarkMathBracket.js +0 -36
  90. package/dist/esm/utils/remarkMathBracket.js.map +0 -1
  91. package/dist/esm/utils/rule.d.ts +0 -25
  92. package/dist/esm/utils/rule.js +0 -69
  93. package/dist/esm/utils/rule.js.map +0 -1
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compiler = void 0;
4
- const Tokenizer_js_1 = require("./Tokenizer.js");
5
- function compile(src) {
6
- const tokenizer = new Tokenizer_js_1.Tokenizer();
7
- const tokens = [];
8
- let prevScr = src;
9
- while (src) {
10
- if (src.length === 0) {
11
- break;
12
- }
13
- // TODO: 临时方案
14
- if (src.trim().length === 0 && tokens.length > 0) {
15
- const lastToken = tokens[tokens.length - 1];
16
- // 如果只剩下空格或换行符,则加到上一个token中
17
- if (lastToken.type === 'list') {
18
- lastToken.raw = lastToken.raw + src;
19
- break;
20
- }
21
- }
22
- const space = tokenizer.space(src);
23
- if (space) {
24
- tokens.push(space);
25
- src = src.slice(space.raw.length);
26
- continue;
27
- }
28
- const list = tokenizer.list(src);
29
- if (list) {
30
- tokens.push(list);
31
- src = src.slice(list.raw.length);
32
- continue;
33
- }
34
- const fence = tokenizer.fence(src);
35
- if (fence) {
36
- tokens.push(fence);
37
- src = src.slice(fence.raw.length);
38
- continue;
39
- }
40
- const segment = tokenizer.segment(src);
41
- if (segment) {
42
- tokens.push(segment);
43
- src = src.slice(segment.raw.length);
44
- continue;
45
- }
46
- if (prevScr === src && src) {
47
- // 如果src没有变化,则认为是一个段落
48
- // todo: 后面会做优化,进行细分
49
- tokens.push({
50
- type: 'segment',
51
- raw: src,
52
- id: (0, Tokenizer_js_1.getTokenId)(),
53
- });
54
- src = '';
55
- }
56
- prevScr = src;
57
- }
58
- return tokens;
59
- }
60
- function createCompiler(src) {
61
- const tokens = compile(src);
62
- return tokens;
63
- }
64
- exports.compiler = createCompiler;
65
- //# sourceMappingURL=compiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/utils/compiler.ts"],"names":[],"mappings":";;;AAAA,iDAA8D;AAE9D,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,SAAS,GAAG,IAAI,wBAAS,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,IAAA,yBAAU,GAAE;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;AAEY,QAAA,QAAQ,GAAG,cAAc,CAAC"}
@@ -1 +0,0 @@
1
- export default function deepClone<T>(obj: T): T;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = deepClone;
4
- function deepClone(obj) {
5
- return JSON.parse(JSON.stringify(obj));
6
- }
7
- //# sourceMappingURL=deepClone.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deepClone.js","sourceRoot":"","sources":["../../../../src/utils/methods/deepClone.ts"],"names":[],"mappings":";;AAAA,4BAEC;AAFD,SAAwB,SAAS,CAAI,GAAM;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -1,7 +0,0 @@
1
- import { Plugin } from 'unified';
2
- /**
3
- * remark 插件:将 \[...\] 转换为 $$...$$,\(...\) 转换为 $...$,以便 remark-math 能识别。
4
- */
5
- declare const remarkMathBracket: Plugin;
6
- export declare const replaceMathBracket: (value: string) => string;
7
- export default remarkMathBracket;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.replaceMathBracket = void 0;
4
- const unist_util_visit_1 = require("unist-util-visit");
5
- /**
6
- * remark 插件:将 \[...\] 转换为 $$...$$,\(...\) 转换为 $...$,以便 remark-math 能识别。
7
- */
8
- const remarkMathBracket = () => (tree, file) => {
9
- (0, unist_util_visit_1.visit)(tree, 'text', (node) => {
10
- const value = node.value;
11
- if (typeof value === 'string') {
12
- node.value = (0, exports.replaceMathBracket)(value);
13
- }
14
- });
15
- };
16
- const replaceMathBracket = (value) => {
17
- // 1. 提取所有块级公式内容,临时替换为占位符, [...]
18
- const blockMatches = [];
19
- let replaced = value.replace(/\\*\[([\s\S]+?)\\*\]/g, (_m, p1) => {
20
- blockMatches.push(p1);
21
- return `__BLOCK_MATH_${blockMatches.length - 1}__`;
22
- });
23
- // 也需要兼容 $$ xxxx $$ 这种写法
24
- replaced = replaced.replace(/\$\$([\s\S]+?)\$\$/g, (_m, p1) => {
25
- blockMatches.push(p1);
26
- return `__BLOCK_MATH_${blockMatches.length - 1}__`;
27
- });
28
- // 2. 替换块级公式外部的 ( ... ) 为 $...$
29
- replaced = replaced.replace(/\\*\(([^)]+?)\\*\)/g, (_m, p1) => {
30
- return '$' + p1 + '$';
31
- });
32
- // 3. 还原块级公式内容,保持其内部小括号原样
33
- replaced = replaced.replace(/__BLOCK_MATH_(\d+)__/g, (_m, idx) => {
34
- return '$$' + blockMatches[Number(idx)] + '$$';
35
- });
36
- return replaced;
37
- };
38
- exports.replaceMathBracket = replaceMathBracket;
39
- exports.default = remarkMathBracket;
40
- //# sourceMappingURL=remarkMathBracket.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remarkMathBracket.js","sourceRoot":"","sources":["../../../src/utils/remarkMathBracket.ts"],"names":[],"mappings":";;;AACA,uDAAyC;AAEzC;;GAEG;AACH,MAAM,iBAAiB,GAAW,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACrD,IAAA,wBAAK,EAAC,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,IAAA,0BAAkB,EAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEK,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;AAzBW,QAAA,kBAAkB,sBAyB7B;AAEF,kBAAe,iBAAiB,CAAC"}
@@ -1,25 +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
- };
@@ -1,72 +0,0 @@
1
- "use strict";
2
- /** 此文件借鉴 marked 的部分代码 */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.rules = void 0;
5
- const other = {
6
- caret: /(^|[^[])\^/g,
7
- listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`),
8
- nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),
9
- listReplaceTabs: /^\t+/,
10
- nonSpaceChar: /[^ ]/,
11
- blankLine: /^[ \t]*$/,
12
- listIsTask: /^\[[ xX]\] /,
13
- listReplaceTask: /^\[[ xX]\] +/,
14
- tabCharGlobal: /\t/g,
15
- hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),
16
- headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),
17
- htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),
18
- fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`),
19
- };
20
- /**
21
- * 编辑正则表达式
22
- * @param regex 正则表达式
23
- * @param opt 正则表达式选项
24
- * @returns 编辑后的正则表达式
25
- */
26
- function edit(regex, opt = '') {
27
- let source = typeof regex === 'string' ? regex : regex.source;
28
- const obj = {
29
- replace: (name, val) => {
30
- let valSource = typeof val === 'string' ? val : val.source;
31
- valSource = valSource.replace(other.caret, '$1');
32
- source = source.replace(name, valSource);
33
- return obj;
34
- },
35
- getRegex: () => {
36
- return new RegExp(source, opt);
37
- },
38
- };
39
- return obj;
40
- }
41
- const newline = /^(?:[ \t]*(?:\n|$))+/;
42
- const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/;
43
- /** 列表 */
44
- const bullet = /(?:[*+-]|\d{1,9}[.)])/;
45
- /** 列表 */
46
- const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/)
47
- .replace(/bull/g, bullet)
48
- .getRegex();
49
- /** 围栏 fence
50
- * 什么是围栏: 围栏是用来包裹代码块的,比如 ```javascript 和 ``` 之间就是围栏
51
- */
52
- const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/;
53
- // 一个块
54
- // const _segment = /^([^\n]+(?:\n(?!fences|list|hr| +\n)[^\n]+)*)/;
55
- const _segment = /^([^\n]+(?:\n(?!fences|list|hr| +\n|\n)[^\n]+)*\n?)/;
56
- const segment = edit(_segment)
57
- .replace(/fences/, fences)
58
- .replace(/list/, list)
59
- .replace(/hr/, hr)
60
- .getRegex();
61
- const blockNormal = {
62
- newline,
63
- fences,
64
- segment,
65
- list,
66
- hr,
67
- };
68
- exports.rules = {
69
- block: blockNormal,
70
- other,
71
- };
72
- //# 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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"}
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- interface AutoScrollProps {
3
- children: React.ReactNode;
4
- }
5
- declare const AutoScroll: React.FC<AutoScrollProps>;
6
- export default AutoScroll;
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- const modulePrefix = 'AutoScroll';
3
- const AutoScroll = (props) => {
4
- return _jsx("div", { className: "ds-markdown_auto_scroll", children: props.children });
5
- };
6
- export default AutoScroll;
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AutoScroll/index.tsx"],"names":[],"mappings":";AAMA,MAAM,YAAY,GAAG,YAAY,CAAC;AAClC,MAAM,UAAU,GAA8B,CAAC,KAAsB,EAAE,EAAE;IACvE,OAAO,cAAK,SAAS,EAAC,yBAAyB,YAAE,KAAK,CAAC,QAAQ,GAAO,CAAC;AACzE,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import { MarkdownProps } from '../defined.js';
3
- declare const _default: React.NamedExoticComponent<MarkdownProps & React.RefAttributes<import("../defined.js").MarkdownBaseRef>>;
4
- export default _default;
@@ -1,65 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef } from 'react';
3
- import { __DEV__ } from '../constant.js';
4
- import MarkdownCMD from '../MarkdownCMD/index.js';
5
- const MarkdownInner = ({ children: _children = '', answerType, markdownRef, ...rest }) => {
6
- const cmdRef = useRef(null);
7
- const prefixRef = useRef('');
8
- const content = useMemo(() => {
9
- if (typeof _children === 'string') {
10
- return _children;
11
- }
12
- if (__DEV__) {
13
- console.error('Markdown组件的子元素必须是一个字符串');
14
- }
15
- return '';
16
- }, [_children]);
17
- useEffect(() => {
18
- if (prefixRef.current !== content) {
19
- let newContent = '';
20
- if (prefixRef.current === '') {
21
- newContent = content;
22
- }
23
- else {
24
- if (content.startsWith(prefixRef.current)) {
25
- newContent = content.slice(prefixRef.current.length);
26
- }
27
- else {
28
- newContent = content;
29
- cmdRef.current.clear();
30
- }
31
- }
32
- cmdRef.current.push(newContent, answerType);
33
- prefixRef.current = content;
34
- }
35
- }, [answerType, content]);
36
- useImperativeHandle(markdownRef, () => ({
37
- stop: () => {
38
- cmdRef.current.stop();
39
- },
40
- resume: () => {
41
- cmdRef.current.resume();
42
- },
43
- start: () => {
44
- cmdRef.current.start();
45
- },
46
- restart: () => {
47
- cmdRef.current.restart();
48
- },
49
- }));
50
- return _jsx(MarkdownCMD, { ref: cmdRef, ...rest });
51
- };
52
- const Markdown = forwardRef((props, ref) => {
53
- const { children = '', answerType = 'answer' } = props;
54
- if (__DEV__) {
55
- if (!['thinking', 'answer'].includes(answerType)) {
56
- throw new Error('Markdown组件的answerType必须是thinking或answer');
57
- }
58
- if (typeof children !== 'string') {
59
- throw new Error('Markdown组件的子元素必须是一个字符串');
60
- }
61
- }
62
- return _jsx(MarkdownInner, { ...props, answerType: answerType, markdownRef: ref });
63
- });
64
- export default memo(Markdown);
65
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Markdown/index.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { MarkdownCMDProps, MarkdownCMDRef } from '../defined.js';
2
- declare const MarkdownCMD: import("react").ForwardRefExoticComponent<MarkdownCMDProps & import("react").RefAttributes<MarkdownCMDRef>>;
3
- export default MarkdownCMD;
@@ -1,192 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { forwardRef, useImperativeHandle, useRef, useState } from 'react';
3
- import HighReactMarkdown from '../components/HighReactMarkdown/index.js';
4
- import classNames from 'classnames';
5
- import { __DEV__ } from '../constant.js';
6
- import { useTypingTask } from '../hooks/useTypingTask.js';
7
- const MarkdownCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, onBeforeTypedChar, timerType = 'setTimeout', theme = 'light', math, plugins, disableTyping = false, autoStartTyping = true }, ref) => {
8
- /** 是否自动开启打字动画, 后面发生变化将不会生效 */
9
- const autoStartTypingRef = useRef(autoStartTyping);
10
- /** 是否打过字 */
11
- const isStartedTypingRef = useRef(false);
12
- /** 当前需要打字的内容 */
13
- const charsRef = useRef([]);
14
- /**
15
- * 打字是否已经完全结束
16
- * 如果打字已经完全结束,则不会再触发打字效果
17
- */
18
- const isWholeTypedEndRef = useRef(false);
19
- const charIndexRef = useRef(0);
20
- /** 整个内容引用 */
21
- const wholeContentRef = useRef({
22
- thinking: {
23
- content: '',
24
- length: 0,
25
- prevLength: 0,
26
- },
27
- answer: {
28
- content: '',
29
- length: 0,
30
- prevLength: 0,
31
- },
32
- allLength: 0,
33
- });
34
- const [, setUpdate] = useState(0);
35
- const triggerUpdate = () => {
36
- setUpdate((prev) => prev + 1);
37
- };
38
- /**
39
- * 处理字符显示逻辑
40
- */
41
- const processCharDisplay = (char) => {
42
- if (!isStartedTypingRef.current) {
43
- isStartedTypingRef.current = true;
44
- }
45
- if (char.answerType === 'thinking') {
46
- wholeContentRef.current.thinking.content += char.content;
47
- wholeContentRef.current.thinking.length += 1;
48
- }
49
- else {
50
- wholeContentRef.current.answer.content += char.content;
51
- wholeContentRef.current.answer.length += 1;
52
- }
53
- triggerUpdate();
54
- };
55
- const resetWholeContent = () => {
56
- wholeContentRef.current.thinking.content = '';
57
- wholeContentRef.current.thinking.length = 0;
58
- wholeContentRef.current.thinking.prevLength = 0;
59
- wholeContentRef.current.answer.content = '';
60
- wholeContentRef.current.answer.length = 0;
61
- wholeContentRef.current.answer.prevLength = 0;
62
- wholeContentRef.current.allLength = 0;
63
- };
64
- // 使用新的打字任务 hook
65
- const typingTask = useTypingTask({
66
- timerType,
67
- interval,
68
- charsRef,
69
- onEnd,
70
- onStart,
71
- onTypedChar,
72
- onBeforeTypedChar,
73
- processCharDisplay,
74
- wholeContentRef,
75
- disableTyping,
76
- triggerUpdate,
77
- resetWholeContent,
78
- });
79
- /**
80
- * 内部推送处理逻辑
81
- */
82
- const processHasTypingPush = (content, answerType) => {
83
- if (content.length === 0) {
84
- return;
85
- }
86
- charsRef.current.push(...content.split('').map((chatStr) => {
87
- const index = charIndexRef.current++;
88
- const charObj = {
89
- content: chatStr,
90
- answerType,
91
- tokenId: 0,
92
- index,
93
- };
94
- return charObj;
95
- }));
96
- wholeContentRef.current.allLength += content.length;
97
- // 如果关闭了自动打字, 并且没有打过字, 则不开启打字动画
98
- if (!autoStartTypingRef.current && !isStartedTypingRef.current) {
99
- return;
100
- }
101
- if (!typingTask.isTyping()) {
102
- typingTask.start();
103
- }
104
- };
105
- const processNoTypingPush = (content, answerType) => {
106
- wholeContentRef.current[answerType].content += content;
107
- // 记录打字前的长度
108
- wholeContentRef.current[answerType].prevLength = wholeContentRef.current[answerType].length;
109
- wholeContentRef.current[answerType].length += content.length;
110
- triggerUpdate();
111
- onEnd?.({
112
- str: content,
113
- answerStr: wholeContentRef.current.answer.content,
114
- thinkingStr: wholeContentRef.current.thinking.content,
115
- manual: false,
116
- });
117
- };
118
- useImperativeHandle(ref, () => ({
119
- /**
120
- * 添加内容
121
- * @param content 内容 {string}
122
- * @param answerType 回答类型 {AnswerType}
123
- */
124
- push: (content, answerType = 'answer') => {
125
- if (disableTyping) {
126
- processNoTypingPush(content, answerType);
127
- return;
128
- }
129
- processHasTypingPush(content, answerType);
130
- },
131
- /**
132
- * 清除打字任务
133
- */
134
- clear: () => {
135
- typingTask.stop();
136
- typingTask.typedIsManualStopRef.current = false;
137
- charsRef.current = [];
138
- resetWholeContent();
139
- isWholeTypedEndRef.current = false;
140
- charIndexRef.current = 0;
141
- isStartedTypingRef.current = false;
142
- triggerUpdate();
143
- },
144
- /** 开启打字,只有在关闭了自动打字才生效 */
145
- start: () => {
146
- if (!autoStartTypingRef.current) {
147
- typingTask.start();
148
- }
149
- },
150
- /** 停止打字任务 */
151
- stop: () => {
152
- typingTask.stop();
153
- },
154
- /** 重新开始打字任务 */
155
- resume: () => {
156
- typingTask.resume();
157
- },
158
- /**
159
- * 主动触发打字结束
160
- */
161
- triggerWholeEnd: () => {
162
- isWholeTypedEndRef.current = true;
163
- if (!typingTask.isTyping()) {
164
- // 这里需要手动触发结束回调,因为 hook 中的 triggerOnEnd 不能直接调用
165
- onEnd?.({
166
- str: wholeContentRef.current.answer.content,
167
- answerStr: wholeContentRef.current.answer.content,
168
- thinkingStr: wholeContentRef.current.thinking.content,
169
- manual: true,
170
- });
171
- }
172
- },
173
- /** 重新开始打字任务 */
174
- restart: () => {
175
- typingTask.restart();
176
- },
177
- }));
178
- const getParagraphs = (answerType) => {
179
- const content = wholeContentRef.current[answerType].content || '';
180
- return (_jsx("div", { className: `ds-markdown-paragraph ds-typed-${answerType}`, children: _jsx(HighReactMarkdown, { theme: theme, math: math, plugins: plugins, children: content }) }));
181
- };
182
- return (_jsxs("div", { className: classNames({
183
- 'ds-markdown': true,
184
- apple: true,
185
- 'ds-markdown-dark': theme === 'dark',
186
- }), children: [_jsx("div", { className: "ds-markdown-thinking", children: getParagraphs('thinking') }), _jsx("div", { className: "ds-markdown-answer", children: getParagraphs('answer') })] }));
187
- });
188
- if (__DEV__) {
189
- MarkdownCMD.displayName = 'MarkdownCMD';
190
- }
191
- export default MarkdownCMD;
192
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import { Theme } from '../../defined.js';
3
- interface BlockWrapProps {
4
- children: React.ReactNode;
5
- language: string;
6
- theme?: Theme;
7
- }
8
- declare const BlockWrap: React.FC<BlockWrapProps>;
9
- export default BlockWrap;
@@ -1,6 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- const BlockWrap = ({ children, language, theme = 'light' }) => {
3
- return (_jsxs("div", { className: `md-code-block md-code-block-${theme}`, children: [_jsx("div", { className: "md-code-block-banner-wrap", children: _jsx("div", { className: "md-code-block-banner md-code-block-banner-lite", children: _jsx("div", { className: "md-code-block-banner-content", children: _jsx("div", { className: "md-code-block-language", children: language }) }) }) }), _jsx("div", { className: "md-code-block-content", children: children })] }));
4
- };
5
- export default BlockWrap;
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/BlockWrap/index.tsx"],"names":[],"mappings":";AASA,MAAM,SAAS,GAA6B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAG,OAAO,EAAE,EAAE,EAAE;IACtF,OAAO,CACL,eAAK,SAAS,EAAE,+BAA+B,KAAK,EAAE,aACpD,cAAK,SAAS,EAAC,2BAA2B,YACxC,cAAK,SAAS,EAAC,gDAAgD,YAC7D,cAAK,SAAS,EAAC,8BAA8B,YAC3C,cAAK,SAAS,EAAC,wBAAwB,YAAE,QAAQ,GAAO,GAEpD,GACF,GACF,EACN,cAAK,SAAS,EAAC,uBAAuB,YAAE,QAAQ,GAAO,IACnD,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import type { Options } from 'react-markdown';
3
- import { IMarkdownMath, IMarkdownPlugin, Theme } from '../../defined.js';
4
- interface HighReactMarkdownProps extends Options {
5
- theme?: Theme;
6
- children: string;
7
- math?: IMarkdownMath;
8
- plugins?: IMarkdownPlugin[];
9
- }
10
- declare const _default: React.NamedExoticComponent<HighReactMarkdownProps>;
11
- export default _default;
@@ -1,53 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- import { memo, useMemo } from 'react';
4
- import Markdown from 'react-markdown';
5
- import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
6
- import gfmPlugin from 'remark-gfm';
7
- import { replaceMathBracket } from '../../utils/remarkMathBracket.js';
8
- import BlockWrap from '../BlockWrap/index.js';
9
- import { katexId } from '../../constant.js';
10
- const HighReactMarkdown = ({ theme = 'light', children: _children, math, plugins, ...props }) => {
11
- const mathSplitSymbol = math?.splitSymbol ?? 'dollar';
12
- const { remarkPlugins, rehypePlugins, hasKatexPlugin } = useMemo(() => {
13
- let hasKatexPlugin = false;
14
- const remarkPlugins = [gfmPlugin];
15
- const rehypePlugins = [];
16
- if (!plugins) {
17
- return {
18
- remarkPlugins,
19
- rehypePlugins,
20
- };
21
- }
22
- plugins.forEach((plugin) => {
23
- if (plugin.id === katexId) {
24
- hasKatexPlugin = true;
25
- remarkPlugins.push(plugin.remarkPlugin);
26
- rehypePlugins.push(plugin.rehypePlugin);
27
- }
28
- });
29
- return {
30
- remarkPlugins,
31
- rehypePlugins,
32
- hasKatexPlugin,
33
- };
34
- }, [plugins]);
35
- const children = useMemo(() => {
36
- /** 如果存在数学公式插件,并且数学公式分隔符为括号,则替换成 $ 符号 */
37
- if (hasKatexPlugin && mathSplitSymbol === 'bracket') {
38
- return replaceMathBracket(_children);
39
- }
40
- return _children;
41
- }, [hasKatexPlugin, mathSplitSymbol, _children]);
42
- return (_jsx(Markdown, { remarkPlugins: remarkPlugins, rehypePlugins: rehypePlugins, components: {
43
- code: ({ className, children, ...props }) => {
44
- const match = /language-(\w+)/.exec(className || '');
45
- return match ? (_jsx(BlockWrap, { language: match[1], theme: theme, children: _jsx(SyntaxHighlighter, { useInlineStyles: false, language: match[1], style: {}, children: String(children).replace(/\n$/, '') }) })) : (_jsx("code", { className: className, ...props, children: children }));
46
- },
47
- table: ({ children, ...props }) => {
48
- return (_jsx("div", { className: "markdown-table-wrapper", children: _jsx("table", { className: "ds-markdown-table", children: children }) }));
49
- },
50
- }, ...props, children: children }));
51
- };
52
- export default memo(HighReactMarkdown);
53
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/HighReactMarkdown/index.tsx"],"names":[],"mappings":"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"}