stream-chat-react-native-core 5.19.1-beta.1 → 5.19.2-beta.1

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,9 @@ var getMentionUsers = function getMentionUsers(mentionedUser) {
28
28
  }
29
29
  return acc;
30
30
  }, '');
31
- return mentionUserString.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
31
+ return mentionUserString.replace(/[.*+?^${}()|[\]\\]/g, function (match) {
32
+ return '\\' + match;
33
+ });
32
34
  }
33
35
  return '';
34
36
  };
@@ -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","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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"}
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","replace","match","getLatestMessageDisplayText","channel","client","_message$attachments","bold","text","isMessageTypeDeleted","type","userID","members","Object","keys","state","messageSender","messageSenderText","boldOwner","includes","shortenedText","substring","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.replace(/[.*+?^${}()|[\\]\\\\]/g, function (match) {\n return '\\\\' + match;\n });\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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"}
@@ -187,7 +187,9 @@ var renderText = function renderText(params) {
187
187
  if (userName) {
188
188
  acc += (acc.length ? '|' : '') + "@" + userName;
189
189
  }
190
- return acc.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
190
+ return acc.replace(/[.*+?^${}()|[\]\\]/g, function (match) {
191
+ return '\\' + match;
192
+ });
191
193
  }, '') : '';
192
194
  var regEx = new RegExp("^\\B(" + mentionedUsers + ")", 'g');
193
195
  var match = function match(source) {
@@ -226,7 +228,7 @@ var renderText = function renderText(params) {
226
228
  __self: _this,
227
229
  __source: {
228
230
  fileName: _jsxFileName,
229
- lineNumber: 263,
231
+ lineNumber: 266,
230
232
  columnNumber: 7
231
233
  }
232
234
  }, Array.isArray(node.content) ? node.content.reduce(function (acc, current) {
@@ -243,7 +245,7 @@ var renderText = function renderText(params) {
243
245
  __self: _this,
244
246
  __source: {
245
247
  fileName: _jsxFileName,
246
- lineNumber: 272,
248
+ lineNumber: 275,
247
249
  columnNumber: 5
248
250
  }
249
251
  });
@@ -287,7 +289,7 @@ var renderText = function renderText(params) {
287
289
  __self: _this,
288
290
  __source: {
289
291
  fileName: _jsxFileName,
290
- lineNumber: 304,
292
+ lineNumber: 307,
291
293
  columnNumber: 5
292
294
  }
293
295
  }, newText);
@@ -306,7 +308,7 @@ var ListOutput = function ListOutput(_ref4) {
306
308
  __self: _this,
307
309
  __source: {
308
310
  fileName: _jsxFileName,
309
- lineNumber: 339,
311
+ lineNumber: 342,
310
312
  columnNumber: 5
311
313
  }
312
314
  }, node.items.map(function (item, index) {
@@ -320,7 +322,7 @@ var ListOutput = function ListOutput(_ref4) {
320
322
  __self: _this,
321
323
  __source: {
322
324
  fileName: _jsxFileName,
323
- lineNumber: 345,
325
+ lineNumber: 348,
324
326
  columnNumber: 13
325
327
  }
326
328
  }, _react["default"].createElement(Bullet, {
@@ -329,7 +331,7 @@ var ListOutput = function ListOutput(_ref4) {
329
331
  __self: _this,
330
332
  __source: {
331
333
  fileName: _jsxFileName,
332
- lineNumber: 346,
334
+ lineNumber: 349,
333
335
  columnNumber: 15
334
336
  }
335
337
  }));
@@ -346,7 +348,7 @@ var ListOutput = function ListOutput(_ref4) {
346
348
  __self: _this,
347
349
  __source: {
348
350
  fileName: _jsxFileName,
349
- lineNumber: 359,
351
+ lineNumber: 362,
350
352
  columnNumber: 11
351
353
  }
352
354
  }, _react["default"].createElement(Bullet, {
@@ -355,7 +357,7 @@ var ListOutput = function ListOutput(_ref4) {
355
357
  __self: _this,
356
358
  __source: {
357
359
  fileName: _jsxFileName,
358
- lineNumber: 360,
360
+ lineNumber: 363,
359
361
  columnNumber: 13
360
362
  }
361
363
  }), _react["default"].createElement(ListItem, {
@@ -364,7 +366,7 @@ var ListOutput = function ListOutput(_ref4) {
364
366
  __self: _this,
365
367
  __source: {
366
368
  fileName: _jsxFileName,
367
- lineNumber: 364,
369
+ lineNumber: 367,
368
370
  columnNumber: 13
369
371
  }
370
372
  }, output(item, state)));
@@ -380,7 +382,7 @@ var Bullet = function Bullet(_ref5) {
380
382
  __self: _this,
381
383
  __source: {
382
384
  fileName: _jsxFileName,
383
- lineNumber: 379,
385
+ lineNumber: 382,
384
386
  columnNumber: 3
385
387
  }
386
388
  }, index ? index + ". " : "\u2022 ");
@@ -393,7 +395,7 @@ var ListRow = function ListRow(_ref6) {
393
395
  __self: _this,
394
396
  __source: {
395
397
  fileName: _jsxFileName,
396
- lineNumber: 385,
398
+ lineNumber: 388,
397
399
  columnNumber: 3
398
400
  }
399
401
  }, children);
@@ -406,7 +408,7 @@ var ListItem = function ListItem(_ref7) {
406
408
  __self: _this,
407
409
  __source: {
408
410
  fileName: _jsxFileName,
409
- lineNumber: 389,
411
+ lineNumber: 392,
410
412
  columnNumber: 3
411
413
  }
412
414
  }, children);
@@ -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","undefined","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","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 if (messageTextNumberOfLines !== undefined) {\n // If we want to truncate the message text, lets only truncate the first paragraph\n // and simply not render rest of the paragraphs.\n if (state.key === '0' || state.key === 0) {\n return (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n } else {\n return null;\n }\n }\n\n return (\n <Text key={state.key} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\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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"}
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","undefined","numberOfLines","mentionedUsers","reduce","acc","cur","userName","id","match","regEx","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","ListOutput","customRules","image","react","reflink","sublist","order","defaultRules","JSON","stringify","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 if (messageTextNumberOfLines !== undefined) {\n // If we want to truncate the message text, lets only truncate the first paragraph\n // and simply not render rest of the paragraphs.\n if (state.key === '0' || state.key === 0) {\n return (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n } else {\n return null;\n }\n }\n\n return (\n <Text key={state.key} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\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\n return acc.replace(/[.*+?^${}()|[\\]\\\\]/g, function (match) {\n return '\\\\' + match;\n });\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,3 +1,3 @@
1
1
  {
2
- "version": "5.19.1-beta.1"
2
+ "version": "5.19.2-beta.1"
3
3
  }
@@ -28,7 +28,9 @@ var getMentionUsers = function getMentionUsers(mentionedUser) {
28
28
  }
29
29
  return acc;
30
30
  }, '');
31
- return mentionUserString.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
31
+ return mentionUserString.replace(/[.*+?^${}()|[\]\\]/g, function (match) {
32
+ return '\\' + match;
33
+ });
32
34
  }
