stream-chat-react-native-core 3.9.1 → 3.9.2-next.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.
@@ -222,7 +222,7 @@ var renderText = function renderText(params) {
222
222
  }
223
223
  } : {});
224
224
  return _react["default"].createElement(_reactNativeMarkdownPackage["default"], {
225
- key: JSON.stringify(mentioned_users) + "-" + onlyEmojis + "-" + (messageOverlay ? JSON.stringify(markdownStyles) : undefined),
225
+ key: JSON.stringify(mentioned_users) + "-" + onlyEmojis + "-" + (messageOverlay ? JSON.stringify(markdownStyles) : undefined) + "-" + JSON.stringify(colors),
226
226
  onLink: onLink,
227
227
  rules: (0, _extends2["default"])({}, customRules, markdownRules),
228
228
  styles: styles,
@@ -1 +1 @@
1
- {"version":3,"sources":["renderText.tsx"],"names":["defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemText","flex","mentions","fontWeight","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","replace","length","omission","markdown","protocol","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","withinLink","link","React","createElement","Text","key","style","suppressHighlighting","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","RegExp","match","source","exec","mentionsReact","customRules","reflink","order","defaultRules","JSON","stringify","undefined"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Linking, Text } from 'react-native';\nimport anchorme from 'anchorme';\nimport truncate from 'lodash/truncate';\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n} from 'simple-markdown';\n\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\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 { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\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 listItemText: {\n flex: 0,\n },\n mentions: {\n fontWeight: '700',\n },\n // unfortunately marginVertical doesn't override the defaults for these within the 3rd party lib\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 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 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 = anchorme(newText, {\n list: true,\n });\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded.replace(/^(www\\.)/, ''), {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.protocol}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\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 state.withinLink = true;\n const link = React.createElement(\n Text,\n {\n key: state.key,\n onLongPress,\n onPress,\n style: styles.autolink,\n suppressHighlighting: true,\n },\n output(node.content, state),\n );\n state.withinLink = false;\n return link;\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 React.createElement(\n Text,\n {\n key: state.key,\n onLongPress,\n onPress,\n style: styles.mentions,\n },\n Array.isArray(node.content) ? node.content[0]?.content || '' : output(node.content, state),\n );\n };\n\n const customRules = {\n link: { react },\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\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 }`}\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","listItemText","flex","mentions","fontWeight","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","replace","length","omission","markdown","protocol","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","withinLink","link","React","createElement","Text","key","style","suppressHighlighting","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","RegExp","match","source","exec","mentionsReact","customRules","reflink","order","defaultRules","JSON","stringify","undefined"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Linking, Text } from 'react-native';\nimport anchorme from 'anchorme';\nimport truncate from 'lodash/truncate';\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n} from 'simple-markdown';\n\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\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 { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\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 listItemText: {\n flex: 0,\n },\n mentions: {\n fontWeight: '700',\n },\n // unfortunately marginVertical doesn't override the defaults for these within the 3rd party lib\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 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 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 = anchorme(newText, {\n list: true,\n });\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded.replace(/^(www\\.)/, ''), {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.protocol}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\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 state.withinLink = true;\n const link = React.createElement(\n Text,\n {\n key: state.key,\n onLongPress,\n onPress,\n style: styles.autolink,\n suppressHighlighting: true,\n },\n output(node.content, state),\n );\n state.withinLink = false;\n return link;\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 React.createElement(\n Text,\n {\n key: state.key,\n onLongPress,\n onPress,\n style: styles.mentions,\n },\n Array.isArray(node.content) ? node.content[0]?.content || '' : output(node.content, state),\n );\n };\n\n const customRules = {\n link: { react },\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\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,3 +1,3 @@
1
1
  {
2
- "version": "3.9.1"
2
+ "version": "3.9.2-next.1"
3
3
  }
@@ -222,7 +222,7 @@ var renderText = function renderText(params) {
222
222
  }
223
223
  } : {});
224
224
  return _react["default"].createElement(_reactNativeMarkdownPackage["default"], {
225
- key: JSON.stringify(mentioned_users) + "-" + onlyEmojis + "-" + (messageOverlay ? JSON.stringify(markdownStyles) : undefined),
225
+ key: JSON.stringify(mentioned_users) + "-" + onlyEmojis + "-" + (messageOverlay ? JSON.stringify(markdownStyles) : undefined) + "-" + JSON.stringify(colors),
226
226
  onLink: onLink,
227
227
  rules: (0, _extends2["default"])({}, customRules, markdownRules),
228
228
  styles: styles,
@@ -1 +1 @@
1
- {"version":3,"sources":["renderText.tsx"],"names":["defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemText","flex","mentions","fontWeight","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","replace","length","omission","markdown","protocol","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","withinLink","link","React","createElement","Text","key","style","suppressHighlighting","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","RegExp","match","source","exec","mentionsReact","customRules","reflink","order","defaultRules","JSON","stringify","undefined"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Linking, Text } from 'react-native';\nimport anchorme from 'anchorme';\nimport truncate from 'lodash/truncate';\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n} from 'simple-markdown';\n\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\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 { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\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 listItemText: {\n flex: 0,\n },\n mentions: {\n fontWeight: '700',\n },\n // unfortunately marginVertical doesn't override the defaults for these within the 3rd party lib\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 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 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 = anchorme(newText, {\n list: true,\n });\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded.replace(/^(www\\.)/, ''), {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.protocol}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\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 state.withinLink = true;\n const link = React.createElement(\n Text,\n {\n key: state.key,\n onLongPress,\n onPress,\n style: styles.autolink,\n suppressHighlighting: true,\n },\n output(node.content, state),\n );\n state.withinLink = false;\n return link;\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 React.createElement(\n Text,\n {\n key: state.key,\n onLongPress,\n onPress,\n style: styles.mentions,\n },\n Array.isArray(node.content) ? node.content[0]?.content || '' : output(node.content, state),\n );\n };\n\n const customRules = {\n link: { react },\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\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 }`}\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","listItemText","flex","mentions","fontWeight","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","replace","length","omission","markdown","protocol","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","withinLink","link","React","createElement","Text","key","style","suppressHighlighting","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","RegExp","match","source","exec","mentionsReact","customRules","reflink","order","defaultRules","JSON","stringify","undefined"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Linking, Text } from 'react-native';\nimport anchorme from 'anchorme';\nimport truncate from 'lodash/truncate';\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n} from 'simple-markdown';\n\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\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 { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\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 listItemText: {\n flex: 0,\n },\n mentions: {\n fontWeight: '700',\n },\n // unfortunately marginVertical doesn't override the defaults for these within the 3rd party lib\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 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 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 = anchorme(newText, {\n list: true,\n });\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded.replace(/^(www\\.)/, ''), {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.protocol}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\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 state.withinLink = true;\n const link = React.createElement(\n Text,\n {\n key: state.key,\n onLongPress,\n onPress,\n style: styles.autolink,\n suppressHighlighting: true,\n },\n output(node.content, state),\n );\n state.withinLink = false;\n return link;\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 React.createElement(\n Text,\n {\n key: state.key,\n onLongPress,\n onPress,\n style: styles.mentions,\n },\n Array.isArray(node.content) ? node.content[0]?.content || '' : output(node.content, state),\n );\n };\n\n const customRules = {\n link: { react },\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\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,3 +1,3 @@
1
1
  {
2
- "version": "3.9.1"
2
+ "version": "3.9.2-next.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": "3.9.1",
4
+ "version": "3.9.2-next.1",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -262,7 +262,7 @@ export const renderText = <
262
262
  <Markdown
263
263
  key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${
264
264
  messageOverlay ? JSON.stringify(markdownStyles) : undefined
265
- }`}
265
+ }-${JSON.stringify(colors)}`}
266
266
  onLink={onLink}
267
267
  rules={{
268
268
  ...customRules,
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "3.9.1"
2
+ "version": "3.9.2-next.1"
3
3
  }