ds-markdown 1.0.3 → 1.0.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +7 -5
  2. package/README.zh.md +5 -3
  3. package/es/AutoScroll/index.d.ts.map +1 -1
  4. package/es/AutoScroll/index.js +2 -3
  5. package/es/AutoScroll/index.js.map +1 -1
  6. package/es/Markdown/index.js +2 -2
  7. package/es/Markdown/index.js.map +1 -1
  8. package/es/MarkdownCMD/index.d.ts +1 -0
  9. package/es/MarkdownCMD/index.d.ts.map +1 -1
  10. package/es/MarkdownCMD/index.js +32 -8
  11. package/es/MarkdownCMD/index.js.map +1 -1
  12. package/es/components/CodeComponent/BlockWrap/index.js +1 -1
  13. package/es/components/CodeComponent/BlockWrap/index.js.map +1 -1
  14. package/es/components/CodeComponent/CodeBlockActions/index.d.ts +2 -2
  15. package/es/components/CodeComponent/CodeBlockActions/index.d.ts.map +1 -1
  16. package/es/components/CodeComponent/CodeBlockActions/index.js +5 -2
  17. package/es/components/CodeComponent/CodeBlockActions/index.js.map +1 -1
  18. package/es/components/CodeComponent/HighlightCode/index.d.ts +3 -2
  19. package/es/components/CodeComponent/HighlightCode/index.d.ts.map +1 -1
  20. package/es/components/CodeComponent/HighlightCode/index.js +8 -4
  21. package/es/components/CodeComponent/HighlightCode/index.js.map +1 -1
  22. package/es/components/CodeComponent/index.d.ts +3 -3
  23. package/es/components/CodeComponent/index.d.ts.map +1 -1
  24. package/es/components/CodeComponent/index.js +64 -5
  25. package/es/components/CodeComponent/index.js.map +1 -1
  26. package/es/components/CopyButton/index.d.ts +2 -2
  27. package/es/components/CopyButton/index.d.ts.map +1 -1
  28. package/es/components/CopyButton/index.js +7 -4
  29. package/es/components/CopyButton/index.js.map +1 -1
  30. package/es/components/DownloadButton/index.d.ts +2 -2
  31. package/es/components/DownloadButton/index.d.ts.map +1 -1
  32. package/es/components/DownloadButton/index.js +61 -50
  33. package/es/components/DownloadButton/index.js.map +1 -1
  34. package/es/components/Icon/index.js +3 -3
  35. package/es/components/Icon/index.js.map +1 -1
  36. package/es/components/ui/SuccessButton/index.d.ts.map +1 -1
  37. package/es/components/ui/SuccessButton/index.js +16 -13
  38. package/es/components/ui/SuccessButton/index.js.map +1 -1
  39. package/es/constant.d.ts +2 -2
  40. package/es/constant.d.ts.map +1 -1
  41. package/es/constant.js +2 -2
  42. package/es/constant.js.map +1 -1
  43. package/es/context/ConfigProvider/index.js +2 -2
  44. package/es/context/ConfigProvider/index.js.map +1 -1
  45. package/es/context/MarkdownProvider.d.ts.map +1 -1
  46. package/es/context/MarkdownProvider.js +3 -3
  47. package/es/context/MarkdownProvider.js.map +1 -1
  48. package/es/context/MarkdownThemeProvider.js +1 -1
  49. package/es/context/MarkdownThemeProvider.js.map +1 -1
  50. package/es/defined/index.d.ts +18 -17
  51. package/es/defined/index.d.ts.map +1 -1
  52. package/es/i18n/en/index.js +1 -1
  53. package/es/i18n/en/index.js.map +1 -1
  54. package/es/i18n/index.js +3 -3
  55. package/es/i18n/index.js.map +1 -1
  56. package/es/i18n/zh/index.js +1 -1
  57. package/es/i18n/zh/index.js.map +1 -1
  58. package/es/index.css +44 -0
  59. package/es/index.js +1 -1
  60. package/es/index.js.map +1 -1
  61. package/es/utils/remarkMathBracket.d.ts +10 -10
  62. package/es/utils/remarkMathBracket.js +14 -14
  63. package/es/utils/remarkMathBracket.js.map +1 -1
  64. package/package.json +4 -4
  65. package/es/utils/Tokenizer.d.ts +0 -48
  66. package/es/utils/Tokenizer.d.ts.map +0 -1
  67. package/es/utils/Tokenizer.js +0 -191
  68. package/es/utils/Tokenizer.js.map +0 -1
  69. package/es/utils/compiler.d.ts +0 -5
  70. package/es/utils/compiler.d.ts.map +0 -1
  71. package/es/utils/compiler.js +0 -62
  72. package/es/utils/compiler.js.map +0 -1
  73. package/es/utils/rule.d.ts +0 -26
  74. package/es/utils/rule.d.ts.map +0 -1
  75. package/es/utils/rule.js +0 -69
  76. package/es/utils/rule.js.map +0 -1
