ds-markdown 1.0.4 → 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 (37) hide show
  1. package/es/AutoScroll/index.d.ts.map +1 -1
  2. package/es/AutoScroll/index.js +2 -3
  3. package/es/AutoScroll/index.js.map +1 -1
  4. package/es/MarkdownCMD/index.d.ts +1 -0
  5. package/es/MarkdownCMD/index.d.ts.map +1 -1
  6. package/es/MarkdownCMD/index.js +27 -3
  7. package/es/MarkdownCMD/index.js.map +1 -1
  8. package/es/components/CodeComponent/CodeBlockActions/index.d.ts +2 -2
  9. package/es/components/CodeComponent/CodeBlockActions/index.d.ts.map +1 -1
  10. package/es/components/CodeComponent/CodeBlockActions/index.js +5 -2
  11. package/es/components/CodeComponent/CodeBlockActions/index.js.map +1 -1
  12. package/es/components/CodeComponent/HighlightCode/index.d.ts +3 -2
  13. package/es/components/CodeComponent/HighlightCode/index.d.ts.map +1 -1
  14. package/es/components/CodeComponent/HighlightCode/index.js +8 -4
  15. package/es/components/CodeComponent/HighlightCode/index.js.map +1 -1
  16. package/es/components/CodeComponent/index.d.ts +3 -3
  17. package/es/components/CodeComponent/index.d.ts.map +1 -1
  18. package/es/components/CodeComponent/index.js +64 -5
  19. package/es/components/CodeComponent/index.js.map +1 -1
  20. package/es/components/CopyButton/index.d.ts +2 -2
  21. package/es/components/CopyButton/index.d.ts.map +1 -1
  22. package/es/components/CopyButton/index.js +6 -3
  23. package/es/components/CopyButton/index.js.map +1 -1
  24. package/es/components/DownloadButton/index.d.ts +2 -2
  25. package/es/components/DownloadButton/index.d.ts.map +1 -1
  26. package/es/components/DownloadButton/index.js +61 -50
  27. package/es/components/DownloadButton/index.js.map +1 -1
  28. package/es/components/ui/SuccessButton/index.d.ts.map +1 -1
  29. package/es/components/ui/SuccessButton/index.js +15 -12
  30. package/es/components/ui/SuccessButton/index.js.map +1 -1
  31. package/es/context/MarkdownProvider.d.ts.map +1 -1
  32. package/es/context/MarkdownProvider.js +3 -3
  33. package/es/context/MarkdownProvider.js.map +1 -1
  34. package/es/defined/index.d.ts +1 -0
  35. package/es/defined/index.d.ts.map +1 -1
  36. package/es/index.css +44 -0
  37. package/package.json +3 -3
