@ai-group/chat-sdk 0.5.0 → 0.5.2

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 (78) hide show
  1. package/dist/cjs/assets/add-chat.svg +13 -0
  2. package/dist/cjs/assets/flash-open.svg +14 -0
  3. package/dist/cjs/assets/logo.png +0 -0
  4. package/dist/cjs/assets/svg/AddChatIcon.d.ts +3 -0
  5. package/dist/cjs/assets/svg/AddChatIcon.js +38 -0
  6. package/dist/cjs/assets/svg/AddChatIcon.js.map +7 -0
  7. package/dist/cjs/components/XAiChatbot/index.js +2 -1
  8. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  9. package/dist/cjs/components/XAiChatbot/styles.js +1 -1
  10. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  11. package/dist/cjs/components/XAiConversations/index.js +61 -27
  12. package/dist/cjs/components/XAiConversations/index.js.map +3 -3
  13. package/dist/cjs/components/XAiConversations/styles.d.ts +45 -0
  14. package/dist/cjs/components/XAiConversations/styles.js +177 -0
  15. package/dist/cjs/components/XAiConversations/styles.js.map +7 -0
  16. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +9 -6
  17. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
  18. package/dist/cjs/components/XAiProvider/index.js +96 -12
  19. package/dist/cjs/components/XAiProvider/index.js.map +3 -3
  20. package/dist/cjs/constants/index.d.ts +1 -0
  21. package/dist/cjs/constants/index.js +30 -0
  22. package/dist/cjs/constants/index.js.map +7 -0
  23. package/dist/cjs/hooks/useAgentGenerator.d.ts +5 -2
  24. package/dist/cjs/hooks/useAgentGenerator.js +53 -50
  25. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  26. package/dist/cjs/services/api.d.ts +23 -0
  27. package/dist/cjs/services/api.js +35 -2
  28. package/dist/cjs/services/api.js.map +2 -2
  29. package/dist/cjs/types/XAiChatbot.d.ts +2 -0
  30. package/dist/cjs/types/XAiChatbot.js.map +1 -1
  31. package/dist/cjs/types/XAiConversations.d.ts +2 -0
  32. package/dist/cjs/types/XAiConversations.js.map +1 -1
  33. package/dist/cjs/types/XAiMessage.js.map +2 -2
  34. package/dist/cjs/types/XAiProvider.d.ts +20 -2
  35. package/dist/cjs/types/XAiProvider.js.map +2 -2
  36. package/dist/cjs/utils/umdEntry.d.ts +2 -1
  37. package/dist/cjs/utils/umdEntry.js +3 -2
  38. package/dist/cjs/utils/umdEntry.js.map +2 -2
  39. package/dist/esm/assets/add-chat.svg +13 -0
  40. package/dist/esm/assets/flash-open.svg +14 -0
  41. package/dist/esm/assets/logo.png +0 -0
  42. package/dist/esm/assets/svg/AddChatIcon.d.ts +3 -0
  43. package/dist/esm/assets/svg/AddChatIcon.js +40 -0
  44. package/dist/esm/assets/svg/AddChatIcon.js.map +1 -0
  45. package/dist/esm/components/XAiChatbot/index.js +3 -1
  46. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  47. package/dist/esm/components/XAiChatbot/styles.js +1 -1
  48. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  49. package/dist/esm/components/XAiConversations/index.js +129 -47
  50. package/dist/esm/components/XAiConversations/index.js.map +1 -1
  51. package/dist/esm/components/XAiConversations/styles.d.ts +45 -0
  52. package/dist/esm/components/XAiConversations/styles.js +36 -0
  53. package/dist/esm/components/XAiConversations/styles.js.map +1 -0
  54. package/dist/esm/components/XAiProvider/XAiProvider.stories.js +26 -27
  55. package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  56. package/dist/esm/components/XAiProvider/index.js +119 -14
  57. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  58. package/dist/esm/constants/index.d.ts +1 -0
  59. package/dist/esm/constants/index.js +3 -0
  60. package/dist/esm/constants/index.js.map +1 -0
  61. package/dist/esm/hooks/useAgentGenerator.d.ts +5 -2
  62. package/dist/esm/hooks/useAgentGenerator.js +124 -97
  63. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  64. package/dist/esm/services/api.d.ts +23 -0
  65. package/dist/esm/services/api.js +73 -0
  66. package/dist/esm/services/api.js.map +1 -1
  67. package/dist/esm/types/XAiChatbot.d.ts +2 -0
  68. package/dist/esm/types/XAiChatbot.js.map +1 -1
  69. package/dist/esm/types/XAiConversations.d.ts +2 -0
  70. package/dist/esm/types/XAiConversations.js.map +1 -1
  71. package/dist/esm/types/XAiMessage.js.map +1 -1
  72. package/dist/esm/types/XAiProvider.d.ts +20 -2
  73. package/dist/esm/types/XAiProvider.js.map +1 -1
  74. package/dist/esm/utils/umdEntry.d.ts +2 -1
  75. package/dist/esm/utils/umdEntry.js +9 -8
  76. package/dist/esm/utils/umdEntry.js.map +1 -1
  77. package/dist/umd/chat-sdk.min.js +1 -1
  78. package/package.json +1 -1
@@ -1,68 +1,150 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
- import React, { useState, useEffect } from 'react';
3
+ import React, { useState } from 'react';
4
4
  import { Conversations } from '@ant-design/x';
5
5
  import { RedoOutlined } from '@ant-design/icons';
6
- import { Spin } from 'antd';
6
+ import { Spin, Divider } from 'antd';
7
7
  import { useChatbotContext } from "../../hooks/useProviderContext";
8
+ import logo from "../../assets/logo.png";
9
+ import AddChatIcon from "../../assets/svg/AddChatIcon";
10
+ import flashOpen from "../../assets/flash-open.svg";
8
11
  import InfiniteScroll from 'react-infinite-scroll-component';
