@ai-group/chat-sdk 3.3.11 → 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.
- package/dist/cjs/components/FolderTree/DirectoryTree.d.ts +20 -0
- package/dist/cjs/components/FolderTree/DirectoryTree.js +161 -0
- package/dist/cjs/components/FolderTree/DirectoryTree.js.map +7 -0
- package/dist/cjs/components/FolderTree/FilePreview.d.ts +17 -0
- package/dist/cjs/components/FolderTree/FilePreview.js +163 -0
- package/dist/cjs/components/FolderTree/FilePreview.js.map +7 -0
- package/dist/cjs/components/FolderTree/index.d.ts +5 -0
- package/dist/cjs/components/FolderTree/index.js +235 -0
- package/dist/cjs/components/FolderTree/index.js.map +7 -0
- package/dist/cjs/components/FolderTree/styles.d.ts +48 -0
- package/dist/cjs/components/FolderTree/styles.js +149 -0
- package/dist/cjs/components/FolderTree/styles.js.map +7 -0
- package/dist/cjs/components/FolderTree/types.d.ts +81 -0
- package/dist/cjs/components/FolderTree/types.js +18 -0
- package/dist/cjs/components/FolderTree/types.js.map +7 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +3 -3
- package/dist/esm/components/FolderTree/DirectoryTree.d.ts +20 -0
- package/dist/esm/components/FolderTree/DirectoryTree.js +118 -0
- package/dist/esm/components/FolderTree/DirectoryTree.js.map +1 -0
- package/dist/esm/components/FolderTree/FilePreview.d.ts +17 -0
- package/dist/esm/components/FolderTree/FilePreview.js +160 -0
- package/dist/esm/components/FolderTree/FilePreview.js.map +1 -0
- package/dist/esm/components/FolderTree/index.d.ts +5 -0
- package/dist/esm/components/FolderTree/index.js +271 -0
- package/dist/esm/components/FolderTree/index.js.map +1 -0
- package/dist/esm/components/FolderTree/styles.d.ts +48 -0
- package/dist/esm/components/FolderTree/styles.js +22 -0
- package/dist/esm/components/FolderTree/styles.js.map +1 -0
- package/dist/esm/components/FolderTree/types.d.ts +81 -0
- package/dist/esm/components/FolderTree/types.js +2 -0
- package/dist/esm/components/FolderTree/types.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../../src/components/FolderTree/types.ts"],"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"],"mappings":""}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -19,6 +19,9 @@ export * from "./types";
|
|
|
19
19
|
export type { ChatHookResult, ChatHookFactory } from "./types/ChatHook";
|
|
20
20
|
export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request, };
|
|
21
21
|
export { XAdkProvider, XAdkChatbot, XAdkSender, XAdkSenderSwitch, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver, };
|
|
22
|
+
import FolderTree from "./components/FolderTree";
|
|
23
|
+
export { FolderTree };
|
|
24
|
+
export type { FolderTreeProps, FolderTreeData, FileContentService, } from "./components/FolderTree";
|
|
22
25
|
export { default as MarkdownRender } from "./components/XAdkChatbot/components/MarkdownRender";
|
|
23
26
|
export { default as FunctionCallRender } from "./components/XAdkChatbot/components/FunctionCallRender";
|
|
24
27
|
export { default as ThinkRender } from "./components/XAdkChatbot/components/ThinkRender";
|
package/dist/esm/index.js
CHANGED
|
@@ -30,6 +30,9 @@ export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, u
|
|
|
30
30
|
// 新 API - 推荐使用
|
|
31
31
|
export { XAdkProvider, XAdkChatbot, XAdkSender, XAdkSenderSwitch, FileGallery, XAdkThoughtChain, useADKChat, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, xGroupAdkPreset, xGroupToolKindResolver };
|
|
32
32
|
|
|
33
|
+
// FolderTree 文件树组件
|
|
34
|
+
import FolderTree from "./components/FolderTree";
|
|
35
|
+
export { FolderTree };
|
|
33
36
|
// 基础组件导出 - 供高级用户和业务侧使用
|
|
34
37
|
export { default as MarkdownRender } from "./components/XAdkChatbot/components/MarkdownRender";
|
|
35
38
|
export { default as FunctionCallRender } from "./components/XAdkChatbot/components/FunctionCallRender";
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","FileGallery","XAiConversations","XAdkThoughtChain","useXAiSDK","request","XAdkProvider","XAdkChatbot","XAdkSender","XAdkSenderSwitch","useADKChat","baseChatStrategies","basePreset","baseToolKindResolver","mergeChatStrategies","resolvePresetUploadRequest","resolveChatPreset","createXGroupUploadRequest","xGroupAdkPreset","xGroupToolKindResolver","useChatState","useChatActions","useSession","default","MarkdownRender","FunctionCallRender","ThinkRender"],"sources":["../../src/index.ts"],"sourcesContent":["// index.ts\nimport { useXAi } from \"./context/AiProviderContext\";\nimport XAiProvider from \"./components/XAiProvider\";\nimport XAiChatbot from \"./components/XAiChatbot\";\nimport XAiSDK from \"./components/XAiSDK\";\nimport XAiSender from \"./components/XAiSender\";\nimport FileGallery from \"./components/FileGallery\";\nimport XAiConversations from \"./components/XAiConversations\";\nimport XAdkThoughtChain from \"./components/XAdkThoughtChain\";\nimport useXAiSDK from \"./hooks/useXAiSDK\";\nimport request from \"./utils/request\";\n\n// 新的 Compound Components 架构\nimport XAdkProvider from \"./components/XAdkProvider\";\nimport XAdkChatbot from \"./components/XAdkChatbot\";\nimport XAdkSender from \"./components/XAdkSender\";\nimport XAdkSenderSwitch from \"./components/XAdkSender/Switch\";\nimport useADKChat from \"./hooks/useADKChat\";\nimport {\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n createXGroupUploadRequest,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n} from \"./presets/xGroupAdk\";\n\n// 导出新的 Context Hooks\nexport {\n useChatState,\n useChatActions,\n useSession,\n} from \"./components/XAdkProvider/context\";\n\nexport * from \"./types\";\n\n// 导出自定义 Hook 相关类型\nexport type { ChatHookResult, ChatHookFactory } from \"./types/ChatHook\";\n\n// 旧 API - 保持向后兼容\nexport {\n useXAi,\n XAiProvider,\n XAiChatbot,\n XAiSDK,\n XAiSender,\n XAiConversations,\n useXAiSDK,\n request,\n};\n\n// 新 API - 推荐使用\nexport {\n XAdkProvider,\n XAdkChatbot,\n XAdkSender,\n XAdkSenderSwitch,\n FileGallery,\n XAdkThoughtChain,\n useADKChat,\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n createXGroupUploadRequest,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n};\n\n// 基础组件导出 - 供高级用户和业务侧使用\nexport { default as MarkdownRender } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport { default as FunctionCallRender } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport { default as ThinkRender } from \"./components/XAdkChatbot/components/ThinkRender\";\n\n// 基础组件类型导出\nexport type { MarkdownRenderProps } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport type { FunctionCallRenderProps } from \"./types/FunctionCallRender\";\nexport type {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n} from \"./types/XAdkThoughtChain\";\n"],"mappings":"AAAA;AACA,SAASA,MAAM;AACf,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,MAAM;AACb,OAAOC,SAAS;AAChB,OAAOC,WAAW;AAClB,OAAOC,gBAAgB;AACvB,OAAOC,gBAAgB;AACvB,OAAOC,SAAS;AAChB,OAAOC,OAAO;;AAEd;AACA,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AACvB,OAAOC,UAAU;AACjB,SACEC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBC,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBC,yBAAyB,EACzBC,eAAe,EACfC,sBAAsB;;AAGxB;AACA,SACEC,YAAY,EACZC,cAAc,EACdC,UAAU;AAGZ;;AAEA;;AAGA;AACA,SACE1B,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTE,gBAAgB,EAChBE,SAAS,EACTC,OAAO;;AAGT;AACA,SACEC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVC,gBAAgB,EAChBR,WAAW,EACXE,gBAAgB,EAChBO,UAAU,EACVC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBI,yBAAyB,EACzBH,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBE,eAAe,EACfC,sBAAsB;;AAGxB;AACA,
|
|
1
|
+
{"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","FileGallery","XAiConversations","XAdkThoughtChain","useXAiSDK","request","XAdkProvider","XAdkChatbot","XAdkSender","XAdkSenderSwitch","useADKChat","baseChatStrategies","basePreset","baseToolKindResolver","mergeChatStrategies","resolvePresetUploadRequest","resolveChatPreset","createXGroupUploadRequest","xGroupAdkPreset","xGroupToolKindResolver","useChatState","useChatActions","useSession","FolderTree","default","MarkdownRender","FunctionCallRender","ThinkRender"],"sources":["../../src/index.ts"],"sourcesContent":["// index.ts\nimport { useXAi } from \"./context/AiProviderContext\";\nimport XAiProvider from \"./components/XAiProvider\";\nimport XAiChatbot from \"./components/XAiChatbot\";\nimport XAiSDK from \"./components/XAiSDK\";\nimport XAiSender from \"./components/XAiSender\";\nimport FileGallery from \"./components/FileGallery\";\nimport XAiConversations from \"./components/XAiConversations\";\nimport XAdkThoughtChain from \"./components/XAdkThoughtChain\";\nimport useXAiSDK from \"./hooks/useXAiSDK\";\nimport request from \"./utils/request\";\n\n// 新的 Compound Components 架构\nimport XAdkProvider from \"./components/XAdkProvider\";\nimport XAdkChatbot from \"./components/XAdkChatbot\";\nimport XAdkSender from \"./components/XAdkSender\";\nimport XAdkSenderSwitch from \"./components/XAdkSender/Switch\";\nimport useADKChat from \"./hooks/useADKChat\";\nimport {\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n createXGroupUploadRequest,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n} from \"./presets/xGroupAdk\";\n\n// 导出新的 Context Hooks\nexport {\n useChatState,\n useChatActions,\n useSession,\n} from \"./components/XAdkProvider/context\";\n\nexport * from \"./types\";\n\n// 导出自定义 Hook 相关类型\nexport type { ChatHookResult, ChatHookFactory } from \"./types/ChatHook\";\n\n// 旧 API - 保持向后兼容\nexport {\n useXAi,\n XAiProvider,\n XAiChatbot,\n XAiSDK,\n XAiSender,\n XAiConversations,\n useXAiSDK,\n request,\n};\n\n// 新 API - 推荐使用\nexport {\n XAdkProvider,\n XAdkChatbot,\n XAdkSender,\n XAdkSenderSwitch,\n FileGallery,\n XAdkThoughtChain,\n useADKChat,\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n createXGroupUploadRequest,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n};\n\n// FolderTree 文件树组件\nimport FolderTree from \"./components/FolderTree\";\nexport { FolderTree };\nexport type {\n FolderTreeProps,\n FolderTreeData,\n FileContentService,\n} from \"./components/FolderTree\";\n\n// 基础组件导出 - 供高级用户和业务侧使用\nexport { default as MarkdownRender } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport { default as FunctionCallRender } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport { default as ThinkRender } from \"./components/XAdkChatbot/components/ThinkRender\";\n\n// 基础组件类型导出\nexport type { MarkdownRenderProps } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport type { FunctionCallRenderProps } from \"./types/FunctionCallRender\";\nexport type {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n} from \"./types/XAdkThoughtChain\";\n"],"mappings":"AAAA;AACA,SAASA,MAAM;AACf,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,MAAM;AACb,OAAOC,SAAS;AAChB,OAAOC,WAAW;AAClB,OAAOC,gBAAgB;AACvB,OAAOC,gBAAgB;AACvB,OAAOC,SAAS;AAChB,OAAOC,OAAO;;AAEd;AACA,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AACvB,OAAOC,UAAU;AACjB,SACEC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBC,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBC,yBAAyB,EACzBC,eAAe,EACfC,sBAAsB;;AAGxB;AACA,SACEC,YAAY,EACZC,cAAc,EACdC,UAAU;AAGZ;;AAEA;;AAGA;AACA,SACE1B,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTE,gBAAgB,EAChBE,SAAS,EACTC,OAAO;;AAGT;AACA,SACEC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVC,gBAAgB,EAChBR,WAAW,EACXE,gBAAgB,EAChBO,UAAU,EACVC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBI,yBAAyB,EACzBH,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBE,eAAe,EACfC,sBAAsB;;AAGxB;AACA,OAAOI,UAAU;AACjB,SAASA,UAAU;AAOnB;AACA,SAASC,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;;AAE/B"}
|