@ai-group/chat-sdk 3.3.10 → 3.4.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 (54) hide show
  1. package/dist/cjs/components/FolderTree/DirectoryTree.d.ts +20 -0
  2. package/dist/cjs/components/FolderTree/DirectoryTree.js +161 -0
  3. package/dist/cjs/components/FolderTree/DirectoryTree.js.map +7 -0
  4. package/dist/cjs/components/FolderTree/FilePreview.d.ts +17 -0
  5. package/dist/cjs/components/FolderTree/FilePreview.js +163 -0
  6. package/dist/cjs/components/FolderTree/FilePreview.js.map +7 -0
  7. package/dist/cjs/components/FolderTree/index.d.ts +5 -0
  8. package/dist/cjs/components/FolderTree/index.js +235 -0
  9. package/dist/cjs/components/FolderTree/index.js.map +7 -0
  10. package/dist/cjs/components/FolderTree/styles.d.ts +48 -0
  11. package/dist/cjs/components/FolderTree/styles.js +149 -0
  12. package/dist/cjs/components/FolderTree/styles.js.map +7 -0
  13. package/dist/cjs/components/FolderTree/types.d.ts +81 -0
  14. package/dist/cjs/components/FolderTree/types.js +18 -0
  15. package/dist/cjs/components/FolderTree/types.js.map +7 -0
  16. package/dist/cjs/components/XAdkSender/Switch.d.ts +16 -0
  17. package/dist/cjs/components/XAdkSender/Switch.js +95 -0
  18. package/dist/cjs/components/XAdkSender/Switch.js.map +7 -0
  19. package/dist/cjs/components/XAdkSender/index.d.ts +6 -1
  20. package/dist/cjs/components/XAdkSender/index.js +26 -25
  21. package/dist/cjs/components/XAdkSender/index.js.map +3 -3
  22. package/dist/cjs/components/XAdkSender/styles.js +6 -6
  23. package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
  24. package/dist/cjs/index.d.ts +5 -1
  25. package/dist/cjs/index.js +6 -0
  26. package/dist/cjs/index.js.map +3 -3
  27. package/dist/esm/components/FolderTree/DirectoryTree.d.ts +20 -0
  28. package/dist/esm/components/FolderTree/DirectoryTree.js +118 -0
  29. package/dist/esm/components/FolderTree/DirectoryTree.js.map +1 -0
  30. package/dist/esm/components/FolderTree/FilePreview.d.ts +17 -0
  31. package/dist/esm/components/FolderTree/FilePreview.js +160 -0
  32. package/dist/esm/components/FolderTree/FilePreview.js.map +1 -0
  33. package/dist/esm/components/FolderTree/index.d.ts +5 -0
  34. package/dist/esm/components/FolderTree/index.js +271 -0
  35. package/dist/esm/components/FolderTree/index.js.map +1 -0
  36. package/dist/esm/components/FolderTree/styles.d.ts +48 -0
  37. package/dist/esm/components/FolderTree/styles.js +22 -0
  38. package/dist/esm/components/FolderTree/styles.js.map +1 -0
  39. package/dist/esm/components/FolderTree/types.d.ts +81 -0
  40. package/dist/esm/components/FolderTree/types.js +2 -0
  41. package/dist/esm/components/FolderTree/types.js.map +1 -0
  42. package/dist/esm/components/XAdkSender/Switch.d.ts +16 -0
  43. package/dist/esm/components/XAdkSender/Switch.js +53 -0
  44. package/dist/esm/components/XAdkSender/Switch.js.map +1 -0
  45. package/dist/esm/components/XAdkSender/index.d.ts +6 -1
  46. package/dist/esm/components/XAdkSender/index.js +15 -12
  47. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  48. package/dist/esm/components/XAdkSender/styles.js +3 -3
  49. package/dist/esm/components/XAdkSender/styles.js.map +1 -1
  50. package/dist/esm/index.d.ts +5 -1
  51. package/dist/esm/index.js +5 -1
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/umd/chat-sdk.min.js +1 -1
  54. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/FolderTree/index.tsx"],