@@ -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"}
@@ -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,7 +10,15 @@ 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);
@@ -74,16 +82,32 @@ const MarkdownCMDInner = forwardRef(({ answerType = 'answer', timerType = 'reque
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,
@@ -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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"}
@@ -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,10 +1,11 @@
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;
@@ -13,12 +14,14 @@ const CopyButton = ({ codeContent, style, className }) => {
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,mCAAmC;YACnC,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"}
@@ -1,61 +1,72 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo, useCallback } from 'react';
2
3
  import { DownloadIcon } from '../Icon/index.js';
3
4
  import { useConfig } from '../../context/ConfigProvider/index.js';
4
5
  import SuccessButton from '../ui/SuccessButton/index.js';
6
+ // File extension mapping - extracted as constant
7
+ const FILE_EXTENSIONS = {
8
+ javascript: 'js',
9
+ typescript: 'ts',
10
+ jsx: 'jsx',
11
+ tsx: 'tsx',
12
+ python: 'py',
13
+ java: 'java',
14
+ cpp: 'cpp',
15
+ c: 'c',
16
+ csharp: 'cs',
17
+ php: 'php',
18
+ ruby: 'rb',
19
+ go: 'go',
20
+ rust: 'rs',
21
+ swift: 'swift',
22
+ kotlin: 'kt',
23
+ scala: 'scala',
24
+ shell: 'sh',
25
+ bash: 'sh',
26
+ powershell: 'ps1',
27
+ sql: 'sql',
28
+ html: 'html',
29
+ css: 'css',
30
+ scss: 'scss',
31
+ less: 'less',
32
+ json: 'json',
33
+ xml: 'xml',
34
+ yaml: 'yml',
35
+ markdown: 'md',
36
+ dockerfile: 'dockerfile',
37
+ };
38
+ const getFileExtension = (lang) => {
39
+ return FILE_EXTENSIONS[lang.toLowerCase()] || 'txt';
40
+ };
5
41
  const DownloadButton = ({ codeContent, language, style, className }) => {
6
42
  const { locale } = useConfig();
7
- // Download file
8
- const handleDownload = async () => {
43
+ const handleDownload = useCallback(async () => {
9
44
  if (!codeContent)
10
45
  return false;
11
- const blob = new Blob([codeContent], { type: 'text/plain;charset=utf-8' });
12
- const url = URL.createObjectURL(blob);
13
- const link = document.createElement('a');
14
- // Set file extension based on language
15
- const getFileExtension = (lang) => {
16
- const extensions = {
17
- javascript: 'js',
18
- typescript: 'ts',
19
- jsx: 'jsx',
20
- tsx: 'tsx',
21
- python: 'py',
22
- java: 'java',
23
- cpp: 'cpp',
24
- c: 'c',
25
- csharp: 'cs',
26
- php: 'php',
27
- ruby: 'rb',
28
- go: 'go',
29
- rust: 'rs',
30
- swift: 'swift',
31
- kotlin: 'kt',
32
- scala: 'scala',
33
- shell: 'sh',
34
- bash: 'sh',
35
- powershell: 'ps1',
36
- sql: 'sql',
37
- html: 'html',
38
- css: 'css',
39
- scss: 'scss',
40
- less: 'less',
41
- json: 'json',
42
- xml: 'xml',
43
- yaml: 'yml',
44
- markdown: 'md',
45
- dockerfile: 'dockerfile',
46
- };
47
- return extensions[lang.toLowerCase()] || 'txt';
48
- };
49
- const fileName = `code.${getFileExtension(language)}`;
50
- link.href = url;
51
- link.download = fileName;
52
- document.body.appendChild(link);
53
- link.click();
54
- document.body.removeChild(link);
55
- URL.revokeObjectURL(url);
56
- return true;
57
- };
46
+ let url = null;
47
+ let link = null;
48
+ try {
49
+ const blob = new Blob([codeContent], { type: 'text/plain;charset=utf-8' });
50
+ url = URL.createObjectURL(blob);
51
+ link = document.createElement('a');
52
+ const fileName = `code.${getFileExtension(language)}`;
53
+ link.href = url;
54
+ link.download = fileName;
55
+ document.body.appendChild(link);
56
+ link.click();
57
+ return true;
58
+ }
59
+ finally {
60
+ // Ensure cleanup always runs
61
+ if (link && document.body.contains(link)) {
62
+ document.body.removeChild(link);
63
+ }
64
+ if (url) {
65
+ URL.revokeObjectURL(url);
66
+ }
67
+ }
68
+ }, [codeContent, language]);
58
69
  return (_jsx(SuccessButton, { onClick: handleDownload, icon: _jsx(DownloadIcon, { size: 24 }), executeText: locale.codeBlock.downloaded || 'Downloaded', style: style, className: className, children: locale.codeBlock.download || 'Download' }));
59
70
  };
60
- export default DownloadButton;
71
+ export default memo(DownloadButton);
61
72
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/DownloadButton/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAShD,MAAM,cAAc,GAAkC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;IACpG,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,gBAAgB;IAChB,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAE/B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAEzC,uCAAuC;QACvC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE;YACxC,MAAM,UAAU,GAA2B;gBACzC,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,IAAI;gBAChB,GAAG,EAAE,KAAK;gBACV,GAAG,EAAE,KAAK;gBACV,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,KAAK;gBACV,CAAC,EAAE,GAAG;gBACN,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,IAAI;gBACV,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,IAAI;gBACV,UAAU,EAAE,KAAK;gBACjB,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,YAAY;aACzB,CAAC;YACF,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC;QACjD,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,QAAQ,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,aAAa,IAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,GAAI,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,IAAI,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,YACnK,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,UAAU,GAC1B,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/DownloadButton/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/SuccessButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAIrC,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAEvD,UAAU,kBAAmB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IAC/D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2C/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/SuccessButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAIrC,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAEvD,UAAU,kBAAmB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IAC/D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+C/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useRef, useState } from 'react';
2
+ import { useCallback, useEffect, useRef, useState } from 'react';
3
3
  import Button from '../../ui/Button/index.js';
4
4
  import { CheckMarkIcon } from '../../Icon/index.js';
5
5
  const SuccessButton = (props) => {
6
6
  const { onClick, icon, executeText, children, ...rest } = props;
7
7
  const [isLoading, setIsLoading] = useState(false);
8
8
  const [isSuccess, setIsSuccess] = useState(false);
9
- const isUnmounted = useRef(false);
10
- const handleClick = async () => {
9
+ const timerRef = useRef(null);
10
+ const handleClick = useCallback(async () => {
11
11
  if (isLoading || isSuccess) {
12
12
  return;
13
13
  }
@@ -19,11 +19,6 @@ const SuccessButton = (props) => {
19
19
  const result = await returnValue;
20
20
  if (result) {
21
21
  setIsSuccess(true);
22
- setTimeout(() => {
23
- if (!isUnmounted.current) {
24
- setIsSuccess(false);
25
- }
26
- }, 1000);
27
22
  }
28
23
  }
29
24
  }
@@ -33,13 +28,21 @@ const SuccessButton = (props) => {
33
28
  finally {
34
29
  setIsLoading(false);
35
30
  }
36
- };
31
+ }, [isLoading, isSuccess, onClick]);
32
+ // Handle success state timeout with proper cleanup
37
33
  useEffect(() => {
38
- isUnmounted.current = false;
34
+ if (isSuccess) {
35
+ timerRef.current = setTimeout(() => {
36
+ setIsSuccess(false);
37
+ }, 1000);
38
+ }
39
39
  return () => {
40
- isUnmounted.current = true;
40
+ if (timerRef.current) {
41
+ clearTimeout(timerRef.current);
42
+ timerRef.current = null;
43
+ }
41
44
  };
42
- }, []);
45
+ }, [isSuccess]);
43
46
  return (_jsx(Button, { ...rest, onClick: handleClick, icon: isSuccess ? _jsx(CheckMarkIcon, { size: 24 }) : icon, children: isSuccess ? executeText || children : children }));
44
47
  };
