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.
- package/README.md +14 -14
- package/dist/cjs/index.d.ts +98 -6
- package/dist/cjs/index.js +2 -12
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/plugins/index.d.ts +8 -1
- package/dist/cjs/plugins/index.js +2 -24
- package/dist/cjs/plugins/index.js.map +1 -1
- package/dist/esm/index.d.ts +98 -6
- package/dist/esm/index.js +2 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/plugins/index.d.ts +8 -1
- package/dist/esm/plugins/index.js +2 -17
- package/dist/esm/plugins/index.js.map +1 -1
- package/package.json +15 -5
- package/dist/cjs/AutoScroll/index.d.ts +0 -6
- package/dist/cjs/AutoScroll/index.js +0 -9
- package/dist/cjs/AutoScroll/index.js.map +0 -1
- package/dist/cjs/Markdown/index.d.ts +0 -4
- package/dist/cjs/Markdown/index.js +0 -70
- package/dist/cjs/Markdown/index.js.map +0 -1
- package/dist/cjs/MarkdownCMD/index.d.ts +0 -3
- package/dist/cjs/MarkdownCMD/index.js +0 -197
- package/dist/cjs/MarkdownCMD/index.js.map +0 -1
- package/dist/cjs/components/BlockWrap/index.d.ts +0 -9
- package/dist/cjs/components/BlockWrap/index.js +0 -8
- package/dist/cjs/components/BlockWrap/index.js.map +0 -1
- package/dist/cjs/components/HighReactMarkdown/index.d.ts +0 -11
- package/dist/cjs/components/HighReactMarkdown/index.js +0 -58
- package/dist/cjs/components/HighReactMarkdown/index.js.map +0 -1
- package/dist/cjs/constant.d.ts +0 -3
- package/dist/cjs/constant.js +0 -7
- package/dist/cjs/constant.js.map +0 -1
- package/dist/cjs/defined.d.ts +0 -132
- package/dist/cjs/defined.js +0 -3
- package/dist/cjs/defined.js.map +0 -1
- package/dist/cjs/hooks/useTypingTask.d.ts +0 -32
- package/dist/cjs/hooks/useTypingTask.js +0 -338
- package/dist/cjs/hooks/useTypingTask.js.map +0 -1
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/utils/Tokenizer.d.ts +0 -47
- package/dist/cjs/utils/Tokenizer.js +0 -196
- package/dist/cjs/utils/Tokenizer.js.map +0 -1
- package/dist/cjs/utils/compiler.d.ts +0 -4
- package/dist/cjs/utils/compiler.js +0 -65
- package/dist/cjs/utils/compiler.js.map +0 -1
- package/dist/cjs/utils/methods/deepClone.d.ts +0 -1
- package/dist/cjs/utils/methods/deepClone.js +0 -7
- package/dist/cjs/utils/methods/deepClone.js.map +0 -1
- package/dist/cjs/utils/remarkMathBracket.d.ts +0 -7
- package/dist/cjs/utils/remarkMathBracket.js +0 -40
- package/dist/cjs/utils/remarkMathBracket.js.map +0 -1
- package/dist/cjs/utils/rule.d.ts +0 -25
- package/dist/cjs/utils/rule.js +0 -72
- package/dist/cjs/utils/rule.js.map +0 -1
- package/dist/esm/AutoScroll/index.d.ts +0 -6
- package/dist/esm/AutoScroll/index.js +0 -7
- package/dist/esm/AutoScroll/index.js.map +0 -1
- package/dist/esm/Markdown/index.d.ts +0 -4
- package/dist/esm/Markdown/index.js +0 -65
- package/dist/esm/Markdown/index.js.map +0 -1
- package/dist/esm/MarkdownCMD/index.d.ts +0 -3
- package/dist/esm/MarkdownCMD/index.js +0 -192
- package/dist/esm/MarkdownCMD/index.js.map +0 -1
- package/dist/esm/components/BlockWrap/index.d.ts +0 -9
- package/dist/esm/components/BlockWrap/index.js +0 -6
- package/dist/esm/components/BlockWrap/index.js.map +0 -1
- package/dist/esm/components/HighReactMarkdown/index.d.ts +0 -11
- package/dist/esm/components/HighReactMarkdown/index.js +0 -53
- package/dist/esm/components/HighReactMarkdown/index.js.map +0 -1
- package/dist/esm/constant.d.ts +0 -3
- package/dist/esm/constant.js +0 -4
- package/dist/esm/constant.js.map +0 -1
- package/dist/esm/defined.d.ts +0 -132
- package/dist/esm/defined.js +0 -2
- package/dist/esm/defined.js.map +0 -1
- package/dist/esm/hooks/useTypingTask.d.ts +0 -32
- package/dist/esm/hooks/useTypingTask.js +0 -334
- package/dist/esm/hooks/useTypingTask.js.map +0 -1
- package/dist/esm/utils/Tokenizer.d.ts +0 -47
- package/dist/esm/utils/Tokenizer.js +0 -191
- package/dist/esm/utils/Tokenizer.js.map +0 -1
- package/dist/esm/utils/compiler.d.ts +0 -4
- package/dist/esm/utils/compiler.js +0 -62
- package/dist/esm/utils/compiler.js.map +0 -1
- package/dist/esm/utils/methods/deepClone.d.ts +0 -1
- package/dist/esm/utils/methods/deepClone.js +0 -4
- package/dist/esm/utils/methods/deepClone.js.map +0 -1
- package/dist/esm/utils/remarkMathBracket.d.ts +0 -7
- package/dist/esm/utils/remarkMathBracket.js +0 -36
- package/dist/esm/utils/remarkMathBracket.js.map +0 -1
- package/dist/esm/utils/rule.d.ts +0 -25
- package/dist/esm/utils/rule.js +0 -69
- package/dist/esm/utils/rule.js.map +0 -1
package/README.md
CHANGED
|
@@ -464,20 +464,20 @@ function StartDemo() {
|
|
|
464
464
|
import DsMarkdown, { MarkdownCMD } from 'ds-markdown';
|
|
465
465
|
```
|
|
466
466
|
|
|
467
|
-
| 属性 | 类型 | 说明
|
|
468
|
-
| ------------------- | ------------------------------------------- |
|
|
469
|
-
| `interval` | `number` | 打字间隔 (毫秒)
|
|
470
|
-
| `timerType` | `'setTimeout'` \| `'requestAnimationFrame'` |
|
|
471
|
-
| `answerType` | `'thinking'` \| `'answer'` | 内容类型 (影响样式主题)
|
|
472
|
-
| `theme` | `'light'` \| `'dark'` | 主题类型
|
|
473
|
-
| `plugins` | `IMarkdownPlugin[]` | 插件配置
|
|
474
|
-
| `math` | [IMarkdownMath](#IMarkdownMath) | 数学公式配置
|
|
475
|
-
| `onEnd` | `(data: EndData) => void` | 打字结束回调
|
|
476
|
-
| `onStart` | `(data: StartData) => void` | 打字开始回调
|
|
477
|
-
| `onBeforeTypedChar` | `(data: IBeforeTypedChar) => Promise<void>` | 字符打字前的回调,支持异步操作,会阻塞之后的打字
|
|
478
|
-
| `onTypedChar` | `(data: ITypedChar) => void` | 每字符打字后的回调
|
|
479
|
-
| `disableTyping` | `boolean` | 禁用打字动画效果
|
|
480
|
-
| `autoStartTyping` | `boolean` | 是否自动开始打字动画,设为 false
|
|
467
|
+
| 属性 | 类型 | 说明 | 默认值 |
|
|
468
|
+
| ------------------- | ------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------- |
|
|
469
|
+
| `interval` | `number` | 打字间隔 (毫秒) | `30` |
|
|
470
|
+
| `timerType` | `'setTimeout'` \| `'requestAnimationFrame'` | 定时器类型,不支持动态修改 | 当前默认值是`setTimeout`,后期会改为`requestAnimationFrame` |
|
|
471
|
+
| `answerType` | `'thinking'` \| `'answer'` | 内容类型 (影响样式主题),不支持动态修改 | `'answer'` |
|
|
472
|
+
| `theme` | `'light'` \| `'dark'` | 主题类型 | `'light'` |
|
|
473
|
+
| `plugins` | `IMarkdownPlugin[]` | 插件配置 | `[]` |
|
|
474
|
+
| `math` | [IMarkdownMath](#IMarkdownMath) | 数学公式配置 | `{ splitSymbol: 'dollar' }` |
|
|
475
|
+
| `onEnd` | `(data: EndData) => void` | 打字结束回调 | - |
|
|
476
|
+
| `onStart` | `(data: StartData) => void` | 打字开始回调 | - |
|
|
477
|
+
| `onBeforeTypedChar` | `(data: IBeforeTypedChar) => Promise<void>` | 字符打字前的回调,支持异步操作,会阻塞之后的打字 | - |
|
|
478
|
+
| `onTypedChar` | `(data: ITypedChar) => void` | 每字符打字后的回调 | - |
|
|
479
|
+
| `disableTyping` | `boolean` | 禁用打字动画效果 | `false` |
|
|
480
|
+
| `autoStartTyping` | `boolean` | 是否自动开始打字动画,设为 false 时需手动触发,不支持动态修改 | `true` |
|
|
481
481
|
|
|
482
482
|
> 注意: 如果当在打字中 `disableTyping`从 `true` 变为 `false`,则在下一个打字触发时,会把剩下的所有字一次性显示
|
|
483
483
|
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,6 +1,98 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import react__default from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 回答类型,思考和回答
|
|
6
|
+
*/
|
|
7
|
+
type AnswerType = 'answer' | 'thinking';
|
|
8
|
+
type Theme = 'light' | 'dark';
|
|
9
|
+
interface IOnTypedCharData {
|
|
10
|
+
currentIndex: number;
|
|
11
|
+
currentChar: string;
|
|
12
|
+
answerType: AnswerType;
|
|
13
|
+
prevStr: string;
|
|
14
|
+
}
|
|
15
|
+
interface ITypedChar extends IOnTypedCharData {
|
|
16
|
+
percent: number;
|
|
17
|
+
currentStr: string;
|
|
18
|
+
}
|
|
19
|
+
interface IBeforeTypedChar extends IOnTypedCharData {
|
|
20
|
+
percent: number;
|
|
21
|
+
}
|
|
22
|
+
interface MarkdownBaseProps {
|
|
23
|
+
/** 计时类型: 支持setTimeout和requestAnimationFrame */
|
|
24
|
+
timerType?: 'setTimeout' | 'requestAnimationFrame';
|
|
25
|
+
/** 回答类型 */
|
|
26
|
+
answerType?: 'thinking' | 'answer';
|
|
27
|
+
/** 打字机效果间隔时间 */
|
|
28
|
+
interval: number;
|
|
29
|
+
/** 是否关闭打字机效果 */
|
|
30
|
+
disableTyping?: boolean;
|
|
31
|
+
/** 打字完成后回调, */
|
|
32
|
+
onEnd?: (data?: IEndData) => void;
|
|
33
|
+
/** 开始打字回调 */
|
|
34
|
+
onStart?: (data?: IOnTypedCharData) => void;
|
|
35
|
+
/** 打字前回调 */
|
|
36
|
+
onBeforeTypedChar?: (data?: IBeforeTypedChar) => Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* 打字机打完一个字符回调
|
|
39
|
+
* @param char 字符
|
|
40
|
+
* @param index 字符索引
|
|
41
|
+
*/
|
|
42
|
+
onTypedChar?: (data?: ITypedChar) => void;
|
|
43
|
+
/** 主题 */
|
|
44
|
+
theme?: Theme;
|
|
45
|
+
/** 数学公式配置 */
|
|
46
|
+
math?: IMarkdownMath;
|
|
47
|
+
/** 插件配置 */
|
|
48
|
+
plugins?: IMarkdownPlugin[];
|
|
49
|
+
/** 是否自动开启打字动画 */
|
|
50
|
+
autoStartTyping?: boolean;
|
|
51
|
+
}
|
|
52
|
+
interface MarkdownProps extends MarkdownBaseProps {
|
|
53
|
+
children: string | undefined;
|
|
54
|
+
}
|
|
55
|
+
/** MarkdownCMD 组件不需要 children */
|
|
56
|
+
interface MarkdownCMDProps extends MarkdownBaseProps {
|
|
57
|
+
children?: undefined;
|
|
58
|
+
}
|
|
59
|
+
interface IMarkdownPlugin {
|
|
60
|
+
remarkPlugin?: unknown;
|
|
61
|
+
rehypePlugin?: unknown;
|
|
62
|
+
type: 'buildIn' | 'custom';
|
|
63
|
+
id?: any;
|
|
64
|
+
}
|
|
65
|
+
interface IMarkdownMath {
|
|
66
|
+
/** 是括号还是$作为分隔符, 默认是$ */
|
|
67
|
+
splitSymbol: 'bracket' | 'dollar';
|
|
68
|
+
}
|
|
69
|
+
interface MarkdownBaseRef {
|
|
70
|
+
stop: () => void;
|
|
71
|
+
resume: () => void;
|
|
72
|
+
start: () => void;
|
|
73
|
+
restart: () => void;
|
|
74
|
+
}
|
|
75
|
+
/** Markdown 组件的ref 类型 */
|
|
76
|
+
type MarkdownRef = MarkdownBaseRef;
|
|
77
|
+
/** MarkdownCMD 组件的 ref 类型 */
|
|
78
|
+
interface MarkdownCMDRef extends MarkdownBaseRef {
|
|
79
|
+
push: (content: string, answerType?: AnswerType) => void;
|
|
80
|
+
clear: () => void;
|
|
81
|
+
triggerWholeEnd: () => void;
|
|
82
|
+
}
|
|
83
|
+
interface IEndData {
|
|
84
|
+
manual: boolean;
|
|
85
|
+
/** 回答字符串 */
|
|
86
|
+
answerStr: string;
|
|
87
|
+
/** 思考字符串 */
|
|
88
|
+
thinkingStr: string;
|
|
89
|
+
/** 打字机打过的字符串, 和answerStr 相同 */
|
|
90
|
+
str: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
declare const MarkdownCMD: react.ForwardRefExoticComponent<MarkdownCMDProps & react.RefAttributes<MarkdownCMDRef>>;
|
|
94
|
+
|
|
95
|
+
declare const _default: react__default.NamedExoticComponent<MarkdownProps & react__default.RefAttributes<MarkdownBaseRef>>;
|
|
96
|
+
|
|
97
|
+
export { _default as Markdown, MarkdownCMD, _default as default };
|
|
98
|
+
export type { IMarkdownMath, ITypedChar, MarkdownCMDProps, MarkdownCMDRef, MarkdownProps, MarkdownRef };
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MarkdownCMD = exports.Markdown = void 0;
|
|
7
|
-
const index_js_1 = __importDefault(require("./MarkdownCMD/index.js"));
|
|
8
|
-
exports.MarkdownCMD = index_js_1.default;
|
|
9
|
-
const index_js_2 = __importDefault(require("./Markdown/index.js"));
|
|
10
|
-
exports.Markdown = index_js_2.default;
|
|
11
|
-
exports.default = index_js_2.default;
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),n=require("react"),r=require("react-markdown"),t=require("react-syntax-highlighter"),c=require("remark-gfm"),a=require("classnames");const s=({children:n,language:r,theme:t="light"})=>e.jsxs("div",{className:`md-code-block md-code-block-${t}`,children:[e.jsx("div",{className:"md-code-block-banner-wrap",children:e.jsx("div",{className:"md-code-block-banner md-code-block-banner-lite",children:e.jsx("div",{className:"md-code-block-banner-content",children:e.jsx("div",{className:"md-code-block-language",children:r})})})}),e.jsx("div",{className:"md-code-block-content",children:n})]}),u="development"===process.env.NODE_ENV,i=Symbol("katex");var o=n.memo(({theme:a="light",children:u,math:o,plugins:l,...h})=>{const d=o?.splitSymbol??"dollar",{remarkPlugins:p,rehypePlugins:g,hasKatexPlugin:m}=n.useMemo(()=>{let e=!1;const n=[c],r=[];return l?(l.forEach(t=>{t.id===i&&(e=!0,n.push(t.remarkPlugin),r.push(t.rehypePlugin))}),{remarkPlugins:n,rehypePlugins:r,hasKatexPlugin:e}):{remarkPlugins:n,rehypePlugins:r}},[l]),w=n.useMemo(()=>m&&"bracket"===d?(e=>{const n=[];let r=e.replace(/\\*\[([\s\S]+?)\\*\]/g,(e,r)=>(n.push(r),`__BLOCK_MATH_${n.length-1}__`));return r=r.replace(/\$\$([\s\S]+?)\$\$/g,(e,r)=>(n.push(r),`__BLOCK_MATH_${n.length-1}__`)),r=r.replace(/\\*\(([^)]+?)\\*\)/g,(e,n)=>"$"+n+"$"),r=r.replace(/__BLOCK_MATH_(\d+)__/g,(e,r)=>"$$"+n[Number(r)]+"$$"),r})(u):u,[m,d,u]);return e.jsx(r,{remarkPlugins:p,rehypePlugins:g,components:{code:({className:n,children:r,...c})=>{const u=/language-(\w+)/.exec(n||"");return u?e.jsx(s,{language:u[1],theme:a,children:e.jsx(t.Prism,{useInlineStyles:!1,language:u[1],style:{},children:String(r).replace(/\n$/,"")})}):e.jsx("code",{className:n,...c,children:r})},table:({children:n,...r})=>e.jsx("div",{className:"markdown-table-wrapper",children:e.jsx("table",{className:"ds-markdown-table",children:n})})},...h,children:w})});const l=e=>{const{timerType:r="setTimeout",interval:t,charsRef:c,onEnd:a,onStart:s,onBeforeTypedChar:u,onTypedChar:i,processCharDisplay:o,wholeContentRef:l,disableTyping:h,triggerUpdate:d,resetWholeContent:p}=e,g=n.useRef(!1),m=n.useRef(!1),w=n.useRef(null),f=n.useRef(null),k=n.useRef(void 0),y=n.useRef(!1),T=n.useRef(h);T.current=h;const x=n.useRef(t);x.current=t;const v=()=>c.current;n.useEffect(()=>(g.current=!1,()=>{g.current=!0,C()}),[]);const R=e=>{if(!s)return;const n=l.current[e.answerType].content;s({currentIndex:n.length,currentChar:e.content,answerType:e.answerType,prevStr:n})},b=e=>{a&&a({str:l.current.answer.content,answerStr:l.current.answer.content,thinkingStr:l.current.thinking.content,manual:e?.manual??!1})},S=async e=>{if(!u)return;const{answerType:n,content:r,index:t}=e,c=l.current.allLength,a=e.index/c*100;await u({currentIndex:t,currentChar:r,answerType:n,prevStr:l.current[n].content,percent:a})},j=async e=>{if(!i)return;const{answerType:n,content:r,index:t}=e,c=l.current.allLength,a=(e.index+1)/c*100;i({currentIndex:t,currentChar:r,answerType:n,prevStr:l.current[n].content.slice(0,t),currentStr:l.current[n].content,percent:a})},C=()=>{w.current&&(cancelAnimationFrame(w.current),w.current=null),f.current&&(clearTimeout(f.current),f.current=null),m.current=!1,k.current=void 0},_=()=>{y.current||m.current||("requestAnimationFrame"===r?N():L())};async function M(){const e=v(),n=e.filter(e=>"thinking"===e.answerType).map(e=>e.content).join(""),r=e.filter(e=>"answer"===e.answerType).map(e=>e.content).join("");n&&await(u?.({currentIndex:l.current.thinking.length,currentChar:n,answerType:"thinking",prevStr:l.current.thinking.content,percent:100})),r&&await(u?.({currentIndex:l.current.answer.length,currentChar:r,answerType:"answer",prevStr:l.current.answer.content,percent:100})),l.current.thinking.content+=n,l.current.thinking.length+=n.length,l.current.answer.content+=r,l.current.answer.length+=r.length,l.current.allLength+=n.length+r.length,c.current=[],m.current=!1,b(),d()}const N=()=>{let e=performance.now();const n=async r=>{if(T.current)return void await M();const t=v();if(g.current)return;if(0===t.length)return void $();const c=r-e;let a=Math.max(0,Math.floor(c/x.current));if(a=Math.min(a,t.length),a>0){for(let e=0;e<a;e++){const e=t.shift();if(void 0===e)break;m.current||(m.current=!0,R(e)),await S(e),o(e),j(e)}e=performance.now(),t.length>0?w.current=requestAnimationFrame(n):(m.current=!1,b())}else w.current=requestAnimationFrame(n)};w.current=requestAnimationFrame(n)},$=(e=!1)=>{m.current=!1,w.current&&(cancelAnimationFrame(w.current),w.current=null),e||b({manual:e})},L=()=>{const e=async(n=!1)=>{if(T.current)return void M();const r=v();if(g.current)return;m.current=!0;const t=r.shift();void 0!==t?(n&&R(t),await S(t),o(t),j(t),0!==v().length?f.current=setTimeout(e,x.current):P()):P()};e(!0)},P=()=>{m.current=!1,f.current&&(clearTimeout(f.current),f.current=null),b()},I=()=>{"requestAnimationFrame"===r?$():P()};return{start:_,restart:function(){I(),c.current.unshift(...l.current.thinking.content.split("").map(e=>({content:e,answerType:"thinking",tokenId:0,index:0}))),c.current.unshift(...l.current.answer.content.split("").map(e=>({content:e,answerType:"answer",tokenId:0,index:0}))),p(),d(),_()},stop:()=>{y.current=!0,I()},resume:function(){y.current=!1,_()},clear:function(){C()},isTyping:()=>m.current,typedIsManualStopRef:y}},h=n.forwardRef(({interval:r=30,onEnd:t,onStart:c,onTypedChar:s,onBeforeTypedChar:u,timerType:i="setTimeout",theme:h="light",math:d,plugins:p,disableTyping:g=!1,autoStartTyping:m=!0},w)=>{const f=n.useRef(m),k=n.useRef(!1),y=n.useRef([]),T=n.useRef(!1),x=n.useRef(0),v=n.useRef({thinking:{content:"",length:0,prevLength:0},answer:{content:"",length:0,prevLength:0},allLength:0}),[,R]=n.useState(0),b=()=>{R(e=>e+1)},S=()=>{v.current.thinking.content="",v.current.thinking.length=0,v.current.thinking.prevLength=0,v.current.answer.content="",v.current.answer.length=0,v.current.answer.prevLength=0,v.current.allLength=0},j=l({timerType:i,interval:r,charsRef:y,onEnd:t,onStart:c,onTypedChar:s,onBeforeTypedChar:u,processCharDisplay:e=>{k.current||(k.current=!0),"thinking"===e.answerType?(v.current.thinking.content+=e.content,v.current.thinking.length+=1):(v.current.answer.content+=e.content,v.current.answer.length+=1),b()},wholeContentRef:v,disableTyping:g,triggerUpdate:b,resetWholeContent:S});n.useImperativeHandle(w,()=>({push:(e,n="answer")=>{g?((e,n)=>{v.current[n].content+=e,v.current[n].prevLength=v.current[n].length,v.current[n].length+=e.length,b(),t?.({str:e,answerStr:v.current.answer.content,thinkingStr:v.current.thinking.content,manual:!1})})(e,n):((e,n)=>{0!==e.length&&(y.current.push(...e.split("").map(e=>{const r=x.current++;return{content:e,answerType:n,tokenId:0,index:r}})),v.current.allLength+=e.length,(f.current||k.current)&&(j.isTyping()||j.start()))})(e,n)},clear:()=>{j.stop(),j.typedIsManualStopRef.current=!1,y.current=[],S(),T.current=!1,x.current=0,k.current=!1,b()},start:()=>{f.current||j.start()},stop:()=>{j.stop()},resume:()=>{j.resume()},triggerWholeEnd:()=>{T.current=!0,j.isTyping()||t?.({str:v.current.answer.content,answerStr:v.current.answer.content,thinkingStr:v.current.thinking.content,manual:!0})},restart:()=>{j.restart()}}));const C=n=>{const r=v.current[n].content||"";return e.jsx("div",{className:`ds-markdown-paragraph ds-typed-${n}`,children:e.jsx(o,{theme:h,math:d,plugins:p,children:r})})};return e.jsxs("div",{className:a({"ds-markdown":!0,apple:!0,"ds-markdown-dark":"dark"===h}),children:[e.jsx("div",{className:"ds-markdown-thinking",children:C("thinking")}),e.jsx("div",{className:"ds-markdown-answer",children:C("answer")})]})});u&&(h.displayName="MarkdownCMD");const d=({children:r="",answerType:t,markdownRef:c,...a})=>{const s=n.useRef(null),i=n.useRef(""),o=n.useMemo(()=>"string"==typeof r?r:(u&&console.error("Markdown组件的子元素必须是一个字符串"),""),[r]);return n.useEffect(()=>{if(i.current!==o){let e="";""===i.current?e=o:o.startsWith(i.current)?e=o.slice(i.current.length):(e=o,s.current.clear()),s.current.push(e,t),i.current=o}},[t,o]),n.useImperativeHandle(c,()=>({stop:()=>{s.current.stop()},resume:()=>{s.current.resume()},start:()=>{s.current.start()},restart:()=>{s.current.restart()}})),e.jsx(h,{ref:s,...a})},p=n.forwardRef((n,r)=>{const{children:t="",answerType:c="answer"}=n;if(u){if(!["thinking","answer"].includes(c))throw new Error("Markdown组件的answerType必须是thinking或answer");if("string"!=typeof t)throw new Error("Markdown组件的子元素必须是一个字符串")}return e.jsx(d,{...n,answerType:c,markdownRef:r})});var g=n.memo(p);exports.Markdown=g,exports.MarkdownCMD=h,exports.default=g;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":";;;;;;AAAA,sEAAiD;AAM9B,sBANZ,kBAAW,CAMY;AAL9B,mEAA2C;AAKlC,mBALF,kBAAQ,CAKE;AAFjB,kBAAe,kBAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/utils/remarkMathBracket.ts","../../src/components/BlockWrap/index.tsx","../../src/constant.ts","../../src/components/HighReactMarkdown/index.tsx","../../src/hooks/useTypingTask.ts","../../src/MarkdownCMD/index.tsx","../../src/Markdown/index.tsx"],"sourcesContent":[null,null,null,null,null,null,null],"names":["BlockWrap","children","language","theme","_jsxs","jsxs","className","_jsx","__DEV__","process","env","NODE_ENV","katexId","Symbol","memo","_children","math","plugins","props","mathSplitSymbol","splitSymbol","remarkPlugins","rehypePlugins","hasKatexPlugin","useMemo","gfmPlugin","forEach","plugin","id","push","remarkPlugin","rehypePlugin","value","blockMatches","replaced","replace","_m","p1","length","idx","Number","replaceMathBracket","Markdown","components","code","match","exec","jsx","SyntaxHighlighter","Prism","useInlineStyles","style","String","table","useTypingTask","options","timerType","interval","charsRef","onEnd","onStart","onBeforeTypedChar","onTypedChar","processCharDisplay","wholeContentRef","disableTyping","triggerUpdate","resetWholeContent","isUnmountRef","useRef","isTypingRef","animationFrameRef","timerRef","typedCharsRef","undefined","typedIsManualStopRef","disableTypingRef","current","intervalRef","getChars","useEffect","clearTimer","triggerOnStart","char","prevStr","answerType","content","currentIndex","currentChar","triggerOnEnd","data","str","answer","answerStr","thinkingStr","thinking","manual","triggerOnBeforeTypedChar","async","index","allLength","percent","triggerOnTypedChar","slice","currentStr","cancelAnimationFrame","clearTimeout","startTypedTask","startAnimationFrameMode","startTimeoutMode","typingRemainAll","chars","thinkingCharsStr","filter","map","join","answerCharsStr","lastFrameTime","performance","now","frameLoop","currentTime","stopAnimationFrame","deltaTime","needToTypingCharsLength","Math","max","floor","min","i","shift","requestAnimationFrame","startTyped","isStartPoint","setTimeout","stopTimeout","cancelTask","start","restart","unshift","split","charUnit","tokenId","stop","resume","clear","isTyping","MarkdownCMD","forwardRef","autoStartTyping","ref","autoStartTypingRef","isStartedTypingRef","isWholeTypedEndRef","charIndexRef","prevLength","setUpdate","useState","prev","typingTask","useImperativeHandle","processNoTypingPush","chatStr","processHasTypingPush","triggerWholeEnd","getParagraphs","HighReactMarkdown","classNames","apple","displayName","MarkdownInner","markdownRef","rest","cmdRef","prefixRef","console","error","newContent","startsWith","includes","Error"],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
interface IMarkdownPlugin {
|
|
2
|
+
remarkPlugin?: unknown;
|
|
3
|
+
rehypePlugin?: unknown;
|
|
4
|
+
type: 'buildIn' | 'custom';
|
|
5
|
+
id?: any;
|
|
6
|
+
}
|
|
7
|
+
|
|
2
8
|
declare function createBuildInPlugin(partialPlugin: Partial<IMarkdownPlugin>): IMarkdownPlugin;
|
|
3
9
|
declare const katexPlugin: IMarkdownPlugin;
|
|
10
|
+
|
|
4
11
|
export { createBuildInPlugin, katexPlugin };
|
|
@@ -1,24 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.katexPlugin = void 0;
|
|
7
|
-
exports.createBuildInPlugin = createBuildInPlugin;
|
|
8
|
-
const remark_math_1 = __importDefault(require("remark-math"));
|
|
9
|
-
const rehype_katex_1 = __importDefault(require("rehype-katex"));
|
|
10
|
-
const constant_js_1 = require("../constant.js");
|
|
11
|
-
function createBuildInPlugin(partialPlugin) {
|
|
12
|
-
const plugin = {
|
|
13
|
-
...partialPlugin,
|
|
14
|
-
type: 'buildIn',
|
|
15
|
-
};
|
|
16
|
-
return plugin;
|
|
17
|
-
}
|
|
18
|
-
const katexPlugin = createBuildInPlugin({
|
|
19
|
-
remarkPlugin: remark_math_1.default,
|
|
20
|
-
rehypePlugin: rehype_katex_1.default,
|
|
21
|
-
id: constant_js_1.katexId,
|
|
22
|
-
});
|
|
23
|
-
exports.katexPlugin = katexPlugin;
|
|
24
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";var e=require("remark-math"),r=require("rehype-katex");process.env.NODE_ENV;function t(e){return{...e,type:"buildIn"}}const i=t({remarkPlugin:e,rehypePlugin:r,id:Symbol("katex")});exports.createBuildInPlugin=t,exports.katexPlugin=i;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/constant.ts","../../../src/plugins/index.tsx"],"sourcesContent":[null,null],"names":["process","env","NODE_ENV","createBuildInPlugin","partialPlugin","type","katexPlugin","remarkPlugin","remarkMath","rehypePlugin","rehypeKatex","id","Symbol"],"mappings":"oEAAuBA,QAAQC,IAAIC,SCKnC,SAASC,EAAoBC,GAM3B,MALgC,IAC3BA,EACHC,KAAM,UAIV,CAEM,MAAAC,EAAcH,EAAoB,CACtCI,aAAcC,EACdC,aAAcC,EACdC,GDdqBC,OAAO"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,6 +1,98 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import react__default from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 回答类型,思考和回答
|
|
6
|
+
*/
|
|
7
|
+
type AnswerType = 'answer' | 'thinking';
|
|
8
|
+
type Theme = 'light' | 'dark';
|
|
9
|
+
interface IOnTypedCharData {
|
|
10
|
+
currentIndex: number;
|
|
11
|
+
currentChar: string;
|
|
12
|
+
answerType: AnswerType;
|
|
13
|
+
prevStr: string;
|
|
14
|
+
}
|
|
15
|
+
interface ITypedChar extends IOnTypedCharData {
|
|
16
|
+
percent: number;
|
|
17
|
+
currentStr: string;
|
|
18
|
+
}
|
|
19
|
+
interface IBeforeTypedChar extends IOnTypedCharData {
|
|
20
|
+
percent: number;
|
|
21
|
+
}
|
|
22
|
+
interface MarkdownBaseProps {
|
|
23
|
+
/** 计时类型: 支持setTimeout和requestAnimationFrame */
|
|
24
|
+
timerType?: 'setTimeout' | 'requestAnimationFrame';
|
|
25
|
+
/** 回答类型 */
|
|
26
|
+
answerType?: 'thinking' | 'answer';
|
|
27
|
+
/** 打字机效果间隔时间 */
|
|
28
|
+
interval: number;
|
|
29
|
+
/** 是否关闭打字机效果 */
|
|
30
|
+
disableTyping?: boolean;
|
|
31
|
+
/** 打字完成后回调, */
|
|
32
|
+
onEnd?: (data?: IEndData) => void;
|
|
33
|
+
/** 开始打字回调 */
|
|
34
|
+
onStart?: (data?: IOnTypedCharData) => void;
|
|
35
|
+
/** 打字前回调 */
|
|
36
|
+
onBeforeTypedChar?: (data?: IBeforeTypedChar) => Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* 打字机打完一个字符回调
|
|
39
|
+
* @param char 字符
|
|
40
|
+
* @param index 字符索引
|
|
41
|
+
*/
|
|
42
|
+
onTypedChar?: (data?: ITypedChar) => void;
|
|
43
|
+
/** 主题 */
|
|
44
|
+
theme?: Theme;
|
|
45
|
+
/** 数学公式配置 */
|
|
46
|
+
math?: IMarkdownMath;
|
|
47
|
+
/** 插件配置 */
|
|
48
|
+
plugins?: IMarkdownPlugin[];
|
|
49
|
+
/** 是否自动开启打字动画 */
|
|
50
|
+
autoStartTyping?: boolean;
|
|
51
|
+
}
|
|
52
|
+
interface MarkdownProps extends MarkdownBaseProps {
|
|
53
|
+
children: string | undefined;
|
|
54
|
+
}
|
|
55
|
+
/** MarkdownCMD 组件不需要 children */
|
|
56
|
+
interface MarkdownCMDProps extends MarkdownBaseProps {
|
|
57
|
+
children?: undefined;
|
|
58
|
+
}
|
|
59
|
+
interface IMarkdownPlugin {
|
|
60
|
+
remarkPlugin?: unknown;
|
|
61
|
+
rehypePlugin?: unknown;
|
|
62
|
+
type: 'buildIn' | 'custom';
|
|
63
|
+
id?: any;
|
|
64
|
+
}
|
|
65
|
+
interface IMarkdownMath {
|
|
66
|
+
/** 是括号还是$作为分隔符, 默认是$ */
|
|
67
|
+
splitSymbol: 'bracket' | 'dollar';
|
|
68
|
+
}
|
|
69
|
+
interface MarkdownBaseRef {
|
|
70
|
+
stop: () => void;
|
|
71
|
+
resume: () => void;
|
|
72
|
+
start: () => void;
|
|
73
|
+
restart: () => void;
|
|
74
|
+
}
|
|
75
|
+
/** Markdown 组件的ref 类型 */
|
|
76
|
+
type MarkdownRef = MarkdownBaseRef;
|
|
77
|
+
/** MarkdownCMD 组件的 ref 类型 */
|
|
78
|
+
interface MarkdownCMDRef extends MarkdownBaseRef {
|
|
79
|
+
push: (content: string, answerType?: AnswerType) => void;
|
|
80
|
+
clear: () => void;
|
|
81
|
+
triggerWholeEnd: () => void;
|
|
82
|
+
}
|
|
83
|
+
interface IEndData {
|
|
84
|
+
manual: boolean;
|
|
85
|
+
/** 回答字符串 */
|
|
86
|
+
answerStr: string;
|
|
87
|
+
/** 思考字符串 */
|
|
88
|
+
thinkingStr: string;
|
|
89
|
+
/** 打字机打过的字符串, 和answerStr 相同 */
|
|
90
|
+
str: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
declare const MarkdownCMD: react.ForwardRefExoticComponent<MarkdownCMDProps & react.RefAttributes<MarkdownCMDRef>>;
|
|
94
|
+
|
|
95
|
+
declare const _default: react__default.NamedExoticComponent<MarkdownProps & react__default.RefAttributes<MarkdownBaseRef>>;
|
|
96
|
+
|
|
97
|
+
export { _default as Markdown, MarkdownCMD, _default as default };
|
|
98
|
+
export type { IMarkdownMath, ITypedChar, MarkdownCMDProps, MarkdownCMDRef, MarkdownProps, MarkdownRef };
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export default Markdown;
|
|
4
|
-
export { Markdown, MarkdownCMD };
|
|
5
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import{jsxs as e,jsx as n}from"react/jsx-runtime";import{memo as r,useMemo as t,useRef as c,useEffect as a,forwardRef as s,useState as i,useImperativeHandle as u}from"react";import o from"react-markdown";import{Prism as l}from"react-syntax-highlighter";import h from"remark-gfm";import d from"classnames";const p=({children:r,language:t,theme:c="light"})=>e("div",{className:`md-code-block md-code-block-${c}`,children:[n("div",{className:"md-code-block-banner-wrap",children:n("div",{className:"md-code-block-banner md-code-block-banner-lite",children:n("div",{className:"md-code-block-banner-content",children:n("div",{className:"md-code-block-language",children:t})})})}),n("div",{className:"md-code-block-content",children:r})]}),g="development"===process.env.NODE_ENV,m=Symbol("katex");var w=r(({theme:e="light",children:r,math:c,plugins:a,...s})=>{const i=c?.splitSymbol??"dollar",{remarkPlugins:u,rehypePlugins:d,hasKatexPlugin:g}=t(()=>{let e=!1;const n=[h],r=[];return a?(a.forEach(t=>{t.id===m&&(e=!0,n.push(t.remarkPlugin),r.push(t.rehypePlugin))}),{remarkPlugins:n,rehypePlugins:r,hasKatexPlugin:e}):{remarkPlugins:n,rehypePlugins:r}},[a]),w=t(()=>g&&"bracket"===i?(e=>{const n=[];let r=e.replace(/\\*\[([\s\S]+?)\\*\]/g,(e,r)=>(n.push(r),`__BLOCK_MATH_${n.length-1}__`));return r=r.replace(/\$\$([\s\S]+?)\$\$/g,(e,r)=>(n.push(r),`__BLOCK_MATH_${n.length-1}__`)),r=r.replace(/\\*\(([^)]+?)\\*\)/g,(e,n)=>"$"+n+"$"),r=r.replace(/__BLOCK_MATH_(\d+)__/g,(e,r)=>"$$"+n[Number(r)]+"$$"),r})(r):r,[g,i,r]);return n(o,{remarkPlugins:u,rehypePlugins:d,components:{code:({className:r,children:t,...c})=>{const a=/language-(\w+)/.exec(r||"");return a?n(p,{language:a[1],theme:e,children:n(l,{useInlineStyles:!1,language:a[1],style:{},children:String(t).replace(/\n$/,"")})}):n("code",{className:r,...c,children:t})},table:({children:e,...r})=>n("div",{className:"markdown-table-wrapper",children:n("table",{className:"ds-markdown-table",children:e})})},...s,children:w})});const k=e=>{const{timerType:n="setTimeout",interval:r,charsRef:t,onEnd:s,onStart:i,onBeforeTypedChar:u,onTypedChar:o,processCharDisplay:l,wholeContentRef:h,disableTyping:d,triggerUpdate:p,resetWholeContent:g}=e,m=c(!1),w=c(!1),k=c(null),y=c(null),f=c(void 0),T=c(!1),v=c(d);v.current=d;const b=c(r);b.current=r;const S=()=>t.current;a(()=>(m.current=!1,()=>{m.current=!0,$()}),[]);const C=e=>{if(!i)return;const n=h.current[e.answerType].content;i({currentIndex:n.length,currentChar:e.content,answerType:e.answerType,prevStr:n})},x=e=>{s&&s({str:h.current.answer.content,answerStr:h.current.answer.content,thinkingStr:h.current.thinking.content,manual:e?.manual??!1})},_=async e=>{if(!u)return;const{answerType:n,content:r,index:t}=e,c=h.current.allLength,a=e.index/c*100;await u({currentIndex:t,currentChar:r,answerType:n,prevStr:h.current[n].content,percent:a})},N=async e=>{if(!o)return;const{answerType:n,content:r,index:t}=e,c=h.current.allLength,a=(e.index+1)/c*100;o({currentIndex:t,currentChar:r,answerType:n,prevStr:h.current[n].content.slice(0,t),currentStr:h.current[n].content,percent:a})},$=()=>{k.current&&(cancelAnimationFrame(k.current),k.current=null),y.current&&(clearTimeout(y.current),y.current=null),w.current=!1,f.current=void 0},L=()=>{T.current||w.current||("requestAnimationFrame"===n?P():A())};async function M(){const e=S(),n=e.filter(e=>"thinking"===e.answerType).map(e=>e.content).join(""),r=e.filter(e=>"answer"===e.answerType).map(e=>e.content).join("");n&&await(u?.({currentIndex:h.current.thinking.length,currentChar:n,answerType:"thinking",prevStr:h.current.thinking.content,percent:100})),r&&await(u?.({currentIndex:h.current.answer.length,currentChar:r,answerType:"answer",prevStr:h.current.answer.content,percent:100})),h.current.thinking.content+=n,h.current.thinking.length+=n.length,h.current.answer.content+=r,h.current.answer.length+=r.length,h.current.allLength+=n.length+r.length,t.current=[],w.current=!1,x(),p()}const P=()=>{let e=performance.now();const n=async r=>{if(v.current)return void await M();const t=S();if(m.current)return;if(0===t.length)return void I();const c=r-e;let a=Math.max(0,Math.floor(c/b.current));if(a=Math.min(a,t.length),a>0){for(let e=0;e<a;e++){const e=t.shift();if(void 0===e)break;w.current||(w.current=!0,C(e)),await _(e),l(e),N(e)}e=performance.now(),t.length>0?k.current=requestAnimationFrame(n):(w.current=!1,x())}else k.current=requestAnimationFrame(n)};k.current=requestAnimationFrame(n)},I=(e=!1)=>{w.current=!1,k.current&&(cancelAnimationFrame(k.current),k.current=null),e||x({manual:e})},A=()=>{const e=async(n=!1)=>{if(v.current)return void M();const r=S();if(m.current)return;w.current=!0;const t=r.shift();void 0!==t?(n&&C(t),await _(t),l(t),N(t),0!==S().length?y.current=setTimeout(e,b.current):E()):E()};e(!0)},E=()=>{w.current=!1,y.current&&(clearTimeout(y.current),y.current=null),x()},R=()=>{"requestAnimationFrame"===n?I():E()};return{start:L,restart:function(){R(),t.current.unshift(...h.current.thinking.content.split("").map(e=>({content:e,answerType:"thinking",tokenId:0,index:0}))),t.current.unshift(...h.current.answer.content.split("").map(e=>({content:e,answerType:"answer",tokenId:0,index:0}))),g(),p(),L()},stop:()=>{T.current=!0,R()},resume:function(){T.current=!1,L()},clear:function(){$()},isTyping:()=>w.current,typedIsManualStopRef:T}},y=s(({interval:r=30,onEnd:t,onStart:a,onTypedChar:s,onBeforeTypedChar:o,timerType:l="setTimeout",theme:h="light",math:p,plugins:g,disableTyping:m=!1,autoStartTyping:y=!0},f)=>{const T=c(y),v=c(!1),b=c([]),S=c(!1),C=c(0),x=c({thinking:{content:"",length:0,prevLength:0},answer:{content:"",length:0,prevLength:0},allLength:0}),[,_]=i(0),N=()=>{_(e=>e+1)},$=()=>{x.current.thinking.content="",x.current.thinking.length=0,x.current.thinking.prevLength=0,x.current.answer.content="",x.current.answer.length=0,x.current.answer.prevLength=0,x.current.allLength=0},L=k({timerType:l,interval:r,charsRef:b,onEnd:t,onStart:a,onTypedChar:s,onBeforeTypedChar:o,processCharDisplay:e=>{v.current||(v.current=!0),"thinking"===e.answerType?(x.current.thinking.content+=e.content,x.current.thinking.length+=1):(x.current.answer.content+=e.content,x.current.answer.length+=1),N()},wholeContentRef:x,disableTyping:m,triggerUpdate:N,resetWholeContent:$});u(f,()=>({push:(e,n="answer")=>{m?((e,n)=>{x.current[n].content+=e,x.current[n].prevLength=x.current[n].length,x.current[n].length+=e.length,N(),t?.({str:e,answerStr:x.current.answer.content,thinkingStr:x.current.thinking.content,manual:!1})})(e,n):((e,n)=>{0!==e.length&&(b.current.push(...e.split("").map(e=>{const r=C.current++;return{content:e,answerType:n,tokenId:0,index:r}})),x.current.allLength+=e.length,(T.current||v.current)&&(L.isTyping()||L.start()))})(e,n)},clear:()=>{L.stop(),L.typedIsManualStopRef.current=!1,b.current=[],$(),S.current=!1,C.current=0,v.current=!1,N()},start:()=>{T.current||L.start()},stop:()=>{L.stop()},resume:()=>{L.resume()},triggerWholeEnd:()=>{S.current=!0,L.isTyping()||t?.({str:x.current.answer.content,answerStr:x.current.answer.content,thinkingStr:x.current.thinking.content,manual:!0})},restart:()=>{L.restart()}}));const M=e=>{const r=x.current[e].content||"";return n("div",{className:`ds-markdown-paragraph ds-typed-${e}`,children:n(w,{theme:h,math:p,plugins:g,children:r})})};return e("div",{className:d({"ds-markdown":!0,apple:!0,"ds-markdown-dark":"dark"===h}),children:[n("div",{className:"ds-markdown-thinking",children:M("thinking")}),n("div",{className:"ds-markdown-answer",children:M("answer")})]})});g&&(y.displayName="MarkdownCMD");const f=({children:e="",answerType:r,markdownRef:s,...i})=>{const o=c(null),l=c(""),h=t(()=>"string"==typeof e?e:(g&&console.error("Markdown组件的子元素必须是一个字符串"),""),[e]);return a(()=>{if(l.current!==h){let e="";""===l.current?e=h:h.startsWith(l.current)?e=h.slice(l.current.length):(e=h,o.current.clear()),o.current.push(e,r),l.current=h}},[r,h]),u(s,()=>({stop:()=>{o.current.stop()},resume:()=>{o.current.resume()},start:()=>{o.current.start()},restart:()=>{o.current.restart()}})),n(y,{ref:o,...i})};var T=r(s((e,r)=>{const{children:t="",answerType:c="answer"}=e;if(g){if(!["thinking","answer"].includes(c))throw new Error("Markdown组件的answerType必须是thinking或answer");if("string"!=typeof t)throw new Error("Markdown组件的子元素必须是一个字符串")}return n(f,{...e,answerType:c,markdownRef:r})}));export{T as Markdown,y as MarkdownCMD,T as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAG3C,eAAe,QAAQ,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/utils/remarkMathBracket.ts","../../src/components/BlockWrap/index.tsx","../../src/constant.ts","../../src/components/HighReactMarkdown/index.tsx","../../src/hooks/useTypingTask.ts","../../src/MarkdownCMD/index.tsx","../../src/Markdown/index.tsx"],"sourcesContent":[null,null,null,null,null,null,null],"names":["BlockWrap","children","language","theme","_jsxs","className","_jsx","__DEV__","process","env","NODE_ENV","katexId","Symbol","HighReactMarkdown$1","memo","_children","math","plugins","props","mathSplitSymbol","splitSymbol","remarkPlugins","rehypePlugins","hasKatexPlugin","useMemo","gfmPlugin","forEach","plugin","id","push","remarkPlugin","rehypePlugin","value","blockMatches","replaced","replace","_m","p1","length","idx","Number","replaceMathBracket","Markdown","components","code","match","exec","SyntaxHighlighter","useInlineStyles","style","String","table","useTypingTask","options","timerType","interval","charsRef","onEnd","onStart","onBeforeTypedChar","onTypedChar","processCharDisplay","wholeContentRef","disableTyping","triggerUpdate","resetWholeContent","isUnmountRef","useRef","isTypingRef","animationFrameRef","timerRef","typedCharsRef","undefined","typedIsManualStopRef","disableTypingRef","current","intervalRef","getChars","useEffect","clearTimer","triggerOnStart","char","prevStr","answerType","content","currentIndex","currentChar","triggerOnEnd","data","str","answer","answerStr","thinkingStr","thinking","manual","triggerOnBeforeTypedChar","async","index","allLength","percent","triggerOnTypedChar","slice","currentStr","cancelAnimationFrame","clearTimeout","startTypedTask","startAnimationFrameMode","startTimeoutMode","typingRemainAll","chars","thinkingCharsStr","filter","map","join","answerCharsStr","lastFrameTime","performance","now","frameLoop","currentTime","stopAnimationFrame","deltaTime","needToTypingCharsLength","Math","max","floor","min","i","shift","requestAnimationFrame","startTyped","isStartPoint","setTimeout","stopTimeout","cancelTask","start","restart","unshift","split","charUnit","tokenId","stop","resume","clear","isTyping","MarkdownCMD","forwardRef","autoStartTyping","ref","autoStartTypingRef","isStartedTypingRef","isWholeTypedEndRef","charIndexRef","prevLength","setUpdate","useState","prev","typingTask","useImperativeHandle","processNoTypingPush","chatStr","processHasTypingPush","triggerWholeEnd","getParagraphs","HighReactMarkdown","classNames","apple","displayName","MarkdownInner","markdownRef","rest","cmdRef","prefixRef","console","error","newContent","startsWith","Markdown$1","includes","Error"],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
interface IMarkdownPlugin {
|
|
2
|
+
remarkPlugin?: unknown;
|
|
3
|
+
rehypePlugin?: unknown;
|
|
4
|
+
type: 'buildIn' | 'custom';
|
|
5
|
+
id?: any;
|
|
6
|
+
}
|
|
7
|
+
|
|
2
8
|
declare function createBuildInPlugin(partialPlugin: Partial<IMarkdownPlugin>): IMarkdownPlugin;
|
|
3
9
|
declare const katexPlugin: IMarkdownPlugin;
|
|
10
|
+
|
|
4
11
|
export { createBuildInPlugin, katexPlugin };
|
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { katexId } from '../constant.js';
|
|
4
|
-
function createBuildInPlugin(partialPlugin) {
|
|
5
|
-
const plugin = {
|
|
6
|
-
...partialPlugin,
|
|
7
|
-
type: 'buildIn',
|
|
8
|
-
};
|
|
9
|
-
return plugin;
|
|
10
|
-
}
|
|
11
|
-
const katexPlugin = createBuildInPlugin({
|
|
12
|
-
remarkPlugin: remarkMath,
|
|
13
|
-
rehypePlugin: rehypeKatex,
|
|
14
|
-
id: katexId,
|
|
15
|
-
});
|
|
16
|
-
export { createBuildInPlugin, katexPlugin };
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import r from"remark-math";import e from"rehype-katex";process.env.NODE_ENV;function t(r){return{...r,type:"buildIn"}}const o=t({remarkPlugin:r,rehypePlugin:e,id:Symbol("katex")});export{t as createBuildInPlugin,o as katexPlugin};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/constant.ts","../../../src/plugins/index.tsx"],"sourcesContent":[null,null],"names":["process","env","NODE_ENV","createBuildInPlugin","partialPlugin","type","katexPlugin","remarkPlugin","remarkMath","rehypePlugin","rehypeKatex","id","Symbol"],"mappings":"uDAAuBA,QAAQC,IAAIC,SCKnC,SAASC,EAAoBC,GAM3B,MALgC,IAC3BA,EACHC,KAAM,UAIV,CAEM,MAAAC,EAAcH,EAAoB,CACtCI,aAAcC,EACdC,aAAcC,EACdC,GDdqBC,OAAO"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ds-markdown",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.4-beta.0",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"types": "./dist/cjs/index.d.ts",
|
|
7
7
|
"module": "./dist/esm/index.js",
|
|
@@ -49,9 +49,7 @@
|
|
|
49
49
|
"scripts": {
|
|
50
50
|
"dev": "vite",
|
|
51
51
|
"build:docs": "rimraf docs && vite build",
|
|
52
|
-
"build": "rimraf dist &&
|
|
53
|
-
"build:cjs": "tsc --project tsconfig-cjs.json && echo '{ \"type\": \"commonjs\" }' > dist/cjs/package.json",
|
|
54
|
-
"build:esm": "tsc --project tsconfig-esm.json",
|
|
52
|
+
"build": "rimraf dist && rollup -c && npm run build:less",
|
|
55
53
|
"build:less": "lessc src/style.less dist/style.css && lessc src/katex.less dist/katex.css",
|
|
56
54
|
"lint": "eslint .",
|
|
57
55
|
"preview": "vite preview",
|
|
@@ -77,6 +75,12 @@
|
|
|
77
75
|
"@babel/preset-typescript": "^7.27.1",
|
|
78
76
|
"@eslint-react/eslint-plugin": "^1.48.5",
|
|
79
77
|
"@eslint/js": "^9.25.0",
|
|
78
|
+
"@rollup/plugin-babel": "^6.0.4",
|
|
79
|
+
"@rollup/plugin-commonjs": "^27.0.0",
|
|
80
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
81
|
+
"@rollup/plugin-replace": "^5.0.5",
|
|
82
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
83
|
+
"@rollup/plugin-typescript": "^12.1.1",
|
|
80
84
|
"@testing-library/jest-dom": "^6.6.3",
|
|
81
85
|
"@types/jest": "^29.5.14",
|
|
82
86
|
"@types/react": "^19.1.2",
|
|
@@ -106,6 +110,11 @@
|
|
|
106
110
|
"remark-parse": "^11.0.0",
|
|
107
111
|
"remark-rehype": "^11.1.2",
|
|
108
112
|
"rimraf": "^6.0.1",
|
|
113
|
+
"rollup": "^4.21.1",
|
|
114
|
+
"rollup-plugin-dts": "^6.2.1",
|
|
115
|
+
"rollup-plugin-less": "^1.1.3",
|
|
116
|
+
"rollup-plugin-livereload": "^2.0.5",
|
|
117
|
+
"rollup-plugin-serve": "^2.0.2",
|
|
109
118
|
"ts-jest": "^29.3.4",
|
|
110
119
|
"typescript": "~5.8.3",
|
|
111
120
|
"typescript-eslint": "^8.30.1",
|
|
@@ -113,7 +122,8 @@
|
|
|
113
122
|
"vite": "^6.3.2"
|
|
114
123
|
},
|
|
115
124
|
"peerDependencies": {
|
|
116
|
-
"react": ">=
|
|
125
|
+
"react": ">=18.0.0",
|
|
126
|
+
"react-dom": ">=18.0.0"
|
|
117
127
|
},
|
|
118
128
|
"keywords": [
|
|
119
129
|
"markdown",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
-
const modulePrefix = 'AutoScroll';
|
|
5
|
-
const AutoScroll = (props) => {
|
|
6
|
-
return (0, jsx_runtime_1.jsx)("div", { className: "ds-markdown_auto_scroll", children: props.children });
|
|
7
|
-
};
|
|
8
|
-
exports.default = AutoScroll;
|
|
9
|
-
//# 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,gCAAK,SAAS,EAAC,yBAAyB,YAAE,KAAK,CAAC,QAAQ,GAAO,CAAC;AACzE,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
-
const react_1 = require("react");
|
|
8
|
-
const constant_js_1 = require("../constant.js");
|
|
9
|
-
const index_js_1 = __importDefault(require("../MarkdownCMD/index.js"));
|
|
10
|
-
const MarkdownInner = ({ children: _children = '', answerType, markdownRef, ...rest }) => {
|
|
11
|
-
const cmdRef = (0, react_1.useRef)(null);
|
|
12
|
-
const prefixRef = (0, react_1.useRef)('');
|
|
13
|
-
const content = (0, react_1.useMemo)(() => {
|
|
14
|
-
if (typeof _children === 'string') {
|
|
15
|
-
return _children;
|
|
16
|
-
}
|
|
17
|
-
if (constant_js_1.__DEV__) {
|
|
18
|
-
console.error('Markdown组件的子元素必须是一个字符串');
|
|
19
|
-
}
|
|
20
|
-
return '';
|
|
21
|
-
}, [_children]);
|
|
22
|
-
(0, react_1.useEffect)(() => {
|
|
23
|
-
if (prefixRef.current !== content) {
|
|
24
|
-
let newContent = '';
|
|
25
|
-
if (prefixRef.current === '') {
|
|
26
|
-
newContent = content;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
if (content.startsWith(prefixRef.current)) {
|
|
30
|
-
newContent = content.slice(prefixRef.current.length);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
newContent = content;
|
|
34
|
-
cmdRef.current.clear();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
cmdRef.current.push(newContent, answerType);
|
|
38
|
-
prefixRef.current = content;
|
|
39
|
-
}
|
|
40
|
-
}, [answerType, content]);
|
|
41
|
-
(0, react_1.useImperativeHandle)(markdownRef, () => ({
|
|
42
|
-
stop: () => {
|
|
43
|
-
cmdRef.current.stop();
|
|
44
|
-
},
|
|
45
|
-
resume: () => {
|
|
46
|
-
cmdRef.current.resume();
|
|
47
|
-
},
|
|
48
|
-
start: () => {
|
|
49
|
-
cmdRef.current.start();
|
|
50
|
-
},
|
|
51
|
-
restart: () => {
|
|
52
|
-
cmdRef.current.restart();
|
|
53
|
-
},
|
|
54
|
-
}));
|
|
55
|
-
return (0, jsx_runtime_1.jsx)(index_js_1.default, { ref: cmdRef, ...rest });
|
|
56
|
-
};
|
|
57
|
-
const Markdown = (0, react_1.forwardRef)((props, ref) => {
|
|
58
|
-
const { children = '', answerType = 'answer' } = props;
|
|
59
|
-
if (constant_js_1.__DEV__) {
|
|
60
|
-
if (!['thinking', 'answer'].includes(answerType)) {
|
|
61
|
-
throw new Error('Markdown组件的answerType必须是thinking或answer');
|
|
62
|
-
}
|
|
63
|
-
if (typeof children !== 'string') {
|
|
64
|
-
throw new Error('Markdown组件的子元素必须是一个字符串');
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return (0, jsx_runtime_1.jsx)(MarkdownInner, { ...props, answerType: answerType, markdownRef: ref });
|
|
68
|
-
});
|
|
69
|
-
exports.default = (0, react_1.memo)(Markdown);
|
|
70
|
-
//# sourceMappingURL=index.js.map
|