@ant-design/agentic-ui 2.29.59 → 2.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Bubble/List/index.d.ts +7 -0
- package/dist/Bubble/List/index.js +10 -1
- package/dist/Bubble/MessagesContent/MarkdownPreview.js +27 -3
- package/dist/Bubble/UserBubble.js +3 -1
- package/dist/Bubble/type.d.ts +7 -0
- package/dist/Hooks/useLanguage.d.ts +1 -0
- package/dist/I18n/locales.d.ts +1 -0
- package/dist/I18n/locales.js +3 -1
- package/dist/MarkdownEditor/plugin.d.ts +15 -0
- package/dist/MarkdownEditor/style.js +156 -326
- package/dist/MarkdownEditor/types.d.ts +9 -0
- package/dist/MarkdownInputField/AttachmentButton/AttachmentButtonPopover.js +1 -1
- package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.js +10 -3
- package/dist/MarkdownRenderer/AnimationText.d.ts +22 -0
- package/dist/MarkdownRenderer/AnimationText.js +124 -0
- package/dist/MarkdownRenderer/CharacterQueue.d.ts +36 -0
- package/dist/MarkdownRenderer/CharacterQueue.js +188 -0
- package/dist/MarkdownRenderer/MarkdownRenderer.d.ts +13 -0
- package/dist/MarkdownRenderer/MarkdownRenderer.js +348 -0
- package/dist/MarkdownRenderer/index.d.ts +11 -0
- package/dist/MarkdownRenderer/index.js +9 -0
- package/dist/MarkdownRenderer/renderers/ChartRenderer.d.ts +12 -0
- package/dist/MarkdownRenderer/renderers/ChartRenderer.js +395 -0
- package/dist/MarkdownRenderer/renderers/CodeRenderer.d.ts +7 -0
- package/dist/MarkdownRenderer/renderers/CodeRenderer.js +218 -0
- package/dist/MarkdownRenderer/renderers/MermaidRenderer.d.ts +7 -0
- package/dist/MarkdownRenderer/renderers/MermaidRenderer.js +43 -0
- package/dist/MarkdownRenderer/renderers/SchemaRenderer.d.ts +15 -0
- package/dist/MarkdownRenderer/renderers/SchemaRenderer.js +115 -0
- package/dist/MarkdownRenderer/renderers/index.d.ts +4 -0
- package/dist/MarkdownRenderer/renderers/index.js +4 -0
- package/dist/MarkdownRenderer/style.d.ts +16 -0
- package/dist/MarkdownRenderer/style.js +46 -0
- package/dist/MarkdownRenderer/types.d.ts +74 -0
- package/dist/MarkdownRenderer/types.js +1 -0
- package/dist/MarkdownRenderer/useMarkdownToReact.d.ts +23 -0
- package/dist/MarkdownRenderer/useMarkdownToReact.js +1240 -0
- package/dist/MarkdownRenderer/useStreaming.d.ts +29 -0
- package/dist/MarkdownRenderer/useStreaming.js +392 -0
- package/dist/Plugins/chart/AreaChart/index.js +4 -2
- package/dist/Plugins/chart/LineChart/index.js +4 -2
- package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.d.ts +8 -0
- package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.js +31 -6
- package/dist/Plugins/mermaid/style.js +0 -3
- package/dist/TaskList/TaskList.js +3 -12
- package/dist/TaskList/components/TaskListItem.js +3 -12
- package/dist/ThoughtChainList/ThoughtChainListItem.js +2 -4
- package/dist/ThoughtChainList/index.js +4 -21
- package/dist/ToolUseBarThink/index.js +20 -59
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import React, { useMemo } from "react";
|
|
2
|
+
import partialParse from "../../MarkdownEditor/editor/parser/json-parse";
|
|
3
|
+
import { SchemaRenderer } from "../../Schema";
|
|
4
|
+
var extractTextContent = function extractTextContent1(children) {
|
|
5
|
+
var _children_props;
|
|
6
|
+
if (typeof children === 'string') return children;
|
|
7
|
+
if (typeof children === 'number') return String(children);
|
|
8
|
+
if (Array.isArray(children)) return children.map(extractTextContent).join('');
|
|
9
|
+
if (/*#__PURE__*/ React.isValidElement(children) && ((_children_props = children.props) === null || _children_props === void 0 ? void 0 : _children_props.children)) {
|
|
10
|
+
return extractTextContent(children.props.children);
|
|
11
|
+
}
|
|
12
|
+
return '';
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* 解析 schema/apaasify JSON 内容,与 Slate parseCode 的 processSchemaLanguage 对齐
|
|
16
|
+
*/ var parseSchemaValue = function parseSchemaValue(code) {
|
|
17
|
+
try {
|
|
18
|
+
return JSON.parse(code);
|
|
19
|
+
} catch (unused) {
|
|
20
|
+
try {
|
|
21
|
+
return partialParse(code || '[]');
|
|
22
|
+
} catch (unused) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Schema / Apaasify 渲染器
|
|
29
|
+
* 对齐 MarkdownEditor 的 ReadonlySchema 组件。
|
|
30
|
+
*
|
|
31
|
+
* 处理以下代码块语言:
|
|
32
|
+
* - ```schema → SchemaRenderer
|
|
33
|
+
* - ```apaasify → SchemaRenderer / 自定义 render
|
|
34
|
+
* - ```apassify → 同 apaasify(兼容旧版)
|
|
35
|
+
* - ```agentar-card → SchemaRenderer
|
|
36
|
+
*/ export var SchemaBlockRenderer = function SchemaBlockRenderer(props) {
|
|
37
|
+
var children = props.children, language = props.language, apaasifyRender = props.apaasifyRender;
|
|
38
|
+
var code = extractTextContent(children);
|
|
39
|
+
var schemaValue = useMemo(function() {
|
|
40
|
+
return parseSchemaValue(code);
|
|
41
|
+
}, [
|
|
42
|
+
code
|
|
43
|
+
]);
|
|
44
|
+
if (!schemaValue) {
|
|
45
|
+
return /*#__PURE__*/ React.createElement("pre", {
|
|
46
|
+
"data-testid": "schema-fallback",
|
|
47
|
+
style: {
|
|
48
|
+
background: 'rgb(242, 241, 241)',
|
|
49
|
+
color: 'rgb(27, 27, 27)',
|
|
50
|
+
padding: '1em',
|
|
51
|
+
borderRadius: '0.5em',
|
|
52
|
+
margin: '1em 0',
|
|
53
|
+
fontSize: '0.8em',
|
|
54
|
+
fontFamily: 'monospace',
|
|
55
|
+
lineHeight: '1.5',
|
|
56
|
+
overflowX: 'auto',
|
|
57
|
+
whiteSpace: 'pre-wrap',
|
|
58
|
+
wordBreak: 'break-all',
|
|
59
|
+
wordWrap: 'break-word'
|
|
60
|
+
}
|
|
61
|
+
}, /*#__PURE__*/ React.createElement("code", null, code));
|
|
62
|
+
}
|
|
63
|
+
if (apaasifyRender) {
|
|
64
|
+
var rendered = apaasifyRender(schemaValue);
|
|
65
|
+
if (rendered !== undefined) {
|
|
66
|
+
return /*#__PURE__*/ React.createElement("div", {
|
|
67
|
+
"data-testid": "schema-container",
|
|
68
|
+
contentEditable: false,
|
|
69
|
+
style: {
|
|
70
|
+
display: 'flex',
|
|
71
|
+
flexDirection: 'column',
|
|
72
|
+
userSelect: 'text',
|
|
73
|
+
WebkitUserSelect: 'text'
|
|
74
|
+
}
|
|
75
|
+
}, rendered, /*#__PURE__*/ React.createElement("div", {
|
|
76
|
+
"data-testid": "schema-hidden-json",
|
|
77
|
+
style: {
|
|
78
|
+
height: 1,
|
|
79
|
+
opacity: 0,
|
|
80
|
+
userSelect: 'none',
|
|
81
|
+
pointerEvents: 'none',
|
|
82
|
+
overflow: 'hidden'
|
|
83
|
+
}
|
|
84
|
+
}, JSON.stringify(schemaValue, null, 2)));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (language === 'agentar-card') {
|
|
88
|
+
return /*#__PURE__*/ React.createElement("div", {
|
|
89
|
+
"data-testid": "agentar-card-container",
|
|
90
|
+
style: {
|
|
91
|
+
padding: '0.5em'
|
|
92
|
+
},
|
|
93
|
+
"data-agentar-card": "true"
|
|
94
|
+
}, /*#__PURE__*/ React.createElement(SchemaRenderer, {
|
|
95
|
+
schema: schemaValue,
|
|
96
|
+
values: (schemaValue === null || schemaValue === void 0 ? void 0 : schemaValue.initialValues) || {},
|
|
97
|
+
useDefaultValues: false,
|
|
98
|
+
debug: false,
|
|
99
|
+
fallbackContent: null
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
return /*#__PURE__*/ React.createElement("div", {
|
|
103
|
+
"data-testid": "schema-renderer",
|
|
104
|
+
style: {
|
|
105
|
+
padding: '0.5em'
|
|
106
|
+
}
|
|
107
|
+
}, /*#__PURE__*/ React.createElement(SchemaRenderer, {
|
|
108
|
+
schema: schemaValue,
|
|
109
|
+
values: (schemaValue === null || schemaValue === void 0 ? void 0 : schemaValue.initialValues) || {},
|
|
110
|
+
useDefaultValues: false,
|
|
111
|
+
debug: false,
|
|
112
|
+
fallbackContent: null
|
|
113
|
+
}));
|
|
114
|
+
};
|
|
115
|
+
SchemaBlockRenderer.displayName = 'SchemaBlockRenderer';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* MarkdownRenderer 复用 MarkdownEditor 的样式体系。
|
|
4
|
+
* 两者使用相同的 CSS 前缀(agentic-md-editor),确保渲染结果视觉一致。
|
|
5
|
+
*
|
|
6
|
+
* 额外注册间距 CSS 变量回退值,防止宿主未定义 --margin-Nx 时间距异常。
|
|
7
|
+
* 使用低优先级选择器(:where),宿主定义的变量会自动覆盖。
|
|
8
|
+
*/
|
|
9
|
+
export { useStyle } from '../MarkdownEditor/style';
|
|
10
|
+
export declare const useRendererVarStyle: (prefixCls: string) => {
|
|
11
|
+
hashId: string;
|
|
12
|
+
wrapSSR: (node: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>) => import("react").JSX.Element;
|
|
13
|
+
} | {
|
|
14
|
+
wrapSSR: (node: any) => any;
|
|
15
|
+
hashId: string;
|
|
16
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* MarkdownRenderer 复用 MarkdownEditor 的样式体系。
|
|
16
|
+
* 两者使用相同的 CSS 前缀(agentic-md-editor),确保渲染结果视觉一致。
|
|
17
|
+
*
|
|
18
|
+
* 额外注册间距 CSS 变量回退值,防止宿主未定义 --margin-Nx 时间距异常。
|
|
19
|
+
* 使用低优先级选择器(:where),宿主定义的变量会自动覆盖。
|
|
20
|
+
*/ export { useStyle } from "../MarkdownEditor/style";
|
|
21
|
+
import { useEditorStyleRegister } from "../Hooks/useStyle";
|
|
22
|
+
export var useRendererVarStyle = function useRendererVarStyle(prefixCls) {
|
|
23
|
+
return useEditorStyleRegister('MarkdownRendererVars', function(_token) {
|
|
24
|
+
var _obj;
|
|
25
|
+
return _obj = {}, _define_property(_obj, ":where(.".concat(prefixCls, ")"), {
|
|
26
|
+
'--margin-2x': '8px',
|
|
27
|
+
'--margin-4x': '16px',
|
|
28
|
+
'--margin-8x': '20px',
|
|
29
|
+
'--padding-2x': '8px',
|
|
30
|
+
'--padding-4x': '16px',
|
|
31
|
+
'--padding-5x': '20px'
|
|
32
|
+
}), // 流式文字淡入动画(仅 opacity,GPU composited,不卡顿)
|
|
33
|
+
_define_property(_obj, '@keyframes markdownRendererFadeIn', {
|
|
34
|
+
from: {
|
|
35
|
+
opacity: 0,
|
|
36
|
+
filter: 'blur(1px)',
|
|
37
|
+
transform: 'translateY(2px)'
|
|
38
|
+
},
|
|
39
|
+
to: {
|
|
40
|
+
opacity: 1,
|
|
41
|
+
filter: 'blur(0px)',
|
|
42
|
+
transform: 'translateY(0px)'
|
|
43
|
+
}
|
|
44
|
+
}), _obj;
|
|
45
|
+
});
|
|
46
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { MarkdownRemarkPlugin, MarkdownToHtmlConfig } from '../MarkdownEditor/editor/utils/markdownToHtml';
|
|
3
|
+
import type { MarkdownEditorPlugin } from '../MarkdownEditor/plugin';
|
|
4
|
+
export interface CharacterQueueOptions {
|
|
5
|
+
/** 每帧输出的最大字符数,默认 3 */
|
|
6
|
+
charsPerFrame?: number;
|
|
7
|
+
/** 是否启用打字动画,默认 true(流式时) */
|
|
8
|
+
animate?: boolean;
|
|
9
|
+
/** 动画速度因子,1.0 为标准速度 */
|
|
10
|
+
speed?: number;
|
|
11
|
+
/** 内容完成后立即 flush 全部剩余 */
|
|
12
|
+
flushOnComplete?: boolean;
|
|
13
|
+
/** 后台 tick 间隔(ms),默认 100 */
|
|
14
|
+
backgroundInterval?: number;
|
|
15
|
+
/** 后台每次 tick 的字符数倍率,默认 10 */
|
|
16
|
+
backgroundBatchMultiplier?: number;
|
|
17
|
+
}
|
|
18
|
+
export type { RendererPlugin } from '../MarkdownEditor/plugin';
|
|
19
|
+
export interface RendererBlockProps {
|
|
20
|
+
node?: any;
|
|
21
|
+
children?: React.ReactNode;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
export type RenderMode = 'slate' | 'markdown';
|
|
25
|
+
export interface MarkdownRendererProps {
|
|
26
|
+
/** 完整的 markdown 内容(流式场景下持续增长) */
|
|
27
|
+
content: string;
|
|
28
|
+
/** 是否处于流式状态 */
|
|
29
|
+
streaming?: boolean;
|
|
30
|
+
/** 流式完成 */
|
|
31
|
+
isFinished?: boolean;
|
|
32
|
+
/** 字符队列配置 */
|
|
33
|
+
queueOptions?: CharacterQueueOptions;
|
|
34
|
+
/** 插件配置(用于自定义块渲染) */
|
|
35
|
+
plugins?: MarkdownEditorPlugin[];
|
|
36
|
+
/** markdownToHtml 的额外 remark/rehype 插件 */
|
|
37
|
+
remarkPlugins?: MarkdownRemarkPlugin[];
|
|
38
|
+
/** HTML 渲染配置 */
|
|
39
|
+
htmlConfig?: MarkdownToHtmlConfig;
|
|
40
|
+
/** 类名 */
|
|
41
|
+
className?: string;
|
|
42
|
+
/** 样式 */
|
|
43
|
+
style?: React.CSSProperties;
|
|
44
|
+
/** 类名前缀 */
|
|
45
|
+
prefixCls?: string;
|
|
46
|
+
/** 代码块配置(传递给 CodeRenderer) */
|
|
47
|
+
codeProps?: Record<string, any>;
|
|
48
|
+
/** 脚注配置 */
|
|
49
|
+
fncProps?: {
|
|
50
|
+
render?: (props: Record<string, any> & {
|
|
51
|
+
children: React.ReactNode;
|
|
52
|
+
}, defaultDom: React.ReactNode) => React.ReactNode;
|
|
53
|
+
onFootnoteDefinitionChange?: (data: any[]) => void;
|
|
54
|
+
};
|
|
55
|
+
/** 链接配置 */
|
|
56
|
+
linkConfig?: {
|
|
57
|
+
/** 是否在新标签页打开链接,默认 true */
|
|
58
|
+
openInNewTab?: boolean;
|
|
59
|
+
/** 自定义链接点击处理,返回 false 可阻止默认跳转 */
|
|
60
|
+
onClick?: (url?: string) => boolean | void;
|
|
61
|
+
};
|
|
62
|
+
/** Apaasify / Schema 自定义渲染 */
|
|
63
|
+
apaasify?: {
|
|
64
|
+
enable?: boolean;
|
|
65
|
+
/** 自定义渲染函数,接收解析后的 JSON value,返回 React 节点 */
|
|
66
|
+
render?: (value: any) => React.ReactNode;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export interface MarkdownRendererRef {
|
|
70
|
+
/** 获取渲染容器的 DOM 元素 */
|
|
71
|
+
nativeElement: HTMLDivElement | null;
|
|
72
|
+
/** 获取当前显示的内容 */
|
|
73
|
+
getDisplayedContent: () => string;
|
|
74
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type MarkdownRemarkPlugin, type MarkdownToHtmlConfig } from '../MarkdownEditor/editor/utils/markdownToHtml';
|
|
3
|
+
import type { RendererBlockProps } from './types';
|
|
4
|
+
interface UseMarkdownToReactOptions {
|
|
5
|
+
remarkPlugins?: MarkdownRemarkPlugin[];
|
|
6
|
+
htmlConfig?: MarkdownToHtmlConfig;
|
|
7
|
+
components?: Record<string, React.ComponentType<RendererBlockProps>>;
|
|
8
|
+
/** MarkdownEditor 的 CSS 前缀,用于生成对齐的 className */
|
|
9
|
+
prefixCls?: string;
|
|
10
|
+
/** 链接配置:onClick 拦截、openInNewTab 控制 */
|
|
11
|
+
linkConfig?: {
|
|
12
|
+
openInNewTab?: boolean;
|
|
13
|
+
onClick?: (url?: string) => boolean | void;
|
|
14
|
+
};
|
|
15
|
+
/** 是否处于流式状态,用于最后一个块的打字动画 */
|
|
16
|
+
streaming?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare const useMarkdownToReact: (content: string, options?: UseMarkdownToReactOptions) => React.ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* 同步将 markdown 转为 React 元素(非 hook 版本,用于测试或一次性转换)
|
|
21
|
+
*/
|
|
22
|
+
export declare const markdownToReactSync: (content: string, components?: Record<string, React.ComponentType<RendererBlockProps>>, remarkPlugins?: MarkdownRemarkPlugin[], htmlConfig?: MarkdownToHtmlConfig) => React.ReactNode;
|
|
23
|
+
export {};
|