@ai-group/chat-sdk 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +44 -4
- package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +2 -2
- package/dist/cjs/components/XAiChatbot/index.js +15 -9
- package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +1 -1
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
- package/dist/cjs/components/XAiProvider/index.js +1 -1
- package/dist/cjs/components/XAiProvider/index.js.map +2 -2
- package/dist/cjs/components/XAiSender/XAiSender.stories.js +3 -2
- package/dist/cjs/components/XAiSender/XAiSender.stories.js.map +2 -2
- package/dist/cjs/components/XAiSender/index.js +13 -3
- package/dist/cjs/components/XAiSender/index.js.map +2 -2
- package/dist/cjs/hooks/useAgentGenerator.d.ts +3 -3
- package/dist/cjs/hooks/useAgentGenerator.js +5 -5
- package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
- package/dist/cjs/hooks/useProviderContext.d.ts +2 -1
- package/dist/cjs/hooks/useProviderContext.js.map +2 -2
- package/dist/cjs/types/XAiChatbot.d.ts +8 -6
- package/dist/cjs/types/XAiChatbot.js.map +1 -1
- package/dist/cjs/types/XAiConversations.d.ts +2 -2
- package/dist/cjs/types/XAiConversations.js.map +1 -1
- package/dist/cjs/types/XAiMessage.d.ts +2 -1
- package/dist/cjs/types/XAiMessage.js.map +2 -2
- package/dist/cjs/types/XAiProvider.d.ts +3 -3
- package/dist/cjs/types/XAiProvider.js.map +2 -2
- package/dist/cjs/types/XAiSender.d.ts +5 -1
- package/dist/cjs/types/XAiSender.js.map +1 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils/umdEntry.d.ts +3 -2
- package/dist/cjs/utils/umdEntry.js +2 -2
- package/dist/cjs/utils/umdEntry.js.map +2 -2
- package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js +60 -6
- package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js.map +1 -1
- package/dist/esm/components/XAiChatbot/index.js +76 -64
- package/dist/esm/components/XAiChatbot/index.js.map +1 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js +3 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
- package/dist/esm/components/XAiProvider/index.js +1 -1
- package/dist/esm/components/XAiProvider/index.js.map +1 -1
- package/dist/esm/components/XAiSender/XAiSender.stories.js +3 -2
- package/dist/esm/components/XAiSender/XAiSender.stories.js.map +1 -1
- package/dist/esm/components/XAiSender/index.js +16 -4
- package/dist/esm/components/XAiSender/index.js.map +1 -1
- package/dist/esm/hooks/useAgentGenerator.d.ts +3 -3
- package/dist/esm/hooks/useAgentGenerator.js +7 -8
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
- package/dist/esm/hooks/useProviderContext.d.ts +2 -1
- package/dist/esm/hooks/useProviderContext.js.map +1 -1
- package/dist/esm/types/XAiChatbot.d.ts +8 -6
- package/dist/esm/types/XAiChatbot.js.map +1 -1
- package/dist/esm/types/XAiConversations.d.ts +2 -2
- package/dist/esm/types/XAiConversations.js.map +1 -1
- package/dist/esm/types/XAiMessage.d.ts +2 -1
- package/dist/esm/types/XAiMessage.js.map +1 -1
- package/dist/esm/types/XAiProvider.d.ts +3 -3
- package/dist/esm/types/XAiProvider.js.map +1 -1
- package/dist/esm/types/XAiSender.d.ts +5 -1
- package/dist/esm/types/XAiSender.js.map +1 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/umdEntry.d.ts +3 -2
- package/dist/esm/utils/umdEntry.js +2 -2
- package/dist/esm/utils/umdEntry.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
|
@@ -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","maxWidth","height","_objectSpread","ref","onError","providerError","onMessage","data","navbarShow","navbar","subtitle","avatar","url","token","appNo","providerId","多容器示例","width","携带历史记录示例","overflow","flex","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 }`\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: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIl0sImV4cCI6MTc2NDY3MTc2MSwianRpIjoiRl9Zb0JBXzhIN01XempDZUxQenEzNTBXRnNrIiwiY2xpZW50X2lkIjoiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIn0.mtGBQfwNtIkhcOumsOvzMj2BdYUxAPwZ9GcvNLuCNGVzFkqkLkfy_LALjYR2B-RaNj11_Cx7DcewtmLceG31KfnCiFY24BD_CbwoahdFh40SYRTFnjDf8XQI22E63h5NxTuldPx0itYLUPaUO6NAubnRON40eQPGZKygM0i72ULsQQAyRpJLYAaTjUxyPIW3JmMzQmYiRx641JeAYAup4-ZNw-Fqmd-8_xK3kN-a832xM-M_eqXgn8yMttn0uFv95lxPdJ1_-mp2zx8N4TBCYVkHo3u_PjM65S3_p4u1dFGXBDAsxtVMgmVGeUvubTLFuDM153rz9MZ7aOuu_c8K7w',\n config: {\n appNo: 'PGlA63A1Gt9oZpxa6YCWMciH',\n },\n providerId: 'demo-provider',\n },\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: '1080px', 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 <div style={{ flex: 1, display: 'flex', justifyContent: 'center' }}>\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 </div>\n </XAiProvider>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIl0sImV4cCI6MTc2NDkzNjIzNywianRpIjoiTTU3ZjVhWHU0MVJENTN6dFJlU2pXaUZTTXJzIiwiY2xpZW50X2lkIjoicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIn0.Qnfq9ndj-Wd3Z-XX5fTPL2QyzVPWb3QQ8mmWVD5LfcKsEb9KQ8qwA1DBuC_6bhqT2CrWEHr9VbrwhES5a2Hh63hqtQYaAnZ4hqigutkKiR_wB-vrnhfrnupiXrrO0oYRCCLAvIsZS0KCqq2U3MGBVGPqciofUbjCrROgSXXDpNmosJKR8HBAmM8dWElCSuTGm3J0T3f0nb_4AYq10ssl8Pfy7b7HnDNIccDj-IuBKfqKrQR0Uk6CkOcgc1tUVZdcvqGzZos7ms7yPsfrq9lJ4-mx8Z-OyCsDrXJU-VpUCLZmLGWfWPKAR3FDc3KnyCZAAWkzVwjLZG9vBmzsOW6Unw',\n config: {\n appNo: 'rcxjpbmN8UX1UTQm54oFMLKp',\n chatProps: {\n clearBtnShow: false\n }\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","text","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","onError","providerError","onMessage","data","navbarShow","navbar","subtitle","avatar","url","token","appNo","providerId","多容器示例","width","携带历史记录示例","overflow","flex","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 }`,\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({ text: '你好,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: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIl0sImV4cCI6MTc2NDY3MTc2MSwianRpIjoiRl9Zb0JBXzhIN01XempDZUxQenEzNTBXRnNrIiwiY2xpZW50X2lkIjoiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIn0.mtGBQfwNtIkhcOumsOvzMj2BdYUxAPwZ9GcvNLuCNGVzFkqkLkfy_LALjYR2B-RaNj11_Cx7DcewtmLceG31KfnCiFY24BD_CbwoahdFh40SYRTFnjDf8XQI22E63h5NxTuldPx0itYLUPaUO6NAubnRON40eQPGZKygM0i72ULsQQAyRpJLYAaTjUxyPIW3JmMzQmYiRx641JeAYAup4-ZNw-Fqmd-8_xK3kN-a832xM-M_eqXgn8yMttn0uFv95lxPdJ1_-mp2zx8N4TBCYVkHo3u_PjM65S3_p4u1dFGXBDAsxtVMgmVGeUvubTLFuDM153rz9MZ7aOuu_c8K7w',\n config: {\n appNo: 'PGlA63A1Gt9oZpxa6YCWMciH',\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: '1080px', 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 <div style={{ flex: 1, display: 'flex', justifyContent: 'center' }}>\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 </div>\n </XAiProvider>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIl0sImV4cCI6MTc2NDkzNjIzNywianRpIjoiTTU3ZjVhWHU0MVJENTN6dFJlU2pXaUZTTXJzIiwiY2xpZW50X2lkIjoicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIn0.Qnfq9ndj-Wd3Z-XX5fTPL2QyzVPWb3QQ8mmWVD5LfcKsEb9KQ8qwA1DBuC_6bhqT2CrWEHr9VbrwhES5a2Hh63hqtQYaAnZ4hqigutkKiR_wB-vrnhfrnupiXrrO0oYRCCLAvIsZS0KCqq2U3MGBVGPqciofUbjCrROgSXXDpNmosJKR8HBAmM8dWElCSuTGm3J0T3f0nb_4AYq10ssl8Pfy7b7HnDNIccDj-IuBKfqKrQR0Uk6CkOcgc1tUVZdcvqGzZos7ms7yPsfrq9lJ4-mx8Z-OyCsDrXJU-VpUCLZmLGWfWPKAR3FDc3KnyCZAAWkzVwjLZG9vBmzsOW6Unw',\n config: {\n appNo: 'rcxjpbmN8UX1UTQm54oFMLKp',\n chatProps: {\n clearBtnShow: false,\n },\n },\n providerId: 'demo-provider',\n },\n};\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,MAAM,QAAQ,MAAM;AAC7B,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AAA4B,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEnD,IAAMC,IAA8B,GAAG;EACrCC,KAAK,EAAE,uBAAuB;EAC9BC,SAAS,EAAET,WAAW;EACtBU,UAAU,EAAE;IACVC,MAAM,EAAE,UAAU;IAClBC,IAAI,EAAE;MACJC,WAAW,EAAE;QACXJ,SAAS,EAAE;MACb;IACF;EACF,CAAC;EACDK,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,QAAQ,EAAE;IACRC,MAAM,EAAE;MACNH,WAAW,EAAE,MAAM;MACnBI,KAAK,EAAE;QACLC,IAAI,EAAE;UACJC,OAAO,EAAE,mBAAmB;UAC5BC,MAAM;QAGR,CAAC;QACDC,QAAQ,EAAE;MACZ;IACF;EACF,CAAC;EACD;EACAC,UAAU,EAAE,CACV,UAACC,KAAK;IAAA,oBACJnB,IAAA;MAAKoB,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAO,CAAE;MAAAC,QAAA,eAC9BtB,IAAA,CAACmB,KAAK,IAAE;IAAC,CACN,CAAC;EAAA,CACP;AAEL,CAAC;AAED,eAAehB,IAAI;AAGnB;AACA,OAAO,IAAMoB,OAAc,GAAG;EAC5BC,MAAM,EAAE,SAAAA,OAACC,IAAI,EAAK;IAChB,IAAMC,WAAW,GAAGhC,KAAK,CAACiC,MAAM,CAAM,IAAI,CAAC;IAE3C,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA,EAAS;MAAA,IAAAC,oBAAA;MAC9B,KAAAA,oBAAA,GAAIH,WAAW,CAACI,OAAO,cAAAD,oBAAA,eAAnBA,oBAAA,CAAqBE,IAAI,EAAE;QAC7BL,WAAW,CAACI,OAAO,CAACC,IAAI,CAAC;UAAEC,IAAI,EAAE;QAAS,CAAC,CAAC;MAC9C,CAAC,MAAM;QACLC,OAAO,CAACC,GAAG,CAAC,kCAAkC,CAAC;MACjD;IACF,CAAC;IAED,oBACEhC,KAAA;MAAKkB,KAAK,EAAE;QAAEe,OAAO,EAAE;MAAO,CAAE;MAAAb,QAAA,gBAC9BtB,IAAA;QAAKoB,KAAK,EAAE;UAAEe,OAAO,EAAE,MAAM;UAAEC,aAAa,EAAE,QAAQ;UAAEC,GAAG,EAAE,MAAM;UAAEC,WAAW,EAAE,MAAM;UAAEC,cAAc,EAAE;QAAS,CAAE;QAAAjB,QAAA,eACnHtB,IAAA,CAACL,MAAM;UAACmB,IAAI,EAAC,SAAS;UAAC0B,OAAO,EAAEZ,iBAAkB;UAAAN,QAAA,EAAC;QAAI,CAAQ;MAAC,CAC7D,CAAC,eACNtB,IAAA;QAAKoB,KAAK,EAAE;UAAEqB,QAAQ,EAAE,OAAO;UAAEC,MAAM,EAAE;QAAQ,CAAE;QAAApB,QAAA,eACjDtB,IAAA,CAACJ,WAAW,EAAA+C,aAAA,CAAAA,aAAA;UACVC,GAAG,EAAElB;QAAY,GACbD,IAAI;UACRoB,OAAO,EAAE,SAAAA,QAACC,aAAa;YAAA,OAAKb,OAAO,CAACC,GAAG,CAACY,aAAa,CAAC;UAAA,CAAC;UACvDC,SAAS,EAAE,SAAAA,UAACC,IAAI;YAAA,OAAKf,OAAO,CAACC,GAAG,CAACc,IAAI,CAAC;UAAA,CAAC;UAAA1B,QAAA,eAEvCtB,IAAA,CAACH,UAAU;YACToD,UAAU;YACVC,MAAM,EAAE;cACN9C,KAAK,EAAE,gBAAgB;cACvB+C,QAAQ,EAAE,iBAAiB;cAC3BC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,EACS;MAAC,CACX,CAAC;IAAA,CACH,CAAC;EAEV,CAAC;EACD3B,IAAI,EAAE;IACJ4B,GAAG,EAAE,+BAA+B;IACpCC,KAAK,EAAE,6lBAA6lB;IACpmB1C,MAAM,EAAE;MACN2C,KAAK,EAAE;IACT,CAAC;IACDC,UAAU,EAAE;EACd;AACF,CAAC;;AAED;AACA,OAAO,IAAMC,KAAY,GAAG;EAC1BjC,MAAM,EAAE,SAAAA,OAACC,IAAI;IAAA,oBACXvB,KAAA;MAAKkB,KAAK,EAAE;QAAEe,OAAO,EAAE,MAAM;QAAEE,GAAG,EAAE;MAAO,CAAE;MAAAf,QAAA,gBAC3CtB,IAAA;QAAKoB,KAAK,EAAE;UAAEsC,KAAK,EAAE,OAAO;UAAEhB,MAAM,EAAE;QAAQ,CAAE;QAAApB,QAAA,eAC9CtB,IAAA,CAACJ,WAAW,EAAA+C,aAAA,CAAAA,aAAA,KAAKlB,IAAI;UAAE+B,UAAU,EAAC,YAAY;UAAAlC,QAAA,eAC5CtB,IAAA,CAACH,UAAU;YACToD,UAAU;YACVC,MAAM,EAAE;cACN9C,KAAK,EAAE,YAAY;cACnB+C,QAAQ,EAAE,UAAU;cACpBC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,EACS;MAAC,CACX,CAAC,eAENpD,IAAA;QAAKoB,KAAK,EAAE;UAAEsC,KAAK,EAAE,OAAO;UAAEhB,MAAM,EAAE;QAAQ,CAAE;QAAApB,QAAA,eAC9CtB,IAAA,CAACJ,WAAW,EAAA+C,aAAA,CAAAA,aAAA,KAAKlB,IAAI;UAAE+B,UAAU,EAAC,YAAY;UAAAlC,QAAA,eAC5CtB,IAAA,CAACH,UAAU;YACToD,UAAU;YACVC,MAAM,EAAE;cACN9C,KAAK,EAAE,YAAY;cACnB+C,QAAQ,EAAE,UAAU;cACpBC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,EACS;MAAC,CACX,CAAC;IAAA,CACH,CAAC;EAAA,CACP;EACD3B,IAAI,EAAE;IACJ4B,GAAG,EAAE,4BAA4B;IACjCC,KAAK,EAAE;EACT;AACF,CAAC;;AAED;AACA,OAAO,IAAMK,QAAe,GAAG;EAC7BnC,MAAM,EAAE,SAAAA,OAACC,IAAI,EAAK;IAChB,IAAMC,WAAW,GAAGhC,KAAK,CAACiC,MAAM,CAAM,IAAI,CAAC;IAE3C,oBACE3B,IAAA;MAAKoB,KAAK,EAAE;QAAEsC,KAAK,EAAE,QAAQ;QAAEhB,MAAM,EAAE,OAAO;QAAEkB,QAAQ,EAAE;MAAS,CAAE;MAAAtC,QAAA,eACnEpB,KAAA,CAACN,WAAW,EAAA+C,aAAA,CAAAA,aAAA;QACVC,GAAG,EAAElB;MAAY,GACbD,IAAI;QACRoB,OAAO,EAAE,SAAAA,QAACC,aAAa;UAAA,OAAKb,OAAO,CAACC,GAAG,CAACY,aAAa,CAAC;QAAA,CAAC;QACvDC,SAAS,EAAE,SAAAA,UAACC,IAAI;UAAA,OAAKf,OAAO,CAACC,GAAG,CAACc,IAAI,CAAC;QAAA,CAAC;QAAA1B,QAAA,gBAEvCtB,IAAA,CAACF,gBAAgB,IAAE,CAAC,eACpBE,IAAA;UAAKoB,KAAK,EAAE;YAAEyC,IAAI,EAAE,CAAC;YAAE1B,OAAO,EAAE,MAAM;YAAEI,cAAc,EAAE;UAAS,CAAE;UAAAjB,QAAA,eACjEtB,IAAA,CAACH,UAAU;YACTqD,MAAM,EAAE;cACN9C,KAAK,EAAE,gBAAgB;cACvB+C,QAAQ,EAAE,iBAAiB;cAC3BC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,CACC,CAAC;MAAA,EACK;IAAC,CACX,CAAC;EAEV,CAAC;EACD3B,IAAI,EAAE;IACJ4B,GAAG,EAAE,+BAA+B;IACpCC,KAAK,EAAE,6lBAA6lB;IACpmB1C,MAAM,EAAE;MACN2C,KAAK,EAAE,0BAA0B;MACjCO,SAAS,EAAE;QACTC,YAAY,EAAE;MAChB;IACF,CAAC;IACDP,UAAU,EAAE;EACd;AACF,CAAC"}
|
|
@@ -124,7 +124,7 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
124
124
|
}, []);
|
|
125
125
|
|
|
126
126
|
// 发送消息
|
|
127
|
-
var handleSendMessage = function handleSendMessage(
|
|
127
|
+
var handleSendMessage = function handleSendMessage(content) {
|
|
128
128
|
chat(content);
|
|
129
129
|
};
|
|
130
130
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useImperativeHandle","useState","useRef","useEffect","message","Divider","Modal","Input","ConfigProvider","copy","XProvider","ExclamationCircleFilled","LikeFilled","LikeOutlined","XAiContext","useAgentGenerator","MOBILE_MAX_WIDTH","API_SUCCESS_CODE","userIcon","primaryBlue","DislikeFeedback","addFeedback","defaultActions","jsx","_jsx","jsxs","_jsxs","confirm","XAiProvider","_ref","ref","_config$chatProps","_config$session","_config$chatProps2","_ref$url","url","window","location","origin","token","config","_ref$providerId","providerId","onSuccess","onError","onMessage","children","_ref2","chatProps","_ref2$textSpeed","textSpeed","_useAgentGenerator","appInfo","chat","stopChat","reChat","createNewChat","deleteSession","updateSession","currentSessionId","sessionPagination","sessionList","messages","loading","setCurrentSessionDetail","setMessages","_ref3","appName","icon","getAppInfo","getMessages","getSessions","_useState","_useState2","_slicedToArray","isNarrow","setIsNarrow","divRef","div","current","resizeObserver","ResizeObserver","entries","_iterator","_createForOfIteratorHelper","_step","s","n","done","entry","value","width","contentRect","err","e","f","observe","initialWidth","offsetWidth","disconnect","handleSendMessage","_type","content","handleCreateNewMessage","handleActions","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","index","actionData","_ref5","id","_content$text","text","idx","_actionData$isLike","_ref6","appNo","isLike","_actionData$raw","_yield$addFeedback","result","wrap","_callee$","_context","prev","next","t0","abrupt","success","findIndex","item","length","filter","type","warning","requestId","raw","sent","code","map","_objectSpread","error","stop","_x","_x2","apply","arguments","handleSuggestMessageClick","_item","m","handleActiveChange","key","handleDeleteSession","sessionId","handleUpdateSession","title","menuConfig","conversation","items","label","danger","onClick","menuInfo","domEvent","stopPropagation","inputValue","defaultValue","autoFocus","style","onChange","target","okText","cancelText","okButtonProps","background","borderColor","color","onOk","trim","Promise","reject","onCancel","okType","ToolTip","messageData","finalResult","think","find","actionName","_ref7","extra","cost","tokenCount","display","alignItems","fontSize","flex","paddingRight","undefined","clearBtnShow","session","showSessionList","theme","colorPrimary","appTheme","Provider","avatar","src","alt","userAvatar","emptyStateImage","emptyStateText","footerTips","sessionTotal","total","activeKey","inputShow","messageTooltip","messageActions","concat","_toConsumableArray","tooltip","render","i","msg","_i","_msg$raw","activeColor","onSubmit","_ref8","_callee2","formData","_yield$addFeedback2","_callee2$","_context2","_x3","onSend","onClear","onNewChat","onStop","menu","onActiveChange","onSuggestMessageClick","onMessagesActionsCallback","isInProvider","height","position"],"sources":["../../../../src/components/XAiProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useState, useRef, useEffect } from 'react';\nimport { message, Divider, Modal, Input, ConfigProvider } from 'antd';\nimport copy from 'copy-to-clipboard';\nimport { XProvider } from '@ant-design/x';\nimport type { ConversationsProps } from '@ant-design/x';\nimport { ExclamationCircleFilled, LikeFilled, LikeOutlined } from '@ant-design/icons';\nimport { XAiContext } from '@/context/AiProviderContext';\nimport { XAiProviderProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport useAgentGenerator from '@/hooks/useAgentGenerator';\nimport { MOBILE_MAX_WIDTH, API_SUCCESS_CODE } from '@/constants';\nimport userIcon from '@/assets/user.png';\nimport { primaryBlue } from '@/styles/common';\nimport DislikeFeedback from '../DislikeFeedback';\nimport { addFeedback } from '@/services/api';\nimport { defaultActions } from '../XAiChatbot';\n\nconst { confirm } = Modal;\n\nconst XAiProvider = forwardRef<XAiProviderHandle, XAiProviderProps>(({\n url = window.location.origin,\n token,\n config,\n providerId = 'defaultId',\n onSuccess,\n onError,\n onMessage,\n children,\n}, ref) => {\n // 使用 useAgentGenerator Hook 管理消息状态\n\n const { textSpeed = 55 } = config?.chatProps || {};\n\n const {\n appInfo,\n chat,\n stopChat,\n reChat,\n createNewChat,\n deleteSession,\n updateSession,\n currentSessionId,\n sessionPagination,\n sessionList,\n messages,\n loading,\n setCurrentSessionDetail,\n setMessages,\n } = useAgentGenerator({ url, token, config, onError, onSuccess, onMessage, textSpeed });\n\n const { appName, icon } = appInfo || {};\n\n useImperativeHandle(ref, () => ({\n chat,\n stopChat,\n reChat,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n getSessions: () => sessionList,\n setMessages,\n setCurrentSessionDetail,\n }), [appInfo, messages, chat, stopChat, reChat, setMessages, setCurrentSessionDetail]);\n\n const [isNarrow, setIsNarrow] = useState<boolean>(false);\n const divRef = useRef<HTMLDivElement>(null);\n\n // 监听容器宽度变化\n useEffect(() => {\n const div = divRef.current;\n if (!div) return;\n\n // 创建监听器\n const resizeObserver = new ResizeObserver((entries) => {\n // eslint-disable-next-line no-restricted-syntax\n for (const entry of entries) {\n const { width } = entry.contentRect;\n setIsNarrow(width <= MOBILE_MAX_WIDTH);\n }\n });\n\n // 开始监听\n resizeObserver.observe(div);\n\n // 初始化检查\n const initialWidth = div.offsetWidth;\n setIsNarrow(initialWidth <= MOBILE_MAX_WIDTH);\n\n // 清理函数\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n // 发送消息\n const handleSendMessage = (_type: string, content: string) => {\n chat(content);\n };\n\n // 清空消息\n const handleCreateNewMessage = () => {\n createNewChat();\n };\n\n // 工具栏按钮点击\n const handleActions = async (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 const idx = messages.findIndex((item) => item.id === id);\n if (idx >= 0) {\n // 删除该条消息及建议类消息\n if (messages.length - idx <= 2) {\n setMessages((prev) => prev.filter((item) => item.id !== id && item.type !== 'SuggestionMessage'));\n } else {\n // 非最新消息 只删除该条消息\n setMessages((prev) => prev.filter((item) => item.id !== id));\n }\n message.success('删除成功');\n }\n break;\n }\n case 3: {\n const { appNo } = config || {};\n const isLike = actionData.isLike ?? 0;\n if (isLike !== 0) {\n message.warning('已收到您的反馈,无需重复提交');\n return;\n }\n if (appNo) {\n const { result } = await addFeedback({\n url,\n token,\n appNo,\n requestId: actionData.raw?.requestId,\n isLike: 1,\n });\n if (result?.code === API_SUCCESS_CODE) {\n message.success('感谢您的反馈');\n setMessages((prev) => {\n return prev.map((item) => {\n if (item.id === id) {\n return {\n ...item,\n isLike: 1,\n };\n }\n return item;\n });\n });\n } else {\n message.error('反馈失败,请稍后再试');\n }\n }\n break;\n }\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 // 切换会话\n const handleActiveChange = (key: string) => {\n setCurrentSessionDetail(key);\n };\n\n // 删除会话\n const handleDeleteSession = (sessionId: string) => {\n deleteSession(sessionId);\n };\n\n // 修改会话内容\n const handleUpdateSession = (sessionId: string, title: string) => {\n updateSession(sessionId, title);\n };\n\n // 会话操作菜单\n const menuConfig: ConversationsProps['menu'] = (conversation) => ({\n items: [\n {\n label: '重命名',\n key: 'edit',\n },\n {\n label: '删除',\n key: 'delete',\n danger: true,\n },\n ],\n onClick: (menuInfo) => {\n menuInfo.domEvent.stopPropagation();\n const { key } = menuInfo;\n switch (key) {\n case 'edit': {\n let inputValue = conversation.label as string || '';\n confirm({\n title: '编辑对话名称',\n icon: null,\n content: (\n <Input\n defaultValue={inputValue}\n autoFocus\n style={{ width: '100%' }}\n onChange={(e) => {\n inputValue = e.target.value;\n }}\n />\n ),\n okText: '确认',\n cancelText: '取消',\n okButtonProps: {\n style: { background: '#000', borderColor: '#000', color: '#fff' },\n },\n onOk: () => {\n if (!inputValue.trim()) {\n message.error('对话名称不能为空');\n return Promise.reject();\n }\n handleUpdateSession(conversation.key, inputValue);\n },\n onCancel: () => {\n // 静默处理\n },\n });\n break;\n }\n case 'delete':\n confirm({\n title: '确认删除?',\n icon: <ExclamationCircleFilled />,\n content: '该对话内容将被删除无法恢复。',\n okText: '确认删除',\n okType: 'danger',\n cancelText: '取消',\n okButtonProps: {\n style: { background: '#ff4d4f', borderColor: '#ff4d4f', color: '#fff' },\n },\n onOk() {\n handleDeleteSession(conversation.key);\n },\n onCancel() {\n //\n },\n });\n break;\n }\n },\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 const clearBtnShow = typeof config?.chatProps?.clearBtnShow !== 'undefined'\n ? config.chatProps.clearBtnShow\n : !config?.session?.showSessionList;\n\n return (\n <ConfigProvider theme={{\n token: {\n colorPrimary: appInfo?.appTheme || primaryBlue,\n },\n }}\n >\n <XProvider>\n <XAiContext.Provider value={{\n avatar: <img src={icon} alt=\"智能体头像\" />,\n userAvatar: <img src={userIcon} alt=\"用户头像\" />,\n emptyStateImage: icon,\n emptyStateText: appName,\n footerTips: '内容由AI生成,无法确保真实准确,仅供参考',\n providerId,\n sessionList,\n sessionTotal: sessionPagination.total,\n token,\n messages,\n loading,\n error: null,\n activeKey: currentSessionId,\n clearBtnShow,\n inputShow: config?.chatProps?.inputShow || true,\n isNarrow,\n messageTooltip: ToolTip,\n messageActions: [...defaultActions, {\n key: 'like',\n tooltip: '赞',\n render: (i, msg) => {\n const isLike = msg.isLike === 1;\n if (isLike) {\n return (\n <LikeFilled style={{ color: appInfo?.appTheme || primaryBlue }} />\n );\n }\n return <LikeOutlined />;\n },\n }, {\n key: 'dislike',\n tooltip: '踩',\n render: (_i, msg) => {\n const requestId = msg.raw?.requestId;\n return (\n <DislikeFeedback\n msg={msg}\n activeColor={appInfo?.appTheme || primaryBlue}\n onSubmit={async (formData) => {\n const { result } = await addFeedback({\n ...formData,\n requestId,\n isLike: -1,\n url,\n appNo: config?.appNo,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n message.success('已收到您的反馈,我们会努力做的更好');\n setMessages((prev) => {\n return prev.map((item) => {\n if (item.id === msg.id) {\n return {\n ...item,\n isLike: -1,\n };\n }\n return item;\n });\n });\n return true;\n }\n message.error('反馈失败,请稍后再试');\n return false;\n }}\n />\n );\n },\n }],\n onSend: handleSendMessage,\n onClear: handleCreateNewMessage,\n onNewChat: handleCreateNewMessage,\n onStop: stopChat,\n menu: menuConfig,\n onActiveChange: handleActiveChange,\n onSuggestMessageClick: handleSuggestMessageClick,\n onMessagesActionsCallback: handleActions,\n isInProvider: true,\n }}\n >\n <div\n ref={divRef}\n style={{\n display: 'flex',\n height: '100%',\n position: 'relative',\n }}\n >\n {children}\n </div>\n </XAiContext.Provider>\n </XProvider>\n </ConfigProvider>\n );\n});\n\nexport default XAiProvider;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useImperativeHandle","useState","useRef","useEffect","message","Divider","Modal","Input","ConfigProvider","copy","XProvider","ExclamationCircleFilled","LikeFilled","LikeOutlined","XAiContext","useAgentGenerator","MOBILE_MAX_WIDTH","API_SUCCESS_CODE","userIcon","primaryBlue","DislikeFeedback","addFeedback","defaultActions","jsx","_jsx","jsxs","_jsxs","confirm","XAiProvider","_ref","ref","_config$chatProps","_config$session","_config$chatProps2","_ref$url","url","window","location","origin","token","config","_ref$providerId","providerId","onSuccess","onError","onMessage","children","_ref2","chatProps","_ref2$textSpeed","textSpeed","_useAgentGenerator","appInfo","chat","stopChat","reChat","createNewChat","deleteSession","updateSession","currentSessionId","sessionPagination","sessionList","messages","loading","setCurrentSessionDetail","setMessages","_ref3","appName","icon","getAppInfo","getMessages","getSessions","_useState","_useState2","_slicedToArray","isNarrow","setIsNarrow","divRef","div","current","resizeObserver","ResizeObserver","entries","_iterator","_createForOfIteratorHelper","_step","s","n","done","entry","value","width","contentRect","err","e","f","observe","initialWidth","offsetWidth","disconnect","handleSendMessage","content","handleCreateNewMessage","handleActions","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","index","actionData","_ref5","id","_content$text","text","idx","_actionData$isLike","_ref6","appNo","isLike","_actionData$raw","_yield$addFeedback","result","wrap","_callee$","_context","prev","next","t0","abrupt","success","findIndex","item","length","filter","type","warning","requestId","raw","sent","code","map","_objectSpread","error","stop","_x","_x2","apply","arguments","handleSuggestMessageClick","_item","m","handleActiveChange","key","handleDeleteSession","sessionId","handleUpdateSession","title","menuConfig","conversation","items","label","danger","onClick","menuInfo","domEvent","stopPropagation","inputValue","defaultValue","autoFocus","style","onChange","target","okText","cancelText","okButtonProps","background","borderColor","color","onOk","trim","Promise","reject","onCancel","okType","ToolTip","messageData","finalResult","think","find","actionName","_ref7","extra","cost","tokenCount","display","alignItems","fontSize","flex","paddingRight","undefined","clearBtnShow","session","showSessionList","theme","colorPrimary","appTheme","Provider","avatar","src","alt","userAvatar","emptyStateImage","emptyStateText","footerTips","sessionTotal","total","activeKey","inputShow","messageTooltip","messageActions","concat","_toConsumableArray","tooltip","render","i","msg","_i","_msg$raw","activeColor","onSubmit","_ref8","_callee2","formData","_yield$addFeedback2","_callee2$","_context2","_x3","onSend","onClear","onNewChat","onStop","menu","onActiveChange","onSuggestMessageClick","onMessagesActionsCallback","isInProvider","height","position"],"sources":["../../../../src/components/XAiProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useState, useRef, useEffect } from 'react';\nimport { message, Divider, Modal, Input, ConfigProvider } from 'antd';\nimport copy from 'copy-to-clipboard';\nimport { XProvider } from '@ant-design/x';\nimport type { ConversationsProps } from '@ant-design/x';\nimport { ExclamationCircleFilled, LikeFilled, LikeOutlined } from '@ant-design/icons';\nimport { XAiContext } from '@/context/AiProviderContext';\nimport { XAiProviderProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport useAgentGenerator from '@/hooks/useAgentGenerator';\nimport { MOBILE_MAX_WIDTH, API_SUCCESS_CODE } from '@/constants';\nimport userIcon from '@/assets/user.png';\nimport { primaryBlue } from '@/styles/common';\nimport DislikeFeedback from '../DislikeFeedback';\nimport { addFeedback } from '@/services/api';\nimport { defaultActions } from '../XAiChatbot';\nimport type { SendContent } from '@/types';\n\nconst { confirm } = Modal;\n\nconst XAiProvider = forwardRef<XAiProviderHandle, XAiProviderProps>(({\n url = window.location.origin,\n token,\n config,\n providerId = 'defaultId',\n onSuccess,\n onError,\n onMessage,\n children,\n}, ref) => {\n // 使用 useAgentGenerator Hook 管理消息状态\n\n const { textSpeed = 55 } = config?.chatProps || {};\n\n const {\n appInfo,\n chat,\n stopChat,\n reChat,\n createNewChat,\n deleteSession,\n updateSession,\n currentSessionId,\n sessionPagination,\n sessionList,\n messages,\n loading,\n setCurrentSessionDetail,\n setMessages,\n } = useAgentGenerator({ url, token, config, onError, onSuccess, onMessage, textSpeed });\n\n const { appName, icon } = appInfo || {};\n\n useImperativeHandle(ref, () => ({\n chat,\n stopChat,\n reChat,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n getSessions: () => sessionList,\n setMessages,\n setCurrentSessionDetail,\n }), [appInfo, messages, chat, stopChat, reChat, setMessages, setCurrentSessionDetail]);\n\n const [isNarrow, setIsNarrow] = useState<boolean>(false);\n const divRef = useRef<HTMLDivElement>(null);\n\n // 监听容器宽度变化\n useEffect(() => {\n const div = divRef.current;\n if (!div) return;\n\n // 创建监听器\n const resizeObserver = new ResizeObserver((entries) => {\n // eslint-disable-next-line no-restricted-syntax\n for (const entry of entries) {\n const { width } = entry.contentRect;\n setIsNarrow(width <= MOBILE_MAX_WIDTH);\n }\n });\n\n // 开始监听\n resizeObserver.observe(div);\n\n // 初始化检查\n const initialWidth = div.offsetWidth;\n setIsNarrow(initialWidth <= MOBILE_MAX_WIDTH);\n\n // 清理函数\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n // 发送消息\n const handleSendMessage = (content: SendContent) => {\n chat(content);\n };\n\n // 清空消息\n const handleCreateNewMessage = () => {\n createNewChat();\n };\n\n // 工具栏按钮点击\n const handleActions = async (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 const idx = messages.findIndex((item) => item.id === id);\n if (idx >= 0) {\n // 删除该条消息及建议类消息\n if (messages.length - idx <= 2) {\n setMessages((prev) => prev.filter((item) => item.id !== id && item.type !== 'SuggestionMessage'));\n } else {\n // 非最新消息 只删除该条消息\n setMessages((prev) => prev.filter((item) => item.id !== id));\n }\n message.success('删除成功');\n }\n break;\n }\n case 3: {\n const { appNo } = config || {};\n const isLike = actionData.isLike ?? 0;\n if (isLike !== 0) {\n message.warning('已收到您的反馈,无需重复提交');\n return;\n }\n if (appNo) {\n const { result } = await addFeedback({\n url,\n token,\n appNo,\n requestId: actionData.raw?.requestId,\n isLike: 1,\n });\n if (result?.code === API_SUCCESS_CODE) {\n message.success('感谢您的反馈');\n setMessages((prev) => {\n return prev.map((item) => {\n if (item.id === id) {\n return {\n ...item,\n isLike: 1,\n };\n }\n return item;\n });\n });\n } else {\n message.error('反馈失败,请稍后再试');\n }\n }\n break;\n }\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 // 切换会话\n const handleActiveChange = (key: string) => {\n setCurrentSessionDetail(key);\n };\n\n // 删除会话\n const handleDeleteSession = (sessionId: string) => {\n deleteSession(sessionId);\n };\n\n // 修改会话内容\n const handleUpdateSession = (sessionId: string, title: string) => {\n updateSession(sessionId, title);\n };\n\n // 会话操作菜单\n const menuConfig: ConversationsProps['menu'] = (conversation) => ({\n items: [\n {\n label: '重命名',\n key: 'edit',\n },\n {\n label: '删除',\n key: 'delete',\n danger: true,\n },\n ],\n onClick: (menuInfo) => {\n menuInfo.domEvent.stopPropagation();\n const { key } = menuInfo;\n switch (key) {\n case 'edit': {\n let inputValue = conversation.label as string || '';\n confirm({\n title: '编辑对话名称',\n icon: null,\n content: (\n <Input\n defaultValue={inputValue}\n autoFocus\n style={{ width: '100%' }}\n onChange={(e) => {\n inputValue = e.target.value;\n }}\n />\n ),\n okText: '确认',\n cancelText: '取消',\n okButtonProps: {\n style: { background: '#000', borderColor: '#000', color: '#fff' },\n },\n onOk: () => {\n if (!inputValue.trim()) {\n message.error('对话名称不能为空');\n return Promise.reject();\n }\n handleUpdateSession(conversation.key, inputValue);\n },\n onCancel: () => {\n // 静默处理\n },\n });\n break;\n }\n case 'delete':\n confirm({\n title: '确认删除?',\n icon: <ExclamationCircleFilled />,\n content: '该对话内容将被删除无法恢复。',\n okText: '确认删除',\n okType: 'danger',\n cancelText: '取消',\n okButtonProps: {\n style: { background: '#ff4d4f', borderColor: '#ff4d4f', color: '#fff' },\n },\n onOk() {\n handleDeleteSession(conversation.key);\n },\n onCancel() {\n //\n },\n });\n break;\n }\n },\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 const clearBtnShow = typeof config?.chatProps?.clearBtnShow !== 'undefined'\n ? config.chatProps.clearBtnShow\n : !config?.session?.showSessionList;\n\n return (\n <ConfigProvider theme={{\n token: {\n colorPrimary: appInfo?.appTheme || primaryBlue,\n },\n }}\n >\n <XProvider>\n <XAiContext.Provider value={{\n avatar: <img src={icon} alt=\"智能体头像\" />,\n userAvatar: <img src={userIcon} alt=\"用户头像\" />,\n emptyStateImage: icon,\n emptyStateText: appName,\n footerTips: '内容由AI生成,无法确保真实准确,仅供参考',\n providerId,\n sessionList,\n sessionTotal: sessionPagination.total,\n token,\n messages,\n loading,\n error: null,\n activeKey: currentSessionId,\n clearBtnShow,\n inputShow: config?.chatProps?.inputShow || true,\n isNarrow,\n messageTooltip: ToolTip,\n messageActions: [...defaultActions, {\n key: 'like',\n tooltip: '赞',\n render: (i, msg) => {\n const isLike = msg.isLike === 1;\n if (isLike) {\n return (\n <LikeFilled style={{ color: appInfo?.appTheme || primaryBlue }} />\n );\n }\n return <LikeOutlined />;\n },\n }, {\n key: 'dislike',\n tooltip: '踩',\n render: (_i, msg) => {\n const requestId = msg.raw?.requestId;\n return (\n <DislikeFeedback\n msg={msg}\n activeColor={appInfo?.appTheme || primaryBlue}\n onSubmit={async (formData) => {\n const { result } = await addFeedback({\n ...formData,\n requestId,\n isLike: -1,\n url,\n appNo: config?.appNo,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n message.success('已收到您的反馈,我们会努力做的更好');\n setMessages((prev) => {\n return prev.map((item) => {\n if (item.id === msg.id) {\n return {\n ...item,\n isLike: -1,\n };\n }\n return item;\n });\n });\n return true;\n }\n message.error('反馈失败,请稍后再试');\n return false;\n }}\n />\n );\n },\n }],\n onSend: handleSendMessage,\n onClear: handleCreateNewMessage,\n onNewChat: handleCreateNewMessage,\n onStop: stopChat,\n menu: menuConfig,\n onActiveChange: handleActiveChange,\n onSuggestMessageClick: handleSuggestMessageClick,\n onMessagesActionsCallback: handleActions,\n isInProvider: true,\n }}\n >\n <div\n ref={divRef}\n style={{\n display: 'flex',\n height: '100%',\n position: 'relative',\n }}\n >\n {children}\n </div>\n </XAiContext.Provider>\n </XProvider>\n </ConfigProvider>\n );\n});\n\nexport default XAiProvider;\n"],"mappings":"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"}
|
|
@@ -38,11 +38,12 @@ var BasicUsageStory = function BasicUsageStory() {
|
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
// 模拟快捷短语点击
|
|
41
|
-
var handleSendMessage = function handleSendMessage(
|
|
41
|
+
var handleSendMessage = function handleSendMessage(obj) {
|
|
42
42
|
setLoading(true);
|
|
43
|
-
console.info(
|
|
43
|
+
console.info(obj);
|
|
44
44
|
setTimeout(function () {
|
|
45
45
|
setContent('');
|
|
46
|
+
setFiles([]);
|
|
46
47
|
setLoading(false);
|
|
47
48
|
}, 2000);
|
|
48
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","XAiSender","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","BasicUsageStory","_useState","_useState2","_slicedToArray","files","setFiles","_useState3","_useState4","content","setContent","_useState5","_useState6","loading","setLoading","handleClear","console","info","handleChange","text","handleSendMessage","
|
|
1
|
+
{"version":3,"names":["React","useState","XAiSender","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","BasicUsageStory","_useState","_useState2","_slicedToArray","files","setFiles","_useState3","_useState4","content","setContent","_useState5","_useState6","loading","setLoading","handleClear","console","info","handleChange","text","handleSendMessage","obj","setTimeout","style","width","border","padding","children","value","enableUpload","onChangeFiles","uploadRequest","_ref","file","onProgress","onSuccess","percent","onClear","onChange","onSubmit","onStop","footerTips","基础用法","render","args"],"sources":["../../../../src/components/XAiSender/XAiSender.stories.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport type { Attachment } from '@ant-design/x/es/attachments';\nimport XAiSender from '.';\n\nconst meta: Meta<typeof XAiSender> = {\n title: 'AI组件/XAiSender 输入框',\n component: XAiSender,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {},\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 基础用法\nconst BasicUsageStory = () => {\n const [files, setFiles] = useState<Attachment[]>([]);\n const [content, setContent] = useState('');\n const [loading, setLoading] = useState(false);\n\n // 模拟清空数据\n const handleClear = () => {\n console.info('clear');\n };\n\n // 模拟输入\n const handleChange = (text: string) => {\n setContent(text);\n };\n\n // 模拟快捷短语点击\n const handleSendMessage = (obj: any) => {\n setLoading(true);\n console.info(obj);\n setTimeout(() => {\n setContent('');\n setFiles([]);\n setLoading(false);\n }, 2000);\n };\n\n return (\n <div style={{ width: 440, border: '1px solid #eee', padding: 20 }}>\n <XAiSender\n loading={loading}\n value={content}\n enableUpload\n files={files}\n onChangeFiles={setFiles}\n uploadRequest={({ file, onProgress, onSuccess }) => {\n console.info(file);\n onProgress?.({\n percent: 50,\n });\n setTimeout(() => {\n onSuccess?.({});\n }, 1000);\n }}\n onClear={handleClear}\n onChange={handleChange}\n onSubmit={handleSendMessage}\n onStop={handleClear}\n footerTips=\"内容由AI生成,无法确保真实准确,仅供参考\"\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {},\n};\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ var _excluded = ["footerTips", "clearBtnShow", "value", "onChange", "onClear", "
|
|
|
5
5
|
// 文件: components/XAiSender/index.tsx
|
|
6
6
|
import React, { useRef, useState } from 'react';
|
|
7
7
|
import { Attachments, Sender } from '@ant-design/x';
|
|
8
|
-
import { Button, Popover, Space, Tooltip } from 'antd';
|
|
8
|
+
import { Button, message, Popover, Space, Tooltip } from 'antd';
|
|
9
9
|
import { ArrowUpOutlined, ClearOutlined, PlusCircleOutlined } from '@ant-design/icons';
|
|
10
10
|
import clsx from 'clsx';
|
|
11
11
|
import { useChatbotContext } from "../../hooks/useProviderContext";
|
|
@@ -43,12 +43,24 @@ var XAiSender = function XAiSender(props) {
|
|
|
43
43
|
clearPopoverVisible = _useState2[0],
|
|
44
44
|
setClearPopoverVisible = _useState2[1]; // 气泡卡片显隐藏
|
|
45
45
|
var styles = useStyles();
|
|
46
|
+
var uploading = files === null || files === void 0 ? void 0 : files.some(function (file) {
|
|
47
|
+
return file.status === 'uploading';
|
|
48
|
+
});
|
|
46
49
|
|
|
47
50
|
// 触发发送
|
|
48
51
|
var handleSend = function handleSend() {
|
|
49
|
-
if (
|
|
52
|
+
if (uploading) {
|
|
53
|
+
message.warning('文件正在上传中');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
var hasText = value && value.trim();
|
|
57
|
+
var hasFiles = files === null || files === void 0 ? void 0 : files.length;
|
|
58
|
+
if (hasText || hasFiles) {
|
|
50
59
|
// 直接使用合并后的 onSend,自动处理 Provider 和独立模式
|
|
51
|
-
onSubmit === null || onSubmit === void 0 || onSubmit(
|
|
60
|
+
onSubmit === null || onSubmit === void 0 || onSubmit({
|
|
61
|
+
text: value,
|
|
62
|
+
files: files
|
|
63
|
+
});
|
|
52
64
|
}
|
|
53
65
|
};
|
|
54
66
|
|
|
@@ -165,7 +177,7 @@ var XAiSender = function XAiSender(props) {
|
|
|
165
177
|
value: value,
|
|
166
178
|
className: styles.sendWrapper,
|
|
167
179
|
placeholder: "\u7EE7\u7EED\u5BF9\u8BDD...",
|
|
168
|
-
disabled: disabled,
|
|
180
|
+
disabled: disabled || uploading,
|
|
169
181
|
loading: loading,
|
|
170
182
|
ref: senderRef,
|
|
171
183
|
header: enableUpload && /*#__PURE__*/_jsx(Sender.Header, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","useState","Attachments","Sender","Button","Popover","Space","Tooltip","ArrowUpOutlined","ClearOutlined","PlusCircleOutlined","clsx","useChatbotContext","useStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","XAiSender","props","_useChatbotContext","mergedProps","_ref","footerTips","clearBtnShow","value","onChange","onClear","onStop","onSubmit","files","enableUpload","onChangeFiles","uploadRequest","_ref$loading","loading","propLoading","disabled","resetProps","_objectWithoutProperties","_excluded","senderRef","attachmentsRef","_useState","_useState2","_slicedToArray","clearPopoverVisible","setClearPopoverVisible","styles","handleSend","trim","fileInputRef","handleClear","cancelClear","confirmClear","clearConfirmContent","className","p","children","mb","mt","popoverFooter","size","onClick","type","danger","uploadButton","flexCenterGap2","placement","title","color","variant","shape","icon","style","fontSize","current","_fileInputRef$current","click","ref","multiple","e","fileList","target","length","i","_attachmentsRef$curre","file","upload","display","accept","chatFooter","flex","gap","content","trigger","open","onOpenChange","clearBtn","border","borderRadius","height","width","text","_objectSpread","sendWrapper","placeholder","header","Header","closable","forceRender","padding","customRequest","items","imageProps","preview","mask","_ref2","getDropContainer","_senderRef$current","nativeElement","actions","_","info","_info$components","components","SendButton","LoadingButton","divider","stopButton","sendButton","v","onCancel"],"sources":["../../../../src/components/XAiSender/index.tsx"],"sourcesContent":["// 文件: components/XAiSender/index.tsx\nimport React, {\n useRef,\n useState,\n} from 'react';\nimport {\n Attachments,\n Sender,\n} from '@ant-design/x';\nimport {\n Button,\n GetRef,\n Popover,\n Space,\n Tooltip,\n} from 'antd';\nimport {\n ArrowUpOutlined,\n ClearOutlined,\n PlusCircleOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport { AttachmentsRef } from '@ant-design/x/es/attachments';\nimport {\n XAiSenderProps,\n} from '@/types';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles } from './styles';\n\nconst XAiSender: React.FC<XAiSenderProps> = (props) => {\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n const {\n footerTips,\n clearBtnShow,\n value,\n onChange,\n onClear,\n onStop,\n onSubmit,\n files,\n enableUpload,\n onChangeFiles,\n uploadRequest,\n loading: propLoading = false,\n disabled,\n ...resetProps\n } = mergedProps as XAiSenderProps;\n const senderRef = useRef<GetRef<typeof Sender>>(null);\n const attachmentsRef = useRef<AttachmentsRef>(null);\n\n // 如果在 Provider 中,使用 Provider 的状态\n const loading = mergedProps.loading || propLoading;\n const [clearPopoverVisible, setClearPopoverVisible] = useState(false); // 气泡卡片显隐藏\n const styles = useStyles();\n\n // 触发发送\n const handleSend = () => {\n if (value && value.trim()) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSubmit?.('text', value);\n }\n };\n\n // 文件上传按钮引用\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // 点击清除按钮\n const handleClear = () => {\n setClearPopoverVisible(true);\n };\n\n // 取消清除\n const cancelClear = () => {\n setClearPopoverVisible(false);\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n setClearPopoverVisible(false);\n };\n\n // 清空按钮提示文案\n const clearConfirmContent = (\n <div className={styles.p('2px')}>\n <p className={clsx(styles.mb(14), styles.mt(0))}>确认清除所有聊天记录并重置会话!</p>\n <div className={styles.popoverFooter}>\n <Button size=\"small\" onClick={cancelClear}>\n 取消\n </Button>\n <Button size=\"small\" type=\"primary\" danger onClick={confirmClear}>\n 确认\n </Button>\n </div>\n </div>\n );\n\n // 自定义上传按钮\n const uploadButton = (\n <div className={styles.flexCenterGap2}>\n <Tooltip\n placement=\"top\"\n title=\"支持图片、文档等上传\"\n >\n <Button\n color=\"default\"\n variant=\"text\"\n shape=\"circle\"\n size=\"small\"\n icon={<PlusCircleOutlined style={{ fontSize: 20, color: '#949494' }} />}\n onClick={() => {\n if (fileInputRef.current) {\n fileInputRef.current?.click();\n }\n }}\n />\n <input\n type=\"file\"\n ref={fileInputRef}\n multiple\n onChange={(e) => {\n const fileList = e.target.files || [];\n if (!fileList.length) return;\n for (let i = 0; i < fileList.length; i++) {\n const file = fileList[i];\n attachmentsRef.current?.upload(file);\n }\n e.target.value = '';\n }}\n style={{ display: 'none' }}\n accept=\"*/*\"\n />\n </Tooltip>\n </div>\n );\n\n return (\n <>\n <div className={styles.chatFooter}>\n <div className={clsx(styles.flex, styles.gap(8))}>\n {/* 清空按钮 */}\n {clearBtnShow && (\n <Popover\n content={clearConfirmContent}\n title=\"确认清空对话\"\n trigger=\"click\"\n open={clearPopoverVisible}\n onOpenChange={setClearPopoverVisible}\n >\n <div\n className={styles.clearBtn}\n style={{ border: '1px solid #E4E7EC', borderRadius: '50%', height: '35px', width: '35px' }}\n onClick={handleClear}\n >\n <ClearOutlined className={styles.text(16)} />\n </div>\n </Popover>\n )}\n {/* 普通文本输入 */}\n <Sender\n {...resetProps}\n value={value}\n className={styles.sendWrapper}\n placeholder=\"继续对话...\"\n disabled={disabled}\n loading={loading}\n ref={senderRef}\n header={enableUpload && (\n <Sender.Header\n closable={false}\n forceRender\n open={!!files?.length}\n styles={{\n content: { padding: 0 },\n }}\n >\n <Attachments\n ref={attachmentsRef}\n customRequest={uploadRequest}\n multiple\n items={files}\n imageProps={{\n preview: {\n mask: true,\n },\n }}\n onChange={({ fileList }) => {\n onChangeFiles?.(fileList);\n }}\n getDropContainer={() => senderRef.current?.nativeElement}\n />\n </Sender.Header>\n )}\n actions={(_, info) => {\n const { SendButton, LoadingButton } = info.components;\n return (\n <Space size=\"small\">\n {enableUpload && (\n <>\n {uploadButton}\n <div className={styles.divider} />\n </>\n )}\n {loading\n ? (\n <LoadingButton onClick={() => onStop?.()} className={styles.stopButton} />\n )\n : (\n <SendButton\n className={styles.sendButton}\n type=\"primary\"\n icon={<ArrowUpOutlined className={styles.text(20)} />}\n disabled={disabled}\n />\n )}\n </Space>\n );\n }}\n onChange={(v) => {\n onChange?.(v);\n }}\n onSubmit={handleSend}\n onCancel={() => {\n onStop?.();\n }}\n />\n </div>\n </div>\n { footerTips && <div className={styles.footerTips}>{footerTips}</div>}\n </>\n );\n};\n\nexport default XAiSender;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useRef","useState","Attachments","Sender","Button","message","Popover","Space","Tooltip","ArrowUpOutlined","ClearOutlined","PlusCircleOutlined","clsx","useChatbotContext","useStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","XAiSender","props","_useChatbotContext","mergedProps","_ref","footerTips","clearBtnShow","value","onChange","onClear","onStop","onSubmit","files","enableUpload","onChangeFiles","uploadRequest","_ref$loading","loading","propLoading","disabled","resetProps","_objectWithoutProperties","_excluded","senderRef","attachmentsRef","_useState","_useState2","_slicedToArray","clearPopoverVisible","setClearPopoverVisible","styles","uploading","some","file","status","handleSend","warning","hasText","trim","hasFiles","length","text","fileInputRef","handleClear","cancelClear","confirmClear","clearConfirmContent","className","p","children","mb","mt","popoverFooter","size","onClick","type","danger","uploadButton","flexCenterGap2","placement","title","color","variant","shape","icon","style","fontSize","current","_fileInputRef$current","click","ref","multiple","e","fileList","target","i","_attachmentsRef$curre","upload","display","accept","chatFooter","flex","gap","content","trigger","open","onOpenChange","clearBtn","border","borderRadius","height","width","_objectSpread","sendWrapper","placeholder","header","Header","closable","forceRender","padding","customRequest","items","imageProps","preview","mask","_ref2","getDropContainer","_senderRef$current","nativeElement","actions","_","info","_info$components","components","SendButton","LoadingButton","divider","stopButton","sendButton","v","onCancel"],"sources":["../../../../src/components/XAiSender/index.tsx"],"sourcesContent":["// 文件: components/XAiSender/index.tsx\nimport React, {\n useRef,\n useState,\n} from 'react';\nimport {\n Attachments,\n Sender,\n} from '@ant-design/x';\nimport {\n Button,\n GetRef,\n message,\n Popover,\n Space,\n Tooltip,\n} from 'antd';\nimport {\n ArrowUpOutlined,\n ClearOutlined,\n PlusCircleOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport { AttachmentsRef } from '@ant-design/x/es/attachments';\nimport {\n XAiSenderProps,\n} from '@/types';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles } from './styles';\n\nconst XAiSender: React.FC<XAiSenderProps> = (props) => {\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n const {\n footerTips,\n clearBtnShow,\n value,\n onChange,\n onClear,\n onStop,\n onSubmit,\n files,\n enableUpload,\n onChangeFiles,\n uploadRequest,\n loading: propLoading = false,\n disabled,\n ...resetProps\n } = mergedProps as XAiSenderProps;\n const senderRef = useRef<GetRef<typeof Sender>>(null);\n const attachmentsRef = useRef<AttachmentsRef>(null);\n\n // 如果在 Provider 中,使用 Provider 的状态\n const loading = mergedProps.loading || propLoading;\n const [clearPopoverVisible, setClearPopoverVisible] = useState(false); // 气泡卡片显隐藏\n const styles = useStyles();\n const uploading = files?.some((file) => file.status === 'uploading');\n\n // 触发发送\n const handleSend = () => {\n if (uploading) {\n message.warning('文件正在上传中');\n return;\n }\n const hasText = value && value.trim();\n const hasFiles = files?.length;\n if (hasText || hasFiles) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSubmit?.({\n text: value,\n files,\n });\n }\n };\n\n // 文件上传按钮引用\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // 点击清除按钮\n const handleClear = () => {\n setClearPopoverVisible(true);\n };\n\n // 取消清除\n const cancelClear = () => {\n setClearPopoverVisible(false);\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n setClearPopoverVisible(false);\n };\n\n // 清空按钮提示文案\n const clearConfirmContent = (\n <div className={styles.p('2px')}>\n <p className={clsx(styles.mb(14), styles.mt(0))}>确认清除所有聊天记录并重置会话!</p>\n <div className={styles.popoverFooter}>\n <Button size=\"small\" onClick={cancelClear}>\n 取消\n </Button>\n <Button size=\"small\" type=\"primary\" danger onClick={confirmClear}>\n 确认\n </Button>\n </div>\n </div>\n );\n\n // 自定义上传按钮\n const uploadButton = (\n <div className={styles.flexCenterGap2}>\n <Tooltip\n placement=\"top\"\n title=\"支持图片、文档等上传\"\n >\n <Button\n color=\"default\"\n variant=\"text\"\n shape=\"circle\"\n size=\"small\"\n icon={<PlusCircleOutlined style={{ fontSize: 20, color: '#949494' }} />}\n onClick={() => {\n if (fileInputRef.current) {\n fileInputRef.current?.click();\n }\n }}\n />\n <input\n type=\"file\"\n ref={fileInputRef}\n multiple\n onChange={(e) => {\n const fileList = e.target.files || [];\n if (!fileList.length) return;\n for (let i = 0; i < fileList.length; i++) {\n const file = fileList[i];\n attachmentsRef.current?.upload(file);\n }\n e.target.value = '';\n }}\n style={{ display: 'none' }}\n accept=\"*/*\"\n />\n </Tooltip>\n </div>\n );\n\n return (\n <>\n <div className={styles.chatFooter}>\n <div className={clsx(styles.flex, styles.gap(8))}>\n {/* 清空按钮 */}\n {clearBtnShow && (\n <Popover\n content={clearConfirmContent}\n title=\"确认清空对话\"\n trigger=\"click\"\n open={clearPopoverVisible}\n onOpenChange={setClearPopoverVisible}\n >\n <div\n className={styles.clearBtn}\n style={{ border: '1px solid #E4E7EC', borderRadius: '50%', height: '35px', width: '35px' }}\n onClick={handleClear}\n >\n <ClearOutlined className={styles.text(16)} />\n </div>\n </Popover>\n )}\n {/* 普通文本输入 */}\n <Sender\n {...resetProps}\n value={value}\n className={styles.sendWrapper}\n placeholder=\"继续对话...\"\n disabled={disabled || uploading}\n loading={loading}\n ref={senderRef}\n header={enableUpload && (\n <Sender.Header\n closable={false}\n forceRender\n open={!!files?.length}\n styles={{\n content: { padding: 0 },\n }}\n >\n <Attachments\n ref={attachmentsRef}\n customRequest={uploadRequest}\n multiple\n items={files}\n imageProps={{\n preview: {\n mask: true,\n },\n }}\n onChange={({ fileList }) => {\n onChangeFiles?.(fileList);\n }}\n getDropContainer={() => senderRef.current?.nativeElement}\n />\n </Sender.Header>\n )}\n actions={(_, info) => {\n const { SendButton, LoadingButton } = info.components;\n return (\n <Space size=\"small\">\n {enableUpload && (\n <>\n {uploadButton}\n <div className={styles.divider} />\n </>\n )}\n {loading\n ? (\n <LoadingButton onClick={() => onStop?.()} className={styles.stopButton} />\n )\n : (\n <SendButton\n className={styles.sendButton}\n type=\"primary\"\n icon={<ArrowUpOutlined className={styles.text(20)} />}\n disabled={disabled}\n />\n )}\n </Space>\n );\n }}\n onChange={(v) => {\n onChange?.(v);\n }}\n onSubmit={handleSend}\n onCancel={() => {\n onStop?.();\n }}\n />\n </div>\n </div>\n { footerTips && <div className={styles.footerTips}>{footerTips}</div>}\n </>\n );\n};\n\nexport default XAiSender;\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Messages } from "../types/XAiMessage";
|
|
3
|
-
import { Error, Success,
|
|
3
|
+
import { type Error, type SendContent, type Success, type SessionData } from "../types";
|
|
4
4
|
export type ContentType = 'TEXT' | 'IMAGE' | 'FILE' | 'JSON';
|
|
5
5
|
export interface ImageUrl {
|
|
6
6
|
url: string;
|
|
@@ -71,7 +71,7 @@ declare const useAgentGenerator: (params: UseAgentGeneratorProps) => {
|
|
|
71
71
|
messages: Messages[];
|
|
72
72
|
loading: boolean;
|
|
73
73
|
content: any;
|
|
74
|
-
sessionList:
|
|
74
|
+
sessionList: SessionData[];
|
|
75
75
|
currentSessionId: string;
|
|
76
76
|
sessionPagination: {
|
|
77
77
|
total: number;
|
|
@@ -80,7 +80,7 @@ declare const useAgentGenerator: (params: UseAgentGeneratorProps) => {
|
|
|
80
80
|
};
|
|
81
81
|
initAppConversations: (fetchDetail?: boolean) => Promise<void>;
|
|
82
82
|
reChat: () => void;
|
|
83
|
-
chat:
|
|
83
|
+
chat: (content: SendContent, extra?: any, insert?: boolean) => Promise<void>;
|
|
84
84
|
createNewChat: () => void;
|
|
85
85
|
setCurrentSessionId: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
86
86
|
setCurrentSessionDetail: (sessionId: string) => Promise<void>;
|
|
@@ -8,6 +8,7 @@ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
|
8
8
|
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
9
9
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
10
10
|
var _excluded = ["url", "token", "config", "onError", "onMessage", "onSuccess", "textSpeed"];
|
|
11
|
+
/* eslint-disable class-methods-use-this */
|
|
11
12
|
import { useState, useEffect, useMemo, useCallback, useRef } from 'react';
|
|
12
13
|
import { v4 as uuidV4 } from 'uuid';
|
|
13
14
|
import { useEventStreamRequest } from "./useEventStreamRequest";
|
|
@@ -768,7 +769,7 @@ var useAgentGenerator = function useAgentGenerator(params) {
|
|
|
768
769
|
}(), []);
|
|
769
770
|
|
|
770
771
|
// 简单对话
|
|
771
|
-
var chat = /*#__PURE__*/function () {
|
|
772
|
+
var chat = useCallback( /*#__PURE__*/function () {
|
|
772
773
|
var _ref18 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(content, extra) {
|
|
773
774
|
var insert,
|
|
774
775
|
newMessage,
|
|
@@ -786,9 +787,7 @@ var useAgentGenerator = function useAgentGenerator(params) {
|
|
|
786
787
|
role: MessageRole.user,
|
|
787
788
|
status: MessageStatus.done,
|
|
788
789
|
extra: extra,
|
|
789
|
-
content:
|
|
790
|
-
text: content
|
|
791
|
-
}
|
|
790
|
+
content: content
|
|
792
791
|
};
|
|
793
792
|
setMessages(function (prev) {
|
|
794
793
|
var newMessages = prev.filter(function (item) {
|
|
@@ -800,7 +799,7 @@ var useAgentGenerator = function useAgentGenerator(params) {
|
|
|
800
799
|
}
|
|
801
800
|
requestBody = {
|
|
802
801
|
appParams: {
|
|
803
|
-
inputs_msg: content
|
|
802
|
+
inputs_msg: content.text
|
|
804
803
|
},
|
|
805
804
|
sessionId: currentSessionId
|
|
806
805
|
};
|
|
@@ -813,10 +812,10 @@ var useAgentGenerator = function useAgentGenerator(params) {
|
|
|
813
812
|
}
|
|
814
813
|
}, _callee3);
|
|
815
814
|
}));
|
|
816
|
-
return function
|
|
815
|
+
return function (_x3, _x4) {
|
|
817
816
|
return _ref18.apply(this, arguments);
|
|
818
817
|
};
|
|
819
|
-
}();
|
|
818
|
+
}(), [appNo, currentSessionId, start, token, url]);
|
|
820
819
|
|
|
821
820
|
// 重新生成方法
|
|
822
821
|
var reChat = useCallback(function () {
|
|
@@ -846,7 +845,7 @@ var useAgentGenerator = function useAgentGenerator(params) {
|
|
|
846
845
|
});
|
|
847
846
|
if (lastUserMsg !== null && lastUserMsg !== void 0 && (_lastUserMsg$content = lastUserMsg.content) !== null && _lastUserMsg$content !== void 0 && _lastUserMsg$content.text) {
|
|
848
847
|
setTimeout(function () {
|
|
849
|
-
chat(lastUserMsg.content
|
|
848
|
+
chat(lastUserMsg.content, lastUserMsg.extra, false);
|
|
850
849
|
}, 0);
|
|
851
850
|
}
|
|
852
851
|
return newMessages;
|