@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.
Files changed (80) hide show
  1. package/README.md +239 -0
  2. package/dist/esm/assets/arrow-down.png +0 -0
  3. package/dist/esm/assets/arrow-up.png +0 -0
  4. package/dist/esm/assets/chatKnowledge.png +0 -0
  5. package/dist/esm/assets/completed-black.png +0 -0
  6. package/dist/esm/assets/completed.png +0 -0
  7. package/dist/esm/assets/document-black.png +0 -0
  8. package/dist/esm/assets/document.png +0 -0
  9. package/dist/esm/assets/document.svg +16 -0
  10. package/dist/esm/assets/empty.png +0 -0
  11. package/dist/esm/assets/group.png +0 -0
  12. package/dist/esm/assets/qa-black.png +0 -0
  13. package/dist/esm/assets/qa.png +0 -0
  14. package/dist/esm/assets/skillNo-black.png +0 -0
  15. package/dist/esm/assets/skillNo.png +0 -0
  16. package/dist/esm/assets/tools-black.png +0 -0
  17. package/dist/esm/assets/tools.png +0 -0
  18. package/dist/esm/client/base.js +2 -0
  19. package/dist/esm/client/base.js.map +1 -0
  20. package/dist/esm/client/restClient.js +2 -0
  21. package/dist/esm/client/restClient.js.map +1 -0
  22. package/dist/esm/client/wsClient.js +2 -0
  23. package/dist/esm/client/wsClient.js.map +1 -0
  24. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js +562 -0
  25. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js.map +1 -0
  26. package/dist/esm/components/XAiChatbot/index.js +586 -0
  27. package/dist/esm/components/XAiChatbot/index.js.map +1 -0
  28. package/dist/esm/components/XAiChatbot/styles.js +62 -0
  29. package/dist/esm/components/XAiChatbot/styles.js.map +1 -0
  30. package/dist/esm/components/XAiProvider/XAiProvider.stories.js +297 -0
  31. package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -0
  32. package/dist/esm/components/XAiProvider/index.js +128 -0
  33. package/dist/esm/components/XAiProvider/index.js.map +1 -0
  34. package/dist/esm/components/XAiSDK.js +29 -0
  35. package/dist/esm/components/XAiSDK.js.map +1 -0
  36. package/dist/esm/components/XAiWebSDKWrapper.js +42 -0
  37. package/dist/esm/components/XAiWebSDKWrapper.js.map +1 -0
  38. package/dist/esm/context/AiProviderContext.js +62 -0
  39. package/dist/esm/context/AiProviderContext.js.map +1 -0
  40. package/dist/esm/context/ThemeContext.js +8 -0
  41. package/dist/esm/context/ThemeContext.js.map +1 -0
  42. package/dist/esm/hooks/useAgentGenerator.js +536 -0
  43. package/dist/esm/hooks/useAgentGenerator.js.map +1 -0
  44. package/dist/esm/hooks/useEventStreamRequest.js +229 -0
  45. package/dist/esm/hooks/useEventStreamRequest.js.map +1 -0
  46. package/dist/esm/hooks/useProviderContext.js +115 -0
  47. package/dist/esm/hooks/useProviderContext.js.map +1 -0
  48. package/dist/esm/hooks/useXAiSDK.js +49 -0
  49. package/dist/esm/hooks/useXAiSDK.js.map +1 -0
  50. package/dist/esm/index.js +11 -0
  51. package/dist/esm/index.js.map +1 -0
  52. package/dist/esm/services/api.js +73 -0
  53. package/dist/esm/services/api.js.map +1 -0
  54. package/dist/esm/styles/common.js +106 -0
  55. package/dist/esm/styles/common.js.map +1 -0
  56. package/dist/esm/styles/markdown.js +12 -0
  57. package/dist/esm/styles/markdown.js.map +1 -0
  58. package/dist/esm/types/XAiChatbot.js +2 -0
  59. package/dist/esm/types/XAiChatbot.js.map +1 -0
  60. package/dist/esm/types/XAiMessage.js +65 -0
  61. package/dist/esm/types/XAiMessage.js.map +1 -0
  62. package/dist/esm/types/XAiProvider.js +4 -0
  63. package/dist/esm/types/XAiProvider.js.map +1 -0
  64. package/dist/esm/types/index.js +4 -0
  65. package/dist/esm/types/index.js.map +1 -0
  66. package/dist/esm/types/mdx.d.ts +18 -0
  67. package/dist/esm/utils/chat.js +976 -0
  68. package/dist/esm/utils/chat.js.map +1 -0
  69. package/dist/esm/utils/index.js +19 -0
  70. package/dist/esm/utils/index.js.map +1 -0
  71. package/dist/esm/utils/providerManager.js +70 -0
  72. package/dist/esm/utils/providerManager.js.map +1 -0
  73. package/dist/esm/utils/request.example.js +379 -0
  74. package/dist/esm/utils/request.example.js.map +1 -0
  75. package/dist/esm/utils/request.js +491 -0
  76. package/dist/esm/utils/request.js.map +1 -0
  77. package/dist/esm/utils/umdEntry.js +109 -0
  78. package/dist/esm/utils/umdEntry.js.map +1 -0
  79. package/dist/umd/chat-sdk.min.js +1 -0
  80. 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"}