react-markdown-typer 1.0.3 → 1.0.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.
@@ -1,39 +1,39 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
  export const useTypingTask = (options) => {
3
3
  const { timerType = 'setTimeout', interval, charsRef, onEnd, onStart, onBeforeTypedChar, onTypedChar, processCharDisplay, wholeContentRef, disableTyping, triggerUpdate, resetWholeContent, } = options;
4
- /** 是否卸载 */
4
+ /** Whether component is unmounted */
5
5
  const isUnmountRef = useRef(false);
6
- /** 是否正在打字 */
6
+ /** Whether currently typing */
7
7
  const isTypingRef = useRef(false);
8
- /** 动画帧ID */
8
+ /** Animation frame ID */
9
9
  const animationFrameRef = useRef(null);
10
- /** 传统定时器(兼容模式) */
10
+ /** Traditional timer (compatibility mode) */
11
11
  const timerRef = useRef(null);
12
- // 已经打过的字记录
12
+ // Record of typed characters
13
13
  const typedCharsRef = useRef(undefined);
14
- // 是否主动调用 stop 方法
14
+ // Whether stop method was called manually
15
15
  const typedIsManualStopRef = useRef(false);
16
16
  const disableTypingRef = useRef(disableTyping);
17
17
  disableTypingRef.current = disableTyping;
18
18
  const intervalRef = useRef(interval);
19
19
  intervalRef.current = interval;
20
- // 记录本次打字任务的初始/最高剩余字符总量,用于计算剩余占比(流式追加时会增大)
20
+ // Record the initial/maximum remaining character count for this typing task, used to calculate remaining percentage (increases when streaming appends)
21
21
  const initialRemainTotalRef = useRef(0);
22
22
  /**
23
- * 根据剩余字符数与曲线配置,计算当前打字间隔(毫秒)
23
+ * Calculate current typing interval (milliseconds) based on remaining character count and curve configuration
24
24
  */
25
25
  const getCurrentInterval = (remainCharsLength) => {
26
26
  const cfg = intervalRef.current;
27
27
  if (typeof cfg === 'number')
28
28
  return cfg;
29
- // 动态更新初始参考总量,考虑流式场景新增字符
29
+ // Dynamically update initial reference total, considering new characters in streaming scenarios
30
30
  if (remainCharsLength > initialRemainTotalRef.current) {
31
31
  initialRemainTotalRef.current = remainCharsLength;
32
32
  }
33
33
  const baseTotal = initialRemainTotalRef.current || remainCharsLength || 1;
34
- // r: 剩余占比 [0,1],越大表示剩余越多
34
+ // r: remaining ratio [0,1], larger value means more remaining
35
35
  const r = Math.max(0, Math.min(1, remainCharsLength / baseTotal));
36
- // 曲线函数(优先使用自定义)
36
+ // Curve function (prefer custom function)
37
37
  const pickCurveFn = () => {
38
38
  if (typeof cfg.curveFn === 'function')
39
39
  return cfg.curveFn;
@@ -41,9 +41,9 @@ export const useTypingTask = (options) => {
41
41
  case 'linear':
42
42
  return (x) => x;
43
43
  case 'ease-in':
44
- return (x) => x * x; // 加速慢起
44
+ return (x) => x * x; // Slow start acceleration
45
45
  case 'ease-out':
46
- return (x) => 1 - (1 - x) * (1 - x); // 减速快止
46
+ return (x) => 1 - (1 - x) * (1 - x); // Fast stop deceleration
47
47
  case 'ease-in-out':
48
48
  return (x) => (x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2);
49
49
  case 'step-start':
@@ -52,13 +52,13 @@ export const useTypingTask = (options) => {
52
52
  return (x) => (x < 1 ? 0 : 1);
53
53
  case 'ease':
54
54
  default:
55
- // 近似通用 ease
55
+ // Approximate general ease
56
56
  return (x) => 1 - Math.pow(1 - x, 1.6);
57
57
  }
58
58
  };
59
59
  const curveFn = pickCurveFn();
60
- const y = curveFn(r); // y ∈ [0,1],随 r 增大而增大
61
- // 设计:剩余越多 => 越快(更小的间隔)。
60
+ const y = curveFn(r); // y ∈ [0,1], increases as r increases
61
+ // Design: more remaining => faster (smaller interval).
62
62
  // interval = min + (max - min) * (1 - y)
63
63
  const min = Math.max(0, cfg.min);
64
64
  const max = Math.max(min, cfg.max);
@@ -75,8 +75,8 @@ export const useTypingTask = (options) => {
75
75
  };
76
76
  }, []);
77
77
  /**
78
- * 触发打字开始回调
79
- * @param char 当前字符
78
+ * Trigger typing start callback
79
+ * @param char Current character
80
80
  */
81
81
  const triggerOnStart = (char) => {
82
82
  if (!onStart) {
@@ -90,7 +90,7 @@ export const useTypingTask = (options) => {
90
90
  });
91
91
  };
92
92
  /**
93
- * 触发打字结束回调
93
+ * Trigger typing end callback
94
94
  */
95
95
  const triggerOnEnd = (data) => {
96
96
  var _a;
@@ -103,8 +103,8 @@ export const useTypingTask = (options) => {
103
103
  });
104
104
  };