12
+ import { SESSION_PAGE_SIZE } from "../../constants";
13
+ import clsx from 'clsx';
14
+ import { useStyles, GlobalStyle } from "./styles";
9
15
  import { jsx as _jsx } from "react/jsx-runtime";
16
+ import { jsxs as _jsxs } from "react/jsx-runtime";
10
17
  var XAiConversations = function XAiConversations(props) {
11
- // 处理 Provider 上下文
18
+ var styles = useStyles();
12
19
  var _useChatbotContext = useChatbotContext(props),
13
20
  mergedProps = _useChatbotContext.mergedProps;
14
- var _mergedProps$sessionT = mergedProps.sessionTotal,
15
- sessionTotal = _mergedProps$sessionT === void 0 ? 0 : _mergedProps$sessionT,
16
- sessionList = mergedProps.sessionList,
21
+ var sessionList = mergedProps.sessionList,
17
22
  style = mergedProps.style,
18
23
  onActiveChange = mergedProps.onActiveChange,
19
- loadMoreSessions = mergedProps.loadMoreSessions;
20
- var _useState = useState(''),
24
+ onNewChat = mergedProps.onNewChat,
25
+ loadMoreSessions = mergedProps.loadMoreSessions,
26
+ activeKey = mergedProps.activeKey,
27
+ menu = mergedProps.menu;
28
+ var _useState = useState(false),
21
29
  _useState2 = _slicedToArray(_useState, 2),
22
- activeKey = _useState2[0],
23
- setActiveKey = _useState2[1];
30
+ listVisible = _useState2[0],
31
+ setListVisible = _useState2[1];
32
+ var _useState3 = useState(null),
33
+ _useState4 = _slicedToArray(_useState3, 2),
34
+ animateDirection = _useState4[0],
35
+ setAnimateDirection = _useState4[1];
24
36
  var handleSwitchTab = function handleSwitchTab(key) {
25
- setActiveKey(key);
26
37
  onActiveChange === null || onActiveChange === void 0 || onActiveChange(key);
27
38
  };
28
- useEffect(function () {
29
- loadMoreSessions === null || loadMoreSessions === void 0 || loadMoreSessions();
30
- }, []);
31
- return /*#__PURE__*/_jsx("div", {
32
- children: /*#__PURE__*/_jsx(InfiniteScroll, {
33
- dataLength: sessionList.length,
34
- next: loadMoreSessions,
35
- hasMore: sessionList.length < sessionTotal,
36
- loader: /*#__PURE__*/_jsx("div", {
37
- style: {
38
- textAlign: 'center'
39
- },
40
- children: /*#__PURE__*/_jsx(Spin, {
41
- indicator: /*#__PURE__*/_jsx(RedoOutlined, {
42
- spin: true
43
- }),
44
- size: "small"
45
- })
46
- })
47
- // endMessage={sessionTotal > 0 && <Divider plain>已经到底啦</Divider>}
48
- ,
49
- scrollableTarget: "scrollableDiv",
39
+ var handleNewChat = function handleNewChat() {
40
+ onNewChat === null || onNewChat === void 0 || onNewChat();
41
+ };
42
+ var handleShowList = function handleShowList() {
43
+ setListVisible(true);
44
+ setAnimateDirection('in');
45
+ };
46
+ var handleCloseList = function handleCloseList() {
47
+ setAnimateDirection('out');
48
+ setTimeout(function () {
49
+ setListVisible(false);
50
+ setAnimateDirection(null);
51
+ }, 300);
52
+ };
53
+ return /*#__PURE__*/_jsxs("div", {
54
+ children: [/*#__PURE__*/_jsx(GlobalStyle, {}), !listVisible && /*#__PURE__*/_jsxs("div", {
55
+ className: styles.capWrapper,
56
+ children: [/*#__PURE__*/_jsx("img", {
57
+ alt: "logo",
58
+ src: logo,
59
+ className: clsx(styles.w(32), styles.h(29))
60
+ }), /*#__PURE__*/_jsxs("div", {
61
+ className: styles.capShape,
62
+ children: [/*#__PURE__*/_jsx("div", {
63
+ className: styles.capIcon,
64
+ children: /*#__PURE__*/_jsx("img", {
65
+ src: flashOpen,
66
+ alt: "",
67
+ onClick: handleShowList
68
+ })
69
+ }), /*#__PURE__*/_jsx("div", {
70
+ className: styles.capIcon,
71
+ children: /*#__PURE__*/_jsx(AddChatIcon, {
72
+ className: clsx(styles.w(17), styles.text('#343434')),
73
+ onClick: handleNewChat
74
+ })
75
+ })]
76
+ })]
77
+ }), /*#__PURE__*/_jsxs("div", {
50
78
  style: {
51
- overflow: 'hidden'
79
+ display: listVisible ? 'block' : 'none'
52
80
  },
53
- children: /*#__PURE__*/_jsx(Conversations, {
54
- activeKey: activeKey,
55
- onActiveChange: function onActiveChange(v) {
56
- return handleSwitchTab(v);
57
- },
58
- items: sessionList,
59
- style: _objectSpread({
60
- width: 256,
61
- background: '#fff',
62
- borderRadius: '6px'
63
- }, style)
64
- })
65
- })
81
+ className: clsx(styles.fWrapper, animateDirection === 'in' && styles.slideIn, animateDirection === 'out' && styles.slideOut),
82
+ children: [/*#__PURE__*/_jsxs("div", {
83
+ className: styles.fheaderWrapper,
84
+ children: [/*#__PURE__*/_jsx("img", {
85
+ alt: "logo",
86
+ src: logo,
87
+ className: clsx(styles.w(32), styles.h(29))
88
+ }), /*#__PURE__*/_jsx("div", {
89
+ className: styles.capIcon,
90
+ children: /*#__PURE__*/_jsx("img", {
91
+ src: flashOpen,
92
+ alt: "",
93
+ onClick: handleCloseList
94
+ })
95
+ })]
96
+ }), /*#__PURE__*/_jsxs("div", {
97
+ className: styles.addChatBtn,
98
+ onClick: handleNewChat,
99
+ children: [/*#__PURE__*/_jsx(AddChatIcon, {
100
+ className: clsx(styles.w(17), styles.mr(10))
101
+ }), "\u5F00\u542F\u65B0\u5BF9\u8BDD"]
102
+ }), /*#__PURE__*/_jsx("div", {
103
+ className: styles.tipTitle,
104
+ children: "\u5386\u53F2\u5BF9\u8BDD"
105
+ }), /*#__PURE__*/_jsx("div", {
106
+ className: styles.scrollList,
107
+ children: /*#__PURE__*/_jsx(InfiniteScroll, {
108
+ dataLength: sessionList.length,
109
+ next: loadMoreSessions,
110
+ hasMore: false,
111
+ loader: /*#__PURE__*/_jsx("div", {
112
+ style: {
113
+ textAlign: 'center'
114
+ },
115
+ children: /*#__PURE__*/_jsx(Spin, {
116
+ indicator: /*#__PURE__*/_jsx(RedoOutlined, {
117
+ spin: true
118
+ }),
119
+ size: "small"
120
+ })
121
+ }),
122
+ endMessage: sessionList.length === SESSION_PAGE_SIZE && /*#__PURE__*/_jsx(Divider, {
123
+ plain: true,
124
+ children: /*#__PURE__*/_jsx("span", {
125
+ className: styles.textColor('#949494'),
126
+ children: "\u53EA\u5C55\u793A\u524D 50 \u6761\u6570\u636E"
127
+ })
128
+ }),
129
+ style: {
130
+ overflow: 'hidden',
131
+ paddingBottom: '5px'
132
+ },
133
+ children: /*#__PURE__*/_jsx(Conversations, {
134
+ activeKey: activeKey,
135
+ onActiveChange: function onActiveChange(v) {
136
+ return handleSwitchTab(v);
137
+ },
138
+ items: sessionList,
139
+ menu: menu,
140
+ style: _objectSpread({
141
+ width: 256,
142
+ borderRadius: '6px'
143
+ }, style)
144
+ })
145
+ })
146
+ })]
147
+ })]
66
148
  });
67
149
  };
68
150
  export default XAiConversations;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","Conversations","RedoOutlined","Spin","useChatbotContext","InfiniteScroll","jsx","_jsx","XAiConversations","props","_useChatbotContext","mergedProps","_mergedProps$sessionT","sessionTotal","sessionList","style","onActiveChange","loadMoreSessions","_useState","_useState2","_slicedToArray","activeKey","setActiveKey","handleSwitchTab","key","children","dataLength","length","next","hasMore","loader","textAlign","indicator","spin","size","scrollableTarget","overflow","v","items","_objectSpread","width","background","borderRadius"],"sources":["../../../../src/components/XAiConversations/index.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { RedoOutlined } from '@ant-design/icons';\nimport { Avatar, Divider, type GetProp, Spin, theme } from 'antd';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\nimport InfiniteScroll from 'react-infinite-scroll-component';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n // 处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n const {\n sessionTotal = 0,\n sessionList,\n style,\n onActiveChange,\n loadMoreSessions,\n } = mergedProps;\n const [activeKey, setActiveKey] = useState('');\n\n const handleSwitchTab = (key: string) => {\n setActiveKey(key);\n onActiveChange?.(key);\n };\n\n useEffect(() => {\n loadMoreSessions?.();\n }, []);\n\n return (\n <div>\n <InfiniteScroll\n dataLength={sessionList.length}\n next={loadMoreSessions}\n hasMore={sessionList.length < sessionTotal}\n loader={\n <div style={{ textAlign: 'center' }}>\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n }\n // endMessage={sessionTotal > 0 && <Divider plain>已经到底啦</Divider>}\n scrollableTarget=\"scrollableDiv\"\n style={{ overflow: 'hidden' }}\n >\n\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => handleSwitchTab(v)}\n items={sessionList}\n style={{\n width: 256,\n background: '#fff',\n borderRadius: '6px',\n ...style,\n }}\n />\n </InfiniteScroll>\n </div>\n );\n};\n\nexport default XAiConversations;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,SAASC,aAAa,QAAQ,eAAe;AAC7C,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAAwCC,IAAI,QAAe,MAAM;AACjE,SAASC,iBAAiB;AAE1B,OAAOC,cAAc,MAAM,iCAAiC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE7D,IAAMC,gBAAiD,GAAG,SAApDA,gBAAiDA,CAAIC,KAAK,EAAK;EACnE;EACA,IAAAC,kBAAA,GAAwBN,iBAAiB,CAACK,KAAK,CAAC;IAAxCE,WAAW,GAAAD,kBAAA,CAAXC,WAAW;EACnB,IAAAC,qBAAA,GAMID,WAAW,CALbE,YAAY;IAAZA,YAAY,GAAAD,qBAAA,cAAG,CAAC,GAAAA,qBAAA;IAChBE,WAAW,GAITH,WAAW,CAJbG,WAAW;IACXC,KAAK,GAGHJ,WAAW,CAHbI,KAAK;IACLC,cAAc,GAEZL,WAAW,CAFbK,cAAc;IACdC,gBAAgB,GACdN,WAAW,CADbM,gBAAgB;EAElB,IAAAC,SAAA,GAAkCnB,QAAQ,CAAC,EAAE,CAAC;IAAAoB,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAvCG,SAAS,GAAAF,UAAA;IAAEG,YAAY,GAAAH,UAAA;EAE9B,IAAMI,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,GAAW,EAAK;IACvCF,YAAY,CAACE,GAAG,CAAC;IACjBR,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAGQ,GAAG,CAAC;EACvB,CAAC;EAEDxB,SAAS,CAAC,YAAM;IACdiB,gBAAgB,aAAhBA,gBAAgB,eAAhBA,gBAAgB,CAAG,CAAC;EACtB,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEV,IAAA;IAAAkB,QAAA,eACElB,IAAA,CAACF,cAAc;MACbqB,UAAU,EAAEZ,WAAW,CAACa,MAAO;MAC/BC,IAAI,EAAEX,gBAAiB;MACvBY,OAAO,EAAEf,WAAW,CAACa,MAAM,GAAGd,YAAa;MAC3CiB,MAAM,eACJvB,IAAA;QAAKQ,KAAK,EAAE;UAAEgB,SAAS,EAAE;QAAS,CAAE;QAAAN,QAAA,eAClClB,IAAA,CAACJ,IAAI;UAAC6B,SAAS,eAAEzB,IAAA,CAACL,YAAY;YAAC+B,IAAI;UAAA,CAAE,CAAE;UAACC,IAAI,EAAC;QAAO,CAAE;MAAC,CACpD;MAEP;MAAA;MACAC,gBAAgB,EAAC,eAAe;MAChCpB,KAAK,EAAE;QAAEqB,QAAQ,EAAE;MAAS,CAAE;MAAAX,QAAA,eAG9BlB,IAAA,CAACN,aAAa;QACZoB,SAAS,EAAEA,SAAU;QACrBL,cAAc,EAAE,SAAAA,eAACqB,CAAC;UAAA,OAAKd,eAAe,CAACc,CAAC,CAAC;QAAA,CAAC;QAC1CC,KAAK,EAAExB,WAAY;QACnBC,KAAK,EAAAwB,aAAA;UACHC,KAAK,EAAE,GAAG;UACVC,UAAU,EAAE,MAAM;UAClBC,YAAY,EAAE;QAAK,GAChB3B,KAAK;MACR,CACH;IAAC,CACY;EAAC,CACd,CAAC;AAEV,CAAC;AAED,eAAeP,gBAAgB"}
1
+ {"version":3,"names":["React","useState","Conversations","RedoOutlined","Spin","Divider","useChatbotContext","logo","AddChatIcon","flashOpen","InfiniteScroll","SESSION_PAGE_SIZE","clsx","useStyles","GlobalStyle","jsx","_jsx","jsxs","_jsxs","XAiConversations","props","styles","_useChatbotContext","mergedProps","sessionList","style","onActiveChange","onNewChat","loadMoreSessions","activeKey","menu","_useState","_useState2","_slicedToArray","listVisible","setListVisible","_useState3","_useState4","animateDirection","setAnimateDirection","handleSwitchTab","key","handleNewChat","handleShowList","handleCloseList","setTimeout","children","className","capWrapper","alt","src","w","h","capShape","capIcon","onClick","text","display","fWrapper","slideIn","slideOut","fheaderWrapper","addChatBtn","mr","tipTitle","scrollList","dataLength","length","next","hasMore","loader","textAlign","indicator","spin","size","endMessage","plain","textColor","overflow","paddingBottom","v","items","_objectSpread","width","borderRadius"],"sources":["../../../../src/components/XAiConversations/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { RedoOutlined } from '@ant-design/icons';\nimport { Spin, Divider } from 'antd';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\nimport logo from '@/assets/logo.png';\nimport AddChatIcon from '@/assets/svg/AddChatIcon';\nimport flashOpen from '@/assets/flash-open.svg';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { SESSION_PAGE_SIZE } from '@/constants';\nimport clsx from 'clsx';\nimport { useStyles, GlobalStyle } from './styles';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n const styles = useStyles();\n const { mergedProps } = useChatbotContext(props);\n const {\n sessionList,\n style,\n onActiveChange,\n onNewChat,\n loadMoreSessions,\n activeKey,\n menu,\n } = mergedProps;\n\n const [listVisible, setListVisible] = useState(false);\n const [animateDirection, setAnimateDirection] = useState<'in' | 'out' | null>(null);\n\n const handleSwitchTab = (key: string) => {\n onActiveChange?.(key);\n };\n\n const handleNewChat = () => {\n onNewChat?.();\n };\n\n const handleShowList = () => {\n setListVisible(true);\n setAnimateDirection('in');\n };\n\n const handleCloseList = () => {\n setAnimateDirection('out');\n setTimeout(() => {\n setListVisible(false);\n setAnimateDirection(null);\n }, 300);\n };\n\n return (\n <div>\n <GlobalStyle />\n {\n !listVisible && (\n <div className={styles.capWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))}/>\n <div className={styles.capShape}>\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleShowList} />\n </div>\n <div className={styles.capIcon}>\n <AddChatIcon className={clsx(styles.w(17), styles.text('#343434'))} onClick={handleNewChat} />\n </div>\n </div>\n </div>\n )\n }\n\n <div\n style={{ display: listVisible ? 'block' : 'none' }}\n className={clsx(\n styles.fWrapper,\n animateDirection === 'in' && styles.slideIn,\n animateDirection === 'out' && styles.slideOut\n )}\n >\n {/* 固定头部 */}\n <div className={styles.fheaderWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))}/>\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleCloseList} />\n </div>\n </div>\n <div className={styles.addChatBtn} onClick={handleNewChat}>\n <AddChatIcon className={clsx(styles.w(17), styles.mr(10))} />\n 开启新对话\n </div>\n <div className={styles.tipTitle}>历史对话</div>\n\n {/* 滚动区域 */}\n <div className={styles.scrollList}>\n <InfiniteScroll\n dataLength={sessionList.length}\n next={loadMoreSessions}\n hasMore={false}\n loader={\n <div style={{ textAlign: 'center' }}>\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n }\n endMessage={sessionList.length === SESSION_PAGE_SIZE && <Divider plain><span className={styles.textColor('#949494')}>只展示前 50 条数据</span></Divider>}\n style={{ overflow: 'hidden', paddingBottom: '5px' }}\n >\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => handleSwitchTab(v)}\n items={sessionList}\n menu={menu}\n style={{\n width: 256,\n borderRadius: '6px',\n ...style,\n }}\n />\n </InfiniteScroll>\n </div>\n </div>\n </div>\n );\n};\n\nexport default XAiConversations;\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ export declare const useStyles: () => {
3
+ capWrapper: string;
4
+ capShape: string;
5
+ capIcon: string;
6
+ addChatBtn: string;
7
+ tipTitle: string;
8
+ fWrapper: string;
9
+ fheaderWrapper: string;
10
+ scrollList: string;
11
+ slideIn: string;
12
+ slideOut: string;
13
+ } & {
14
+ w: (width: string | number) => string;
15
+ h: (height: string | number) => string;
16
+ p: (padding: string) => string;
17
+ pb: (padding: string | number) => string;
18
+ pt: (padding: string | number) => string;
19
+ pl: (padding: string | number) => string;
20
+ pr: (padding: string | number) => string;
21
+ m: (margin: string) => string;
22
+ mb: (margin: string | number) => string;
23
+ mt: (margin: string | number) => string;
24
+ ml: (margin: string | number) => string;
25
+ mr: (margin: string | number) => string;
26
+ text: (size: string | number) => string;
27
+ weight: (size: number) => string;
28
+ textColor: (c: string) => string;
29
+ bg: (c: string) => string;
30
+ rs: (radius: string | number) => string;
31
+ gap: (g: string | number) => string;
32
+ flex: string;
33
+ flexCenter: string;
34
+ flexBetween: string;
35
+ flexColumn: string;
36
+ flex1: string;
37
+ cursor: (type: string) => string;
38
+ border: (color: string, width?: string) => string;
39
+ boxShadow: (shadow: string) => string;
40
+ transition: (property?: string, duration?: string) => string;
41
+ overflow: (type: string) => string;
42
+ position: (type: string) => string;
43
+ zIndex: (index: number) => string;
44
+ };
45
+ export declare const GlobalStyle: React.FC;
@@ -0,0 +1,36 @@
1
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
3
+ import React from 'react';
4
+ import { css, keyframes } from '@emotion/css';
5
+ import { css as globalCss, Global } from '@emotion/react';
6
+ import { withBasicStyles } from "../../styles/common";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ var primaryBlue = '#0078FF'; // 主蓝色
9
+ var lightBlue = '#E6F0FF'; // 浅蓝色气泡背景
10
+ var darkGray = '#333'; // 深灰色文本
11
+ var lightGray = '#888'; // 浅灰文本
12
+ var borderGray = '#ddd'; // 边框灰色
13
+
14
+ var slideInRight = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n from { transform: translateX(-100%); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n"])));
15
+ var slideOutRight = keyframes(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n from { transform: translateX(0); opacity: 1; }\n to { transform: translateX(-100%); opacity: 0; }\n"])));
16
+ export var useStyles = withBasicStyles(function () {
17
+ return {
18
+ // 静态样式
19
+ capWrapper: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n padding: 12px 16px;\n display: flex;\n align-items: center;\n "]))),
20
+ capShape: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 80px;\n height: 40px;\n margin-left: 16px;\n background: #FFFFFF;\n box-shadow: 0px 4px 16px 0px rgba(127,135,166,0.08);\n border-radius: 24px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n transition: box-shadow 0.2s, border-color 0.2s;\n cursor: pointer;\n /* &:hover {\n box-shadow: 0px 4px 24px 0px rgba(127,135,166,0.16);\n border-color: ", ";\n } */\n "])), primaryBlue),
21
+ capIcon: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n img {\n width: 17px;\n }\n\n &:hover {\n background: #F2F2F2;\n border-radius: 50%;\n }\n "]))),
22
+ addChatBtn: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n width: 256px;\n height: 40px;\n margin: 17px auto 24px;\n background: #FFFFFF;\n border-radius: 20px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #343434;\n\n &:hover {\n color: #3961F2;\n }\n\n &:active {\n color: #0A3BEE;\n }\n "]))),
23
+ tipTitle: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #949494;\n padding-left: 24px;\n "]))),
24
+ fWrapper: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n background: #F8FBFF;\n padding: 16px 0 13px;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n "]))),
25
+ fheaderWrapper: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 11px 0 16px;\n "]))),
26
+ scrollList: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n max-height: calc(100vh - 120px); /* 120px\u4E3A\u5934\u90E8\u9AD8\u5EA6\uFF0C\u53EF\u6839\u636E\u5B9E\u9645\u8C03\u6574 */\n padding-bottom: 15px;\n overflow-y: auto;\n\n /* \u9690\u85CF\u6EDA\u52A8\u6761\uFF08Chrome, Edge, Safari\uFF09 */\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n background: transparent;\n }\n\n /* \u9690\u85CF\u6EDA\u52A8\u6761\uFF08Firefox\uFF09 */\n scrollbar-width: none;\n\n /* \u9690\u85CF\u6EDA\u52A8\u6761\uFF08IE/Edge\uFF09 */\n -ms-overflow-style: none;\n "]))),
27
+ slideIn: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n animation: ", " 0.3s forwards;\n "])), slideInRight),
28
+ slideOut: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n animation: ", " 0.3s forwards;\n "])), slideOutRight)
29
+ };
30
+ });
31
+ export var GlobalStyle = function GlobalStyle() {
32
+ return /*#__PURE__*/_jsx(Global, {
33
+ styles: globalCss(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n .ant-conversations .ant-conversations-item-active {\n background: rgba(57,97,242,0.08);\n }\n\n .ant-conversations .ant-conversations-item-active .ant-conversations-label {\n color: #3961F2;\n }\n "])))
34
+ });
35
+ };
36
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","css","keyframes","globalCss","Global","withBasicStyles","jsx","_jsx","primaryBlue","lightBlue","darkGray","lightGray","borderGray","slideInRight","_templateObject","_taggedTemplateLiteral","slideOutRight","_templateObject2","useStyles","capWrapper","_templateObject3","capShape","_templateObject4","capIcon","_templateObject5","addChatBtn","_templateObject6","tipTitle","_templateObject7","fWrapper","_templateObject8","fheaderWrapper","_templateObject9","scrollList","_templateObject10","slideIn","_templateObject11","slideOut","_templateObject12","GlobalStyle","styles","_templateObject13"],"sources":["../../../../src/components/XAiConversations/styles.tsx"],"sourcesContent":["import React from 'react';\nimport { css, keyframes } from '@emotion/css';\nimport { css as globalCss, Global } from '@emotion/react';\nimport { withBasicStyles } from '@/styles/common';\n\nconst primaryBlue = '#0078FF'; // 主蓝色\nconst lightBlue = '#E6F0FF'; // 浅蓝色气泡背景\nconst darkGray = '#333'; // 深灰色文本\nconst lightGray = '#888'; // 浅灰文本\nconst borderGray = '#ddd'; // 边框灰色\n\n\nconst slideInRight = keyframes`\n from { transform: translateX(-100%); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n`;\n\nconst slideOutRight = keyframes`\n from { transform: translateX(0); opacity: 1; }\n to { transform: translateX(-100%); opacity: 0; }\n`;\n\n\nexport const useStyles = withBasicStyles(() => ({\n // 静态样式\n capWrapper: css`\n padding: 12px 16px;\n display: flex;\n align-items: center;\n `,\n\n capShape: css`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 80px;\n height: 40px;\n margin-left: 16px;\n background: #FFFFFF;\n box-shadow: 0px 4px 16px 0px rgba(127,135,166,0.08);\n border-radius: 24px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n transition: box-shadow 0.2s, border-color 0.2s;\n cursor: pointer;\n /* &:hover {\n box-shadow: 0px 4px 24px 0px rgba(127,135,166,0.16);\n border-color: ${primaryBlue};\n } */\n `,\n\n capIcon: css`\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n img {\n width: 17px;\n }\n\n &:hover {\n background: #F2F2F2;\n border-radius: 50%;\n }\n `,\n\n addChatBtn: css`\n width: 256px;\n height: 40px;\n margin: 17px auto 24px;\n background: #FFFFFF;\n border-radius: 20px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #343434;\n\n &:hover {\n color: #3961F2;\n }\n\n &:active {\n color: #0A3BEE;\n }\n `,\n\n tipTitle: css`\n font-size: 12px;\n color: #949494;\n padding-left: 24px;\n `,\n\n fWrapper: css`\n background: #F8FBFF;\n padding: 16px 0 13px;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n `,\n\n fheaderWrapper: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 11px 0 16px;\n `,\n\n scrollList: css`\n max-height: calc(100vh - 120px); /* 120px为头部高度,可根据实际调整 */\n padding-bottom: 15px;\n overflow-y: auto;\n\n /* 隐藏滚动条(Chrome, Edge, Safari) */\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n background: transparent;\n }\n\n /* 隐藏滚动条(Firefox) */\n scrollbar-width: none;\n\n /* 隐藏滚动条(IE/Edge) */\n -ms-overflow-style: none;\n `,\n\n slideIn: css`\n animation: ${slideInRight} 0.3s forwards;\n `,\n slideOut: css`\n animation: ${slideOutRight} 0.3s forwards;\n `,\n\n}))\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .ant-conversations .ant-conversations-item-active {\n background: rgba(57,97,242,0.08);\n }\n\n .ant-conversations .ant-conversations-item-active .ant-conversations-label {\n color: #3961F2;\n }\n `}\n />\n);"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,GAAG,EAAEC,SAAS,QAAQ,cAAc;AAC7C,SAASD,GAAG,IAAIE,SAAS,EAAEC,MAAM,QAAQ,gBAAgB;AACzD,SAASC,eAAe;AAA0B,SAAAC,GAAA,IAAAC,IAAA;AAElD,IAAMC,WAAW,GAAG,SAAS,CAAC,CAAC;AAC/B,IAAMC,SAAS,GAAG,SAAS,CAAC,CAAG;AAC/B,IAAMC,QAAQ,GAAG,MAAM,CAAC,CAAQ;AAChC,IAAMC,SAAS,GAAG,MAAM,CAAC,CAAO;AAChC,IAAMC,UAAU,GAAG,MAAM,CAAC,CAAM;;AAGhC,IAAMC,YAAY,GAAGX,SAAS,CAAAY,eAAA,KAAAA,eAAA,GAAAC,sBAAA,gHAG7B;AAED,IAAMC,aAAa,GAAGd,SAAS,CAAAe,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,gHAG9B;AAGD,OAAO,IAAMG,SAAS,GAAGb,eAAe,CAAC;EAAA,OAAO;IAC9C;IACAc,UAAU,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAL,sBAAA,mFAId;IAEDM,QAAQ,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAP,sBAAA,+fAgBOP,WAAW,CAE9B;IAEDe,OAAO,EAAEtB,GAAG,CAAAuB,gBAAA,KAAAA,gBAAA,GAAAT,sBAAA,0QAgBX;IAEDU,UAAU,EAAExB,GAAG,CAAAyB,gBAAA,KAAAA,gBAAA,GAAAX,sBAAA,sZAqBd;IAEDY,QAAQ,EAAE1B,GAAG,CAAA2B,gBAAA,KAAAA,gBAAA,GAAAb,sBAAA,gFAIZ;IAEDc,QAAQ,EAAE5B,GAAG,CAAA6B,gBAAA,KAAAA,gBAAA,GAAAf,sBAAA,oIAMZ;IAEDgB,cAAc,EAAE9B,GAAG,CAAA+B,gBAAA,KAAAA,gBAAA,GAAAjB,sBAAA,4HAKlB;IAEDkB,UAAU,EAAEhC,GAAG,CAAAiC,iBAAA,KAAAA,iBAAA,GAAAnB,sBAAA,+jBAkBd;IAEDoB,OAAO,EAAElC,GAAG,CAAAmC,iBAAA,KAAAA,iBAAA,GAAArB,sBAAA,iDACGF,YAAY,CAC1B;IACDwB,QAAQ,EAAEpC,GAAG,CAAAqC,iBAAA,KAAAA,iBAAA,GAAAvB,sBAAA,iDACEC,aAAa;EAG9B,CAAC;AAAA,CAAC,CAAC;AAEH,OAAO,IAAMuB,WAAqB,GAAG,SAAxBA,WAAqBA,CAAA;EAAA,oBAChChC,IAAA,CAACH,MAAM;IACLoC,MAAM,EAAErC,SAAS,CAAAsC,iBAAA,KAAAA,iBAAA,GAAA1B,sBAAA;EAQf,CACH,CAAC;AAAA,CACH"}
@@ -72,7 +72,7 @@ export var 单聊天窗口实例 = {
72
72
  })
73
73
  }), /*#__PURE__*/_jsx("div", {
74
74
  style: {
75
- width: '400px',
75
+ maxWidth: '800px',
76
76
  height: '600px'
77
77
  },
78
78
  children: /*#__PURE__*/_jsx(XAiProvider, _objectSpread(_objectSpread({
@@ -194,40 +194,39 @@ export var 携带历史记录示例 = {
194
194
  var providerRef = React.useRef(null);
195
195
  return /*#__PURE__*/_jsx("div", {
196
196
  style: {
197
- display: 'flex'
197
+ width: '800px',
198
+ height: '600px',
199
+ overflow: 'hidden'
198
200
  },
199
- children: /*#__PURE__*/_jsx("div", {
200
- style: {
201
- width: '1000px',
202
- height: '600px'
201
+ children: /*#__PURE__*/_jsxs(XAiProvider, _objectSpread(_objectSpread({
202
+ ref: providerRef
203
+ }, args), {}, {
204
+ onError: function onError(providerError) {
205
+ return console.log(providerError);
203
206
  },
204
- children: /*#__PURE__*/_jsxs(XAiProvider, _objectSpread(_objectSpread({
205
- ref: providerRef
206
- }, args), {}, {
207
- onError: function onError(providerError) {
208
- return console.log(providerError);
209
- },
210
- onMessage: function onMessage(data) {
211
- return console.log(data);
212
- },
213
- children: [/*#__PURE__*/_jsx(XAiConversations, {}), /*#__PURE__*/_jsx(XAiChatbot, {
214
- navbar: {
215
- title: 'Provider 聊天机器人',
216
- subtitle: '由 Provider 管理消息',
217
- avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg'
218
- }
219
- })]
220
- }))
221
- })
207
+ onMessage: function onMessage(data) {
208
+ return console.log(data);
209
+ },
210
+ children: [/*#__PURE__*/_jsx(XAiConversations, {}), /*#__PURE__*/_jsx(XAiChatbot, {
211
+ navbar: {
212
+ title: 'Provider 聊天机器人',
213
+ subtitle: '由 Provider 管理消息',
214
+ avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg'
215
+ }
216
+ })]
217
+ }))
222
218
  });
223
219
  },
224
220
  args: {
225
221
  url: 'http://ai-platform.xline-dev.test.xinke.biz',
226
- token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI4ODYwNWUwNi1mNjBkLTQzMTUtYWM0ZC04YzcyNWY0YmQ3NjkiLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTc5OTU5ODEsImV4cCI6MTc1ODAwMzE4MSwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTUyMzA4NTA4OTU2ODc2ODAiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9.9nmXvWt210UxfVjDJ-nGXhuD3OnNZDh90RdAQspu0EC5iKh-xdAwbFjZ7KWAyFSODDcqtHekYNSnOPaEGBEgEg',
222
+ token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJiZGVmZjAyZS01N2VmLTQzMzItOGY5Zi1lNmMyZDdjM2RlYTEiLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTgwOTAxMDIsImV4cCI6MTc1ODA5NzMwMiwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NjMxODcwMjEwMzc5Mjg0NDgiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9.NrnkXcGUZ098ElJmSH1DqCAxHAF05d9Rs15JiuprnW6Z4WK6m4DrDvZTxbNcYcfrtHvcc3nCBAYajz6x5M03QA',
227
223
  config: {
228
- appNo: 'App1955230850895687680',
224
+ appNo: 'App1963187021037928448',
229
225
  pt: 'MainStation',
230
- tc: 'ZABX'
226
+ tc: 'ZABX',
227
+ chatProps: {
228
+ clearBtnShow: false
229
+ }
231
230
  },
232
231
  providerId: 'demo-provider'
233
232
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","Button","XAiProvider","XAiChatbot","XAiConversations","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","width","height","_objectSpread","ref","onError","providerError","onMessage","data","navbarShow","navbar","subtitle","avatar","url","token","appNo","pt","tc","providerId","多容器示例","携带历史记录示例"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\nimport useStyles from './demo.styles';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: { \n summary: 'XAiProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n pt?: string; // 授权方式\n tc?: string; // 租户key\n }`\n },\n category: '配置选项'\n }\n }\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat('你好,AI!')\n } else {\n console.log('XAiProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'http://ai-platform.xline-dev.test.xinke.biz',\n token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI4ZjYxNjE2Yy05ZWZjLTQ5ZmMtOWFmYi00OWZiZDNhNGVmNzciLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTc5MjUwOTQsImV4cCI6MTc1NzkzMjI5NCwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTUyMzA4NTA4OTU2ODc2ODAiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9._lZMQ_V0Tzv54Cez-Wc9OQCpP1dt6k0HqOiGZ8DBd_f3HPa1mjF3wJP-0ToBLH8udMrFQmkjAOD3jzvTUqHSJA',\n config: {\n appNo: 'App1955230850895687680',\n pt: 'MainStation',\n tc: 'ZABX',\n },\n providerId: 'demo-provider',\n },\n};\n\n// export const 带历史记录聊天窗口: Story = {\n// render: (args) => {\n// function WithStyles(props: any) {\n// const styles = useStyles();\n// return (\n// <XAiProvider {...props}>\n// <div className={styles.wrapper}>\n// <div>\n// <XAiConversations />\n// </div>\n// <div>\n// <XAiChatbot />\n// </div>\n// </div>\n// </XAiProvider>\n// );\n// }\n// return <WithStyles {...args} />;\n// },\n// args: {\n// url: 'http://ai-platform.xline-dev.test.xinke.biz',\n// token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJjYWIxYjM3Ni03MmZjLTRkNWEtOTIzMC01N2U3NmZiMGI4NmQiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQzMTc1OTAsImV4cCI6MTc1NDkyMjM5MCwidHlwZSI6InJlZnJlc2giLCJjbGllbnRfaWQiOiJBcHAxOTUwMDIwNTk0NDUyNjYwMjI0Iiwic2NvcGUiOiJhbGwiLCJwbGF0Zm9ybV90eXBlIjoiTWFpblN0YXRpb24ifQ.crZFQRycuHHA1iIIFJ5ak9kS1-04Eqro-QWWG8HZj6Dz7DkLWYuQBPCrUlCtavGu0XW5tqHZ5WW4tdST06FvEA',\n// config: {\n// appNo: 'App1952213101022154752',\n// pt: 'MainStation',\n// tc: 'ZABX',\n// },\n// providerId: 'demo-provider',\n// },\n// };\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录示例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ width: '1000px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiConversations />\n <XAiChatbot\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'http://ai-platform.xline-dev.test.xinke.biz',\n token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI4ODYwNWUwNi1mNjBkLTQzMTUtYWM0ZC04YzcyNWY0YmQ3NjkiLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTc5OTU5ODEsImV4cCI6MTc1ODAwMzE4MSwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTUyMzA4NTA4OTU2ODc2ODAiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9.9nmXvWt210UxfVjDJ-nGXhuD3OnNZDh90RdAQspu0EC5iKh-xdAwbFjZ7KWAyFSODDcqtHekYNSnOPaEGBEgEg',\n config: {\n appNo: 'App1955230850895687680',\n pt: 'MainStation',\n tc: 'ZABX',\n },\n providerId: 'demo-provider',\n },\n};"],"mappings":"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"}
1
+ {"version":3,"names":["React","Button","XAiProvider","XAiChatbot","XAiConversations","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","onError","providerError","onMessage","data","navbarShow","navbar","subtitle","avatar","url","token","appNo","pt","tc","providerId","多容器示例","width","携带历史记录示例","overflow","chatProps","clearBtnShow"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: { \n summary: 'XAiProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n pt?: string; // 授权方式\n tc?: string; // 租户key\n }`\n },\n category: '配置选项'\n }\n }\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat('你好,AI!');\n } else {\n console.log('XAiProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '800px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'http://ai-platform.xline-dev.test.xinke.biz',\n token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI4ZjYxNjE2Yy05ZWZjLTQ5ZmMtOWFmYi00OWZiZDNhNGVmNzciLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTc5MjUwOTQsImV4cCI6MTc1NzkzMjI5NCwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTUyMzA4NTA4OTU2ODc2ODAiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9._lZMQ_V0Tzv54Cez-Wc9OQCpP1dt6k0HqOiGZ8DBd_f3HPa1mjF3wJP-0ToBLH8udMrFQmkjAOD3jzvTUqHSJA',\n config: {\n appNo: 'App1955230850895687680',\n pt: 'MainStation',\n tc: 'ZABX',\n },\n providerId: 'demo-provider',\n },\n};\n\n// export const 带历史记录聊天窗口: Story = {\n// render: (args) => {\n// function WithStyles(props: any) {\n// const styles = useStyles();\n// return (\n// <XAiProvider {...props}>\n// <div className={styles.wrapper}>\n// <div>\n// <XAiConversations />\n// </div>\n// <div>\n// <XAiChatbot />\n// </div>\n// </div>\n// </XAiProvider>\n// );\n// }\n// return <WithStyles {...args} />;\n// },\n// args: {\n// url: 'http://ai-platform.xline-dev.test.xinke.biz',\n// token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJjYWIxYjM3Ni03MmZjLTRkNWEtOTIzMC01N2U3NmZiMGI4NmQiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQzMTc1OTAsImV4cCI6MTc1NDkyMjM5MCwidHlwZSI6InJlZnJlc2giLCJjbGllbnRfaWQiOiJBcHAxOTUwMDIwNTk0NDUyNjYwMjI0Iiwic2NvcGUiOiJhbGwiLCJwbGF0Zm9ybV90eXBlIjoiTWFpblN0YXRpb24ifQ.crZFQRycuHHA1iIIFJ5ak9kS1-04Eqro-QWWG8HZj6Dz7DkLWYuQBPCrUlCtavGu0XW5tqHZ5WW4tdST06FvEA',\n// config: {\n// appNo: 'App1952213101022154752',\n// pt: 'MainStation',\n// tc: 'ZABX',\n// },\n// providerId: 'demo-provider',\n// },\n// };\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录示例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n return (\n <div style={{ width: '800px', height: '600px', overflow: 'hidden' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiConversations />\n <XAiChatbot\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n );\n },\n args: {\n url: 'http://ai-platform.xline-dev.test.xinke.biz',\n token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJiZGVmZjAyZS01N2VmLTQzMzItOGY5Zi1lNmMyZDdjM2RlYTEiLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTgwOTAxMDIsImV4cCI6MTc1ODA5NzMwMiwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NjMxODcwMjEwMzc5Mjg0NDgiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9.NrnkXcGUZ098ElJmSH1DqCAxHAF05d9Rs15JiuprnW6Z4WK6m4DrDvZTxbNcYcfrtHvcc3nCBAYajz6x5M03QA',\n config: {\n appNo: 'App1963187021037928448',\n pt: 'MainStation',\n tc: 'ZABX',\n chatProps: {\n clearBtnShow: false\n }\n },\n providerId: 'demo-provider',\n },\n};"],"mappings":"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"}