package/README.md CHANGED
@@ -34,6 +34,8 @@ A React component designed specifically for modern AI applications, providing sm
34
34
  - **Out-of-the-box, Reduces Development Complexity**
35
35
  Complete solution that requires no additional configuration to support streaming data, Markdown rendering, mathematical formulas, charts, and other complex features.
36
36
 
37
+ > _If you don't need any styles and want full control over rendering, we recommend using [react-markdown-typer](https://github.com/onshinpei/react-markdown-typer)_
38
+
37
39
  ## Documentation
38
40
 
39
41
  **👉 [Full Documentation](https://onshinpei.github.io/ds-markdown/)**
@@ -43,12 +45,12 @@ A React component designed specifically for modern AI applications, providing sm
43
45
  - [Live Examples](https://onshinpei.github.io/ds-markdown/#examples)
44
46
  - [Try it Now](https://onshinpei.github.io/ds-markdown/#try)
45
47
 
46
- ## stackblitz Examples
48
+ ## Stackblitz Examples
47
49
 
48
- - [Basic Usage](https://stackblitz.com/~/github.com/onshinpei/ds-markdown-base-en?file=src/App.tsx)
49
- - [Streaming Data Usage](https://stackblitz.com/edit/vitejs-vite-2ri8kex3?file=src%2FApp.tsx)
50
- - [Mermaid Charts](https://stackblitz.com/edit/vitejs-vite-iqbyta3j?file=index.html)
51
- - [Math Formulas Demo 1](https://stackblitz.com/edit/vitejs-vite-iqbyta3j?file=index.html)
50
+ - [Basic Usage](https://stackblitz.com/edit/vitejs-vite-61cs2kga?file=src%2FApp.tsx)
51
+ - [Streaming Data Usage](https://stackblitz.com/edit/vitejs-vite-lwyevhp6?file=src%2FApp.tsx)
52
+ - [Mermaid Charts](https://stackblitz.com/edit/vitejs-vite-6gxhttps?file=src%2FApp.tsx)
53
+ - [Math Formulas Demo 1](https://stackblitz.com/edit/vitejs-vite-zncjktys?file=src%2FApp.tsx)
52
54
  - [Math Formulas Demo 2](https://stackblitz.com/edit/vitejs-vite-xk9lxagc?file=src%2FApp.tsx)
53
55
 
54
56
  ## Key Features
package/README.zh.md CHANGED
@@ -34,6 +34,8 @@
34
34
  - **开箱即用,降低开发复杂度**
35
35
  完整的解决方案,无需额外配置即可支持流式数据、Markdown 渲染、数学公式、图表等复杂功能。
36
36
 
37
+ > _如果您不需要任何样式,自己处理所有产物的渲染,推荐您使用 [react-markdown-typer](https://github.com/onshinpei/react-markdown-typer)_
38
+
37
39
  ## 文档
38
40
 
39
41
  **👉 [完整文档](https://onshinpei.github.io/ds-markdown/)**
@@ -43,12 +45,12 @@
43
45
  - [在线示例](https://onshinpei.github.io/ds-markdown/#examples)
44
46
  - [马上试试](https://onshinpei.github.io/ds-markdown/#try)
45
47
 
46
- ## stackblitz 示例
48
+ ## Stackblitz 示例
47
49
 
48
50
  - [基本用法](https://stackblitz.com/edit/vitejs-vite-ddfw8avb?file=src%2FApp.tsx)
49
51
  - [流式数据用法](https://stackblitz.com/edit/vitejs-vite-2ri8kex3?file=src%2FApp.tsx)
50
- - [mermaid图表](https://stackblitz.com/edit/vitejs-vite-iqbyta3j?file=index.html)
51
- - [数学公式demo1](https://stackblitz.com/edit/vitejs-vite-iqbyta3j?file=index.html)
52
+ - [mermaid图表](https://stackblitz.com/edit/vitejs-vite-iqbyta3j?file=src%2FApp.tsx)
53
+ - [数学公式demo1](https://stackblitz.com/edit/vitejs-vite-z94syu8j?file=src%2FApp.tsx)
52
54
  - [数学公式demo2](https://stackblitz.com/edit/vitejs-vite-xk9lxagc?file=src%2FApp.tsx)
53
55
 
54
56
  ## 核心特性
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/AutoScroll/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,eAAe;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAGD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAEzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/AutoScroll/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,eAAe;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAEzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,7 +1,6 @@
1
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 });
2
+ const AutoScroll = ({ children }) => {
3
+ return _jsx("div", { className: "ds-markdown_auto_scroll", children: children });
5
4
  };
6
5
  export default AutoScroll;
7
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/AutoScroll/index.tsx"],"names":[],"mappings":";AAMA,MAAM,UAAU,GAA8B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7D,OAAO,cAAK,SAAS,EAAC,yBAAyB,YAAE,QAAQ,GAAO,CAAC;AACnE,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -49,7 +49,7 @@ const MarkdownInner = ({ children: _children = '', answerType = 'answer', markdo
49
49
  cmdRef.current.restart();
50
50
  },
51
51
  }));
52
- // props 中获取 interval,如果没有则使用默认值 30
52
+ // Get interval from props, use default value 30 if not provided
53
53
  const interval = 'interval' in rest ? rest.interval : 30;
54
54
  return _jsx(MarkdownCMD, { ref: cmdRef, ...rest, interval: interval, answerType: answerType, timerType: timerType, isInnerRender: true });
55
55
  };
@@ -64,7 +64,7 @@ const Markdown = forwardRef((props, ref) => {
64
64
  }
65
65
  }
66
66
  const contextValue = useMemo(() => ({ ...reset, answerType }), [reset, answerType]);
67
- // 分离主题相关的 props
67
+ // Separate theme-related props
68
68
  const themeProps = useMemo(() => ({
69
69
  theme: props.theme || DEFAULT_THEME,
70
70
  math: props.math,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Markdown/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Markdown/index.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ interface IMarkdownCustom {
7
7
  plugins?: IMarkdownPlugin[];
8
8
  math?: IMarkdownMath;
9
9
  isInnerRender?: boolean;
10
+ cursor?: React.ReactNode | string | 'circle' | 'block' | 'underline' | 'line';
10
11
  }
11
12
  declare const MarkdownCMD: import("react").ForwardRefExoticComponent<MarkdownTyperCMDProps & IMarkdownCustom & import("react").RefAttributes<MarkdownCMDRef>>;
12
13
  export default MarkdownCMD;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE9G,OAAO,EAAyC,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAOpG,UAAU,eAAe;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAoHD,QAAA,MAAM,WAAW,oIAsCf,CAAC;AAEH,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE9G,OAAO,EAAyC,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAOpG,UAAU,eAAe;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;CAC/E;AA0JD,QAAA,MAAM,WAAW,oIAsCf,CAAC;AAEH,eAAe,WAAW,CAAC"}
@@ -10,11 +10,19 @@ import { MarkdownProvider } from '../context/MarkdownProvider.js';
10
10
  import { useConfig } from '../context/ConfigProvider/index.js';
11
11
  import { replaceMathBracket } from '../utils/remarkMathBracket.js';
12
12
  import CodeComponent from '../components/CodeComponent/index.js';
13
- const MarkdownCMDInner = forwardRef(({ answerType = 'answer', timerType = 'requestAnimationFrame', ...rest }, ref) => {
13
+ // Cursor factory function to create cursor elements
14
+ const createCursor = (className) => () => _jsx("span", { className: className });
15
+ const cursorFactories = {
16
+ circle: createCursor('ds-markdown-cursor-circle'),
17
+ block: createCursor('ds-markdown-cursor-block'),
18
+ underline: createCursor('ds-markdown-cursor-underline'),
19
+ line: createCursor('ds-markdown-cursor-line'),
20
+ };
21
+ const MarkdownCMDInner = forwardRef(({ answerType = 'answer', timerType = 'requestAnimationFrame', cursor, showCursor, ...rest }, ref) => {
14
22
  var _a, _b;
15
23
  const { state: themeState } = useMarkdownThemeContext();
16
24
  const cmdRef = useRef(null);
17
- // context 中获取主题配置
25
+ // Get theme config from context
18
26
  const currentTheme = themeState.theme;
19
27
  useImperativeHandle(ref, () => ({
20
28
  push: cmdRef.current.push,
@@ -26,7 +34,7 @@ const MarkdownCMDInner = forwardRef(({ answerType = 'answer', timerType = 'reque
26
34
  restart: cmdRef.current.restart,
27
35
  }));
28
36
  const { katexConfig } = useConfig();
29
- // context 中获取主题配置
37
+ // Get theme config from context
30
38
  const currentMath = themeState.math;
31
39
  const currentPlugins = themeState.plugins;
32
40
  const mathSplitSymbol = (_a = currentMath === null || currentMath === void 0 ? void 0 : currentMath.splitSymbol) !== null && _a !== void 0 ? _a : 'dollar';
@@ -68,22 +76,38 @@ const MarkdownCMDInner = forwardRef(({ answerType = 'answer', timerType = 'reque
68
76
  };
69
77
  }, [currentPlugins, katexConfig]);
70
78
  const customConvertMarkdownString = useCallback((markdownString) => {
71
- /** 如果存在数学公式插件,并且数学公式分隔符为括号,则替换成 $ 符号 */
79
+ /** If math plugin exists and math delimiter is bracket, replace with $ symbol */
72
80
  if (hasKatexPlugin && mathSplitSymbol === 'bracket') {
73
81
  return finalReplaceMathBracket(markdownString);
74
82
  }
75
83
  return markdownString;
76
84
  }, [finalReplaceMathBracket, hasKatexPlugin, mathSplitSymbol]);
85
+ // Handle cursor prop: support string types or ReactNode
86
+ const _cursor = useMemo(() => {
87
+ if (!showCursor) {
88
+ return cursor;
89
+ }
90
+ // If cursor is not provided, use default 'line' style
91
+ if (!cursor) {
92
+ return cursorFactories.line();
93
+ }
94
+ // If cursor is a string type, get from cursorFactories and create new instance
95
+ if (typeof cursor === 'string' && cursor in cursorFactories) {
96
+ return cursorFactories[cursor]();
97
+ }
98
+ // Otherwise, use the provided cursor (ReactNode or string)
99
+ return cursor;
100
+ }, [cursor, showCursor]);
77
101
  return (_jsx("div", { className: classNames({
78
102
  'ds-markdown': true,
79
103
  apple: true,
80
104
  'ds-markdown-dark': currentTheme === 'dark',
81
- }), children: _jsx("div", { className: `ds-markdown-${answerType}`, children: _jsx(MarkdownTyperCMD, { ref: cmdRef, timerType: timerType, customConvertMarkdownString: customConvertMarkdownString, ...rest, reactMarkdownProps: {
105
+ }), children: _jsx("div", { className: `ds-markdown-${answerType}`, children: _jsx(MarkdownTyperCMD, { ref: cmdRef, timerType: timerType, customConvertMarkdownString: customConvertMarkdownString, showCursor: showCursor, cursor: _cursor, ...rest, reactMarkdownProps: {
82
106
  remarkPlugins,
83
107
  rehypePlugins,
84
108
  components: {
85
109
  code: CodeComponent,
86
- table: ({ children, ...props }) => {
110
+ table: ({ children }) => {
87
111
  return (_jsx("div", { className: "markdown-table-wrapper", children: _jsx("table", { className: "ds-markdown-table", children: children }) }));
88
112
  },
89
113
  ...components,
@@ -104,7 +128,7 @@ const MarkdownCMD = forwardRef((props, ref) => {
104
128
  }
105
129
  }
106
130
  const contextValue = useMemo(() => ({ ...reset, answerType }), [reset, answerType]);
107
- // 分离主题相关的 props
131
+ // Separate theme-related props
108
132
  const themeProps = useMemo(() => ({
109
133
  theme: props.theme || DEFAULT_THEME,
110
134
  math: props.math,
@@ -113,7 +137,7 @@ const MarkdownCMD = forwardRef((props, ref) => {
113
137
  answerType: props.answerType || DEFAULT_ANSWER_TYPE,
114
138
  }), [props.theme, props.math, props.codeBlock, props.plugins, props.answerType]);
115
139
  if (isInnerRender) {
116
- // 内部渲染,外层已经 context 传递了 props,这里不再重复传递
140
+ // Inner render, outer layer has already passed props via context, no need to pass again here
117
141
  return _jsx(MarkdownCMDInner, { ...props, ref: ref });
118
142
  }
119
143
  return (_jsx(MarkdownProvider, { value: contextValue, children: _jsx(MarkdownThemeProvider, { value: themeProps, children: _jsx(MarkdownCMDInner, { ...props, ref: ref }) }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/MarkdownCMD/index.tsx"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import CodeBlockActions from '../CodeBlockActions/index.js';
5
5
  import './index.css';
6
6
  const BlockWrap = ({ children, language, codeContent }) => {
7
7
  const { state: themeState } = useMarkdownThemeContext();
8
- // context 中获取主题配置
8
+ // Get theme config from context
9
9
  const currentCodeBlock = themeState.codeBlock;
10
10
  const { headerActions = true } = currentCodeBlock || {};
11
11
  const renderHeaderActions = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/CodeComponent/BlockWrap/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AAEnD,OAAO,cAAc,CAAC;AAQtB,MAAM,SAAS,GAA6B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE;IAClF,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAExD,oBAAoB;IACpB,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC;IAC9C,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,gBAAgB,IAAI,EAAE,CAAC;IACxD,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,KAAC,gBAAgB,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;QAC5E,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EACH,8BACE,cAAK,SAAS,EAAC,wBAAwB,YAAE,QAAQ,GAAO,EACvD,mBAAmB,EAAE,IACrB,YAGJ,QAAQ,GACK,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/CodeComponent/BlockWrap/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AAEnD,OAAO,cAAc,CAAC;AAQtB,MAAM,SAAS,GAA6B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE;IAClF,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAExD,gCAAgC;IAChC,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC;IAC9C,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,gBAAgB,IAAI,EAAE,CAAC;IACxD,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,KAAC,gBAAgB,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;QAC5E,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EACH,8BACE,cAAK,SAAS,EAAC,wBAAwB,YAAE,QAAQ,GAAO,EACvD,mBAAmB,EAAE,IACrB,YAGJ,QAAQ,GACK,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -3,6 +3,6 @@ interface CodeBlockActionsProps {
3
3
  codeContent?: string;
4
4
  language: string;
5
5
  }
6
- declare const CodeBlockActions: React.FC<CodeBlockActionsProps>;
7
- export default CodeBlockActions;
6
+ declare const _default: React.NamedExoticComponent<CodeBlockActionsProps>;
7
+ export default _default;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/CodeComponent/CodeBlockActions/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAOrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/CodeComponent/CodeBlockActions/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAOpC,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;;AAWD,wBAAsC"}
@@ -1,8 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { memo } from 'react';
2
3
  import CopyButton from '../../CopyButton/index.js';
3
4
  import DownloadButton from '../../DownloadButton/index.js';
5
+ // Extract style constant to avoid creating new object on each render
6
+ const ACTION_BUTTON_STYLE = { fontSize: 13, padding: '0 4px' };
4
7
  const CodeBlockActions = ({ codeContent, language }) => {
5
- return (_jsxs("div", { className: "md-code-block-header-actions", children: [_jsx(CopyButton, { codeContent: codeContent, style: { fontSize: 13, padding: '0 4px' } }), _jsx(DownloadButton, { codeContent: codeContent, language: language, style: { fontSize: 13, padding: '0 4px' } })] }));
8
+ return (_jsxs("div", { className: "md-code-block-header-actions", children: [_jsx(CopyButton, { codeContent: codeContent, style: ACTION_BUTTON_STYLE }), _jsx(DownloadButton, { codeContent: codeContent, language: language, style: ACTION_BUTTON_STYLE })] }));
6
9
  };
7
- export default CodeBlockActions;
10
+ export default memo(CodeBlockActions);
8
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/CodeComponent/CodeBlockActions/index.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAOlD,MAAM,gBAAgB,GAAoC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtF,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,UAAU,IAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAI,EACnF,KAAC,cAAc,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAI,IACvG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/CodeComponent/CodeBlockActions/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAElD,qEAAqE;AACrE,MAAM,mBAAmB,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAO/D,MAAM,gBAAgB,GAAoC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtF,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,UAAU,IAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,GAAI,EACpE,KAAC,cAAc,IAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,GAAI,IACxF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC,gBAAgB,CAAC,CAAC"}
@@ -2,7 +2,8 @@ import React from 'react';
2
2
  interface HighlightCodeProps {
3
3
  code: string;
4
4
  language: string;
5
+ cursorPlaceholder?: React.ReactElement | null;
5
6
  }
6
- declare const HighlightCode: React.FC<HighlightCodeProps>;
7
- export default HighlightCode;
7
+ declare const _default: React.NamedExoticComponent<HighlightCodeProps>;
8
+ export default _default;
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/CodeComponent/HighlightCode/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAM/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/CodeComponent/HighlightCode/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAMpC,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;CAC/C;;AAsBD,wBAAmC"}
@@ -1,7 +1,11 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo } from 'react';
2
3
  import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
3
- const HighlightCode = ({ code, language }) => {
4
- return (_jsx(SyntaxHighlighter, { useInlineStyles: false, language: language, style: {}, children: code }));
4
+ // Extract empty style object as constant to avoid creating new object on each render
5
+ const EMPTY_STYLE = {};
6
+ const HighlightCode = ({ code, language, cursorPlaceholder }) => {
7
+ console.log('code', code);
8
+ return (_jsx(SyntaxHighlighter, { useInlineStyles: false, language: language, style: EMPTY_STYLE, CodeTag: ({ children, ...props }) => (_jsxs("code", { ...props, children: [children, cursorPlaceholder && cursorPlaceholder] })), children: code }));
5
9
  };
6
- export default HighlightCode;
10
+ export default memo(HighlightCode);
7
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/CodeComponent/HighlightCode/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAOtE,MAAM,aAAa,GAAiC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzE,OAAO,CACL,KAAC,iBAAiB,IAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,YACrE,IAAI,GACa,CACrB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/CodeComponent/HighlightCode/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,qFAAqF;AACrF,MAAM,WAAW,GAAG,EAAE,CAAC;AAQvB,MAAM,aAAa,GAAiC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,EAAE;IAC5F,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,CACL,KAAC,iBAAiB,IAChB,eAAe,EAAE,KAAK,EACtB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CACnC,mBAAU,KAAK,aACZ,QAAQ,EAER,iBAAiB,IAAI,iBAAiB,IAClC,CACR,YAEA,IAAI,GACa,CACrB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC,aAAa,CAAC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import './index.css';
3
- declare const CodeComponent: React.FC<{
3
+ declare const _default: React.NamedExoticComponent<{
4
4
  className: string;
5
- children: string;
5
+ children: React.ReactNode;
6
6
  }>;
7
- export default CodeComponent;
7
+ export default _default;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CodeComponent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,cAAc,CAAC;AAEtB,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAUpE,CAAC;AACF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CodeComponent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAI7C,OAAO,cAAc,CAAC;;eA2DqB,MAAM;cAAY,KAAK,CAAC,SAAS;;AA6B5E,wBAAmC"}
@@ -1,11 +1,70 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { memo, useMemo } from 'react';
2
3
  import BlockWrap from './BlockWrap/index.js';
3
4
  import HighlightCode from './HighlightCode/index.js';
4
5
  import './index.css';
6
+ // Extract regex to avoid recompilation on each render
7
+ const LANGUAGE_REGEX = /language-(\w+)/;
8
+ // Helper function to extract string content from children, filtering out React elements
9
+ const extractStringContent = (children) => {
10
+ if (typeof children === 'string') {
11
+ return children;
12
+ }
13
+ if (typeof children === 'number') {
14
+ return String(children);
15
+ }
16
+ if (Array.isArray(children)) {
17
+ return children
18
+ .map(child => extractStringContent(child))
19
+ .join('');
20
+ }
21
+ // If it's a React element (like cursor), return empty string
22
+ if (React.isValidElement(children)) {
23
+ return '';
24
+ }
25
+ // Fallback to string conversion
26
+ return String(children || '');
27
+ };
28
+ // Helper function to check if element is a cursor placeholder from react-markdown-typer
29
+ const isCursorPlaceholder = (element) => {
30
+ const props = element.props;
31
+ return (props === null || props === void 0 ? void 0 : props['data-cursor-placeholder']) === 'true';
32
+ };
33
+ // Helper function to extract cursor placeholder from children
34
+ const extractCursorPlaceholder = (children) => {
35
+ if (React.isValidElement(children)) {
36
+ // Check if it's a cursor placeholder from react-markdown-typer
37
+ if (isCursorPlaceholder(children)) {
38
+ return children;
39
+ }
40
+ return null;
41
+ }
42
+ if (Array.isArray(children)) {
43
+ // Find the first cursor placeholder in the array
44
+ for (const child of children) {
45
+ const cursor = extractCursorPlaceholder(child);
46
+ if (cursor) {
47
+ return cursor;
48
+ }
49
+ }
50
+ }
51
+ return null;
52
+ };
5
53
  const CodeComponent = ({ className, children = '' }) => {
6
- const match = /language-(\w+)/.exec(className || '');
7
- const codeContent = String(children).replace(/\n$/, '');
8
- return match ? (_jsx(BlockWrap, { language: match[1], codeContent: codeContent, children: _jsx(HighlightCode, { code: codeContent, language: match[1] }) })) : (_jsx("code", { className: className, children: children }));
54
+ const match = useMemo(() => LANGUAGE_REGEX.exec(className || ''), [className]);
55
+ const codeContent = useMemo(() => extractStringContent(children).replace(/\n$/, ''), [children]);
56
+ const cursorPlaceholder = useMemo(() => extractCursorPlaceholder(children), [children]);
57
+ // For inline code, also filter out React elements (like cursor) to avoid "object Object" issue
58
+ const inlineCodeContent = useMemo(() => {
59
+ if (typeof children === 'string') {
60
+ return children;
61
+ }
62
+ return extractStringContent(children);
63
+ }, [children]);
64
+ if (match) {
65
+ return (_jsx(BlockWrap, { language: match[1], codeContent: codeContent, children: _jsx(HighlightCode, { code: codeContent, language: match[1], cursorPlaceholder: cursorPlaceholder }) }));
66
+ }
67
+ return (_jsxs("code", { className: className, children: [inlineCodeContent, cursorPlaceholder && cursorPlaceholder] }));
9
68
  };
10
- export default CodeComponent;
69
+ export default memo(CodeComponent);
11
70
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CodeComponent/index.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,cAAc,CAAC;AAEtB,MAAM,aAAa,GAAsD,CAAC,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE,EAAE;IACxG,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,KAAC,SAAS,IAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,YACrD,KAAC,aAAa,IAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,GAAI,GAC9C,CACb,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAQ,CAC9C,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CodeComponent/index.tsx"],"names":[],"mappings":"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"}
@@ -4,6 +4,6 @@ interface CopyButtonProps {
4
4
  style?: React.CSSProperties;
5
5
  className?: string;
6
6
  }
7
- declare const CopyButton: React.FC<CopyButtonProps>;
8
- export default CopyButton;
7
+ declare const _default: React.NamedExoticComponent<CopyButtonProps>;
8
+ export default _default;
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CopyButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAKzC,UAAU,eAAe;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqBzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CopyButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAKjD,UAAU,eAAe;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;AA4BD,wBAAgC"}
@@ -1,24 +1,27 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo, useCallback } from 'react';
2
3
  import { CopyIcon } from '../Icon/index.js';
3
4
  import { useConfig } from '../../context/ConfigProvider/index.js';
4
5
  import SuccessButton from '../ui/SuccessButton/index.js';
5
6
  const CopyButton = ({ codeContent, style, className }) => {
6
7
  const { locale } = useConfig();
7
- const handleCopy = async () => {
8
+ const handleCopy = useCallback(async () => {
8
9
  try {
9
10
  await navigator.clipboard.writeText(codeContent || '');
10
11
  return true;
11
12
  }
12
13
  catch (err) {
13
- // 降级方案:使用传统方法
14
+ // Fallback: use traditional method
14
15
  const textArea = document.createElement('textarea');
15
16
  textArea.value = codeContent || '';
17
+ document.body.appendChild(textArea);
16
18
  textArea.select();
17
19
  document.execCommand('copy');
20
+ document.body.removeChild(textArea);
18
21
  return true;
19
22
  }
20
- };
23
+ }, [codeContent]);
21
24
  return (_jsx(SuccessButton, { onClick: handleCopy, icon: _jsx(CopyIcon, { size: 24 }), executeText: locale.codeBlock.copied || 'copied', style: style, className: className, children: locale.codeBlock.copy || 'copy' }));
22
25
  };
23
- export default CopyButton;
26
+ export default memo(CopyButton);
24
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CopyButton/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAQhD,MAAM,UAAU,GAA8B,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;IAClF,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc;YACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACpD,QAAQ,CAAC,KAAK,GAAG,WAAW,IAAI,EAAE,CAAC;YACnC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,aAAa,IAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,YACnJ,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,GAClB,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CopyButton/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAQhD,MAAM,UAAU,GAA8B,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;IAClF,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mCAAmC;YACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACpD,QAAQ,CAAC,KAAK,GAAG,WAAW,IAAI,EAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACpC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACL,KAAC,aAAa,IAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,YACnJ,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,GAClB,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC,UAAU,CAAC,CAAC"}
@@ -5,6 +5,6 @@ interface DownloadButtonProps {
5
5
  style?: React.CSSProperties;
6
6
  className?: string;
7
7
  }
8
- declare const DownloadButton: React.FC<DownloadButtonProps>;
9
- export default DownloadButton;
8
+ declare const _default: React.NamedExoticComponent<DownloadButtonProps>;
9
+ export default _default;
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DownloadButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,mBAAmB;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA6DjD,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DownloadButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AA0CjD,UAAU,mBAAmB;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;AAwCD,wBAAoC"}