react-markdown-typer 0.0.1 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,5 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { useRef, useEffect, useMemo, forwardRef, useState, useImperativeHandle, memo } from 'react';
3
- import ReactMarkdown from 'react-markdown';
4
-
5
- const __DEV__ = process.env.NODE_ENV === 'development';
6
-
7
- const useTypingTask = (options) => {
1
+ import { useEffect, useRef } from 'react';
2
+ export const useTypingTask = (options) => {
8
3
  const { timerType = 'setTimeout', interval, charsRef, onEnd, onStart, onBeforeTypedChar, onTypedChar, processCharDisplay, wholeContentRef, disableTyping, triggerUpdate, resetWholeContent, } = options;
9
4
  /** 是否卸载 */
10
5
  const isUnmountRef = useRef(false);
@@ -51,12 +46,13 @@ const useTypingTask = (options) => {
51
46
  * 触发打字结束回调
52
47
  */
53
48
  const triggerOnEnd = (data) => {
49
+ var _a;
54
50
  if (!onEnd) {
55
51
  return;
56
52
  }
57
53
  onEnd({
58
54
  str: wholeContentRef.current.content,
59
- manual: data?.manual ?? false,
55
+ manual: (_a = data === null || data === void 0 ? void 0 : data.manual) !== null && _a !== void 0 ? _a : false,
60
56
  });
61
57
  };
62
58
  /**
@@ -130,12 +126,12 @@ const useTypingTask = (options) => {
130
126
  const chars = getChars();
131
127
  const answerCharsStr = chars.map((char) => char.content).join('');
132
128
  if (answerCharsStr) {
133
- await onBeforeTypedChar?.({
129
+ await (onBeforeTypedChar === null || onBeforeTypedChar === void 0 ? void 0 : onBeforeTypedChar({
134
130
  currentIndex: wholeContentRef.current.length,
135
131
  currentChar: answerCharsStr,
136
132
  prevStr: wholeContentRef.current.content,
137
133
  percent: 100,
138
- });
134
+ }));
139
135
  }
140
136
  wholeContentRef.current.content += answerCharsStr;
141
137
  wholeContentRef.current.prevLength = wholeContentRef.current.length;
@@ -312,253 +308,4 @@ const useTypingTask = (options) => {
312
308
  typedIsManualStopRef,
313
309
  };
314
310
  };
315
-
316
- const replaceMathBracket = (value) => {
317
- // Extract all block-level formula content, temporarily replace with placeholder, [...]
318
- const blockMatches = [];
319
- let replaced = value.replace(/\\*\[([\s\S]+?)\\*\]/g, (_m, p1) => {
320
- blockMatches.push(p1);
321
- return `__BLOCK_MATH_${blockMatches.length - 1}__`;
322
- });
323
- // Extract all inline formula content, temporarily replace with placeholder, [...]
324
- replaced = replaced.replace(/\$\$([\s\S]+?)\$\$/g, (_m, p1) => {
325
- blockMatches.push(p1);
326
- return `__BLOCK_MATH_${blockMatches.length - 1}__`;
327
- });
328
- // Replace ( ... ) outside the block-level formula with $...$
329
- replaced = replaced.replace(/\\*\(([^)]+?)\\*\)/g, (_m, p1) => {
330
- return '$' + p1 + '$';
331
- });
332
- // Restore block-level formula content, keep the original parentheses inside
333
- replaced = replaced.replace(/__BLOCK_MATH_(\d+)__/g, (_m, idx) => {
334
- return '$$' + blockMatches[Number(idx)] + '$$';
335
- });
336
- return replaced;
337
- };
338
-
339
- const HighReactMarkdown = ({ reactMarkdownProps, children: _children, math }) => {
340
- const mathSplitSymbol = math?.splitSymbol ?? 'dollar';
341
- const children = useMemo(() => {
342
- /** 如果存在数学公式插件,并且数学公式分隔符为括号,则替换成 $ 符号 */
343
- if (mathSplitSymbol === 'bracket') {
344
- return replaceMathBracket(_children);
345
- }
346
- return _children;
347
- }, [mathSplitSymbol, _children]);
348
- return jsx(ReactMarkdown, { ...reactMarkdownProps, children: children });
349
- };
350
-
351
- const MarkdownCMD = forwardRef(({ interval = 30, onEnd, onStart, onTypedChar, onBeforeTypedChar, timerType = 'setTimeout', math, reactMarkdownProps, disableTyping = false, autoStartTyping = true }, ref) => {
352
- /** 是否自动开启打字动画, 后面发生变化将不会生效 */
353
- const autoStartTypingRef = useRef(autoStartTyping);
354
- /** 是否打过字 */
355
- const isStartedTypingRef = useRef(false);
356
- /** 当前需要打字的内容 */
357
- const charsRef = useRef([]);
358
- /**
359
- * 打字是否已经完全结束
360
- * 如果打字已经完全结束,则不会再触发打字效果
361
- */
362
- const isWholeTypedEndRef = useRef(false);
363
- const charIndexRef = useRef(0);
364
- /** 整个内容引用 */
365
- const wholeContentRef = useRef({
366
- content: '',
367
- length: 0,
368
- prevLength: 0,
369
- });
370
- const [, setUpdate] = useState(0);
371
- const triggerUpdate = () => {
372
- setUpdate((prev) => prev + 1);
373
- };
374
- /**
375
- * 处理字符显示逻辑
376
- */
377
- const processCharDisplay = (char) => {
378
- if (!isStartedTypingRef.current) {
379
- isStartedTypingRef.current = true;
380
- }
381
- wholeContentRef.current.prevLength = wholeContentRef.current.length;
382
- wholeContentRef.current.content += char.content;
383
- wholeContentRef.current.length += char.content.length;
384
- triggerUpdate();
385
- };
386
- const resetWholeContent = () => {
387
- wholeContentRef.current.content = '';
388
- wholeContentRef.current.length = 0;
389
- wholeContentRef.current.prevLength = 0;
390
- };
391
- // 使用新的打字任务 hook
392
- const typingTask = useTypingTask({
393
- timerType,
394
- interval,
395
- charsRef,
396
- onEnd,
397
- onStart,
398
- onTypedChar,
399
- onBeforeTypedChar,
400
- processCharDisplay,
401
- wholeContentRef,
402
- disableTyping,
403
- triggerUpdate,
404
- resetWholeContent,
405
- });
406
- /**
407
- * 内部推送处理逻辑
408
- */
409
- const processHasTypingPush = (content) => {
410
- if (content.length === 0) {
411
- return;
412
- }
413
- charsRef.current.push(...content.split('').map((chatStr) => {
414
- const index = charIndexRef.current++;
415
- const charObj = {
416
- content: chatStr,
417
- tokenId: 0,
418
- index,
419
- };
420
- return charObj;
421
- }));
422
- // 如果关闭了自动打字, 并且没有打过字, 则不开启打字动画
423
- if (!autoStartTypingRef.current && !isStartedTypingRef.current) {
424
- return;
425
- }
426
- if (!typingTask.isTyping()) {
427
- typingTask.start();
428
- }
429
- };
430
- const processNoTypingPush = (content) => {
431
- wholeContentRef.current.content += content;
432
- // 记录打字前的长度
433
- wholeContentRef.current.prevLength = wholeContentRef.current.length;
434
- wholeContentRef.current.length += content.length;
435
- triggerUpdate();
436
- onEnd?.({
437
- str: content,
438
- manual: false,
439
- });
440
- };
441
- useImperativeHandle(ref, () => ({
442
- /**
443
- * 添加内容
444
- * @param content 内容 {string}
445
- * @param answerType 回答类型 {AnswerType}
446
- */
447
- push: (content) => {
448
- if (disableTyping) {
449
- processNoTypingPush(content);
450
- return;
451
- }
452
- processHasTypingPush(content);
453
- },
454
- /**
455
- * 清除打字任务
456
- */
457
- clear: () => {
458
- typingTask.stop();
459
- typingTask.typedIsManualStopRef.current = false;
460
- charsRef.current = [];
461
- resetWholeContent();
462
- isWholeTypedEndRef.current = false;
463
- charIndexRef.current = 0;
464
- isStartedTypingRef.current = false;
465
- triggerUpdate();
466
- },
467
- /** 开启打字,只有在关闭了自动打字才生效 */
468
- start: () => {
469
- if (!autoStartTypingRef.current) {
470
- typingTask.start();
471
- }
472
- },
473
- /** 停止打字任务 */
474
- stop: () => {
475
- typingTask.stop();
476
- },
477
- /** 重新开始打字任务 */
478
- resume: () => {
479
- typingTask.resume();
480
- },
481
- /**
482
- * 主动触发打字结束
483
- */
484
- triggerWholeEnd: () => {
485
- isWholeTypedEndRef.current = true;
486
- if (!typingTask.isTyping()) {
487
- // 这里需要手动触发结束回调,因为 hook 中的 triggerOnEnd 不能直接调用
488
- onEnd?.({
489
- str: wholeContentRef.current.content,
490
- manual: true,
491
- });
492
- }
493
- },
494
- /** 重新开始打字任务 */
495
- restart: () => {
496
- typingTask.restart();
497
- },
498
- }));
499
- return (jsx(HighReactMarkdown, { reactMarkdownProps: reactMarkdownProps, math: math, children: wholeContentRef.current.content }));
500
- });
501
- if (__DEV__) {
502
- MarkdownCMD.displayName = 'MarkdownCMD';
503
- }
504
-
505
- const MarkdownInner = ({ children: _children = '', markdownRef, ...rest }) => {
506
- const cmdRef = useRef(null);
507
- const prefixRef = useRef('');
508
- const content = useMemo(() => {
509
- if (typeof _children === 'string') {
510
- return _children;
511
- }
512
- if (__DEV__) {
513
- console.error('Markdown component must have a string child');
514
- }
515
- return '';
516
- }, [_children]);
517
- useEffect(() => {
518
- if (prefixRef.current !== content) {
519
- let newContent = '';
520
- if (prefixRef.current === '') {
521
- newContent = content;
522
- }
523
- else {
524
- if (content.startsWith(prefixRef.current)) {
525
- newContent = content.slice(prefixRef.current.length);
526
- }
527
- else {
528
- newContent = content;
529
- cmdRef.current.clear();
530
- }
531
- }
532
- cmdRef.current.push(newContent);
533
- prefixRef.current = content;
534
- }
535
- }, [content]);
536
- useImperativeHandle(markdownRef, () => ({
537
- stop: () => {
538
- cmdRef.current.stop();
539
- },
540
- resume: () => {
541
- cmdRef.current.resume();
542
- },
543
- start: () => {
544
- cmdRef.current.start();
545
- },
546
- restart: () => {
547
- cmdRef.current.restart();
548
- },
549
- }));
550
- return jsx(MarkdownCMD, { ref: cmdRef, ...rest });
551
- };
552
- const Markdown = forwardRef((props, ref) => {
553
- const { children = '' } = props;
554
- if (__DEV__) {
555
- if (typeof children !== 'string') {
556
- throw new Error('Markdown component must have a string child');
557
- }
558
- }
559
- return jsx(MarkdownInner, { ...props, markdownRef: ref });
560
- });
561
- var Markdown$1 = memo(Markdown);
562
-
563
- export { Markdown$1 as Markdown, MarkdownCMD, Markdown$1 as default };
564
- //# sourceMappingURL=index.js.map
311
+ //# sourceMappingURL=useTypingTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTypingTask.js","sourceRoot":"","sources":["../../src/hooks/useTypingTask.ts"],"names":[],"mappings":"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"}
package/es/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import MarkdownCMD from './MarkdownCMD';
2
+ import Markdown from './Markdown';
3
+ import type { MarkdownCMDRef, MarkdownRef, IMarkdownMath, ITypedChar, MarkdownProps, MarkdownCMDProps } from './defined';
4
+ export default Markdown;
5
+ export type { MarkdownCMDRef, MarkdownRef, IMarkdownMath, ITypedChar, MarkdownProps, MarkdownCMDProps };
6
+ export { Markdown, MarkdownCMD };
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEzH,eAAe,QAAQ,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AACxG,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
package/es/index.js ADDED
@@ -0,0 +1,5 @@
1
+ import MarkdownCMD from './MarkdownCMD/index.js';
2
+ import Markdown from './Markdown/index.js';
3
+ export default Markdown;
4
+ export { Markdown, MarkdownCMD };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,eAAe,QAAQ,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,9 @@
1
1
  {
2
2
  "name": "react-markdown-typer",
3
3
  "private": false,
4
- "version": "0.0.1",
5
- "main": "./dist/cjs/index.js",
6
- "types": "./dist/cjs/index.d.ts",
7
- "module": "./dist/esm/index.js",
8
- "style": "./dist/style.css",
4
+ "version": "1.0.0-beta.1",
5
+ "main": "./es/index.js",
6
+ "types": "./es/index.d.ts",
9
7
  "type": "module",
10
8
  "license": "MIT",
11
9
  "repository": {
@@ -17,24 +15,20 @@
17
15
  },
18
16
  "exports": {
19
17
  ".": {
20
- "browser": "./dist/esm/index.js",
21
18
  "import": {
22
- "types": "./dist/esm/index.d.ts",
23
- "default": "./dist/esm/index.js"
19
+ "types": "./es/index.d.ts",
20
+ "default": "./es/index.js"
24
21
  },
25
- "require": {
26
- "types": "./dist/cjs/index.d.ts",
27
- "default": "./dist/cjs/index.js"
28
- }
22
+ "default": "./es/index.js"
29
23
  }
30
24
  },
31
25
  "files": [
32
- "dist"
26
+ "es"
33
27
  ],
34
28
  "scripts": {
35
29
  "dev": "vite",
36
30
  "build:docs": "rimraf docs && vite build",
37
- "build": "rimraf dist && rollup -c",
31
+ "build": "node scripts/build-lib-ts.js",
38
32
  "lint": "eslint .",
39
33
  "preview": "vite preview",
40
34
  "release": "npm run build && node scripts/set-tag.cjs && cross-env RELEASE_MODE=true npm publish",
@@ -65,6 +59,8 @@
65
59
  "@types/react-dom": "^19.1.2",
66
60
  "@types/react-syntax-highlighter": "^15.5.13",
67
61
  "@vitejs/plugin-react": "^4.4.1",
62
+ "fs-extra": "^11.3.0",
63
+ "glob": "^11.0.3",
68
64
  "babel-jest": "^29.0.0",
69
65
  "cross-env": "^7.0.3",
70
66
  "eslint": "^9.25.0",
@@ -116,6 +112,6 @@
116
112
  "react-markdown"
117
113
  ],
118
114
  "publishConfig": {
119
- "tag": "latest"
115
+ "tag": "beta"
120
116
  }
121
117
  }