{"version":3,"file":"MessageList.jsx","sourceRoot":"","sources":["MessageList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Badge, Comment, Image, List } from 'antd';\nimport _ from 'lodash';\nimport React, { useEffect } from 'react';\nimport Emoji from 'react-emoji-render';\n\nimport styles from '../style.module.css';\nimport dayjs from '../utils/dayjs';\nimport CustomizedAvatar from './CustomizedAvatar';\nimport Markdown from './Markdown';\nimport UserInfoPop from './UserInfoPop';\n\ntype PropType = {\n  user_id: string;\n  chat: any;\n  members: any[];\n};\n\nconst MessageList: React.FC<PropType> = ({ user_id, chat, members }) => {\n  const userProfile = (item) => {\n    return members.filter((v) => v.user_id === item.from_user_id)[0];\n  };\n\n  const chatMessage = (messageType, v) => {\n    switch (messageType) {\n      case 'mention':\n        return (\n          <UserInfoPop chat={chat} user={members.filter((u) => u.user_id === v.user_id)[0]}>\n            <div className=\"cursor-pointer text-blue-400\">{v.text}&nbsp;</div>\n          </UserInfoPop>\n        );\n      case 'text':\n        return <Markdown content={v.text} />;\n      case 'emoicon':\n        return <Emoji text={v.text} />;\n      case 'attachment':\n        return (\n          <div className={styles.messageImage}>\n            <Image src={v.source_url} preview={false} />\n          </div>\n        );\n      default:\n        return null;\n    }\n  };\n\n  useEffect(() => {\n    const scrollDiv = document.getElementById('chatlist');\n    const scrollToBottom = () => {\n      if (scrollDiv) {\n        scrollDiv.scrollIntoView({ block: 'end' });\n      }\n    };\n    scrollToBottom();\n  }, [chat.room]);\n\n  return (\n    <div className={styles.messageList}>\n      <List\n        id=\"chatlist\"\n        dataSource={chat.records}\n        renderItem={(item: any) => (\n          <li key={item.id}>\n            <Comment\n              author={<span className=\"mb-2\">{item.from_user_name}</span>}\n              avatar={\n                item.from_user_avatar && (\n                  <UserInfoPop chat={chat} user={userProfile(item)}>\n                    <CustomizedAvatar src={item.from_user_avatar} className=\"ml-4\" />\n                    {_.includes(chat.onlineUserIDs, item.from_user_id) && <Badge dot className={styles.onlineDot} />}\n                  </UserInfoPop>\n                )\n              }\n              content={\n                <div className={`${user_id === item.from_user_id ? styles.myChatMessage : styles.chatMessage}`}>\n                  <div className=\"flex flex-wrap\">\n                    {item.message.map((v, index) => (\n                      <div key={Number(index)} className={v.type === 'attachment' ? 'float-left w-full' : ''}>\n                        {chatMessage(v.type, v)}\n                      </div>\n                    ))}\n                  </div>\n                </div>\n              }\n              datetime={item.created_at && dayjs(item.created_at).fromNow()}\n            />\n          </li>\n        )}\n      />\n    </div>\n  );\n};\n\nexport default MessageList;\n"]}