45
48
  export default SuccessButton;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/SuccessButton/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAW3C,MAAM,aAAa,GAAiC,CAAC,KAAyB,EAAE,EAAE;IAChF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAChE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;QAC7B,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;YAC9B,IAAI,WAAW,YAAY,OAAO,EAAE,CAAC;gBACnC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;gBACjC,IAAI,MAAM,EAAE,CAAC;oBACX,YAAY,CAAC,IAAI,CAAC,CAAC;oBACnB,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;4BACzB,YAAY,CAAC,KAAK,CAAC,CAAC;wBACtB,CAAC;oBACH,CAAC,EAAE,IAAI,CAAC,CAAC;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,OAAO,GAAG,EAAE;YACV,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,KAAC,MAAM,OAAK,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,YACzF,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,GACxC,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/SuccessButton/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAW3C,MAAM,aAAa,GAAiC,CAAC,KAAyB,EAAE,EAAE;IAChF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAChE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACzC,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;YAC9B,IAAI,WAAW,YAAY,OAAO,EAAE,CAAC;gBACnC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;gBACjC,IAAI,MAAM,EAAE,CAAC;oBACX,YAAY,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpC,mDAAmD;IACnD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACjC,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;QACD,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC/B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,KAAC,MAAM,OAAK,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,YACzF,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,GACxC,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownProvider.d.ts","sourceRoot":"","sources":["../../src/context/MarkdownProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAI7D,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAGA,CAAC;AAGF,eAAO,MAAM,kBAAkB,kCAAoC,CAAC"}
