stream-chat-react-native-core 4.0.0-beta.3 → 4.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/lib/commonjs/components/Attachment/Giphy.js +109 -145
  2. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  3. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +9 -5
  4. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  5. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +144 -64
  6. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  7. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +240 -0
  8. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
  9. package/lib/commonjs/contexts/themeContext/utils/theme.js +7 -6
  10. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  11. package/lib/commonjs/icons/index.js +0 -26
  12. package/lib/commonjs/icons/index.js.map +1 -1
  13. package/lib/commonjs/version.json +1 -1
  14. package/lib/module/components/Attachment/Giphy.js +109 -145
  15. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  16. package/lib/module/components/Message/MessageSimple/MessageFooter.js +9 -5
  17. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  18. package/lib/module/components/Message/MessageSimple/utils/renderText.js +144 -64
  19. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  20. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +240 -0
  21. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js.map +1 -0
  22. package/lib/module/contexts/themeContext/utils/theme.js +7 -6
  23. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  24. package/lib/module/icons/index.js +0 -26
  25. package/lib/module/icons/index.js.map +1 -1
  26. package/lib/module/version.json +1 -1
  27. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +15 -1
  28. package/lib/typescript/components/Message/MessageSimple/utils/renderText.test.d.ts +1 -0
  29. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +6 -5
  30. package/lib/typescript/icons/index.d.ts +0 -2
  31. package/package.json +1 -1
  32. package/src/components/Attachment/Giphy.tsx +64 -66
  33. package/src/components/Message/MessageSimple/MessageFooter.tsx +5 -5
  34. package/src/components/Message/MessageSimple/utils/renderText.test.tsx +70 -0
  35. package/src/components/Message/MessageSimple/utils/renderText.tsx +77 -47
  36. package/src/contexts/themeContext/utils/theme.ts +13 -11
  37. package/src/icons/index.ts +0 -2
  38. package/src/version.json +1 -1
  39. package/lib/commonjs/icons/Left.js +0 -38
  40. package/lib/commonjs/icons/Left.js.map +0 -1
  41. package/lib/commonjs/icons/Right.js +0 -38
  42. package/lib/commonjs/icons/Right.js.map +0 -1
  43. package/lib/module/icons/Left.js +0 -38
  44. package/lib/module/icons/Left.js.map +0 -1
  45. package/lib/module/icons/Right.js +0 -38
  46. package/lib/module/icons/Right.js.map +0 -1
  47. package/lib/typescript/icons/Left.d.ts +0 -3
  48. package/lib/typescript/icons/Right.d.ts +0 -3
  49. package/src/icons/Left.tsx +0 -12
  50. package/src/icons/Right.tsx +0 -12
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageFooter.tsx"],"names":["MessageFooterWithContext","props","alignment","deletedMessagesVisibilityType","formattedDate","isDeleted","lastGroupMessage","members","message","MessageStatus","otherAttachments","showMessageStatus","theme","grey","colors","messageSimple","content","deletedMetaText","eyeIcon","messageUser","metaContainer","metaText","t","undefined","color","textAlign","length","actions","Object","keys","user","name","areEqual","prevProps","nextProps","prevAlignment","prevFormattedDate","prevLastGroupMessage","prevMembers","prevMessage","prevOtherAttachments","prevShowMessageStatus","nextAlignment","nextFormattedDate","nextLastGroupMessage","nextMembers","nextMessage","nextOtherAttachments","nextShowMessageStatus","alignmentEqual","membersEqual","lastGroupMessageEqual","deletedMessagesVisibilityTypeEqual","isPrevMessageTypeDeleted","type","isNextMessageTypeDeleted","messageEqual","reply_count","status","text","pinned","otherAttachmentsEqual","showMessageStatusEqual","formattedDateEqual","MemoizedMessageFooter","React","memo","MessageFooter"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Text, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport type { MessageStatusProps } from './MessageStatus';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport {\n Alignment,\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Eye } from '../../../icons';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\n\ntype MessageFooterComponentProps = {\n formattedDate: string | Date;\n isDeleted?: boolean;\n};\n\ntype MessageFooterPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'members'\n | 'message'\n | 'otherAttachments'\n | 'showMessageStatus'\n | 'lastGroupMessage'\n> &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'deletedMessagesVisibilityType' | 'MessageStatus'\n > &\n MessageFooterComponentProps;\n\nconst MessageFooterWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessageFooterPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n deletedMessagesVisibilityType,\n formattedDate,\n isDeleted,\n lastGroupMessage,\n members,\n message,\n MessageStatus,\n otherAttachments,\n showMessageStatus,\n } = props;\n\n const {\n theme: {\n colors: { grey },\n messageSimple: {\n content: { deletedMetaText, eyeIcon, messageUser, metaContainer, metaText },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n if (isDeleted) {\n return (\n <View style={metaContainer} testID='message-deleted'>\n {deletedMessagesVisibilityType === 'sender' && (\n <>\n <Eye pathFill={isDeleted ? undefined : grey} {...eyeIcon} />\n <Text\n style={[\n {\n color: grey,\n textAlign: alignment,\n },\n metaText,\n deletedMetaText,\n ]}\n testID='only-visible-to-you'\n >\n {t('Only visible to you')}\n </Text>\n </>\n )}\n <Text\n style={[\n {\n color: grey,\n textAlign: alignment,\n },\n metaText,\n ]}\n >\n {formattedDate}\n </Text>\n </View>\n );\n }\n\n if (lastGroupMessage === false) {\n return null;\n }\n\n return (\n <View style={metaContainer} testID='message-status-time'>\n {otherAttachments.length && otherAttachments[0].actions ? (\n <>\n <Eye {...eyeIcon} />\n <Text\n style={[\n {\n color: grey,\n textAlign: alignment,\n },\n metaText,\n deletedMetaText,\n ]}\n >\n {t('Only visible to you')}\n </Text>\n </>\n ) : null}\n {Object.keys(members).length > 2 && alignment === 'left' && message.user?.name ? (\n <Text style={[{ color: grey }, messageUser]}>{message.user.name}</Text>\n ) : null}\n {showMessageStatus && <MessageStatus />}\n <Text style={[{ color: grey, textAlign: alignment }, metaText]}>{formattedDate}</Text>\n </View>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: MessageFooterPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: MessageFooterPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment: prevAlignment,\n formattedDate: prevFormattedDate,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n otherAttachments: prevOtherAttachments,\n showMessageStatus: prevShowMessageStatus,\n } = prevProps;\n const {\n alignment: nextAlignment,\n formattedDate: nextFormattedDate,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n otherAttachments: nextOtherAttachments,\n showMessageStatus: nextShowMessageStatus,\n } = nextProps;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const deletedMessagesVisibilityTypeEqual =\n prevProps.deletedMessagesVisibilityType === nextProps.deletedMessagesVisibilityType;\n if (!deletedMessagesVisibilityTypeEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const showMessageStatusEqual = prevShowMessageStatus === nextShowMessageStatus;\n if (!showMessageStatusEqual) return false;\n\n const formattedDateEqual = prevFormattedDate === nextFormattedDate;\n if (!formattedDateEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageFooter = React.memo(\n MessageFooterWithContext,\n areEqual,\n) as typeof MessageFooterWithContext;\n\nexport type MessageFooterProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends DefaultUserType = DefaultUserType,\n> = Partial<Pick<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'members'>> &\n MessageFooterComponentProps & {\n alignment?: Alignment;\n lastGroupMessage?: boolean;\n message?: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n MessageStatus?: React.ComponentType<MessageStatusProps<At, Ch, Co, Ev, Me, Re, Us>>;\n otherAttachments?: Attachment<At>[];\n showMessageStatus?: boolean;\n };\n\nexport const MessageFooter = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends DefaultUserType = DefaultUserType,\n>(\n props: MessageFooterProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { alignment, lastGroupMessage, members, message, otherAttachments, showMessageStatus } =\n useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const { deletedMessagesVisibilityType, MessageStatus } =\n useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n return (\n <MemoizedMessageFooter\n {...{\n alignment,\n deletedMessagesVisibilityType,\n lastGroupMessage,\n members,\n message,\n MessageStatus,\n otherAttachments,\n showMessageStatus,\n }}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["MessageFooter.tsx"],"names":["MessageFooterWithContext","props","alignment","deletedMessagesVisibilityType","formattedDate","isDeleted","lastGroupMessage","members","message","MessageStatus","otherAttachments","showMessageStatus","theme","colors","grey","grey_dark","messageSimple","content","deletedMetaText","eyeIcon","messageUser","metaContainer","metaText","t","color","textAlign","length","actions","Object","keys","user","name","areEqual","prevProps","nextProps","prevAlignment","prevFormattedDate","prevLastGroupMessage","prevMembers","prevMessage","prevOtherAttachments","prevShowMessageStatus","nextAlignment","nextFormattedDate","nextLastGroupMessage","nextMembers","nextMessage","nextOtherAttachments","nextShowMessageStatus","alignmentEqual","membersEqual","lastGroupMessageEqual","deletedMessagesVisibilityTypeEqual","isPrevMessageTypeDeleted","type","isNextMessageTypeDeleted","messageEqual","reply_count","status","text","pinned","otherAttachmentsEqual","showMessageStatusEqual","formattedDateEqual","MemoizedMessageFooter","React","memo","MessageFooter"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Text, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport type { MessageStatusProps } from './MessageStatus';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport {\n Alignment,\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Eye } from '../../../icons';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\n\ntype MessageFooterComponentProps = {\n formattedDate: string | Date;\n isDeleted?: boolean;\n};\n\ntype MessageFooterPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'members'\n | 'message'\n | 'otherAttachments'\n | 'showMessageStatus'\n | 'lastGroupMessage'\n> &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'deletedMessagesVisibilityType' | 'MessageStatus'\n > &\n MessageFooterComponentProps;\n\nconst MessageFooterWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessageFooterPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n deletedMessagesVisibilityType,\n formattedDate,\n isDeleted,\n lastGroupMessage,\n members,\n message,\n MessageStatus,\n otherAttachments,\n showMessageStatus,\n } = props;\n\n const {\n theme: {\n colors: { grey, grey_dark },\n messageSimple: {\n content: { deletedMetaText, eyeIcon, messageUser, metaContainer, metaText },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n if (isDeleted) {\n return (\n <View style={metaContainer} testID='message-deleted'>\n {deletedMessagesVisibilityType === 'sender' && (\n <>\n <Eye pathFill={grey_dark} {...eyeIcon} />\n <Text\n style={[\n {\n color: grey_dark,\n textAlign: alignment,\n },\n metaText,\n deletedMetaText,\n ]}\n testID='only-visible-to-you'\n >\n {t('Only visible to you')}\n </Text>\n </>\n )}\n <Text\n style={[\n {\n color: grey,\n textAlign: alignment,\n },\n metaText,\n ]}\n >\n {formattedDate}\n </Text>\n </View>\n );\n }\n\n if (lastGroupMessage === false) {\n return null;\n }\n\n return (\n <View style={metaContainer} testID='message-status-time'>\n {otherAttachments.length && otherAttachments[0].actions ? (\n <>\n <Eye pathFill={grey_dark} {...eyeIcon} />\n <Text\n style={[\n {\n color: grey_dark,\n textAlign: alignment,\n },\n metaText,\n deletedMetaText,\n ]}\n >\n {t('Only visible to you')}\n </Text>\n </>\n ) : null}\n {Object.keys(members).length > 2 && alignment === 'left' && message.user?.name ? (\n <Text style={[{ color: grey }, messageUser]}>{message.user.name}</Text>\n ) : null}\n {showMessageStatus && <MessageStatus />}\n <Text style={[{ color: grey, textAlign: alignment }, metaText]}>{formattedDate}</Text>\n </View>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: MessageFooterPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: MessageFooterPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment: prevAlignment,\n formattedDate: prevFormattedDate,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n otherAttachments: prevOtherAttachments,\n showMessageStatus: prevShowMessageStatus,\n } = prevProps;\n const {\n alignment: nextAlignment,\n formattedDate: nextFormattedDate,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n otherAttachments: nextOtherAttachments,\n showMessageStatus: nextShowMessageStatus,\n } = nextProps;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const deletedMessagesVisibilityTypeEqual =\n prevProps.deletedMessagesVisibilityType === nextProps.deletedMessagesVisibilityType;\n if (!deletedMessagesVisibilityTypeEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const showMessageStatusEqual = prevShowMessageStatus === nextShowMessageStatus;\n if (!showMessageStatusEqual) return false;\n\n const formattedDateEqual = prevFormattedDate === nextFormattedDate;\n if (!formattedDateEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageFooter = React.memo(\n MessageFooterWithContext,\n areEqual,\n) as typeof MessageFooterWithContext;\n\nexport type MessageFooterProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends DefaultUserType = DefaultUserType,\n> = Partial<Pick<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'members'>> &\n MessageFooterComponentProps & {\n alignment?: Alignment;\n lastGroupMessage?: boolean;\n message?: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n MessageStatus?: React.ComponentType<MessageStatusProps<At, Ch, Co, Ev, Me, Re, Us>>;\n otherAttachments?: Attachment<At>[];\n showMessageStatus?: boolean;\n };\n\nexport const MessageFooter = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends DefaultUserType = DefaultUserType,\n>(\n props: MessageFooterProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { alignment, lastGroupMessage, members, message, otherAttachments, showMessageStatus } =\n useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const { deletedMessagesVisibilityType, MessageStatus } =\n useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n return (\n <MemoizedMessageFooter\n {...{\n alignment,\n deletedMessagesVisibilityType,\n lastGroupMessage,\n members,\n message,\n MessageStatus,\n otherAttachments,\n showMessageStatus,\n }}\n {...props}\n />\n );\n};\n"]}
@@ -3,7 +3,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.renderText = void 0;
6
+ exports.renderText = exports.ListOutput = void 0;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
@@ -125,7 +125,7 @@ var renderText = function renderText(params) {
125
125
  });
