@ai-group/chat-sdk 0.2.5
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/README.md +239 -0
- package/dist/esm/assets/arrow-down.png +0 -0
- package/dist/esm/assets/arrow-up.png +0 -0
- package/dist/esm/assets/chatKnowledge.png +0 -0
- package/dist/esm/assets/completed-black.png +0 -0
- package/dist/esm/assets/completed.png +0 -0
- package/dist/esm/assets/document-black.png +0 -0
- package/dist/esm/assets/document.png +0 -0
- package/dist/esm/assets/document.svg +16 -0
- package/dist/esm/assets/empty.png +0 -0
- package/dist/esm/assets/group.png +0 -0
- package/dist/esm/assets/qa-black.png +0 -0
- package/dist/esm/assets/qa.png +0 -0
- package/dist/esm/assets/skillNo-black.png +0 -0
- package/dist/esm/assets/skillNo.png +0 -0
- package/dist/esm/assets/tools-black.png +0 -0
- package/dist/esm/assets/tools.png +0 -0
- package/dist/esm/client/base.js +2 -0
- package/dist/esm/client/base.js.map +1 -0
- package/dist/esm/client/restClient.js +2 -0
- package/dist/esm/client/restClient.js.map +1 -0
- package/dist/esm/client/wsClient.js +2 -0
- package/dist/esm/client/wsClient.js.map +1 -0
- package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js +562 -0
- package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js.map +1 -0
- package/dist/esm/components/XAiChatbot/index.js +586 -0
- package/dist/esm/components/XAiChatbot/index.js.map +1 -0
- package/dist/esm/components/XAiChatbot/styles.js +62 -0
- package/dist/esm/components/XAiChatbot/styles.js.map +1 -0
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js +297 -0
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -0
- package/dist/esm/components/XAiProvider/index.js +128 -0
- package/dist/esm/components/XAiProvider/index.js.map +1 -0
- package/dist/esm/components/XAiSDK.js +29 -0
- package/dist/esm/components/XAiSDK.js.map +1 -0
- package/dist/esm/components/XAiWebSDKWrapper.js +42 -0
- package/dist/esm/components/XAiWebSDKWrapper.js.map +1 -0
- package/dist/esm/context/AiProviderContext.js +62 -0
- package/dist/esm/context/AiProviderContext.js.map +1 -0
- package/dist/esm/context/ThemeContext.js +8 -0
- package/dist/esm/context/ThemeContext.js.map +1 -0
- package/dist/esm/hooks/useAgentGenerator.js +536 -0
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -0
- package/dist/esm/hooks/useEventStreamRequest.js +229 -0
- package/dist/esm/hooks/useEventStreamRequest.js.map +1 -0
- package/dist/esm/hooks/useProviderContext.js +115 -0
- package/dist/esm/hooks/useProviderContext.js.map +1 -0
- package/dist/esm/hooks/useXAiSDK.js +49 -0
- package/dist/esm/hooks/useXAiSDK.js.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/services/api.js +73 -0
- package/dist/esm/services/api.js.map +1 -0
- package/dist/esm/styles/common.js +106 -0
- package/dist/esm/styles/common.js.map +1 -0
- package/dist/esm/styles/markdown.js +12 -0
- package/dist/esm/styles/markdown.js.map +1 -0
- package/dist/esm/types/XAiChatbot.js +2 -0
- package/dist/esm/types/XAiChatbot.js.map +1 -0
- package/dist/esm/types/XAiMessage.js +65 -0
- package/dist/esm/types/XAiMessage.js.map +1 -0
- package/dist/esm/types/XAiProvider.js +4 -0
- package/dist/esm/types/XAiProvider.js.map +1 -0
- package/dist/esm/types/index.js +4 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/mdx.d.ts +18 -0
- package/dist/esm/utils/chat.js +976 -0
- package/dist/esm/utils/chat.js.map +1 -0
- package/dist/esm/utils/index.js +19 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/providerManager.js +70 -0
- package/dist/esm/utils/providerManager.js.map +1 -0
- package/dist/esm/utils/request.example.js +379 -0
- package/dist/esm/utils/request.example.js.map +1 -0
- package/dist/esm/utils/request.js +491 -0
- package/dist/esm/utils/request.js.map +1 -0
- package/dist/esm/utils/umdEntry.js +109 -0
- package/dist/esm/utils/umdEntry.js.map +1 -0
- package/dist/umd/chat-sdk.min.js +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { message, Divider } from 'antd';
|
|
3
|
+
import copy from 'copy-to-clipboard';
|
|
4
|
+
import { XProvider } from '@ant-design/x';
|
|
5
|
+
import { XAiContext } from "../../context/AiProviderContext";
|
|
6
|
+
import useAgentGenerator from "../../hooks/useAgentGenerator";
|
|
7
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
var XAiProvider = function XAiProvider(_ref) {
|
|
10
|
+
var url = _ref.url,
|
|
11
|
+
token = _ref.token,
|
|
12
|
+
config = _ref.config,
|
|
13
|
+
_ref$providerId = _ref.providerId,
|
|
14
|
+
providerId = _ref$providerId === void 0 ? 'defaultId' : _ref$providerId,
|
|
15
|
+
children = _ref.children;
|
|
16
|
+
// 使用 useAgentGenerator Hook 管理消息状态
|
|
17
|
+
var _useAgentGenerator = useAgentGenerator({
|
|
18
|
+
url: url,
|
|
19
|
+
token: token,
|
|
20
|
+
config: config
|
|
21
|
+
}),
|
|
22
|
+
appInfo = _useAgentGenerator.appInfo,
|
|
23
|
+
chat = _useAgentGenerator.chat,
|
|
24
|
+
stopChat = _useAgentGenerator.stopChat,
|
|
25
|
+
reChat = _useAgentGenerator.reChat,
|
|
26
|
+
messages = _useAgentGenerator.messages,
|
|
27
|
+
loading = _useAgentGenerator.loading,
|
|
28
|
+
setMessages = _useAgentGenerator.setMessages;
|
|
29
|
+
var _ref2 = appInfo || {},
|
|
30
|
+
appName = _ref2.appName,
|
|
31
|
+
icon = _ref2.icon;
|
|
32
|
+
|
|
33
|
+
// 发送消息
|
|
34
|
+
var handleSendMessage = function handleSendMessage(_type, content) {
|
|
35
|
+
chat(content);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// 清空消息
|
|
39
|
+
var handleClearMessage = function handleClearMessage() {
|
|
40
|
+
stopChat();
|
|
41
|
+
setMessages([]);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// 工具栏按钮点击
|
|
45
|
+
var handleActions = function handleActions(index, actionData) {
|
|
46
|
+
var _ref3 = actionData || {},
|
|
47
|
+
content = _ref3.content,
|
|
48
|
+
id = _ref3.id;
|
|
49
|
+
var _content$text = content.text,
|
|
50
|
+
text = _content$text === void 0 ? '' : _content$text;
|
|
51
|
+
switch (index) {
|
|
52
|
+
case 0:
|
|
53
|
+
reChat();
|
|
54
|
+
break;
|
|
55
|
+
case 1:
|
|
56
|
+
copy(text);
|
|
57
|
+
message.success('复制成功');
|
|
58
|
+
break;
|
|
59
|
+
case 2:
|
|
60
|
+
setMessages(function (prev) {
|
|
61
|
+
return prev.filter(function (item) {
|
|
62
|
+
return item.id !== id;
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
message.success('删除成功');
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// 建议消息点击
|
|
71
|
+
var handleSuggestMessageClick = function handleSuggestMessageClick(_item, id) {
|
|
72
|
+
setMessages(function (prev) {
|
|
73
|
+
return prev.filter(function (m) {
|
|
74
|
+
return m.id !== id;
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
var ToolTip = function ToolTip(messageData) {
|
|
79
|
+
var finalResult = ((messageData === null || messageData === void 0 ? void 0 : messageData.think) || []).find(function (item) {
|
|
80
|
+
return item.actionName === 'FINISHED';
|
|
81
|
+
});
|
|
82
|
+
if (!finalResult) return null;
|
|
83
|
+
var _ref4 = finalResult.extra || {},
|
|
84
|
+
cost = _ref4.cost,
|
|
85
|
+
tokenCount = _ref4.token;
|
|
86
|
+
if (!cost && !token) return null;
|
|
87
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
88
|
+
style: {
|
|
89
|
+
display: 'flex',
|
|
90
|
+
alignItems: 'center',
|
|
91
|
+
fontSize: '12px',
|
|
92
|
+
color: '#949494',
|
|
93
|
+
flex: 1,
|
|
94
|
+
paddingRight: '40px'
|
|
95
|
+
},
|
|
96
|
+
children: [cost !== undefined && cost !== null && /*#__PURE__*/_jsxs("div", {
|
|
97
|
+
children: [cost, "s"]
|
|
98
|
+
}), tokenCount && /*#__PURE__*/_jsx(Divider, {
|
|
99
|
+
type: "vertical"
|
|
100
|
+
}), tokenCount && /*#__PURE__*/_jsxs("div", {
|
|
101
|
+
children: [tokenCount, " tokens"]
|
|
102
|
+
})]
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
return /*#__PURE__*/_jsx(XProvider, {
|
|
106
|
+
children: /*#__PURE__*/_jsx(XAiContext.Provider, {
|
|
107
|
+
value: {
|
|
108
|
+
emptyStateImage: icon,
|
|
109
|
+
emptyStateText: appName,
|
|
110
|
+
providerId: providerId,
|
|
111
|
+
token: token,
|
|
112
|
+
messages: messages,
|
|
113
|
+
loading: loading,
|
|
114
|
+
error: null,
|
|
115
|
+
messageTooltip: ToolTip,
|
|
116
|
+
onSend: handleSendMessage,
|
|
117
|
+
onClear: handleClearMessage,
|
|
118
|
+
onStop: stopChat,
|
|
119
|
+
onSuggestMessageClick: handleSuggestMessageClick,
|
|
120
|
+
onMessagesActionsCallback: handleActions,
|
|
121
|
+
isInProvider: true
|
|
122
|
+
},
|
|
123
|
+
children: children
|
|
124
|
+
})
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
export default XAiProvider;
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","message","Divider","copy","XProvider","XAiContext","useAgentGenerator","jsxs","_jsxs","jsx","_jsx","XAiProvider","_ref","url","token","config","_ref$providerId","providerId","children","_useAgentGenerator","appInfo","chat","stopChat","reChat","messages","loading","setMessages","_ref2","appName","icon","handleSendMessage","_type","content","handleClearMessage","handleActions","index","actionData","_ref3","id","_content$text","text","success","prev","filter","item","handleSuggestMessageClick","_item","m","ToolTip","messageData","finalResult","think","find","actionName","_ref4","extra","cost","tokenCount","style","display","alignItems","fontSize","color","flex","paddingRight","undefined","type","Provider","value","emptyStateImage","emptyStateText","error","messageTooltip","onSend","onClear","onStop","onSuggestMessageClick","onMessagesActionsCallback","isInProvider"],"sources":["../../../../src/components/XAiProvider/index.tsx"],"sourcesContent":["import React from 'react';\nimport { message, Divider } from 'antd';\nimport copy from 'copy-to-clipboard';\nimport { XProvider } from '@ant-design/x';\nimport { XAiContext } from '@/context/AiProviderContext';\nimport { XAiProviderProps } from '@/types/XAiProvider';\nimport useAgentGenerator from '@/hooks/useAgentGenerator';\n\nconst XAiProvider: React.FC<XAiProviderProps> = ({\n url,\n token,\n config,\n providerId = 'defaultId',\n children,\n}: XAiProviderProps) => {\n // 使用 useAgentGenerator Hook 管理消息状态\n const { appInfo, chat, stopChat, reChat, messages, loading, setMessages } = useAgentGenerator({ url, token, config });\n\n const { appName, icon } = appInfo || {};\n\n // 发送消息\n const handleSendMessage = (_type: string, content: string) => {\n chat(content);\n };\n\n // 清空消息\n const handleClearMessage = () => {\n stopChat();\n setMessages([]);\n };\n\n // 工具栏按钮点击\n const handleActions = (index: number, actionData: any) => {\n const { content, id } = actionData || {};\n const { text = '' } = content;\n switch (index) {\n case 0:\n reChat();\n break;\n case 1:\n copy(text);\n message.success('复制成功');\n break;\n case 2:\n setMessages((prev: any[]) => prev.filter((item: any) => item.id !== id));\n message.success('删除成功');\n break;\n }\n };\n\n // 建议消息点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev: any[]) => prev.filter((m: any) => m.id !== id));\n };\n\n const ToolTip = (messageData: any) => {\n const finalResult = (messageData?.think || []).find((item: any) => item.actionName === 'FINISHED');\n if (!finalResult) return null;\n const { cost, token: tokenCount } = finalResult.extra || {};\n if (!cost && !token) return null;\n return (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '12px', color: '#949494', flex: 1, paddingRight: '40px' }}>\n { (cost !== undefined && cost !== null) && <div>{cost}s</div> }\n { tokenCount && <Divider type=\"vertical\" /> }\n { tokenCount && <div>{ tokenCount } tokens</div> }\n </div>\n );\n };\n\n return (\n <XProvider>\n <XAiContext.Provider value={{\n emptyStateImage: icon,\n emptyStateText: appName,\n providerId,\n token,\n messages,\n loading,\n error: null,\n messageTooltip: ToolTip,\n onSend: handleSendMessage,\n onClear: handleClearMessage,\n onStop: stopChat,\n onSuggestMessageClick: handleSuggestMessageClick,\n onMessagesActionsCallback: handleActions,\n isInProvider: true,\n }}\n >\n {children}\n </XAiContext.Provider>\n </XProvider>\n );\n};\n\nexport default XAiProvider;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["width", "height", "className", "style"];
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import XAiProvider from "./XAiProvider";
|
|
6
|
+
import XAiChatbot from "./XAiChatbot";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
var XAiSDK = function XAiSDK(_ref) {
|
|
9
|
+
var _ref$width = _ref.width,
|
|
10
|
+
width = _ref$width === void 0 ? '400px' : _ref$width,
|
|
11
|
+
_ref$height = _ref.height,
|
|
12
|
+
height = _ref$height === void 0 ? '600px' : _ref$height,
|
|
13
|
+
className = _ref.className,
|
|
14
|
+
style = _ref.style,
|
|
15
|
+
providerProps = _objectWithoutProperties(_ref, _excluded);
|
|
16
|
+
var containerStyle = _objectSpread({
|
|
17
|
+
width: typeof width === 'number' ? "".concat(width, "px") : width,
|
|
18
|
+
height: typeof height === 'number' ? "".concat(height, "px") : height
|
|
19
|
+
}, style);
|
|
20
|
+
return /*#__PURE__*/_jsx("div", {
|
|
21
|
+
className: className,
|
|
22
|
+
style: containerStyle,
|
|
23
|
+
children: /*#__PURE__*/_jsx(XAiProvider, _objectSpread(_objectSpread({}, providerProps), {}, {
|
|
24
|
+
children: /*#__PURE__*/_jsx(XAiChatbot, {})
|
|
25
|
+
}))
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
export default XAiSDK;
|
|
29
|
+
//# sourceMappingURL=XAiSDK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","XAiProvider","XAiChatbot","jsx","_jsx","XAiSDK","_ref","_ref$width","width","_ref$height","height","className","style","providerProps","_objectWithoutProperties","_excluded","containerStyle","_objectSpread","concat","children"],"sources":["../../../src/components/XAiSDK.tsx"],"sourcesContent":["import React from 'react';\nimport { XAiProviderProps } from '@/types/XAiProvider';\nimport XAiProvider from '@/components/XAiProvider';\nimport XAiChatbot from '@/components/XAiChatbot';\n\nexport interface XAiSDKProps extends XAiProviderProps {\n width?: string | number;\n height?: string | number;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst XAiSDK: React.FC<XAiSDKProps> = ({\n width = '400px',\n height = '600px',\n className,\n style,\n ...providerProps\n}) => {\n const containerStyle: React.CSSProperties = {\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n ...style,\n };\n\n return (\n <div className={className} style={containerStyle}>\n <XAiProvider {...providerProps}>\n <XAiChatbot />\n </XAiProvider>\n </div>\n );\n};\n\nexport default XAiSDK;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AAAgC,SAAAC,GAAA,IAAAC,IAAA;AASjD,IAAMC,MAA6B,GAAG,SAAhCA,MAA6BA,CAAAC,IAAA,EAM7B;EAAA,IAAAC,UAAA,GAAAD,IAAA,CALJE,KAAK;IAALA,KAAK,GAAAD,UAAA,cAAG,OAAO,GAAAA,UAAA;IAAAE,WAAA,GAAAH,IAAA,CACfI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,OAAO,GAAAA,WAAA;IAChBE,SAAS,GAAAL,IAAA,CAATK,SAAS;IACTC,KAAK,GAAAN,IAAA,CAALM,KAAK;IACFC,aAAa,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA;EAEhB,IAAMC,cAAmC,GAAAC,aAAA;IACvCT,KAAK,EAAE,OAAOA,KAAK,KAAK,QAAQ,MAAAU,MAAA,CAAMV,KAAK,UAAOA,KAAK;IACvDE,MAAM,EAAE,OAAOA,MAAM,KAAK,QAAQ,MAAAQ,MAAA,CAAMR,MAAM,UAAOA;EAAM,GACxDE,KAAK,CACT;EAED,oBACER,IAAA;IAAKO,SAAS,EAAEA,SAAU;IAACC,KAAK,EAAEI,cAAe;IAAAG,QAAA,eAC/Cf,IAAA,CAACH,WAAW,EAAAgB,aAAA,CAAAA,aAAA,KAAKJ,aAAa;MAAAM,QAAA,eAC5Bf,IAAA,CAACF,UAAU,IAAE;IAAC,EACH;EAAC,CACX,CAAC;AAEV,CAAC;AAED,eAAeG,MAAM"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
2
|
+
var _excluded = ["onInit", "onDestroy"];
|
|
3
|
+
import React, { useEffect, useRef } from 'react';
|
|
4
|
+
import XAiWebSDK from "../utils/umdEntry";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
var XAiWebSDKWrapper = function XAiWebSDKWrapper(_ref) {
|
|
7
|
+
var onInit = _ref.onInit,
|
|
8
|
+
onDestroy = _ref.onDestroy,
|
|
9
|
+
sdkProps = _objectWithoutProperties(_ref, _excluded);
|
|
10
|
+
var sdkRef = useRef(null);
|
|
11
|
+
var containerRef = useRef(null);
|
|
12
|
+
useEffect(function () {
|
|
13
|
+
if (containerRef.current && !sdkRef.current) {
|
|
14
|
+
// 创建 SDK 实例
|
|
15
|
+
sdkRef.current = XAiWebSDK.initChatbot(containerRef.current, sdkProps);
|
|
16
|
+
|
|
17
|
+
// 调用初始化回调
|
|
18
|
+
if (onInit && sdkRef.current) {
|
|
19
|
+
onInit(sdkRef.current);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// 清理函数
|
|
24
|
+
return function () {
|
|
25
|
+
if (sdkRef.current) {
|
|
26
|
+
sdkRef.current.unmount();
|
|
27
|
+
sdkRef.current = null;
|
|
28
|
+
|
|
29
|
+
// 调用销毁回调
|
|
30
|
+
if (onDestroy) {
|
|
31
|
+
onDestroy();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}, []); // 只在组件挂载时初始化
|
|
36
|
+
|
|
37
|
+
return /*#__PURE__*/_jsx("div", {
|
|
38
|
+
ref: containerRef
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
export default XAiWebSDKWrapper;
|
|
42
|
+
//# sourceMappingURL=XAiWebSDKWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","XAiWebSDK","jsx","_jsx","XAiWebSDKWrapper","_ref","onInit","onDestroy","sdkProps","_objectWithoutProperties","_excluded","sdkRef","containerRef","current","initChatbot","unmount","ref"],"sources":["../../../src/components/XAiWebSDKWrapper.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { XAiSDKProps } from '@/types/XAiProvider';\nimport XAiWebSDK from '@/utils/umdEntry';\n\nexport interface XAiWebSDKWrapperProps extends XAiSDKProps {\n onInit?: (sdk: XAiWebSDK) => void;\n onDestroy?: () => void;\n}\n\nconst XAiWebSDKWrapper: React.FC<XAiWebSDKWrapperProps> = ({\n onInit,\n onDestroy,\n ...sdkProps\n}) => {\n const sdkRef = useRef<XAiWebSDK | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (containerRef.current && !sdkRef.current) {\n // 创建 SDK 实例\n sdkRef.current = XAiWebSDK.initChatbot(containerRef.current, sdkProps);\n\n // 调用初始化回调\n if (onInit && sdkRef.current) {\n onInit(sdkRef.current);\n }\n }\n\n // 清理函数\n return () => {\n if (sdkRef.current) {\n sdkRef.current.unmount();\n sdkRef.current = null;\n\n // 调用销毁回调\n if (onDestroy) {\n onDestroy();\n }\n }\n };\n }, []); // 只在组件挂载时初始化\n\n return <div ref={containerRef} />;\n};\n\nexport default XAiWebSDKWrapper;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEhD,OAAOC,SAAS;AAAyB,SAAAC,GAAA,IAAAC,IAAA;AAOzC,IAAMC,gBAAiD,GAAG,SAApDA,gBAAiDA,CAAAC,IAAA,EAIjD;EAAA,IAHJC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,SAAS,GAAAF,IAAA,CAATE,SAAS;IACNC,QAAQ,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;EAEX,IAAMC,MAAM,GAAGX,MAAM,CAAmB,IAAI,CAAC;EAC7C,IAAMY,YAAY,GAAGZ,MAAM,CAAiB,IAAI,CAAC;EAEjDD,SAAS,CAAC,YAAM;IACd,IAAIa,YAAY,CAACC,OAAO,IAAI,CAACF,MAAM,CAACE,OAAO,EAAE;MAC3C;MACAF,MAAM,CAACE,OAAO,GAAGZ,SAAS,CAACa,WAAW,CAACF,YAAY,CAACC,OAAO,EAAEL,QAAQ,CAAC;;MAEtE;MACA,IAAIF,MAAM,IAAIK,MAAM,CAACE,OAAO,EAAE;QAC5BP,MAAM,CAACK,MAAM,CAACE,OAAO,CAAC;MACxB;IACF;;IAEA;IACA,OAAO,YAAM;MACX,IAAIF,MAAM,CAACE,OAAO,EAAE;QAClBF,MAAM,CAACE,OAAO,CAACE,OAAO,CAAC,CAAC;QACxBJ,MAAM,CAACE,OAAO,GAAG,IAAI;;QAErB;QACA,IAAIN,SAAS,EAAE;UACbA,SAAS,CAAC,CAAC;QACb;MACF;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;EAER,oBAAOJ,IAAA;IAAKa,GAAG,EAAEJ;EAAa,CAAE,CAAC;AACnC,CAAC;AAED,eAAeR,gBAAgB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
// 定义 context 的类型
|
|
4
|
+
|
|
5
|
+
// 默认 context 值
|
|
6
|
+
var defaultContextValue = {
|
|
7
|
+
providerId: undefined,
|
|
8
|
+
token: '',
|
|
9
|
+
messages: [],
|
|
10
|
+
loading: false,
|
|
11
|
+
error: null,
|
|
12
|
+
emptyStateImage: '',
|
|
13
|
+
emptyStateText: '',
|
|
14
|
+
isInProvider: false
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// 安全地创建 context,避免 React 为 null 的情况
|
|
18
|
+
var XAiContext = function () {
|
|
19
|
+
try {
|
|
20
|
+
return /*#__PURE__*/createContext(defaultContextValue);
|
|
21
|
+
} catch (_unused) {
|
|
22
|
+
// 如果 React 不可用,创建一个 fallback
|
|
23
|
+
// eslint-disable-next-line
|
|
24
|
+
var fallback = {};
|
|
25
|
+
return fallback;
|
|
26
|
+
}
|
|
27
|
+
}();
|
|
28
|
+
export { XAiContext };
|
|
29
|
+
|
|
30
|
+
// 改进的 useXAi hook
|
|
31
|
+
export var useXAi = function useXAi() {
|
|
32
|
+
try {
|
|
33
|
+
var context = useContext(XAiContext);
|
|
34
|
+
|
|
35
|
+
// 如果没有在 Provider 中,返回 undefined
|
|
36
|
+
if (!(context !== null && context !== void 0 && context.isInProvider)) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
return context;
|
|
40
|
+
} catch (_unused2) {
|
|
41
|
+
// 如果 useContext 失败,返回 undefined
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// 获取所有可用的 Provider ID
|
|
47
|
+
export var useXAiProviders = function useXAiProviders() {
|
|
48
|
+
try {
|
|
49
|
+
var context = useContext(XAiContext);
|
|
50
|
+
|
|
51
|
+
// 如果没有在 Provider 中,返回空数组
|
|
52
|
+
if (!(context !== null && context !== void 0 && context.isInProvider)) {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// 返回当前 Provider 的 ID(如果有的话)
|
|
57
|
+
return context.providerId ? [context.providerId] : [];
|
|
58
|
+
} catch (_unused3) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=AiProviderContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","useContext","defaultContextValue","providerId","undefined","token","messages","loading","error","emptyStateImage","emptyStateText","isInProvider","XAiContext","_unused","fallback","useXAi","context","_unused2","useXAiProviders","_unused3"],"sources":["../../../src/context/AiProviderContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { XAiChatbotProps } from '@/types/XAiChatbot';\n\n// 定义 context 的类型\nexport interface XAiContextType extends XAiChatbotProps {\n providerId?: string;\n token: string;\n error: string | null;\n // 标识是否在真实的 Provider 中\n isInProvider?: boolean;\n}\n\n// 默认 context 值\nconst defaultContextValue: XAiContextType = {\n providerId: undefined,\n token: '',\n messages: [],\n loading: false,\n error: null,\n emptyStateImage: '',\n emptyStateText: '',\n\n isInProvider: false,\n};\n\n// 安全地创建 context,避免 React 为 null 的情况\nconst XAiContext: React.Context<XAiContextType> = (() => {\n try {\n return createContext<XAiContextType>(defaultContextValue);\n } catch {\n // 如果 React 不可用,创建一个 fallback\n // eslint-disable-next-line\n const fallback: React.Context<XAiContextType> = {} as React.Context<XAiContextType>;\n return fallback;\n }\n})();\n\nexport { XAiContext };\n\n// 改进的 useXAi hook\nexport const useXAi = () => {\n try {\n const context = useContext(XAiContext);\n\n // 如果没有在 Provider 中,返回 undefined\n if (!context?.isInProvider) {\n return undefined;\n }\n\n return context;\n } catch {\n // 如果 useContext 失败,返回 undefined\n return undefined;\n }\n};\n\n// 获取所有可用的 Provider ID\nexport const useXAiProviders = () => {\n try {\n const context = useContext(XAiContext);\n\n // 如果没有在 Provider 中,返回空数组\n if (!context?.isInProvider) {\n return [];\n }\n\n // 返回当前 Provider 的 ID(如果有的话)\n return context.providerId ? [context.providerId] : [];\n } catch {\n return [];\n }\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAGjD;;AASA;AACA,IAAMC,mBAAmC,GAAG;EAC1CC,UAAU,EAAEC,SAAS;EACrBC,KAAK,EAAE,EAAE;EACTC,QAAQ,EAAE,EAAE;EACZC,OAAO,EAAE,KAAK;EACdC,KAAK,EAAE,IAAI;EACXC,eAAe,EAAE,EAAE;EACnBC,cAAc,EAAE,EAAE;EAElBC,YAAY,EAAE;AAChB,CAAC;;AAED;AACA,IAAMC,UAAyC,GAAI,YAAM;EACvD,IAAI;IACF,oBAAOZ,aAAa,CAAiBE,mBAAmB,CAAC;EAC3D,CAAC,CAAC,OAAAW,OAAA,EAAM;IACN;IACA;IACA,IAAMC,QAAuC,GAAG,CAAC,CAAkC;IACnF,OAAOA,QAAQ;EACjB;AACF,CAAC,CAAE,CAAC;AAEJ,SAASF,UAAU;;AAEnB;AACA,OAAO,IAAMG,MAAM,GAAG,SAATA,MAAMA,CAAA,EAAS;EAC1B,IAAI;IACF,IAAMC,OAAO,GAAGf,UAAU,CAACW,UAAU,CAAC;;IAEtC;IACA,IAAI,EAACI,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEL,YAAY,GAAE;MAC1B,OAAOP,SAAS;IAClB;IAEA,OAAOY,OAAO;EAChB,CAAC,CAAC,OAAAC,QAAA,EAAM;IACN;IACA,OAAOb,SAAS;EAClB;AACF,CAAC;;AAED;AACA,OAAO,IAAMc,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAS;EACnC,IAAI;IACF,IAAMF,OAAO,GAAGf,UAAU,CAACW,UAAU,CAAC;;IAEtC;IACA,IAAI,EAACI,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEL,YAAY,GAAE;MAC1B,OAAO,EAAE;IACX;;IAEA;IACA,OAAOK,OAAO,CAACb,UAAU,GAAG,CAACa,OAAO,CAACb,UAAU,CAAC,GAAG,EAAE;EACvD,CAAC,CAAC,OAAAgB,QAAA,EAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// src/context/ThemeContext.tsx
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
export var ThemeContext = /*#__PURE__*/createContext({});
|
|
4
|
+
export var useTheme = function useTheme() {
|
|
5
|
+
return useContext(ThemeContext);
|
|
6
|
+
};
|
|
7
|
+
export var ThemeProvider = ThemeContext.Provider;
|
|
8
|
+
//# sourceMappingURL=ThemeContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","useContext","ThemeContext","useTheme","ThemeProvider","Provider"],"sources":["../../../src/context/ThemeContext.tsx"],"sourcesContent":["// src/context/ThemeContext.tsx\nimport React, { createContext, useContext } from 'react';\n\nexport interface XThemeConfig {\n mode?: 'light' | 'dark';\n primaryColor?: string;\n bubble?: {\n className?: string;\n style?: React.CSSProperties;\n classNames?: Record<string, string>;\n styles?: Record<string, React.CSSProperties>;\n };\n sender?: {\n className?: string;\n style?: React.CSSProperties;\n classNames?: Record<string, string>;\n styles?: Record<string, React.CSSProperties>;\n };\n // ...其它组件配置\n}\n\nexport const ThemeContext = createContext<XThemeConfig>({});\n\nexport const useTheme = () => useContext(ThemeContext);\n\nexport const ThemeProvider = ThemeContext.Provider;\n"],"mappings":"AAAA;AACA,SAAgBA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAoBxD,OAAO,IAAMC,YAAY,gBAAGF,aAAa,CAAe,CAAC,CAAC,CAAC;AAE3D,OAAO,IAAMG,QAAQ,GAAG,SAAXA,QAAQA,CAAA;EAAA,OAASF,UAAU,CAACC,YAAY,CAAC;AAAA;AAEtD,OAAO,IAAME,aAAa,GAAGF,YAAY,CAACG,QAAQ"}
|