@antv/dumi-theme-antv 0.7.9 → 0.8.0-alpha.3

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 (113) hide show
  1. package/dist/builtins/Playground/index.js +1 -1
  2. package/dist/builtins/Playground/index.module.less +0 -1
  3. package/dist/common/styles/Common.js +1 -1
  4. package/dist/common/styles/theme.js +1 -1
  5. package/dist/components/AI/HomeDialog/AntVBanner/index.js +4 -0
  6. package/dist/components/AI/HomeDialog/AntVBanner/index.module.less +35 -0
  7. package/dist/components/AI/HomeDialog/ModeSelector/ModeSelectorDropdown.js +42 -0
  8. package/dist/components/AI/HomeDialog/ModeSelector/index.js +32 -0
  9. package/dist/components/AI/HomeDialog/ModeSelector/index.module.less +289 -0
  10. package/dist/components/AI/HomeDialog/PromptTextarea/ChooseLib/index.js +62 -0
  11. package/dist/components/AI/HomeDialog/PromptTextarea/ChooseLib/index.module.less +4 -0
  12. package/dist/components/AI/HomeDialog/PromptTextarea/DatasourceCard/index.js +25 -0
  13. package/dist/components/AI/HomeDialog/PromptTextarea/DatasourceCard/index.module.less +42 -0
  14. package/dist/components/AI/HomeDialog/PromptTextarea/SendButton.js +23 -0
  15. package/dist/components/AI/HomeDialog/PromptTextarea/SendButton.module.less +9 -0
  16. package/dist/components/AI/HomeDialog/PromptTextarea/Uploader/DataUploader.js +225 -0
  17. package/dist/components/AI/HomeDialog/PromptTextarea/index.js +172 -0
  18. package/dist/components/AI/HomeDialog/PromptTextarea/index.module.less +128 -0
  19. package/dist/components/AI/HomeDialog/RecommendCase/Card.js +80 -0
  20. package/dist/components/AI/HomeDialog/RecommendCase/card.module.less +131 -0
  21. package/dist/components/AI/HomeDialog/RecommendCase/index.js +130 -0
  22. package/dist/components/AI/HomeDialog/RecommendCase/index.module.less +45 -0
  23. package/dist/components/AI/HomeDialog/RecommendCase/recommend.json +66 -0
  24. package/dist/components/AI/HomeDialog/index.js +62 -0
  25. package/dist/components/AI/HomeDialog/index.module.less +3 -0
  26. package/dist/components/AI/constant.js +37 -0
  27. package/dist/components/AI/index.js +1 -0
  28. package/dist/components/AI/types.js +1 -0
  29. package/dist/components/AI/utils.js +38 -0
  30. package/dist/components/Login/Captcha/index.js +185 -0
  31. package/dist/components/Login/Captcha/index.less +91 -0
  32. package/dist/components/Login/CheckCode/index.js +244 -0
  33. package/dist/components/Login/CheckCode/index.less +137 -0
  34. package/dist/components/Login/CountDownButton/index.js +109 -0
  35. package/dist/components/Login/CountDownButton/index.less +8 -0
  36. package/dist/components/Login/LoginForm.js +239 -0
  37. package/dist/components/Login/LoginForm.less +408 -0
  38. package/dist/components/Login/index.js +24 -0
  39. package/dist/components/Login/openAuthWindow.js +54 -0
  40. package/dist/components/Login/types.js +5 -0
  41. package/dist/components/Login/utils.js +47 -0
  42. package/dist/hooks/useProducts.js +39 -0
  43. package/dist/hooks/useStreamingText.js +139 -0
  44. package/dist/hooks/useTypewriter.js +69 -0
  45. package/dist/hooks/useVisionsnapSdk.js +159 -0
  46. package/dist/layouts/DocLayout.js +2 -2
  47. package/dist/layouts/GlobalLayout/index.js +22 -0
  48. package/dist/locales/en.json +132 -1
  49. package/dist/locales/zh.json +132 -1
  50. package/dist/model/AIChat.js +313 -0
  51. package/dist/model/auth.js +147 -0
  52. package/dist/pages/AIPlayground/components/ConversationsMenu/index.js +176 -0
  53. package/dist/pages/AIPlayground/components/ConversationsMenu/index.module.less +46 -0
  54. package/dist/pages/AIPlayground/components/MarkdownComponent/MarkdownCodeBlock.js +97 -0
  55. package/dist/pages/AIPlayground/components/MarkdownComponent/MarkdownCodeBlock.module.less +13 -0
  56. package/dist/pages/AIPlayground/components/MarkdownComponent/index.js +50 -0
  57. package/dist/pages/AIPlayground/components/MsgBox/index.js +407 -0
  58. package/dist/pages/AIPlayground/components/MsgBox/index.module.less +43 -0
  59. package/dist/pages/AIPlayground/components/MsgBox/useAutoScroll.js +46 -0
  60. package/dist/pages/AIPlayground/components/SessionLayout/index.js +62 -0
  61. package/dist/pages/AIPlayground/components/SessionLayout/index.module.less +37 -0
  62. package/dist/pages/AIPlayground/components/TaskBox/generateCode.js +230 -0
  63. package/dist/pages/AIPlayground/components/TaskBox/index.js +101 -0
  64. package/dist/pages/AIPlayground/components/TaskBox/index.module.less +9 -0
  65. package/dist/pages/AIPlayground/demo.js +34 -0
  66. package/dist/pages/AIPlayground/index.js +12 -0
  67. package/dist/pages/AIPlayground/index.module.less +5 -0
  68. package/dist/pages/Examples/components/Accouncement/index.module.less +1 -1
  69. package/dist/pages/Examples/index.module.less +13 -13
  70. package/dist/pages/Index/components/Cases/index.module.less +9 -9
  71. package/dist/pages/Index/components/Companies/index.module.less +5 -4
  72. package/dist/pages/Index/components/Features/FeatureCard.module.less +4 -5
  73. package/dist/pages/Index/components/Features/index.module.less +6 -6
  74. package/dist/pages/Index/components/_.less +9 -9
  75. package/dist/pages/Index/index.js +1 -1
  76. package/dist/plugin/index.js +14 -6
  77. package/dist/slots/Banner/Notification.module.less +8 -8
  78. package/dist/slots/Banner/index.module.less +11 -10
  79. package/dist/slots/CodeEditor/Toolbar.js +23 -27
  80. package/dist/slots/CodeEditor/Toolbar.module.less +7 -0
  81. package/dist/slots/CodeEditor/index.js +67 -5
  82. package/dist/slots/CodeEditor/index.module.less +24 -0
  83. package/dist/slots/CodeEditor/utils.js +2 -1
  84. package/dist/slots/CodePreview/index.module.less +0 -3
  85. package/dist/slots/CodeRunner/index.js +24 -11
  86. package/dist/slots/ContentTable/index.module.less +2 -1
  87. package/dist/{pages/Index/components → slots}/Detail/News.js +1 -1
  88. package/dist/{pages/Index/components → slots}/Detail/News.module.less +9 -9
  89. package/dist/{pages/Index/components → slots}/Detail/index.js +13 -29
  90. package/dist/{pages/Index/components → slots}/Detail/index.module.less +24 -21
  91. package/dist/slots/ExampleSider/index.module.less +3 -4
  92. package/dist/slots/Footer/index.module.less +3 -3
  93. package/dist/slots/Header/Products/Product.module.less +3 -3
  94. package/dist/slots/Header/Products/getProducts.js +20 -26
  95. package/dist/slots/Header/Products/index.js +20 -16
  96. package/dist/slots/Header/Search/SearchResult.js +53 -14
  97. package/dist/slots/Header/Search/SearchResult.module.less +1 -0
  98. package/dist/slots/Header/Search/index.js +2 -1
  99. package/dist/slots/Header/index.js +72 -30
  100. package/dist/slots/Header/index.module.less +15 -7
  101. package/dist/slots/LiveExample/index.js +1 -1
  102. package/dist/slots/LiveExample/index.module.less +1 -1
  103. package/dist/slots/Loading/index.module.less +30 -28
  104. package/dist/slots/ManualContent/index.module.less +14 -17
  105. package/dist/slots/_.less +9 -9
  106. package/dist/static/user.svg +3 -0
  107. package/dist/typings.d.ts +11 -0
  108. package/dist/utils/analytics.js +16 -0
  109. package/dist/utils/code.js +35 -0
  110. package/dist/utils/env.js +63 -0
  111. package/dist/utils/index.js +7 -0
  112. package/dist/utils/request.js +42 -0
  113. package/package.json +33 -17