126
126
  };
127
127
 
128
- var react = function react(node, output, _ref) {
128
+ var link = function link(node, output, _ref) {
129
129
  var state = (0, _extends2["default"])({}, _ref);
130
130
 
131
131
  var onPress = function onPress(event) {
@@ -158,7 +158,7 @@ var renderText = function renderText(params) {
158
158
  __self: _this,
159
159
  __source: {
160
160
  fileName: _jsxFileName,
161
- lineNumber: 195,
161
+ lineNumber: 197,
162
162
  columnNumber: 7
163
163
  }
164
164
  }, output(node.content, (0, _extends2["default"])({}, state, {
@@ -175,7 +175,7 @@ var renderText = function renderText(params) {
175
175
  __self: _this,
176
176
  __source: {
177
177
  fileName: _jsxFileName,
178
- lineNumber: 208,
178
+ lineNumber: 210,
179
179
  columnNumber: 5
180
180
  }
181
181
  }, output(node.content, state));
@@ -225,75 +225,33 @@ var renderText = function renderText(params) {
225
225
  __self: _this,
226
226
  __source: {
227
227
  fileName: _jsxFileName,
228
- lineNumber: 246,
228
+ lineNumber: 248,
229
229
  columnNumber: 7
230
230
  }
231
231
  }, Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state));
232
232
  };
233
233
 
234
- var listLevels = {
235
- sub: 'sub',
236
- top: 'top'
237
- };
238
-
239
- var customListAtLevel = function customListAtLevel(level) {
240
- return function (node, output, _ref4) {
241
- var state = (0, _extends2["default"])({}, _ref4);
242
- var items = node.items.map(function (item, index) {
243
- var withinList = item.length > 1 && item[1].type === 'list';
244
- var content = output(item, (0, _extends2["default"])({}, state, {
245
- withinList: withinList
246
- }));
247
- var isTopLevelText = ['text', 'paragraph', 'strong'].includes(item[0].type) && withinList === false;
248
- return _react["default"].createElement(_reactNative.View, {
249
- key: index,
250
- style: styles.listRow,
251
- __self: _this,
252
- __source: {
253
- fileName: _jsxFileName,
254
- lineNumber: 275,
255
- columnNumber: 11
256
- }
257
- }, _react["default"].createElement(_reactNative.Text, {
258
- style: styles.listItemNumber,
259
- __self: _this,
260
- __source: {
261
- fileName: _jsxFileName,
262
- lineNumber: 276,
263
- columnNumber: 13
264
- }
265
- }, node.ordered ? node.start + index + ". " : "\u2022"), _react["default"].createElement(_reactNative.Text, {
266
- style: [styles.listItemText, isTopLevelText && {
267
- marginBottom: 0
268
- }],
269
- __self: _this,
270
- __source: {
271
- fileName: _jsxFileName,
272
- lineNumber: 279,
273
- columnNumber: 13
274
- }
275
- }, content));
276
- });
277
- var isSublist = level === 'sub';
278
- return _react["default"].createElement(_reactNative.View, {
279
- key: state.key,
280
- style: [isSublist ? styles.list : styles.sublist],
281
- __self: _this,
282
- __source: {
283
- fileName: _jsxFileName,
284
- lineNumber: 288,
285
- columnNumber: 9
286
- }
287
- }, items);
288
- };
234
+ var list = function list(node, output, state) {
235
+ return _react["default"].createElement(ListOutput, {
236
+ node: node,
237
+ output: output,
238
+ state: state,
239
+ styles: styles,
240
+ __self: _this,
241
+ __source: {
242
+ fileName: _jsxFileName,
243
+ lineNumber: 255,
244
+ columnNumber: 5
245
+ }
246
+ });
289
247
  };
290
248
 
291
249
  var customRules = (0, _extends2["default"])({
292
250
  link: {
293
- react: react
251
+ link: link
294
252
  },
295
253
  list: {
296
- react: customListAtLevel('top')
254
+ react: list
297
255
  },
298
256
  paragraph: messageTextNumberOfLines ? {
299
257
  react: paragraphText
@@ -304,7 +262,7 @@ var renderText = function renderText(params) {
304
262
  }
305
263
  },
306
264
  sublist: {
307
- react: customListAtLevel('sub')
265
+ react: list
308
266
  }
309
267
  }, mentionedUsers ? {
310
268
  mentions: {
@@ -322,11 +280,133 @@ var renderText = function renderText(params) {
322
280
  __self: _this,
323
281
  __source: {
324
282
  fileName: _jsxFileName,
325
- lineNumber: 315,
283
+ lineNumber: 279,
326
284
  columnNumber: 5
327
285
  }
328
286
  }, newText);
329
287
  };
330
288
 
331
289
  exports.renderText = renderText;
290
+
291
+ var ListOutput = function ListOutput(_ref4) {
292
+ var node = _ref4.node,
293
+ output = _ref4.output,
294
+ state = _ref4.state,
295
+ styles = _ref4.styles;
296
+ var isSublist = state.withinList;
297
+ var parentTypes = ['text', 'paragraph', 'strong'];
298
+ return _react["default"].createElement(_reactNative.View, {
299
+ key: state.key,
300
+ style: isSublist ? styles == null ? void 0 : styles.sublist : styles == null ? void 0 : styles.list,
301
+ __self: _this,
302
+ __source: {
303
+ fileName: _jsxFileName,
304
+ lineNumber: 314,
305
+ columnNumber: 5
306
+ }
307
+ }, node.items.map(function (item, index) {
308
+ var _item$;
309
+
310
+ var indexAfterStart = node.start + index;
311
+
312
+ if (item === null) {
313
+ return _react["default"].createElement(ListRow, {
314
+ key: index,
315
+ style: styles == null ? void 0 : styles.listRow,
316
+ testID: "list-item",
317
+ __self: _this,
318
+ __source: {
319
+ fileName: _jsxFileName,
320
+ lineNumber: 320,
321
+ columnNumber: 13
322
+ }
323
+ }, _react["default"].createElement(Bullet, {
324
+ index: node.ordered && indexAfterStart,
325
+ __self: _this,
326
+ __source: {
327
+ fileName: _jsxFileName,
328
+ lineNumber: 321,
329
+ columnNumber: 15
330
+ }
331
+ }));
332
+ }
333
+
334
+ isSublist = item.length > 1 && item[1].type === 'list';
335
+ var isSublistWithinText = parentTypes.includes(((_item$ = item[0]) != null ? _item$ : {}).type) && isSublist;
336
+ var style = isSublistWithinText ? {
337
+ marginBottom: 0
338
+ } : {};
339
+ return _react["default"].createElement(ListRow, {
340
+ key: index,
341
+ style: styles == null ? void 0 : styles.listRow,
342
+ testID: "list-item",
343
+ __self: _this,
344
+ __source: {
345
+ fileName: _jsxFileName,
346
+ lineNumber: 331,
347
+ columnNumber: 11
348
+ }
349
+ }, _react["default"].createElement(Bullet, {
350
+ index: node.ordered && indexAfterStart,
351
+ __self: _this,
352
+ __source: {
353
+ fileName: _jsxFileName,
354
+ lineNumber: 332,
355
+ columnNumber: 13
356
+ }
357
+ }), _react["default"].createElement(ListItem, {
358
+ key: 1,
359
+ style: [styles == null ? void 0 : styles.listItemText, style],
360
+ __self: _this,
361
+ __source: {
362
+ fileName: _jsxFileName,
363
+ lineNumber: 333,
364
+ columnNumber: 13
365
+ }
366
+ }, output(item, state)));
367
+ }));
368
+ };
369
+
370
+ exports.ListOutput = ListOutput;
371
+
372
+ var Bullet = function Bullet(_ref5) {
373
+ var index = _ref5.index,
374
+ style = _ref5.style;
375
+ return _react["default"].createElement(_reactNative.Text, {
376
+ key: 0,
377
+ style: [style, defaultMarkdownStyles.listItemNumber],
378
+ __self: _this,
379
+ __source: {
380
+ fileName: _jsxFileName,
381
+ lineNumber: 348,
382
+ columnNumber: 3
383
+ }
384
+ }, index ? index + ". " : "\u2022 ");
385
+ };
386
+
387
+ var ListRow = function ListRow(props) {
388
+ return _react["default"].createElement(_reactNative.Text, {
389
+ style: [props.style, defaultMarkdownStyles.listRow],
390
+ __self: _this,
391
+ __source: {
392
+ fileName: _jsxFileName,
393
+ lineNumber: 354,
394
+ columnNumber: 3
395
+ }
396
+ }, props.children);
397
+ };
398
+
399
+ var ListItem = function ListItem(_ref6) {
400
+ var children = _ref6.children,
401
+ style = _ref6.style;
402
+ return _react["default"].createElement(_reactNative.Text, {
403
+ style: style,
404
+ __self: _this,
405
+ __source: {
406
+ fileName: _jsxFileName,
407
+ lineNumber: 358,
408
+ columnNumber: 3
409
+ }
410
+ }, children);
411
+ };
332
412
  //# sourceMappingURL=renderText.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["renderText.tsx"],"names":["defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","length","omission","markdown","scheme","replace","raw","styles","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","Linking","canOpenURL","then","canOpenUrl","openURL","react","node","output","event","defaultHandler","target","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","RegExp","match","source","exec","mentionsReact","listLevels","sub","top","customListAtLevel","level","items","map","item","index","withinList","type","isTopLevelText","includes","ordered","start","isSublist","sublist","customRules","link","reflink","order","defaultRules","JSON","stringify","undefined"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Linking, Text, View } 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 SingleASTNode,\n} from 'simple-markdown';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} 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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n params: RenderTextParams<At, Ch, Co, Ev, Me, Re, Us>,\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 urls = parseLinksFromText(newText);\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.scheme}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.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 onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n\n const react: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n defaultHandler: () => onLink(node.target),\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\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) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const listLevels = {\n sub: 'sub',\n top: 'top',\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 */\n const customListAtLevel =\n (level: keyof typeof listLevels): ReactNodeOutput =>\n (node, output, { ...state }) => {\n const items = node.items.map((item: Array<SingleASTNode>, index: number) => {\n const withinList = item.length > 1 && item[1].type === 'list';\n const content = output(item, { ...state, withinList });\n\n const isTopLevelText =\n ['text', 'paragraph', 'strong'].includes(item[0].type) && withinList === false;\n\n return (\n <View key={index} style={styles.listRow}>\n <Text style={styles.listItemNumber}>\n {node.ordered ? `${node.start + index}. ` : `\\u2022`}\n </Text>\n <Text style={[styles.listItemText, isTopLevelText && { marginBottom: 0 }]}>\n {content}\n </Text>\n </View>\n );\n });\n\n const isSublist = level === 'sub';\n return (\n <View key={state.key} style={[isSublist ? styles.list : styles.sublist]}>\n {items}\n </View>\n );\n };\n\n const customRules = {\n link: { react },\n list: { react: customListAtLevel('top') },\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: customListAtLevel('sub') },\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"]}
1
+ {"version":3,"sources":["renderText.tsx"],"names":["defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","length","omission","markdown","scheme","replace","raw","styles","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","event","defaultHandler","target","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","RegExp","match","source","exec","mentionsReact","customRules","react","reflink","sublist","order","defaultRules","JSON","stringify","undefined","ListOutput","isSublist","withinList","parentTypes","items","map","item","index","indexAfterStart","start","ordered","type","isSublistWithinText","includes","style","Bullet","ListRow","props","children","ListItem"],"mappings":"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","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 { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} 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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n params: RenderTextParams<At, Ch, Co, Ev, Me, Re, Us>,\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 urls = parseLinksFromText(newText);\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.scheme}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.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 onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n defaultHandler: () => onLink(node.target),\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\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) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput node={node} output={output} state={state} styles={styles} />\n );\n\n const customRules = {\n link: { 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 index={node.ordered && indexAfterStart} />\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 index={node.ordered && indexAfterStart} />\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, defaultMarkdownStyles.listItemNumber]}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = (props: PropsWithChildren<ViewProps>) => (\n <Text style={[props.style, defaultMarkdownStyles.listRow]}>{props.children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"]}