@ant-design/agentic-ui 2.31.3 → 2.31.4

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 (40) hide show
  1. package/dist/AILabel/style.js +3 -3
  2. package/dist/AgenticLayout/style.js +1 -1
  3. package/dist/AnswerAlert/style.js +2 -2
  4. package/dist/Bubble/MessagesContent/VoiceButton/style.js +1 -1
  5. package/dist/Bubble/MessagesContent/style.js +2 -2
  6. package/dist/Components/ActionIconBox/style.js +3 -3
  7. package/dist/Components/ActionItemBox/style.js +16 -16
  8. package/dist/Components/Button/IconButton/style.js +33 -33
  9. package/dist/Components/Button/ToggleButton/style.js +33 -33
  10. package/dist/Components/Loading/style.js +5 -5
  11. package/dist/Components/VisualList/style.js +5 -5
  12. package/dist/Components/lotties/TextLoading/style.js +2 -2
  13. package/dist/MarkdownEditor/editor/components/CommentList/style.js +3 -3
  14. package/dist/MarkdownEditor/editor/parser/parse/parseTable.js +2 -1
  15. package/dist/MarkdownEditor/editor/style.js +4 -4
  16. package/dist/MarkdownEditor/editor/utils/markdownToHtml.js +2 -1
  17. package/dist/MarkdownEditor/style.js +26 -26
  18. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/style.js +1 -1
  19. package/dist/MarkdownInputField/AttachmentButton/style.js +5 -5
  20. package/dist/MarkdownInputField/FileMapView/style.js +2 -2
  21. package/dist/MarkdownInputField/style.js +6 -6
  22. package/dist/MarkdownInputField/types/MarkdownInputFieldProps.d.ts +10 -0
  23. package/dist/MarkdownRenderer/markdownReactShared.js +2 -1
  24. package/dist/MarkdownRenderer/renderers/CodeRenderer.js +8 -14
  25. package/dist/Plugins/chart/ChartStatistic/style.js +9 -9
  26. package/dist/Plugins/chart/DonutChart/style.js +3 -3
  27. package/dist/Plugins/chart/components/ChartContainer/style.js +3 -3
  28. package/dist/Plugins/chart/components/ChartFilter/style.js +22 -22
  29. package/dist/Plugins/chart/components/ChartToolBar/style.js +4 -4
  30. package/dist/Plugins/code/components/CodeRenderer.js +6 -5
  31. package/dist/Plugins/code/components/CodeToolbar.d.ts +0 -1
  32. package/dist/Plugins/code/components/CodeToolbar.js +6 -12
  33. package/dist/Schema/SchemaEditor/style.js +26 -26
  34. package/dist/ThoughtChainList/style.js +5 -5
  35. package/dist/ToolUseBar/style.js +8 -8
  36. package/dist/ToolUseBarThink/style.js +1 -1
  37. package/dist/Utils/rehypeSanitizeUserHtml.d.ts +11 -0
  38. package/dist/Utils/rehypeSanitizeUserHtml.js +182 -0
  39. package/dist/Workspace/RealtimeFollow/style.js +11 -11
  40. package/package.json +1 -1
