@ai-group/chat-sdk 0.2.5 → 0.2.7

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 (149) hide show
  1. package/dist/cjs/assets/arrow-down.png +0 -0
  2. package/dist/cjs/assets/arrow-up.png +0 -0
  3. package/dist/cjs/assets/chatKnowledge.png +0 -0
  4. package/dist/cjs/assets/completed-black.png +0 -0
  5. package/dist/cjs/assets/completed.png +0 -0
  6. package/dist/cjs/assets/document-black.png +0 -0
  7. package/dist/cjs/assets/document.png +0 -0
  8. package/dist/cjs/assets/document.svg +16 -0
  9. package/dist/cjs/assets/empty.png +0 -0
  10. package/dist/cjs/assets/group.png +0 -0
  11. package/dist/cjs/assets/qa-black.png +0 -0
  12. package/dist/cjs/assets/qa.png +0 -0
  13. package/dist/cjs/assets/skillNo-black.png +0 -0
  14. package/dist/cjs/assets/skillNo.png +0 -0
  15. package/dist/cjs/assets/tools-black.png +0 -0
  16. package/dist/cjs/assets/tools.png +0 -0
  17. package/dist/cjs/assets/user.png +0 -0
  18. package/dist/cjs/client/base.d.ts +9 -0
  19. package/dist/cjs/client/base.js +18 -0
  20. package/dist/cjs/client/base.js.map +7 -0
  21. package/dist/cjs/client/restClient.d.ts +0 -0
  22. package/dist/cjs/client/restClient.js +1 -0
  23. package/dist/cjs/client/restClient.js.map +7 -0
  24. package/dist/cjs/client/wsClient.d.ts +0 -0
  25. package/dist/cjs/client/wsClient.js +1 -0
  26. package/dist/cjs/client/wsClient.js.map +7 -0
  27. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.d.ts +10 -0
  28. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +484 -0
  29. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +7 -0
  30. package/dist/cjs/components/XAiChatbot/index.d.ts +12 -0
  31. package/dist/cjs/components/XAiChatbot/index.js +365 -0
  32. package/dist/cjs/components/XAiChatbot/index.js.map +7 -0
  33. package/dist/cjs/components/XAiChatbot/styles.d.ts +71 -0
  34. package/dist/cjs/components/XAiChatbot/styles.js +409 -0
  35. package/dist/cjs/components/XAiChatbot/styles.js.map +7 -0
  36. package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +7 -0
  37. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +127 -0
  38. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +7 -0
  39. package/dist/cjs/components/XAiProvider/index.d.ts +4 -0
  40. package/dist/cjs/components/XAiProvider/index.js +113 -0
  41. package/dist/cjs/components/XAiProvider/index.js.map +7 -0
  42. package/dist/cjs/components/XAiSDK.d.ts +10 -0
  43. package/dist/cjs/components/XAiSDK.js +53 -0
  44. package/dist/cjs/components/XAiSDK.js.map +7 -0
  45. package/dist/cjs/components/XAiWebSDKWrapper.d.ts +9 -0
  46. package/dist/cjs/components/XAiWebSDKWrapper.js +64 -0
  47. package/dist/cjs/components/XAiWebSDKWrapper.js.map +7 -0
  48. package/dist/cjs/context/AiProviderContext.d.ts +12 -0
  49. package/dist/cjs/context/AiProviderContext.js +74 -0
  50. package/dist/cjs/context/AiProviderContext.js.map +7 -0
  51. package/dist/cjs/context/ThemeContext.d.ts +20 -0
  52. package/dist/cjs/context/ThemeContext.js +37 -0
  53. package/dist/cjs/context/ThemeContext.js.map +7 -0
  54. package/dist/cjs/hooks/useAgentGenerator.d.ts +67 -0
  55. package/dist/cjs/hooks/useAgentGenerator.js +445 -0
  56. package/dist/cjs/hooks/useAgentGenerator.js.map +7 -0
  57. package/dist/cjs/hooks/useEventStreamRequest.d.ts +30 -0
  58. package/dist/cjs/hooks/useEventStreamRequest.js +188 -0
  59. package/dist/cjs/hooks/useEventStreamRequest.js.map +7 -0
  60. package/dist/cjs/hooks/useProviderContext.d.ts +33 -0
  61. package/dist/cjs/hooks/useProviderContext.js +105 -0
  62. package/dist/cjs/hooks/useProviderContext.js.map +7 -0
  63. package/dist/cjs/hooks/useXAiSDK.d.ts +14 -0
  64. package/dist/cjs/hooks/useXAiSDK.js +75 -0
  65. package/dist/cjs/hooks/useXAiSDK.js.map +7 -0
  66. package/dist/cjs/index.d.ts +9 -0
  67. package/dist/cjs/index.js +61 -0
  68. package/dist/cjs/index.js.map +7 -0
  69. package/dist/cjs/services/api.d.ts +40 -0
  70. package/dist/cjs/services/api.js +49 -0
  71. package/dist/cjs/services/api.js.map +7 -0
  72. package/dist/cjs/styles/common.d.ts +64 -0
  73. package/dist/cjs/styles/common.js +144 -0
  74. package/dist/cjs/styles/common.js.map +7 -0
  75. package/dist/cjs/styles/markdown.d.ts +3 -0
  76. package/dist/cjs/styles/markdown.js +193 -0
  77. package/dist/cjs/styles/markdown.js.map +7 -0
  78. package/dist/cjs/types/XAiChatbot.d.ts +159 -0
  79. package/dist/cjs/types/XAiChatbot.js +18 -0
  80. package/dist/cjs/types/XAiChatbot.js.map +7 -0
  81. package/dist/cjs/types/XAiMessage.d.ts +121 -0
  82. package/dist/cjs/types/XAiMessage.js +55 -0
  83. package/dist/cjs/types/XAiMessage.js.map +7 -0
  84. package/dist/cjs/types/XAiProvider.d.ts +32 -0
  85. package/dist/cjs/types/XAiProvider.js +41 -0
  86. package/dist/cjs/types/XAiProvider.js.map +7 -0
  87. package/dist/cjs/types/index.d.ts +3 -0
  88. package/dist/cjs/types/index.js +28 -0
  89. package/dist/cjs/types/index.js.map +7 -0
  90. package/dist/cjs/types/mdx.d.ts +18 -0
  91. package/dist/cjs/utils/chat.d.ts +34 -0
  92. package/dist/cjs/utils/chat.js +1 -0
  93. package/dist/cjs/utils/chat.js.map +7 -0
  94. package/dist/cjs/utils/index.d.ts +2 -0
  95. package/dist/cjs/utils/index.js +49 -0
  96. package/dist/cjs/utils/index.js.map +7 -0
  97. package/dist/cjs/utils/providerManager.d.ts +22 -0
  98. package/dist/cjs/utils/providerManager.js +73 -0
  99. package/dist/cjs/utils/providerManager.js.map +7 -0
  100. package/dist/cjs/utils/request.d.ts +78 -0
  101. package/dist/cjs/utils/request.example.d.ts +39 -0
  102. package/dist/cjs/utils/request.example.js +211 -0
  103. package/dist/cjs/utils/request.example.js.map +7 -0
  104. package/dist/cjs/utils/request.js +231 -0
  105. package/dist/cjs/utils/request.js.map +7 -0
  106. package/dist/cjs/utils/umdEntry.d.ts +11 -0
  107. package/dist/cjs/utils/umdEntry.js +95 -0
  108. package/dist/cjs/utils/umdEntry.js.map +7 -0
  109. package/dist/esm/assets/user.png +0 -0
  110. package/dist/esm/client/base.d.ts +9 -0
  111. package/dist/esm/client/restClient.d.ts +0 -0
  112. package/dist/esm/client/wsClient.d.ts +0 -0
  113. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.d.ts +10 -0
  114. package/dist/esm/components/XAiChatbot/index.d.ts +12 -0
  115. package/dist/esm/components/XAiChatbot/index.js +11 -3
  116. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  117. package/dist/esm/components/XAiChatbot/styles.d.ts +71 -0
  118. package/dist/esm/components/XAiChatbot/styles.js +2 -2
  119. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  120. package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +7 -0
  121. package/dist/esm/components/XAiProvider/index.d.ts +4 -0
  122. package/dist/esm/components/XAiProvider/index.js +3 -0
  123. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  124. package/dist/esm/components/XAiSDK.d.ts +10 -0
  125. package/dist/esm/components/XAiWebSDKWrapper.d.ts +9 -0
  126. package/dist/esm/context/AiProviderContext.d.ts +12 -0
  127. package/dist/esm/context/ThemeContext.d.ts +20 -0
  128. package/dist/esm/hooks/useAgentGenerator.d.ts +67 -0
  129. package/dist/esm/hooks/useAgentGenerator.js +50 -17
  130. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  131. package/dist/esm/hooks/useEventStreamRequest.d.ts +30 -0
  132. package/dist/esm/hooks/useProviderContext.d.ts +33 -0
  133. package/dist/esm/hooks/useXAiSDK.d.ts +14 -0
  134. package/dist/esm/index.d.ts +9 -0
  135. package/dist/esm/services/api.d.ts +40 -0
  136. package/dist/esm/styles/common.d.ts +64 -0
  137. package/dist/esm/styles/markdown.d.ts +3 -0
  138. package/dist/esm/types/XAiChatbot.d.ts +159 -0
  139. package/dist/esm/types/XAiMessage.d.ts +121 -0
  140. package/dist/esm/types/XAiProvider.d.ts +32 -0
  141. package/dist/esm/types/index.d.ts +3 -0
  142. package/dist/esm/utils/chat.d.ts +34 -0
  143. package/dist/esm/utils/index.d.ts +2 -0
  144. package/dist/esm/utils/providerManager.d.ts +22 -0
  145. package/dist/esm/utils/request.d.ts +78 -0
  146. package/dist/esm/utils/request.example.d.ts +39 -0
  147. package/dist/esm/utils/umdEntry.d.ts +11 -0
  148. package/dist/umd/chat-sdk.min.js +1 -1
  149. package/package.json +1 -1
