@mirantes-micro/foundation-design-system 1.2.197 → 1.2.199

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1614,7 +1614,7 @@ mutation CreateParticipant($input: CreateParticipantInput!) {
1614
1614
  }
1615
1615
  }
1616
1616
  }
1617
- `;function sI(){let{user:e,chatApiUrl:t,queryClient:o}=I(),{mutate:r,isPending:n}=pe({mutationFn:a=>Q(this,null,function*(){var c,d;if(!a.conversationId||!t)return null;let s=(c=a.participants)==null?void 0:c.find(l=>{var m,p;return ((p=(m=l.users)==null?void 0:m[0])==null?void 0:p.id)===a.currentUserId}),i=yield t9.request(t,aI,{input:{conversationId:a.conversationId,userIds:a.userIds,addedByParticipantId:s==null?void 0:s.id}},{"x-access-token":(d=e==null?void 0:e.accessToken)!=null?d:""});return i==null?void 0:i.createParticipant}),onSuccess:(a,s)=>{s.conversationId&&(o==null||o.invalidateQueries({queryKey:["conversation",s.conversationId]})),o==null||o.invalidateQueries({queryKey:["conversations",e==null?void 0:e.id]});}});return {addParticipants:r,isAddingParticipants:n}}function iI({participant:e,name:t,description:o,image:r,isOpen:n,onClose:a,createdAt:s,creatorName:i,onAddMembers:c,currentUserId:d,currentUserRole:l,conversationId:m}){let{isMobile:p}=Zd(),{debouncedSearchTerm:u,setValue:g,value:f}=js("",400),{activeTab:v,setActiveTab:h,showAddMembers:b,setShowAddMembers:x,isAdding:w,memberSearchQuery:N,setMemberSearchQuery:A}=GA(),{addParticipants:P,isAddingParticipants:M}=sI(),{data:S,fetchNextPage:E,hasNextPage:T,isFetchingNextPage:k,isLoading:H}=Qd({contactsOnly:false,search:u}),L={participant:e,name:t,description:o,image:r,createdAt:s,creatorName:i,currentUserId:d,currentUserRole:l,activeTab:v,setActiveTab:h,showAddMembers:b,memberSearchQuery:N,setMemberSearchQuery:A,searchQuery:f,onSearchQuery:g,contacts:S,isAdding:w||M,fetchNextPage:E,hasNextPage:T,isFetchingNextPage:k||H,onAddMembersClick:()=>{x(true),g("");},onConfirmAddMembers:F=>Q(this,null,function*(){!F||F.length===0||!m||P({conversationId:m,userIds:F,currentUserId:d,participants:e},{onSuccess:()=>{x(false),h("members");},onError:()=>{x(false),h("members");}});}),onBackFromAddMembers:()=>{x(false),g("");},onClose:a,isMobile:p,conversationId:m};return p?X__namespace.default.createElement(ta,{isOpen:n,onClose:a,className:"w-full h-full rounded-t-2xl p-0",hideCloseBlock:true},X__namespace.default.createElement(f9,y({},L))):X__namespace.default.createElement(ca,{isOpen:n,onClose:a,showCloseButton:false,closeOnClickOutside:true,className:"max-h-[90vh] w-[31.25rem] overflow-hidden",disableFullScreen:true},X__namespace.default.createElement(f9,y({},L)))}var K5=({isOpen:e,onClose:t,selectedGroup:o,onAddMembers:r})=>{var l,m,p;let{user:n}=I(),a=(l=n==null?void 0:n.id)!=null?l:"";if(!o)return null;let s=(m=o==null?void 0:o.participants)==null?void 0:m.find(u=>{var g;return ((g=u==null?void 0:u.user)==null?void 0:g.id)===a}),i=s==null?void 0:s.role,c=((p=o==null?void 0:o.participants)==null?void 0:p.map(u=>{var g,f,v,h;return {id:u==null?void 0:u.id,role:u==null?void 0:u.role,users:u!=null&&u.user?[{id:(g=u==null?void 0:u.user)==null?void 0:g.id,name:(f=u==null?void 0:u.user)==null?void 0:f.name,avatar:((v=u==null?void 0:u.user)==null?void 0:v.avatar)||void 0,slug:(h=u==null?void 0:u.user)==null?void 0:h.slug}]:void 0}}))||[],d=()=>{var g,f;let u=(g=o==null?void 0:o.participants)==null?void 0:g.find(v=>(v==null?void 0:v.role)==="OWNER");return ((f=u==null?void 0:u.user)==null?void 0:f.name)||(o==null?void 0:o.ownerId)||"Unknown"};return X__namespace.default.createElement(iI,{isOpen:e,onClose:t,participant:c,name:(o==null?void 0:o.name)||void 0,description:(o==null?void 0:o.description)||void 0,createdAt:o==null?void 0:o.createdAt,creatorName:d(),onAddMembers:r,currentUserId:a!=null?a:"",currentUserRole:i,conversationId:o==null?void 0:o.id})};var NJ=({chats:e,selectedChatId:t,onChatSelect:o,onBack:r,onCloseConversation:n,showBackButton:a,isLoading:s,canCreateConversation:i=true,showFilters:c=true,fetchNextPage:d,hasNextPage:l,isFetchingNextPage:m,activeFilter:p="all",onFilterChange:u,searchQuery:g="",onSearchChange:f,conversations:v=[],chatForPage:h,isCompactMode:b=false})=>{let{t:x}=ct(),w=X.useRef(null),C=X.useRef(null),N=KS(),A=nA(N,v,o,h);aA({containerRef:C,fetchNextPage:d,hasNextPage:l,isFetchingNextPage:m});let P=e==null?void 0:e.filter(E=>E==null?void 0:E.isGroup).length,M=e==null?void 0:e.filter(E=>E==null?void 0:E.isArchived).length,S=[{id:"all",label:x("all")},{id:"unread",label:x("unread")},{id:"favorites",label:x("favorites")},{id:"groups",label:x("groups"),count:P},{id:"archived",label:x("archived"),count:M}];return N.viewMode==="createGroup"||N.viewMode==="newChat"?X__namespace.default.createElement(mA,{viewMode:N.viewMode,isTransitioning:N.isTransitioning,transitionDirection:N.transitionDirection,onNavigateBack:A.handleNavigateBack,onSelectContact:A.handleSelectContact,onCreateGroup:A.handleCreateGroup,selectedContactId:N.selectedContactId,isCreating:A.isCreatingConversation}):X__namespace.default.createElement(X__namespace.default.Fragment,null,X__namespace.default.createElement("div",{ref:w,className:U("flex flex-col h-full rounded-[1rem] bg-white w-full transition-all duration-200 ease-out overflow-hidden",b?"p-2 gap-2":"p-6 gap-6",A.getAnimationClass())},X__namespace.default.createElement("div",{className:"flex-shrink-0"},b?null:X__namespace.default.createElement(fA,{showBackButton:a,onBack:r,canCreateConversation:i,onOpenCreateGroup:A.handleOpenCreateGroup,onOpenNewChat:A.handleOpenNewChat,showCreateDrawer:N.showCreateDrawer,setShowCreateDrawer:N.setShowCreateDrawer,isCompactMode:b}),X__namespace.default.createElement(hA,{searchQuery:g,onSearchChange:f,isCompactMode:b})),!b&&c&&X__namespace.default.createElement(yA,{filters:S,activeFilter:p,onFilterChange:u}),X__namespace.default.createElement(c9,{ref:C,chats:e,selectedChatId:t,chatForPage:h,onChatSelect:o,onGroupInfo:A.handleGroupInfo,onContactInfo:A.handleContactInfo,isLoading:s,isFetchingNextPage:m,searchQuery:g,isCompactMode:b,onNewChat:A.handleOpenNewChat,onBack:r,onCloseConversation:n})),X__namespace.default.createElement(K5,{isOpen:N.groupDetailsOpen,onClose:A.handleCloseGroupDetails,selectedGroup:A.getSelectedGroup(),onAddMembers:A.handleAddMembers}),X__namespace.default.createElement(Ho,{open:N.showNewChatDrawer,onOpenChange:E=>{N.setShowNewChatDrawer(E);}},X__namespace.default.createElement(sn,{className:"z-[9999999]"}),X__namespace.default.createElement(Uo,{className:"bg-white w-full h-[85vh] rounded-t-lg p-0 z-[9999999]"},X__namespace.default.createElement(O5,{onBack:()=>N.setShowNewChatDrawer(false),onSelectContact:A.handleSelectContactFromDrawer,isCreating:A.isCreatingConversation,selectedContactId:N.selectedContactId,showBackButton:false}))))},dI=NJ;function mI({conversationId:e,message:t,queryClient:o}){o.setQueriesData({queryKey:["conversations"],exact:false},r=>r!=null&&r.pages?z(y({},r),{pages:r.pages.map(n=>{var a;return z(y({},n),{data:(a=n.data)==null?void 0:a.map(s=>{var i;return s.id===e?z(y({},s),{message:z(y({},t),{sender:(i=t.sender)!=null?i:null}),lastMessageAt:t.createdAt}):s})})})}):r);}function pI({conversationId:e,message:t,queryClient:o}){o.setQueryData(["messages",e],r=>!(r!=null&&r.pages)||r.pages.some(a=>{var s;return (s=a.messages)==null?void 0:s.some(i=>i.id===t.id)})?r:z(y({},r),{pages:r.pages.map((a,s)=>{var i;return s===0?z(y({},a),{messages:[t,...(i=a.messages)!=null?i:[]]}):a})}));}function SJ({conversationId:e,messageIds:t,queryClient:o}){o.setQueryData(["messages",e],r=>r!=null&&r.pages?z(y({},r),{pages:r.pages.map(n=>{var a;return z(y({},n),{messages:(a=n.messages)==null?void 0:a.filter(s=>{var i;return !t.includes((i=s.id)!=null?i:"")})})})}):r);}function uI(e){let {socketApiUrl:t,accessToken:o,userId:r,pageId:n,chatForPage:a=false,chatHeaderOption:s="all",pageChatHeaderOption:i="all",selectedChat:c,onSelectedChatUpdate:d}=e,l=ja(),[m,p]=X.useState(null),[u,g]=X.useState(false),[f,v]=X.useState(false),[h,b]=X.useState({}),[x,w]=X.useState({}),[C,N]=X.useState({}),[A,P]=X.useState({messagesIds:[],action:void 0,userName:"",conversationId:""}),M=X.useRef(null),S=X.useRef(false),E=X.useRef(false),T=a?n:r;X.useEffect(()=>{M.current=new Audio(ou),M.current.volume=.5;let L=()=>{S.current=true,E.current&&M.current&&(M.current.currentTime=0,M.current.play().catch(()=>{}),E.current=false);};return ["click","keydown","touchstart"].forEach(F=>document.addEventListener(F,L,{once:true})),()=>{var F;["click","keydown","touchstart"].forEach(O=>document.removeEventListener(O,L)),(F=M.current)==null||F.pause(),M.current=null;}},[]);let H=X.useCallback(()=>{M.current&&(M.current.currentTime=0,S.current?M.current.play().catch(L=>{L.name==="NotAllowedError"&&(E.current=true);}):E.current=true);},[]),D=X.useCallback(L=>{var R,te,Y,ae,le,ue;let F=(L==null?void 0:L.action)==="MESSAGE_CREATED"?L.data:L,O=(F==null?void 0:F.senderId)||((R=F==null?void 0:F.sender)==null?void 0:R.id)||(F==null?void 0:F.userId),B=a?O===n:O===r,_=(Y=(te=L==null?void 0:L.data)==null?void 0:te.actions)!=null?Y:L==null?void 0:L.action;switch(_){case "MESSAGE_DELETED":P({action:"MESSAGE_DELETED",messagesIds:L.messageIds||((ae=L==null?void 0:L.data)==null?void 0:ae.messageIds)||[],conversationId:L.conversationId||(F==null?void 0:F.conversationId)});let be=L.conversationId||(F==null?void 0:F.conversationId),Be=L.messageIds||((le=L==null?void 0:L.data)==null?void 0:le.messageIds)||[];be&&Be.length>0&&SJ({conversationId:be,messageIds:Be,queryClient:l});return;case "removedAdmin":case "madeAdmin":case "remove":case "add":case "left":P({action:_,conversationId:L.conversationId||(F==null?void 0:F.conversationId),userName:(ue=L==null?void 0:L.data)==null?void 0:ue.body}),l.invalidateQueries({queryKey:["conversations"]});return}if(!B){v(true),H();let be=L.conversationId||(F==null?void 0:F.conversationId);b(Be=>z(y({},Be),{[be]:true})),setTimeout(()=>{b(Be=>z(y({},Be),{[be]:false}));},2e3);}let W=L.conversationId||(F==null?void 0:F.conversationId),K=(F==null?void 0:F.pageId)||((F==null?void 0:F.senderId)===n?n:void 0);(a||!!K)&&n?(l.invalidateQueries({queryKey:["conversations",n]}),mI({conversationId:W,message:F,queryClient:l}),pI({conversationId:W,message:F,queryClient:l})):r&&(l.invalidateQueries({queryKey:["conversations",r]}),mI({conversationId:W,message:F,queryClient:l}),pI({conversationId:W,message:F,queryClient:l}));},[r,n,a,s,i,l,H]),G=X.useCallback(L=>{let{messageId:F,reaction:O,count:B}=L;F&&O&&(N(_=>{var W,K,j;return z(y({},_),{[F]:z(y({},(W=_[F])!=null?W:{}),{[O]:B!=null?B:((j=(K=_[F])==null?void 0:K[O])!=null?j:0)+1})})}),l.invalidateQueries({queryKey:["message-reactions",F]}));},[l]);X.useEffect(()=>{if(!t||!T)return;let L=null,F=true;return Q(this,null,function*(){try{let{io:B}=yield import('socket.io-client');if(!F)return;let _={};a&&n&&(_.pageId=n),r&&(_.userId=r),L=B(t,{transports:["websocket","polling"],auth:{token:o!=null?o:""},query:_,autoConnect:!0}),L.on("connect",()=>{F&&g(!0);}),L.on("disconnect",()=>{F&&g(!1);}),L.on("userOnline",({userId:W})=>{F&&(w(K=>z(y({},K),{[W]:!0})),(c==null?void 0:c.id)===W&&d&&d(z(y({},c),{isOnline:!0})));}),L.on("userOffline",({userId:W})=>{F&&(w(K=>z(y({},K),{[W]:!1})),(c==null?void 0:c.id)===W&&d&&d(z(y({},c),{isOnline:!1})));}),L.on("onlineUsers",W=>{if(F&&W!=null&&W.users&&Array.isArray(W.users)){let K={};W.users.forEach(j=>{K[j]=!0;}),w(K);}}),L.on("newMessage",D),L.on("reaction",G),p(L);}catch(B){console.warn("Failed to connect socket:",B);}}),()=>{F=false,L==null||L.disconnect(),p(null);}},[t,o,T,a,r,n,D,G,c==null?void 0:c.id,d]);let V=X.useCallback(L=>{var F,O,B,_;if(m!=null&&m.connected){let W=L.pageId?(F=n!=null?n:r)!=null?F:"":(B=(O=L.senderId)!=null?O:r)!=null?B:"",K=z(y({},L),{userId:W,attachments:L==null?void 0:L.attachments});L.pageId&&(K.pageId=L.pageId,K.topic=(_=L.topic)!=null?_:""),m.emit("sendMessage",K);}},[m,r,n]);return {socket:m,isConnected:u,sendMessage:V,hasMessages:f,setHasMessages:v,onlineUsers:x,newMessages:h,realtimeReactions:C,messageAction:A}}function fI({chat:e,showBackButton:t,onBack:o,onGroupInfo:r,onContactInfo:n}){var a,s,i;return X__namespace.default.createElement("div",{className:"flex items-center justify-between bg-[#D0DEE533] p-4 md:m-4 md:rounded-[1rem] border-b border-border"},X__namespace.default.createElement("div",{className:"flex items-center gap-3"},t&&X__namespace.default.createElement("button",{onClick:o,className:"p-0 w-8 h-8 rounded-lg hover:bg-accent flex items-center justify-center"},X__namespace.default.createElement(lucideReact.ChevronLeft,{className:"w-5 h-5"})),X__namespace.default.createElement(se,{name:(a=e==null?void 0:e.name)!=null?a:"",src:(s=e==null?void 0:e.avatar)!=null?s:"",type:e!=null&&e.isGroup?"community":"user",className:"h-10 w-10"}),X__namespace.default.createElement("div",null,X__namespace.default.createElement("span",{className:"font-normal text-body-md md:text-[0.875rem] text-[#050910]"},dt((i=e==null?void 0:e.name)!=null?i:"")),X__namespace.default.createElement("p",{className:U("text-body-sm md:text-body-md",{"text-primary":e==null?void 0:e.isOnline,"text-text-secondary":!(e!=null&&e.isOnline)})},e!=null&&e.isOnline?"Online":"Offline"))),X__namespace.default.createElement("div",{className:"flex-shrink-0"},X__namespace.default.createElement(U5,{chat:e,asMessageHeader:true,onContactInfo:n,onGroupInfo:r,onBack:o})))}function gI({creatorName:e,conversationId:t}){var h,b,x;let{conversation:o,isLoadingConversation:r}=Gs(t!=null?t:""),{locale:n}=I(),[a,s]=X.useState(false),i=(o==null?void 0:o.name)||"",c=(h=o==null?void 0:o.description)!=null?h:"",d=(x=(b=o==null?void 0:o.participants)==null?void 0:b.map(w=>w==null?void 0:w.user))!=null?x:[],l=d.find(w=>(w==null?void 0:w.name)===e),m=(l==null?void 0:l.avatar)||(o==null?void 0:o.image),p=(c==null?void 0:c.length)>120,u=!p||a?c:c.slice(0,120)+"...",g=5,f=d==null?void 0:d.slice(0,g),v=Math.max(0,(d==null?void 0:d.length)-g);return r?X__namespace.default.createElement("div",{className:"w-full md:w-[22dvw] flex flex-col gap-4 items-center justify-center h-full rounded-md p-6"},X__namespace.default.createElement("div",{className:"w-16 h-16 rounded-full bg-gray-200 animate-pulse"}),X__namespace.default.createElement("div",{className:"h-4 w-32 bg-gray-200 rounded animate-pulse"}),X__namespace.default.createElement("div",{className:"h-3 w-48 bg-gray-200 rounded animate-pulse"}),X__namespace.default.createElement("div",{className:"flex -space-x-3 overflow-hidden mt-2"},[...Array(3)].map((w,C)=>X__namespace.default.createElement("div",{key:C,className:"w-8 h-8 rounded-full bg-gray-200 animate-pulse"})))):X__namespace.default.createElement("div",{className:"w-full md:w-[22dvw] flex flex-col gap-4 items-center justify-center h-full rounded-md p-6 "},X__namespace.default.createElement(se,{name:e||i,src:m,className:"w-16 h-16"}),X__namespace.default.createElement("p",{className:"text-body-sm md:text-body-lg font-bold text-text-secondary text-center"},q(n,"group-created",{name:e||i})),c&&X__namespace.default.createElement("div",{className:"text-center text-gray-600 text-sm md:text-base max-w-full"},X__namespace.default.createElement("p",null,u),p&&X__namespace.default.createElement("button",{className:"text-primary text-xs mt-1 !mx-auto hover:underline",onClick:()=>s(w=>!w)},a?lt(n,"explore.see-less"):lt(n,"explore.see-more"))),(d==null?void 0:d.length)>0&&X__namespace.default.createElement("div",{className:"flex -space-x-3 overflow-hidden mt-2 flex-wrap justify-center"},f.map(w=>{var C;return X__namespace.default.createElement("div",{key:w==null?void 0:w.id,className:"relative group"},X__namespace.default.createElement(se,{name:(C=w==null?void 0:w.name)!=null?C:"",src:w==null?void 0:w.avatar,className:"w-8 h-8 border-2 border-white rounded-full shadow-sm"}),X__namespace.default.createElement("span",{className:"absolute bottom-10 left-1/2 -translate-x-1/2 whitespace-nowrap bg-black text-white text-xs rounded-md px-2 py-1 opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none"},w==null?void 0:w.name))}),v>0&&X__namespace.default.createElement("div",{className:"w-8 h-8 flex items-center justify-center bg-gray-200 text-gray-700 text-xs font-medium rounded-full border-2 border-white shadow-sm"},"+",v)))}function hI(e){if(!e)return;let t=e.match(/^(.*?)\s+created the group/i);return t?t[1]:void 0}var vI=e=>{let t=[],o="";return e.forEach(r=>{let n=r!=null&&r.createdAt?new Date(r==null?void 0:r.createdAt).toLocaleDateString():"Today";n!==o&&(o=n,t.push({type:"date",date:n})),t.push({type:"message",message:r});}),t};var bI=e=>{let t=e.find(o=>{var r;return (r=o==null?void 0:o.body)==null?void 0:r.toLowerCase().includes("created the group")});return t&&hI(t.body)||""};function Cp({isSent:e}){return X__namespace.default.createElement("div",{className:`flex ${e?"justify-end":"justify-start"} gap-2`},!e&&X__namespace.default.createElement(It,{className:"w-8 h-8 rounded-full bg-gray-200"}),X__namespace.default.createElement(It,{className:`h-16 ${e?"w-48":"w-64"} rounded-2xl bg-gray-200`}))}var xI=({date:e})=>X__namespace.default.createElement("div",{className:"flex items-center justify-center py-2"},X__namespace.default.createElement("span",{className:"px-3 py-1 bg-muted rounded-full text-xs text-muted-foreground"},e));function EJ(e){return X__namespace.createElement("svg",y({width:52,height:40,fill:"none"},e),X__namespace.createElement("path",{d:"M42.667 1H9.333C4.73 1 1 4.564 1 8.943V24.65c0 3.82 2.82 7.012 6.582 7.78l-1.758 5.203 8.138-5.011h28.705c4.6 0 8.333-3.564 8.333-7.944V8.973C51 4.564 47.267 1 42.667 1z",fill:"#F2F3F4",stroke:"#E4EBF1",strokeWidth:2,strokeMiterlimit:10}))}var kJ=X__namespace.memo(EJ),wI=kJ;function Z5(e){let t={"Content-Type":"application/json"};return e&&(t["x-access-token"]=e),t}function Y5(e){let {chatApiUrl:t,user:o,page:r}=I(),{conversationId:a,perPage:s=20,enabled:i=true,chatForPage:c=false}=typeof e=="object"&&e!==null&&"conversationId"in e?e:{conversationId:e,perPage:20,enabled:true,chatForPage:false},d=v5("messages",a!=null?a:"",c?r==null?void 0:r.id:o==null?void 0:o.id);return ut({queryKey:d,queryFn:m=>Q(this,[m],function*({pageParam:l=1}){var p,u,g,f,v,h,b,x,w,C;if(!a)return {messages:[],hasMore:false,meta:null,nextPage:1,lastPage:1};try{let N=Z5(o==null?void 0:o.accessToken),A={};c&&(r!=null&&r.id)&&(A.pageId=r.id);let P=yield t9__default.default(t!=null?t:"",e9,{conversationId:a,options:{filter:Object.keys(A).length>0?A:void 0,page:l,perPage:s}},N),M=P==null?void 0:P.getMessagesByConversation;return {messages:(p=M==null?void 0:M.data)!=null?p:[],hasMore:((g=(u=M==null?void 0:M.meta)==null?void 0:u.currentPage)!=null?g:0)<((v=(f=M==null?void 0:M.meta)==null?void 0:f.lastPage)!=null?v:0),meta:(h=M==null?void 0:M.meta)!=null?h:null,nextPage:((x=(b=M==null?void 0:M.meta)==null?void 0:b.currentPage)!=null?x:0)+1,lastPage:(C=(w=M==null?void 0:M.meta)==null?void 0:w.lastPage)!=null?C:1}}catch(N){return {messages:[],hasMore:false,meta:null,nextPage:1,lastPage:1}}}),getNextPageParam:l=>{if(l&&typeof l=="object"&&typeof(l==null?void 0:l.hasMore)=="boolean"&&typeof(l==null?void 0:l.nextPage)=="number")return l!=null&&l.hasMore?l==null?void 0:l.nextPage:void 0},initialPageParam:1,enabled:!!a&&i})}var CI=({chat:e,chatForPage:t,activeFilter:o,realtimeReactions:r,isSelectMode:n=false,selectedMessageIds:a=[],onSelectMessage:s,onClearSelection:i})=>{var V,L;let{user:c,page:d}=I(),{t:l}=ct(),m=X.useRef(null),p=X.useRef(null),u=X.useRef(true),g=X.useRef(0),f=X.useRef(void 0),[v,h]=X.useState(false),[b,x]=X.useState(true),[w,C]=X.useState(null),{markChatAsRead:N}=Gd((V=e==null?void 0:e.id)!=null?V:"",t,o),A=X.useCallback(()=>{var F;(F=m.current)==null||F.scrollIntoView({behavior:"smooth"});},[]),{data:P,isLoading:M,fetchNextPage:S,hasNextPage:E,isFetchingNextPage:T}=Y5({conversationId:(L=e==null?void 0:e.id)!=null?L:"",perPage:20,enabled:!!(e!=null&&e.id),chatForPage:t!=null?t:false}),k=X__namespace.default.useMemo(()=>{var O;return [...((O=P==null?void 0:P.pages)==null?void 0:O.flatMap(B=>B==null?void 0:B.messages))||[]].sort((B,_)=>{let W=new Date((B==null?void 0:B.createdAt)||0).getTime(),K=new Date((_==null?void 0:_.createdAt)||0).getTime();return W-K})},[P==null?void 0:P.pages]),H=e?vI(k):[],D=e!=null&&e.isGroup?bI(k):"";X.useEffect(()=>{!M&&(e!=null&&e.id)&&((e==null?void 0:e.unreadCount)||0)>0&&N(e==null?void 0:e.id);},[e==null?void 0:e.id,e==null?void 0:e.unreadCount,M,N]),X.useEffect(()=>{f.current!==(e==null?void 0:e.id)&&(u.current=true,h(false),x(true),C(null),f.current=e==null?void 0:e.id);},[e==null?void 0:e.id]),X.useEffect(()=>{let F=p.current;if(!F)return;let O=F.scrollTop,B,_=()=>{let{scrollTop:W,scrollHeight:K,clientHeight:j}=F;B&&clearTimeout(B);let R=W<O;O=W;let te=K-W-j<50;x(te),R&&!te&&h(true),B=setTimeout(()=>{h(false);},500);};return F.addEventListener("scroll",_),()=>{F.removeEventListener("scroll",_),B&&clearTimeout(B);}},[]),X.useEffect(()=>{let F=p.current;if(!F||!T||!E)return;let{scrollTop:O,scrollHeight:B}=F;C({top:O,height:B});},[T,E]),X.useEffect(()=>{let F=p.current;if(!F||!w||!T)return;let{top:O,height:B}=w,W=F.scrollHeight-B;F.scrollTop=O+W,C(null);},[T,w]),X.useEffect(()=>{let F=p.current;if(!F)return;let O=k.length,B=O>g.current;u.current&&!M&&O>0?(setTimeout(()=>{var _;(_=m.current)==null||_.scrollIntoView({behavior:"auto"});},100),u.current=false,g.current=O):!u.current&&B&&!v&&(F.scrollHeight-F.scrollTop-F.clientHeight<100&&setTimeout(()=>{var W;(W=m.current)==null||W.scrollIntoView({behavior:"smooth"});},50),g.current=O);},[k.length,M,v]);let G=()=>{let F=p.current;if(!F||!E||T)return;let{scrollTop:O}=F;O<100&&S();};return (k==null?void 0:k.length)===0&&!M?X__namespace.default.createElement("div",{className:"w-full h-full flex flex-col items-center justify-center"},X__namespace.default.createElement(wI,null),X__namespace.default.createElement("p",{className:"text-body-sm md:text-[1rem] text-[#050910]"},l("empty-conversation"))):X__namespace.default.createElement("div",{className:"relative flex-1 min-h-0"},X__namespace.default.createElement("div",{ref:p,className:"h-full overflow-y-auto p-4 flex flex-col scrollbar-hide",onScroll:G},T&&X__namespace.default.createElement("div",{className:"flex justify-center py-2"},X__namespace.default.createElement(De,null)),M?X__namespace.default.createElement("div",{className:"space-y-3"},X__namespace.default.createElement(Cp,{isSent:false}),X__namespace.default.createElement(Cp,{isSent:true}),X__namespace.default.createElement(Cp,{isSent:false}),X__namespace.default.createElement(Cp,{isSent:true})):X__namespace.default.createElement("div",{className:"space-y-1 mt-auto"},(e==null?void 0:e.isGroup)&&D&&X__namespace.default.createElement("div",{className:"flex justify-center w-full mb-6"},X__namespace.default.createElement(gI,{conversationId:e==null?void 0:e.id,creatorName:D})),H.filter(F=>{var O;if(e!=null&&e.isGroup&&F.type==="message"&&(F!=null&&F.message)){let B=F.message;return !((O=B==null?void 0:B.body)==null?void 0:O.toLowerCase().includes("created the group"))}return true}).map((F,O)=>{var B,_,W;if((F==null?void 0:F.type)==="date")return X__namespace.default.createElement(xI,{key:`date-${O}`,date:F==null?void 0:F.date});if((F==null?void 0:F.type)==="message"&&(F!=null&&F.message)){let K=F==null?void 0:F.message,j=t?(K==null?void 0:K.senderId)===(d==null?void 0:d.id)||((B=K==null?void 0:K.sender)==null?void 0:B.id)===(d==null?void 0:d.id):((_=K==null?void 0:K.sender)==null?void 0:_.id)===(c==null?void 0:c.id)||(K==null?void 0:K.senderId)===(c==null?void 0:c.id),R=a.includes((W=K==null?void 0:K.id)!=null?W:"");return X__namespace.default.createElement(h0,{key:K==null?void 0:K.id,message:K,selectedConversation:e,isOwnMessage:j,activeFilter:o,chatForPage:t,isSelectMode:n,isSelected:R,onSelectMessage:s,onClearSelection:i,realtimeReactions:r})}return null})),X__namespace.default.createElement("div",{ref:m})),X__namespace.default.createElement(react.AnimatePresence,null,!b&&X__namespace.default.createElement(react.motion.button,{key:"scroll-to-bottom",initial:{opacity:0,x:60},animate:{opacity:1,x:0},exit:{opacity:0,x:60},transition:{duration:.3,ease:"easeOut"},onClick:A,className:`\r
1617
+ `;function sI(){let{user:e,chatApiUrl:t,queryClient:o}=I(),{mutate:r,isPending:n}=pe({mutationFn:a=>Q(this,null,function*(){var c,d;if(!a.conversationId||!t)return null;let s=(c=a.participants)==null?void 0:c.find(l=>{var m,p;return ((p=(m=l.users)==null?void 0:m[0])==null?void 0:p.id)===a.currentUserId}),i=yield t9.request(t,aI,{input:{conversationId:a.conversationId,userIds:a.userIds,addedByParticipantId:s==null?void 0:s.id}},{"x-access-token":(d=e==null?void 0:e.accessToken)!=null?d:""});return i==null?void 0:i.createParticipant}),onSuccess:(a,s)=>{s.conversationId&&(o==null||o.invalidateQueries({queryKey:["conversation",s.conversationId]})),o==null||o.invalidateQueries({queryKey:["conversations",e==null?void 0:e.id]});}});return {addParticipants:r,isAddingParticipants:n}}function iI({participant:e,name:t,description:o,image:r,isOpen:n,onClose:a,createdAt:s,creatorName:i,onAddMembers:c,currentUserId:d,currentUserRole:l,conversationId:m}){let{isMobile:p}=Zd(),{debouncedSearchTerm:u,setValue:g,value:f}=js("",400),{activeTab:v,setActiveTab:h,showAddMembers:b,setShowAddMembers:x,isAdding:w,memberSearchQuery:N,setMemberSearchQuery:A}=GA(),{addParticipants:P,isAddingParticipants:M}=sI(),{data:S,fetchNextPage:E,hasNextPage:T,isFetchingNextPage:k,isLoading:H}=Qd({contactsOnly:false,search:u}),L={participant:e,name:t,description:o,image:r,createdAt:s,creatorName:i,currentUserId:d,currentUserRole:l,activeTab:v,setActiveTab:h,showAddMembers:b,memberSearchQuery:N,setMemberSearchQuery:A,searchQuery:f,onSearchQuery:g,contacts:S,isAdding:w||M,fetchNextPage:E,hasNextPage:T,isFetchingNextPage:k||H,onAddMembersClick:()=>{x(true),g("");},onConfirmAddMembers:F=>Q(this,null,function*(){!F||F.length===0||!m||P({conversationId:m,userIds:F,currentUserId:d,participants:e},{onSuccess:()=>{x(false),h("members");},onError:()=>{x(false),h("members");}});}),onBackFromAddMembers:()=>{x(false),g("");},onClose:a,isMobile:p,conversationId:m};return p?X__namespace.default.createElement(ta,{isOpen:n,onClose:a,className:"w-full h-full rounded-t-2xl p-0",hideCloseBlock:true},X__namespace.default.createElement(f9,y({},L))):X__namespace.default.createElement(ca,{isOpen:n,onClose:a,showCloseButton:false,closeOnClickOutside:true,className:"max-h-[90vh] w-[31.25rem] overflow-hidden",disableFullScreen:true},X__namespace.default.createElement(f9,y({},L)))}var K5=({isOpen:e,onClose:t,selectedGroup:o,onAddMembers:r})=>{var l,m,p;let{user:n}=I(),a=(l=n==null?void 0:n.id)!=null?l:"";if(!o)return null;let s=(m=o==null?void 0:o.participants)==null?void 0:m.find(u=>{var g;return ((g=u==null?void 0:u.user)==null?void 0:g.id)===a}),i=s==null?void 0:s.role,c=((p=o==null?void 0:o.participants)==null?void 0:p.map(u=>{var g,f,v,h;return {id:u==null?void 0:u.id,role:u==null?void 0:u.role,users:u!=null&&u.user?[{id:(g=u==null?void 0:u.user)==null?void 0:g.id,name:(f=u==null?void 0:u.user)==null?void 0:f.name,avatar:((v=u==null?void 0:u.user)==null?void 0:v.avatar)||void 0,slug:(h=u==null?void 0:u.user)==null?void 0:h.slug}]:void 0}}))||[],d=()=>{var g,f;let u=(g=o==null?void 0:o.participants)==null?void 0:g.find(v=>(v==null?void 0:v.role)==="OWNER");return ((f=u==null?void 0:u.user)==null?void 0:f.name)||(o==null?void 0:o.ownerId)||"Unknown"};return X__namespace.default.createElement(iI,{isOpen:e,onClose:t,participant:c,name:(o==null?void 0:o.name)||void 0,description:(o==null?void 0:o.description)||void 0,createdAt:o==null?void 0:o.createdAt,creatorName:d(),onAddMembers:r,currentUserId:a!=null?a:"",currentUserRole:i,conversationId:o==null?void 0:o.id})};var NJ=({chats:e,selectedChatId:t,onChatSelect:o,onBack:r,onCloseConversation:n,showBackButton:a,isLoading:s,canCreateConversation:i=true,showFilters:c=true,fetchNextPage:d,hasNextPage:l,isFetchingNextPage:m,activeFilter:p="all",onFilterChange:u,searchQuery:g="",onSearchChange:f,conversations:v=[],chatForPage:h,isCompactMode:b=false})=>{let{t:x}=ct(),w=X.useRef(null),C=X.useRef(null),N=KS(),A=nA(N,v,o,h);aA({containerRef:C,fetchNextPage:d,hasNextPage:l,isFetchingNextPage:m});let P=e==null?void 0:e.filter(E=>E==null?void 0:E.isGroup).length,M=e==null?void 0:e.filter(E=>E==null?void 0:E.isArchived).length,S=[{id:"all",label:x("all")},{id:"unread",label:x("unread")},{id:"favorites",label:x("favorites")},{id:"groups",label:x("groups"),count:P},{id:"archived",label:x("archived"),count:M}];return N.viewMode==="createGroup"||N.viewMode==="newChat"?X__namespace.default.createElement(mA,{viewMode:N.viewMode,isTransitioning:N.isTransitioning,transitionDirection:N.transitionDirection,onNavigateBack:A.handleNavigateBack,onSelectContact:A.handleSelectContact,onCreateGroup:A.handleCreateGroup,selectedContactId:N.selectedContactId,isCreating:A.isCreatingConversation}):X__namespace.default.createElement(X__namespace.default.Fragment,null,X__namespace.default.createElement("div",{ref:w,className:U("flex flex-col h-full rounded-[1rem] bg-white w-full transition-all duration-200 ease-out overflow-hidden",b?"p-2 gap-2":"p-6 gap-6",A.getAnimationClass())},X__namespace.default.createElement("div",{className:"flex-shrink-0"},b?null:X__namespace.default.createElement(fA,{showBackButton:a,onBack:r,canCreateConversation:i,onOpenCreateGroup:A.handleOpenCreateGroup,onOpenNewChat:A.handleOpenNewChat,showCreateDrawer:N.showCreateDrawer,setShowCreateDrawer:N.setShowCreateDrawer,isCompactMode:b}),X__namespace.default.createElement(hA,{searchQuery:g,onSearchChange:f,isCompactMode:b})),!b&&c&&X__namespace.default.createElement(yA,{filters:S,activeFilter:p,onFilterChange:u}),X__namespace.default.createElement(c9,{ref:C,chats:e,selectedChatId:t,chatForPage:h,onChatSelect:o,onGroupInfo:A.handleGroupInfo,onContactInfo:A.handleContactInfo,isLoading:s,isFetchingNextPage:m,searchQuery:g,isCompactMode:b,onNewChat:A.handleOpenNewChat,onBack:r,onCloseConversation:n})),X__namespace.default.createElement(K5,{isOpen:N.groupDetailsOpen,onClose:A.handleCloseGroupDetails,selectedGroup:A.getSelectedGroup(),onAddMembers:A.handleAddMembers}),X__namespace.default.createElement(Ho,{open:N.showNewChatDrawer,onOpenChange:E=>{N.setShowNewChatDrawer(E);}},X__namespace.default.createElement(sn,{className:"z-[9999999]"}),X__namespace.default.createElement(Uo,{className:"bg-white w-full h-[85vh] rounded-t-lg p-0 z-[9999999]"},X__namespace.default.createElement(O5,{onBack:()=>N.setShowNewChatDrawer(false),onSelectContact:A.handleSelectContactFromDrawer,isCreating:A.isCreatingConversation,selectedContactId:N.selectedContactId,showBackButton:false}))))},dI=NJ;function mI({conversationId:e,message:t,queryClient:o}){o.setQueriesData({queryKey:["conversations"],exact:false},r=>r!=null&&r.pages?z(y({},r),{pages:r.pages.map(n=>{var a;return z(y({},n),{data:(a=n.data)==null?void 0:a.map(s=>{var i;return s.id===e?z(y({},s),{message:z(y({},t),{sender:(i=t.sender)!=null?i:null}),lastMessageAt:t.createdAt}):s})})})}):r);}function pI({conversationId:e,message:t,queryClient:o}){o.setQueryData(["messages",e],r=>!(r!=null&&r.pages)||r.pages.some(a=>{var s;return (s=a.messages)==null?void 0:s.some(i=>i.id===t.id)})?r:z(y({},r),{pages:r.pages.map((a,s)=>{var i;return s===0?z(y({},a),{messages:[t,...(i=a.messages)!=null?i:[]]}):a})}));}function SJ({conversationId:e,messageIds:t,queryClient:o}){o.setQueryData(["messages",e],r=>r!=null&&r.pages?z(y({},r),{pages:r.pages.map(n=>{var a;return z(y({},n),{messages:(a=n.messages)==null?void 0:a.filter(s=>{var i;return !t.includes((i=s.id)!=null?i:"")})})})}):r);}function uI(e){let {socketApiUrl:t,accessToken:o,userId:r,pageId:n,chatForPage:a=false,chatHeaderOption:s="all",pageChatHeaderOption:i="all",selectedChat:c,onSelectedChatUpdate:d}=e,l=ja(),[m,p]=X.useState(null),[u,g]=X.useState(false),[f,v]=X.useState(false),[h,b]=X.useState({}),[x,w]=X.useState({}),[C,N]=X.useState({}),[A,P]=X.useState({messagesIds:[],action:void 0,userName:"",conversationId:""}),M=X.useRef(null),S=X.useRef(false),E=X.useRef(false),T=a?n:r;X.useEffect(()=>{M.current=new Audio(ou),M.current.volume=.5;let L=()=>{S.current=true,E.current&&M.current&&(M.current.currentTime=0,M.current.play().catch(()=>{}),E.current=false);};return ["click","keydown","touchstart"].forEach(F=>document.addEventListener(F,L,{once:true})),()=>{var F;["click","keydown","touchstart"].forEach(O=>document.removeEventListener(O,L)),(F=M.current)==null||F.pause(),M.current=null;}},[]);let H=X.useCallback(()=>{M.current&&(M.current.currentTime=0,S.current?M.current.play().catch(L=>{L.name==="NotAllowedError"&&(E.current=true);}):E.current=true);},[]),D=X.useCallback(L=>{var R,te,Y,ae,le,ue;let F=(L==null?void 0:L.action)==="MESSAGE_CREATED"?L.data:L,O=(F==null?void 0:F.senderId)||((R=F==null?void 0:F.sender)==null?void 0:R.id)||(F==null?void 0:F.userId),B=a?O===n:O===r,_=(Y=(te=L==null?void 0:L.data)==null?void 0:te.actions)!=null?Y:L==null?void 0:L.action;switch(_){case "MESSAGE_DELETED":P({action:"MESSAGE_DELETED",messagesIds:L.messageIds||((ae=L==null?void 0:L.data)==null?void 0:ae.messageIds)||[],conversationId:L.conversationId||(F==null?void 0:F.conversationId)});let be=L.conversationId||(F==null?void 0:F.conversationId),Be=L.messageIds||((le=L==null?void 0:L.data)==null?void 0:le.messageIds)||[];be&&Be.length>0&&SJ({conversationId:be,messageIds:Be,queryClient:l});return;case "removedAdmin":case "madeAdmin":case "remove":case "add":case "left":P({action:_,conversationId:L.conversationId||(F==null?void 0:F.conversationId),userName:(ue=L==null?void 0:L.data)==null?void 0:ue.body}),l.invalidateQueries({queryKey:["conversations"]});return}if(!B){v(true),H();let be=L.conversationId||(F==null?void 0:F.conversationId);b(Be=>z(y({},Be),{[be]:true})),setTimeout(()=>{b(Be=>z(y({},Be),{[be]:false}));},2e3);}let W=L.conversationId||(F==null?void 0:F.conversationId),K=(F==null?void 0:F.pageId)||((F==null?void 0:F.senderId)===n?n:void 0);(a||!!K)&&n?(l.invalidateQueries({queryKey:["conversations",n]}),mI({conversationId:W,message:F,queryClient:l}),pI({conversationId:W,message:F,queryClient:l})):r&&(l.invalidateQueries({queryKey:["conversations",r]}),mI({conversationId:W,message:F,queryClient:l}),pI({conversationId:W,message:F,queryClient:l}));},[r,n,a,s,i,l,H]),G=X.useCallback(L=>{let{messageId:F,reaction:O,count:B}=L;F&&O&&(N(_=>{var W,K,j;return z(y({},_),{[F]:z(y({},(W=_[F])!=null?W:{}),{[O]:B!=null?B:((j=(K=_[F])==null?void 0:K[O])!=null?j:0)+1})})}),l.invalidateQueries({queryKey:["message-reactions",F]}));},[l]);X.useEffect(()=>{if(!t||!T)return;let L=null,F=true;return Q(this,null,function*(){try{let{io:B}=yield import('socket.io-client');if(!F)return;let _={};a&&n&&(_.pageId=n),r&&(_.userId=r),L=B(t,{transports:["websocket","polling"],auth:{token:o!=null?o:""},query:_,autoConnect:!0}),L.on("connect",()=>{F&&g(!0);}),L.on("disconnect",()=>{F&&g(!1);}),L.on("userOnline",({userId:W})=>{F&&(w(K=>z(y({},K),{[W]:!0})),(c==null?void 0:c.id)===W&&d&&d(z(y({},c),{isOnline:!0})));}),L.on("userOffline",({userId:W})=>{F&&(w(K=>z(y({},K),{[W]:!1})),(c==null?void 0:c.id)===W&&d&&d(z(y({},c),{isOnline:!1})));}),L.on("onlineUsers",W=>{if(F&&W!=null&&W.users&&Array.isArray(W.users)){let K={};W.users.forEach(j=>{K[j]=!0;}),w(K);}}),L.on("newMessage",D),L.on("reaction",G),p(L);}catch(B){console.warn("Failed to connect socket:",B);}}),()=>{F=false,L==null||L.disconnect(),p(null);}},[t,o,T,a,r,n,D,G,c==null?void 0:c.id,d]);let V=X.useCallback(L=>{var F,O,B,_;if(m!=null&&m.connected){let W=L.pageId?(F=n!=null?n:r)!=null?F:"":(B=(O=L.senderId)!=null?O:r)!=null?B:"",K=z(y({},L),{userId:W,attachments:L==null?void 0:L.attachments});L.pageId&&(K.pageId=L.pageId,K.topic=(_=L.topic)!=null?_:""),m.emit("sendMessage",K);}},[m,r,n]);return {socket:m,isConnected:u,sendMessage:V,hasMessages:f,setHasMessages:v,onlineUsers:x,newMessages:h,realtimeReactions:C,messageAction:A}}function fI({chat:e,showBackButton:t,onBack:o,onGroupInfo:r,onContactInfo:n}){var a,s,i;return X__namespace.default.createElement("div",{className:"flex items-center justify-between bg-[#D0DEE533] p-4 md:m-4 md:rounded-[1rem] border-b border-border"},X__namespace.default.createElement("div",{className:"flex items-center gap-3"},t&&X__namespace.default.createElement("button",{onClick:o,className:"p-0 w-8 h-8 rounded-lg hover:bg-accent flex items-center justify-center"},X__namespace.default.createElement(lucideReact.ChevronLeft,{className:"w-5 h-5"})),X__namespace.default.createElement(se,{name:(a=e==null?void 0:e.name)!=null?a:"",src:(s=e==null?void 0:e.avatar)!=null?s:"",type:e!=null&&e.isGroup?"community":"user",className:"h-10 w-10"}),X__namespace.default.createElement("div",null,X__namespace.default.createElement("span",{className:"font-normal text-body-md md:text-[0.875rem] text-[#050910]"},dt((i=e==null?void 0:e.name)!=null?i:"")),X__namespace.default.createElement("p",{className:U("text-body-sm md:text-body-md",{"text-primary":e==null?void 0:e.isOnline,"text-text-secondary":!(e!=null&&e.isOnline)})},e!=null&&e.isOnline?"Online":"Offline"))),X__namespace.default.createElement("div",{className:"flex-shrink-0"},X__namespace.default.createElement(U5,{chat:e,asMessageHeader:true,onContactInfo:n,onGroupInfo:r,onBack:o})))}function gI({creatorName:e,conversationId:t}){var h,b,x;let{conversation:o,isLoadingConversation:r}=Gs(t!=null?t:""),{locale:n}=I(),[a,s]=X.useState(false),i=(o==null?void 0:o.name)||"",c=(h=o==null?void 0:o.description)!=null?h:"",d=(x=(b=o==null?void 0:o.participants)==null?void 0:b.map(w=>w==null?void 0:w.user))!=null?x:[],l=d.find(w=>(w==null?void 0:w.name)===e),m=(l==null?void 0:l.avatar)||(o==null?void 0:o.image),p=(c==null?void 0:c.length)>120,u=!p||a?c:c.slice(0,120)+"...",g=5,f=d==null?void 0:d.slice(0,g),v=Math.max(0,(d==null?void 0:d.length)-g);return r?X__namespace.default.createElement("div",{className:"w-full md:w-[22dvw] flex flex-col gap-4 items-center justify-center h-full rounded-md p-6"},X__namespace.default.createElement("div",{className:"w-16 h-16 rounded-full bg-gray-200 animate-pulse"}),X__namespace.default.createElement("div",{className:"h-4 w-32 bg-gray-200 rounded animate-pulse"}),X__namespace.default.createElement("div",{className:"h-3 w-48 bg-gray-200 rounded animate-pulse"}),X__namespace.default.createElement("div",{className:"flex -space-x-3 overflow-hidden mt-2"},[...Array(3)].map((w,C)=>X__namespace.default.createElement("div",{key:C,className:"w-8 h-8 rounded-full bg-gray-200 animate-pulse"})))):X__namespace.default.createElement("div",{className:"w-full md:w-[22dvw] flex flex-col gap-4 items-center justify-center h-full rounded-md p-6 "},X__namespace.default.createElement(se,{name:e||i,src:m,className:"w-16 h-16"}),X__namespace.default.createElement("p",{className:"text-body-sm md:text-body-lg font-bold text-text-secondary text-center"},q(n,"group-created",{name:e||i})),c&&X__namespace.default.createElement("div",{className:"text-center text-gray-600 text-sm md:text-base max-w-full"},X__namespace.default.createElement("p",null,u),p&&X__namespace.default.createElement("button",{className:"text-primary text-xs mt-1 !mx-auto hover:underline",onClick:()=>s(w=>!w)},a?lt(n,"explore.see-less"):lt(n,"explore.see-more"))),(d==null?void 0:d.length)>0&&X__namespace.default.createElement("div",{className:"flex -space-x-3 overflow-hidden mt-2 flex-wrap justify-center"},f.map(w=>{var C;return X__namespace.default.createElement("div",{key:w==null?void 0:w.id,className:"relative group"},X__namespace.default.createElement(se,{name:(C=w==null?void 0:w.name)!=null?C:"",src:w==null?void 0:w.avatar,className:"w-8 h-8 border-2 border-white rounded-full shadow-sm"}),X__namespace.default.createElement("span",{className:"absolute bottom-10 left-1/2 -translate-x-1/2 whitespace-nowrap bg-black text-white text-xs rounded-md px-2 py-1 opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none"},w==null?void 0:w.name))}),v>0&&X__namespace.default.createElement("div",{className:"w-8 h-8 flex items-center justify-center bg-gray-200 text-gray-700 text-xs font-medium rounded-full border-2 border-white shadow-sm"},"+",v)))}function hI(e){if(!e)return;let t=e.match(/^(.*?)\s+created the group/i);return t?t[1]:void 0}var vI=e=>{let t=[],o="";return e.forEach(r=>{let n=r!=null&&r.createdAt?new Date(r==null?void 0:r.createdAt).toLocaleDateString():"Today";n!==o&&(o=n,t.push({type:"date",date:n})),t.push({type:"message",message:r});}),t};var bI=e=>{let t=e.find(o=>{var r;return (r=o==null?void 0:o.body)==null?void 0:r.toLowerCase().includes("created the group")});return t&&hI(t.body)||""};function Cp({isSent:e}){return X__namespace.default.createElement("div",{className:`flex ${e?"justify-end":"justify-start"} gap-2`},!e&&X__namespace.default.createElement(It,{className:"w-8 h-8 rounded-full bg-gray-200"}),X__namespace.default.createElement(It,{className:`h-16 ${e?"w-48":"w-64"} rounded-2xl bg-gray-200`}))}var xI=({date:e})=>X__namespace.default.createElement("div",{className:"flex items-center justify-center py-2"},X__namespace.default.createElement("span",{className:"px-3 py-1 bg-muted rounded-full text-xs text-muted-foreground"},e));function EJ(e){return X__namespace.createElement("svg",y({width:52,height:40,fill:"none"},e),X__namespace.createElement("path",{d:"M42.667 1H9.333C4.73 1 1 4.564 1 8.943V24.65c0 3.82 2.82 7.012 6.582 7.78l-1.758 5.203 8.138-5.011h28.705c4.6 0 8.333-3.564 8.333-7.944V8.973C51 4.564 47.267 1 42.667 1z",fill:"#F2F3F4",stroke:"#E4EBF1",strokeWidth:2,strokeMiterlimit:10}))}var kJ=X__namespace.memo(EJ),wI=kJ;function Z5(e){let t={"Content-Type":"application/json"};return e&&(t["x-access-token"]=e),t}function Y5(e){let {chatApiUrl:t,user:o,page:r}=I(),{conversationId:a,perPage:s=20,enabled:i=true,chatForPage:c=false}=typeof e=="object"&&e!==null&&"conversationId"in e?e:{conversationId:e,perPage:20,enabled:true,chatForPage:false},d=v5("messages",a!=null?a:"");return ut({queryKey:d,queryFn:m=>Q(this,[m],function*({pageParam:l=1}){var p,u,g,f,v,h,b,x,w,C;if(!a)return {messages:[],hasMore:false,meta:null,nextPage:1,lastPage:1};try{let N=Z5(o==null?void 0:o.accessToken),A={};c&&(r!=null&&r.id)&&(A.pageId=r.id);let P=yield t9__default.default(t!=null?t:"",e9,{conversationId:a,options:{filter:Object.keys(A).length>0?A:void 0,page:l,perPage:s}},N),M=P==null?void 0:P.getMessagesByConversation;return {messages:(p=M==null?void 0:M.data)!=null?p:[],hasMore:((g=(u=M==null?void 0:M.meta)==null?void 0:u.currentPage)!=null?g:0)<((v=(f=M==null?void 0:M.meta)==null?void 0:f.lastPage)!=null?v:0),meta:(h=M==null?void 0:M.meta)!=null?h:null,nextPage:((x=(b=M==null?void 0:M.meta)==null?void 0:b.currentPage)!=null?x:0)+1,lastPage:(C=(w=M==null?void 0:M.meta)==null?void 0:w.lastPage)!=null?C:1}}catch(N){return {messages:[],hasMore:false,meta:null,nextPage:1,lastPage:1}}}),getNextPageParam:l=>{if(l&&typeof l=="object"&&typeof(l==null?void 0:l.hasMore)=="boolean"&&typeof(l==null?void 0:l.nextPage)=="number")return l!=null&&l.hasMore?l==null?void 0:l.nextPage:void 0},initialPageParam:1,enabled:!!a&&i})}var CI=({chat:e,chatForPage:t,activeFilter:o,realtimeReactions:r,isSelectMode:n=false,selectedMessageIds:a=[],onSelectMessage:s,onClearSelection:i})=>{var V,L;let{user:c,page:d}=I(),{t:l}=ct(),m=X.useRef(null),p=X.useRef(null),u=X.useRef(true),g=X.useRef(0),f=X.useRef(void 0),[v,h]=X.useState(false),[b,x]=X.useState(true),[w,C]=X.useState(null),{markChatAsRead:N}=Gd((V=e==null?void 0:e.id)!=null?V:"",t,o),A=X.useCallback(()=>{var F;(F=m.current)==null||F.scrollIntoView({behavior:"smooth"});},[]),{data:P,isLoading:M,fetchNextPage:S,hasNextPage:E,isFetchingNextPage:T}=Y5({conversationId:(L=e==null?void 0:e.id)!=null?L:"",perPage:20,enabled:!!(e!=null&&e.id),chatForPage:t!=null?t:false}),k=X__namespace.default.useMemo(()=>{var O;return [...((O=P==null?void 0:P.pages)==null?void 0:O.flatMap(B=>B==null?void 0:B.messages))||[]].sort((B,_)=>{let W=new Date((B==null?void 0:B.createdAt)||0).getTime(),K=new Date((_==null?void 0:_.createdAt)||0).getTime();return W-K})},[P==null?void 0:P.pages]),H=e?vI(k):[],D=e!=null&&e.isGroup?bI(k):"";X.useEffect(()=>{!M&&(e!=null&&e.id)&&((e==null?void 0:e.unreadCount)||0)>0&&N(e==null?void 0:e.id);},[e==null?void 0:e.id,e==null?void 0:e.unreadCount,M,N]),X.useEffect(()=>{f.current!==(e==null?void 0:e.id)&&(u.current=true,h(false),x(true),C(null),f.current=e==null?void 0:e.id);},[e==null?void 0:e.id]),X.useEffect(()=>{let F=p.current;if(!F)return;let O=F.scrollTop,B,_=()=>{let{scrollTop:W,scrollHeight:K,clientHeight:j}=F;B&&clearTimeout(B);let R=W<O;O=W;let te=K-W-j<50;x(te),R&&!te&&h(true),B=setTimeout(()=>{h(false);},500);};return F.addEventListener("scroll",_),()=>{F.removeEventListener("scroll",_),B&&clearTimeout(B);}},[]),X.useEffect(()=>{let F=p.current;if(!F||!T||!E)return;let{scrollTop:O,scrollHeight:B}=F;C({top:O,height:B});},[T,E]),X.useEffect(()=>{let F=p.current;if(!F||!w||!T)return;let{top:O,height:B}=w,W=F.scrollHeight-B;F.scrollTop=O+W,C(null);},[T,w]),X.useEffect(()=>{let F=p.current;if(!F)return;let O=k.length,B=O>g.current;u.current&&!M&&O>0?(setTimeout(()=>{var _;(_=m.current)==null||_.scrollIntoView({behavior:"auto"});},100),u.current=false,g.current=O):!u.current&&B&&!v&&(F.scrollHeight-F.scrollTop-F.clientHeight<100&&setTimeout(()=>{var W;(W=m.current)==null||W.scrollIntoView({behavior:"smooth"});},50),g.current=O);},[k.length,M,v]);let G=()=>{let F=p.current;if(!F||!E||T)return;let{scrollTop:O}=F;O<100&&S();};return (k==null?void 0:k.length)===0&&!M?X__namespace.default.createElement("div",{className:"w-full h-full flex flex-col items-center justify-center"},X__namespace.default.createElement(wI,null),X__namespace.default.createElement("p",{className:"text-body-sm md:text-[1rem] text-[#050910]"},l("empty-conversation"))):X__namespace.default.createElement("div",{className:"relative flex-1 min-h-0"},X__namespace.default.createElement("div",{ref:p,className:"h-full overflow-y-auto p-4 flex flex-col scrollbar-hide",onScroll:G},T&&X__namespace.default.createElement("div",{className:"flex justify-center py-2"},X__namespace.default.createElement(De,null)),M?X__namespace.default.createElement("div",{className:"space-y-3"},X__namespace.default.createElement(Cp,{isSent:false}),X__namespace.default.createElement(Cp,{isSent:true}),X__namespace.default.createElement(Cp,{isSent:false}),X__namespace.default.createElement(Cp,{isSent:true})):X__namespace.default.createElement("div",{className:"space-y-1 mt-auto"},(e==null?void 0:e.isGroup)&&D&&X__namespace.default.createElement("div",{className:"flex justify-center w-full mb-6"},X__namespace.default.createElement(gI,{conversationId:e==null?void 0:e.id,creatorName:D})),H.filter(F=>{var O;if(e!=null&&e.isGroup&&F.type==="message"&&(F!=null&&F.message)){let B=F.message;return !((O=B==null?void 0:B.body)==null?void 0:O.toLowerCase().includes("created the group"))}return true}).map((F,O)=>{var B,_,W;if((F==null?void 0:F.type)==="date")return X__namespace.default.createElement(xI,{key:`date-${O}`,date:F==null?void 0:F.date});if((F==null?void 0:F.type)==="message"&&(F!=null&&F.message)){let K=F==null?void 0:F.message,j=t?(K==null?void 0:K.senderId)===(d==null?void 0:d.id)||((B=K==null?void 0:K.sender)==null?void 0:B.id)===(d==null?void 0:d.id):((_=K==null?void 0:K.sender)==null?void 0:_.id)===(c==null?void 0:c.id)||(K==null?void 0:K.senderId)===(c==null?void 0:c.id),R=a.includes((W=K==null?void 0:K.id)!=null?W:"");return X__namespace.default.createElement(h0,{key:K==null?void 0:K.id,message:K,selectedConversation:e,isOwnMessage:j,activeFilter:o,chatForPage:t,isSelectMode:n,isSelected:R,onSelectMessage:s,onClearSelection:i,realtimeReactions:r})}return null})),X__namespace.default.createElement("div",{ref:m})),X__namespace.default.createElement(react.AnimatePresence,null,!b&&X__namespace.default.createElement(react.motion.button,{key:"scroll-to-bottom",initial:{opacity:0,x:60},animate:{opacity:1,x:0},exit:{opacity:0,x:60},transition:{duration:.3,ease:"easeOut"},onClick:A,className:`\r
1618
1618
  absolute\r
1619
1619
  bottom-4\r
1620
1620
  right-4\r
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mirantes-micro/foundation-design-system",
3
3
  "description": "A scalable and customizable design system package featuring a collection of reusable React components, utility functions, and context providers. Built to enforce visual and functional consistency across applications, this package offers accessible, themeable UI elements, shared logic through utility helpers, and context-based providers for managing global state such as themes, modals, and user sessions.",
4
- "version": "1.2.197",
4
+ "version": "1.2.199",
5
5
  "license": "MIT",
6
6
  "author": {
7
7
  "name": "Mirantes Frontend team"