@@ -0,0 +1,182 @@
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_without_holes(arr) {
7
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
8
+ }
9
+ function _iterable_to_array(iter) {
10
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
11
+ }
12
+ function _non_iterable_spread() {
13
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
14
+ }
15
+ function _to_consumable_array(arr) {
16
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
17
+ }
18
+ function _unsupported_iterable_to_array(o, minLen) {
19
+ if (!o) return;
20
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
21
+ var n = Object.prototype.toString.call(o).slice(8, -1);
22
+ if (n === "Object" && o.constructor) n = o.constructor.name;
23
+ if (n === "Map" || n === "Set") return Array.from(n);
24
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
25
+ }
26
+ /**
27
+ * rehype 插件:清理用户输入中的危险 HTML,防止页面布局错乱和 XSS 攻击。
28
+ *
29
+ * 在 rehypeRaw 之后使用,对 hast 树执行:
30
+ * 1. 移除 doctype 声明
31
+ * 2. 完全移除危险元素(script、style 等)及其子节点
32
+ * 3. 解包结构性元素(html、head、body 等),保留子节点
33
+ * 4. 保留 GFM 任务列表的 input[type=checkbox],移除其他 input
34
+ * 5. 清理所有元素的危险属性(on* 事件、javascript: URL)
35
+ */ /** 应完全移除(含子节点)的危险 HTML 标签 */ var STRIP_ELEMENTS = new Set([
36
+ 'script',
37
+ 'noscript',
38
+ 'style',
39
+ 'meta',
40
+ 'title',
41
+ 'link',
42
+ 'base',
43
+ 'object',
44
+ 'embed',
45
+ 'applet',
46
+ 'frame',
47
+ 'frameset'
48
+ ]);
49
+ /** 应解包(移除标签但保留子节点)的结构性/表单 HTML 标签 */ var UNWRAP_ELEMENTS = new Set([
50
+ 'html',
51
+ 'head',
52
+ 'body',
53
+ 'form',
54
+ 'button',
55
+ 'select',
56
+ 'textarea',
57
+ 'option',
58
+ 'optgroup',
59
+ 'fieldset',
60
+ 'legend'
61
+ ]);
62
+ var DANGEROUS_URL_SCHEMES = [
63
+ 'javascript:',
64
+ 'vbscript:'
65
+ ];
66
+ var sanitizeElementProperties = function sanitizeElementProperties(properties) {
67
+ if (!properties) return;
68
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
69
+ try {
70
+ var _loop = function() {
71
+ var key = _step.value;
72
+ if (key.startsWith('on')) {
73
+ delete properties[key];
74
+ return "continue";
75
+ }
76
+ var value = properties[key];
77
+ if (typeof value === 'string') {
78
+ var lower = value.toLowerCase().trimStart();
79
+ if (DANGEROUS_URL_SCHEMES.some(function(s) {
80
+ return lower.startsWith(s);
81
+ })) {
82
+ delete properties[key];
83
+ }
84
+ }
85
+ };
86
+ for(var _iterator = Object.keys(properties)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
87
+ } catch (err) {
88
+ _didIteratorError = true;
89
+ _iteratorError = err;
90
+ } finally{
91
+ try {
92
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
93
+ _iterator.return();
94
+ }
95
+ } finally{
96
+ if (_didIteratorError) {
97
+ throw _iteratorError;
98
+ }
99
+ }
100
+ }
101
+ };
102
+ /** 判断 input 元素是否为 GFM 任务列表 checkbox,应予保留 */ var isTaskListCheckbox = function isTaskListCheckbox(node) {
103
+ var _node_properties;
104
+ return ((_node_properties = node.properties) === null || _node_properties === void 0 ? void 0 : _node_properties.type) === 'checkbox';
105
+ };
106
+ /**
107
+ * 递归清理 hast 节点。
108
+ * @returns null = 移除节点 | 数组 = 解包子节点 | 节点对象 = 保留
109
+ */ var sanitizeHastNode = function sanitizeHastNode1(node) {
110
+ if (node.type === 'doctype') return null;
111
+ if (node.type === 'element') {
112
+ if (STRIP_ELEMENTS.has(node.tagName)) return null;
113
+ // input: 保留 GFM 任务列表 checkbox,移除其他 input
114
+ if (node.tagName === 'input' && !isTaskListCheckbox(node)) {
115
+ return null;
116
+ }
117
+ sanitizeElementProperties(node.properties);
118
+ if (UNWRAP_ELEMENTS.has(node.tagName)) {
119
+ var kept = [];
120
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
121
+ try {
122
+ for(var _iterator = (node.children || [])[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
123
+ var child = _step.value;
124
+ var _kept;
125
+ var result = sanitizeHastNode(child);
126
+ if (result === null) continue;
127
+ if (Array.isArray(result)) (_kept = kept).push.apply(_kept, _to_consumable_array(result));
128
+ else kept.push(result);
129
+ }
130
+ } catch (err) {
131
+ _didIteratorError = true;
132
+ _iteratorError = err;
133
+ } finally{
134
+ try {
135
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
136
+ _iterator.return();
137
+ }
138
+ } finally{
139
+ if (_didIteratorError) {
140
+ throw _iteratorError;
141
+ }
142
+ }
143
+ }
144
+ return kept.length > 0 ? kept : null;
145
+ }
146
+ }
147
+ if (node.children) {
148
+ var newChildren = [];
149
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
150
+ try {
151
+ for(var _iterator1 = node.children[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
152
+ var child1 = _step1.value;
153
+ var _newChildren;
154
+ var result1 = sanitizeHastNode(child1);
155
+ if (result1 === null) continue;
156
+ if (Array.isArray(result1)) (_newChildren = newChildren).push.apply(_newChildren, _to_consumable_array(result1));
157
+ else newChildren.push(result1);
158
+ }
159
+ } catch (err) {
160
+ _didIteratorError1 = true;
161
+ _iteratorError1 = err;
162
+ } finally{
163
+ try {
164
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
165
+ _iterator1.return();
166
+ }
167
+ } finally{
168
+ if (_didIteratorError1) {
169
+ throw _iteratorError1;
170
+ }
171
+ }
172
+ }
173
+ node.children = newChildren;
174
+ }
175
+ return node;
176
+ };
177
+ export var rehypeSanitizeUserHtml = function rehypeSanitizeUserHtml() {
178
+ return function(tree) {
179
+ sanitizeHastNode(tree);
180
+ return tree;
181
+ };
182
+ };
@@ -75,12 +75,12 @@ var genStyle = function genStyle(token) {
75
75
  border: 'none',
76
76
  background: 'none',
77
77
  cursor: 'pointer',
78
- color: '#767e8b',
78
+ color: 'var(--color-gray-text-secondary)',
79
79
  transition: 'all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)',
80
80
  borderRadius: 'var(--radius-control-base)',
81
81
  backdropFilter: 'blur(20px)',
82
82
  '&:hover': {
83
- background: '#f0f0f0'
83
+ background: 'var(--color-gray-control-fill-active)'
84
84
  }
85
85
  }), // 返回图标