33
35
  return '';
34
36
  };
@@ -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","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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"}
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","replace","match","getLatestMessageDisplayText","channel","client","_message$attachments","bold","text","isMessageTypeDeleted","type","userID","members","Object","keys","state","messageSender","messageSenderText","boldOwner","includes","shortenedText","substring","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.replace(/[.*+?^${}()|[\\]\\\\]/g, function (match) {\n return '\\\\' + match;\n });\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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"}
@@ -187,7 +187,9 @@ var renderText = function renderText(params) {
187
187
  if (userName) {
188
188
  acc += (acc.length ? '|' : '') + "@" + userName;
189
189
  }
190
- return acc.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
190
+ return acc.replace(/[.*+?^${}()|[\]\\]/g, function (match) {
191
+ return '\\' + match;
192
+ });
191
193
  }, '') : '';
192
194
  var regEx = new RegExp("^\\B(" + mentionedUsers + ")", 'g');
193
195
  var match = function match(source) {
@@ -226,7 +228,7 @@ var renderText = function renderText(params) {
226
228
  __self: _this,
227
229
  __source: {
228
230
  fileName: _jsxFileName,
229
- lineNumber: 263,
231
+ lineNumber: 266,
230
232
  columnNumber: 7
231
233
  }
232
234
  }, Array.isArray(node.content) ? node.content.reduce(function (acc, current) {
@@ -243,7 +245,7 @@ var renderText = function renderText(params) {
243
245
  __self: _this,
244
246
  __source: {
245
247
  fileName: _jsxFileName,
246
- lineNumber: 272,
248
+ lineNumber: 275,
247
249
  columnNumber: 5
248
250
  }
249
251
  });
@@ -287,7 +289,7 @@ var renderText = function renderText(params) {
287
289
  __self: _this,
288
290
  __source: {
289
291
  fileName: _jsxFileName,
290
- lineNumber: 304,
292
+ lineNumber: 307,
291
293
  columnNumber: 5
292
294
  }
293
295
  }, newText);
@@ -306,7 +308,7 @@ var ListOutput = function ListOutput(_ref4) {
306
308
  __self: _this,
307
309
  __source: {
308
310
  fileName: _jsxFileName,
309
- lineNumber: 339,
311
+ lineNumber: 342,
310
312
  columnNumber: 5
311
313
  }
312
314
  }, node.items.map(function (item, index) {
@@ -320,7 +322,7 @@ var ListOutput = function ListOutput(_ref4) {
320
322
  __self: _this,
321
323
  __source: {
322
324
  fileName: _jsxFileName,
323
- lineNumber: 345,
325
+ lineNumber: 348,
324
326
  columnNumber: 13
325
327
  }
326
328
  }, _react["default"].createElement(Bullet, {
@@ -329,7 +331,7 @@ var ListOutput = function ListOutput(_ref4) {
329
331
  __self: _this,
330
332
  __source: {
331
333
  fileName: _jsxFileName,
332
- lineNumber: 346,
334
+ lineNumber: 349,
333
335
  columnNumber: 15
334
336
  }
335
337
  }));
@@ -346,7 +348,7 @@ var ListOutput = function ListOutput(_ref4) {
346
348
  __self: _this,
347
349
  __source: {
348
350
  fileName: _jsxFileName,
349
- lineNumber: 359,
351
+ lineNumber: 362,
350
352
  columnNumber: 11
351
353
  }
352
354
  }, _react["default"].createElement(Bullet, {
@@ -355,7 +357,7 @@ var ListOutput = function ListOutput(_ref4) {
355
357
  __self: _this,
356
358
  __source: {
357
359
  fileName: _jsxFileName,
358
- lineNumber: 360,
360
+ lineNumber: 363,
359
361
  columnNumber: 13
360
362
  }
361
363
  }), _react["default"].createElement(ListItem, {
@@ -364,7 +366,7 @@ var ListOutput = function ListOutput(_ref4) {
364
366
  __self: _this,
365
367
  __source: {
366
368
  fileName: _jsxFileName,
367
- lineNumber: 364,
369
+ lineNumber: 367,
368
370
  columnNumber: 13
369
371
  }
370
372
  }, output(item, state)));
@@ -380,7 +382,7 @@ var Bullet = function Bullet(_ref5) {
380
382
  __self: _this,
381
383
  __source: {
382
384
  fileName: _jsxFileName,
383
- lineNumber: 379,
385
+ lineNumber: 382,
384
386
  columnNumber: 3
385
387
  }
386
388
  }, index ? index + ". " : "\u2022 ");
@@ -393,7 +395,7 @@ var ListRow = function ListRow(_ref6) {
393
395
  __self: _this,
394
396
  __source: {
395
397
  fileName: _jsxFileName,
396
- lineNumber: 385,
398
+ lineNumber: 388,
397
399
  columnNumber: 3
398
400
  }
399
401
  }, children);
@@ -406,7 +408,7 @@ var ListItem = function ListItem(_ref7) {
406
408
  __self: _this,
407
409
  __source: {
408
410
  fileName: _jsxFileName,
409
- lineNumber: 389,
411
+ lineNumber: 392,
410
412
  columnNumber: 3
411
413
  }
412
414
  }, children);
@@ -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","undefined","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","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 if (messageTextNumberOfLines !== undefined) {\n // If we want to truncate the message text, lets only truncate the first paragraph\n // and simply not render rest of the paragraphs.\n if (state.key === '0' || state.key === 0) {\n return (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n } else {\n return null;\n }\n }\n\n return (\n <Text key={state.key} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\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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"}
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","undefined","numberOfLines","mentionedUsers","reduce","acc","cur","userName","id","match","regEx","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","ListOutput","customRules","image","react","reflink","sublist","order","defaultRules","JSON","stringify","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 if (messageTextNumberOfLines !== undefined) {\n // If we want to truncate the message text, lets only truncate the first paragraph\n // and simply not render rest of the paragraphs.\n if (state.key === '0' || state.key === 0) {\n return (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n } else {\n return null;\n }\n }\n\n return (\n <Text key={state.key} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\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\n return acc.replace(/[.*+?^${}()|[\\]\\\\]/g, function (match) {\n return '\\\\' + match;\n });\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":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAGA,IAAAE,2BAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,SAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AAcA,IAAAK,WAAA,GAAAL,OAAA;AAAkD,IAAAM,KAAA;EAAAC,YAAA;AAAA,SAAAC,gCAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,oBAAAE,EAAA,UAAAA,EAAA,GAAAA,EAAA,CAAAG,IAAA,CAAAL,CAAA,GAAAM,IAAA,CAAAC,IAAA,CAAAL,EAAA,OAAAM,KAAA,CAAAC,OAAA,CAAAT,CAAA,MAAAE,EAAA,GAAAQ,2BAAA,CAAAV,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAW,MAAA,qBAAAT,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAU,CAAA,+BAAAA,CAAA,IAAAZ,CAAA,CAAAW,MAAA,WAAAE,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAd,CAAA,CAAAY,CAAA,sBAAAG,SAAA;AAAA,SAAAL,4BAAAV,CAAA,EAAAgB,MAAA,SAAAhB,CAAA,qBAAAA,CAAA,sBAAAiB,iBAAA,CAAAjB,CAAA,EAAAgB,MAAA,OAAAE,CAAA,GAAAC,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAhB,IAAA,CAAAL,CAAA,EAAAsB,KAAA,aAAAJ,CAAA,iBAAAlB,CAAA,CAAAuB,WAAA,EAAAL,CAAA,GAAAlB,CAAA,CAAAuB,WAAA,CAAAC,IAAA,MAAAN,CAAA,cAAAA,CAAA,mBAAAV,KAAA,CAAAiB,IAAA,CAAAzB,CAAA,OAAAkB,CAAA,+DAAAQ,IAAA,CAAAR,CAAA,UAAAD,iBAAA,CAAAjB,CAAA,EAAAgB,MAAA;AAAA,SAAAC,kBAAAU,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAAhB,MAAA,EAAAiB,GAAA,GAAAD,GAAA,CAAAhB,MAAA,WAAAC,CAAA,MAAAiB,IAAA,OAAArB,KAAA,CAAAoB,GAAA,GAAAhB,CAAA,GAAAgB,GAAA,EAAAhB,CAAA,IAAAiB,IAAA,CAAAjB,CAAA,IAAAe,GAAA,CAAAf,CAAA,UAAAiB,IAAA;AAOlD,IAAMC,qBAAoC,GAAG;EAC3CC,UAAU,EAAE;IACVC,QAAQ,EAAE,EAAE;IACZC,OAAO,EAAE,CAAC;IACVC,iBAAiB,EAAE;EACrB,CAAC;EACDC,IAAI,EAAE;IACJC,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb,CAAC;EACDC,cAAc,EAAE;IACdC,UAAU,EAAE;EACd,CAAC;EACDC,YAAY,EAAE;IACZC,IAAI,EAAE;EACR,CAAC;EACDC,OAAO,EAAE;IACPC,aAAa,EAAE;EACjB,CAAC;EACDC,QAAQ,EAAE;IACRL,UAAU,EAAE;EACd,CAAC;EACDM,SAAS,EAAE;IACTT,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb,CAAC;EACDS,eAAe,EAAE;IACfV,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb,CAAC;EACDU,kBAAkB,EAAE;IAClBX,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb;AACF,CAAC;AAED,IAAMW,KAAoB,GAAG,SAAAA,MAACC,OAAO,EAAED,MAAK,EAAEE,KAAK;EAAA,OAAM;IACvDC,OAAO,EAAE,IAAAC,2BAAW,EAACJ,MAAK,EAAEC,OAAO,CAAC,CAAC,CAAC,EAAEC,KAAK;EAC/C,CAAC;AAAA,CAAC;AAmBK,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAGrBC,MAA4C,EACzC;EACH,IACEC,MAAM,GAWJD,MAAM,CAXRC,MAAM;IACNC,aAAa,GAUXF,MAAM,CAVRE,aAAa;IACbC,cAAc,GASZH,MAAM,CATRG,cAAc;IACdC,OAAO,GAQLJ,MAAM,CARRI,OAAO;IACPC,cAAc,GAOZL,MAAM,CAPRK,cAAc;IACdC,wBAAwB,GAMtBN,MAAM,CANRM,wBAAwB;IAChBC,YAAY,GAKlBP,MAAM,CALRQ,MAAM;IACOC,gBAAgB,GAI3BT,MAAM,CAJRU,WAAW;IACXC,UAAU,GAGRX,MAAM,CAHRW,UAAU;IACDC,YAAY,GAEnBZ,MAAM,CAFRa,OAAO;IACPC,YAAY,GACVd,MAAM,CADRc,YAAY;EAKd,IAAQC,eAAe,GAAWX,OAAO,CAAjCW,eAAe;IAAEC,IAAI,GAAKZ,OAAO,CAAhBY,IAAI;EAE7B,IAAI,CAACA,IAAI,EAAE,OAAO,IAAI;EAEtB,IAAIC,OAAO,GAAGD,IAAI,CAACE,IAAI,CAAC,CAAC;EACzB,IAAMC,SAAS,GAAG,IAAAC,8BAAkB,EAACH,OAAO,CAAC;EAE7C,SAAAI,SAAA,GAAA5E,+BAAA,CAAuB0E,SAAS,GAAAG,KAAA,IAAAA,KAAA,GAAAD,SAAA,IAAA9D,IAAA,GAAE;IAAA,IAAvBgE,QAAQ,GAAAD,KAAA,CAAA9D,KAAA;IACjB,IAAMgE,WAAW,GAAG,IAAAC,oBAAQ,EAACF,QAAQ,CAACG,GAAG,EAAE;MACzCrE,MAAM,EAAE,GAAG;MACXsE,QAAQ,EAAE;IACZ,CAAC,CAAC;IACF,IAAMC,QAAQ,SAAOJ,WAAW,UAAKD,QAAQ,CAACM,UAAU,MAAG;IAC3DZ,OAAO,GAAGA,OAAO,CAACa,OAAO,CAACP,QAAQ,CAACG,GAAG,EAAEE,QAAQ,CAAC;EACnD;EAEAX,OAAO,GAAGA,OAAO,CAACa,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;EAE7C,IAAMC,MAAqB,OAAAC,SAAA,iBACtBxD,qBAAqB,EACrB2B,cAAc;IACjB8B,QAAQ,MAAAD,SAAA,iBACHxD,qBAAqB,CAACyD,QAAQ;MACjCC,KAAK,EAAEjC,MAAM,CAACkC;IAAW,GACtBhC,cAAc,oBAAdA,cAAc,CAAE8B,QAAQ,CAC5B;IACDxD,UAAU,MAAAuD,SAAA,iBACLxD,qBAAqB,CAACC,UAAU;MACnC2D,eAAe,EAAEnC,MAAM,CAACoC,WAAW;MACnCC,WAAW,EAAErC,MAAM,CAACsC,cAAc;MAClCL,KAAK,EAAEjC,MAAM,CAACuC;IAAU,GACrBrC,cAAc,oBAAdA,cAAc,CAAE1B,UAAU,CAC9B;IACDa,QAAQ,MAAA0C,SAAA,iBACHxD,qBAAqB,CAACc,QAAQ;MACjC4C,KAAK,EAAEjC,MAAM,CAACkC;IAAW,GACtBhC,cAAc,oBAAdA,cAAc,CAAEb,QAAQ,CAC5B;IACD0B,IAAI,MAAAgB,SAAA,iBACCxD,qBAAqB,CAACwC,IAAI;MAC7BkB,KAAK,EAAEjC,MAAM,CAACwC;IAAK,GAChBtC,cAAc,oBAAdA,cAAc,CAAEa,IAAI;EACxB,EACF;EAED,IAAMR,MAAM,GAAG,SAATA,MAAMA,CAAIkC,GAAW,EAAK;IAC9B,IAAMC,OAAO,GAAG,IAAIC,MAAM,CAAC,WAAW,CAAC;IACvC,IAAI,CAACD,OAAO,CAACvE,IAAI,CAACsE,GAAG,CAAC,EAAE;MACtBA,GAAG,GAAG,SAAS,GAAGA,GAAG;IACvB;IAEA,OAAOnC,YAAY,GACfA,YAAY,CAACmC,GAAG,CAAC,GACjBG,oBAAO,CAACC,UAAU,CAACJ,GAAG,CAAC,CAACK,IAAI,CAAC,UAACC,UAAU;MAAA,OAAKA,UAAU,IAAIH,oBAAO,CAACI,OAAO,CAACP,GAAG,CAAC;IAAA,EAAC;EACtF,CAAC;EAED,IAAMQ,IAAqB,GAAG,SAAxBA,IAAqBA,CAAIC,IAAI,EAAEC,MAAM,EAAAC,IAAA,EAAmB;IAAA,IAAZzD,KAAK,OAAAoC,SAAA,sBAAAsB,0BAAA,aAAAD,IAAA,GAAAA,IAAA;IACrD,IAAMX,GAAG,GAAGS,IAAI,CAACI,MAAM;IACvB,IAAM1C,OAAO,GAAG,SAAVA,OAAOA,CAAI2C,KAA4B,EAAK;MAChD,IAAI,CAAC1C,YAAY,IAAIF,YAAY,EAAE;QACjCA,YAAY,CAAC;UACX6C,cAAc,EAAE;YAAEf,GAAG,EAAHA;UAAI,CAAC;UACvBgB,cAAc,EAAE,SAAAA,eAAA,EAAM;YACpBlD,MAAM,CAACkC,GAAG,CAAC;UACb,CAAC;UACDiB,OAAO,EAAE,UAAU;UACnBH,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAC;IAED,IAAM9C,WAAW,GAAG,SAAdA,WAAWA,CAAI8C,KAA4B,EAAK;MACpD,IAAI,CAAC1C,YAAY,IAAIL,gBAAgB,EAAE;QACrCA,gBAAgB,CAAC;UACfgD,cAAc,EAAE;YAAEf,GAAG,EAAHA;UAAI,CAAC;UACvBiB,OAAO,EAAE,UAAU;UACnBH,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAC;IAED,OACEzH,MAAA,YAAA6H,aAAA,CAAC1H,YAAA,CAAA2H,IAAI;MACHC,GAAG,EAAElE,KAAK,CAACkE,GAAI;MACfpD,WAAW,EAAEA,WAAY;MACzBG,OAAO,EAAEA,OAAQ;MACjBkD,KAAK,EAAEhC,MAAM,CAACE,QAAS;MACvB+B,oBAAoB,EAAE,IAAK;MAAAC,MAAA,EAAA1H,KAAA;MAAA2H,QAAA;QAAAC,QAAA,EAAA3H,YAAA;QAAA4H,UAAA;QAAAC,YAAA;MAAA;IAAA,GAE1BjB,MAAM,CAACD,IAAI,CAACtD,OAAO,MAAAmC,SAAA,iBAAOpC,KAAK;MAAE0E,UAAU,EAAE;IAAI,EAAE,CAChD,CAAC;EAEX,CAAC;EAED,IAAMC,aAA8B,GAAG,SAAjCA,aAA8BA,CAAIpB,IAAI,EAAEC,MAAM,EAAAoB,KAAA,EAAmB;IAAA,IAAZ5E,KAAK,OAAAoC,SAAA,sBAAAsB,0BAAA,aAAAkB,KAAA,GAAAA,KAAA;IAC9D,IAAIlE,wBAAwB,KAAKmE,SAAS,EAAE;MAG1C,IAAI7E,KAAK,CAACkE,GAAG,KAAK,GAAG,IAAIlE,KAAK,CAACkE,GAAG,KAAK,CAAC,EAAE;QACxC,OACE/H,MAAA,YAAA6H,aAAA,CAAC1H,YAAA,CAAA2H,IAAI;UAACC,GAAG,EAAElE,KAAK,CAACkE,GAAI;UAACY,aAAa,EAAEpE,wBAAyB;UAACyD,KAAK,EAAEhC,MAAM,CAACxC,SAAU;UAAA0E,MAAA,EAAA1H,KAAA;UAAA2H,QAAA;YAAAC,QAAA,EAAA3H,YAAA;YAAA4H,UAAA;YAAAC,YAAA;UAAA;QAAA,GACpFjB,MAAM,CAACD,IAAI,CAACtD,OAAO,EAAED,KAAK,CACvB,CAAC;MAEX,CAAC,MAAM;QACL,OAAO,IAAI;MACb;IACF;IAEA,OACE7D,MAAA,YAAA6H,aAAA,CAAC1H,YAAA,CAAA2H,IAAI;MAACC,GAAG,EAAElE,KAAK,CAACkE,GAAI;MAACC,KAAK,EAAEhC,MAAM,CAACxC,SAAU;MAAA0E,MAAA,EAAA1H,KAAA;MAAA2H,QAAA;QAAAC,QAAA,EAAA3H,YAAA;QAAA4H,UAAA;QAAAC,YAAA;MAAA;IAAA,GAC3CjB,MAAM,CAACD,IAAI,CAACtD,OAAO,EAAED,KAAK,CACvB,CAAC;EAEX,CAAC;EAED,IAAM+E,cAAc,GAAGzH,KAAK,CAACC,OAAO,CAAC4D,eAAe,CAAC,GACjDA,eAAe,CAAC6D,MAAM,CAAC,UAACC,GAAG,EAAEC,GAAG,EAAK;IACnC,IAAMC,QAAQ,GAAGD,GAAG,CAAC5G,IAAI,IAAI4G,GAAG,CAACE,EAAE,IAAI,EAAE;IACzC,IAAID,QAAQ,EAAE;MACZF,GAAG,KAAOA,GAAG,CAACxH,MAAM,GAAG,GAAG,GAAG,EAAE,UAAI0H,QAAU;IAC/C;IAEA,OAAOF,GAAG,CAAC/C,OAAO,CAAC,qBAAqB,EAAE,UAAUmD,KAAK,EAAE;MACzD,OAAO,IAAI,GAAGA,KAAK;IACrB,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC,GACN,EAAE;EAEN,IAAMC,KAAK,GAAG,IAAItC,MAAM,WAAS+B,cAAc,QAAK,GAAG,CAAC;EACxD,IAAMM,KAAoB,GAAG,SAAvBA,KAAoBA,CAAIE,MAAM;IAAA,OAAKD,KAAK,CAACE,IAAI,CAACD,MAAM,CAAC;EAAA;EAE3D,IAAME,aAA8B,GAAG,SAAjCA,aAA8BA,CAAIlC,IAAI,EAAEC,MAAM,EAAAkC,KAAA,EAAmB;IAAA,IAAAC,cAAA,EAAAC,qBAAA;IAAA,IAAZ5F,KAAK,OAAAoC,SAAA,sBAAAsB,0BAAA,aAAAgC,KAAA,GAAAA,KAAA;IAE9D,IAAMP,QAAQ,IAAAQ,cAAA,GAAGpC,IAAI,CAACtD,OAAO,CAAC,CAAC,CAAC,sBAAA2F,qBAAA,GAAfD,cAAA,CAAiB1F,OAAO,qBAAxB2F,qBAAA,CAA0BC,SAAS,CAAC,CAAC,CAAC;IACvD,IAAM5E,OAAO,GAAG,SAAVA,OAAOA,CAAI2C,KAA4B,EAAK;MAChD,IAAI,CAAC1C,YAAY,IAAIF,YAAY,EAAE;QACjCA,YAAY,CAAC;UACX6C,cAAc,EAAE;YACdiC,IAAI,EAAE3E,eAAe,oBAAfA,eAAe,CAAE4E,IAAI,CACzB,UAACD,IAAsC;cAAA,OAAKX,QAAQ,KAAKW,IAAI,CAACxH,IAAI;YAAA,CACpE;UACF,CAAC;UACDyF,OAAO,EAAE,aAAa;UACtBH,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAC;IAED,IAAM9C,WAAW,GAAG,SAAdA,WAAWA,CAAI8C,KAA4B,EAAK;MACpD,IAAI,CAAC1C,YAAY,IAAIL,gBAAgB,EAAE;QACrCA,gBAAgB,CAAC;UACfkD,OAAO,EAAE,aAAa;UACtBH,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAC;IAED,OACEzH,MAAA,YAAA6H,aAAA,CAAC1H,YAAA,CAAA2H,IAAI;MAACC,GAAG,EAAElE,KAAK,CAACkE,GAAI;MAACpD,WAAW,EAAEA,WAAY;MAACG,OAAO,EAAEA,OAAQ;MAACkD,KAAK,EAAEhC,MAAM,CAACzC,QAAS;MAAA2E,MAAA,EAAA1H,KAAA;MAAA2H,QAAA;QAAAC,QAAA,EAAA3H,YAAA;QAAA4H,UAAA;QAAAC,YAAA;MAAA;IAAA,GACtFnH,KAAK,CAACC,OAAO,CAACgG,IAAI,CAACtD,OAAO,CAAC,GACxBsD,IAAI,CAACtD,OAAO,CAAC+E,MAAM,CAAC,UAACC,GAAG,EAAEe,OAAO;MAAA,OAAKf,GAAG,GAAGe,OAAO,CAAC/F,OAAO;IAAA,GAAE,EAAE,CAAC,IAAI,EAAE,GACtEuD,MAAM,CAACD,IAAI,CAACtD,OAAO,EAAED,KAAK,CAC1B,CAAC;EAEX,CAAC;EAED,IAAMf,IAAqB,GAAG,SAAxBA,IAAqBA,CAAIsE,IAAI,EAAEC,MAAM,EAAExD,KAAK;IAAA,OAChD7D,MAAA,YAAA6H,aAAA,CAACiC,UAAU;MACT/B,GAAG,YAAUlE,KAAK,CAACkE,GAAM;MACzBX,IAAI,EAAEA,IAAK;MACXC,MAAM,EAAEA,MAAO;MACfxD,KAAK,EAAEA,KAAM;MACbmC,MAAM,EAAEA,MAAO;MAAAkC,MAAA,EAAA1H,KAAA;MAAA2H,QAAA;QAAAC,QAAA,EAAA3H,YAAA;QAAA4H,UAAA;QAAAC,YAAA;MAAA;IAAA,CAChB,CAAC;EAAA,CACH;EAED,IAAMyB,WAAW,OAAA9D,SAAA;IAEf+D,KAAK,EAAE;MAAEd,KAAK,EAAE,SAAAA,MAAA;QAAA,OAAM,IAAI;MAAA;IAAC,CAAC;IAC5B/B,IAAI,EAAE;MAAE8C,KAAK,EAAE9C;IAAK,CAAC;IACrBrE,IAAI,EAAE;MAAEmH,KAAK,EAAEnH;IAAK,CAAC;IAErBU,SAAS,EAAEe,wBAAwB,GAAG;MAAE0F,KAAK,EAAEzB;IAAc,CAAC,GAAG,CAAC,CAAC;IAEnE0B,OAAO,EAAE;MAAEhB,KAAK,EAAE,SAAAA,MAAA;QAAA,OAAM,IAAI;MAAA;IAAC,CAAC;IAC9BiB,OAAO,EAAE;MAAEF,KAAK,EAAEnH;IAAK;EAAC,GACpB8F,cAAc,GACd;IACErF,QAAQ,EAAE;MACR2F,KAAK,EAALA,KAAK;MACLkB,KAAK,EAAEC,4BAAY,CAACpF,IAAI,CAACmF,KAAK,GAAG,GAAG;MACpCzG,KAAK,EAALA,KAAK;MACLsG,KAAK,EAAEX;IACT;EACF,CAAC,GACD,CAAC,CAAC,CACP;EAED,OACEtJ,MAAA,YAAA6H,aAAA,CAACzH,2BAAA,WAAQ;IACP2H,GAAG,EAAKuC,IAAI,CAACC,SAAS,CAACvF,eAAe,CAAC,SAAIJ,UAAU,UACnDN,cAAc,GAAGgG,IAAI,CAACC,SAAS,CAACnG,cAAc,CAAC,GAAGsE,SAAS,UACzD4B,IAAI,CAACC,SAAS,CAACrG,MAAM,CAAI;IAC7BO,MAAM,EAAEA,MAAO;IACf+F,KAAK,MAAAvE,SAAA,iBACA8D,WAAW,EACX5F,aAAa,CAChB;IACF6B,MAAM,EAAEA,MAAO;IAAAkC,MAAA,EAAA1H,KAAA;IAAA2H,QAAA;MAAAC,QAAA,EAAA3H,YAAA;MAAA4H,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEdpD,OACO,CAAC;AAEf,CAAC;AAACuF,OAAA,CAAAzG,UAAA,GAAAA,UAAA;AAgBK,IAAM8F,UAAU,GAAG,SAAbA,UAAUA,CAAAY,KAAA,EAAyD;EAAA,IAAnDtD,IAAI,GAAAsD,KAAA,CAAJtD,IAAI;IAAEC,MAAM,GAAAqD,KAAA,CAANrD,MAAM;IAAExD,KAAK,GAAA6G,KAAA,CAAL7G,KAAK;IAAEmC,MAAM,GAAA0E,KAAA,CAAN1E,MAAM;EACtD,IAAI2E,SAAS,GAAG9G,KAAK,CAAC+G,UAAU;EAChC,IAAMC,WAAW,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;EAEnD,OACE7K,MAAA,YAAA6H,aAAA,CAAC1H,YAAA,CAAA2K,IAAI;IAAC/C,GAAG,EAAElE,KAAK,CAACkE,GAAI;IAACC,KAAK,EAAE2C,SAAS,GAAG3E,MAAM,oBAANA,MAAM,CAAEmE,OAAO,GAAGnE,MAAM,oBAANA,MAAM,CAAElD,IAAK;IAAAoF,MAAA,EAAA1H,KAAA;IAAA2H,QAAA;MAAAC,QAAA,EAAA3H,YAAA;MAAA4H,UAAA;MAAAC,YAAA;IAAA;EAAA,GACrElB,IAAI,CAAC2D,KAAK,CAACC,GAAG,CAAC,UAACC,IAAmB,EAAEC,KAAa,EAAK;IAAA,IAAAC,MAAA;IACtD,IAAMC,eAAe,GAAGhE,IAAI,CAACiE,KAAK,GAAGH,KAAK;IAE1C,IAAID,IAAI,KAAK,IAAI,EAAE;MACjB,OACEjL,MAAA,YAAA6H,aAAA,CAACyD,OAAO;QAACvD,GAAG,EAAEmD,KAAM;QAAClD,KAAK,EAAEhC,MAAM,oBAANA,MAAM,CAAE3C,OAAQ;QAACkI,MAAM,EAAC,WAAW;QAAArD,MAAA,EAAA1H,KAAA;QAAA2H,QAAA;UAAAC,QAAA,EAAA3H,YAAA;UAAA4H,UAAA;UAAAC,YAAA;QAAA;MAAA,GAC7DtI,MAAA,YAAA6H,aAAA,CAAC2D,MAAM;QACLN,KAAK,EAAE9D,IAAI,CAACqE,OAAO,IAAIL,eAAgB;QACvCpD,KAAK,EAAEZ,IAAI,CAACqE,OAAO,GAAGzF,MAAM,oBAANA,MAAM,CAAE/C,cAAc,GAAG+C,MAAM,oBAANA,MAAM,CAAE0F,cAAe;QAAAxD,MAAA,EAAA1H,KAAA;QAAA2H,QAAA;UAAAC,QAAA,EAAA3H,YAAA;UAAA4H,UAAA;UAAAC,YAAA;QAAA;MAAA,CACvE,CACM,CAAC;IAEd;IAEAqC,SAAS,GAAGM,IAAI,CAAC3J,MAAM,GAAG,CAAC,IAAI2J,IAAI,CAAC,CAAC,CAAC,CAACU,IAAI,KAAK,MAAM;IACtD,IAAMC,mBAAmB,GAAGf,WAAW,CAACgB,QAAQ,CAAC,EAAAV,MAAA,GAACF,IAAI,CAAC,CAAC,CAAC,YAAAE,MAAA,GAAI,CAAC,CAAC,EAAEQ,IAAI,CAAC,IAAIhB,SAAS;IACnF,IAAM3C,KAAK,GAAG4D,mBAAmB,GAAG;MAAE7I,YAAY,EAAE;IAAE,CAAC,GAAG,CAAC,CAAC;IAE5D,OACE/C,MAAA,YAAA6H,aAAA,CAACyD,OAAO;MAACvD,GAAG,EAAEmD,KAAM;MAAClD,KAAK,EAAEhC,MAAM,oBAANA,MAAM,CAAE3C,OAAQ;MAACkI,MAAM,EAAC,WAAW;MAAArD,MAAA,EAAA1H,KAAA;MAAA2H,QAAA;QAAAC,QAAA,EAAA3H,YAAA;QAAA4H,UAAA;QAAAC,YAAA;MAAA;IAAA,GAC7DtI,MAAA,YAAA6H,aAAA,CAAC2D,MAAM;MACLN,KAAK,EAAE9D,IAAI,CAACqE,OAAO,IAAIL,eAAgB;MACvCpD,KAAK,EAAEZ,IAAI,CAACqE,OAAO,GAAGzF,MAAM,oBAANA,MAAM,CAAE/C,cAAc,GAAG+C,MAAM,oBAANA,MAAM,CAAE0F,cAAe;MAAAxD,MAAA,EAAA1H,KAAA;MAAA2H,QAAA;QAAAC,QAAA,EAAA3H,YAAA;QAAA4H,UAAA;QAAAC,YAAA;MAAA;IAAA,CACvE,CAAC,EACFtI,MAAA,YAAA6H,aAAA,CAACiE,QAAQ;MAAC/D,GAAG,EAAE,CAAE;MAACC,KAAK,EAAE,CAAChC,MAAM,oBAANA,MAAM,CAAE7C,YAAY,EAAE6E,KAAK,CAAE;MAAAE,MAAA,EAAA1H,KAAA;MAAA2H,QAAA;QAAAC,QAAA,EAAA3H,YAAA;QAAA4H,UAAA;QAAAC,YAAA;MAAA;IAAA,GACpDjB,MAAM,CAAC4D,IAAI,EAAEpH,KAAK,CACX,CACH,CAAC;EAEd,CAAC,CACG,CAAC;AAEX,CAAC;AAAC4G,OAAA,CAAAX,UAAA,GAAAA,UAAA;AAMF,IAAM0B,MAAM,GAAG,SAATA,MAAMA,CAAAO,KAAA;EAAA,IAAMb,KAAK,GAAAa,KAAA,CAALb,KAAK;IAAElD,KAAK,GAAA+D,KAAA,CAAL/D,KAAK;EAAA,OAC5BhI,MAAA,YAAA6H,aAAA,CAAC1H,YAAA,CAAA2H,IAAI;IAACC,GAAG,EAAE,CAAE;IAACC,KAAK,EAAEA,KAAM;IAAAE,MAAA,EAAA1H,KAAA;IAAA2H,QAAA;MAAAC,QAAA,EAAA3H,YAAA;MAAA4H,UAAA;MAAAC,YAAA;IAAA;EAAA,GACxB4C,KAAK,GAAMA,KAAK,UAAO,SACpB,CAAC;AAAA,CACR;AAED,IAAMI,OAAO,GAAG,SAAVA,OAAOA,CAAAU,KAAA;EAAA,IAAMC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;IAAEjE,KAAK,GAAAgE,KAAA,CAALhE,KAAK;EAAA,OAChChI,MAAA,YAAA6H,aAAA,CAAC1H,YAAA,CAAA2H,IAAI;IAACE,KAAK,EAAEA,KAAM;IAAAE,MAAA,EAAA1H,KAAA;IAAA2H,QAAA;MAAAC,QAAA,EAAA3H,YAAA;MAAA4H,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAE2D,QAAe,CAAC;AAAA,CACtC;AAED,IAAMH,QAAQ,GAAG,SAAXA,QAAQA,CAAAI,KAAA;EAAA,IAAMD,QAAQ,GAAAC,KAAA,CAARD,QAAQ;IAAEjE,KAAK,GAAAkE,KAAA,CAALlE,KAAK;EAAA,OACjChI,MAAA,YAAA6H,aAAA,CAAC1H,YAAA,CAAA2H,IAAI;IAACE,KAAK,EAAEA,KAAM;IAAAE,MAAA,EAAA1H,KAAA;IAAA2H,QAAA;MAAAC,QAAA,EAAA3H,YAAA;MAAA4H,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAE2D,QAAe,CAAC;AAAA,CACtC"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.19.1-beta.1"
2
+ "version": "5.19.2-beta.1"
3
3
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "5.19.1-beta.1",
4
+ "version": "5.19.2-beta.1",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -63,7 +63,9 @@ const getMentionUsers = <
63
63
  }, '');
64
64
 
65
65
  // escape special characters
66
- return mentionUserString.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
66
+ return mentionUserString.replace(/[.*+?^${}()|[\]\\]/g, function (match) {
67
+ return '\\' + match;
68
+ });
67
69
  }
68
70
 
69
71
  return '';
@@ -226,7 +226,10 @@ export const renderText = <
226
226
  if (userName) {
227
227
  acc += `${acc.length ? '|' : ''}@${userName}`;
228
228
  }
229
- return acc.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
229
+
230
+ return acc.replace(/[.*+?^${}()|[\]\\]/g, function (match) {
231
+ return '\\' + match;
232
+ });
230
233
  }, '')
231
234
  : '';
232
235
 
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.19.1-beta.1"
2
+ "version": "5.19.2-beta.1"
3
3
  }