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.
- package/README.md +7 -5
- package/README.zh.md +5 -3
- package/es/AutoScroll/index.d.ts.map +1 -1
- package/es/AutoScroll/index.js +2 -3
- package/es/AutoScroll/index.js.map +1 -1
- package/es/Markdown/index.js +2 -2
- package/es/Markdown/index.js.map +1 -1
- package/es/MarkdownCMD/index.d.ts +1 -0
- package/es/MarkdownCMD/index.d.ts.map +1 -1
- package/es/MarkdownCMD/index.js +32 -8
- package/es/MarkdownCMD/index.js.map +1 -1
- package/es/components/CodeComponent/BlockWrap/index.js +1 -1
- package/es/components/CodeComponent/BlockWrap/index.js.map +1 -1
- package/es/components/CodeComponent/CodeBlockActions/index.d.ts +2 -2
- package/es/components/CodeComponent/CodeBlockActions/index.d.ts.map +1 -1
- package/es/components/CodeComponent/CodeBlockActions/index.js +5 -2
- package/es/components/CodeComponent/CodeBlockActions/index.js.map +1 -1
- package/es/components/CodeComponent/HighlightCode/index.d.ts +3 -2
- package/es/components/CodeComponent/HighlightCode/index.d.ts.map +1 -1
- package/es/components/CodeComponent/HighlightCode/index.js +8 -4
- package/es/components/CodeComponent/HighlightCode/index.js.map +1 -1
- package/es/components/CodeComponent/index.d.ts +3 -3
- package/es/components/CodeComponent/index.d.ts.map +1 -1
- package/es/components/CodeComponent/index.js +64 -5
- package/es/components/CodeComponent/index.js.map +1 -1
- package/es/components/CopyButton/index.d.ts +2 -2
- package/es/components/CopyButton/index.d.ts.map +1 -1
- package/es/components/CopyButton/index.js +7 -4
- package/es/components/CopyButton/index.js.map +1 -1
- package/es/components/DownloadButton/index.d.ts +2 -2
- package/es/components/DownloadButton/index.d.ts.map +1 -1
- package/es/components/DownloadButton/index.js +61 -50
- package/es/components/DownloadButton/index.js.map +1 -1
- package/es/components/Icon/index.js +3 -3
- package/es/components/Icon/index.js.map +1 -1
- package/es/components/ui/SuccessButton/index.d.ts.map +1 -1
- package/es/components/ui/SuccessButton/index.js +16 -13
- package/es/components/ui/SuccessButton/index.js.map +1 -1
- package/es/constant.d.ts +2 -2
- package/es/constant.d.ts.map +1 -1
- package/es/constant.js +2 -2
- package/es/constant.js.map +1 -1
- package/es/context/ConfigProvider/index.js +2 -2
- package/es/context/ConfigProvider/index.js.map +1 -1
- package/es/context/MarkdownProvider.d.ts.map +1 -1
- package/es/context/MarkdownProvider.js +3 -3
- package/es/context/MarkdownProvider.js.map +1 -1
- package/es/context/MarkdownThemeProvider.js +1 -1
- package/es/context/MarkdownThemeProvider.js.map +1 -1
- package/es/defined/index.d.ts +18 -17
- package/es/defined/index.d.ts.map +1 -1
- package/es/i18n/en/index.js +1 -1
- package/es/i18n/en/index.js.map +1 -1
- package/es/i18n/index.js +3 -3
- package/es/i18n/index.js.map +1 -1
- package/es/i18n/zh/index.js +1 -1
- package/es/i18n/zh/index.js.map +1 -1
- package/es/index.css +44 -0
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/utils/remarkMathBracket.d.ts +10 -10
- package/es/utils/remarkMathBracket.js +14 -14
- package/es/utils/remarkMathBracket.js.map +1 -1
- package/package.json +4 -4
- package/es/utils/Tokenizer.d.ts +0 -48
- package/es/utils/Tokenizer.d.ts.map +0 -1
- package/es/utils/Tokenizer.js +0 -191
- package/es/utils/Tokenizer.js.map +0 -1
- package/es/utils/compiler.d.ts +0 -5
- package/es/utils/compiler.d.ts.map +0 -1
- package/es/utils/compiler.js +0 -62
- package/es/utils/compiler.js.map +0 -1
- package/es/utils/rule.d.ts +0 -26
- package/es/utils/rule.d.ts.map +0 -1
- package/es/utils/rule.js +0 -69
- 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
|
-
##
|
|
48
|
+
## Stackblitz Examples
|
|
47
49
|
|
|
48
|
-
- [Basic Usage](https://stackblitz.com
|
|
49
|
-
- [Streaming Data Usage](https://stackblitz.com/edit/vitejs-vite-
|
|
50
|
-
- [Mermaid Charts](https://stackblitz.com/edit/vitejs-vite-
|
|
51
|
-
- [Math Formulas Demo 1](https://stackblitz.com/edit/vitejs-vite-
|
|
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
|
-
##
|
|
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=
|
|
51
|
-
- [数学公式demo1](https://stackblitz.com/edit/vitejs-vite-
|
|
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;
|
|
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"}
|
package/es/AutoScroll/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
const
|
|
3
|
-
|
|
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,
|
|
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"}
|
package/es/Markdown/index.js
CHANGED
|
@@ -49,7 +49,7 @@ const MarkdownInner = ({ children: _children = '', answerType = 'answer', markdo
|
|
|
49
49
|
cmdRef.current.restart();
|
|
50
50
|
},
|
|
51
51
|
}));
|
|
52
|
-
//
|
|
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
|
-
//
|
|
67
|
+
// Separate theme-related props
|
|
68
68
|
const themeProps = useMemo(() => ({
|
|
69
69
|
theme: props.theme || DEFAULT_THEME,
|
|
70
70
|
math: props.math,
|
package/es/Markdown/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Markdown/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAM9H,MAAM,aAAa,GAAiC,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,UAAU,GAAG,QAAQ,EAAE,WAAW,EAAE,SAAS,GAAG,uBAAuB,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IACrK,MAAM,MAAM,GAAG,MAAM,CAAiB,IAAK,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,SAAS,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;gBAC7B,UAAU,GAAG,OAAO,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,OAAO,CAAC;oBACrB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACzB,CAAC;YACH,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC5C,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1B,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QACtC,IAAI,EAAE,GAAG,EAAE;YACT,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,
|
|
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;
|
|
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"}
|
package/es/MarkdownCMD/index.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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":";AAAA,uDAAuD;AACvD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAA8C,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AACvJ,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,aAAa,MAAM,6BAA6B,CAAC;
|
|
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
|
-
//
|
|
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,
|
|
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
|
|
7
|
-
export default
|
|
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,
|
|
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:
|
|
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":";
|
|
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
|
|
7
|
-
export default
|
|
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,
|
|
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
|
-
|
|
4
|
-
|
|
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":";
|
|
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
|
|
3
|
+
declare const _default: React.NamedExoticComponent<{
|
|
4
4
|
className: string;
|
|
5
|
-
children:
|
|
5
|
+
children: React.ReactNode;
|
|
6
6
|
}>;
|
|
7
|
-
export default
|
|
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,
|
|
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 =
|
|
7
|
-
const codeContent =
|
|
8
|
-
|
|
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":";
|
|
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
|
|
8
|
-
export default
|
|
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,
|
|
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":";
|
|
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
|
|
9
|
-
export default
|
|
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,
|
|
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"}
|