stream-chat-react-native-core 5.18.0-beta.3 → 5.18.0-beta.5

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.
@@ -28,7 +28,7 @@ var getMentionUsers = function getMentionUsers(mentionedUser) {
28
28
  }
29
29
  return acc;
30
30
  }, '');
31
- return mentionUserString;
31
+ return mentionUserString.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
32
32
  }
33
33
  return '';
34
34
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_ChatContext","_TranslationContext","getMessageSenderName","message","currentUserId","t","membersLength","_message$user","user","id","_message$user2","_message$user3","_message$user4","name","username","getMentionUsers","mentionedUser","Array","isArray","mentionUserString","reduce","acc","cur","userName","length","getLatestMessageDisplayText","channel","client","_message$attachments","bold","text","isMessageTypeDeleted","type","userID","members","Object","keys","state","messageSender","messageSenderText","boldOwner","includes","shortenedText","substring","replace","mentionedUsers","mentioned_users","regEx","RegExp","concat","_toConsumableArray2","split","index","test","push","command","attachments","getLatestMessageDisplayDate","tDateTimeParser","parserOutput","created_at","isDayOrMoment","isSame","Date","format","MessageReadStatus","exports","getLatestMessageReadStatus","readEvents","_message$user5","NOT_SENT_BY_CURRENT_USER","readList","read","messageUpdatedAt","updated_at","undefined","values","some","_ref","last_read","READ","UNREAD","getLatestMessagePreview","params","lastMessage","messages","messageObject","previews","status","channelStateLastMessage","useLatestMessagePreview","forceUpdate","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","channelConfigExists","getConfig","channelLastMessageString","_useState","useState","_useState2","_slicedToArray2","setReadEvents","_useState3","_useState4","latestMessagePreview","setLatestMessagePreview","readStatus","useEffect","_channel$getConfig","read_events"],"sources":["useLatestMessagePreview.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, MessageResponse, StreamChat, UserResponse } from 'stream-chat';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport {\n isDayOrMoment,\n TDateTimeParser,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\ntype LatestMessage<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> =\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>;\n\nexport type LatestMessagePreview<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n created_at: string | number | Date;\n messageObject: LatestMessage<StreamChatGenerics> | undefined;\n previews: {\n bold: boolean;\n text: string;\n }[];\n status: number;\n};\n\nconst getMessageSenderName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: LatestMessage<StreamChatGenerics> | undefined,\n currentUserId: string | undefined,\n t: (key: string) => string,\n membersLength: number,\n) => {\n if (message?.user?.id === currentUserId) {\n return t('You');\n }\n\n if (membersLength > 2) {\n return message?.user?.name || message?.user?.username || message?.user?.id || '';\n }\n\n return '';\n};\n\nconst getMentionUsers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n mentionedUser: UserResponse<StreamChatGenerics>[] | undefined,\n) => {\n if (Array.isArray(mentionedUser)) {\n const mentionUserString = mentionedUser.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '');\n return mentionUserString;\n }\n return '';\n};\n\nconst getLatestMessageDisplayText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n client: StreamChat<StreamChatGenerics>,\n message: LatestMessage<StreamChatGenerics> | undefined,\n t: (key: string) => string,\n) => {\n if (!message) return [{ bold: false, text: t('Nothing yet...') }];\n const isMessageTypeDeleted = message.type === 'deleted';\n if (isMessageTypeDeleted) return [{ bold: false, text: t('Message deleted') }];\n const currentUserId = client?.userID;\n const members = Object.keys(channel.state.members);\n\n const messageSender = getMessageSenderName(message, currentUserId, t, members.length);\n const messageSenderText = messageSender\n ? `${messageSender === t('You') ? '' : '@'}${messageSender}: `\n : '';\n const boldOwner = messageSenderText.includes('@');\n if (message.text) {\n // rough guess optimization to limit string preview to max 100 characters\n const shortenedText = message.text.substring(0, 100).replace(/\\n/g, ' ');\n const mentionedUsers = getMentionUsers(message.mentioned_users);\n const regEx = new RegExp(`^(${mentionedUsers})`);\n return [\n { bold: boldOwner, text: messageSenderText },\n ...shortenedText.split('').reduce(\n (acc, cur, index) => {\n if (cur === '@' && mentionedUsers && regEx.test(shortenedText.substring(index))) {\n acc.push({ bold: true, text: cur });\n } else if (mentionedUsers && regEx.test(acc[acc.length - 1].text)) {\n acc.push({ bold: false, text: cur });\n } else {\n acc[acc.length - 1].text += cur;\n }\n return acc;\n },\n [{ bold: false, text: '' }],\n ),\n ];\n }\n if (message.command) {\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: `/${message.command}` },\n ];\n }\n if (message.attachments?.length) {\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: t('🏙 Attachment...') },\n ];\n }\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: t('Empty message...') },\n ];\n};\n\nconst getLatestMessageDisplayDate = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: LatestMessage<StreamChatGenerics> | undefined,\n tDateTimeParser: TDateTimeParser,\n) => {\n const parserOutput = tDateTimeParser(message?.created_at);\n if (isDayOrMoment(parserOutput)) {\n if (parserOutput.isSame(new Date(), 'day')) {\n return parserOutput.format('LT');\n }\n return parserOutput.format('L');\n }\n return parserOutput;\n};\n\nexport enum MessageReadStatus {\n NOT_SENT_BY_CURRENT_USER = 0,\n UNREAD = 1,\n READ = 2,\n}\n\nconst getLatestMessageReadStatus = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n client: StreamChat<StreamChatGenerics>,\n message: LatestMessage<StreamChatGenerics> | undefined,\n readEvents: boolean,\n): MessageReadStatus => {\n const currentUserId = client.userID;\n if (!message || currentUserId !== message.user?.id || readEvents === false) {\n return MessageReadStatus.NOT_SENT_BY_CURRENT_USER;\n }\n\n const readList = channel.state.read;\n if (currentUserId) {\n delete readList[currentUserId];\n }\n\n const messageUpdatedAt = message.updated_at\n ? typeof message.updated_at === 'string'\n ? new Date(message.updated_at)\n : message.updated_at\n : undefined;\n\n return Object.values(readList).some(\n ({ last_read }) => messageUpdatedAt && messageUpdatedAt < last_read,\n )\n ? MessageReadStatus.READ\n : MessageReadStatus.UNREAD;\n};\n\nconst getLatestMessagePreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(params: {\n channel: Channel<StreamChatGenerics>;\n client: StreamChat<StreamChatGenerics>;\n readEvents: boolean;\n t: (key: string) => string;\n tDateTimeParser: TDateTimeParser;\n lastMessage?:\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>;\n}) => {\n const { channel, client, lastMessage, readEvents, t, tDateTimeParser } = params;\n\n const messages = channel.state.messages;\n\n if (!messages.length && !lastMessage) {\n return {\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: t('Nothing yet...'),\n },\n ],\n status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,\n };\n }\n\n const channelStateLastMessage = messages.length ? messages[messages.length - 1] : undefined;\n\n const message = lastMessage !== undefined ? lastMessage : channelStateLastMessage;\n\n return {\n created_at: getLatestMessageDisplayDate(message, tDateTimeParser),\n messageObject: message,\n previews: getLatestMessageDisplayText(channel, client, message, t),\n status: getLatestMessageReadStatus(channel, client, message, readEvents),\n };\n};\n\n/**\n * Hook to set the display preview for latest message on channel.\n *\n * @param {*} channel Channel object\n *\n * @returns {object} latest message preview e.g.. { text: 'this was last message ...', created_at: '11/12/2020', messageObject: { originalMessageObject } }\n */\nexport const useLatestMessagePreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n forceUpdate: number,\n lastMessage?:\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n const channelConfigExists = typeof channel?.getConfig === 'function';\n\n const messages = channel.state.messages;\n const message = messages.length ? messages[messages.length - 1] : undefined;\n\n const channelLastMessageString = `${lastMessage?.id || message?.id}${\n lastMessage?.updated_at || message?.updated_at\n }`;\n\n const [readEvents, setReadEvents] = useState(true);\n const [latestMessagePreview, setLatestMessagePreview] = useState<\n LatestMessagePreview<StreamChatGenerics>\n >({\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: '',\n },\n ],\n status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,\n });\n\n const readStatus = getLatestMessageReadStatus(\n channel,\n client,\n lastMessage || message,\n readEvents,\n );\n\n useEffect(() => {\n if (channelConfigExists) {\n const read_events = channel.getConfig()?.read_events;\n if (typeof read_events === 'boolean') {\n setReadEvents(read_events);\n }\n }\n }, [channelConfigExists]);\n\n useEffect(\n () =>\n setLatestMessagePreview(\n getLatestMessagePreview({\n channel,\n client,\n lastMessage,\n readEvents,\n t,\n tDateTimeParser,\n }),\n ),\n [channelLastMessageString, forceUpdate, readEvents, readStatus],\n );\n\n return latestMessagePreview;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_ChatContext","_TranslationContext","getMessageSenderName","message","currentUserId","t","membersLength","_message$user","user","id","_message$user2","_message$user3","_message$user4","name","username","getMentionUsers","mentionedUser","Array","isArray","mentionUserString","reduce","acc","cur","userName","length","replaceAll","getLatestMessageDisplayText","channel","client","_message$attachments","bold","text","isMessageTypeDeleted","type","userID","members","Object","keys","state","messageSender","messageSenderText","boldOwner","includes","shortenedText","substring","replace","mentionedUsers","mentioned_users","regEx","RegExp","concat","_toConsumableArray2","split","index","test","push","command","attachments","getLatestMessageDisplayDate","tDateTimeParser","parserOutput","created_at","isDayOrMoment","isSame","Date","format","MessageReadStatus","exports","getLatestMessageReadStatus","readEvents","_message$user5","NOT_SENT_BY_CURRENT_USER","readList","read","messageUpdatedAt","updated_at","undefined","values","some","_ref","last_read","READ","UNREAD","getLatestMessagePreview","params","lastMessage","messages","messageObject","previews","status","channelStateLastMessage","useLatestMessagePreview","forceUpdate","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","channelConfigExists","getConfig","channelLastMessageString","_useState","useState","_useState2","_slicedToArray2","setReadEvents","_useState3","_useState4","latestMessagePreview","setLatestMessagePreview","readStatus","useEffect","_channel$getConfig","read_events"],"sources":["useLatestMessagePreview.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, MessageResponse, StreamChat, UserResponse } from 'stream-chat';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport {\n isDayOrMoment,\n TDateTimeParser,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\ntype LatestMessage<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> =\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>;\n\nexport type LatestMessagePreview<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n created_at: string | number | Date;\n messageObject: LatestMessage<StreamChatGenerics> | undefined;\n previews: {\n bold: boolean;\n text: string;\n }[];\n status: number;\n};\n\nconst getMessageSenderName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: LatestMessage<StreamChatGenerics> | undefined,\n currentUserId: string | undefined,\n t: (key: string) => string,\n membersLength: number,\n) => {\n if (message?.user?.id === currentUserId) {\n return t('You');\n }\n\n if (membersLength > 2) {\n return message?.user?.name || message?.user?.username || message?.user?.id || '';\n }\n\n return '';\n};\n\nconst getMentionUsers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n mentionedUser: UserResponse<StreamChatGenerics>[] | undefined,\n) => {\n if (Array.isArray(mentionedUser)) {\n const mentionUserString = mentionedUser.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '');\n\n // escape special characters\n return mentionUserString.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n return '';\n};\n\nconst getLatestMessageDisplayText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n client: StreamChat<StreamChatGenerics>,\n message: LatestMessage<StreamChatGenerics> | undefined,\n t: (key: string) => string,\n) => {\n if (!message) return [{ bold: false, text: t('Nothing yet...') }];\n const isMessageTypeDeleted = message.type === 'deleted';\n if (isMessageTypeDeleted) return [{ bold: false, text: t('Message deleted') }];\n const currentUserId = client?.userID;\n const members = Object.keys(channel.state.members);\n\n const messageSender = getMessageSenderName(message, currentUserId, t, members.length);\n const messageSenderText = messageSender\n ? `${messageSender === t('You') ? '' : '@'}${messageSender}: `\n : '';\n const boldOwner = messageSenderText.includes('@');\n if (message.text) {\n // rough guess optimization to limit string preview to max 100 characters\n const shortenedText = message.text.substring(0, 100).replace(/\\n/g, ' ');\n const mentionedUsers = getMentionUsers(message.mentioned_users);\n const regEx = new RegExp(`^(${mentionedUsers})`);\n return [\n { bold: boldOwner, text: messageSenderText },\n ...shortenedText.split('').reduce(\n (acc, cur, index) => {\n if (cur === '@' && mentionedUsers && regEx.test(shortenedText.substring(index))) {\n acc.push({ bold: true, text: cur });\n } else if (mentionedUsers && regEx.test(acc[acc.length - 1].text)) {\n acc.push({ bold: false, text: cur });\n } else {\n acc[acc.length - 1].text += cur;\n }\n return acc;\n },\n [{ bold: false, text: '' }],\n ),\n ];\n }\n if (message.command) {\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: `/${message.command}` },\n ];\n }\n if (message.attachments?.length) {\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: t('🏙 Attachment...') },\n ];\n }\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: t('Empty message...') },\n ];\n};\n\nconst getLatestMessageDisplayDate = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: LatestMessage<StreamChatGenerics> | undefined,\n tDateTimeParser: TDateTimeParser,\n) => {\n const parserOutput = tDateTimeParser(message?.created_at);\n if (isDayOrMoment(parserOutput)) {\n if (parserOutput.isSame(new Date(), 'day')) {\n return parserOutput.format('LT');\n }\n return parserOutput.format('L');\n }\n return parserOutput;\n};\n\nexport enum MessageReadStatus {\n NOT_SENT_BY_CURRENT_USER = 0,\n UNREAD = 1,\n READ = 2,\n}\n\nconst getLatestMessageReadStatus = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n client: StreamChat<StreamChatGenerics>,\n message: LatestMessage<StreamChatGenerics> | undefined,\n readEvents: boolean,\n): MessageReadStatus => {\n const currentUserId = client.userID;\n if (!message || currentUserId !== message.user?.id || readEvents === false) {\n return MessageReadStatus.NOT_SENT_BY_CURRENT_USER;\n }\n\n const readList = channel.state.read;\n if (currentUserId) {\n delete readList[currentUserId];\n }\n\n const messageUpdatedAt = message.updated_at\n ? typeof message.updated_at === 'string'\n ? new Date(message.updated_at)\n : message.updated_at\n : undefined;\n\n return Object.values(readList).some(\n ({ last_read }) => messageUpdatedAt && messageUpdatedAt < last_read,\n )\n ? MessageReadStatus.READ\n : MessageReadStatus.UNREAD;\n};\n\nconst getLatestMessagePreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(params: {\n channel: Channel<StreamChatGenerics>;\n client: StreamChat<StreamChatGenerics>;\n readEvents: boolean;\n t: (key: string) => string;\n tDateTimeParser: TDateTimeParser;\n lastMessage?:\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>;\n}) => {\n const { channel, client, lastMessage, readEvents, t, tDateTimeParser } = params;\n\n const messages = channel.state.messages;\n\n if (!messages.length && !lastMessage) {\n return {\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: t('Nothing yet...'),\n },\n ],\n status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,\n };\n }\n\n const channelStateLastMessage = messages.length ? messages[messages.length - 1] : undefined;\n\n const message = lastMessage !== undefined ? lastMessage : channelStateLastMessage;\n\n return {\n created_at: getLatestMessageDisplayDate(message, tDateTimeParser),\n messageObject: message,\n previews: getLatestMessageDisplayText(channel, client, message, t),\n status: getLatestMessageReadStatus(channel, client, message, readEvents),\n };\n};\n\n/**\n * Hook to set the display preview for latest message on channel.\n *\n * @param {*} channel Channel object\n *\n * @returns {object} latest message preview e.g.. { text: 'this was last message ...', created_at: '11/12/2020', messageObject: { originalMessageObject } }\n */\nexport const useLatestMessagePreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n forceUpdate: number,\n lastMessage?:\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n const channelConfigExists = typeof channel?.getConfig === 'function';\n\n const messages = channel.state.messages;\n const message = messages.length ? messages[messages.length - 1] : undefined;\n\n const channelLastMessageString = `${lastMessage?.id || message?.id}${\n lastMessage?.updated_at || message?.updated_at\n }`;\n\n const [readEvents, setReadEvents] = useState(true);\n const [latestMessagePreview, setLatestMessagePreview] = useState<\n LatestMessagePreview<StreamChatGenerics>\n >({\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: '',\n },\n ],\n status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,\n });\n\n const readStatus = getLatestMessageReadStatus(\n channel,\n client,\n lastMessage || message,\n readEvents,\n );\n\n useEffect(() => {\n if (channelConfigExists) {\n const read_events = channel.getConfig()?.read_events;\n if (typeof read_events === 'boolean') {\n setReadEvents(read_events);\n }\n }\n }, [channelConfigExists]);\n\n useEffect(\n () =>\n setLatestMessagePreview(\n getLatestMessagePreview({\n channel,\n client,\n lastMessage,\n readEvents,\n t,\n tDateTimeParser,\n }),\n ),\n [channelLastMessageString, forceUpdate, readEvents, readStatus],\n );\n\n return latestMessagePreview;\n};\n"],"mappings":"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"}
@@ -171,7 +171,7 @@ var renderText = function renderText(params) {
171
171
  if (userName) {
172
172
  acc += (acc.length ? '|' : '') + "@" + userName;
173
173
  }
174
- return acc;
174
+ return acc.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
175
175
  }, '') : '';
176
176
  var regEx = new RegExp("^\\B(" + mentionedUsers + ")", 'g');
177
177
  var match = function match(source) {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeMarkdownPackage","_truncate","_simpleMarkdown","_parseLinks","_this","_jsxFileName","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","parseInline","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","linkInfos","parseLinksFromText","_iterator","_step","linkInfo","displayLink","truncate","raw","omission","markdown","encodedUrl","replace","styles","_extends2","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","pattern","RegExp","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","_ref","_objectDestructuringEmpty2","target","event","additionalInfo","defaultHandler","emitter","createElement","Text","key","style","suppressHighlighting","__self","__source","fileName","lineNumber","columnNumber","withinLink","paragraphText","_ref2","numberOfLines","mentionedUsers","reduce","acc","cur","userName","id","regEx","match","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","ListOutput","customRules","image","react","reflink","sublist","order","defaultRules","JSON","stringify","undefined","rules","exports","_ref4","isSublist","withinList","parentTypes","View","items","map","item","index","_item$","indexAfterStart","start","ListRow","testID","Bullet","ordered","listItemBullet","type","isSublistWithinText","includes","ListItem","_ref5","_ref6","children","_ref7"],"sources":["renderText.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport truncate from 'lodash/truncate';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const linkInfos = parseLinksFromText(newText);\n\n for (const linkInfo of linkInfos) {\n const displayLink = truncate(linkInfo.raw, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;\n newText = newText.replace(linkInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) => {\n const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content)\n ? node.content.reduce((acc, current) => acc + current.content, '') || ''\n : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n // do not render images, we will scrape them out of the message and show on attachment card component\n image: { match: () => null },\n link: { react: link },\n list: { react: list },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: list },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={style}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = ({ children, style }: PropsWithChildren<ViewProps>) => (\n <Text style={style}>{children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeMarkdownPackage","_truncate","_simpleMarkdown","_parseLinks","_this","_jsxFileName","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","parseInline","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","linkInfos","parseLinksFromText","_iterator","_step","linkInfo","displayLink","truncate","raw","omission","markdown","encodedUrl","replace","styles","_extends2","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","pattern","RegExp","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","_ref","_objectDestructuringEmpty2","target","event","additionalInfo","defaultHandler","emitter","createElement","Text","key","style","suppressHighlighting","__self","__source","fileName","lineNumber","columnNumber","withinLink","paragraphText","_ref2","numberOfLines","mentionedUsers","reduce","acc","cur","userName","id","replaceAll","regEx","match","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","ListOutput","customRules","image","react","reflink","sublist","order","defaultRules","JSON","stringify","undefined","rules","exports","_ref4","isSublist","withinList","parentTypes","View","items","map","item","index","_item$","indexAfterStart","start","ListRow","testID","Bullet","ordered","listItemBullet","type","isSublistWithinText","includes","ListItem","_ref5","_ref6","children","_ref7"],"sources":["renderText.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport truncate from 'lodash/truncate';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const linkInfos = parseLinksFromText(newText);\n\n for (const linkInfo of linkInfos) {\n const displayLink = truncate(linkInfo.raw, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;\n newText = newText.replace(linkInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) => {\n const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content)\n ? node.content.reduce((acc, current) => acc + current.content, '') || ''\n : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n // do not render images, we will scrape them out of the message and show on attachment card component\n image: { match: () => null },\n link: { react: link },\n list: { react: list },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: list },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={style}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = ({ children, style }: PropsWithChildren<ViewProps>) => (\n <Text style={style}>{children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"],"mappings":"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"}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.OverlayReactions = void 0;
7
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
7
8
  var _react = _interopRequireDefault(require("react"));
8
9
  var _reactNative = require("react-native");
9
10
  var _reactNativeGestureHandler = require("react-native-gesture-handler");
@@ -64,6 +65,10 @@ var styles = _reactNative.StyleSheet.create({
64
65
  fontSize: 16,
65
66
  fontWeight: '700',
66
67
  paddingTop: 16
68
+ },
69
+ unseenItemContainer: {
70
+ opacity: 0,
71
+ position: 'absolute'
67
72
  }
68
73
  });
69
74
  var reactionData = [{
@@ -98,7 +103,7 @@ var ReactionIcon = function ReactionIcon(_ref) {
98
103
  __self: _this,
99
104
  __source: {
100
105
  fileName: _jsxFileName,
101
- lineNumber: 123,
106
+ lineNumber: 127,
102
107
  columnNumber: 10
103
108
  }
104
109
  });
@@ -113,6 +118,10 @@ var OverlayReactions = function OverlayReactions(props) {
113
118
  OverlayReactionsAvatar = props.OverlayReactionsAvatar;
114
119
  var layoutHeight = (0, _reactNativeReanimated.useSharedValue)(0);
115
120
  var layoutWidth = (0, _reactNativeReanimated.useSharedValue)(0);
121
+ var _React$useState = _react["default"].useState(0),
122
+ _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
123
+ itemHeight = _React$useState2[0],
124
+ setItemHeight = _React$useState2[1];
116
125
  var _useTheme = (0, _ThemeContext.useTheme)(),
117
126
  _useTheme$theme = _useTheme.theme,
118
127
  _useTheme$theme$color = _useTheme$theme.colors,
@@ -133,7 +142,6 @@ var OverlayReactions = function OverlayReactions(props) {
133
142
  reactionBubbleBackground = _useTheme$theme$overl2.reactionBubbleBackground,
134
143
  titleStyle = _useTheme$theme$overl2.title;
135
144
  var width = (0, _reactNative.useWindowDimensions)().width;
136
- var height = (0, _reactNative.useWindowDimensions)().height;
137
145
  var supportedReactionTypes = supportedReactions.map(function (supportedReaction) {
138
146
  return supportedReaction.type;
139
147
  });
@@ -141,7 +149,6 @@ var OverlayReactions = function OverlayReactions(props) {
141
149
  return supportedReactionTypes.includes(reaction.type);
142
150
  });
143
151
  var numColumns = Math.floor((width - overlayPadding * 2 - ((Number(flatListContainer.paddingHorizontal || 0) || styles.flatListContainer.paddingHorizontal) + (Number(avatarContainer.padding || 0) || styles.avatarContainer.padding)) * 2) / (avatarSize + (Number(avatarContainer.padding || 0) || styles.avatarContainer.padding) * 2));
144
- var maxHeight = Math.floor(height - overlayPadding * 2 - ((Number(flatListContainer.paddingVertical || 0) || styles.flatListContainer.paddingVertical) + (Number(avatarContainer.padding || 0) || styles.avatarContainer.padding)) * 2);
145
152
  var renderItem = function renderItem(_ref2) {
146
153
  var item = _ref2.item;
147
154
  var _item$alignment = item.alignment,
@@ -157,7 +164,7 @@ var OverlayReactions = function OverlayReactions(props) {
157
164
  __self: _this,
158
165
  __source: {
159
166
  fileName: _jsxFileName,
160
- lineNumber: 208,
167
+ lineNumber: 204,
161
168
  columnNumber: 7
162
169
  }
163
170
  }, _react["default"].createElement(_reactNative.View, {
@@ -165,7 +172,7 @@ var OverlayReactions = function OverlayReactions(props) {
165
172
  __self: _this,
166
173
  __source: {
167
174
  fileName: _jsxFileName,
168
- lineNumber: 209,
175
+ lineNumber: 205,
169
176
  columnNumber: 9
170
177
  }
171
178
  }, _react["default"].createElement(OverlayReactionsAvatar, {
@@ -174,7 +181,7 @@ var OverlayReactions = function OverlayReactions(props) {
174
181
  __self: _this,
175
182
  __source: {
176
183
  fileName: _jsxFileName,
177
- lineNumber: 210,
184
+ lineNumber: 206,
178
185
  columnNumber: 11
179
186
  }
180
187
  }), _react["default"].createElement(_reactNative.View, {
@@ -182,14 +189,14 @@ var OverlayReactions = function OverlayReactions(props) {
182
189
  __self: _this,
183
190
  __source: {
184
191
  fileName: _jsxFileName,
185
- lineNumber: 211,
192
+ lineNumber: 207,
186
193
  columnNumber: 11
187
194
  }
188
195
  }, _react["default"].createElement(_reactNativeSvg["default"], {
189
196
  __self: _this,
190
197
  __source: {
191
198
  fileName: _jsxFileName,
192
- lineNumber: 212,
199
+ lineNumber: 208,
193
200
  columnNumber: 13
194
201
  }
195
202
  }, _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -202,7 +209,7 @@ var OverlayReactions = function OverlayReactions(props) {
202
209
  __self: _this,
203
210
  __source: {
204
211
  fileName: _jsxFileName,
205
- lineNumber: 213,
212
+ lineNumber: 209,
206
213
  columnNumber: 15
207
214
  }
208
215
  }), _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -215,7 +222,7 @@ var OverlayReactions = function OverlayReactions(props) {
215
222
  __self: _this,
216
223
  __source: {
217
224
  fileName: _jsxFileName,
218
- lineNumber: 221,
225
+ lineNumber: 217,
219
226
  columnNumber: 15
220
227
  }
221
228
  })), _react["default"].createElement(_reactNative.View, {
@@ -229,7 +236,7 @@ var OverlayReactions = function OverlayReactions(props) {
229
236
  __self: _this,
230
237
  __source: {
231
238
  fileName: _jsxFileName,
232
- lineNumber: 230,
239
+ lineNumber: 226,
233
240
  columnNumber: 13
234
241
  }
235
242
  }), _react["default"].createElement(_reactNative.View, {
@@ -237,14 +244,14 @@ var OverlayReactions = function OverlayReactions(props) {
237
244
  __self: _this,
238
245
  __source: {
239
246
  fileName: _jsxFileName,
240
- lineNumber: 243,
247
+ lineNumber: 239,
241
248
  columnNumber: 13
242
249
  }
243
250
  }, _react["default"].createElement(_reactNativeSvg["default"], {
244
251
  __self: _this,
245
252
  __source: {
246
253
  fileName: _jsxFileName,
247
- lineNumber: 244,
254
+ lineNumber: 240,
248
255
  columnNumber: 15
249
256
  }
250
257
  }, _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -255,7 +262,7 @@ var OverlayReactions = function OverlayReactions(props) {
255
262
  __self: _this,
256
263
  __source: {
257
264
  fileName: _jsxFileName,
258
- lineNumber: 245,
265
+ lineNumber: 241,
259
266
  columnNumber: 17
260
267
  }
261
268
  }))), _react["default"].createElement(_reactNative.View, {
@@ -269,7 +276,7 @@ var OverlayReactions = function OverlayReactions(props) {
269
276
  __self: _this,
270
277
  __source: {
271
278
  fileName: _jsxFileName,
272
- lineNumber: 253,
279
+ lineNumber: 249,
273
280
  columnNumber: 13
274
281
  }
275
282
  }, _react["default"].createElement(ReactionIcon, {
@@ -280,7 +287,7 @@ var OverlayReactions = function OverlayReactions(props) {
280
287
  __self: _this,
281
288
  __source: {
282
289
  fileName: _jsxFileName,
283
- lineNumber: 270,
290
+ lineNumber: 266,
284
291
  columnNumber: 15
285
292
  }
286
293
  })))), _react["default"].createElement(_reactNative.View, {
@@ -288,7 +295,7 @@ var OverlayReactions = function OverlayReactions(props) {
288
295
  __self: _this,
289
296
  __source: {
290
297
  fileName: _jsxFileName,
291
- lineNumber: 279,
298
+ lineNumber: 275,
292
299
  columnNumber: 9
293
300
  }
294
301
  }, _react["default"].createElement(_reactNative.Text, {
@@ -298,7 +305,7 @@ var OverlayReactions = function OverlayReactions(props) {
298
305
  __self: _this,
299
306
  __source: {
300
307
  fileName: _jsxFileName,
301
- lineNumber: 280,
308
+ lineNumber: 276,
302
309
  columnNumber: 11
303
310
  }
304
311
  }, name)));
@@ -314,20 +321,21 @@ var OverlayReactions = function OverlayReactions(props) {
314
321
  }]
315
322
  };
316
323
  }, [overlayAlignment]);
317
- return _react["default"].createElement(_reactNativeReanimated["default"].View, {
324
+ return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNativeReanimated["default"].View, {
318
325
  onLayout: function onLayout(_ref3) {
319
326
  var layout = _ref3.nativeEvent.layout;
320
327
  layoutWidth.value = layout.width;
321
328
  layoutHeight.value = layout.height;
322
329
  },
323
330
  style: [styles.container, {
324
- backgroundColor: white
331
+ backgroundColor: white,
332
+ opacity: itemHeight ? 1 : 0
325
333
  }, container, showScreenStyle],
326
334
  __self: _this,
327
335
  __source: {
328
336
  fileName: _jsxFileName,
329
- lineNumber: 308,
330
- columnNumber: 5
337
+ lineNumber: 305,
338
+ columnNumber: 7
331
339
  }
332
340
  }, _react["default"].createElement(_reactNative.Text, {
333
341
  style: [styles.title, {
@@ -336,12 +344,13 @@ var OverlayReactions = function OverlayReactions(props) {
336
344
  __self: _this,
337
345
  __source: {
338
346
  fileName: _jsxFileName,
339
- lineNumber: 315,
340
- columnNumber: 7
347
+ lineNumber: 317,
348
+ columnNumber: 9
341
349
  }
342
350
  }, title), _react["default"].createElement(_reactNativeGestureHandler.FlatList, {
343
351
  contentContainerStyle: styles.flatListContentContainer,
344
352
  data: filteredReactions,
353
+ key: numColumns,
345
354
  keyExtractor: function keyExtractor(_ref4, index) {
346
355
  var name = _ref4.name;
347
356
  return name + "_" + index;
@@ -349,15 +358,29 @@ var OverlayReactions = function OverlayReactions(props) {
349
358
  numColumns: numColumns,
350
359
  renderItem: renderItem,
351
360
  style: [styles.flatListContainer, flatListContainer, {
352
- maxHeight: maxHeight / numColumns
361
+ maxHeight: itemHeight + (filteredReactions.length / numColumns > 1 ? itemHeight / 8 : 0)
353
362
  }],
354
363
  __self: _this,
355
364
  __source: {
356
365
  fileName: _jsxFileName,
357
- lineNumber: 316,
358
- columnNumber: 7
366
+ lineNumber: 318,
367
+ columnNumber: 9
368
+ }
369
+ }), _react["default"].createElement(_reactNative.View, {
370
+ onLayout: function onLayout(_ref5) {
371
+ var layout = _ref5.nativeEvent.layout;
372
+ setItemHeight(layout.height);
373
+ },
374
+ style: [styles.unseenItemContainer, styles.flatListContentContainer],
375
+ __self: _this,
376
+ __source: {
377
+ fileName: _jsxFileName,
378
+ lineNumber: 336,
379
+ columnNumber: 9
359
380
  }
360
- }));
381
+ }, renderItem({
382
+ item: filteredReactions[0]
383
+ }))));
361
384
  };
362
385
  exports.OverlayReactions = OverlayReactions;
363
386
  OverlayReactions.displayName = 'OverlayReactions{overlay{reactions}}';