stream-chat-react-native-core 4.13.1-beta.1 → 4.13.1-beta.2

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.
@@ -95,9 +95,11 @@ var MessageTextContainerWithContext = function MessageTextContainerWithContext(p
95
95
  var areEqual = function areEqual(prevProps, nextProps) {
96
96
  var _prevMessage$mentione, _nextMessage$mentione, _nextMessage$mentione2, _prevMessage$mentione2, _nextMessage$mentione3;
97
97
 
98
- var prevMessage = prevProps.message,
98
+ var prevMarkdownStyles = prevProps.markdownStyles,
99
+ prevMessage = prevProps.message,
99
100
  prevOnlyEmojis = prevProps.onlyEmojis;
100
- var nextMessage = nextProps.message,
101
+ var nextMarkdownStyles = nextProps.markdownStyles,
102
+ nextMessage = nextProps.message,
101
103
  nextOnlyEmojis = nextProps.onlyEmojis;
102
104
  var messageTextEqual = prevMessage.text === nextMessage.text;
103
105
  if (!messageTextEqual) return false;
@@ -105,6 +107,8 @@ var areEqual = function areEqual(prevProps, nextProps) {
105
107
  if (!onlyEmojisEqual) return false;
106
108
  var mentionedUsersEqual = ((_prevMessage$mentione = prevMessage.mentioned_users) == null ? void 0 : _prevMessage$mentione.length) === ((_nextMessage$mentione = nextMessage.mentioned_users) == null ? void 0 : _nextMessage$mentione.length) && (((_nextMessage$mentione2 = nextMessage.mentioned_users) == null ? void 0 : _nextMessage$mentione2.length) === 0 || ((_prevMessage$mentione2 = prevMessage.mentioned_users) == null ? void 0 : _prevMessage$mentione2.length) && ((_nextMessage$mentione3 = nextMessage.mentioned_users) == null ? void 0 : _nextMessage$mentione3.length) && prevMessage.mentioned_users[0].name === nextMessage.mentioned_users[0].name);
107
109
  if (!mentionedUsersEqual) return false;
110
+ var markdownStylesEqual = prevMarkdownStyles === nextMarkdownStyles || Object.keys(prevMarkdownStyles || {}).length === 0 && Object.keys(nextMarkdownStyles || {}).length === 0 || JSON.stringify(prevMarkdownStyles) === JSON.stringify(nextMarkdownStyles);
111
+ if (!markdownStylesEqual) return false;
108
112
  return true;
109
113
  };
110
114
 
@@ -136,7 +140,7 @@ var MessageTextContainer = function MessageTextContainer(props) {
136
140
  __self: _this,
137
141
  __source: {
138
142
  fileName: _jsxFileName,
139
- lineNumber: 160,
143
+ lineNumber: 180,
140
144
  columnNumber: 5
141
145
  }
142
146
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageTextContainer.tsx"],"names":["styles","StyleSheet","create","textContainer","maxWidth","paddingHorizontal","MessageTextContainerWithContext","props","theme","markdownRules","markdownStyles","markdownStylesProp","message","messageOverlay","MessageText","messageTextNumberOfLines","onLongPress","onlyEmojis","onPress","preventPress","stylesProp","colors","messageSimple","content","markdown","onlyEmojiMarkdown","translatedMessage","text","renderText","areEqual","prevProps","nextProps","prevMessage","prevOnlyEmojis","nextMessage","nextOnlyEmojis","messageTextEqual","onlyEmojisEqual","mentionedUsersEqual","mentioned_users","length","name","MemoizedMessageTextContainer","React","memo","MessageTextContainer","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { renderText, RenderTextParams } from './utils/renderText';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport type { MarkdownStyle, Theme } from '../../../contexts/themeContext/utils/theme';\nimport { useTranslatedMessage } from '../../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\n\nconst styles = StyleSheet.create({\n textContainer: { maxWidth: 250, paddingHorizontal: 16 },\n});\n\nexport type MessageTextProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = MessageTextContainerProps<StreamChatGenerics> & {\n renderText: (params: RenderTextParams<StreamChatGenerics>) => JSX.Element | null;\n theme: { theme: Theme };\n};\n\nexport type MessageTextContainerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'message' | 'onLongPress' | 'onlyEmojis' | 'onPress' | 'preventPress'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'markdownRules' | 'MessageText'> & {\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n styles?: Partial<{\n textContainer: StyleProp<ViewStyle>;\n }>;\n };\n\nconst MessageTextContainerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n) => {\n const theme = useTheme();\n\n const {\n markdownRules,\n markdownStyles: markdownStylesProp = {},\n message,\n messageOverlay,\n MessageText,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n styles: stylesProp = {},\n } = props;\n\n const {\n theme: {\n colors,\n messageSimple: {\n content: {\n markdown,\n textContainer: { onlyEmojiMarkdown, ...textContainer },\n },\n },\n },\n } = theme;\n\n const translatedMessage = useTranslatedMessage<StreamChatGenerics>(\n message,\n ) as MessageType<StreamChatGenerics>;\n\n if (!message.text) return null;\n\n const markdownStyles = { ...markdown, ...markdownStylesProp };\n\n return (\n <View\n style={[styles.textContainer, textContainer, stylesProp.textContainer]}\n testID='message-text-container'\n >\n {MessageText ? (\n <MessageText {...props} renderText={renderText} theme={theme} />\n ) : (\n renderText<StreamChatGenerics>({\n colors,\n markdownRules,\n markdownStyles: {\n ...markdownStyles,\n ...(onlyEmojis ? onlyEmojiMarkdown : {}),\n },\n message: translatedMessage,\n messageOverlay,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n })\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n nextProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n) => {\n const { message: prevMessage, onlyEmojis: prevOnlyEmojis } = prevProps;\n const { message: nextMessage, onlyEmojis: nextOnlyEmojis } = nextProps;\n\n const messageTextEqual = prevMessage.text === nextMessage.text;\n if (!messageTextEqual) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const mentionedUsersEqual =\n prevMessage.mentioned_users?.length === nextMessage.mentioned_users?.length &&\n (nextMessage.mentioned_users?.length === 0 ||\n (prevMessage.mentioned_users?.length &&\n nextMessage.mentioned_users?.length &&\n prevMessage.mentioned_users[0].name === nextMessage.mentioned_users[0].name));\n if (!mentionedUsersEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageTextContainer = React.memo(\n MessageTextContainerWithContext,\n areEqual,\n) as typeof MessageTextContainerWithContext;\n\nexport type MessageTextContainerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageTextContainerPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageTextContainer = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageTextContainerProps<StreamChatGenerics>,\n) => {\n const { message, onLongPress, onlyEmojis, onPress, preventPress } =\n useMessageContext<StreamChatGenerics>();\n const { markdownRules, MessageText } = useMessagesContext<StreamChatGenerics>();\n const { messageTextNumberOfLines } = props;\n\n return (\n <MemoizedMessageTextContainer\n {...{\n markdownRules,\n message,\n MessageText,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nMessageTextContainer.displayName = 'MessageTextContainer{messageSimple{content}}';\n"]}
1
+ {"version":3,"sources":["MessageTextContainer.tsx"],"names":["styles","StyleSheet","create","textContainer","maxWidth","paddingHorizontal","MessageTextContainerWithContext","props","theme","markdownRules","markdownStyles","markdownStylesProp","message","messageOverlay","MessageText","messageTextNumberOfLines","onLongPress","onlyEmojis","onPress","preventPress","stylesProp","colors","messageSimple","content","markdown","onlyEmojiMarkdown","translatedMessage","text","renderText","areEqual","prevProps","nextProps","prevMarkdownStyles","prevMessage","prevOnlyEmojis","nextMarkdownStyles","nextMessage","nextOnlyEmojis","messageTextEqual","onlyEmojisEqual","mentionedUsersEqual","mentioned_users","length","name","markdownStylesEqual","Object","keys","JSON","stringify","MemoizedMessageTextContainer","React","memo","MessageTextContainer","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { renderText, RenderTextParams } from './utils/renderText';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport type { MarkdownStyle, Theme } from '../../../contexts/themeContext/utils/theme';\nimport { useTranslatedMessage } from '../../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\n\nconst styles = StyleSheet.create({\n textContainer: { maxWidth: 250, paddingHorizontal: 16 },\n});\n\nexport type MessageTextProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = MessageTextContainerProps<StreamChatGenerics> & {\n renderText: (params: RenderTextParams<StreamChatGenerics>) => JSX.Element | null;\n theme: { theme: Theme };\n};\n\nexport type MessageTextContainerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'message' | 'onLongPress' | 'onlyEmojis' | 'onPress' | 'preventPress'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'markdownRules' | 'MessageText'> & {\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n styles?: Partial<{\n textContainer: StyleProp<ViewStyle>;\n }>;\n };\n\nconst MessageTextContainerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n) => {\n const theme = useTheme();\n\n const {\n markdownRules,\n markdownStyles: markdownStylesProp = {},\n message,\n messageOverlay,\n MessageText,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n styles: stylesProp = {},\n } = props;\n\n const {\n theme: {\n colors,\n messageSimple: {\n content: {\n markdown,\n textContainer: { onlyEmojiMarkdown, ...textContainer },\n },\n },\n },\n } = theme;\n\n const translatedMessage = useTranslatedMessage<StreamChatGenerics>(\n message,\n ) as MessageType<StreamChatGenerics>;\n\n if (!message.text) return null;\n\n const markdownStyles = { ...markdown, ...markdownStylesProp };\n\n return (\n <View\n style={[styles.textContainer, textContainer, stylesProp.textContainer]}\n testID='message-text-container'\n >\n {MessageText ? (\n <MessageText {...props} renderText={renderText} theme={theme} />\n ) : (\n renderText<StreamChatGenerics>({\n colors,\n markdownRules,\n markdownStyles: {\n ...markdownStyles,\n ...(onlyEmojis ? onlyEmojiMarkdown : {}),\n },\n message: translatedMessage,\n messageOverlay,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n })\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n nextProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n markdownStyles: prevMarkdownStyles,\n message: prevMessage,\n onlyEmojis: prevOnlyEmojis,\n } = prevProps;\n const {\n markdownStyles: nextMarkdownStyles,\n message: nextMessage,\n onlyEmojis: nextOnlyEmojis,\n } = nextProps;\n\n const messageTextEqual = prevMessage.text === nextMessage.text;\n if (!messageTextEqual) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const mentionedUsersEqual =\n prevMessage.mentioned_users?.length === nextMessage.mentioned_users?.length &&\n (nextMessage.mentioned_users?.length === 0 ||\n (prevMessage.mentioned_users?.length &&\n nextMessage.mentioned_users?.length &&\n prevMessage.mentioned_users[0].name === nextMessage.mentioned_users[0].name));\n if (!mentionedUsersEqual) return false;\n\n // stringify could be an expensive operation, so lets rule out the obvious\n // possibilities first such as different object reference or empty objects etc.\n // Also keeping markdown equality check at the last to make sure other less\n // expensive equality checks get executed first and markdown check will be skipped if returned\n // false from previous checks.\n const markdownStylesEqual =\n prevMarkdownStyles === nextMarkdownStyles ||\n (Object.keys(prevMarkdownStyles || {}).length === 0 &&\n Object.keys(nextMarkdownStyles || {}).length === 0) ||\n JSON.stringify(prevMarkdownStyles) === JSON.stringify(nextMarkdownStyles);\n if (!markdownStylesEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageTextContainer = React.memo(\n MessageTextContainerWithContext,\n areEqual,\n) as typeof MessageTextContainerWithContext;\n\nexport type MessageTextContainerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageTextContainerPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageTextContainer = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageTextContainerProps<StreamChatGenerics>,\n) => {\n const { message, onLongPress, onlyEmojis, onPress, preventPress } =\n useMessageContext<StreamChatGenerics>();\n const { markdownRules, MessageText } = useMessagesContext<StreamChatGenerics>();\n const { messageTextNumberOfLines } = props;\n\n return (\n <MemoizedMessageTextContainer\n {...{\n markdownRules,\n message,\n MessageText,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nMessageTextContainer.displayName = 'MessageTextContainer{messageSimple{content}}';\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.13.1-beta.1"
2
+ "version": "4.13.1-beta.2"
3
3
  }
@@ -95,9 +95,11 @@ var MessageTextContainerWithContext = function MessageTextContainerWithContext(p
95
95
  var areEqual = function areEqual(prevProps, nextProps) {
96
96
  var _prevMessage$mentione, _nextMessage$mentione, _nextMessage$mentione2, _prevMessage$mentione2, _nextMessage$mentione3;
97
97
 
98
- var prevMessage = prevProps.message,
98
+ var prevMarkdownStyles = prevProps.markdownStyles,
99
+ prevMessage = prevProps.message,
99
100
  prevOnlyEmojis = prevProps.onlyEmojis;
100
- var nextMessage = nextProps.message,
101
+ var nextMarkdownStyles = nextProps.markdownStyles,
102
+ nextMessage = nextProps.message,
101
103
  nextOnlyEmojis = nextProps.onlyEmojis;
102
104
  var messageTextEqual = prevMessage.text === nextMessage.text;
103
105
  if (!messageTextEqual) return false;
@@ -105,6 +107,8 @@ var areEqual = function areEqual(prevProps, nextProps) {
105
107
  if (!onlyEmojisEqual) return false;
106
108
  var mentionedUsersEqual = ((_prevMessage$mentione = prevMessage.mentioned_users) == null ? void 0 : _prevMessage$mentione.length) === ((_nextMessage$mentione = nextMessage.mentioned_users) == null ? void 0 : _nextMessage$mentione.length) && (((_nextMessage$mentione2 = nextMessage.mentioned_users) == null ? void 0 : _nextMessage$mentione2.length) === 0 || ((_prevMessage$mentione2 = prevMessage.mentioned_users) == null ? void 0 : _prevMessage$mentione2.length) && ((_nextMessage$mentione3 = nextMessage.mentioned_users) == null ? void 0 : _nextMessage$mentione3.length) && prevMessage.mentioned_users[0].name === nextMessage.mentioned_users[0].name);
107
109
  if (!mentionedUsersEqual) return false;
110
+ var markdownStylesEqual = prevMarkdownStyles === nextMarkdownStyles || Object.keys(prevMarkdownStyles || {}).length === 0 && Object.keys(nextMarkdownStyles || {}).length === 0 || JSON.stringify(prevMarkdownStyles) === JSON.stringify(nextMarkdownStyles);
111
+ if (!markdownStylesEqual) return false;
108
112
  return true;
109
113
  };
110
114
 
@@ -136,7 +140,7 @@ var MessageTextContainer = function MessageTextContainer(props) {
136
140
  __self: _this,
137
141
  __source: {
138
142
  fileName: _jsxFileName,
139
- lineNumber: 160,
143
+ lineNumber: 180,
140
144
  columnNumber: 5
141
145
  }
142
146
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageTextContainer.tsx"],"names":["styles","StyleSheet","create","textContainer","maxWidth","paddingHorizontal","MessageTextContainerWithContext","props","theme","markdownRules","markdownStyles","markdownStylesProp","message","messageOverlay","MessageText","messageTextNumberOfLines","onLongPress","onlyEmojis","onPress","preventPress","stylesProp","colors","messageSimple","content","markdown","onlyEmojiMarkdown","translatedMessage","text","renderText","areEqual","prevProps","nextProps","prevMessage","prevOnlyEmojis","nextMessage","nextOnlyEmojis","messageTextEqual","onlyEmojisEqual","mentionedUsersEqual","mentioned_users","length","name","MemoizedMessageTextContainer","React","memo","MessageTextContainer","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { renderText, RenderTextParams } from './utils/renderText';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport type { MarkdownStyle, Theme } from '../../../contexts/themeContext/utils/theme';\nimport { useTranslatedMessage } from '../../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\n\nconst styles = StyleSheet.create({\n textContainer: { maxWidth: 250, paddingHorizontal: 16 },\n});\n\nexport type MessageTextProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = MessageTextContainerProps<StreamChatGenerics> & {\n renderText: (params: RenderTextParams<StreamChatGenerics>) => JSX.Element | null;\n theme: { theme: Theme };\n};\n\nexport type MessageTextContainerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'message' | 'onLongPress' | 'onlyEmojis' | 'onPress' | 'preventPress'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'markdownRules' | 'MessageText'> & {\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n styles?: Partial<{\n textContainer: StyleProp<ViewStyle>;\n }>;\n };\n\nconst MessageTextContainerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n) => {\n const theme = useTheme();\n\n const {\n markdownRules,\n markdownStyles: markdownStylesProp = {},\n message,\n messageOverlay,\n MessageText,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n styles: stylesProp = {},\n } = props;\n\n const {\n theme: {\n colors,\n messageSimple: {\n content: {\n markdown,\n textContainer: { onlyEmojiMarkdown, ...textContainer },\n },\n },\n },\n } = theme;\n\n const translatedMessage = useTranslatedMessage<StreamChatGenerics>(\n message,\n ) as MessageType<StreamChatGenerics>;\n\n if (!message.text) return null;\n\n const markdownStyles = { ...markdown, ...markdownStylesProp };\n\n return (\n <View\n style={[styles.textContainer, textContainer, stylesProp.textContainer]}\n testID='message-text-container'\n >\n {MessageText ? (\n <MessageText {...props} renderText={renderText} theme={theme} />\n ) : (\n renderText<StreamChatGenerics>({\n colors,\n markdownRules,\n markdownStyles: {\n ...markdownStyles,\n ...(onlyEmojis ? onlyEmojiMarkdown : {}),\n },\n message: translatedMessage,\n messageOverlay,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n })\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n nextProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n) => {\n const { message: prevMessage, onlyEmojis: prevOnlyEmojis } = prevProps;\n const { message: nextMessage, onlyEmojis: nextOnlyEmojis } = nextProps;\n\n const messageTextEqual = prevMessage.text === nextMessage.text;\n if (!messageTextEqual) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const mentionedUsersEqual =\n prevMessage.mentioned_users?.length === nextMessage.mentioned_users?.length &&\n (nextMessage.mentioned_users?.length === 0 ||\n (prevMessage.mentioned_users?.length &&\n nextMessage.mentioned_users?.length &&\n prevMessage.mentioned_users[0].name === nextMessage.mentioned_users[0].name));\n if (!mentionedUsersEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageTextContainer = React.memo(\n MessageTextContainerWithContext,\n areEqual,\n) as typeof MessageTextContainerWithContext;\n\nexport type MessageTextContainerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageTextContainerPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageTextContainer = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageTextContainerProps<StreamChatGenerics>,\n) => {\n const { message, onLongPress, onlyEmojis, onPress, preventPress } =\n useMessageContext<StreamChatGenerics>();\n const { markdownRules, MessageText } = useMessagesContext<StreamChatGenerics>();\n const { messageTextNumberOfLines } = props;\n\n return (\n <MemoizedMessageTextContainer\n {...{\n markdownRules,\n message,\n MessageText,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nMessageTextContainer.displayName = 'MessageTextContainer{messageSimple{content}}';\n"]}
1
+ {"version":3,"sources":["MessageTextContainer.tsx"],"names":["styles","StyleSheet","create","textContainer","maxWidth","paddingHorizontal","MessageTextContainerWithContext","props","theme","markdownRules","markdownStyles","markdownStylesProp","message","messageOverlay","MessageText","messageTextNumberOfLines","onLongPress","onlyEmojis","onPress","preventPress","stylesProp","colors","messageSimple","content","markdown","onlyEmojiMarkdown","translatedMessage","text","renderText","areEqual","prevProps","nextProps","prevMarkdownStyles","prevMessage","prevOnlyEmojis","nextMarkdownStyles","nextMessage","nextOnlyEmojis","messageTextEqual","onlyEmojisEqual","mentionedUsersEqual","mentioned_users","length","name","markdownStylesEqual","Object","keys","JSON","stringify","MemoizedMessageTextContainer","React","memo","MessageTextContainer","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { renderText, RenderTextParams } from './utils/renderText';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport type { MarkdownStyle, Theme } from '../../../contexts/themeContext/utils/theme';\nimport { useTranslatedMessage } from '../../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\n\nconst styles = StyleSheet.create({\n textContainer: { maxWidth: 250, paddingHorizontal: 16 },\n});\n\nexport type MessageTextProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = MessageTextContainerProps<StreamChatGenerics> & {\n renderText: (params: RenderTextParams<StreamChatGenerics>) => JSX.Element | null;\n theme: { theme: Theme };\n};\n\nexport type MessageTextContainerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'message' | 'onLongPress' | 'onlyEmojis' | 'onPress' | 'preventPress'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'markdownRules' | 'MessageText'> & {\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n styles?: Partial<{\n textContainer: StyleProp<ViewStyle>;\n }>;\n };\n\nconst MessageTextContainerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n) => {\n const theme = useTheme();\n\n const {\n markdownRules,\n markdownStyles: markdownStylesProp = {},\n message,\n messageOverlay,\n MessageText,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n styles: stylesProp = {},\n } = props;\n\n const {\n theme: {\n colors,\n messageSimple: {\n content: {\n markdown,\n textContainer: { onlyEmojiMarkdown, ...textContainer },\n },\n },\n },\n } = theme;\n\n const translatedMessage = useTranslatedMessage<StreamChatGenerics>(\n message,\n ) as MessageType<StreamChatGenerics>;\n\n if (!message.text) return null;\n\n const markdownStyles = { ...markdown, ...markdownStylesProp };\n\n return (\n <View\n style={[styles.textContainer, textContainer, stylesProp.textContainer]}\n testID='message-text-container'\n >\n {MessageText ? (\n <MessageText {...props} renderText={renderText} theme={theme} />\n ) : (\n renderText<StreamChatGenerics>({\n colors,\n markdownRules,\n markdownStyles: {\n ...markdownStyles,\n ...(onlyEmojis ? onlyEmojiMarkdown : {}),\n },\n message: translatedMessage,\n messageOverlay,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n })\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n nextProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n markdownStyles: prevMarkdownStyles,\n message: prevMessage,\n onlyEmojis: prevOnlyEmojis,\n } = prevProps;\n const {\n markdownStyles: nextMarkdownStyles,\n message: nextMessage,\n onlyEmojis: nextOnlyEmojis,\n } = nextProps;\n\n const messageTextEqual = prevMessage.text === nextMessage.text;\n if (!messageTextEqual) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const mentionedUsersEqual =\n prevMessage.mentioned_users?.length === nextMessage.mentioned_users?.length &&\n (nextMessage.mentioned_users?.length === 0 ||\n (prevMessage.mentioned_users?.length &&\n nextMessage.mentioned_users?.length &&\n prevMessage.mentioned_users[0].name === nextMessage.mentioned_users[0].name));\n if (!mentionedUsersEqual) return false;\n\n // stringify could be an expensive operation, so lets rule out the obvious\n // possibilities first such as different object reference or empty objects etc.\n // Also keeping markdown equality check at the last to make sure other less\n // expensive equality checks get executed first and markdown check will be skipped if returned\n // false from previous checks.\n const markdownStylesEqual =\n prevMarkdownStyles === nextMarkdownStyles ||\n (Object.keys(prevMarkdownStyles || {}).length === 0 &&\n Object.keys(nextMarkdownStyles || {}).length === 0) ||\n JSON.stringify(prevMarkdownStyles) === JSON.stringify(nextMarkdownStyles);\n if (!markdownStylesEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageTextContainer = React.memo(\n MessageTextContainerWithContext,\n areEqual,\n) as typeof MessageTextContainerWithContext;\n\nexport type MessageTextContainerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageTextContainerPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageTextContainer = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageTextContainerProps<StreamChatGenerics>,\n) => {\n const { message, onLongPress, onlyEmojis, onPress, preventPress } =\n useMessageContext<StreamChatGenerics>();\n const { markdownRules, MessageText } = useMessagesContext<StreamChatGenerics>();\n const { messageTextNumberOfLines } = props;\n\n return (\n <MemoizedMessageTextContainer\n {...{\n markdownRules,\n message,\n MessageText,\n messageTextNumberOfLines,\n onLongPress,\n onlyEmojis,\n onPress,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nMessageTextContainer.displayName = 'MessageTextContainer{messageSimple{content}}';\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.13.1-beta.1"
2
+ "version": "4.13.1-beta.2"
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": "4.13.1-beta.1",
4
+ "version": "4.13.1-beta.2",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -117,8 +117,16 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
117
117
  prevProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,
118
118
  nextProps: MessageTextContainerPropsWithContext<StreamChatGenerics>,
119
119
  ) => {
120
- const { message: prevMessage, onlyEmojis: prevOnlyEmojis } = prevProps;
121
- const { message: nextMessage, onlyEmojis: nextOnlyEmojis } = nextProps;
120
+ const {
121
+ markdownStyles: prevMarkdownStyles,
122
+ message: prevMessage,
123
+ onlyEmojis: prevOnlyEmojis,
124
+ } = prevProps;
125
+ const {
126
+ markdownStyles: nextMarkdownStyles,
127
+ message: nextMessage,
128
+ onlyEmojis: nextOnlyEmojis,
129
+ } = nextProps;
122
130
 
123
131
  const messageTextEqual = prevMessage.text === nextMessage.text;
124
132
  if (!messageTextEqual) return false;
@@ -134,6 +142,18 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
134
142
  prevMessage.mentioned_users[0].name === nextMessage.mentioned_users[0].name));
135
143
  if (!mentionedUsersEqual) return false;
136
144
 
145
+ // stringify could be an expensive operation, so lets rule out the obvious
146
+ // possibilities first such as different object reference or empty objects etc.
147
+ // Also keeping markdown equality check at the last to make sure other less
148
+ // expensive equality checks get executed first and markdown check will be skipped if returned
149
+ // false from previous checks.
150
+ const markdownStylesEqual =
151
+ prevMarkdownStyles === nextMarkdownStyles ||
152
+ (Object.keys(prevMarkdownStyles || {}).length === 0 &&
153
+ Object.keys(nextMarkdownStyles || {}).length === 0) ||
154
+ JSON.stringify(prevMarkdownStyles) === JSON.stringify(nextMarkdownStyles);
155
+ if (!markdownStylesEqual) return false;
156
+
137
157
  return true;
138
158
  };
139
159
 
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.13.1-beta.1"
2
+ "version": "4.13.1-beta.2"
3
3
  }