nexus-chat-ui 0.0.1 → 0.0.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.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require(`@douyinfe/semi-ui/react19-adapter`),require(`@chatscope/chat-ui-kit-styles/dist/default/styles.min.css`),require(`@tdesign-react/chat/es/style/index.js`);let c=require(`react`),l=require(`@chatscope/chat-ui-kit-react`),u=require(`@douyinfe/semi-ui`),d=require(`axios`);d=s(d,1);let f=require(`zustand`),p=require(`clsx`),m=require(`tailwind-merge`),h=require(`react/jsx-runtime`),g=require(`@tdesign-react/chat`),_=require(`dayjs`);_=s(_,1);let v=require(`tdesign-mobile-react`),y=require(`tdesign-icons-react`),b=require(`react-responsive`);var x=function(e){return e[e.SUCCESS=200]=`SUCCESS`,e[e.ERROR=500]=`ERROR`,e[e.OVERDUE=401]=`OVERDUE`,e[e.TIMEOUT=3e4]=`TIMEOUT`,e.TYPE=`success`,e}({}),S=(0,f.create)(e=>({wsAddress:void 0,httpUrl:void 0,token:``,connectionStatus:`idle`,setWsAddress:t=>e({wsAddress:t}),setHttpUrl:t=>e({httpUrl:t}),setToken:t=>e({token:t}),setConnectionStatus:t=>e({connectionStatus:t})})),C=e=>{switch(e){case 400:u.Toast.error(`请求失败!请您稍后重试`);break;case 401:u.Toast.error(`登录失效!请您重新登录`);break;case 403:u.Toast.error(`当前账号无权限访问!`);break;case 404:u.Toast.error(`你所访问的资源不存在!`);break;case 405:u.Toast.error(`请求方式错误!请您稍后重试`);break;case 408:u.Toast.error(`请求超时!请您稍后重试`);break;case 500:u.Toast.error(`服务异常!`);break;case 502:u.Toast.error(`网关错误!`);break;case 503:u.Toast.error(`服务不可用!`);break;case 504:u.Toast.error(`网关超时!`);break;default:u.Toast.error(`请求失败!`)}},w={baseURL:``,timeout:x.TIMEOUT,withCredentials:!1},T=new class{service;constructor(e){this.service=d.default.create(e),this.service.interceptors.request.use(e=>{let{httpUrl:t,token:n}=S.getState();return t&&(e.baseURL=t),e.headers&&typeof e.headers.set==`function`&&n&&e.headers.set(`Authorization`,`Bearer ${n}`),e},e=>Promise.reject(e)),this.service.interceptors.response.use(e=>{let{data:t}=e;return t.code&&t.code!=x.SUCCESS?Promise.reject(t):t},async e=>{let{response:t}=e;return console.log(t),e.message.indexOf(`timeout`)!==-1&&u.Toast.error(`请求超时!请您稍后重试`),e.message.indexOf(`Network Error`)!==-1&&u.Toast.error(`网络错误!请您稍后重试`),t&&C(t.status),Promise.reject(e)})}get(e,t,n={}){return this.service.get(e,{params:t,...n})}post(e,t,n={}){return this.service.post(e,t,n)}put(e,t,n={}){return this.service.put(e,t,n)}delete(e,t,n={}){return this.service.delete(e,{params:t,...n})}download(e,t,n={}){return this.service.post(e,t,{...n,responseType:`blob`})}}(w),E=()=>T.get(`/api/v1/conversations`),D=e=>T.post(`/api/v1/conversations`,{userId:e}),O=(e,t)=>T.get(`/api/v1/messages`,{roomId:e,roomType:t}),k=()=>T.get(`/api/v1/channels`),A=(e,t)=>T.post(`/api/v1/channels`,{name:e,description:t,type:`PRIVATE`,e2eeEnabled:!1}),j=(e,t)=>T.post(`/api/v1/channels/${e}/members`,{userId:t});function M(...e){return(0,m.twMerge)((0,p.clsx)(e))}var N=({open:e,title:t,description:n,headerClassName:r,titleClassName:i,descriptionClassName:a,children:o,centered:s=!0,destroyOnHidden:c=!0,footer:l=null,width:d=520,...f})=>{let p=t||n?(0,h.jsxs)(`div`,{className:M(`pr-[32px]`,r),children:[t?(0,h.jsx)(`div`,{className:M(`text-[20px] font-semibold leading-[28px] text-primary`,i),children:t}):null,n?(0,h.jsx)(`div`,{className:M(t?`mt-[8px]`:``,`text-[14px] leading-[22px] text-[#909090]`,a),children:n}):null]}):null;return(0,h.jsx)(u.Modal,{centered:s,visible:e,keepDOM:!c,footer:l,maskClosable:!0,title:p,width:d,...f,children:o})},P=e=>{let t=e.senderId;if(t)return{userId:t}},F=e=>{let t={};return e.forEach(e=>{e.userId&&(t[e.userId]={...t[e.userId],...e})}),Object.values(t)},I=e=>e.reduce((e,t)=>(e[t.userId]=t,e),{}),L=(e,t)=>{let n=I(e);return t.forEach(e=>{e.userId&&(n[e.userId]={...n[e.userId],...e})}),Object.values(n)},R=(0,f.create)(e=>({currentUser:void 0,allUserList:[],usersById:{},setAllUserList:t=>e(e=>{let n=F(t),r=e.currentUser?.userId?L(n,[e.currentUser]):n;return{allUserList:r,usersById:I(r)}}),setCurrentUser:t=>e(e=>{if(!t?.userId)return{currentUser:void 0};let n=L(e.allUserList,[t]);return{currentUser:t,allUserList:n,usersById:I(n)}}),upsertUsersFromMessages:t=>e(e=>{let n=t.map(P).filter(e=>!!e);if(n.length===0)return{};let r=L(e.allUserList,n);return{allUserList:r,usersById:I(r)}})})),z=(e,t)=>{let n=new Set(e.map(e=>e._id).filter(Boolean)),r=t.filter(e=>e._id?n.has(e._id)?!1:(n.add(e._id),!0):!0);return r.length>0?[...e,...r]:e},B=(0,f.create)(e=>({conversations:[],channels:[],tabbarValue:`conversations`,activeConversationId:void 0,isConversationsLoading:!1,isMessagesLoading:!1,setConversations:t=>e(e=>({conversations:t.map(t=>{let n=e.conversations.find(e=>e._id===t._id);return n?{...t,hasReq:n.hasReq,unreadDot:n.unreadDot,msg:n.msg}:{...t,hasReq:t.hasReq??!1,unreadDot:t.unreadDot??!1}}),activeConversationId:t.some(t=>t._id===e.activeConversationId)?e.activeConversationId:void 0})),setChannels:t=>e(e=>({channels:t.map(t=>{let n=e.channels.find(e=>e._id===t._id);return n?{...t,hasReq:n.hasReq,unreadDot:n.unreadDot,msg:n.msg}:{...t,hasReq:t.hasReq??!1,unreadDot:t.unreadDot??!1}})})),setTabbarValue:t=>e({tabbarValue:t}),prependConversation:t=>e(e=>({conversations:[{...t,hasReq:t.hasReq??!1,unreadDot:t.unreadDot??!1},...e.conversations.filter(e=>e._id!==t._id)]})),prependChannel:t=>e(e=>({channels:[{...t,hasReq:t.hasReq??!1,unreadDot:t.unreadDot??!1},...e.channels.filter(e=>e._id!==t._id)]})),setConversationsLoading:t=>e({isConversationsLoading:t}),setMessagesLoading:t=>e({isMessagesLoading:t}),setConversationMessages:(t,n)=>e(e=>{let r=e.conversations.find(e=>e._id===t),i=e.channels.find(e=>e._id===t);if(r)return{conversations:e.conversations.map(e=>e._id===t?{...e,hasReq:!0,unreadDot:!1,msg:z(n,r.msg)}:e)};if(i)return{channels:e.channels.map(e=>e._id===t?{...e,hasReq:!0,unreadDot:!1,msg:z(n,i.msg),updatedAt:new Date().toISOString()}:e)};let a=new Date().toISOString();return(n[0]?.roomType===`CHANNEL`?`CHANNEL`:`CONVERSATION`)==`CHANNEL`?{channels:[...e.channels,{_id:t,members:[],name:``,type:`CHANNEL`,createdBy:``,e2eeEnabled:!1,senderKeyVersion:0,createdAt:a,updatedAt:a,hasReq:!0,unreadDot:!1,roomType:`CHANNEL`,msg:n}],activeConversationId:e.activeConversationId??t}:{conversations:[...e.conversations,{_id:t,participants:[],createdAt:a,updatedAt:a,hasReq:!0,unreadDot:!1,roomType:`CONVERSATION`,msg:n}],activeConversationId:e.activeConversationId??t}}),setActiveConversationId:t=>e({activeConversationId:t}),ensureConversation:(t,n)=>e(e=>{let r=e.conversations.find(e=>e._id===t),i=e.channels.find(e=>e._id===t);if(r)return{conversations:e.conversations.map(e=>e._id===t?{...e,...n,hasReq:n?.hasReq??e.hasReq,unreadDot:n?.unreadDot??e.unreadDot,participants:n?.participants??e.participants,updatedAt:n?.updatedAt??e.updatedAt}:e)};if(i)return{channels:e.channels.map(e=>e._id===t?{...e,...n,roomType:`CHANNEL`,hasReq:n?.hasReq??e.hasReq,unreadDot:n?.unreadDot??e.unreadDot,members:n?.members??e.members,name:n?.name??e.name,type:n?.type??e.type,createdBy:n?.createdBy??e.createdBy,e2eeEnabled:n?.e2eeEnabled??e.e2eeEnabled,senderKeyVersion:n?.senderKeyVersion??e.senderKeyVersion,updatedAt:n?.updatedAt??e.updatedAt}:e)};let a=new Date().toISOString();return(n?.roomType??`CONVERSATION`)===`CHANNEL`?{channels:[...e.channels,{_id:t,members:n?.members??[],name:n?.name??``,type:n?.type??`CHANNEL`,createdBy:n?.createdBy??``,e2eeEnabled:n?.e2eeEnabled??!1,senderKeyVersion:n?.senderKeyVersion??0,createdAt:n?.createdAt??a,updatedAt:n?.updatedAt??a,hasReq:n?.hasReq??!1,unreadDot:n?.unreadDot??!1,roomType:`CHANNEL`,msg:[]}],activeConversationId:e.activeConversationId??t}:{conversations:[...e.conversations,{_id:t,participants:n?.participants??[],createdAt:n?.createdAt??a,updatedAt:n?.updatedAt??a,hasReq:n?.hasReq??!1,unreadDot:n?.unreadDot??!1,roomType:`CONVERSATION`,msg:[]}],activeConversationId:e.activeConversationId??t}}),appendMessages:(t,n)=>e(e=>{let r=e.conversations.find(e=>e._id===t),i=e.channels.find(e=>e._id===t),a=n[0]?.roomType===`CHANNEL`?`CHANNEL`:`CONVERSATION`;if(r)return{conversations:e.conversations.map(e=>e._id===t?{...e,hasReq:e.hasReq??!1,unreadDot:e.unreadDot??!1,msg:z(e.msg,n),updatedAt:new Date().toISOString()}:e)};if(i)return{channels:e.channels.map(e=>e._id===t?{...e,hasReq:e.hasReq??!1,unreadDot:e.unreadDot??!1,msg:z(e.msg,n),updatedAt:new Date().toISOString()}:e)};if(a===`CHANNEL`){let r=new Date().toISOString();return{channels:[...e.channels,{_id:t,members:[],name:``,type:`CHANNEL`,createdBy:``,e2eeEnabled:!1,senderKeyVersion:0,createdAt:r,updatedAt:r,hasReq:!1,unreadDot:!1,roomType:`CHANNEL`,msg:n}],activeConversationId:e.activeConversationId??t}}return{conversations:[...e.conversations,{_id:t,participants:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),hasReq:!1,unreadDot:!1,roomType:`CONVERSATION`,msg:n}],activeConversationId:e.activeConversationId??t}}),setConversationUnreadDot:(t,n,r)=>e(e=>{let i=e.conversations.find(e=>e._id===t),a=e.channels.find(e=>e._id===t);if(i)return{conversations:e.conversations.map(e=>e._id===t?{...e,unreadDot:n}:e)};if(a)return{channels:e.channels.map(e=>e._id===t?{...e,unreadDot:n}:e)};let o=new Date().toISOString();return(r?.roomType??`CONVERSATION`)===`CHANNEL`?{channels:[...e.channels,{_id:t,members:[],name:``,type:`PRIVATE`,createdBy:``,e2eeEnabled:!1,senderKeyVersion:0,createdAt:o,updatedAt:r?.sentAt??o,hasReq:!1,unreadDot:n,roomType:`CHANNEL`,msg:[]}],activeConversationId:e.activeConversationId}:{conversations:[...e.conversations,{_id:t,participants:[r?.senderId,R.getState().currentUser?.userId].filter(e=>!!e),createdAt:o,updatedAt:r?.sentAt??o,hasReq:!1,unreadDot:n,roomType:`CONVERSATION`,msg:[]}],activeConversationId:e.activeConversationId}})})),V=8,H=`https://chatscope.io/storybook/react/assets/emily-xzL8sDL2.svg`,U=u.Empty;function W({open:e,users:t,onCancel:n,mode:r=`conversation`,channelId:i,channelName:a}){let[o,s]=(0,c.useState)(1),[d,f]=(0,c.useState)(),p=R(e=>e.currentUser),m=B(e=>e.conversations),g=B(e=>e.channels),_=B(e=>e.prependConversation),v=B(e=>e.ensureConversation),y=B(e=>e.setActiveConversationId),b=B(e=>e.setTabbarValue),x=(0,c.useMemo)(()=>i?g.find(e=>e._id===i):void 0,[i,g]),S=x?.members??[],C=(0,c.useMemo)(()=>t.filter(e=>e.userId!==p?.userId),[p?.userId,t]),w=(0,c.useMemo)(()=>{let e=(o-1)*V;return C.slice(e,e+V)},[o,C]);(0,c.useEffect)(()=>{e&&s(1)},[e]),(0,c.useEffect)(()=>{let e=Math.max(1,Math.ceil(C.length/V));o>e&&s(e)},[o,C.length]);let T=async e=>{f(e.userId);try{if(r===`channelMember`){if(!i){u.Toast.error(`缺少群聊信息`);return}await j(i,e.userId),v(i,{roomType:`CHANNEL`,members:Array.from(new Set([...S,e.userId]))}),u.Toast.success(`添加成员成功`),n();return}let t=await D(e.userId),a=`_id`in t?t:t.data;if(!a?._id){u.Toast.error(`创建会话失败`);return}m.find(e=>e._id===a._id)||_({_id:a._id,participants:a.participants??[p?.userId,e.userId].filter(e=>!!e),createdAt:a.createdAt??new Date().toISOString(),updatedAt:a.updatedAt??new Date().toISOString(),msg:[],roomType:`CONVERSATION`}),b(`conversations`),y(a._id),n()}catch{u.Toast.error(r===`channelMember`?`添加成员失败,请稍后重试`:`创建会话失败,请稍后重试`)}finally{f(void 0)}};return(0,h.jsx)(N,{open:e,onCancel:n,title:r===`channelMember`?`添加群成员`:`全部用户`,description:r===`channelMember`?`${a??x?.name??`当前群聊`},共 ${C.length} 位可选用户`:`共 ${C.length} 位用户`,width:640,children:(0,h.jsxs)(`div`,{className:`flex min-h-[360px] flex-col pb-[30px]`,children:[w.length>0?(0,h.jsx)(`div`,{className:`flex flex-1 flex-col divide-y divide-slate-100 overflow-hidden rounded-[8px] border border-slate-200 bg-white`,children:w.map(e=>(0,h.jsxs)(`div`,{className:`flex items-center gap-[12px] px-[16px] py-[12px]`,children:[(0,h.jsx)(l.Avatar,{name:e.userName??e.userId,src:e.avatarUrl??H}),(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsx)(`div`,{className:`truncate text-[14px] font-medium text-slate-900`,children:e.userName??`未命名用户`}),(0,h.jsx)(`div`,{className:`truncate text-[12px] text-slate-500`,children:e.userId})]}),(0,h.jsx)(l.SendButton,{border:!0,disabled:!!d||r===`channelMember`&&S.includes(e.userId),onClick:()=>void T(e)})]},e.userId))}):(0,h.jsx)(`div`,{className:`flex flex-1 items-center justify-center rounded-[8px] border border-dashed border-slate-200`,children:(0,h.jsx)(U,{description:`暂无用户数据`})}),(0,h.jsx)(`div`,{className:`mt-[16px] flex justify-end`,children:(0,h.jsx)(u.Pagination,{currentPage:o,pageSize:V,total:C.length,onPageChange:s,hideOnSinglePage:!0,showSizeChanger:!1})})]})})}function G(){return{dayjs:_.default,formatDateTime:(0,c.useCallback)(e=>{if(!e)return``;let t=(0,_.default)(e);if(!t.isValid())return e;let n=(0,_.default)();return t.isSame(n,`day`)?t.format(`HH:mm`):t.isSame(n,`year`)?t.format(`MM-DD HH:mm`):t.format(`YYYY-MM-DD HH:mm`)},[])}}var K=`data:image/png;base64,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`;function q({hasActiveConversation:e,connectionStatus:t,hasReconnectExhausted:n,isMessagesLoading:r,messages:i,inputValue:a,placeholder:o,resolvedDisabled:s,headerName:d,headerAvatar:f,headerInfo:p,isChannel:m=!1,currentUserId:_,onAddMemberClick:v,onBackClick:y,onReconnect:b,className:x,style:S,onChange:C,onSend:w}){let T=R(e=>e.usersById),{formatDateTime:E}=G(),D=(0,c.useRef)(null),O={idle:`等待建立长连接`,connecting:`长连接正在连接中`,connected:`长连接已连接成功`,disconnected:`长连接已断开,正在尝试重连`,error:`长连接连接失败`};if(!e){let e=t!==`connected`;return(0,h.jsx)(`div`,{className:`flex h-full flex-1 items-center justify-center px-[24px] text-center text-[14px] text-slate-500 ${x??``}`.trim(),style:S,children:(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-[12px]`,children:[(0,h.jsx)(`div`,{children:e?O[t]:`Select a user to start a conversation`}),n?(0,h.jsx)(u.Button,{onClick:b,theme:`solid`,type:`primary`,children:`点击重连`}):null]})})}return(0,h.jsxs)(l.ChatContainer,{className:x,style:S,children:[(0,h.jsxs)(l.ConversationHeader,{children:[(0,h.jsx)(l.ConversationHeader.Back,{onClick:y}),(0,h.jsx)(l.Avatar,{name:d,src:f??`data:image/png;base64,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`}),(0,h.jsx)(l.ConversationHeader.Content,{info:p,userName:d}),(0,h.jsx)(l.ConversationHeader.Actions,{children:m?(0,h.jsx)(l.AddUserButton,{onClick:v}):null})]}),(0,h.jsx)(l.MessageList,{loading:r,children:(0,h.jsx)(l.MessageList.Content,{className:`h-full`,children:(0,h.jsx)(`div`,{id:`scrollRef`,ref:D,className:`overflow-hidden overflow-y-auto h-full`,children:i.map(e=>(0,h.jsx)(g.ChatMessage,{id:e._id,role:`user`,name:T[e.senderId??``]?.userName??`Unknown`,avatar:T[e.senderId??``]?.avatarUrl??`Unknown`,datetime:E(e.sentAt),variant:e.senderId===_?`base`:`outline`,placement:e.senderId===_?`right`:`left`,content:[{type:`text`,data:e.encryption?.text??``}]},e._id))})})}),(0,h.jsx)(l.MessageInput,{value:a,placeholder:o,disabled:s,sendDisabled:s,attachButton:!1,sendButton:!0,onChange:C,onSend:w})]})}function J({open:e,onCancel:t}){let[n,r]=(0,c.useState)(!1),[i,a]=(0,c.useState)(),o=B(e=>e.prependChannel),s=B(e=>e.setActiveConversationId),l=B(e=>e.setTabbarValue);return(0,h.jsx)(N,{open:e,onCancel:t,title:`创建群聊`,description:`填写群聊名称和描述后即可创建`,width:520,footer:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(u.Button,{theme:`light`,onClick:t,disabled:n,children:`取消`}),(0,h.jsx)(u.Button,{type:`primary`,loading:n,onClick:()=>i?.submitForm(),children:`创建群聊`})]}),children:(0,h.jsx)(u.Form,{layout:`vertical`,getFormApi:a,onSubmit:async({name:e,description:n})=>{r(!0);try{let r=await A(e,n),i=`_id`in r?r:r.data;if(!i?._id){u.Toast.error(`创建群聊失败`);return}o({_id:i._id,members:i.members??[],name:i.name??e,type:i.type??`CHANNEL`,createdBy:i.createdBy??``,e2eeEnabled:i.e2eeEnabled??!1,senderKeyVersion:i.senderKeyVersion??0,createdAt:i.createdAt??new Date().toISOString(),updatedAt:i.updatedAt??new Date().toISOString(),roomType:`CHANNEL`,msg:[]}),l(`channels`),s(i._id),t()}catch{u.Toast.error(`创建群聊失败,请稍后重试`)}finally{r(!1)}},children:(0,h.jsxs)(`div`,{className:`flex flex-col gap-[16px]`,children:[(0,h.jsx)(u.Form.Input,{field:`name`,label:`群聊名称`,placeholder:`请输入群聊名称`,disabled:n,rules:[{required:!0,message:`请输入群聊名称`}]}),(0,h.jsx)(u.Form.TextArea,{field:`description`,label:`群聊描述`,placeholder:`请输入群聊描述`,disabled:n,rows:4,rules:[{required:!0,message:`请输入群聊描述`}]})]})})})}var Y=(e,t)=>e.participants.find(e=>e!==t)??e.participants[0]??e._id,X=({conversation:e,allUsers:t,currentUserId:n})=>{let r=Y(e,n),i=t.find(e=>e.userId===r);return{peerUserId:r,displayName:i?.userName??r??e._id,avatarUrl:i?.avatarUrl,info:r===e._id?`${e.msg.length} messages`:r}};function ee({onSelectConversation:e,className:t,style:n,conversationContentStyle:r,conversationAvatarStyle:i}){let a=u.Empty,o=B(e=>e.conversations),s=B(e=>e.channels),d=B(e=>e.activeConversationId),f=B(e=>e.isConversationsLoading),p=S(e=>e.connectionStatus),m=B(e=>e.tabbarValue),g=B(e=>e.setTabbarValue),_=R(e=>e.currentUser),b=R(e=>e.allUserList),{formatDateTime:x}=G(),[C,w]=(0,c.useState)(!1),[T,E]=(0,c.useState)(!1),[D,O]=(0,c.useState)(!1),k=f||p!==`connected`,A=()=>{O(!1),w(!0)},j=()=>{O(!1),E(!0)},M=()=>{k||O(e=>!e)},N=[{value:`conversations`,label:`单聊`,icon:(0,h.jsx)(y.ChatIcon,{}),badge:o.some(e=>e.unreadDot)},{value:`channels`,label:`群聊`,icon:(0,h.jsx)(y.ChatDoubleIcon,{}),badge:s.some(e=>e.unreadDot)}];return(0,h.jsxs)(l.Sidebar,{className:t,position:`left`,scrollable:!1,style:n,children:[(0,h.jsxs)(l.ConversationHeader,{children:[(0,h.jsx)(l.Avatar,{name:_?.userName??`Current User`,src:_?.avatarUrl??`https://chatscope.io/storybook/react/assets/emily-xzL8sDL2.svg`}),(0,h.jsx)(l.ConversationHeader.Content,{userName:_?.userName??`Current User`}),(0,h.jsx)(l.ConversationHeader.Actions,{children:(0,h.jsx)(u.Dropdown,{position:`bottomLeft`,trigger:`custom`,clickToHide:!0,visible:D,onClickOutSide:()=>O(!1),render:(0,h.jsxs)(u.Dropdown.Menu,{children:[(0,h.jsx)(u.Dropdown.Item,{icon:(0,h.jsx)(y.ChatIcon,{}),onClick:A,children:`Add Conversation`}),(0,h.jsx)(u.Dropdown.Item,{icon:(0,h.jsx)(y.ChatDoubleIcon,{}),onClick:j,children:`Add Channel`})]}),children:(0,h.jsx)(`div`,{onClick:M,children:(0,h.jsx)(l.AddUserButton,{disabled:k})})})})]}),f?(0,h.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,h.jsx)(l.Loader,{})}):(0,h.jsx)(`div`,{className:`overflow-hidden overflow-y-auto flex-1`,children:m===`conversations`?o.length>0?o.map(t=>{let{avatarUrl:n,displayName:a}=X({conversation:t,allUsers:b,currentUserId:_?.userId});return(0,h.jsxs)(l.Conversation,{active:t._id===d,unreadDot:t.unreadDot,lastActivityTime:x(t.updatedAt),onClick:()=>e(t._id),children:[(0,h.jsx)(l.Avatar,{name:a,src:n??`https://chatscope.io/storybook/react/assets/emily-xzL8sDL2.svg`,style:i}),(0,h.jsx)(l.Conversation.Content,{name:a,style:r})]},t._id)}):(0,h.jsx)(`div`,{className:`flex h-full items-center justify-center rounded-[8px] border border-dashed border-slate-200`,children:(0,h.jsx)(a,{description:`暂无单聊会话`})}):s.length>0?s.map(t=>(0,h.jsxs)(l.Conversation,{active:t._id===d,unreadDot:t.unreadDot,lastActivityTime:x(t.updatedAt),onClick:()=>e(t._id),children:[(0,h.jsx)(l.Avatar,{name:t.name,src:K,style:i}),(0,h.jsx)(l.Conversation.Content,{name:t.name,style:r})]},t._id)):(0,h.jsx)(`div`,{className:`flex h-full items-center justify-center rounded-[8px] border border-dashed border-slate-200`,children:(0,h.jsx)(a,{description:`暂无群聊会话`})})}),(0,h.jsx)(v.TabBar,{value:m,onChange:e=>{g(String(e))},theme:`tag`,fixed:!1,split:!1,children:N.map((e,t)=>(0,h.jsx)(v.TabBarItem,{icon:e.icon,value:e.value,badgeProps:{dot:e.badge},children:e.label},e.value||t))}),(0,h.jsx)(W,{open:C,users:b,onCancel:()=>w(!1)}),(0,h.jsx)(J,{open:T,onCancel:()=>E(!1)})]})}function te(){return{isMobile:(0,b.useMediaQuery)({query:`(max-width: 640px)`})}}var Z=e=>e===`CHANNEL`?`CHANNEL`:`CONVERSATION`,Q=e=>typeof e==`object`&&e&&!Array.isArray(e)?e:null,ne=e=>{let t=Q(e);if(!t)return null;let n=Q(t.data)??t,r=Q(n.encryption),i=r?.text;return typeof i!=`string`||!i.trim()?null:{_id:typeof n._id==`string`?n._id:void 0,roomId:typeof n.roomId==`string`?n.roomId:void 0,roomType:Z(typeof n.roomType==`string`?n.roomType:void 0),senderId:typeof n.senderId==`string`?n.senderId:void 0,type:typeof n.type==`string`?n.type:void 0,status:typeof n.status==`string`?n.status:void 0,encryption:{scheme:typeof r?.scheme==`string`?r.scheme:void 0,text:i},sentAt:typeof n.sentAt==`string`?n.sentAt:void 0}},re=(e,t)=>{try{let n=new URL(e);return t.token&&n.searchParams.set(`token`,t.token),Object.entries(t.connectionParams??{}).forEach(([e,t])=>{t!==void 0&&n.searchParams.set(e,String(t))}),n.toString()}catch{return e}},ie=e=>JSON.stringify({event:`message:send`,data:{roomType:Z(e.roomType),roomId:e.roomId,type:e.type??`TEXT`,ciphertext:e.encryption?.text??``}}),ae=(e,t)=>{try{let n=Q(JSON.parse(e));if(!n||(typeof n.event==`string`?n.event:void 0)!==`message:new`)return[];let r=ne(n);return!r||r.senderId===t.userId?[]:[r]}catch{return[]}},oe=(e,t,n,r=`CONVERSATION`)=>({_id:`local-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,roomId:t,roomType:r,senderId:n,type:`TEXT`,status:`SENT`,encryption:{scheme:`NONE`,text:e},sentAt:new Date().toISOString()});function se({autoConnect:e=!0,reconnect:t=!0,reconnectInterval:n=3e3,maxReconnectAttempts:r=3,wsUrl:i,context:a,onConnectionStatusChange:o,onError:s,onMessages:l,onNotify:u,onEvent:d}){let f=(0,c.useRef)(null),p=(0,c.useRef)(null),m=(0,c.useRef)(0),h=(0,c.useRef)(()=>{}),g=(0,c.useRef)(!1),_=(0,c.useRef)([]),v=(0,c.useRef)(a),y=(0,c.useRef)(o),b=(0,c.useRef)(s),x=(0,c.useRef)(l),C=(0,c.useRef)(u),w=(0,c.useRef)(d),[T,E]=(0,c.useState)(!1),D=S(e=>e.connectionStatus),O=S(e=>e.setWsAddress),k=S(e=>e.setConnectionStatus);(0,c.useEffect)(()=>{v.current=a},[a]),(0,c.useEffect)(()=>{y.current=o},[o]),(0,c.useEffect)(()=>{b.current=s},[s]),(0,c.useEffect)(()=>{x.current=l},[l]),(0,c.useEffect)(()=>{C.current=u},[u]),(0,c.useEffect)(()=>{w.current=d},[d]);let A=(0,c.useCallback)(e=>{k(e),y.current?.(e)},[k]),j=(0,c.useCallback)(()=>{p.current!==null&&(window.clearTimeout(p.current),p.current=null)},[]),M=(0,c.useCallback)(()=>{f.current?.readyState===WebSocket.OPEN&&(_.current.forEach(e=>{f.current?.send(e)}),_.current=[])},[]),N=(0,c.useCallback)(()=>{if(!i||!e||f.current&&(f.current.readyState===WebSocket.OPEN||f.current.readyState===WebSocket.CONNECTING))return;j(),g.current=!1,E(!1),A(`connecting`);let a=re(i,v.current),o;try{o=new WebSocket(a)}catch(e){console.error(`WebSocket connection failed:`,{wsUrl:i,resolvedUrl:a,error:e}),A(`error`),b.current?.(e);return}f.current=o,o.addEventListener(`open`,()=>{f.current===o&&(m.current=0,A(`connected`),M())}),o.addEventListener(`message`,e=>{if(typeof e.data!=`string`)return;try{let t=JSON.parse(e.data);if(t.event&&w.current?.(t.event,t.data),t.event===`message:notify`&&t.data){C.current?.(t.data);return}}catch{}let t=ae(e.data,v.current);x.current?.(t)}),o.addEventListener(`close`,e=>{if(f.current===o){if(console.error(`WebSocket close event:`,{wsUrl:i,resolvedUrl:a,code:e.code,reason:e.reason,wasClean:e.wasClean,readyState:o.readyState}),f.current=null,g.current){A(`disconnected`);return}if(A(`disconnected`),t){if(m.current>=r){E(!0);return}m.current+=1,j(),p.current=window.setTimeout(()=>{h.current()},n)}}}),o.addEventListener(`error`,e=>{f.current===o&&(console.error(`WebSocket error event:`,{wsUrl:i,resolvedUrl:a,readyState:o.readyState,event:e}),A(`error`),b.current?.(e))})},[e,j,M,t,n,r,i,A]),P=(0,c.useCallback)(()=>{g.current=!0,j(),f.current?.close(),f.current=null},[j]),F=(0,c.useCallback)(()=>{i&&(g.current=!1,m.current=0,E(!1),j(),f.current&&(f.current.readyState===WebSocket.OPEN||f.current.readyState===WebSocket.CONNECTING)&&f.current.close(),h.current())},[j,i]),I=(0,c.useCallback)(t=>{if(f.current?.readyState===WebSocket.OPEN){f.current.send(t);return}_.current.push(t),e&&N()},[e,N]),L=(0,c.useCallback)(e=>{I(ie(e))},[I]);return(0,c.useEffect)(()=>{O(i)},[O,i]),(0,c.useEffect)(()=>{h.current=N},[N]),(0,c.useEffect)(()=>i?(N(),()=>{P()}):(m.current=0,E(!1),window.setTimeout(()=>A(`idle`),0),()=>{j()}),[j,N,P,A,i]),(0,c.useMemo)(()=>({status:D,resolvedWsUrl:i,sendMessage:L,sendPayload:I,reconnect:F,hasReconnectExhausted:T}),[T,F,L,I,D,i])}function ce({onMessageReceive:e}){let t=B(e=>e.conversations),n=B(e=>e.channels),r=B(e=>e.activeConversationId),i=B(e=>e.ensureConversation),a=B(e=>e.appendMessages),o=B(e=>e.setActiveConversationId),s=(0,c.useCallback)(e=>{o(e)},[o]),l=(0,c.useCallback)((t,n)=>{let o=n??t[0]?.roomId??r;if(!o){t.forEach(t=>{e?.(t)});return}i(o,{roomType:t[0]?.roomType===`CHANNEL`?`CHANNEL`:`CONVERSATION`}),a(o,t.map(e=>({...e,roomId:e.roomId??o}))),t.forEach(t=>{e?.(t)})},[r,a,i,e]),u=(0,c.useMemo)(()=>[...t,...n].find(e=>e._id===r),[r,n,t]);return{conversations:t,channels:n,activeConversationId:u?._id,messages:u?.msg??[],setActiveConversationId:s,appendMessages:l}}var $=()=>new Promise(e=>{window.requestAnimationFrame(()=>e())});function le(e={}){let{containerRef:t,elementId:n=`scrollRef`,threshold:r=80,behavior:i=`auto`}=e,a=(0,c.useCallback)(()=>t?.current??document.getElementById(n),[t,n]);return{scrollToBottom:(0,c.useCallback)(async()=>{await $();let e=a();e&&e.scrollTo({top:e.scrollHeight,behavior:i})},[i,a]),scrollToTop:(0,c.useCallback)(async()=>{await $();let e=a();e&&e.scrollTo({top:0,behavior:i})},[i,a]),scrollToBottomIfAtBottom:(0,c.useCallback)(async()=>{await $();let e=a();e&&e.scrollHeight-e.scrollTop-e.clientHeight<=r&&e.scrollTo({top:e.scrollHeight,behavior:i})},[i,a,r])}}function ue({allUserList:e,autoConnect:t=!0,connectionParams:n,disabled:r=!1,onConnectionStatusChange:i,onError:a,onMessageReceive:o,optimisticSend:s=!0,wsUrl:l,httpUrl:d,token:f,userId:p}){let[m,h]=(0,c.useState)(``),{scrollToBottom:g}=le(),_=R(e=>e.setAllUserList),v=R(e=>e.setCurrentUser),y=R(e=>e.upsertUsersFromMessages),b=B(e=>e.setConversations),x=B(e=>e.setChannels),C=B(e=>e.setConversationMessages),w=B(e=>e.setConversationUnreadDot),T=B(e=>e.setConversationsLoading),D=B(e=>e.isMessagesLoading),A=B(e=>e.setMessagesLoading),j=S(e=>e.setHttpUrl),M=S(e=>e.setToken),{activeConversationId:N,appendMessages:P,channels:F,conversations:I,messages:L,setActiveConversationId:z}=ce({onMessageReceive:o}),V=(0,c.useMemo)(()=>e.find(e=>e.userId===p),[e,p]),H=(0,c.useMemo)(()=>[...I,...F].find(e=>e._id===N),[F,I,N]),U=V?.userName??`You`,W=V?.avatarUrl,{resolvedWsUrl:G,sendMessage:K,sendPayload:q,status:J,reconnect:Y,hasReconnectExhausted:X}=se({autoConnect:t,reconnect:!0,reconnectInterval:3e3,maxReconnectAttempts:3,wsUrl:l,context:(0,c.useMemo)(()=>({userId:p,userName:U,userAvatar:W,token:f,connectionParams:n}),[n,W,U,f,p]),onConnectionStatusChange:i,onError:a,onMessages:(0,c.useCallback)(e=>{y(e);let t=e.reduce((e,t)=>{let n=t.roomId??N;return n?(e[n]||(e[n]=[]),e[n].push(t),e):e},{});Object.entries(t).forEach(([e,t])=>{P(t,e)})},[P,N,y]),onNotify:(0,c.useCallback)(e=>{!e.roomId||e.senderId===p||e.roomId===N&&H?.hasReq||w(e.roomId,!0,e)},[H?.hasReq,N,w,p]),onEvent:(0,c.useCallback)(async(e,t)=>{if(e!==`channel:member_added`)return;let n=typeof t==`object`&&t&&!Array.isArray(t)?t:void 0;if(!(!n||n.roomType!==`CHANNEL`||typeof n.memberId!=`string`||n.memberId!==p)){u.Toast.success(`你已被邀请进了新群聊`);try{x(((await k()).data??[]).map(e=>({...e,roomType:`CHANNEL`,msg:[]})))}catch(e){a?.(e)}}},[a,x,p])});return(0,c.useEffect)(()=>{_(e)},[e,_]),(0,c.useEffect)(()=>{j(d)},[d,j]),(0,c.useEffect)(()=>{f!==void 0&&M(f)},[M,f]),(0,c.useEffect)(()=>{if(J!==`connected`)return;let e=!1;return(async()=>{T(!0);try{let[t,n]=await Promise.all([E(),k()]),r=t,i=n;if(e)return;b((r.data??[]).map(e=>({...e,roomType:`CONVERSATION`,msg:[]}))),x((i.data??[]).map(e=>({...e,roomType:`CHANNEL`,msg:[]})))}catch(t){e||a?.(t)}finally{e||T(!1)}})(),()=>{e=!0}},[a,x,b,T,J]),(0,c.useEffect)(()=>{p&&v({userId:p,userName:U,avatarUrl:W})},[W,U,v,p]),(0,c.useEffect)(()=>{!N||!H?.hasReq||!H.unreadDot||w(N,!1)},[H?.hasReq,H?.unreadDot,N,w]),(0,c.useEffect)(()=>{if(!N||H?.hasReq){g();return}let e=!1,t=H?.roomType??`CONVERSATION`;return(async()=>{A(!0);try{q(JSON.stringify({event:`room:join`,data:{roomType:t,roomId:N}}));let n=await O(N,t);if(e)return;C(N,(n.data?[...n.data].reverse():[]).map(e=>({...e,roomId:e.roomId??N,roomType:t}))),g()}catch(t){e||a?.(t)}finally{A(!1)}})(),()=>{e=!0}},[H?.hasReq,H?.roomType,a,N,q,C,A,g]),{conversations:I,activeConversationId:N,connectionStatus:J,hasReconnectExhausted:X,inputValue:m,isMessagesLoading:D,messages:L,resolvedDisabled:r||!G||!N,handleConversationSelect:z,handleChange:(0,c.useCallback)((e,t,n)=>{h(t||n||e)},[]),handleReconnect:Y,handleSend:(0,c.useCallback)((e,t,n)=>{let r=(t||n||e).trim();if(!r||!N)return;let i=oe(r,N,p,H?.roomType??`CONVERSATION`);s&&P([i],N),K(i),h(``)},[H?.roomType,P,s,N,K,p])}}function de({placeholder:e=`Type message here`,className:t,disabled:n=!1,...r}){let i=[`flex w-full flex-col h-full`,t].filter(Boolean).join(` `),a={height:`100%`},[o,s]=(0,c.useState)(!1),[d,f]=(0,c.useState)({}),[p,m]=(0,c.useState)({}),[g,_]=(0,c.useState)({}),[v,y]=(0,c.useState)({}),[b,x]=(0,c.useState)(!1),[S,C]=(0,c.useState)(!1),w=(0,c.useRef)(null),{isMobile:T}=te(),{activeConversationId:E,connectionStatus:D,conversations:O,handleChange:k,handleConversationSelect:A,handleReconnect:j,handleSend:M,hasReconnectExhausted:P,inputValue:F,isMessagesLoading:I,messages:L,resolvedDisabled:z}=ue({...r,disabled:n}),V=R(e=>e.currentUser),H=R(e=>e.allUserList),U=B(e=>e.channels),G=B(e=>e.setActiveConversationId),K=(0,c.useMemo)(()=>[...O,...U].find(e=>e._id===E),[E,U,O]),J=(0,c.useMemo)(()=>K&&`members`in K?K:void 0,[K]),Y=(0,c.useMemo)(()=>{if(K)return`name`in K?{avatarUrl:void 0,displayName:K.name||`Channel`,info:void 0}:X({conversation:K,allUsers:H,currentUserId:V?.userId})},[K,H,V?.userId]),Z=(0,c.useMemo)(()=>{if(P)return`长连接重连次数已用完,请手动重连`;switch(D){case`idle`:return`等待建立长连接`;case`connecting`:return`长连接正在连接中`;case`disconnected`:return`长连接已断开,正在尝试重连`;case`error`:return`长连接连接失败`;default:return``}},[D,P]),Q=S&&!P&&D!==`connected`,ne=(0,c.useMemo)(()=>(0,h.jsx)(`div`,{className:`flex justify-end gap-[12px]`,children:(0,h.jsx)(u.Button,{loading:Q,theme:`solid`,type:`primary`,onClick:j,children:`继续重连`})}),[j,Q]),re=(0,c.useCallback)(e=>{A(e),o&&s(!1)},[A,o]),ie=(0,c.useCallback)(()=>{s(e=>!e),G(void 0)},[G]),ae=(0,c.useCallback)(()=>{J&&x(!0)},[J]);return(0,c.useEffect)(()=>{T&&!E&&s(!0)},[E,T]),(0,c.useEffect)(()=>{if(o){f({display:`flex`,flexBasis:`auto`,width:`100%`,maxWidth:`100%`}),_({display:`flex`}),y({marginRight:`1em`}),m({display:`none`});return}f({}),_({}),y({}),m({})},[o]),(0,c.useEffect)(()=>{P&&C(!0)},[P]),(0,c.useEffect)(()=>{D===`connected`&&C(!1)},[D]),(0,h.jsx)(`div`,{className:i,children:(0,h.jsxs)(`div`,{ref:w,className:`relative h-full w-full overflow-hidden border border-slate-200 bg-white shadow-[0_18px_48px_rgba(15,23,42,0.08),0_8px_20px_rgba(15,23,42,0.06)] [&_.cs-main-container]:border-0 [&_.cs-main-container]:bg-transparent [&_.cs-chat-container]:bg-[linear-gradient(180deg,_#f8fafc,_#ffffff_28%)] [&_.cs-message-input]:border-t [&_.cs-message-input]:border-slate-200 [&_.cs-message-input]:bg-white/95 [&_.cs-message-input__content-editor-wrapper]:bg-slate-50 [&_.cs-message-list]:bg-transparent`,style:a,children:[(0,h.jsx)(u.Spin,{tip:Z,spinning:D!==`connected`,wrapperClassName:`h-full!`,childStyle:{height:`100%`},children:(0,h.jsxs)(l.MainContainer,{responsive:!0,children:[(0,h.jsx)(ee,{onSelectConversation:re,style:d,conversationContentStyle:g,conversationAvatarStyle:v}),(0,h.jsx)(q,{hasActiveConversation:!!E,connectionStatus:D,hasReconnectExhausted:P,isMessagesLoading:I,messages:L,inputValue:F,placeholder:e,resolvedDisabled:z,headerAvatar:Y?.avatarUrl,headerName:Y?.displayName??`Conversation`,headerInfo:Y?.info,isChannel:!!J,currentUserId:V?.userId,onAddMemberClick:ae,onBackClick:ie,onReconnect:j,style:p,onChange:k,onSend:M}),(0,h.jsx)(W,{open:b,users:H,mode:`channelMember`,channelId:J?._id,channelName:J?.name,onCancel:()=>x(!1)})]})}),(0,h.jsx)(N,{open:S,title:`长连接已断开`,description:`自动重连已失败,是否继续重连?`,width:420,footer:ne,maskClosable:!1,closable:!1,closeOnEsc:!1,getPopupContainer:()=>w.current??document.body,onCancel:()=>{},children:(0,h.jsxs)(`div`,{className:`text-[14px] leading-[24px] text-slate-600`,children:[`当前连接状态:`,Z||`长连接连接异常`]})})]})})}exports.NexusChatUI=de,exports.useChatConnection=se,exports.useChatMessages=ce,exports.useNexusChat=ue;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require(`@douyinfe/semi-ui/react19-adapter`),require(`@chatscope/chat-ui-kit-styles/dist/default/styles.min.css`),require(`@tdesign-react/chat/es/style/index.js`);let c=require(`react`),l=require(`@chatscope/chat-ui-kit-react`),u=require(`@douyinfe/semi-ui`),d=require(`axios`);d=s(d,1);let f=require(`zustand`),p=require(`clsx`),m=require(`tailwind-merge`),h=require(`react/jsx-runtime`),g=require(`@tdesign-react/chat`),_=require(`dayjs`);_=s(_,1);let v=require(`tdesign-mobile-react`),y=require(`tdesign-icons-react`),b=require(`react-responsive`);var x=function(e){return e[e.SUCCESS=200]=`SUCCESS`,e[e.ERROR=500]=`ERROR`,e[e.OVERDUE=401]=`OVERDUE`,e[e.TIMEOUT=3e4]=`TIMEOUT`,e.TYPE=`success`,e}({}),S=(0,f.create)(e=>({wsAddress:void 0,httpUrl:void 0,token:``,connectionStatus:`idle`,setWsAddress:t=>e({wsAddress:t}),setHttpUrl:t=>e({httpUrl:t}),setToken:t=>e({token:t}),setConnectionStatus:t=>e({connectionStatus:t})})),C=e=>{switch(e){case 400:u.Toast.error(`请求失败!请您稍后重试`);break;case 401:u.Toast.error(`登录失效!请您重新登录`);break;case 403:u.Toast.error(`当前账号无权限访问!`);break;case 404:u.Toast.error(`你所访问的资源不存在!`);break;case 405:u.Toast.error(`请求方式错误!请您稍后重试`);break;case 408:u.Toast.error(`请求超时!请您稍后重试`);break;case 500:u.Toast.error(`服务异常!`);break;case 502:u.Toast.error(`网关错误!`);break;case 503:u.Toast.error(`服务不可用!`);break;case 504:u.Toast.error(`网关超时!`);break;default:u.Toast.error(`请求失败!`)}},w={baseURL:``,timeout:x.TIMEOUT,withCredentials:!1},T=new class{service;constructor(e){this.service=d.default.create(e),this.service.interceptors.request.use(e=>{let{httpUrl:t,token:n}=S.getState();return t&&(e.baseURL=t),e.headers&&typeof e.headers.set==`function`&&n&&e.headers.set(`Authorization`,`Bearer ${n}`),e},e=>Promise.reject(e)),this.service.interceptors.response.use(e=>{let{data:t}=e;return t.code&&t.code!=x.SUCCESS?Promise.reject(t):t},async e=>{let{response:t}=e;return console.log(t),e.message.indexOf(`timeout`)!==-1&&u.Toast.error(`请求超时!请您稍后重试`),e.message.indexOf(`Network Error`)!==-1&&u.Toast.error(`网络错误!请您稍后重试`),t&&C(t.status),Promise.reject(e)})}get(e,t,n={}){return this.service.get(e,{params:t,...n})}post(e,t,n={}){return this.service.post(e,t,n)}put(e,t,n={}){return this.service.put(e,t,n)}delete(e,t,n={}){return this.service.delete(e,{params:t,...n})}download(e,t,n={}){return this.service.post(e,t,{...n,responseType:`blob`})}}(w),E=()=>T.get(`/api/v1/conversations`),D=e=>T.post(`/api/v1/conversations`,{userId:e}),O=(e,t)=>T.get(`/api/v1/messages`,{roomId:e,roomType:t}),k=()=>T.get(`/api/v1/channels`),A=(e,t)=>T.post(`/api/v1/channels`,{name:e,description:t,type:`PRIVATE`,e2eeEnabled:!1}),j=(e,t)=>T.post(`/api/v1/channels/${e}/members`,{userId:t});function M(...e){return(0,m.twMerge)((0,p.clsx)(e))}var N=({open:e,title:t,description:n,headerClassName:r,titleClassName:i,descriptionClassName:a,children:o,centered:s=!0,destroyOnHidden:c=!0,footer:l=null,width:d=520,...f})=>{let p=t||n?(0,h.jsxs)(`div`,{className:M(`pr-[32px]`,r),children:[t?(0,h.jsx)(`div`,{className:M(`text-[20px] font-semibold leading-[28px] text-primary`,i),children:t}):null,n?(0,h.jsx)(`div`,{className:M(t?`mt-[8px]`:``,`text-[14px] leading-[22px] text-[#909090]`,a),children:n}):null]}):null;return(0,h.jsx)(u.Modal,{centered:s,visible:e,keepDOM:!c,footer:l,maskClosable:!0,title:p,width:d,...f,children:o})},P=e=>{let t=e.senderId;if(t)return{userId:t}},F=e=>{let t={};return e.forEach(e=>{e.userId&&(t[e.userId]={...t[e.userId],...e})}),Object.values(t)},I=e=>e.reduce((e,t)=>(e[t.userId]=t,e),{}),L=(e,t)=>{let n=I(e);return t.forEach(e=>{e.userId&&(n[e.userId]={...n[e.userId],...e})}),Object.values(n)},R=(0,f.create)(e=>({currentUser:void 0,allUserList:[],usersById:{},setAllUserList:t=>e(e=>{let n=F(t),r=e.currentUser?.userId?L(n,[e.currentUser]):n;return{allUserList:r,usersById:I(r)}}),setCurrentUser:t=>e(e=>{if(!t?.userId)return{currentUser:void 0};let n=L(e.allUserList,[t]);return{currentUser:t,allUserList:n,usersById:I(n)}}),upsertUsersFromMessages:t=>e(e=>{let n=t.map(P).filter(e=>!!e);if(n.length===0)return{};let r=L(e.allUserList,n);return{allUserList:r,usersById:I(r)}})})),z=(e,t)=>{let n=new Set(e.map(e=>e._id).filter(Boolean)),r=t.filter(e=>e._id?n.has(e._id)?!1:(n.add(e._id),!0):!0);return r.length>0?[...e,...r]:e},B=(0,f.create)(e=>({conversations:[],channels:[],tabbarValue:`conversations`,activeConversationId:void 0,isConversationsLoading:!1,isMessagesLoading:!1,setConversations:t=>e(e=>({conversations:t.map(t=>{let n=e.conversations.find(e=>e._id===t._id);return n?{...t,hasReq:n.hasReq,unreadDot:n.unreadDot,msg:n.msg}:{...t,hasReq:t.hasReq??!1,unreadDot:t.unreadDot??!1}}),activeConversationId:t.some(t=>t._id===e.activeConversationId)?e.activeConversationId:void 0})),setChannels:t=>e(e=>({channels:t.map(t=>{let n=e.channels.find(e=>e._id===t._id);return n?{...t,hasReq:n.hasReq,unreadDot:n.unreadDot,msg:n.msg}:{...t,hasReq:t.hasReq??!1,unreadDot:t.unreadDot??!1}})})),setTabbarValue:t=>e({tabbarValue:t}),prependConversation:t=>e(e=>({conversations:[{...t,hasReq:t.hasReq??!1,unreadDot:t.unreadDot??!1},...e.conversations.filter(e=>e._id!==t._id)]})),prependChannel:t=>e(e=>({channels:[{...t,hasReq:t.hasReq??!1,unreadDot:t.unreadDot??!1},...e.channels.filter(e=>e._id!==t._id)]})),setConversationsLoading:t=>e({isConversationsLoading:t}),setMessagesLoading:t=>e({isMessagesLoading:t}),setConversationMessages:(t,n)=>e(e=>{let r=e.conversations.find(e=>e._id===t),i=e.channels.find(e=>e._id===t);if(r)return{conversations:e.conversations.map(e=>e._id===t?{...e,hasReq:!0,unreadDot:!1,msg:z(n,r.msg)}:e)};if(i)return{channels:e.channels.map(e=>e._id===t?{...e,hasReq:!0,unreadDot:!1,msg:z(n,i.msg),updatedAt:new Date().toISOString()}:e)};let a=new Date().toISOString();return(n[0]?.roomType===`CHANNEL`?`CHANNEL`:`CONVERSATION`)==`CHANNEL`?{channels:[...e.channels,{_id:t,members:[],name:``,type:`CHANNEL`,createdBy:``,e2eeEnabled:!1,senderKeyVersion:0,createdAt:a,updatedAt:a,hasReq:!0,unreadDot:!1,roomType:`CHANNEL`,msg:n}],activeConversationId:e.activeConversationId??t}:{conversations:[...e.conversations,{_id:t,participants:[],createdAt:a,updatedAt:a,hasReq:!0,unreadDot:!1,roomType:`CONVERSATION`,msg:n}],activeConversationId:e.activeConversationId??t}}),setActiveConversationId:t=>e({activeConversationId:t}),ensureConversation:(t,n)=>e(e=>{let r=e.conversations.find(e=>e._id===t),i=e.channels.find(e=>e._id===t);if(r)return{conversations:e.conversations.map(e=>e._id===t?{...e,...n,hasReq:n?.hasReq??e.hasReq,unreadDot:n?.unreadDot??e.unreadDot,participants:n?.participants??e.participants,updatedAt:n?.updatedAt??e.updatedAt}:e)};if(i)return{channels:e.channels.map(e=>e._id===t?{...e,...n,roomType:`CHANNEL`,hasReq:n?.hasReq??e.hasReq,unreadDot:n?.unreadDot??e.unreadDot,members:n?.members??e.members,name:n?.name??e.name,type:n?.type??e.type,createdBy:n?.createdBy??e.createdBy,e2eeEnabled:n?.e2eeEnabled??e.e2eeEnabled,senderKeyVersion:n?.senderKeyVersion??e.senderKeyVersion,updatedAt:n?.updatedAt??e.updatedAt}:e)};let a=new Date().toISOString();return(n?.roomType??`CONVERSATION`)===`CHANNEL`?{channels:[...e.channels,{_id:t,members:n?.members??[],name:n?.name??``,type:n?.type??`CHANNEL`,createdBy:n?.createdBy??``,e2eeEnabled:n?.e2eeEnabled??!1,senderKeyVersion:n?.senderKeyVersion??0,createdAt:n?.createdAt??a,updatedAt:n?.updatedAt??a,hasReq:n?.hasReq??!1,unreadDot:n?.unreadDot??!1,roomType:`CHANNEL`,msg:[]}],activeConversationId:e.activeConversationId??t}:{conversations:[...e.conversations,{_id:t,participants:n?.participants??[],createdAt:n?.createdAt??a,updatedAt:n?.updatedAt??a,hasReq:n?.hasReq??!1,unreadDot:n?.unreadDot??!1,roomType:`CONVERSATION`,msg:[]}],activeConversationId:e.activeConversationId??t}}),appendMessages:(t,n)=>e(e=>{let r=e.conversations.find(e=>e._id===t),i=e.channels.find(e=>e._id===t),a=n[0]?.roomType===`CHANNEL`?`CHANNEL`:`CONVERSATION`;if(r)return{conversations:e.conversations.map(e=>e._id===t?{...e,hasReq:e.hasReq??!1,unreadDot:e.unreadDot??!1,msg:z(e.msg,n),updatedAt:new Date().toISOString()}:e)};if(i)return{channels:e.channels.map(e=>e._id===t?{...e,hasReq:e.hasReq??!1,unreadDot:e.unreadDot??!1,msg:z(e.msg,n),updatedAt:new Date().toISOString()}:e)};if(a===`CHANNEL`){let r=new Date().toISOString();return{channels:[...e.channels,{_id:t,members:[],name:``,type:`CHANNEL`,createdBy:``,e2eeEnabled:!1,senderKeyVersion:0,createdAt:r,updatedAt:r,hasReq:!1,unreadDot:!1,roomType:`CHANNEL`,msg:n}],activeConversationId:e.activeConversationId??t}}return{conversations:[...e.conversations,{_id:t,participants:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),hasReq:!1,unreadDot:!1,roomType:`CONVERSATION`,msg:n}],activeConversationId:e.activeConversationId??t}}),setConversationUnreadDot:(t,n,r)=>e(e=>{let i=e.conversations.find(e=>e._id===t),a=e.channels.find(e=>e._id===t);if(i)return{conversations:e.conversations.map(e=>e._id===t?{...e,unreadDot:n}:e)};if(a)return{channels:e.channels.map(e=>e._id===t?{...e,unreadDot:n}:e)};let o=new Date().toISOString();return(r?.roomType??`CONVERSATION`)===`CHANNEL`?{channels:[...e.channels,{_id:t,members:[],name:``,type:`PRIVATE`,createdBy:``,e2eeEnabled:!1,senderKeyVersion:0,createdAt:o,updatedAt:r?.sentAt??o,hasReq:!1,unreadDot:n,roomType:`CHANNEL`,msg:[]}],activeConversationId:e.activeConversationId}:{conversations:[...e.conversations,{_id:t,participants:[r?.senderId,R.getState().currentUser?.userId].filter(e=>!!e),createdAt:o,updatedAt:r?.sentAt??o,hasReq:!1,unreadDot:n,roomType:`CONVERSATION`,msg:[]}],activeConversationId:e.activeConversationId}})})),V=8,H=`https://chatscope.io/storybook/react/assets/emily-xzL8sDL2.svg`,U=u.Empty;function W({open:e,users:t,onCancel:n,mode:r=`conversation`,channelId:i,channelName:a}){let[o,s]=(0,c.useState)(1),[d,f]=(0,c.useState)(),p=R(e=>e.currentUser),m=B(e=>e.conversations),g=B(e=>e.channels),_=B(e=>e.prependConversation),v=B(e=>e.ensureConversation),y=B(e=>e.setActiveConversationId),b=B(e=>e.setTabbarValue),x=(0,c.useMemo)(()=>i?g.find(e=>e._id===i):void 0,[i,g]),S=x?.members??[],C=(0,c.useMemo)(()=>t.filter(e=>e.userId!==p?.userId),[p?.userId,t]),w=(0,c.useMemo)(()=>{let e=(o-1)*V;return C.slice(e,e+V)},[o,C]);(0,c.useEffect)(()=>{e&&s(1)},[e]),(0,c.useEffect)(()=>{let e=Math.max(1,Math.ceil(C.length/V));o>e&&s(e)},[o,C.length]);let T=async e=>{f(e.userId);try{if(r===`channelMember`){if(!i){u.Toast.error(`缺少群聊信息`);return}await j(i,e.userId),v(i,{roomType:`CHANNEL`,members:Array.from(new Set([...S,e.userId]))}),u.Toast.success(`添加成员成功`),n();return}let t=await D(e.userId),a=`_id`in t?t:t.data;if(!a?._id){u.Toast.error(`创建会话失败`);return}m.find(e=>e._id===a._id)||_({_id:a._id,participants:a.participants??[p?.userId,e.userId].filter(e=>!!e),createdAt:a.createdAt??new Date().toISOString(),updatedAt:a.updatedAt??new Date().toISOString(),msg:[],roomType:`CONVERSATION`}),b(`conversations`),y(a._id),n()}catch{u.Toast.error(r===`channelMember`?`添加成员失败,请稍后重试`:`创建会话失败,请稍后重试`)}finally{f(void 0)}};return(0,h.jsx)(N,{open:e,onCancel:n,title:r===`channelMember`?`添加群成员`:`全部用户`,description:r===`channelMember`?`${a??x?.name??`当前群聊`},共 ${C.length} 位可选用户`:`共 ${C.length} 位用户`,width:640,children:(0,h.jsxs)(`div`,{className:`flex min-h-[360px] flex-col pb-[30px]`,children:[w.length>0?(0,h.jsx)(`div`,{className:`flex flex-1 flex-col divide-y divide-slate-100 overflow-hidden rounded-[8px] border border-slate-200 bg-white`,children:w.map(e=>(0,h.jsxs)(`div`,{className:`flex items-center gap-[12px] px-[16px] py-[12px]`,children:[(0,h.jsx)(l.Avatar,{name:e.userName??e.userId,src:e.avatarUrl??H}),(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsx)(`div`,{className:`truncate text-[14px] font-medium text-slate-900`,children:e.userName??`未命名用户`}),(0,h.jsx)(`div`,{className:`truncate text-[12px] text-slate-500`,children:e.userId})]}),(0,h.jsx)(l.SendButton,{border:!0,disabled:!!d||r===`channelMember`&&S.includes(e.userId),onClick:()=>void T(e)})]},e.userId))}):(0,h.jsx)(`div`,{className:`flex flex-1 items-center justify-center rounded-[8px] border border-dashed border-slate-200`,children:(0,h.jsx)(U,{description:`暂无用户数据`})}),(0,h.jsx)(`div`,{className:`mt-[16px] flex justify-end`,children:(0,h.jsx)(u.Pagination,{currentPage:o,pageSize:V,total:C.length,onPageChange:s,hideOnSinglePage:!0,showSizeChanger:!1})})]})})}function G(){return{dayjs:_.default,formatDateTime:(0,c.useCallback)(e=>{if(!e)return``;let t=(0,_.default)(e);if(!t.isValid())return e;let n=(0,_.default)();return t.isSame(n,`day`)?t.format(`HH:mm`):t.isSame(n,`year`)?t.format(`MM-DD HH:mm`):t.format(`YYYY-MM-DD HH:mm`)},[])}}var K=`data:image/png;base64,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`;function q({hasActiveConversation:e,connectionStatus:t,hasReconnectExhausted:n,isMessagesLoading:r,messages:i,inputValue:a,placeholder:o,resolvedDisabled:s,headerName:d,headerAvatar:f,headerInfo:p,isChannel:m=!1,currentUserId:_,onAddMemberClick:v,onBackClick:y,onReconnect:b,className:x,style:S,onChange:C,onSend:w}){let T=R(e=>e.usersById),{formatDateTime:E}=G(),D=(0,c.useRef)(null),O={idle:`等待建立长连接`,connecting:`长连接正在连接中`,connected:`长连接已连接成功`,disconnected:`长连接已断开,正在尝试重连`,error:`长连接连接失败`};if(!e){let e=t!==`connected`;return(0,h.jsx)(`div`,{className:`flex h-full flex-1 items-center justify-center px-[24px] text-center text-[14px] text-slate-500 ${x??``}`.trim(),style:S,children:(0,h.jsxs)(`div`,{className:`flex flex-col items-center gap-[12px]`,children:[(0,h.jsx)(`div`,{children:e?O[t]:`Select a user to start a conversation`}),n?(0,h.jsx)(u.Button,{onClick:b,theme:`solid`,type:`primary`,children:`点击重连`}):null]})})}return(0,h.jsxs)(l.ChatContainer,{className:x,style:S,children:[(0,h.jsxs)(l.ConversationHeader,{children:[(0,h.jsx)(l.ConversationHeader.Back,{onClick:y}),(0,h.jsx)(l.Avatar,{name:d,src:f??`data:image/png;base64,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`}),(0,h.jsx)(l.ConversationHeader.Content,{info:p,userName:d}),(0,h.jsx)(l.ConversationHeader.Actions,{children:m?(0,h.jsx)(l.AddUserButton,{onClick:v}):null})]}),(0,h.jsx)(l.MessageList,{loading:r,children:(0,h.jsx)(l.MessageList.Content,{className:`h-full`,children:(0,h.jsx)(`div`,{id:`scrollRef`,ref:D,className:`overflow-hidden overflow-y-auto h-full`,children:i.map(e=>(0,h.jsx)(g.ChatMessage,{id:e._id,role:`user`,name:T[e.senderId??``]?.userName??`Unknown`,avatar:T[e.senderId??``]?.avatarUrl??`Unknown`,datetime:E(e.sentAt),variant:e.senderId===_?`base`:`outline`,placement:e.senderId===_?`right`:`left`,content:[{type:`text`,data:e.encryption?.text??``}]},e._id))})})}),(0,h.jsx)(l.MessageInput,{value:a,placeholder:o,disabled:s,sendDisabled:s,attachButton:!1,sendButton:!0,onChange:C,onSend:w})]})}function J({open:e,onCancel:t}){let[n,r]=(0,c.useState)(!1),[i,a]=(0,c.useState)(),o=B(e=>e.prependChannel),s=B(e=>e.setActiveConversationId),l=B(e=>e.setTabbarValue);return(0,h.jsx)(N,{open:e,onCancel:t,title:`创建群聊`,description:`填写群聊名称和描述后即可创建`,width:520,footer:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(u.Button,{theme:`light`,onClick:t,disabled:n,children:`取消`}),(0,h.jsx)(u.Button,{type:`primary`,loading:n,onClick:()=>i?.submitForm(),children:`创建群聊`})]}),children:(0,h.jsx)(u.Form,{layout:`vertical`,getFormApi:a,onSubmit:async({name:e,description:n})=>{r(!0);try{let r=await A(e,n),i=`_id`in r?r:r.data;if(!i?._id){u.Toast.error(`创建群聊失败`);return}o({_id:i._id,members:i.members??[],name:i.name??e,type:i.type??`CHANNEL`,createdBy:i.createdBy??``,e2eeEnabled:i.e2eeEnabled??!1,senderKeyVersion:i.senderKeyVersion??0,createdAt:i.createdAt??new Date().toISOString(),updatedAt:i.updatedAt??new Date().toISOString(),roomType:`CHANNEL`,msg:[]}),l(`channels`),s(i._id),t()}catch{u.Toast.error(`创建群聊失败,请稍后重试`)}finally{r(!1)}},children:(0,h.jsxs)(`div`,{className:`flex flex-col gap-[16px]`,children:[(0,h.jsx)(u.Form.Input,{field:`name`,label:`群聊名称`,placeholder:`请输入群聊名称`,disabled:n,rules:[{required:!0,message:`请输入群聊名称`}]}),(0,h.jsx)(u.Form.TextArea,{field:`description`,label:`群聊描述`,placeholder:`请输入群聊描述`,disabled:n,rows:4,rules:[{required:!0,message:`请输入群聊描述`}]})]})})})}var Y=(e,t)=>e.participants.find(e=>e!==t)??e.participants[0]??e._id,X=({conversation:e,allUsers:t,currentUserId:n})=>{let r=Y(e,n),i=t.find(e=>e.userId===r);return{peerUserId:r,displayName:i?.userName??r??e._id,avatarUrl:i?.avatarUrl,info:r===e._id?`${e.msg.length} messages`:r}};function ee({onSelectConversation:e,className:t,style:n,conversationContentStyle:r,conversationAvatarStyle:i}){let a=u.Empty,o=B(e=>e.conversations),s=B(e=>e.channels),d=B(e=>e.activeConversationId),f=B(e=>e.isConversationsLoading),p=S(e=>e.connectionStatus),m=B(e=>e.tabbarValue),g=B(e=>e.setTabbarValue),_=R(e=>e.currentUser),b=R(e=>e.allUserList),{formatDateTime:x}=G(),[C,w]=(0,c.useState)(!1),[T,E]=(0,c.useState)(!1),[D,O]=(0,c.useState)(!1),k=f||p!==`connected`,A=()=>{O(!1),w(!0)},j=()=>{O(!1),E(!0)},M=()=>{k||O(e=>!e)},N=[{value:`conversations`,label:`单聊`,icon:(0,h.jsx)(y.ChatIcon,{}),badge:o.some(e=>e.unreadDot)},{value:`channels`,label:`群聊`,icon:(0,h.jsx)(y.ChatDoubleIcon,{}),badge:s.some(e=>e.unreadDot)}];return(0,h.jsxs)(l.Sidebar,{className:t,position:`left`,scrollable:!1,style:n,children:[(0,h.jsxs)(l.ConversationHeader,{children:[(0,h.jsx)(l.Avatar,{name:_?.userName??`Current User`,src:_?.avatarUrl??`https://chatscope.io/storybook/react/assets/emily-xzL8sDL2.svg`}),(0,h.jsx)(l.ConversationHeader.Content,{userName:_?.userName??`Current User`}),(0,h.jsx)(l.ConversationHeader.Actions,{children:(0,h.jsx)(u.Dropdown,{position:`bottomLeft`,trigger:`custom`,clickToHide:!0,visible:D,onClickOutSide:()=>O(!1),render:(0,h.jsxs)(u.Dropdown.Menu,{children:[(0,h.jsx)(u.Dropdown.Item,{icon:(0,h.jsx)(y.ChatIcon,{}),onClick:A,children:`Add Conversation`}),(0,h.jsx)(u.Dropdown.Item,{icon:(0,h.jsx)(y.ChatDoubleIcon,{}),onClick:j,children:`Add Channel`})]}),children:(0,h.jsx)(`div`,{onClick:M,children:(0,h.jsx)(l.AddUserButton,{disabled:k})})})})]}),f?(0,h.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,h.jsx)(l.Loader,{})}):(0,h.jsx)(`div`,{className:`overflow-hidden overflow-y-auto flex-1`,children:m===`conversations`?o.length>0?o.map(t=>{let{avatarUrl:n,displayName:a}=X({conversation:t,allUsers:b,currentUserId:_?.userId});return(0,h.jsxs)(l.Conversation,{active:t._id===d,unreadDot:t.unreadDot,lastActivityTime:x(t.updatedAt),onClick:()=>e(t._id),children:[(0,h.jsx)(l.Avatar,{name:a,src:n??`https://chatscope.io/storybook/react/assets/emily-xzL8sDL2.svg`,style:i}),(0,h.jsx)(l.Conversation.Content,{name:a,style:r})]},t._id)}):(0,h.jsx)(`div`,{className:`flex h-full items-center justify-center rounded-[8px] border border-dashed border-slate-200`,children:(0,h.jsx)(a,{description:`暂无单聊会话`})}):s.length>0?s.map(t=>(0,h.jsxs)(l.Conversation,{active:t._id===d,unreadDot:t.unreadDot,lastActivityTime:x(t.updatedAt),onClick:()=>e(t._id),children:[(0,h.jsx)(l.Avatar,{name:t.name,src:K,style:i}),(0,h.jsx)(l.Conversation.Content,{name:t.name,style:r})]},t._id)):(0,h.jsx)(`div`,{className:`flex h-full items-center justify-center rounded-[8px] border border-dashed border-slate-200`,children:(0,h.jsx)(a,{description:`暂无群聊会话`})})}),(0,h.jsx)(v.TabBar,{value:m,onChange:e=>{g(String(e))},theme:`tag`,fixed:!1,split:!1,children:N.map((e,t)=>(0,h.jsx)(v.TabBarItem,{icon:e.icon,value:e.value,badgeProps:{dot:e.badge},children:e.label},e.value||t))}),(0,h.jsx)(W,{open:C,users:b,onCancel:()=>w(!1)}),(0,h.jsx)(J,{open:T,onCancel:()=>E(!1)})]})}function te(){return{isMobile:(0,b.useMediaQuery)({query:`(max-width: 640px)`})}}var Z=e=>e===`CHANNEL`?`CHANNEL`:`CONVERSATION`,Q=e=>typeof e==`object`&&e&&!Array.isArray(e)?e:null,ne=e=>{let t=Q(e);if(!t)return null;let n=Q(t.data)??t,r=Q(n.encryption),i=r?.text;return typeof i!=`string`||!i.trim()?null:{_id:typeof n._id==`string`?n._id:void 0,roomId:typeof n.roomId==`string`?n.roomId:void 0,roomType:Z(typeof n.roomType==`string`?n.roomType:void 0),senderId:typeof n.senderId==`string`?n.senderId:void 0,type:typeof n.type==`string`?n.type:void 0,status:typeof n.status==`string`?n.status:void 0,encryption:{scheme:typeof r?.scheme==`string`?r.scheme:void 0,text:i},sentAt:typeof n.sentAt==`string`?n.sentAt:void 0}},re=(e,t)=>{try{let n=new URL(e);return t.token&&n.searchParams.set(`token`,t.token),Object.entries(t.connectionParams??{}).forEach(([e,t])=>{t!==void 0&&n.searchParams.set(e,String(t))}),n.toString()}catch{return e}},ie=e=>JSON.stringify({event:`message:send`,data:{roomType:Z(e.roomType),roomId:e.roomId,type:e.type??`TEXT`,ciphertext:e.encryption?.text??``}}),ae=(e,t)=>{try{let n=Q(JSON.parse(e));if(!n||(typeof n.event==`string`?n.event:void 0)!==`message:new`)return[];let r=ne(n);return!r||r.senderId===t.userId?[]:[r]}catch{return[]}},oe=(e,t,n,r=`CONVERSATION`)=>({_id:`local-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,roomId:t,roomType:r,senderId:n,type:`TEXT`,status:`SENT`,encryption:{scheme:`NONE`,text:e},sentAt:new Date().toISOString()});function se({autoConnect:e=!0,reconnect:t=!0,reconnectInterval:n=3e3,maxReconnectAttempts:r=3,wsUrl:i,context:a,onConnectionStatusChange:o,onError:s,onMessages:l,onNotify:u,onEvent:d}){let f=(0,c.useRef)(null),p=(0,c.useRef)(null),m=(0,c.useRef)(0),h=(0,c.useRef)(()=>{}),g=(0,c.useRef)(!1),_=(0,c.useRef)([]),v=(0,c.useRef)(a),y=(0,c.useRef)(o),b=(0,c.useRef)(s),x=(0,c.useRef)(l),C=(0,c.useRef)(u),w=(0,c.useRef)(d),[T,E]=(0,c.useState)(!1),D=S(e=>e.connectionStatus),O=S(e=>e.setWsAddress),k=S(e=>e.setConnectionStatus);(0,c.useEffect)(()=>{v.current=a},[a]),(0,c.useEffect)(()=>{y.current=o},[o]),(0,c.useEffect)(()=>{b.current=s},[s]),(0,c.useEffect)(()=>{x.current=l},[l]),(0,c.useEffect)(()=>{C.current=u},[u]),(0,c.useEffect)(()=>{w.current=d},[d]);let A=(0,c.useCallback)(e=>{k(e),y.current?.(e)},[k]),j=(0,c.useCallback)(()=>{p.current!==null&&(window.clearTimeout(p.current),p.current=null)},[]),M=(0,c.useCallback)(()=>{f.current?.readyState===WebSocket.OPEN&&(_.current.forEach(e=>{f.current?.send(e)}),_.current=[])},[]),N=(0,c.useCallback)(()=>{if(!i||!e||f.current&&(f.current.readyState===WebSocket.OPEN||f.current.readyState===WebSocket.CONNECTING))return;j(),g.current=!1,E(!1),A(`connecting`);let a=re(i,v.current),o;try{o=new WebSocket(a)}catch(e){console.error(`WebSocket connection failed:`,{wsUrl:i,resolvedUrl:a,error:e}),A(`error`),b.current?.(e);return}f.current=o,o.addEventListener(`open`,()=>{f.current===o&&(m.current=0,A(`connected`),M())}),o.addEventListener(`message`,e=>{if(typeof e.data!=`string`)return;try{let t=JSON.parse(e.data);if(t.event&&w.current?.(t.event,t.data),t.event===`message:notify`&&t.data){C.current?.(t.data);return}}catch{}let t=ae(e.data,v.current);x.current?.(t)}),o.addEventListener(`close`,e=>{if(f.current===o){if(console.error(`WebSocket close event:`,{wsUrl:i,resolvedUrl:a,code:e.code,reason:e.reason,wasClean:e.wasClean,readyState:o.readyState}),f.current=null,g.current){A(`disconnected`);return}if(A(`disconnected`),t){if(m.current>=r){E(!0);return}m.current+=1,j(),p.current=window.setTimeout(()=>{h.current()},n)}}}),o.addEventListener(`error`,e=>{f.current===o&&(console.error(`WebSocket error event:`,{wsUrl:i,resolvedUrl:a,readyState:o.readyState,event:e}),A(`error`),b.current?.(e))})},[e,j,M,t,n,r,i,A]),P=(0,c.useCallback)(()=>{g.current=!0,j(),f.current?.close(),f.current=null},[j]),F=(0,c.useCallback)(()=>{i&&(g.current=!1,m.current=0,E(!1),j(),f.current&&(f.current.readyState===WebSocket.OPEN||f.current.readyState===WebSocket.CONNECTING)&&f.current.close(),h.current())},[j,i]),I=(0,c.useCallback)(t=>{if(f.current?.readyState===WebSocket.OPEN){f.current.send(t);return}_.current.push(t),e&&N()},[e,N]),L=(0,c.useCallback)(e=>{I(ie(e))},[I]);return(0,c.useEffect)(()=>{O(i)},[O,i]),(0,c.useEffect)(()=>{h.current=N},[N]),(0,c.useEffect)(()=>i?(N(),()=>{P()}):(m.current=0,E(!1),window.setTimeout(()=>A(`idle`),0),()=>{j()}),[j,N,P,A,i]),(0,c.useMemo)(()=>({status:D,resolvedWsUrl:i,sendMessage:L,sendPayload:I,reconnect:F,hasReconnectExhausted:T}),[T,F,L,I,D,i])}function ce({onMessageReceive:e}){let t=B(e=>e.conversations),n=B(e=>e.channels),r=B(e=>e.activeConversationId),i=B(e=>e.ensureConversation),a=B(e=>e.appendMessages),o=B(e=>e.setActiveConversationId),s=(0,c.useCallback)(e=>{o(e)},[o]),l=(0,c.useCallback)((t,n)=>{let o=n??t[0]?.roomId??r;if(!o){t.forEach(t=>{e?.(t)});return}i(o,{roomType:t[0]?.roomType===`CHANNEL`?`CHANNEL`:`CONVERSATION`}),a(o,t.map(e=>({...e,roomId:e.roomId??o}))),t.forEach(t=>{e?.(t)})},[r,a,i,e]),u=(0,c.useMemo)(()=>[...t,...n].find(e=>e._id===r),[r,n,t]);return{conversations:t,channels:n,activeConversationId:u?._id,messages:u?.msg??[],setActiveConversationId:s,appendMessages:l}}var $=()=>new Promise(e=>{window.requestAnimationFrame(()=>e())});function le(e={}){let{containerRef:t,elementId:n=`scrollRef`,threshold:r=80,behavior:i=`auto`}=e,a=(0,c.useCallback)(()=>t?.current??document.getElementById(n),[t,n]);return{scrollToBottom:(0,c.useCallback)(async()=>{await $();let e=a();e&&e.scrollTo({top:e.scrollHeight,behavior:i})},[i,a]),scrollToTop:(0,c.useCallback)(async()=>{await $();let e=a();e&&e.scrollTo({top:0,behavior:i})},[i,a]),scrollToBottomIfAtBottom:(0,c.useCallback)(async()=>{await $();let e=a();e&&e.scrollHeight-e.scrollTop-e.clientHeight<=r&&e.scrollTo({top:e.scrollHeight,behavior:i})},[i,a,r])}}function ue({allUserList:e,autoConnect:t=!0,connectionParams:n,disabled:r=!1,onConnectionStatusChange:i,onError:a,onMessageReceive:o,optimisticSend:s=!0,wsUrl:l,httpUrl:d,token:f,userId:p}){let[m,h]=(0,c.useState)(``),{scrollToBottom:g}=le(),_=R(e=>e.setAllUserList),v=R(e=>e.setCurrentUser),y=R(e=>e.upsertUsersFromMessages),b=B(e=>e.setConversations),x=B(e=>e.setChannels),C=B(e=>e.setConversationMessages),w=B(e=>e.setConversationUnreadDot),T=B(e=>e.setConversationsLoading),D=B(e=>e.isMessagesLoading),A=B(e=>e.setMessagesLoading),j=S(e=>e.setHttpUrl),M=S(e=>e.setToken),{activeConversationId:N,appendMessages:P,channels:F,conversations:I,messages:L,setActiveConversationId:z}=ce({onMessageReceive:o}),V=(0,c.useMemo)(()=>e.find(e=>e.userId===p),[e,p]),H=(0,c.useMemo)(()=>[...I,...F].find(e=>e._id===N),[F,I,N]),U=V?.userName??`You`,W=V?.avatarUrl,{resolvedWsUrl:G,sendMessage:K,sendPayload:q,status:J,reconnect:Y,hasReconnectExhausted:X}=se({autoConnect:t,reconnect:!0,reconnectInterval:3e3,maxReconnectAttempts:3,wsUrl:l,context:(0,c.useMemo)(()=>({userId:p,userName:U,userAvatar:W,token:f,connectionParams:n}),[n,W,U,f,p]),onConnectionStatusChange:i,onError:a,onMessages:(0,c.useCallback)(e=>{y(e);let t=e.reduce((e,t)=>{let n=t.roomId??N;return n?(e[n]||(e[n]=[]),e[n].push(t),e):e},{});Object.entries(t).forEach(([e,t])=>{P(t,e)})},[P,N,y]),onNotify:(0,c.useCallback)(e=>{!e.roomId||e.senderId===p||e.roomId===N&&H?.hasReq||w(e.roomId,!0,e)},[H?.hasReq,N,w,p]),onEvent:(0,c.useCallback)(async(e,t)=>{if(e!==`channel:member_added`)return;let n=typeof t==`object`&&t&&!Array.isArray(t)?t:void 0;if(!(!n||n.roomType!==`CHANNEL`||typeof n.memberId!=`string`||n.memberId!==p)){u.Toast.success(`你已被邀请进了新群聊`);try{x(((await k()).data??[]).map(e=>({...e,roomType:`CHANNEL`,msg:[]})))}catch(e){a?.(e)}}},[a,x,p])});return(0,c.useEffect)(()=>{_(e)},[e,_]),(0,c.useEffect)(()=>{j(d)},[d,j]),(0,c.useEffect)(()=>{f!==void 0&&M(f)},[M,f]),(0,c.useEffect)(()=>{if(J!==`connected`)return;let e=!1;return(async()=>{T(!0);try{let[t,n]=await Promise.all([E(),k()]),r=t,i=n;if(e)return;b((r.data??[]).map(e=>({...e,roomType:`CONVERSATION`,msg:[]}))),x((i.data??[]).map(e=>({...e,roomType:`CHANNEL`,msg:[]})))}catch(t){e||a?.(t)}finally{e||T(!1)}})(),()=>{e=!0}},[a,x,b,T,J]),(0,c.useEffect)(()=>{p&&v({userId:p,userName:U,avatarUrl:W})},[W,U,v,p]),(0,c.useEffect)(()=>{!N||!H?.hasReq||!H.unreadDot||w(N,!1)},[H?.hasReq,H?.unreadDot,N,w]),(0,c.useEffect)(()=>{if(!N||H?.hasReq){g();return}let e=!1,t=H?.roomType??`CONVERSATION`;return(async()=>{A(!0);try{q(JSON.stringify({event:`room:join`,data:{roomType:t,roomId:N}}));let n=await O(N,t);if(e)return;C(N,(n.data?[...n.data].reverse():[]).map(e=>({...e,roomId:e.roomId??N,roomType:t}))),g()}catch(t){e||a?.(t)}finally{A(!1)}})(),()=>{e=!0}},[H?.hasReq,H?.roomType,a,N,q,C,A,g]),{conversations:I,activeConversationId:N,connectionStatus:J,hasReconnectExhausted:X,inputValue:m,isMessagesLoading:D,messages:L,resolvedDisabled:r||!G||!N,handleConversationSelect:z,handleChange:(0,c.useCallback)((e,t,n)=>{h(t||n||e)},[]),handleReconnect:Y,handleSend:(0,c.useCallback)((e,t,n)=>{let r=(t||n||e).trim();if(!r||!N)return;let i=oe(r,N,p,H?.roomType??`CONVERSATION`);s&&P([i],N),K(i),h(``)},[H?.roomType,P,s,N,K,p])}}function de({placeholder:e=`Type message here`,className:t,disabled:n=!1,...r}){let i=[`flex w-full flex-col h-full`,t].filter(Boolean).join(` `),a={height:`100%`},[o,s]=(0,c.useState)(!1),[d,f]=(0,c.useState)({}),[p,m]=(0,c.useState)({}),[g,_]=(0,c.useState)({}),[v,y]=(0,c.useState)({}),[b,x]=(0,c.useState)(!1),[S,C]=(0,c.useState)(!1),w=(0,c.useRef)(null),{isMobile:T}=te(),{activeConversationId:E,connectionStatus:D,conversations:O,handleChange:k,handleConversationSelect:A,handleReconnect:j,handleSend:M,hasReconnectExhausted:P,inputValue:F,isMessagesLoading:I,messages:L,resolvedDisabled:z}=ue({...r,disabled:n}),V=R(e=>e.currentUser),H=R(e=>e.allUserList),U=B(e=>e.channels),G=B(e=>e.setActiveConversationId),K=(0,c.useMemo)(()=>[...O,...U].find(e=>e._id===E),[E,U,O]),J=(0,c.useMemo)(()=>K&&`members`in K?K:void 0,[K]),Y=(0,c.useMemo)(()=>{if(K)return`name`in K?{avatarUrl:void 0,displayName:K.name||`Channel`,info:void 0}:X({conversation:K,allUsers:H,currentUserId:V?.userId})},[K,H,V?.userId]),Z=(0,c.useMemo)(()=>{if(P)return`长连接重连次数已用完,请手动重连`;switch(D){case`idle`:return`等待建立长连接`;case`connecting`:return`长连接正在连接中`;case`disconnected`:return`长连接已断开,正在尝试重连`;case`error`:return`长连接连接失败`;default:return``}},[D,P]),Q=S&&!P&&D!==`connected`,ne=(0,c.useMemo)(()=>(0,h.jsx)(`div`,{className:`flex justify-end gap-[12px]`,children:(0,h.jsx)(u.Button,{loading:Q,theme:`solid`,type:`primary`,onClick:j,children:`继续重连`})}),[j,Q]),re=(0,c.useCallback)(e=>{A(e),o&&s(!1)},[A,o]),ie=(0,c.useCallback)(()=>{s(e=>!e),G(void 0)},[G]),ae=(0,c.useCallback)(()=>{J&&x(!0)},[J]);return(0,c.useEffect)(()=>{T&&!E&&s(!0)},[E,T]),(0,c.useEffect)(()=>{if(o){f({display:`flex`,flexBasis:`auto`,width:`100%`,maxWidth:`100%`}),_({display:`flex`}),y({marginRight:`1em`}),m({display:`none`});return}f({}),_({}),y({}),m({})},[o]),(0,c.useEffect)(()=>{P&&C(!0)},[P]),(0,c.useEffect)(()=>{D===`connected`&&C(!1)},[D]),(0,h.jsx)(`div`,{className:i,children:(0,h.jsxs)(`div`,{ref:w,className:`relative h-full w-full overflow-hidden border border-slate-200 bg-white shadow-[0_18px_48px_rgba(15,23,42,0.08),0_8px_20px_rgba(15,23,42,0.06)] [&_.cs-main-container]:border-0 [&_.cs-main-container]:bg-transparent [&_.cs-chat-container]:bg-[linear-gradient(180deg,_#f8fafc,_#ffffff_28%)] [&_.cs-message-input]:border-t [&_.cs-message-input]:border-slate-200 [&_.cs-message-input]:bg-white/95 [&_.cs-message-input__content-editor-wrapper]:bg-slate-50 [&_.cs-message-list]:bg-transparent`,style:a,children:[(0,h.jsx)(u.Spin,{tip:Z,spinning:D!==`connected`,wrapperClassName:`h-full!`,childStyle:{height:`100%`},children:(0,h.jsxs)(l.MainContainer,{responsive:!0,className:`text-[16px]!`,children:[(0,h.jsx)(ee,{onSelectConversation:re,style:d,conversationContentStyle:g,conversationAvatarStyle:v}),(0,h.jsx)(q,{hasActiveConversation:!!E,connectionStatus:D,hasReconnectExhausted:P,isMessagesLoading:I,messages:L,inputValue:F,placeholder:e,resolvedDisabled:z,headerAvatar:Y?.avatarUrl,headerName:Y?.displayName??`Conversation`,headerInfo:Y?.info,isChannel:!!J,currentUserId:V?.userId,onAddMemberClick:ae,onBackClick:ie,onReconnect:j,style:p,onChange:k,onSend:M}),(0,h.jsx)(W,{open:b,users:H,mode:`channelMember`,channelId:J?._id,channelName:J?.name,onCancel:()=>x(!1)})]})}),(0,h.jsx)(N,{open:S,title:`长连接已断开`,description:`自动重连已失败,是否继续重连?`,width:420,footer:ne,maskClosable:!1,closable:!1,closeOnEsc:!1,getPopupContainer:()=>w.current??document.body,onCancel:()=>{},children:(0,h.jsxs)(`div`,{className:`text-[14px] leading-[24px] text-slate-600`,children:[`当前连接状态:`,Z||`长连接连接异常`]})})]})})}exports.NexusChatUI=de,exports.useChatConnection=se,exports.useChatMessages=ce,exports.useNexusChat=ue;
package/dist/index.js CHANGED
@@ -1391,6 +1391,7 @@ function Oe({ placeholder: a = "Type message here", className: o, disabled: s =
1391
1391
  childStyle: { height: "100%" },
1392
1392
  children: /* @__PURE__ */ A(d, {
1393
1393
  responsive: !0,
1394
+ className: "text-[16px]!",
1394
1395
  children: [
1395
1396
  /* @__PURE__ */ k(me, {
1396
1397
  onSelectConversation: Z,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexus-chat-ui",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "A React 19 chat component with built-in WebSocket logic, built with Chatscope, Vite, and TypeScript.",
5
5
  "type": "module",
6
6
  "license": "MIT",