4
+ "sourcesContent": ["import React, { useCallback, useEffect, useState } from \"react\";\nimport type { TreeProps } from \"antd\";\nimport clsx from \"clsx\";\nimport type { FolderTreeData, FolderTreeProps } from \"./types\";\nimport DirectoryTreeComponent from \"./DirectoryTree\";\nimport FilePreview from \"./FilePreview\";\nimport { useStyles } from \"./styles\";\n\nexport type { FolderTreeData, FolderTreeProps, FileContentService } from \"./types\";\n\nconst FolderTree: React.FC<FolderTreeProps> = (props) => {\n const {\n className,\n style,\n treeData,\n directoryIcons,\n previewRender,\n directoryTitle,\n previewTitle,\n selectable = true,\n defaultSelectedFile,\n defaultExpandAll = true,\n selectedFile,\n onSelectedFileChange,\n directoryTreeWidth = 280,\n emptyRender,\n defaultExpandedPaths,\n expandedPaths,\n onExpandedPathsChange,\n onFileClick,\n onFolderClick,\n fileContentService,\n moreActions,\n showLine,\n switcherIcon,\n showPreview = true,\n } = props;\n\n const styles = useStyles();\n\n // ====== 工具函数 ======\n const findNodeAndValidate = useCallback(\n (\n path: string | string[],\n validateAsFile = false\n ): { node: FolderTreeData | undefined; isValid: boolean } => {\n if (!path) return { node: undefined, isValid: false };\n const segments = Array.isArray(path)\n ? path.filter(Boolean)\n : path.split(\"/\").filter(Boolean);\n if (segments.length === 0) return { node: undefined, isValid: false };\n\n const findNode = (\n nodes: FolderTreeData[],\n index = 0\n ): FolderTreeData | undefined => {\n if (index >= segments.length) return undefined;\n const currentSegment = segments[index];\n for (const node of nodes) {\n if (node.path === currentSegment) {\n return index === segments.length - 1\n ? node\n : node.children\n ? findNode(node.children, index + 1)\n : undefined;\n }\n }\n return undefined;\n };\n\n const node = findNode(treeData);\n const isValid = validateAsFile\n ? !!node && (!node?.children || node.children.length === 0)\n : !!node;\n return { node, isValid };\n },\n [treeData]\n );\n\n const isValidSelectedFile = (filePath?: string[]): boolean =>\n !!(\n filePath &&\n filePath.length > 0 &&\n findNodeAndValidate(filePath, true).isValid\n );\n\n // ====== State ======\n const [selectedFileState, setSelectedFileState] = useState<string[]>(() =>\n isValidSelectedFile(selectedFile || defaultSelectedFile)\n ? selectedFile || defaultSelectedFile || []\n : []\n );\n const [expandedPathsState, setExpandedPaths] = useState<string[] | undefined>(\n expandedPaths || defaultExpandedPaths\n );\n const [validSelectedFile, setValidSelectedFile] = useState<boolean>(\n isValidSelectedFile(selectedFile || defaultSelectedFile)\n );\n const [fileContent, setFileContent] = useState<string>(\"\");\n const [loadingContent, setLoadingContent] = useState<boolean>(false);\n\n // 受控模式同步\n useEffect(() => {\n if (selectedFile !== undefined) {\n setSelectedFileState(selectedFile);\n setValidSelectedFile(isValidSelectedFile(selectedFile));\n }\n }, [selectedFile, treeData]);\n\n useEffect(() => {\n if (expandedPaths !== undefined) {\n setExpandedPaths(expandedPaths);\n }\n }, [expandedPaths]);\n\n // ====== 加载文件内容 ======\n useEffect(() => {\n const loadContent = async () => {\n if (!validSelectedFile || selectedFileState.length === 0) {\n setFileContent(\"\");\n setLoadingContent(false);\n return;\n }\n\n const filePath = selectedFileState.join(\"/\");\n const segments = filePath.split(\"/\").filter((s) => s !== \"\");\n const { node } = findNodeAndValidate(segments);\n\n if (fileContentService) {\n setLoadingContent(true);\n try {\n const content = await fileContentService.loadFileContent(filePath);\n setFileContent(content);\n } catch (error) {\n setFileContent(\n `// 加载错误: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`\n );\n } finally {\n setLoadingContent(false);\n }\n } else if (node?.content) {\n setFileContent(node.content);\n setLoadingContent(false);\n } else {\n setFileContent(\"\");\n setLoadingContent(false);\n }\n };\n\n loadContent();\n }, [validSelectedFile, selectedFileState, treeData, fileContentService, findNodeAndValidate]);\n\n // ====== 事件处理 ======\n const handleSelect: TreeProps[\"onSelect\"] = (_keys, info) => {\n const keys = _keys as string[];\n const nodes = Array.isArray(info.selectedNodes)\n ? info.selectedNodes\n : [info.selectedNodes];\n\n const isFolder = nodes.some((node) => !node.isLeaf);\n if (isFolder) {\n if (nodes.length === 1) {\n const node = nodes[0] as unknown as FolderTreeData;\n onFolderClick?.(node.path);\n }\n return;\n }\n\n const pathArray = keys[0]?.split(\"/\").filter(Boolean) || [];\n if (pathArray.length === 0) return;\n\n const selectedNode = nodes[0] as unknown as FolderTreeData | undefined;\n const fileName = selectedNode?.title as string | undefined;\n const nodeContent = selectedNode?.content as string | undefined;\n\n onSelectedFileChange?.({\n path: pathArray,\n title: fileName,\n content: nodeContent,\n });\n\n const isControlled = selectedFile !== undefined;\n if (!isControlled) {\n setValidSelectedFile(true);\n setSelectedFileState(pathArray);\n }\n\n if (nodes.length === 1) {\n const node = nodes[0] as unknown as FolderTreeData;\n onFileClick?.(node.path, node.content);\n }\n };\n\n const handleExpand: TreeProps[\"onExpand\"] = (keys) => {\n const newPaths = keys as string[];\n setExpandedPaths(newPaths);\n onExpandedPathsChange?.(newPaths);\n };\n\n return (\n <div\n className={clsx(styles.container, className)}\n style={{\n ...style,\n ...(style?.background\n ? ({ \"--folder-tree-directory-bg\": style.background } as React.CSSProperties)\n : {}),\n ...(style?.backgroundColor\n ? ({ \"--folder-tree-directory-bg\": style.backgroundColor } as React.CSSProperties)\n : {}),\n }}\n >\n <DirectoryTreeComponent\n treeData={treeData}\n directoryIcons={directoryIcons}\n selectedKeys={\n selectable && selectedFileState && validSelectedFile\n ? [selectedFileState.join(\"/\")]\n : []\n }\n expandedKeys={expandedPathsState}\n onSelect={handleSelect}\n onExpand={handleExpand}\n defaultExpandAll={defaultExpandAll}\n directoryTitle={directoryTitle}\n moreActions={moreActions}\n showLine={showLine}\n switcherIcon={switcherIcon}\n width={directoryTreeWidth}\n />\n {showPreview && (\n <FilePreview\n selectedFile={validSelectedFile ? selectedFileState : []}\n fileContent={fileContent}\n loading={loadingContent}\n previewTitle={previewTitle}\n previewRender={previewRender}\n emptyRender={emptyRender}\n getFileNode={(path) => {\n if (!path || path.length === 0) return undefined;\n const { node } = findNodeAndValidate(path);\n return node\n ? { title: node.title, path: node.path, content: node.content }\n : undefined;\n }}\n />\n )}\n </div>\n );\n};\n\nexport default FolderTree;\n"],
5
+ "mappings": "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",
6
+ "names": ["node", "clsx", "DirectoryTreeComponent", "FilePreview"]
7
+ }
@@ -0,0 +1,48 @@
1
+ export declare const useStyles: () => {
2
+ container: string;
3
+ directoryPanel: string;
4
+ directoryTitle: string;
5
+ directoryTreeContent: string;
6
+ previewPanel: string;
7
+ previewTitle: string;
8
+ previewContent: string;
9
+ emptyContainer: string;
10
+ loadingContainer: string;
11
+ treeNodeTitle: string;
12
+ moreIcon: string;
13
+ treeNodeTitleHover: string;
14
+ copyBtn: string;
15
+ } & {
16
+ w: (width: string | number) => string;
17
+ h: (height: string | number) => string;
18
+ p: (padding: string) => string;
19
+ pb: (padding: string | number) => string;
20
+ pt: (padding: string | number) => string;
21
+ pl: (padding: string | number) => string;
22
+ pr: (padding: string | number) => string;
23
+ m: (margin: string) => string;
24
+ mb: (margin: string | number) => string;
25
+ mt: (margin: string | number) => string;
26
+ ml: (margin: string | number) => string;
27
+ mr: (margin: string | number) => string;
28
+ text: (size: string | number) => string;
29
+ weight: (size: number) => string;
30
+ textColor: (c: string) => string;
31
+ bg: (c: string) => string;
32
+ rs: (radius: string | number) => string;
33
+ gap: (g: string | number) => string;
34
+ flex: string;
35
+ flexCenter: string;
36
+ flexBetween: string;
37
+ flexColumn: string;
38
+ flex1: string;
39
+ cursor: (type: string) => string;
40
+ border: (color: string, width?: string) => string;
41
+ boxShadow: (shadow: string) => string;
42
+ transition: (property?: string, duration?: string) => string;
43
+ overflow: (type: string) => string;
44
+ position: (type: string) => string;
45
+ zIndex: (index: number) => string;
46
+ flexCenterGap2: string;
47
+ flexCenterGap4: string;
48
+ };
@@ -0,0 +1,149 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/components/FolderTree/styles.tsx
20
+ var styles_exports = {};
21
+ __export(styles_exports, {
22
+ useStyles: () => useStyles
23
+ });
24
+ module.exports = __toCommonJS(styles_exports);
25
+ var import_css = require("@emotion/css");
26
+ var import_common = require("../../styles/common");
27
+ var useStyles = (0, import_common.withBasicStyles)(() => ({
28
+ container: import_css.css`
29
+ display: flex;
30
+ width: 100%;
31
+ height: 500px;
32
+ border: 1px solid #e8e8e8;
33
+ border-radius: 8px;
34
+ overflow: hidden;
35
+ background: #fff;
36
+ `,
37
+ directoryPanel: import_css.css`
38
+ height: 100%;
39
+ overflow: auto;
40
+ border-right: 1px solid #e8e8e8;
41
+ background: var(--folder-tree-directory-bg, #fafafa);
42
+ `,
43
+ directoryTitle: import_css.css`
44
+ padding: 12px 16px;
45
+ font-weight: 600;
46
+ font-size: 14px;
47
+ border-bottom: 1px solid #e8e8e8;
48
+ color: #333;
49
+ `,
50
+ directoryTreeContent: import_css.css`
51
+ padding: 4px 0;
52
+ .ant-tree {
53
+ background: transparent;
54
+ }
55
+ .ant-tree-switcher {
56
+ margin-right: 0;
57
+ }
58
+ .ant-tree .ant-tree-node-content-wrapper {
59
+ display: inline-flex;
60
+ align-items: center;
61
+ flex: 1;
62
+ min-width: 0;
63
+ padding-left: 0;
64
+ }
65
+ .ant-tree .ant-tree-title {
66
+ flex: 1;
67
+ min-width: 0;
68
+ }
69
+ .ant-tree-directory .ant-tree-treenode {
70
+ &::before {
71
+ border-radius: 4px;
72
+ }
73
+ }
74
+ `,
75
+ previewPanel: import_css.css`
76
+ flex: 1;
77
+ height: 100%;
78
+ overflow: auto;
79
+ display: flex;
80
+ flex-direction: column;
81
+ `,
82
+ previewTitle: import_css.css`
83
+ padding: 10px 16px;
84
+ font-size: 13px;
85
+ font-weight: 500;
86
+ border-bottom: 1px solid #e8e8e8;
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: space-between;
90
+ color: #333;
91
+ background: #fff;
92
+ `,
93
+ previewContent: import_css.css`
94
+ flex: 1;
95
+ overflow: auto;
96
+ padding: 16px;
97
+ font-size: 13px;
98
+ line-height: 1.6;
99
+ `,
100
+ emptyContainer: import_css.css`
101
+ display: flex;
102
+ align-items: center;
103
+ justify-content: center;
104
+ height: 100%;
105
+ `,
106
+ loadingContainer: import_css.css`
107
+ display: flex;
108
+ align-items: center;
109
+ justify-content: center;
110
+ height: 100%;
111
+ `,
112
+ treeNodeTitle: import_css.css`
113
+ display: flex;
114
+ align-items: center;
115
+ justify-content: space-between;
116
+ padding-right: 4px;
117
+ `,
118
+ moreIcon: import_css.css`
119
+ opacity: 0;
120
+ cursor: pointer;
121
+ padding: 2px 4px;
122
+ border-radius: 4px;
123
+ color: #999;
124
+ font-size: 14px;
125
+ transition: all 0.2s;
126
+ &:hover {
127
+ color: #333;
128
+ background: rgba(0, 0, 0, 0.04);
129
+ }
130
+ `,
131
+ treeNodeTitleHover: import_css.css`
132
+ &:hover .folder-tree-more-icon {
133
+ opacity: 1;
134
+ }
135
+ `,
136
+ copyBtn: import_css.css`
137
+ cursor: pointer;
138
+ color: #999;
139
+ font-size: 14px;
140
+ &:hover {
141
+ color: #1677ff;
142
+ }
143
+ `
144
+ }));
145
+ // Annotate the CommonJS export names for ESM import in node:
146
+ 0 && (module.exports = {
147
+ useStyles
148
+ });
149
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/FolderTree/styles.tsx"],
4
+ "sourcesContent": ["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n container: css`\n display: flex;\n width: 100%;\n height: 500px;\n border: 1px solid #e8e8e8;\n border-radius: 8px;\n overflow: hidden;\n background: #fff;\n `,\n directoryPanel: css`\n height: 100%;\n overflow: auto;\n border-right: 1px solid #e8e8e8;\n background: var(--folder-tree-directory-bg, #fafafa);\n `,\n directoryTitle: css`\n padding: 12px 16px;\n font-weight: 600;\n font-size: 14px;\n border-bottom: 1px solid #e8e8e8;\n color: #333;\n `,\n directoryTreeContent: css`\n padding: 4px 0;\n .ant-tree {\n background: transparent;\n }\n .ant-tree-switcher {\n margin-right: 0;\n }\n .ant-tree .ant-tree-node-content-wrapper {\n display: inline-flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n padding-left: 0;\n }\n .ant-tree .ant-tree-title {\n flex: 1;\n min-width: 0;\n }\n .ant-tree-directory .ant-tree-treenode {\n &::before {\n border-radius: 4px;\n }\n }\n `,\n previewPanel: css`\n flex: 1;\n height: 100%;\n overflow: auto;\n display: flex;\n flex-direction: column;\n `,\n previewTitle: css`\n padding: 10px 16px;\n font-size: 13px;\n font-weight: 500;\n border-bottom: 1px solid #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: #333;\n background: #fff;\n `,\n previewContent: css`\n flex: 1;\n overflow: auto;\n padding: 16px;\n font-size: 13px;\n line-height: 1.6;\n `,\n emptyContainer: css`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n `,\n loadingContainer: css`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n `,\n treeNodeTitle: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-right: 4px;\n `,\n moreIcon: css`\n opacity: 0;\n cursor: pointer;\n padding: 2px 4px;\n border-radius: 4px;\n color: #999;\n font-size: 14px;\n transition: all 0.2s;\n &:hover {\n color: #333;\n background: rgba(0, 0, 0, 0.04);\n }\n `,\n treeNodeTitleHover: css`\n &:hover .folder-tree-more-icon {\n opacity: 1;\n }\n `,\n copyBtn: css`\n cursor: pointer;\n color: #999;\n font-size: 14px;\n &:hover {\n color: #1677ff;\n }\n `,\n}));\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAoB;AACpB,oBAAgC;AAEzB,IAAM,gBAAY,+BAAgB,OAAO;AAAA,EAC9C,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASX,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBtB,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOd,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWd,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlB,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMf,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaV,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQX,EAAE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,81 @@
1
+ import type { DropdownProps } from "antd";
2
+ import type React from "react";
3
+ /** 文件树节点数据 */
4
+ export interface FolderTreeData {
5
+ title: React.ReactNode;
6
+ path: string;
7
+ content?: string;
8
+ children?: FolderTreeData[];
9
+ }
10
+ /** 文件内容加载服务 */
11
+ export interface FileContentService {
12
+ loadFileContent(filePath: string): Promise<string>;
13
+ }
14
+ /** FolderTree 组件属性 */
15
+ export interface FolderTreeProps {
16
+ /** 自定义类名 */
17
+ className?: string;
18
+ /** 自定义样式 */
19
+ style?: React.CSSProperties;
20
+ /** 树形数据 */
21
+ treeData: FolderTreeData[];
22
+ /** 自定义文件/文件夹图标,false 禁用图标 */
23
+ directoryIcons?: false | Record<"directory" | string, React.ReactNode | (() => React.ReactNode)>;
24
+ /** 是否可选中文件 */
25
+ selectable?: boolean;
26
+ /** 受控:当前选中的文件路径 */
27
+ selectedFile?: string[];
28
+ /** 默认选中的文件路径 */
29
+ defaultSelectedFile?: string[];
30
+ /** 选中文件变化回调 */
31
+ onSelectedFileChange?: (file: {
32
+ path: string[];
33
+ title?: React.ReactNode;
34
+ content?: string;
35
+ }) => void;
36
+ /** 受控:展开的路径 */
37
+ expandedPaths?: string[];
38
+ /** 默认展开的路径 */
39
+ defaultExpandedPaths?: string[];
40
+ /** 默认是否展开所有节点 */
41
+ defaultExpandAll?: boolean;
42
+ /** 展开路径变化回调 */
43
+ onExpandedPathsChange?: (paths: string[]) => void;
44
+ /** 目录树面板宽度 */
45
+ directoryTreeWidth?: number | string;
46
+ /** 文件内容加载服务 */
47
+ fileContentService?: FileContentService;
48
+ /** 空状态渲染 */
49
+ emptyRender?: false | React.ReactNode | (() => React.ReactNode);
50
+ /** 自定义文件预览渲染 */
51
+ previewRender?: React.ReactNode | ((file: {
52
+ content?: string;
53
+ path: string[];
54
+ title?: React.ReactNode;
55
+ language: string;
56
+ }, info: {
57
+ originNode: React.ReactNode;
58
+ }) => React.ReactNode);
59
+ /** 自定义目录标题 */
60
+ directoryTitle?: false | React.ReactNode | (() => React.ReactNode);
61
+ /** 自定义预览标题 */
62
+ previewTitle?: false | React.ReactNode | ((info: {
63
+ title: React.ReactNode;
64
+ path: string[];
65
+ content: string;
66
+ }) => React.ReactNode);
67
+ /** 文件点击回调 */
68
+ onFileClick?: (filePath: string, content?: string) => void;
69
+ /** 文件夹点击回调 */
70
+ onFolderClick?: (folderPath: string) => void;
71
+ /** 更多操作菜单,传入节点返回 Dropdown menu 配置 */
72
+ moreActions?: (node: FolderTreeData) => DropdownProps["menu"];
73
+ /** 是否显示连接线 */
74
+ showLine?: boolean | {
75
+ showLeafIcon?: boolean | React.ReactNode;
76
+ };
77
+ /** 自定义展开/收起图标 */
78
+ switcherIcon?: React.ReactNode | ((props: any) => React.ReactNode);
79
+ /** 是否显示文件预览面板,默认 true */
80
+ showPreview?: boolean;
81
+ }
@@ -0,0 +1,18 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+
15
+ // src/components/FolderTree/types.ts
16
+ var types_exports = {};
17
+ module.exports = __toCommonJS(types_exports);
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/FolderTree/types.ts"],
4
+ "sourcesContent": ["import type { DropdownProps } from \"antd\";\nimport type React from \"react\";\n\n/** 文件树节点数据 */\nexport interface FolderTreeData {\n title: React.ReactNode;\n path: string;\n content?: string;\n children?: FolderTreeData[];\n}\n\n/** 文件内容加载服务 */\nexport interface FileContentService {\n loadFileContent(filePath: string): Promise<string>;\n}\n\n/** FolderTree 组件属性 */\nexport interface FolderTreeProps {\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n\n /** 树形数据 */\n treeData: FolderTreeData[];\n\n /** 自定义文件/文件夹图标,false 禁用图标 */\n directoryIcons?:\n | false\n | Record<\"directory\" | string, React.ReactNode | (() => React.ReactNode)>;\n\n /** 是否可选中文件 */\n selectable?: boolean;\n /** 受控:当前选中的文件路径 */\n selectedFile?: string[];\n /** 默认选中的文件路径 */\n defaultSelectedFile?: string[];\n /** 选中文件变化回调 */\n onSelectedFileChange?: (file: {\n path: string[];\n title?: React.ReactNode;\n content?: string;\n }) => void;\n\n /** 受控:展开的路径 */\n expandedPaths?: string[];\n /** 默认展开的路径 */\n defaultExpandedPaths?: string[];\n /** 默认是否展开所有节点 */\n defaultExpandAll?: boolean;\n /** 展开路径变化回调 */\n onExpandedPathsChange?: (paths: string[]) => void;\n\n /** 目录树面板宽度 */\n directoryTreeWidth?: number | string;\n\n /** 文件内容加载服务 */\n fileContentService?: FileContentService;\n\n /** 空状态渲染 */\n emptyRender?: false | React.ReactNode | (() => React.ReactNode);\n /** 自定义文件预览渲染 */\n previewRender?:\n | React.ReactNode\n | ((\n file: {\n content?: string;\n path: string[];\n title?: React.ReactNode;\n language: string;\n },\n info: { originNode: React.ReactNode }\n ) => React.ReactNode);\n\n /** 自定义目录标题 */\n directoryTitle?: false | React.ReactNode | (() => React.ReactNode);\n /** 自定义预览标题 */\n previewTitle?:\n | false\n | React.ReactNode\n | ((info: {\n title: React.ReactNode;\n path: string[];\n content: string;\n }) => React.ReactNode);\n\n /** 文件点击回调 */\n onFileClick?: (filePath: string, content?: string) => void;\n /** 文件夹点击回调 */\n onFolderClick?: (folderPath: string) => void;\n\n /** 更多操作菜单,传入节点返回 Dropdown menu 配置 */\n moreActions?: (node: FolderTreeData) => DropdownProps[\"menu\"];\n\n /** 是否显示连接线 */\n showLine?: boolean | { showLeafIcon?: boolean | React.ReactNode };\n /** 自定义展开/收起图标 */\n switcherIcon?: React.ReactNode | ((props: any) => React.ReactNode);\n\n /** 是否显示文件预览面板,默认 true */\n showPreview?: boolean;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ export interface XAdkSenderSwitchProps {
3
+ className?: string;
4
+ style?: React.CSSProperties;
5
+ checkedChildren?: React.ReactNode;
6
+ unCheckedChildren?: React.ReactNode;
7
+ value?: boolean;
8
+ defaultValue?: boolean;
9
+ icon?: React.ReactNode;
10
+ loading?: boolean;
11
+ disabled?: boolean;
12
+ children?: React.ReactNode;
13
+ onChange?: (checked: boolean) => void;
14
+ }
15
+ declare const XAdkSenderSwitch: React.ForwardRefExoticComponent<XAdkSenderSwitchProps & React.RefAttributes<HTMLDivElement>>;
16
+ export default XAdkSenderSwitch;
@@ -0,0 +1,95 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/XAdkSender/Switch.tsx
30
+ var Switch_exports = {};
31
+ __export(Switch_exports, {
32
+ default: () => Switch_default
33
+ });
34
+ module.exports = __toCommonJS(Switch_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_antd = require("antd");
37
+ var import_clsx = require("clsx");
38
+ var import_jsx_runtime = require("react/jsx-runtime");
39
+ var XAdkSenderSwitch = import_react.default.forwardRef(
40
+ (props, ref) => {
41
+ const {
42
+ children,
43
+ className,
44
+ icon,
45
+ style,
46
+ onChange,
47
+ loading,
48
+ defaultValue = false,
49
+ value: customValue,
50
+ checkedChildren,
51
+ unCheckedChildren,
52
+ disabled
53
+ } = props;
54
+ const isControlled = customValue !== void 0;
55
+ const [internalChecked, setInternalChecked] = (0, import_react.useState)(defaultValue);
56
+ const mergedChecked = isControlled ? customValue : internalChecked;
57
+ const handleClick = () => {
58
+ if (disabled || loading)
59
+ return;
60
+ const newValue = !mergedChecked;
61
+ if (!isControlled) {
62
+ setInternalChecked(newValue);
63
+ }
64
+ onChange == null ? void 0 : onChange(newValue);
65
+ };
66
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
67
+ "div",
68
+ {
69
+ ref,
70
+ className: (0, import_clsx.clsx)("xadk-sender-switch", className, {
71
+ "xadk-sender-switch-checked": mergedChecked
72
+ }),
73
+ style,
74
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
75
+ import_antd.Button,
76
+ {
77
+ disabled,
78
+ loading,
79
+ variant: "outlined",
80
+ color: mergedChecked ? "primary" : "default",
81
+ icon,
82
+ onClick: handleClick,
83
+ children: [
84
+ mergedChecked ? checkedChildren : unCheckedChildren,
85
+ children
86
+ ]
87
+ }
88
+ )
89
+ }
90
+ );
91
+ }
92
+ );
93
+ XAdkSenderSwitch.displayName = "XAdkSenderSwitch";
94
+ var Switch_default = XAdkSenderSwitch;
95
+ //# sourceMappingURL=Switch.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/XAdkSender/Switch.tsx"],
4
+ "sourcesContent": ["import React, { useState } from \"react\";\nimport { Button } from \"antd\";\nimport { clsx } from \"clsx\";\n\nexport interface XAdkSenderSwitchProps {\n className?: string;\n style?: React.CSSProperties;\n checkedChildren?: React.ReactNode;\n unCheckedChildren?: React.ReactNode;\n value?: boolean;\n defaultValue?: boolean;\n icon?: React.ReactNode;\n loading?: boolean;\n disabled?: boolean;\n children?: React.ReactNode;\n onChange?: (checked: boolean) => void;\n}\n\nconst XAdkSenderSwitch = React.forwardRef<HTMLDivElement, XAdkSenderSwitchProps>(\n (props, ref) => {\n const {\n children,\n className,\n icon,\n style,\n onChange,\n loading,\n defaultValue = false,\n value: customValue,\n checkedChildren,\n unCheckedChildren,\n disabled,\n } = props;\n\n const isControlled = customValue !== undefined;\n const [internalChecked, setInternalChecked] = useState(defaultValue);\n const mergedChecked = isControlled ? customValue : internalChecked;\n\n const handleClick = () => {\n if (disabled || loading) return;\n const newValue = !mergedChecked;\n if (!isControlled) {\n setInternalChecked(newValue);\n }\n onChange?.(newValue);\n };\n\n return (\n <div\n ref={ref}\n className={clsx(\"xadk-sender-switch\", className, {\n \"xadk-sender-switch-checked\": mergedChecked,\n })}\n style={style}\n >\n <Button\n disabled={disabled}\n loading={loading}\n variant=\"outlined\"\n color={mergedChecked ? \"primary\" : \"default\"}\n icon={icon}\n onClick={handleClick}\n >\n {mergedChecked ? checkedChildren : unCheckedChildren}\n {children}\n </Button>\n </div>\n );\n },\n);\n\nXAdkSenderSwitch.displayName = \"XAdkSenderSwitch\";\n\nexport default XAdkSenderSwitch;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAgC;AAChC,kBAAuB;AACvB,kBAAqB;AA8Cf;AA9BN,IAAM,mBAAmB,aAAAA,QAAM;AAAA,EAC7B,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,UAAM,eAAe,gBAAgB;AACrC,UAAM,CAAC,iBAAiB,kBAAkB,QAAI,uBAAS,YAAY;AACnE,UAAM,gBAAgB,eAAe,cAAc;AAEnD,UAAM,cAAc,MAAM;AACxB,UAAI,YAAY;AAAS;AACzB,YAAM,WAAW,CAAC;AAClB,UAAI,CAAC,cAAc;AACjB,2BAAmB,QAAQ;AAAA,MAC7B;AACA,2CAAW;AAAA,IACb;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,eAAW,kBAAK,sBAAsB,WAAW;AAAA,UAC/C,8BAA8B;AAAA,QAChC,CAAC;AAAA,QACD;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA,SAAQ;AAAA,YACR,OAAO,gBAAgB,YAAY;AAAA,YACnC;AAAA,YACA,SAAS;AAAA,YAER;AAAA,8BAAgB,kBAAkB;AAAA,cAClC;AAAA;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,iBAAiB,cAAc;AAE/B,IAAO,iBAAQ;",
6
+ "names": ["React"]
7
+ }
@@ -1,4 +1,9 @@
1
1
  import React from "react";