1
+ {"version":3,"file":"MarkdownProvider.d.ts","sourceRoot":"","sources":["../../src/context/MarkdownProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAI7D,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAGA,CAAC;AAGF,eAAO,MAAM,kBAAkB,kCAAoC,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useContext, useMemo } from 'react';
2
+ import { createContext, useContext } from 'react';
3
3
  const MarkdownContext = createContext({});
4
4
  export const MarkdownProvider = ({ value, children }) => {
5
- const contextValue = useMemo(() => value, [value]);
6
- return _jsx(MarkdownContext.Provider, { value: contextValue, children: children });
5
+ // Removed unnecessary useMemo - the value is already memoized by the parent component
6
+ return _jsx(MarkdownContext.Provider, { value: value, children: children });
7
7
  };
8
8
  // eslint-disable-next-line react-refresh/only-export-components
9
9
  export const useMarkdownContext = () => useContext(MarkdownContext);
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownProvider.js","sourceRoot":"","sources":["../../src/context/MarkdownProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAMlE,MAAM,eAAe,GAAG,aAAa,CAAsB,EAAE,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAGxB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,OAAO,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAAG,QAAQ,GAA4B,CAAC;AAC9F,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"MarkdownProvider.js","sourceRoot":"","sources":["../../src/context/MarkdownProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAMzD,MAAM,eAAe,GAAG,aAAa,CAAsB,EAAE,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAGxB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC3B,sFAAsF;IACtF,OAAO,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA4B,CAAC;AACvF,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC"}
@@ -34,6 +34,7 @@ export interface MarkdownBaseProps extends MarkdownTyperBaseProps {
34
34
  }
35
35
  export interface MarkdownProps extends MarkdownTyperBaseProps, IMarkdownThemeProps {
36
36
  children: string | undefined;
37
+ cursor?: React.ReactNode | string | 'circle' | 'block' | 'underline' | 'line';
37
38
  }
38
39
  /** MarkdownCMD component does not need children */
39
40
  export interface MarkdownCMDProps extends MarkdownTyperBaseProps, IMarkdownThemeProps {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/defined/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAG/F;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,mBAAmB;IAClC,YAAY;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,2BAA2B;IAC3B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,kBAAkB;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;CACpC;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;CAAG;AAEpE,MAAM,WAAW,aAAc,SAAQ,sBAAsB,EAAE,mBAAmB;IAChF,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAiB,SAAQ,sBAAsB,EAAE,mBAAmB;IACnF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE3B,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,WAAW,EAAE,SAAS,GAAG,QAAQ,CAAC;IAClC,wCAAwC;IACxC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAChD;AAED,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C,qCAAqC;AACrC,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACzD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AACD,MAAM,WAAW,sBAAuB,SAAQ,OAAO,CAAC,aAAa;IACnE;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,UAAU,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CACnG;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;CAAG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/defined/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAG/F;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,mBAAmB;IAClC,YAAY;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,2BAA2B;IAC3B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,kBAAkB;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;CACpC;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;CAAG;AAEpE,MAAM,WAAW,aAAc,SAAQ,sBAAsB,EAAE,mBAAmB;IAChF,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;CAC/E;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAiB,SAAQ,sBAAsB,EAAE,mBAAmB;IACnF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE3B,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,WAAW,EAAE,SAAS,GAAG,QAAQ,CAAC;IAClC,wCAAwC;IACxC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAChD;AAED,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C,qCAAqC;AACrC,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACzD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AACD,MAAM,WAAW,sBAAuB,SAAQ,OAAO,CAAC,aAAa;IACnE;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,UAAU,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CACnG;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;CAAG"}
package/es/index.css CHANGED
@@ -328,3 +328,47 @@ ds-markdown-math {
328
328
  .ds-button.ds-icon-button .ds-button__icon {
329
329
  margin-right: 0;
330
330
  }
331
+ @keyframes ds-cursor-blink {
332
+ 0%,
333
+ 50% {
334
+ opacity: 1;
335
+ }
336
+ 51%,
337
+ 100% {
338
+ opacity: 0;
339
+ }
340
+ }
341
+ .ds-markdown-cursor,
342
+ .ds-markdown-cursor-line,
343
+ .ds-markdown-cursor-block,
344
+ .ds-markdown-cursor-underline,
345
+ .ds-markdown-cursor-circle {
346
+ display: inline-block;
347
+ margin-left: 2px;
348
+ vertical-align: middle;
349
+ animation: ds-cursor-blink 1s infinite;
350
+ background-color: rgb(var(--ds-rgb-label-1));
351
+ }
352
+ .ds-markdown-cursor,
353
+ .ds-markdown-cursor-line {
354
+ width: 2px;
355
+ height: 1.2em;
356
+ }
357
+ .ds-markdown-cursor-block {
358
+ width: 0.6em;
359
+ height: 1em;
360
+ border-radius: 2px;
361
+ }
362
+ .ds-markdown-cursor-underline {
363
+ width: 0.8em;
364
+ height: 2px;
365
+ margin-bottom: -2px;
366
+ vertical-align: baseline;
367
+ }
368
+ .ds-markdown-cursor-circle {
369
+ width: 0.5em;
370
+ height: 0.5em;
371
+ border-radius: 50%;
372
+ margin-left: 3px;
373
+ margin-right: 1px;
374
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ds-markdown",
3
3
  "private": false,
4
- "version": "1.0.4",
4
+ "version": "1.0.5-beta.0",
5
5
  "main": "./dist/esm/index.js",
6
6
  "module": "./dist/esm/index.js",
7
7
  "style": "./dist/style.css",
@@ -77,7 +77,7 @@
77
77
  "classnames": "^2.5.1",
78
78
  "katex": "^0.16.22",
79
79
  "react-markdown": "^10.1.0",
80
- "react-markdown-typer": "^1.0.3",
80
+ "react-markdown-typer": "^1.0.4-beta.0",
81
81
  "react-router-dom": "^7.7.1",
82
82
  "react-syntax-highlighter": "^15.6.1",
83
83
  "rehype-katex": "^7.0.1",
@@ -156,6 +156,6 @@
156
156
  "react-markdown"
157
157
  ],
158
158
  "publishConfig": {
159
- "tag": "latest"
159
+ "tag": "beta"
160
160
  }
161
161
  }