@ant-design/agentic-ui 2.30.21 → 2.30.22

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 (65) hide show
  1. package/dist/Bubble/MessagesContent/MarkdownPreview.js +6 -5
  2. package/dist/Bubble/OpenAIMessageBubble/index.d.ts +11 -0
  3. package/dist/Bubble/OpenAIMessageBubble/index.js +8 -0
  4. package/dist/Bubble/OpenAIMessageBubble/mapOllamaMessages.d.ts +7 -0
  5. package/dist/Bubble/OpenAIMessageBubble/mapOllamaMessages.js +136 -0
  6. package/dist/Bubble/OpenAIMessageBubble/mapOpenAIMessages.d.ts +8 -0
  7. package/dist/Bubble/OpenAIMessageBubble/mapOpenAIMessages.js +156 -0
  8. package/dist/Bubble/OpenAIMessageBubble/mapOpenClawMessages.d.ts +8 -0
  9. package/dist/Bubble/OpenAIMessageBubble/mapOpenClawMessages.js +127 -0
  10. package/dist/Bubble/OpenAIMessageBubble/normalizeOllamaMessages.d.ts +16 -0
  11. package/dist/Bubble/OpenAIMessageBubble/normalizeOllamaMessages.js +110 -0
  12. package/dist/Bubble/OpenAIMessageBubble/normalizeOpenClawMessages.d.ts +10 -0
  13. package/dist/Bubble/OpenAIMessageBubble/normalizeOpenClawMessages.js +61 -0
  14. package/dist/Bubble/OpenAIMessageBubble/ollamaTypes.d.ts +48 -0
  15. package/dist/Bubble/OpenAIMessageBubble/ollamaTypes.js +1 -0
  16. package/dist/Bubble/OpenAIMessageBubble/openClawTypes.d.ts +27 -0
  17. package/dist/Bubble/OpenAIMessageBubble/openClawTypes.js +1 -0
  18. package/dist/Bubble/OpenAIMessageBubble/types.d.ts +71 -0
  19. package/dist/Bubble/OpenAIMessageBubble/types.js +1 -0
  20. package/dist/Bubble/OpenAIMessageBubble/useOllamaMessageBubbleData.d.ts +7 -0
  21. package/dist/Bubble/OpenAIMessageBubble/useOllamaMessageBubbleData.js +23 -0
  22. package/dist/Bubble/OpenAIMessageBubble/useOpenAIMessageBubbleData.d.ts +6 -0
  23. package/dist/Bubble/OpenAIMessageBubble/useOpenAIMessageBubbleData.js +20 -0
  24. package/dist/Bubble/OpenAIMessageBubble/useOpenClawMessageBubbleData.d.ts +7 -0
  25. package/dist/Bubble/OpenAIMessageBubble/useOpenClawMessageBubbleData.js +22 -0
  26. package/dist/Bubble/index.d.ts +2 -0
  27. package/dist/Bubble/index.js +1 -0
  28. package/dist/MarkdownEditor/editor/Editor.js +24 -12
  29. package/dist/MarkdownEditor/editor/elements/Table/SimpleTable.js +5 -1
  30. package/dist/MarkdownEditor/editor/elements/Table/commands/tableCommands.js +24 -8
  31. package/dist/MarkdownEditor/editor/elements/index.js +18 -14
  32. package/dist/MarkdownEditor/editor/store.d.ts +12 -0
  33. package/dist/MarkdownEditor/editor/store.js +30 -5
  34. package/dist/MarkdownEditor/editor/tools/InsertAutocomplete.js +15 -11
  35. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileListItem.d.ts +1 -1
  36. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileListItem.js +4 -5
  37. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/index.d.ts +1 -1
  38. package/dist/MarkdownInputField/AttachmentButton/index.d.ts +1 -1
  39. package/dist/MarkdownInputField/MarkdownInputField.js +6 -1
  40. package/dist/MarkdownInputField/hooks/useMarkdownInputFieldHandlers.js +6 -2
  41. package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.d.ts +1 -0
  42. package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.js +36 -5
  43. package/dist/MarkdownInputField/utils/renderHelpers.js +5 -0
  44. package/dist/MarkdownRenderer/FncRefForMarkdown.d.ts +24 -0
  45. package/dist/MarkdownRenderer/FncRefForMarkdown.js +65 -0
  46. package/dist/MarkdownRenderer/MarkdownRenderer.js +24 -9
  47. package/dist/MarkdownRenderer/extractFootnoteDefinitions.d.ts +13 -0
  48. package/dist/MarkdownRenderer/extractFootnoteDefinitions.js +40 -0
  49. package/dist/MarkdownRenderer/markdownReactShared.d.ts +4 -1
  50. package/dist/MarkdownRenderer/markdownReactShared.js +20 -10
  51. package/dist/MarkdownRenderer/renderers/CodeRenderer.d.ts +4 -1
  52. package/dist/MarkdownRenderer/renderers/CodeRenderer.js +27 -3
  53. package/dist/MarkdownRenderer/renderers/SchemaRenderer.d.ts +2 -0
  54. package/dist/MarkdownRenderer/renderers/SchemaRenderer.js +33 -5
  55. package/dist/MarkdownRenderer/streaming/useStreamingMarkdownReact.js +2 -1
  56. package/dist/MarkdownRenderer/types.d.ts +5 -9
  57. package/dist/MarkdownRenderer/useMarkdownToReact.js +1 -1
  58. package/dist/Plugins/mermaid/MermaidRendererImpl.js +481 -7
  59. package/dist/Plugins/mermaid/style.js +71 -22
  60. package/dist/Plugins/mermaid/useMermaidRender.d.ts +2 -1
  61. package/dist/Plugins/mermaid/useMermaidRender.js +41 -13
  62. package/dist/Plugins/mermaid/utils.d.ts +16 -0
  63. package/dist/Plugins/mermaid/utils.js +197 -5
  64. package/dist/Workspace/Browser/index.js +19 -1
  65. package/package.json +8 -7