105
105
  /**
106
- * 触发打字过程中回调
107
- * @param char 当前字符
106
+ * Trigger callback during typing process
107
+ * @param char Current character
108
108
  */
109
109
  const triggerOnBeforeTypedChar = async (char) => {
110
110
  if (!onBeforeTypedChar) {
@@ -112,7 +112,7 @@ export const useTypingTask = (options) => {
112
112
  }
113
113
  const { content, index } = char;
114
114
  const allLength = wholeContentRef.current.length;
115
- // 计算之前字符的百分比
115
+ // Calculate percentage of previous characters
116
116
  const percent = (char.index / allLength) * 100;
117
117
  await onBeforeTypedChar({
118
118
  currentIndex: index,
@@ -121,7 +121,7 @@ export const useTypingTask = (options) => {
121
121
  percent,
122
122
  });
123
123
  };
124
- /** 打字完成回调 */
124
+ /** Callback after typing a character */
125
125
  const triggerOnTypedChar = async (char) => {
126
126
  if (!onTypedChar) {
127
127
  return;
@@ -137,14 +137,14 @@ export const useTypingTask = (options) => {
137
137
  percent,
138
138
  });
139
139
  };
140
- /** 清除定时器 */
140
+ /** Clear timer */
141
141
  const clearTimer = () => {
142
- // 清理 requestAnimationFrame
142
+ // Clear requestAnimationFrame
143
143
  if (animationFrameRef.current) {
144
144
  cancelAnimationFrame(animationFrameRef.current);
145
145
  animationFrameRef.current = null;
146
146
  }
147
- // 清理 setTimeout (可能被 timestamp 模式使用)
147
+ // Clear setTimeout (may be used by timestamp mode)
148
148
  if (timerRef.current) {
149
149
  clearTimeout(timerRef.current);
150
150
  timerRef.current = null;
@@ -152,9 +152,9 @@ export const useTypingTask = (options) => {
152
152
  isTypingRef.current = false;
153
153
  typedCharsRef.current = undefined;
154
154
  };
155
- /** 开始打字任务 */
155
+ /** Start typing task */
156
156
  const startTypedTask = () => {
157
- /** 如果手动调用 stop 方法,则不重新开始打字 */
157
+ /** If stop method was called manually, do not restart typing */
158
158
  if (typedIsManualStopRef.current) {
159
159
  return;
160
160
  }
@@ -168,7 +168,7 @@ export const useTypingTask = (options) => {
168
168
  startTimeoutMode();
169
169
  }
170
170
  };
171
- /** 打字机打完所有字符 */
171
+ /** Typewriter finishes typing all characters */
172
172
  async function typingRemainAll() {
173
173
  const chars = getChars();
174
174
  const answerCharsStr = chars.map((char) => char.content).join('');
@@ -188,13 +188,13 @@ export const useTypingTask = (options) => {
188
188
  triggerOnEnd();
189
189
  triggerUpdate();
190
190
  }
191
- /** requestAnimationFrame 模式 */
191
+ /** requestAnimationFrame mode */
192
192
  const startAnimationFrameMode = () => {
193
193
  let lastFrameTime = performance.now();
194
194
  const frameLoop = async (currentTime) => {
195
195
  if (isUnmountRef.current)
196
196
  return;
197
- // 如果关闭打字机效果,则打完所有字符
197
+ // If typing animation is disabled, type all characters at once
198
198
  if (disableTypingRef.current) {
199
199
  await typingRemainAll();
200
200
  return;
@@ -209,7 +209,7 @@ export const useTypingTask = (options) => {
209
209
  let needToTypingCharsLength = Math.max(0, Math.floor(deltaTime / currentInterval));
210
210
  needToTypingCharsLength = Math.min(needToTypingCharsLength, chars.length);
211
211
  if (needToTypingCharsLength > 0) {
212
- // 处理字符
212
+ // Process characters
213
213
  for (let i = 0; i < needToTypingCharsLength; i++) {
214
214
  const char = chars.shift();
215
215
  if (char === undefined)
@@ -218,14 +218,14 @@ export const useTypingTask = (options) => {
218
218
  isTypingRef.current = true;
219
219
  triggerOnStart(char);
220
220
  }
221
- /** 打字前回调 */
221
+ /** Callback before typing */
222
222
  await triggerOnBeforeTypedChar(char);
223
223
  processCharDisplay(char);
224
- /** 打字完成回调 */
224
+ /** Callback after typing */
225
225
  triggerOnTypedChar(char);
226
226
  }
227
227
  lastFrameTime = performance.now();
228
- // 继续下一帧
228
+ // Continue to next frame
229
229
  if (chars.length > 0) {
230
230
  animationFrameRef.current = requestAnimationFrame(frameLoop);
231
231
  }
@@ -235,13 +235,13 @@ export const useTypingTask = (options) => {
235
235
  }
236
236
  }
237
237
  else {
238
- // 本次你不需要打字,继续下一帧
238
+ // No typing needed this frame, continue to next frame
239
239
  animationFrameRef.current = requestAnimationFrame(frameLoop);
240
240
  }
241
241
  };
242
242
  animationFrameRef.current = requestAnimationFrame(frameLoop);
243
243
  };
244
- /** 停止动画帧模式 */
244
+ /** Stop animation frame mode */
245
245
  const stopAnimationFrame = (manual = false) => {
246
246
  isTypingRef.current = false;
247
247
  if (animationFrameRef.current) {
@@ -252,7 +252,7 @@ export const useTypingTask = (options) => {
252
252
  triggerOnEnd({ manual });
253
253
  }
254
254
  };
255
- /** setTimeout 模式 */
255
+ /** setTimeout mode */
256
256
  const startTimeoutMode = () => {
257
257
  const nextTyped = () => {
258
258
  const chars = getChars();
@@ -266,7 +266,7 @@ export const useTypingTask = (options) => {
266
266
  const startTyped = async (isStartPoint = false) => {
267
267
  if (isUnmountRef.current)
268
268
  return;
269
- // 如果关闭打字机效果,则打完所有字符
269
+ // If typing animation is disabled, type all characters at once
270
270
  if (disableTypingRef.current) {
271
271
  typingRemainAll();
272
272
  return;
@@ -281,16 +281,16 @@ export const useTypingTask = (options) => {
281
281
  if (isStartPoint) {
282
282
  triggerOnStart(char);
283
283
  }
284
- /** 打字前回调 */
284
+ /** Callback before typing */
285
285
  await triggerOnBeforeTypedChar(char);
286
286
  processCharDisplay(char);
287
- /** 打字完成回调 */
287
+ /** Callback after typing */
288
288
  triggerOnTypedChar(char);
289
289
  nextTyped();
290
290
  };
291
291
  startTyped(true);
292
292
  };
293
- /** 停止超时模式 */
293
+ /** Stop timeout mode */
294
294
  const stopTimeout = () => {
295
295
  isTypingRef.current = false;
296
296
  if (timerRef.current) {
@@ -307,19 +307,19 @@ export const useTypingTask = (options) => {
307
307
  stopTimeout();
308
308
  }
309
309
  };
310
- /** 暂时停止 */
310
+ /** Temporarily stop */
311
311
  const stopTask = () => {
312
312
  typedIsManualStopRef.current = true;
313
313
  cancelTask();
314
314
  };
315
- /** 停止打字任务 */
315
+ /** Stop typing task */
316
316
  const endTask = () => {
317
317
  cancelTask();
318
318
  };
319
319
  function restartTypedTask() {
320
320
  endTask();
321
321
  typedIsManualStopRef.current = false;
322
- // wholeContentRef的内容放到charsRef
322
+ // Put wholeContentRef content into charsRef
323
323
  charsRef.current.unshift(...wholeContentRef.current.content.split('').map((charUnit) => {
324
324
  const char = {
325
325
  content: charUnit,
@@ -347,6 +347,7 @@ export const useTypingTask = (options) => {
347
347
  clear: clear,
348
348
  isTyping: () => isTypingRef.current,
349
349
  typedIsManualStopRef,
350
+ isTypingRef,
350
351
  };
351
352
  };
352
353
  //# sourceMappingURL=useTypingTask.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTypingTask.js","sourceRoot":"","sources":["../../src/hooks/useTypingTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTypingTask.js","sourceRoot":"","sources":["../../src/hooks/useTypingTask.ts"],"names":[],"mappings":"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"}
package/es/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import MarkdownTyperCMD from './MarkdownTyperCMD/index.js';
2
2
  import MarkdownTyper from './MarkdownTyper/index.js';
3
3
  import type { MarkdownTyperCMDRef, MarkdownTyperRef, ITypedChar, MarkdownTyperProps, MarkdownTyperCMDProps, IntervalType } from './defined.js';
4
+ import { createRehypeCursorPlugin } from './plugins/rehypeCursor.js';
4
5
  export default MarkdownTyper;
5
6
  export type { MarkdownTyperCMDRef, MarkdownTyperRef, ITypedChar, MarkdownTyperProps, MarkdownTyperCMDProps, IntervalType };
6
- export { MarkdownTyper, MarkdownTyperCMD };
7
+ export { MarkdownTyper, MarkdownTyperCMD, createRehypeCursorPlugin };
7
8
  //# sourceMappingURL=index.d.ts.map
package/es/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5I,eAAe,aAAa,CAAC;AAC7B,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,YAAY,EAAE,CAAC;AAC3H,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC5I,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAe,aAAa,CAAC;AAC7B,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,YAAY,EAAE,CAAC;AAC3H,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC"}
package/es/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import MarkdownTyperCMD from './MarkdownTyperCMD/index.js';
2
2
  import MarkdownTyper from './MarkdownTyper/index.js';
3
+ import { createRehypeCursorPlugin } from './plugins/rehypeCursor.js';
3
4
  export default MarkdownTyper;
4
- export { MarkdownTyper, MarkdownTyperCMD };
5
+ export { MarkdownTyper, MarkdownTyperCMD, createRehypeCursorPlugin };
5
6
  //# sourceMappingURL=index.js.map
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAG5C,eAAe,aAAa,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAe,aAAa,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Root } from 'hast';
2
+ /**
3
+ * Create a rehype plugin to replace cursor placeholder with custom cursor
4
+ * @param cursor - The cursor to render (string or ReactNode)
5
+ * @returns Rehype plugin function
6
+ */
7
+ export declare function createRehypeCursorPlugin(cursor: React.ReactNode): () => (tree: Root) => void;
8
+ //# sourceMappingURL=rehypeCursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehypeCursor.d.ts","sourceRoot":"","sources":["../../src/plugins/rehypeCursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAQ,MAAM,MAAM,CAAC;AAGhD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,UAGhD,MAAM,IAAI,UA8CzB"}
@@ -0,0 +1,54 @@
1
+ import { visit } from 'unist-util-visit';
2
+ /**
3
+ * Create a rehype plugin to replace cursor placeholder with custom cursor
4
+ * @param cursor - The cursor to render (string or ReactNode)
5
+ * @returns Rehype plugin function
6
+ */
7
+ export function createRehypeCursorPlugin(cursor) {
8
+ const CURSOR_MARKER = '\u200B__MDTYPER_CURSOR__\u200B';
9
+ return () => (tree) => {
10
+ visit(tree, 'text', (node, index, parent) => {
11
+ // Check if text contains cursor marker
12
+ if (node.value && node.value.includes(CURSOR_MARKER)) {
13
+ if (parent && typeof index === 'number') {
14
+ // Split text by cursor marker
15
+ const parts = node.value.split(CURSOR_MARKER);
16
+ const newChildren = [];
17
+ parts.forEach((part, i) => {
18
+ // Add text before cursor
19
+ if (part) {
20
+ newChildren.push({
21
+ type: 'text',
22
+ value: part,
23
+ });
24
+ }
25
+ // Add cursor between parts (but not after last part)
26
+ if (i < parts.length - 1) {
27
+ if (typeof cursor === 'string') {
28
+ // For string cursor, add as text
29
+ newChildren.push({
30
+ type: 'text',
31
+ value: cursor,
32
+ });
33
+ }
34
+ else {
35
+ // For ReactNode cursor, create placeholder element
36
+ newChildren.push({
37
+ type: 'element',
38
+ tagName: 'span',
39
+ properties: {
40
+ 'data-cursor-placeholder': 'true',
41
+ },
42
+ children: [],
43
+ });
44
+ }
45
+ }
46
+ });
47
+ // Replace the text node with new children
48
+ parent.children.splice(index, 1, ...newChildren);
49
+ }
50
+ }
51
+ });
52
+ };
53
+ }
54
+ //# sourceMappingURL=rehypeCursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehypeCursor.js","sourceRoot":"","sources":["../../src/plugins/rehypeCursor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAuB;IAC9D,MAAM,aAAa,GAAG,gCAAgC,CAAC;IAEvD,OAAO,GAAG,EAAE,CAAC,CAAC,IAAU,EAAE,EAAE;QAC1B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAChD,uCAAuC;YACvC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACrD,IAAI,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACxC,8BAA8B;oBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBAC9C,MAAM,WAAW,GAAuB,EAAE,CAAC;oBAE3C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;wBACxB,yBAAyB;wBACzB,IAAI,IAAI,EAAE,CAAC;4BACT,WAAW,CAAC,IAAI,CAAC;gCACf,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,IAAI;6BACZ,CAAC,CAAC;wBACL,CAAC;wBAED,qDAAqD;wBACrD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACzB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gCAC/B,iCAAiC;gCACjC,WAAW,CAAC,IAAI,CAAC;oCACf,IAAI,EAAE,MAAM;oCACZ,KAAK,EAAE,MAAM;iCACd,CAAC,CAAC;4BACL,CAAC;iCAAM,CAAC;gCACN,mDAAmD;gCACnD,WAAW,CAAC,IAAI,CAAC;oCACf,IAAI,EAAE,SAAS;oCACf,OAAO,EAAE,MAAM;oCACf,UAAU,EAAE;wCACV,yBAAyB,EAAE,MAAM;qCAClC;oCACD,QAAQ,EAAE,EAAE;iCACF,CAAC,CAAC;4BAChB,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,0CAA0C;oBAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-markdown-typer",
3
3
  "private": false,
4
- "version": "1.0.3",
4
+ "version": "1.0.4-beta.0",
5
5
  "main": "./es/index.js",
6
6
  "type": "module",
7
7
  "license": "MIT",
@@ -115,6 +115,6 @@
115
115
  "react-markdown"
116
116
  ],
117
117
  "publishConfig": {
118
- "tag": "latest"
118
+ "tag": "beta"
119
119
  }
120
120
  }