86
86
  _define_property(_obj3, "&-back-icon", {
@@ -111,17 +111,17 @@ var genStyle = function genStyle(token) {
111
111
  }, _define_property(_obj1, "&--html", {
112
112
  width: '40px',
113
113
  height: '40px',
114
- color: '#00B5FD',
114
+ color: 'var(--color-blue-text-default)',
115
115
  background: 'linear-gradient(180deg, rgba(0, 181, 253, 0.15), rgba(0, 181, 253, 0.08))'
116
116
  }), _define_property(_obj1, "&--md", {
117
117
  width: '40px',
118
118
  height: '40px',
119
- color: '#FF7A00',
119
+ color: 'var(--color-orange-text-default)',
120
120
  background: 'linear-gradient(180deg, rgba(35, 214, 220, 0.15), rgba(35, 214, 220, 0.08))'
121
121
  }), _define_property(_obj1, "&--default", {
122
122
  width: '40px',
123
123
  height: '40px',
124
- background: 'linear-gradient(180deg, #EAEEF4, #F4F6F9)'
124
+ background: 'linear-gradient(180deg, var(--color-gray-bg-page-light), var(--color-gray-bg-page))'
125
125
  }), _obj1)), _define_property(_obj3, "&-content", {
126
126
  display: 'flex',
127
127
  alignItems: 'center',
@@ -202,20 +202,20 @@ var genStyle = function genStyle(token) {
202
202
  background: 'transparent'
203
203
  },
204
204
  '.ace-tm .ace_gutter-active-line': {
205
- color: '#FFFFFF',
205
+ color: 'var(--color-gray-bg-card-white)',
206
206
  background: 'transparent'
207
207
  },
208
208
  '.ace-tm .ace_comment': {
209
209
  color: 'rgba(255, 255, 255, 0.27)'
210
210
  },
211
211
  '.ace-tm .ace_keyword': {
212
- color: '#E873BB'
212
+ color: 'var(--color-sub5-text-default)'
213
213
  },
214
214
  '.ace_identifier, .ace_paren': {
215
- color: '#FFFFFF'
215
+ color: 'var(--color-gray-bg-card-white)'
216
216
  },
217
217
  '.ace-tm .ace_constant.ace_numeric': {
218
- color: '#84DC18'
218
+ color: 'var(--color-green-text-default)'
219
219
  },
220
220
  '.code-editor-container': {
221
221
  marginTop: 0,
@@ -230,7 +230,7 @@ var genStyle = function genStyle(token) {
230
230
  background: 'transparent'
231
231
  }
232
232
  }, "".concat(token.antCls, "-empty-description"), {
233
- color: '#d9d9d9'
233
+ color: 'var(--color-gray-text-light)'
234
234
  })), _obj4)), _define_property(_obj7, "&--markdown", _define_property({}, "".concat(token.antCls, '-agentic-md-editor-content div[data-be="paragraph"]:last-child'), {
235
235
  paddingBottom: '16px',
236
236
  color: 'var(--color-gray-text-light)',
@@ -298,7 +298,7 @@ var genStyle = function genStyle(token) {
298
298
  background: 'rgba(255, 255, 255, 0.6)'
299
299
  }), _define_property(_obj6, "&--error", {
300
300
  background: 'rgba(255, 245, 245, 0.6)',
301
- color: '#cb1e1e'
301
+ color: 'var(--color-red-text-default)'
302
302
  }), _obj6)), _define_property(_obj7, "&-empty", {
303
303
  display: 'flex',
304
304
  alignItems: 'center',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ant-design/agentic-ui",
3
- "version": "2.31.3",
3
+ "version": "2.31.4",
4
4
  "description": "面向智能体的 UI 组件库,提供多步推理可视化、工具调用展示、任务执行协同等 Agentic UI 能力",
5
5
  "repository": "git@github.com:ant-design/agentic-ui.git",
6
6
  "license": "MIT",