@@ -0,0 +1,39 @@
1
+ declare function getUserInfo(userId: string): Promise<{
2
+ id: string;
3
+ name: string;
4
+ email: string;
5
+ } | undefined>;
6
+ declare function createUser(userData: {
7
+ name: string;
8
+ email: string;
9
+ password: string;
10
+ }): Promise<{
11
+ id: string;
12
+ name: string;
13
+ email: string;
14
+ } | undefined>;
15
+ declare function updateUser(userId: string, userData: {
16
+ name?: string;
17
+ email?: string;
18
+ }): Promise<{
19
+ id: string;
20
+ name: string;
21
+ email: string;
22
+ } | undefined>;
23
+ declare function deleteUser(userId: string): Promise<true | undefined>;
24
+ declare function updateUserProfile(userId: string, profileData: {
25
+ avatar?: string;
26
+ bio?: string;
27
+ }): Promise<{
28
+ id: string;
29
+ avatar: string;
30
+ bio: string;
31
+ } | undefined>;
32
+ declare function uploadAvatar(userId: string, file: File): Promise<{
33
+ url: string;
34
+ } | undefined>;
35
+ declare function downloadReport(reportId: string, filename?: string): Promise<void>;
36
+ declare function getProtectedData(): Promise<any>;
37
+ declare function handleErrors(): Promise<import("./request").ApiResponse<any> | undefined>;
38
+ declare function batchRequests(): Promise<import("./request").ApiResponse<any>[] | undefined>;
39
+ export { getUserInfo, createUser, updateUser, deleteUser, updateUserProfile, uploadAvatar, downloadReport, getProtectedData, handleErrors, batchRequests, };
@@ -0,0 +1,211 @@
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/utils/request.example.ts
20
+ var request_example_exports = {};
21
+ __export(request_example_exports, {
22
+ batchRequests: () => batchRequests,
23
+ createUser: () => createUser,
24
+ deleteUser: () => deleteUser,
25
+ downloadReport: () => downloadReport,
26
+ getProtectedData: () => getProtectedData,
27
+ getUserInfo: () => getUserInfo,
28
+ handleErrors: () => handleErrors,
29
+ updateUser: () => updateUser,
30
+ updateUserProfile: () => updateUserProfile,
31
+ uploadAvatar: () => uploadAvatar
32
+ });
33
+ module.exports = __toCommonJS(request_example_exports);
34
+ var import_request = require("./request");
35
+ var apiClient = (0, import_request.createRequest)({
36
+ baseURL: "https://api.example.com",
37
+ timeout: 15e3,
38
+ headers: {
39
+ Authorization: "Bearer your-token"
40
+ },
41
+ onError: (error) => {
42
+ console.error("API Error:", error);
43
+ }
44
+ });
45
+ async function getUserInfo(userId) {
46
+ try {
47
+ const response = await (0, import_request.get)(
48
+ `/api/users/${userId}`,
49
+ { include: "profile" },
50
+ { retry: 3, retryDelay: 1e3 }
51
+ );
52
+ if (response.success) {
53
+ console.log("用户信息:", response.data);
54
+ return response.data;
55
+ }
56
+ console.error("获取用户信息失败:", response.message);
57
+ } catch (error) {
58
+ console.error("请求失败:", error);
59
+ }
60
+ }
61
+ async function createUser(userData) {
62
+ try {
63
+ const response = await (0, import_request.post)(
64
+ "/api/users",
65
+ userData,
66
+ { showError: true }
67
+ );
68
+ if (response.success) {
69
+ console.log("用户创建成功:", response.data);
70
+ return response.data;
71
+ }
72
+ } catch (error) {
73
+ console.error("创建用户失败:", error);
74
+ }
75
+ }
76
+ async function updateUser(userId, userData) {
77
+ try {
78
+ const response = await (0, import_request.put)(
79
+ `/api/users/${userId}`,
80
+ userData
81
+ );
82
+ if (response.success) {
83
+ console.log("用户更新成功:", response.data);
84
+ return response.data;
85
+ }
86
+ } catch (error) {
87
+ console.error("更新用户失败:", error);
88
+ }
89
+ }
90
+ async function deleteUser(userId) {
91
+ try {
92
+ const response = await (0, import_request.del)(`/api/users/${userId}`);
93
+ if (response.success) {
94
+ console.log("用户删除成功");
95
+ return true;
96
+ }
97
+ } catch (error) {
98
+ console.error("删除用户失败:", error);
99
+ }
100
+ }
101
+ async function updateUserProfile(userId, profileData) {
102
+ try {
103
+ const response = await (0, import_request.patch)(
104
+ `/api/users/${userId}/profile`,
105
+ profileData
106
+ );
107
+ if (response.success) {
108
+ console.log("用户资料更新成功:", response.data);
109
+ return response.data;
110
+ }
111
+ } catch (error) {
112
+ console.error("更新用户资料失败:", error);
113
+ }
114
+ }
115
+ async function uploadAvatar(userId, file) {
116
+ try {
117
+ const response = await (0, import_request.upload)(
118
+ `/api/users/${userId}/avatar`,
119
+ file,
120
+ (progress) => {
121
+ console.log(`上传进度: ${progress}%`);
122
+ },
123
+ { timeout: 3e4 }
124
+ );
125
+ if (response.success) {
126
+ console.log("头像上传成功:", response.data.url);
127
+ return response.data;
128
+ }
129
+ } catch (error) {
130
+ console.error("头像上传失败:", error);
131
+ }
132
+ }
133
+ async function downloadReport(reportId, filename) {
134
+ try {
135
+ await (0, import_request.download)(
136
+ `/api/reports/${reportId}/download`,
137
+ filename || `report-${reportId}.pdf`
138
+ );
139
+ console.log("报告下载成功");
140
+ } catch (error) {
141
+ console.error("报告下载失败:", error);
142
+ }
143
+ }
144
+ var authConfig = {
145
+ headers: {
146
+ Authorization: "Bearer your-token"
147
+ },
148
+ retry: 2,
149
+ retryDelay: 2e3,
150
+ showError: true
151
+ };
152
+ async function getProtectedData() {
153
+ try {
154
+ const response = await apiClient.get("/api/protected/data", authConfig);
155
+ console.log("受保护的数据:", response.data);
156
+ return response.data;
157
+ } catch (error) {
158
+ console.error("获取受保护数据失败:", error);
159
+ }
160
+ }
161
+ async function handleErrors() {
162
+ try {
163
+ const response = await (0, import_request.get)("/api/nonexistent");
164
+ return response;
165
+ } catch (error) {
166
+ switch (error.code) {
167
+ case 401:
168
+ console.error("未授权,请重新登录");
169
+ break;
170
+ case 403:
171
+ console.error("权限不足");
172
+ break;
173
+ case 404:
174
+ console.error("资源不存在");
175
+ break;
176
+ case 500:
177
+ console.error("服务器内部错误");
178
+ break;
179
+ default:
180
+ console.error("未知错误:", error.message);
181
+ }
182
+ }
183
+ }
184
+ async function batchRequests() {
185
+ const promises = [
186
+ (0, import_request.get)("/api/users/1"),
187
+ (0, import_request.get)("/api/users/2"),
188
+ (0, import_request.get)("/api/users/3")
189
+ ];
190
+ try {
191
+ const results = await Promise.all(promises);
192
+ console.log("批量请求结果:", results);
193
+ return results;
194
+ } catch (error) {
195
+ console.error("批量请求失败:", error);
196
+ }
197
+ }
198
+ // Annotate the CommonJS export names for ESM import in node:
199
+ 0 && (module.exports = {
200
+ batchRequests,
201
+ createUser,
202
+ deleteUser,
203
+ downloadReport,
204
+ getProtectedData,
205
+ getUserInfo,
206
+ handleErrors,
207
+ updateUser,
208
+ updateUserProfile,
209
+ uploadAvatar
210
+ });
211
+ //# sourceMappingURL=request.example.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/request.example.ts"],
4
+ "sourcesContent": ["import { createRequest, get, post, put, del, patch, upload, download, RequestConfig } from './request';\n\n// 示例 1: 创建自定义请求实例\nconst apiClient = createRequest({\n baseURL: 'https://api.example.com',\n timeout: 15000,\n headers: {\n Authorization: 'Bearer your-token',\n },\n onError: (error) => {\n console.error('API Error:', error);\n },\n});\n\n// 示例 2: 基本 GET 请求\nasync function getUserInfo(userId: string) {\n try {\n const response = await get<{ id: string; name: string; email: string }>(\n `/api/users/${userId}`,\n { include: 'profile' },\n { retry: 3, retryDelay: 1000 },\n );\n\n if (response.success) {\n console.log('用户信息:', response.data);\n return response.data;\n }\n console.error('获取用户信息失败:', response.message);\n } catch (error) {\n console.error('请求失败:', error);\n }\n}\n\n// 示例 3: POST 请求创建资源\nasync function createUser(userData: { name: string; email: string; password: string }) {\n try {\n const response = await post<{ id: string; name: string; email: string }>(\n '/api/users',\n userData,\n { showError: true },\n );\n\n if (response.success) {\n console.log('用户创建成功:', response.data);\n return response.data;\n }\n } catch (error) {\n console.error('创建用户失败:', error);\n }\n}\n\n// 示例 4: PUT 请求更新资源\nasync function updateUser(userId: string, userData: { name?: string; email?: string }) {\n try {\n const response = await put<{ id: string; name: string; email: string }>(\n `/api/users/${userId}`,\n userData,\n );\n\n if (response.success) {\n console.log('用户更新成功:', response.data);\n return response.data;\n }\n } catch (error) {\n console.error('更新用户失败:', error);\n }\n}\n\n// 示例 5: DELETE 请求删除资源\nasync function deleteUser(userId: string) {\n try {\n const response = await del<{ success: boolean }>(`/api/users/${userId}`);\n\n if (response.success) {\n console.log('用户删除成功');\n return true;\n }\n } catch (error) {\n console.error('删除用户失败:', error);\n }\n}\n\n// 示例 6: PATCH 请求部分更新\nasync function updateUserProfile(userId: string, profileData: { avatar?: string; bio?: string }) {\n try {\n const response = await patch<{ id: string; avatar: string; bio: string }>(\n `/api/users/${userId}/profile`,\n profileData,\n );\n\n if (response.success) {\n console.log('用户资料更新成功:', response.data);\n return response.data;\n }\n } catch (error) {\n console.error('更新用户资料失败:', error);\n }\n}\n\n// 示例 7: 文件上传\nasync function uploadAvatar(userId: string, file: File) {\n try {\n const response = await upload<{ url: string }>(\n `/api/users/${userId}/avatar`,\n file,\n (progress) => {\n console.log(`上传进度: ${progress}%`);\n },\n { timeout: 30000 },\n );\n\n if (response.success) {\n console.log('头像上传成功:', response.data.url);\n return response.data;\n }\n } catch (error) {\n console.error('头像上传失败:', error);\n }\n}\n\n// 示例 8: 文件下载\nasync function downloadReport(reportId: string, filename?: string) {\n try {\n await download(\n `/api/reports/${reportId}/download`,\n filename || `report-${reportId}.pdf`,\n );\n console.log('报告下载成功');\n } catch (error) {\n console.error('报告下载失败:', error);\n }\n}\n\n// 示例 9: 带认证的请求配置\nconst authConfig = {\n headers: {\n Authorization: 'Bearer your-token',\n },\n retry: 2,\n retryDelay: 2000,\n showError: true,\n};\n\n// 示例 10: 使用自定义请求实例\nasync function getProtectedData() {\n try {\n const response = await apiClient.get('/api/protected/data', authConfig);\n console.log('受保护的数据:', response.data);\n return response.data;\n } catch (error) {\n console.error('获取受保护数据失败:', error);\n }\n}\n\n// 示例 11: 错误处理\nasync function handleErrors() {\n try {\n const response = await get('/api/nonexistent');\n return response;\n } catch (error: any) {\n switch (error.code) {\n case 401:\n console.error('未授权,请重新登录');\n // 重定向到登录页\n break;\n case 403:\n console.error('权限不足');\n break;\n case 404:\n console.error('资源不存在');\n break;\n case 500:\n console.error('服务器内部错误');\n break;\n default:\n console.error('未知错误:', error.message);\n }\n }\n}\n\n// 示例 12: 批量请求\nasync function batchRequests() {\n const promises = [\n get('/api/users/1'),\n get('/api/users/2'),\n get('/api/users/3'),\n ];\n\n try {\n const results = await Promise.all(promises);\n console.log('批量请求结果:', results);\n return results;\n } catch (error) {\n console.error('批量请求失败:', error);\n }\n}\n\n// 导出示例函数\nexport {\n getUserInfo,\n createUser,\n updateUser,\n deleteUser,\n updateUserProfile,\n uploadAvatar,\n downloadReport,\n getProtectedData,\n handleErrors,\n batchRequests,\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,231 @@
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/utils/request.ts
30
+ var request_exports = {};
31
+ __export(request_exports, {
32
+ createRequest: () => createRequest,
33
+ default: () => request_default,
34
+ del: () => del,
35
+ download: () => download,
36
+ get: () => get,
37
+ patch: () => patch,
38
+ post: () => post,
39
+ put: () => put,
40
+ request: () => request,
41
+ upload: () => upload
42
+ });
43
+ module.exports = __toCommonJS(request_exports);
44
+ var import_axios = __toESM(require("axios"));
45
+ function handleResponseError(error) {
46
+ if (error.response) {
47
+ const { status, data } = error.response;
48
+ return {
49
+ code: status,
50
+ message: (data == null ? void 0 : data.message) || `HTTP ${status} 错误`,
51
+ details: data
52
+ };
53
+ }
54
+ if (error.request) {
55
+ return {
56
+ code: -1,
57
+ message: "网络连接失败,请检查网络设置",
58
+ details: error.request
59
+ };
60
+ }
61
+ return {
62
+ code: -2,
63
+ message: error.message || "请求配置错误",
64
+ details: error
65
+ };
66
+ }
67
+ function createRequest(config = {}) {
68
+ const {
69
+ baseURL = "",
70
+ timeout = 1e4,
71
+ headers = {},
72
+ requestInterceptor,
73
+ responseInterceptor,
74
+ onError
75
+ } = config;
76
+ const instance = import_axios.default.create({
77
+ baseURL,
78
+ timeout,
79
+ headers: {
80
+ "Content-Type": "application/json",
81
+ ...headers
82
+ }
83
+ });
84
+ instance.interceptors.request.use(
85
+ async (requestConfig) => {
86
+ if (requestConfig.method === "get") {
87
+ requestConfig.params = {
88
+ ...requestConfig.params,
89
+ _t: Date.now()
90
+ };
91
+ }
92
+ if (requestInterceptor == null ? void 0 : requestInterceptor.onRequest) {
93
+ return requestInterceptor.onRequest(requestConfig);
94
+ }
95
+ return requestConfig;
96
+ },
97
+ async (error) => {
98
+ if (requestInterceptor == null ? void 0 : requestInterceptor.onRequestError) {
99
+ return requestInterceptor.onRequestError(error);
100
+ }
101
+ return Promise.reject(error);
102
+ }
103
+ );
104
+ instance.interceptors.response.use(
105
+ async (response) => {
106
+ if (responseInterceptor == null ? void 0 : responseInterceptor.onResponse) {
107
+ return responseInterceptor.onResponse(response);
108
+ }
109
+ return response;
110
+ },
111
+ async (error) => {
112
+ const requestError = handleResponseError(error);
113
+ if (onError) {
114
+ onError(requestError);
115
+ }
116
+ if (responseInterceptor == null ? void 0 : responseInterceptor.onResponseError) {
117
+ return responseInterceptor.onResponseError(error);
118
+ }
119
+ return Promise.reject(requestError);
120
+ }
121
+ );
122
+ return instance;
123
+ }
124
+ async function retryRequest(requestFn, retryCount, retryDelay) {
125
+ try {
126
+ return await requestFn();
127
+ } catch (error) {
128
+ if (retryCount > 0) {
129
+ await new Promise((resolve) => setTimeout(resolve, retryDelay));
130
+ return retryRequest(requestFn, retryCount - 1, retryDelay);
131
+ }
132
+ throw error;
133
+ }
134
+ }
135
+ async function get(url, params, config) {
136
+ const { retry = 0, retryDelay = 1e3, ...axiosConfig } = config || {};
137
+ const requestFn = () => createRequest().get(url, {
138
+ params,
139
+ ...axiosConfig
140
+ });
141
+ const response = await retryRequest(requestFn, retry, retryDelay);
142
+ return response.data;
143
+ }
144
+ async function post(url, data, config) {
145
+ const { retry = 0, retryDelay = 1e3, ...axiosConfig } = config || {};
146
+ const requestFn = () => createRequest().post(url, data, axiosConfig);
147
+ const response = await retryRequest(requestFn, retry, retryDelay);
148
+ return response.data;
149
+ }
150
+ async function put(url, data, config) {
151
+ const { retry = 0, retryDelay = 1e3, ...axiosConfig } = config || {};
152
+ const requestFn = () => createRequest().put(url, data, axiosConfig);
153
+ const response = await retryRequest(requestFn, retry, retryDelay);
154
+ return response.data;
155
+ }
156
+ async function del(url, config) {
157
+ const { retry = 0, retryDelay = 1e3, ...axiosConfig } = config || {};
158
+ const requestFn = () => createRequest().delete(url, axiosConfig);
159
+ const response = await retryRequest(requestFn, retry, retryDelay);
160
+ return response.data;
161
+ }
162
+ async function patch(url, data, config) {
163
+ const { retry = 0, retryDelay = 1e3, ...axiosConfig } = config || {};
164
+ const requestFn = () => createRequest().patch(url, data, axiosConfig);
165
+ const response = await retryRequest(requestFn, retry, retryDelay);
166
+ return response.data;
167
+ }
168
+ async function upload(url, file, onProgress, config) {
169
+ const formData = new FormData();
170
+ formData.append("file", file);
171
+ const { retry = 0, retryDelay = 1e3, ...axiosConfig } = config || {};
172
+ const requestFn = () => createRequest().post(url, formData, {
173
+ ...axiosConfig,
174
+ headers: {
175
+ "Content-Type": "multipart/form-data",
176
+ ...axiosConfig.headers
177
+ },
178
+ onUploadProgress: (progressEvent) => {
179
+ if (onProgress && progressEvent.total) {
180
+ const progress = Math.round(progressEvent.loaded * 100 / progressEvent.total);
181
+ onProgress(progress);
182
+ }
183
+ }
184
+ });
185
+ const response = await retryRequest(requestFn, retry, retryDelay);
186
+ return response.data;
187
+ }
188
+ async function download(url, filename, config) {
189
+ const { retry = 0, retryDelay = 1e3, ...axiosConfig } = config || {};
190
+ const requestFn = async () => {
191
+ const response = await createRequest().get(url, {
192
+ ...axiosConfig,
193
+ responseType: "blob"
194
+ });
195
+ const blob = new Blob([response.data]);
196
+ const downloadUrl = window.URL.createObjectURL(blob);
197
+ const link = document.createElement("a");
198
+ link.href = downloadUrl;
199
+ link.download = filename || "download";
200
+ document.body.appendChild(link);
201
+ link.click();
202
+ document.body.removeChild(link);
203
+ window.URL.revokeObjectURL(downloadUrl);
204
+ };
205
+ await retryRequest(requestFn, retry, retryDelay);
206
+ }
207
+ var request = createRequest();
208
+ var request_default = {
209
+ createRequest,
210
+ get,
211
+ post,
212
+ put,
213
+ del,
214
+ patch,
215
+ upload,
216
+ download,
217
+ request
218
+ };
219
+ // Annotate the CommonJS export names for ESM import in node:
220
+ 0 && (module.exports = {
221
+ createRequest,
222
+ del,
223
+ download,
224
+ get,
225
+ patch,
226
+ post,
227
+ put,
228
+ request,
229
+ upload
230
+ });
231
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/request.ts"],
4
+ "sourcesContent": ["import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError, InternalAxiosRequestConfig } from 'axios';\n\n// 请求配置接口\nexport interface RequestConfig extends AxiosRequestConfig {\n showError?: boolean; // 是否显示错误信息\n retry?: number; // 重试次数\n retryDelay?: number; // 重试延迟\n}\n\n// 响应数据接口\nexport interface ApiResponse<T = any> {\n code: number;\n message: string;\n data: T;\n success: boolean;\n}\n\n// 错误信息接口\nexport interface RequestError {\n code: number;\n message: string;\n details?: any;\n}\n\n// 请求拦截器配置\nexport interface RequestInterceptor {\n onRequest?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig | Promise<InternalAxiosRequestConfig>;\n onRequestError?: (error: AxiosError) => Promise<AxiosError>;\n}\n\n// 响应拦截器配置\nexport interface ResponseInterceptor {\n onResponse?: <T>(response: AxiosResponse<ApiResponse<T>>) => AxiosResponse<ApiResponse<T>> | Promise<AxiosResponse<ApiResponse<T>>>;\n onResponseError?: (error: AxiosError) => Promise<AxiosError>;\n}\n\n// 创建请求实例的配置\nexport interface CreateRequestConfig {\n baseURL?: string;\n timeout?: number;\n headers?: Record<string, string>;\n requestInterceptor?: RequestInterceptor;\n responseInterceptor?: ResponseInterceptor;\n onError?: (error: RequestError) => void;\n}\n\n/**\n * 处理响应错误\n */\nfunction handleResponseError(error: AxiosError): RequestError {\n if (error.response) {\n // 服务器返回错误状态码\n const { status, data } = error.response;\n return {\n code: status,\n message: (data as any)?.message || `HTTP ${status} 错误`,\n details: data,\n };\n }\n if (error.request) {\n // 请求已发出但没有收到响应\n return {\n code: -1,\n message: '网络连接失败,请检查网络设置',\n details: error.request,\n };\n }\n // 请求配置错误\n return {\n code: -2,\n message: error.message || '请求配置错误',\n details: error,\n };\n}\n\n/**\n * 创建请求实例\n */\nexport function createRequest(config: CreateRequestConfig = {}): AxiosInstance {\n const {\n baseURL = '',\n timeout = 10000,\n headers = {},\n requestInterceptor,\n responseInterceptor,\n onError,\n } = config;\n\n // 创建 axios 实例\n const instance = axios.create({\n baseURL,\n timeout,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n\n // 请求拦截器\n instance.interceptors.request.use(\n async (requestConfig) => {\n // 添加时间戳防止缓存\n if (requestConfig.method === 'get') {\n requestConfig.params = {\n ...requestConfig.params,\n _t: Date.now(),\n };\n }\n\n // 自定义请求拦截器\n if (requestInterceptor?.onRequest) {\n return requestInterceptor.onRequest(requestConfig);\n }\n\n return requestConfig;\n },\n async (error) => {\n // 自定义请求错误拦截器\n if (requestInterceptor?.onRequestError) {\n return requestInterceptor.onRequestError(error);\n }\n return Promise.reject(error);\n },\n );\n\n // 响应拦截器\n instance.interceptors.response.use(\n async (response) => {\n // 自定义响应拦截器\n if (responseInterceptor?.onResponse) {\n return responseInterceptor.onResponse(response);\n }\n return response;\n },\n async (error: AxiosError) => {\n const requestError = handleResponseError(error);\n\n // 调用错误回调\n if (onError) {\n onError(requestError);\n }\n\n // 自定义响应错误拦截器\n if (responseInterceptor?.onResponseError) {\n return responseInterceptor.onResponseError(error);\n }\n\n return Promise.reject(requestError);\n },\n );\n\n return instance;\n}\n\n/**\n * 重试机制\n */\nasync function retryRequest<T>(\n requestFn: () => Promise<T>,\n retryCount: number,\n retryDelay: number,\n): Promise<T> {\n try {\n return await requestFn();\n } catch (error) {\n if (retryCount > 0) {\n await new Promise((resolve) => setTimeout(resolve, retryDelay));\n return retryRequest(requestFn, retryCount - 1, retryDelay);\n }\n throw error;\n }\n}\n\n/**\n * 通用 GET 请求\n */\nexport async function get<T = any>(\n url: string,\n params?: any,\n config?: RequestConfig,\n): Promise<ApiResponse<T>> {\n const { retry = 0, retryDelay = 1000, ...axiosConfig } = config || {};\n\n const requestFn = () => createRequest().get<ApiResponse<T>>(url, {\n params,\n ...axiosConfig,\n });\n\n const response = await retryRequest(requestFn, retry, retryDelay);\n return response.data;\n}\n\n/**\n * 通用 POST 请求\n */\nexport async function post<T = any>(\n url: string,\n data?: any,\n config?: RequestConfig,\n): Promise<ApiResponse<T>> {\n const { retry = 0, retryDelay = 1000, ...axiosConfig } = config || {};\n\n const requestFn = () => createRequest().post<ApiResponse<T>>(url, data, axiosConfig);\n\n const response = await retryRequest(requestFn, retry, retryDelay);\n return response.data;\n}\n\n/**\n * 通用 PUT 请求\n */\nexport async function put<T = any>(\n url: string,\n data?: any,\n config?: RequestConfig,\n): Promise<ApiResponse<T>> {\n const { retry = 0, retryDelay = 1000, ...axiosConfig } = config || {};\n\n const requestFn = () => createRequest().put<ApiResponse<T>>(url, data, axiosConfig);\n\n const response = await retryRequest(requestFn, retry, retryDelay);\n return response.data;\n}\n\n/**\n * 通用 DELETE 请求\n */\nexport async function del<T = any>(\n url: string,\n config?: RequestConfig,\n): Promise<ApiResponse<T>> {\n const { retry = 0, retryDelay = 1000, ...axiosConfig } = config || {};\n\n const requestFn = () => createRequest().delete<ApiResponse<T>>(url, axiosConfig);\n\n const response = await retryRequest(requestFn, retry, retryDelay);\n return response.data;\n}\n\n/**\n * 通用 PATCH 请求\n */\nexport async function patch<T = any>(\n url: string,\n data?: any,\n config?: RequestConfig,\n): Promise<ApiResponse<T>> {\n const { retry = 0, retryDelay = 1000, ...axiosConfig } = config || {};\n\n const requestFn = () => createRequest().patch<ApiResponse<T>>(url, data, axiosConfig);\n\n const response = await retryRequest(requestFn, retry, retryDelay);\n return response.data;\n}\n\n/**\n * 文件上传\n */\nexport async function upload<T = any>(\n url: string,\n file: File,\n onProgress?: (progress: number) => void,\n config?: RequestConfig,\n): Promise<ApiResponse<T>> {\n const formData = new FormData();\n formData.append('file', file);\n\n const { retry = 0, retryDelay = 1000, ...axiosConfig } = config || {};\n\n const requestFn = () => createRequest().post<ApiResponse<T>>(url, formData, {\n ...axiosConfig,\n headers: {\n 'Content-Type': 'multipart/form-data',\n ...axiosConfig.headers,\n },\n onUploadProgress: (progressEvent) => {\n if (onProgress && progressEvent.total) {\n const progress = Math.round((progressEvent.loaded * 100) / progressEvent.total);\n onProgress(progress);\n }\n },\n });\n\n const response = await retryRequest(requestFn, retry, retryDelay);\n return response.data;\n}\n\n/**\n * 下载文件\n */\nexport async function download(\n url: string,\n filename?: string,\n config?: RequestConfig,\n): Promise<void> {\n const { retry = 0, retryDelay = 1000, ...axiosConfig } = config || {};\n\n const requestFn = async () => {\n const response = await createRequest().get(url, {\n ...axiosConfig,\n responseType: 'blob',\n });\n\n const blob = new Blob([response.data]);\n const downloadUrl = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = downloadUrl;\n link.download = filename || 'download';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(downloadUrl);\n };\n\n await retryRequest(requestFn, retry, retryDelay);\n}\n\n// 默认请求实例\nexport const request = createRequest();\n\n// 导出所有方法\nexport default {\n createRequest,\n get,\n post,\n put,\n del,\n patch,\n upload,\n download,\n request,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["axios"]
7
+ }
@@ -0,0 +1,11 @@
1
+ import { XAiSDKProps } from "../types/XAiProvider";
2
+ declare class XAiWebSDK {
3
+ container: HTMLElement;
4
+ props: XAiSDKProps;
5
+ root: any;
6
+ constructor(container: HTMLElement, props: XAiSDKProps);
7
+ mount(): void;
8
+ unmount(): void;
9
+ static initChatbot(containerOrProps: HTMLElement | XAiSDKProps, props?: XAiSDKProps): XAiWebSDK;
10
+ }
11
+ export default XAiWebSDK;
@@ -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/utils/umdEntry.tsx
30
+ var umdEntry_exports = {};
31
+ __export(umdEntry_exports, {
32
+ default: () => umdEntry_default
33
+ });
34
+ module.exports = __toCommonJS(umdEntry_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_client = __toESM(require("react-dom/client"));
37
+ var import_XAiProvider = __toESM(require("../components/XAiProvider"));
38
+ var import_XAiChatbot = __toESM(require("../components/XAiChatbot"));
39
+ var XAiWebSDK = class {
40
+ constructor(container, props) {
41
+ this.container = container;
42
+ this.props = props;
43
+ this.mount();
44
+ }
45
+ mount() {
46
+ if (import_client.default.createRoot) {
47
+ this.root = import_client.default.createRoot(this.container);
48
+ this.root.render(
49
+ /* @__PURE__ */ import_react.default.createElement(import_XAiProvider.default, { ...this.props }, /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "100%", height: "100%" } }, /* @__PURE__ */ import_react.default.createElement(import_XAiChatbot.default, null)))
50
+ );
51
+ } else {
52
+ import_client.default.render(
53
+ /* @__PURE__ */ import_react.default.createElement(import_XAiProvider.default, { ...this.props }, /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "100%", height: "100%" } }, /* @__PURE__ */ import_react.default.createElement(import_XAiChatbot.default, null))),
54
+ this.container
55
+ );
56
+ }
57
+ }
58
+ unmount() {
59
+ if (this.root && this.root.unmount) {
60
+ this.root.unmount();
61
+ }
62
+ }
63
+ // 支持两种调用方式
64
+ static initChatbot(containerOrProps, props) {
65
+ var _a;
66
+ if (containerOrProps instanceof HTMLElement) {
67
+ return new XAiWebSDK(containerOrProps, props);
68
+ }
69
+ const sdkProps = containerOrProps;
70
+ let container;
71
+ if ((_a = sdkProps.componentProps) == null ? void 0 : _a.id) {
72
+ const existingContainer = document.getElementById(sdkProps.componentProps.id);
73
+ if (existingContainer) {
74
+ container = existingContainer;
75
+ } else {
76
+ container = document.createElement("div");
77
+ container.id = sdkProps.componentProps.id;
78
+ }
79
+ } else {
80
+ container = document.createElement("div");
81
+ container.id = "xai-chatbot-container";
82
+ }
83
+ if (sdkProps.componentProps) {
84
+ const { id, ...styleProps } = sdkProps.componentProps;
85
+ Object.assign(container.style, styleProps);
86
+ }
87
+ if (!container.parentNode) {
88
+ document.body.appendChild(container);
89
+ }
90
+ return new XAiWebSDK(container, sdkProps);
91
+ }
92
+ };
93
+ window.XAiWebSDK = XAiWebSDK;
94
+ var umdEntry_default = XAiWebSDK;
95
+ //# sourceMappingURL=umdEntry.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/umdEntry.tsx"],
4
+ "sourcesContent": ["import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { XAiSDKProps } from '@/types/XAiProvider';\nimport XAiProvider from '@/components/XAiProvider';\nimport XAiChatbot from '../components/XAiChatbot';\n\nclass XAiWebSDK {\n container: HTMLElement;\n\n props: XAiSDKProps;\n\n root: any;\n\n constructor(container: HTMLElement, props: XAiSDKProps) {\n this.container = container;\n this.props = props;\n this.mount();\n }\n\n mount() {\n if (ReactDOM.createRoot) {\n this.root = ReactDOM.createRoot(this.container);\n this.root.render(\n <XAiProvider {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n );\n } else {\n // @ts-ignore\n ReactDOM.render(\n <XAiProvider {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n this.container,\n );\n }\n }\n\n unmount() {\n if (this.root && this.root.unmount) {\n this.root.unmount();\n }\n }\n\n // 支持两种调用方式\n static initChatbot(containerOrProps: HTMLElement | XAiSDKProps, props?: XAiSDKProps) {\n // 如果第一个参数是 HTMLElement\n if (containerOrProps instanceof HTMLElement) {\n return new XAiWebSDK(containerOrProps, props!);\n }\n\n // 如果第一个参数是 props\n const sdkProps = containerOrProps as XAiSDKProps;\n let container: HTMLElement;\n\n // 检查是否有指定的 componentProps.id\n if (sdkProps.componentProps?.id) {\n const existingContainer = document.getElementById(sdkProps.componentProps.id);\n if (existingContainer) {\n container = existingContainer;\n } else {\n // 如果指定的 ID 不存在,创建新元素\n container = document.createElement('div');\n container.id = sdkProps.componentProps.id;\n }\n } else {\n // 没有指定 ID,创建默认容器\n container = document.createElement('div');\n container.id = 'xai-chatbot-container';\n }\n\n // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器\n if (sdkProps.componentProps) {\n const { id, ...styleProps } = sdkProps.componentProps;\n Object.assign(container.style, styleProps);\n }\n\n // 如果容器不在 DOM 中,添加到 body\n if (!container.parentNode) {\n document.body.appendChild(container);\n }\n\n return new XAiWebSDK(container, sdkProps);\n }\n}\n\n// 兼容 window 方式,也支持 new\n// @ts-ignore\nwindow.XAiWebSDK = XAiWebSDK;\n\n// 支持 ESModule/UMD 直接 import\nexport default XAiWebSDK;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,oBAAqB;AAErB,yBAAwB;AACxB,wBAAuB;AAEvB,IAAM,YAAN,MAAgB;AAAA,EAOd,YAAY,WAAwB,OAAoB;AACtD,SAAK,YAAY;AACjB,SAAK,QAAQ;AACb,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,QAAQ;AACN,QAAI,cAAAA,QAAS,YAAY;AACvB,WAAK,OAAO,cAAAA,QAAS,WAAW,KAAK,SAAS;AAC9C,WAAK,KAAK;AAAA,QACR,6BAAAC,QAAA,cAAC,mBAAAC,SAAA,EAAa,GAAG,KAAK,SACpB,6BAAAD,QAAA,cAAC,SAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAO,KAC1C,6BAAAA,QAAA,cAAC,kBAAAE,SAAA,IAAW,CACd,CACF;AAAA,MACF;AAAA,IACF,OAAO;AAEL,oBAAAH,QAAS;AAAA,QACP,6BAAAC,QAAA,cAAC,mBAAAC,SAAA,EAAa,GAAG,KAAK,SACpB,6BAAAD,QAAA,cAAC,SAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAO,KAC1C,6BAAAA,QAAA,cAAC,kBAAAE,SAAA,IAAW,CACd,CACF;AAAA,QACA,KAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAAA,EAEA,UAAU;AACR,QAAI,KAAK,QAAQ,KAAK,KAAK,SAAS;AAClC,WAAK,KAAK,QAAQ;AAAA,IACpB;AAAA,EACF;AAAA;AAAA,EAGA,OAAO,YAAY,kBAA6C,OAAqB;AAjDvF;AAmDI,QAAI,4BAA4B,aAAa;AAC3C,aAAO,IAAI,UAAU,kBAAkB,KAAM;AAAA,IAC/C;AAGA,UAAM,WAAW;AACjB,QAAI;AAGJ,SAAI,cAAS,mBAAT,mBAAyB,IAAI;AAC/B,YAAM,oBAAoB,SAAS,eAAe,SAAS,eAAe,EAAE;AAC5E,UAAI,mBAAmB;AACrB,oBAAY;AAAA,MACd,OAAO;AAEL,oBAAY,SAAS,cAAc,KAAK;AACxC,kBAAU,KAAK,SAAS,eAAe;AAAA,MACzC;AAAA,IACF,OAAO;AAEL,kBAAY,SAAS,cAAc,KAAK;AACxC,gBAAU,KAAK;AAAA,IACjB;AAGA,QAAI,SAAS,gBAAgB;AAC3B,YAAM,EAAE,IAAI,GAAG,WAAW,IAAI,SAAS;AACvC,aAAO,OAAO,UAAU,OAAO,UAAU;AAAA,IAC3C;AAGA,QAAI,CAAC,UAAU,YAAY;AACzB,eAAS,KAAK,YAAY,SAAS;AAAA,IACrC;AAEA,WAAO,IAAI,UAAU,WAAW,QAAQ;AAAA,EAC1C;AACF;AAIA,OAAO,YAAY;AAGnB,IAAO,mBAAQ;",
6
+ "names": ["ReactDOM", "React", "XAiProvider", "XAiChatbot"]
7
+ }
Binary file
@@ -0,0 +1,9 @@
1
+ import { BubbleDataType } from '@ant-design/x/es/bubble/BubbleList';
2
+ export interface AiClient {
3
+ appName: string;
4
+ icon: string;
5
+ send(message: string): Promise<any>;
6
+ stream?(message: string, onMessage: (msg: any) => void): void;
7
+ close?(): void;
8
+ }
9
+ export type MessageType = BubbleDataType;