stream-chat-react-native-core 4.15.0-beta.1 → 4.15.0

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.
@@ -267,7 +267,7 @@ var renderText = function renderText(params) {
267
267
 
268
268
  var customRules = (0, _extends2["default"])({
269
269
  link: {
270
- link: link
270
+ react: link
271
271
  },
272
272
  list: {
273
273
  react: list
@@ -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","pattern","RegExp","test","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","target","event","additionalInfo","defaultHandler","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","match","source","exec","mentionsReact","substring","user","find","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 type { UserResponse } from 'stream-chat';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const 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 const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n 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"]}
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","pattern","RegExp","test","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","target","event","additionalInfo","defaultHandler","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","match","source","exec","mentionsReact","substring","user","find","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 type { UserResponse } from 'stream-chat';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const 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 const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n link: { react: link },\n list: { react: list },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: list },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet 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"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.15.0-beta.1"
2
+ "version": "4.15.0"
3
3
  }
@@ -267,7 +267,7 @@ var renderText = function renderText(params) {
267
267
 
268
268
  var customRules = (0, _extends2["default"])({
269
269
  link: {
270
- link: link
270
+ react: link
271
271
  },
272
272
  list: {
273
273
  react: list
@@ -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","pattern","RegExp","test","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","target","event","additionalInfo","defaultHandler","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","match","source","exec","mentionsReact","substring","user","find","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 type { UserResponse } from 'stream-chat';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const 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 const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n 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"]}
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","pattern","RegExp","test","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","target","event","additionalInfo","defaultHandler","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","match","source","exec","mentionsReact","substring","user","find","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 type { UserResponse } from 'stream-chat';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const 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 const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n link: { react: link },\n list: { react: list },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: list },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet 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"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.15.0-beta.1"
2
+ "version": "4.15.0"
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.15.0-beta.1",
4
+ "version": "4.15.0",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -80,7 +80,7 @@
80
80
  "react-art": "^17.0.2",
81
81
  "react-native-markdown-package": "1.8.2",
82
82
  "react-native-url-polyfill": "^1.3.0",
83
- "stream-chat": "6.7.0"
83
+ "stream-chat": "~6.7.3"
84
84
  },
85
85
  "peerDependencies": {
86
86
  "react-native-svg": "^12.1.0"
@@ -261,7 +261,7 @@ export const renderText = <
261
261
  );
262
262
 
263
263
  const customRules = {
264
- link: { link },
264
+ link: { react: link },
265
265
  list: { react: list },
266
266
  // Truncate long text content in the message overlay
267
267
  paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.15.0-beta.1"
2
+ "version": "4.15.0"
3
3
  }