@@ -52,15 +52,18 @@ function _object_spread_props(target, source) {
52
52
  }
53
53
  import { useEditorStyleRegister } from "../../Hooks/useStyle";
54
54
  var genStyle = function genStyle(token) {
55
- return _define_property({}, token.componentCls, {
55
+ var gridLightColor = 'rgba(0, 0, 0, 0.08)';
56
+ var gridDarkColor = 'rgba(255, 255, 255, 0.14)';
57
+ var _obj;
58
+ return _obj = {}, _define_property(_obj, token.componentCls, {
56
59
  marginBottom: '0.75em',
57
60
  cursor: 'default',
58
61
  userSelect: 'none',
59
62
  padding: '0.75rem 0',
60
63
  borderRadius: '1em',
61
64
  maxWidth: '800px',
62
- border: '1px solid #e8e8e8',
63
- backgroundColor: '#fff',
65
+ border: "1px solid ".concat(token.colorBorder),
66
+ backgroundColor: token.colorBgContainer,
64
67
  minWidth: '240px',
65
68
  minHeight: '200px',
66
69
  display: 'flex',
@@ -72,27 +75,70 @@ var genStyle = function genStyle(token) {
72
75
  contain: 'layout style paint',
73
76
  overflow: 'hidden',
74
77
  transition: 'height 0.3s ease, min-height 0.3s ease',
75
- '& [data-mermaid-container="true"]': {
78
+ '&-fullscreen': {
76
79
  width: '100%',
80
+ maxWidth: '100%',
81
+ height: '100%'
82
+ },
83
+ '&-toolbar-float': {
84
+ position: 'absolute',
85
+ top: token.paddingSM,
86
+ insetInlineEnd: token.paddingSM,
87
+ left: 'auto',
88
+ zIndex: 10,
77
89
  display: 'flex',
90
+ alignItems: 'center',
91
+ gap: token.paddingXXS,
92
+ pointerEvents: 'auto'
93
+ },
94
+ '&-viewport': {
95
+ flex: 1,
96
+ width: '100%',
97
+ minHeight: 220,
98
+ overflow: 'hidden',
99
+ position: 'relative',
100
+ touchAction: 'none',
101
+ cursor: 'grab'
102
+ },
103
+ '&-viewport[data-mermaid-panning="true"]': {
104
+ cursor: 'grabbing'
105
+ },
106
+ '&-viewport[data-mermaid-grid="true"]': {
107
+ backgroundSize: '28px 28px',
108
+ backgroundImage: "radial-gradient(circle, ".concat(gridLightColor, " 1.2px, transparent 1.2px)")
109
+ },
110
+ '&-viewport[data-mermaid-grid="true"]&-dark-grid': {
111
+ backgroundImage: "radial-gradient(circle, ".concat(gridDarkColor, " 1.2px, transparent 1.2px)")
112
+ },
113
+ '& [data-mermaid-container="true"]': {
114
+ zIndex: 0,
115
+ width: '100%',
116
+ minHeight: 220,
117
+ display: 'block',
78
118
  justifyContent: 'center',
79
119
  position: 'relative',
80
120
  isolation: 'isolate',
81
121
  contain: 'layout style paint',
82
- overflow: 'hidden',
83
- transition: 'opacity 0.3s ease, height 0.3s ease, min-height 0.3s ease, max-height 0.3s ease'
122
+ overflow: 'visible',
123
+ transition: 'opacity 0.3s ease, height 0.3s ease, min-height 0.3s ease, max-height 0.3s ease',
124
+ '--mermaid-pan-x': '0px',
125
+ '--mermaid-pan-y': '0px',
126
+ '--mermaid-scale': 1
84
127
  },
85
128
  '& [data-mermaid-wrapper]': {
86
129
  position: 'relative',
87
- width: '100%',
88
- maxWidth: '100%',
89
- overflow: 'hidden',
130
+ width: 'max-content',
131
+ maxWidth: 'none',
132
+ overflow: 'visible',
90
133
  isolation: 'isolate',
91
134
  contain: 'layout style paint',
92
135
  display: 'flex',
93
- justifyContent: 'center',
94
- alignItems: 'center',
95
- minHeight: '200px'
136
+ justifyContent: 'flex-start',
137
+ alignItems: 'flex-start',
138
+ minHeight: 0,
139
+ transform: 'translate(var(--mermaid-pan-x), var(--mermaid-pan-y)) scale(var(--mermaid-scale))',
140
+ transformOrigin: '0 0',
141
+ willChange: 'transform'
96
142
  },
97
143
  '& [data-mermaid-svg="true"]': {
98
144
  maxWidth: '100%',
@@ -101,7 +147,7 @@ var genStyle = function genStyle(token) {
101
147
  },
102
148
  '&-error': {
103
149
  textAlign: 'center',
104
- color: 'rgba(239, 68, 68, 0.8)',
150
+ color: token.colorError,
105
151
  padding: '0.5rem',
106
152
  flex: 1,
107
153
  position: 'relative',
@@ -114,7 +160,7 @@ var genStyle = function genStyle(token) {
114
160
  },
115
161
  '&-empty': {
116
162
  textAlign: 'left',
117
- color: '#6B7280',
163
+ color: token.colorTextSecondary,
118
164
  padding: '0.75rem 1.5rem',
119
165
  position: 'relative',
120
166
  zIndex: 1,
@@ -137,30 +183,33 @@ var genStyle = function genStyle(token) {
137
183
  '& svg': {
138
184
  '& .node': {
139
185
  '& rect, & circle, & ellipse, & polygon': {
140
- stroke: '#333',
186
+ stroke: token.colorBorder,
141
187
  strokeWidth: '1px',
142
- fill: '#fff'
188
+ fill: token.colorBgContainer
143
189
  }
144
190
  },
145
191
  '& text': {
146
192
  dominantBaseline: 'middle',
147
- textAnchor: 'middle'
193
+ textAnchor: 'middle',
194
+ fill: "".concat(token.colorText, " !important")
148
195
  },
149
196
  '& .nodeLabel': {
150
197
  fontWeight: 500,
151
- fill: '#333 !important'
198
+ fill: "".concat(token.colorText, " !important")
152
199
  },
153
200
  '& .edgeLabel': {
154
- fill: '#666 !important'
201
+ fill: "".concat(token.colorTextSecondary, " !important")
155
202
  },
156
203
  '& .flowchart-label': {
157
- fill: '#333 !important'
204
+ fill: "".concat(token.colorText, " !important")
158
205
  },
159
206
  '& .label': {
160
- fill: '#333 !important'
207
+ fill: "".concat(token.colorText, " !important")
161
208
  }
162
209
  }
163
- });
210
+ }), _define_property(_obj, "".concat(token.componentCls, '[data-mermaid-theme="dark"] ').concat(token.componentCls, '-viewport[data-mermaid-grid="true"]'), {
211
+ backgroundImage: "radial-gradient(circle, ".concat(gridDarkColor, " 1.2px, transparent 1.2px)")
212
+ }), _obj;
164
213
  };
165
214
  export function useStyle(prefixCls) {
166
215
  return useEditorStyleRegister('agentic-plugin-mermaid', function(token) {
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
+ import type { MermaidThemeToken } from './utils';
2
3
  /**
3
4
  * Mermaid 渲染 Hook
4
5
  */
5
- export declare const useMermaidRender: (code: string, divRef: React.RefObject<HTMLDivElement>, id: string, isVisible: boolean) => {
6
+ export declare const useMermaidRender: (code: string, divRef: React.RefObject<HTMLDivElement>, id: string, isVisible: boolean, themeToken?: MermaidThemeToken) => {
6
7
  error: string;
7
8
  renderedCode: string;
8
9
  };
@@ -172,25 +172,40 @@ function _ts_generator(thisArg, body) {
172
172
  };
173
173
  }
174
174
  }
175
- import { useEffect, useRef, useState } from "react";
176
- import { cleanupTempElement, loadMermaid, renderSvgToContainer } from "./utils";
175
+ import { useEffect, useMemo, useRef, useState } from "react";
176
+ import { applyMermaidTheme, cleanupTempElement, createMermaidThemeConfig, loadMermaid, renderSvgToContainer } from "./utils";
177
177
  /**
178
178
  * Mermaid 渲染 Hook
179
- */ export var useMermaidRender = function useMermaidRender(code, divRef, id, isVisible) {
179
+ */ export var useMermaidRender = function useMermaidRender(code, divRef, id, isVisible, themeToken) {
180
180
  var timer = useRef(null);
181
181
  var mermaidRef = useRef(null);
182
- var renderedCodeRef = useRef('');
182
+ var renderedSignatureRef = useRef('');
183
+ var latestRenderSignatureRef = useRef('');
184
+ var appliedThemeCacheKeyRef = useRef('');
183
185
  var _useState = _sliced_to_array(useState(''), 2), error = _useState[0], setError = _useState[1];
184
186
  var _useState1 = _sliced_to_array(useState(''), 2), renderedCode = _useState1[0], setRenderedCode = _useState1[1];
187
+ var themeConfig = useMemo(function() {
188
+ return createMermaidThemeConfig(themeToken);
189
+ }, [
190
+ themeToken === null || themeToken === void 0 ? void 0 : themeToken.colorBgContainer,
191
+ themeToken === null || themeToken === void 0 ? void 0 : themeToken.colorBgElevated,
192
+ themeToken === null || themeToken === void 0 ? void 0 : themeToken.colorBorder,
193
+ themeToken === null || themeToken === void 0 ? void 0 : themeToken.colorPrimary,
194
+ themeToken === null || themeToken === void 0 ? void 0 : themeToken.colorText,
195
+ themeToken === null || themeToken === void 0 ? void 0 : themeToken.colorTextSecondary,
196
+ themeToken === null || themeToken === void 0 ? void 0 : themeToken.fontFamily
197
+ ]);
198
+ var renderSignature = "".concat(themeConfig.cacheKey, "::").concat(code);
199
+ latestRenderSignatureRef.current = renderSignature;
185
200
  useEffect(function() {
186
- if (!isVisible || renderedCodeRef.current === code) {
201
+ if (!isVisible || renderedSignatureRef.current === renderSignature) {
187
202
  return;
188
203
  }
189
204
  if (timer.current) {
190
205
  window.clearTimeout(timer.current);
191
206
  }
192
207
  if (!code) {
193
- renderedCodeRef.current = '';
208
+ renderedSignatureRef.current = '';
194
209
  setRenderedCode('');
195
210
  setError('');
196
211
  if (divRef.current) {
@@ -198,14 +213,14 @@ import { cleanupTempElement, loadMermaid, renderSvgToContainer } from "./utils";
198
213
  }
199
214
  return;
200
215
  }
201
- var currentCode = code;
216
+ var currentSignature = renderSignature;
202
217
  timer.current = window.setTimeout(function() {
203
218
  return _async_to_generator(function() {
204
219
  var _mermaidRef_current, api, _tmp, trimmedCode, svg, err;
205
220
  return _ts_generator(this, function(_state) {
206
221
  switch(_state.label){
207
222
  case 0:
208
- if (code !== currentCode) {
223
+ if (latestRenderSignatureRef.current !== currentSignature) {
209
224
  timer.current = null;
210
225
  return [
211
226
  2
@@ -239,9 +254,13 @@ import { cleanupTempElement, loadMermaid, renderSvgToContainer } from "./utils";
239
254
  case 4:
240
255
  api = _tmp;
241
256
  mermaidRef.current = api;
257
+ if (appliedThemeCacheKeyRef.current !== themeConfig.cacheKey) {
258
+ applyMermaidTheme(api, themeConfig);
259
+ appliedThemeCacheKeyRef.current = themeConfig.cacheKey;
260
+ }
242
261
  trimmedCode = code.trim();
243
262
  if (!trimmedCode) {
244
- renderedCodeRef.current = '';
263
+ renderedSignatureRef.current = '';
245
264
  setRenderedCode('');
246
265
  setError('');
247
266
  if (divRef.current) {
@@ -258,10 +277,16 @@ import { cleanupTempElement, loadMermaid, renderSvgToContainer } from "./utils";
258
277
  ];
259
278
  case 5:
260
279
  svg = _state.sent().svg;
280
+ if (latestRenderSignatureRef.current !== currentSignature) {
281
+ timer.current = null;
282
+ return [
283
+ 2
284
+ ];
285
+ }
261
286
  if (divRef.current) {
262
287
  renderSvgToContainer(svg, divRef.current);
263
288
  }
264
- renderedCodeRef.current = code;
289
+ renderedSignatureRef.current = currentSignature;
265
290
  setRenderedCode(code);
266
291
  setError('');
267
292
  return [
@@ -270,9 +295,9 @@ import { cleanupTempElement, loadMermaid, renderSvgToContainer } from "./utils";
270
295
  ];
271
296
  case 6:
272
297
  err = _state.sent();
273
- if (code === currentCode) {
298
+ if (latestRenderSignatureRef.current === currentSignature) {
274
299
  setError(String(err));
275
- renderedCodeRef.current = code;
300
+ renderedSignatureRef.current = currentSignature;
276
301
  setRenderedCode(code);
277
302
  if (divRef.current) {
278
303
  divRef.current.innerHTML = '';
@@ -305,7 +330,10 @@ import { cleanupTempElement, loadMermaid, renderSvgToContainer } from "./utils";
305
330
  }, [
306
331
  code,
307
332
  id,
308
- isVisible
333
+ isVisible,
334
+ renderSignature,
335
+ themeConfig,
336
+ divRef
309
337
  ]);
310
338
  return {
311
339
  error: error,
@@ -1,4 +1,20 @@
1
1
  import type { MermaidApi } from './types';
2
+ export interface MermaidThemeToken {
3
+ colorBgContainer?: string;
4
+ colorBgElevated?: string;
5
+ colorText?: string;
6
+ colorTextSecondary?: string;
7
+ colorBorder?: string;
8
+ colorPrimary?: string;
9
+ fontFamily?: string;
10
+ }
11
+ export interface MermaidThemeConfig {
12
+ cacheKey: string;
13
+ darkMode: boolean;
14
+ themeVariables: Record<string, string>;
15
+ }
16
+ export declare const createMermaidThemeConfig: (token?: MermaidThemeToken) => MermaidThemeConfig;
17
+ export declare const applyMermaidTheme: (api: MermaidApi, themeConfig?: MermaidThemeConfig) => void;
2
18
  /**
3
19
  * 加载 Mermaid 库
4
20
  * 使用单例模式确保只加载一次,并初始化配置
@@ -1,3 +1,11 @@
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_with_holes(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
1
9
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
10
  try {
3
11
  var info = gen[key](arg);
@@ -34,6 +42,44 @@ function _instanceof(left, right) {
34
42
  return left instanceof right;
35
43
  }
36
44
  }
45
+ function _iterable_to_array_limit(arr, i) {
46
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
47
+ if (_i == null) return;
48
+ var _arr = [];
49
+ var _n = true;
50
+ var _d = false;
51
+ var _s, _e;
52
+ try {
53
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
54
+ _arr.push(_s.value);
55
+ if (i && _arr.length === i) break;
56
+ }
57
+ } catch (err) {
58
+ _d = true;
59
+ _e = err;
60
+ } finally{
61
+ try {
62
+ if (!_n && _i["return"] != null) _i["return"]();
63
+ } finally{
64
+ if (_d) throw _e;
65
+ }
66
+ }
67
+ return _arr;
68
+ }
69
+ function _non_iterable_rest() {
70
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
71
+ }
72
+ function _sliced_to_array(arr, i) {
73
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
74
+ }
75
+ function _unsupported_iterable_to_array(o, minLen) {
76
+ if (!o) return;
77
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
78
+ var n = Object.prototype.toString.call(o).slice(8, -1);
79
+ if (n === "Object" && o.constructor) n = o.constructor.name;
80
+ if (n === "Map" || n === "Set") return Array.from(n);
81
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
82
+ }
37
83
  function _ts_generator(thisArg, body) {
38
84
  var f, y, t, _ = {
39
85
  label: 0,
@@ -134,6 +180,156 @@ function _ts_generator(thisArg, body) {
134
180
  }
135
181
  }
136
182
  var mermaidLoader = null;
183
+ var COLOR_DARKNESS_THRESHOLD = 145;
184
+ var DEFAULT_LIGHT_BACKGROUND = '#ffffff';
185
+ var DEFAULT_DARK_BACKGROUND = '#141414';
186
+ var DEFAULT_LIGHT_TEXT_COLOR = '#1f1f1f';
187
+ var DEFAULT_DARK_TEXT_COLOR = '#f5f5f5';
188
+ var DEFAULT_LIGHT_SECONDARY_TEXT_COLOR = '#595959';
189
+ var DEFAULT_DARK_SECONDARY_TEXT_COLOR = '#bfbfbf';
190
+ var DEFAULT_LIGHT_BORDER_COLOR = '#d9d9d9';
191
+ var DEFAULT_DARK_BORDER_COLOR = '#434343';
192
+ var DEFAULT_PRIMARY_COLOR = '#1677ff';
193
+ var DEFAULT_FONT_FAMILY = 'Inter, -apple-system, Segoe UI, sans-serif';
194
+ var parseColorToRgb = function parseColorToRgb(color) {
195
+ var normalizedColor = color.trim().toLowerCase();
196
+ var shortHexMatch = normalizedColor.match(/^#([0-9a-f]{3})$/i);
197
+ if (shortHexMatch) {
198
+ var _shortHexMatch__split_map = _sliced_to_array(shortHexMatch[1].split('').map(function(char) {
199
+ return Number.parseInt(char + char, 16);
200
+ }), 3), r = _shortHexMatch__split_map[0], g = _shortHexMatch__split_map[1], b = _shortHexMatch__split_map[2];
201
+ return {
202
+ r: r,
203
+ g: g,
204
+ b: b
205
+ };
206
+ }
207
+ var hexMatch = normalizedColor.match(/^#([0-9a-f]{6})$/i);
208
+ if (hexMatch) {
209
+ return {
210
+ r: Number.parseInt(hexMatch[1].slice(0, 2), 16),
211
+ g: Number.parseInt(hexMatch[1].slice(2, 4), 16),
212
+ b: Number.parseInt(hexMatch[1].slice(4, 6), 16)
213
+ };
214
+ }
215
+ var rgbMatch = normalizedColor.match(/^rgba?\((\d{1,3})[\s,]+(\d{1,3})[\s,]+(\d{1,3})(?:[\s,]+[\d.]+)?\)$/i);
216
+ if (rgbMatch) {
217
+ return {
218
+ r: Number.parseInt(rgbMatch[1], 10),
219
+ g: Number.parseInt(rgbMatch[2], 10),
220
+ b: Number.parseInt(rgbMatch[3], 10)
221
+ };
222
+ }
223
+ return null;
224
+ };
225
+ var isDarkBackground = function isDarkBackground(color) {
226
+ if (!color) {
227
+ return false;
228
+ }
229
+ var rgbColor = parseColorToRgb(color);
230
+ if (!rgbColor) {
231
+ return false;
232
+ }
233
+ var brightness = (rgbColor.r * 299 + rgbColor.g * 587 + rgbColor.b * 114) / 1000;
234
+ return brightness < COLOR_DARKNESS_THRESHOLD;
235
+ };
236
+ var isLightTextColor = function isLightTextColor(color) {
237
+ if (!color) {
238
+ return false;
239
+ }
240
+ var rgbColor = parseColorToRgb(color);
241
+ if (!rgbColor) {
242
+ return false;
243
+ }
244
+ var brightness = (rgbColor.r * 299 + rgbColor.g * 587 + rgbColor.b * 114) / 1000;
245
+ return brightness >= COLOR_DARKNESS_THRESHOLD;
246
+ };
247
+ var inferDarkMode = function inferDarkMode(token) {
248
+ if (isDarkBackground(token.colorBgContainer)) {
249
+ return true;
250
+ }
251
+ // Fallback for CSS variables / unresolved background colors.
252
+ return isLightTextColor(token.colorText);
253
+ };
254
+ export var createMermaidThemeConfig = function createMermaidThemeConfig() {
255
+ var token = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
256
+ var darkMode = inferDarkMode(token);
257
+ var background = token.colorBgContainer ? token.colorBgContainer : darkMode ? DEFAULT_DARK_BACKGROUND : DEFAULT_LIGHT_BACKGROUND;
258
+ var elevatedBackground = token.colorBgElevated || (darkMode ? '#1f1f1f' : '#fafafa');
259
+ var textColor = token.colorText ? token.colorText : darkMode ? DEFAULT_DARK_TEXT_COLOR : DEFAULT_LIGHT_TEXT_COLOR;
260
+ var secondaryTextColor = token.colorTextSecondary ? token.colorTextSecondary : darkMode ? DEFAULT_DARK_SECONDARY_TEXT_COLOR : DEFAULT_LIGHT_SECONDARY_TEXT_COLOR;
261
+ var borderColor = token.colorBorder ? token.colorBorder : darkMode ? DEFAULT_DARK_BORDER_COLOR : DEFAULT_LIGHT_BORDER_COLOR;
262
+ var primaryColor = token.colorPrimary || DEFAULT_PRIMARY_COLOR;
263
+ var fontFamily = token.fontFamily || DEFAULT_FONT_FAMILY;
264
+ var themeVariables = {
265
+ primaryColor: primaryColor,
266
+ primaryTextColor: textColor,
267
+ primaryBorderColor: borderColor,
268
+ lineColor: borderColor,
269
+ mainBkg: background,
270
+ secondBkg: elevatedBackground,
271
+ tertiaryColor: elevatedBackground,
272
+ background: background,
273
+ textColor: textColor,
274
+ fontFamily: fontFamily,
275
+ clusterBkg: elevatedBackground,
276
+ clusterBorder: borderColor,
277
+ edgeLabelBackground: background,
278
+ edgeLabelTextColor: secondaryTextColor,
279
+ nodeBkg: background,
280
+ nodeBorder: borderColor,
281
+ defaultLinkColor: borderColor,
282
+ titleColor: textColor,
283
+ actorBkg: elevatedBackground,
284
+ actorBorder: borderColor,
285
+ actorTextColor: textColor,
286
+ actorLineColor: borderColor,
287
+ signalColor: secondaryTextColor,
288
+ signalTextColor: textColor,
289
+ labelBoxBkgColor: background,
290
+ labelBoxBorderColor: borderColor,
291
+ labelTextColor: textColor,
292
+ loopTextColor: textColor,
293
+ noteBkg: elevatedBackground,
294
+ noteBorderColor: borderColor,
295
+ noteTextColor: textColor,
296
+ activationBorderColor: borderColor,
297
+ activationBkgColor: elevatedBackground,
298
+ sequenceNumberColor: textColor
299
+ };
300
+ var cacheKey = [
301
+ darkMode ? 'dark' : 'light',
302
+ background,
303
+ elevatedBackground,
304
+ textColor,
305
+ secondaryTextColor,
306
+ borderColor,
307
+ primaryColor,
308
+ fontFamily
309
+ ].join('|');
310
+ return {
311
+ cacheKey: cacheKey,
312
+ darkMode: darkMode,
313
+ themeVariables: themeVariables
314
+ };
315
+ };
316
+ export var applyMermaidTheme = function applyMermaidTheme(api, themeConfig) {
317
+ if (!(api === null || api === void 0 ? void 0 : api.initialize)) {
318
+ return;
319
+ }
320
+ if (!themeConfig) {
321
+ api.initialize({
322
+ startOnLoad: false
323
+ });
324
+ return;
325
+ }
326
+ api.initialize({
327
+ startOnLoad: false,
328
+ theme: 'base',
329
+ darkMode: themeConfig.darkMode,
330
+ themeVariables: themeConfig.themeVariables
331
+ });
332
+ };
137
333
  /**
138
334
  * 加载 Mermaid 库
139
335
  * 使用单例模式确保只加载一次,并初始化配置
@@ -148,11 +344,7 @@ var mermaidLoader = null;
148
344
  // webpackChunkName 指定 chunk 名称,webpackMode 指定加载模式
149
345
  mermaidLoader = import(/* webpackChunkName: "mermaid" */ /* webpackMode: "lazy" */ "mermaid").then(function(module) {
150
346
  var api = module.default;
151
- if (api === null || api === void 0 ? void 0 : api.initialize) {
152
- api.initialize({
153
- startOnLoad: false
154
- });
155
- }
347
+ applyMermaidTheme(api);
156
348
  return api;
157
349
  }).catch(function(error) {
158
350
  mermaidLoader = null;
@@ -164,6 +164,15 @@ export var BrowserItemComponent = function BrowserItemComponent(param) {
164
164
  e.stopPropagation();
165
165
  onLocate === null || onLocate === void 0 ? void 0 : onLocate(item);
166
166
  };
167
+ var handleOpenFromSite = function handleOpenFromSite(e) {
168
+ e.preventDefault();
169
+ e.stopPropagation();
170
+ if (onOpen) {
171
+ onOpen(item);
172
+ return;
173
+ }
174
+ window.open(item.url, '_blank', 'noopener,noreferrer');
175
+ };
167
176
  return wrapSSR(/*#__PURE__*/ React.createElement(List.Item, {
168
177
  className: className,
169
178
  style: itemStyle,
@@ -197,7 +206,16 @@ export var BrowserItemComponent = function BrowserItemComponent(param) {
197
206
  }, /*#__PURE__*/ React.createElement("div", {
198
207
  className: classNames("".concat(prefixCls, "-result-item-title"), hashId)
199
208
  }, item.title)))), /*#__PURE__*/ React.createElement("div", {
200
- className: classNames("".concat(prefixCls, "-result-item-site"), hashId)
209
+ className: classNames("".concat(prefixCls, "-result-item-site"), hashId),
210
+ role: "link",
211
+ tabIndex: 0,
212
+ "aria-label": item.site,
213
+ onClick: handleOpenFromSite,
214
+ onKeyDown: function onKeyDown(event) {
215
+ if (event.key === 'Enter' || event.key === ' ') {
216
+ handleOpenFromSite(event);
217
+ }
218
+ }
201
219
  }, renderSiteAvatar(item.site, item.icon), /*#__PURE__*/ React.createElement(Tooltip, {
202
220
  title: item.site,
203
221
  mouseEnterDelay: 1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ant-design/agentic-ui",
3
- "version": "2.30.21",
3
+ "version": "2.30.22",
4
4
  "description": "面向智能体的 UI 组件库,提供多步推理可视化、工具调用展示、任务执行协同等 Agentic UI 能力",
5
5
  "repository": "git@github.com:ant-design/agentic-ui.git",
6
6
  "license": "MIT",
@@ -24,6 +24,7 @@
24
24
  "lint:css": "stylelint \"{src,test}/**/*.{css,less}\"",
25
25
  "lint:es": "eslint \"{src,test}/**/*.{js,jsx,ts,tsx}\"",
26
26
  "prepare": "husky install && dumi setup",
27
+ "prepublishOnly": "npm run build && npm run test",
27
28
  "prettier": "prettier --write \"{src,docs,test}/**/*.{js,jsx,ts,tsx,css,less,json,md}\"",
28
29
  "preview": "pnpm dumi preview",
29
30
  "report:demo": "node scripts/generateDemoReport.js",
@@ -85,14 +86,14 @@
85
86
  "hast-util-to-jsx-runtime": "^2.3.6",
86
87
  "is-hotkey": "^0.2.0",
87
88
  "json5": "^2.2.3",
88
- "katex": "^0.16.28",
89
+ "katex": "^0.16.44",
89
90
  "lodash": "^4.17.23",
90
91
  "lodash-es": "^4.17.23",
91
92
  "lottie-react": "^2.4.1",
92
93
  "markdown-it": "^14.1.1",
93
94
  "markdown-it-container": "^4.0.0",
94
95
  "mdast-util-directive": "^3.1.0",
95
- "mermaid": "^11.12.2",
96
+ "mermaid": "^11.14.0",
96
97
  "micromark-extension-directive": "^4.0.0",
97
98
  "mustache": "^4.2.0",
98
99
  "nanoid": "^5.1.6",
@@ -118,11 +119,11 @@
118
119
  "remark-rehype": "^11.1.2",
119
120
  "rxjs": "^7.8.2",
120
121
  "slash2": "^2.0.0",
121
- "slate": "0.120.0",
122
- "slate-dom": "0.119.0",
122
+ "slate": "0.124.0",
123
+ "slate-dom": "0.124.0",
123
124
  "slate-history": "0.113.1",
124
125
  "slate-hyperscript": "0.100.0",
125
- "slate-react": "0.120.0",
126
+ "slate-react": "0.124.0",
126
127
  "string-width": "^7.2.0",
127
128
  "styled-components": "^6.3.8",
128
129
  "tailwind-merge": "^3.4.0",
@@ -175,7 +176,7 @@
175
176
  "prettier-plugin-packagejson": "^2.5.22",
176
177
  "react": "^18.3.1",
177
178
  "react-dom": "^18.3.1",
178
- "recharts": "^3.7.0",
179
+ "recharts": "^3.8.1",
179
180
  "sast": "^0.8.1",
180
181
  "stylelint": "^14.16.1",
181
182
  "typescript": "^5.9.3",