@@ -0,0 +1,176 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import React, { useState } from 'react';
8
+ import { DeleteOutlined, EditOutlined, EllipsisOutlined, HistoryOutlined, MenuFoldOutlined, MenuUnfoldOutlined, PlusSquareOutlined, VerticalAlignTopOutlined } from '@ant-design/icons';
9
+ import { Dropdown, Input, Modal } from 'antd';
10
+ import { Menu } from 'antd';
11
+ import styles from "./index.module.less";
12
+ import { useSnapshot } from 'valtio';
13
+ import { AIChatStore, createPureNewSession, handleDeleteSession, handlePinSession, handleRenameSession } from "../../../../model/AIChat";
14
+ import { useSetState } from "ahooks";
15
+ import { useIntl } from 'dumi';
16
+ import { isUUID } from "../../../../utils";
17
+ export var ConversationsMenu = function ConversationsMenu() {
18
+ var _useSetState = useSetState({
19
+ open: false,
20
+ session: null,
21
+ rename: ''
22
+ }),
23
+ _useSetState2 = _slicedToArray(_useSetState, 2),
24
+ state = _useSetState2[0],
25
+ setState = _useSetState2[1];
26
+ var _useState = useState(false),
27
+ _useState2 = _slicedToArray(_useState, 2),
28
+ collapsed = _useState2[0],
29
+ setCollapsed = _useState2[1];
30
+ var snap = useSnapshot(AIChatStore);
31
+ var handleSelectSession = function handleSelectSession(sessionId) {
32
+ if (isUUID(sessionId)) {
33
+ AIChatStore.activeSessionId = sessionId;
34
+ }
35
+ };
36
+ var toggleCollapsed = function toggleCollapsed() {
37
+ setCollapsed(!collapsed);
38
+ };
39
+ var _useIntl = useIntl(),
40
+ formatMessage = _useIntl.formatMessage;
41
+ var items = [{
42
+ key: 'fold',
43
+ extra: !collapsed ? /*#__PURE__*/React.createElement(MenuFoldOutlined, null) : null,
44
+ onClick: toggleCollapsed,
45
+ label: null,
46
+ icon: !collapsed ? null : /*#__PURE__*/React.createElement(MenuUnfoldOutlined, null),
47
+ title: collapsed ? formatMessage({
48
+ id: 'ai.conversations.expand'
49
+ }) : formatMessage({
50
+ id: 'ai.conversations.collapse'
51
+ })
52
+ }, {
53
+ key: 'new',
54
+ icon: /*#__PURE__*/React.createElement(PlusSquareOutlined, null),
55
+ label: formatMessage({
56
+ id: 'ai.conversations.new'
57
+ }),
58
+ onClick: function onClick() {
59
+ return createPureNewSession();
60
+ }
61
+ }, {
62
+ key: 'history',
63
+ label: formatMessage({
64
+ id: 'ai.conversations.history'
65
+ }),
66
+ icon: /*#__PURE__*/React.createElement(HistoryOutlined, null),
67
+ children: snap.sessions.map(function (session) {
68
+ return {
69
+ key: session.id,
70
+ label: /*#__PURE__*/React.createElement("div", {
71
+ className: styles.menuItem
72
+ }, /*#__PURE__*/React.createElement("span", {
73
+ className: styles.title
74
+ }, session.title), /*#__PURE__*/React.createElement(Dropdown, {
75
+ menu: {
76
+ items: [{
77
+ key: 'edit',
78
+ label: formatMessage({
79
+ id: 'ai.conversations.rename'
80
+ }),
81
+ icon: /*#__PURE__*/React.createElement(EditOutlined, null),
82
+ onClick: function onClick(_ref) {
83
+ var domEvent = _ref.domEvent;
84
+ domEvent.stopPropagation();
85
+ setState({
86
+ open: true,
87
+ session: session,
88
+ rename: session.title.slice(0, 100)
89
+ });
90
+ }
91
+ }, {
92
+ key: 'top',
93
+ label: formatMessage({
94
+ id: 'ai.conversations.pin'
95
+ }),
96
+ icon: /*#__PURE__*/React.createElement(VerticalAlignTopOutlined, null),
97
+ onClick: function onClick(_ref2) {
98
+ var domEvent = _ref2.domEvent;
99
+ domEvent.stopPropagation();
100
+ handlePinSession(session.id);
101
+ }
102
+ }, {
103
+ key: 'delete',
104
+ label: formatMessage({
105
+ id: 'ai.conversations.delete'
106
+ }),
107
+ icon: /*#__PURE__*/React.createElement(DeleteOutlined, null),
108
+ onClick: function onClick(_ref3) {
109
+ var domEvent = _ref3.domEvent;
110
+ domEvent.stopPropagation();
111
+ handleDeleteSession(session.id);
112
+ }
113
+ }]
114
+ },
115
+ trigger: ['click']
116
+ }, /*#__PURE__*/React.createElement("span", {
117
+ className: styles.iconWrapper,
118
+ onClick: function onClick(e) {
119
+ e.preventDefault();
120
+ e.stopPropagation();
121
+ }
122
+ }, /*#__PURE__*/React.createElement(EllipsisOutlined, null))))
123
+ };
124
+ })
125
+ }];
126
+ return /*#__PURE__*/React.createElement("div", {
127
+ className: styles.container
128
+ }, /*#__PURE__*/React.createElement(Menu, {
129
+ selectedKeys: [snap.activeSessionId],
130
+ defaultOpenKeys: ['history'],
131
+ mode: "inline",
132
+ theme: "light",
133
+ inlineCollapsed: collapsed,
134
+ items: items,
135
+ onSelect: function onSelect(_ref4) {
136
+ var key = _ref4.key;
137
+ return handleSelectSession(key);
138
+ }
139
+ }), /*#__PURE__*/React.createElement(Modal, {
140
+ title: formatMessage({
141
+ id: 'ai.conversations.edit.title'
142
+ }),
143
+ open: state.open,
144
+ centered: true,
145
+ maskClosable: false,
146
+ onOk: function onOk() {
147
+ handleRenameSession(state.session.id, state.rename);
148
+ setState({
149
+ open: false
150
+ });
151
+ },
152
+ onCancel: function onCancel() {
153
+ return setState({
154
+ open: false
155
+ });
156
+ },
157
+ okButtonProps: {
158
+ disabled: !state.rename
159
+ },
160
+ okText: formatMessage({
161
+ id: 'ai.conversations.ok'
162
+ }),
163
+ cancelText: formatMessage({
164
+ id: 'ai.conversations.cancel'
165
+ })
166
+ }, /*#__PURE__*/React.createElement(Input, {
167
+ showCount: true,
168
+ maxLength: 100,
169
+ onChange: function onChange(e) {
170
+ return setState({
171
+ rename: e.target.value
172
+ });
173
+ },
174
+ value: state.rename
175
+ })));
176
+ };
@@ -0,0 +1,46 @@
1
+ .container {
2
+ background: #fff;
3
+
4
+ :global {
5
+ .ant-menu {
6
+ width: 16vw;
7
+ min-width: 200px;
8
+ height: 100%;
9
+ overflow-y: auto;
10
+ overflow-x: hidden;
11
+ }
12
+
13
+ .ant-menu-inline-collapsed{
14
+ width: 80px;
15
+ min-width: 80px;
16
+ }
17
+ }
18
+ }
19
+
20
+ .title {
21
+ width: 200px;
22
+ overflow: hidden;
23
+ white-space: nowrap;
24
+ text-overflow: ellipsis;
25
+ }
26
+
27
+ .menuItem{
28
+ display: flex;
29
+ justify-content: space-between;
30
+ }
31
+
32
+ .iconWrapper{
33
+ display: inline-flex;
34
+ align-items: center;
35
+ justify-content: center;
36
+ width: 20px;
37
+ height: 20px;
38
+ margin-top: 10px;
39
+ border-radius: 50%;
40
+ transition: background-color 0.3s ease;
41
+ cursor: pointer;
42
+
43
+ &:hover{
44
+ background-color: #fbfcfd;
45
+ }
46
+ }
@@ -0,0 +1,97 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import React from 'react';
8
+ import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
9
+ import { oneLight } from 'react-syntax-highlighter/dist/esm/styles/prism';
10
+ import { AIChatStore } from "../../../../model/AIChat";
11
+ import { useCopyToClipboard } from 'react-use';
12
+ import { CheckOutlined, CopyOutlined, PlaySquareOutlined } from '@ant-design/icons';
13
+ import { Button, Space, Tooltip } from 'antd';
14
+ import styles from "./MarkdownCodeBlock.module.less";
15
+ import { useIntl } from 'dumi'; // 定义 props 类型,它将接收 react-markdown 传递的所有属性
16
+
17
+ // 定义 props 类型,它将接收 react-markdown 传递的所有属性
18
+
19
+ export var MarkdownCodeBlock = /*#__PURE__*/React.memo(function (_ref) {
20
+ var inline = _ref.inline,
21
+ className = _ref.className,
22
+ children = _ref.children,
23
+ _ref$showRunButton = _ref.showRunButton,
24
+ showRunButtonProp = _ref$showRunButton === void 0 ? true : _ref$showRunButton;
25
+ var intl = useIntl();
26
+ var _useCopyToClipboard = useCopyToClipboard(),
27
+ _useCopyToClipboard2 = _slicedToArray(_useCopyToClipboard, 2),
28
+ copyState = _useCopyToClipboard2[0],
29
+ copyToClipboard = _useCopyToClipboard2[1];
30
+ // 1. 处理行内代码:如果是行内代码,不做特殊处理,直接返回一个 <code> 标签
31
+ if (inline || typeof children === 'string' && !children.includes('\n')) {
32
+ return /*#__PURE__*/React.createElement("code", {
33
+ className: className
34
+ }, children);
35
+ }
36
+
37
+ // 2. 提取语言:从 className 中提取代码语言,例如 "language-javascript" -> "javascript"
38
+ var match = /language-(\w+)/.exec(className || '');
39
+ var language = match ? match[1] : 'text'; // 如果没有指定语言,默认为纯文本
40
+
41
+ // 3. 将 children 转换为字符串,并移除末尾的换行符
42
+ var codeString = String(children).replace(/\n$/, '');
43
+
44
+ // 4. 判断是否显示“运行”按钮
45
+ var showRunButton = showRunButtonProp && /\bimport\b/.test(codeString);
46
+
47
+ // 5. 定义运行代码的逻辑
48
+ var handleRunCode = function handleRunCode() {
49
+ // console.log("准备运行的代码:", codeString);
50
+ AIChatStore.codeBlock = codeString;
51
+ };
52
+
53
+ // 6. 返回最终的 JSX 结构
54
+ return /*#__PURE__*/React.createElement("div", {
55
+ style: {
56
+ position: 'relative',
57
+ margin: '1em 0'
58
+ }
59
+ }, /*#__PURE__*/React.createElement(Space, {
60
+ className: styles.button
61
+ }, /*#__PURE__*/React.createElement(Tooltip, {
62
+ title: intl.formatMessage({
63
+ id: 'ai.markdown.copy'
64
+ })
65
+ }, /*#__PURE__*/React.createElement(Button, {
66
+ variant: "link",
67
+ size: "small",
68
+ onClick: function onClick() {
69
+ return copyToClipboard(codeString);
70
+ },
71
+ title: intl.formatMessage({
72
+ id: 'ai.markdown.copy'
73
+ })
74
+ }, copyState.value === codeString ? /*#__PURE__*/React.createElement(CheckOutlined, null) : /*#__PURE__*/React.createElement(CopyOutlined, null))), showRunButton && /*#__PURE__*/React.createElement(Tooltip, {
75
+ title: intl.formatMessage({
76
+ id: 'ai.markdown.run'
77
+ })
78
+ }, /*#__PURE__*/React.createElement(Button, {
79
+ variant: "link",
80
+ size: "small",
81
+ onClick: handleRunCode,
82
+ title: intl.formatMessage({
83
+ id: 'ai.markdown.run'
84
+ })
85
+ }, /*#__PURE__*/React.createElement(PlaySquareOutlined, null)))), /*#__PURE__*/React.createElement(SyntaxHighlighter, {
86
+ style: oneLight,
87
+ language: language === 'vue' ? 'html' : language,
88
+ PreTag: "div" // 使用 div 作为外层标签,避免 pre 标签的默认样式冲突
89
+ ,
90
+ showLineNumbers: false // (可选) 显示行号
91
+ ,
92
+ customStyle: {
93
+ paddingTop: '2em',
94
+ background: '#fafafa'
95
+ }
96
+ }, codeString));
97
+ });
@@ -0,0 +1,13 @@
1
+ .button {
2
+ position: absolute;
3
+ top: 0.5em;
4
+ right: 0.5em;
5
+ z-index: 1;
6
+
7
+ button {
8
+ border: none;
9
+ border-radius: 5px;
10
+ cursor: pointer;
11
+ font-size: 0.8em;
12
+ }
13
+ }
@@ -0,0 +1,50 @@
1
+ var _excluded = ["node"];
2
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
5
+ import React from 'react';
6
+ import Markdown from 'react-markdown';
7
+ import rehypeRaw from 'rehype-raw';
8
+ import remarkGfm from 'remark-gfm';
9
+ import { MarkdownCodeBlock } from "./MarkdownCodeBlock"; // 引入我们创建的自定义组件
10
+
11
+ export var MarkdownComponent = /*#__PURE__*/React.memo(function (_ref) {
12
+ var content = _ref.content,
13
+ showRunButton = _ref.showRunButton;
14
+ return /*#__PURE__*/React.createElement(Markdown, {
15
+ remarkPlugins: [remarkGfm],
16
+ rehypePlugins: [rehypeRaw],
17
+ components: {
18
+ // 1. 重写 `p` 标签的渲染
19
+ p: function p(props) {
20
+ var node = props.node,
21
+ rest = _objectWithoutProperties(props, _excluded);
22
+ return /*#__PURE__*/React.createElement("p", _extends({
23
+ style: {
24
+ marginBottom: 'unset',
25
+ lineHeight: '1.6'
26
+ }
27
+ }, rest));
28
+ },
29
+ // 2. 【核心】重写 `code` 标签的渲染,使用我们自己的组件
30
+ code: function code(props) {
31
+ return /*#__PURE__*/React.createElement(MarkdownCodeBlock, _extends({
32
+ showRunButton: showRunButton
33
+ }, props));
34
+ },
35
+ // 3. 重写非标准 `description` 标签的渲染
36
+ // @ts-expect-error - 告知 TypeScript 我们知道这是一个自定义的、非标准的 HTML 标签
37
+ description: function description(props) {
38
+ return /*#__PURE__*/React.createElement("span", _extends({
39
+ style: {
40
+ fontSize: '12px',
41
+ color: '#777',
42
+ display: 'block'
43
+ }
44
+ }, props));
45
+ } // 你还可以重写更多...
46
+ // h1: (props) => <h1 style={{ color: 'blue' }} {...props} />,
47
+ // a: (props) => <a style={{ color: 'green' }} target="_blank" rel="noopener noreferrer" {...props} />,
48
+ }
49
+ }, content);
50
+ });