2
2
  import { XAdkSenderHandle } from "../../types";
3
3
  declare const XAdkSender: React.ForwardRefExoticComponent<import("../../types").SenderUIProps & import("../../types").UploaderCoreProps & React.RefAttributes<XAdkSenderHandle>>;
4
- export default XAdkSender;
4
+ import XAdkSenderSwitch from "./Switch";
5
+ type XAdkSenderComponent = typeof XAdkSender & {
6
+ Switch: typeof XAdkSenderSwitch;
7
+ };
8
+ declare const CompoundSender: XAdkSenderComponent;
9
+ export default CompoundSender;
@@ -38,6 +38,7 @@ var import_icons = require("@ant-design/icons");
38
38
  var import_styles = require("./styles");
39
39
  var import_FileGallery = __toESM(require("../FileGallery"));
40
40
  var import_file = require("../../utils/file");
41
+ var import_Switch = __toESM(require("./Switch"));
41
42
  var import_jsx_runtime = require("react/jsx-runtime");
42
43
  var XAdkSender = (0, import_react.forwardRef)(({
43
44
  clearBtnShow = true,
@@ -510,41 +511,41 @@ var XAdkSender = (0, import_react.forwardRef)(({
510
511
  }
511
512
  }
512
513
  ),
513
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.mainArea, children: [
514
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.senderWrap, children: [
514
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.mainArea, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.senderWrap, children: [
515
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.inputAndButtons, children: [
515
516
  clearBtnShow && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ClearButton, {}),
516
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.inputAndButtons, children: [
517
- renderSlot(prefix, false),
518
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.textAreaWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
519
- import_antd.Input.TextArea,
520
- {
521
- className: styles.textArea,
522
- value,
523
- onChange: handleInputChange,
524
- onKeyDown: handleKeyDown,
525
- placeholder: "请输入消息...",
526
- disabled: isDisabled,
527
- autoSize: { minRows: 1, maxRows: 4 },
528
- style: {
529
- border: "none",
530
- boxShadow: "none",
531
- outline: "none",
532
- padding: 0
533
- }
517
+ renderSlot(prefix, false),
518
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.textAreaWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
519
+ import_antd.Input.TextArea,
520
+ {
521
+ className: styles.textArea,
522
+ value,
523
+ onChange: handleInputChange,
524
+ onKeyDown: handleKeyDown,
525
+ placeholder: "请输入消息...",
526
+ disabled: isDisabled,
527
+ autoSize: { minRows: 1, maxRows: 4 },
528
+ style: {
529
+ border: "none",
530
+ boxShadow: "none",
531
+ outline: "none",
532
+ padding: 0
534
533
  }
535
- ) }),
536
- renderSlot(suffix, defaultSuffix)
537
- ] })
534
+ }
535
+ ) }),
536
+ renderSlot(suffix, defaultSuffix)
538
537
  ] }),
539
538
  renderSlot(
540
539
  footer,
541
540
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.tip, children: "内容由AI生成,无法确保真实准确,仅供参考" })
542
541
  )
543
- ] })
542
+ ] }) })
544
543
  ]
545
544
  }
546
545
  );
547
546
  });
548
547
  XAdkSender.displayName = "XAdkSender";
549
- var XAdkSender_default = XAdkSender;
548
+ var CompoundSender = XAdkSender;
549
+ CompoundSender.Switch = import_Switch.default;
550
+ var XAdkSender_default = CompoundSender;
550
551
  //# sourceMappingURL=index.js.map