stream-chat-react-native-core 5.18.0-beta.3 → 5.18.0-beta.5

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_reactNativeSvg","_ThemeContext","_icons","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","avatarContainer","padding","avatarInnerContainer","alignSelf","avatarName","flex","fontSize","fontWeight","paddingTop","textAlign","avatarNameContainer","alignItems","flexDirection","flexGrow","container","borderRadius","marginTop","width","flatListContainer","paddingHorizontal","paddingVertical","flatListContentContainer","paddingBottom","reactionBubble","justifyContent","position","reactionBubbleBackground","height","title","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","ReactionIcon","_ref","_supportedReactions$f","pathFill","size","supportedReactions","find","reaction","Unknown","createElement","__self","__source","fileName","lineNumber","columnNumber","OverlayReactions","props","overlayAlignment","alignment","reactions","_props$supportedReact","showScreen","OverlayReactionsAvatar","layoutHeight","useSharedValue","layoutWidth","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","accent_blue","black","grey_gainsboro","white","_useTheme$theme$overl","overlay","overlayPadding","_useTheme$theme$overl2","avatarSize","radius","titleStyle","useWindowDimensions","supportedReactionTypes","map","supportedReaction","filteredReactions","filter","includes","numColumns","Math","floor","Number","maxHeight","renderItem","_ref2","item","_item$alignment","name","x","y","left","top","View","style","absoluteFill","Circle","cx","cy","fill","r","stroke","strokeWidth","backgroundColor","borderColor","borderWidth","Text","color","showScreenStyle","useAnimatedStyle","transform","translateY","interpolate","value","translateX","scale","onLayout","_ref3","layout","nativeEvent","FlatList","contentContainerStyle","data","keyExtractor","_ref4","index","exports","displayName"],"sources":["OverlayReactions.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, useWindowDimensions, View, ViewStyle } from 'react-native';\nimport { FlatList } from 'react-native-gesture-handler';\nimport Animated, { interpolate, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';\nimport Svg, { Circle } from 'react-native-svg';\n\nimport type { Alignment } from '../../contexts/messageContext/MessageContext';\nimport type { MessageOverlayContextValue } from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n Unknown,\n WutReaction,\n} from '../../icons';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { ReactionData } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n avatarContainer: {\n padding: 8,\n },\n avatarInnerContainer: {\n alignSelf: 'center',\n },\n avatarName: {\n flex: 1,\n fontSize: 12,\n fontWeight: '700',\n paddingTop: 6,\n textAlign: 'center',\n },\n avatarNameContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n flexGrow: 1,\n },\n container: {\n alignItems: 'center',\n borderRadius: 16,\n marginTop: 8,\n width: '100%',\n },\n flatListContainer: {\n paddingHorizontal: 12,\n paddingVertical: 8,\n },\n flatListContentContainer: {\n alignItems: 'center',\n paddingBottom: 12,\n },\n reactionBubble: {\n alignItems: 'center',\n borderRadius: 24,\n justifyContent: 'center',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n width: 24,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n paddingTop: 16,\n },\n});\n\nconst reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\nexport type Reaction = {\n alignment: Alignment;\n id: string;\n name: string;\n type: string;\n image?: string;\n};\n\nexport type OverlayReactionsProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageOverlayContextValue<StreamChatGenerics>, 'OverlayReactionsAvatar'> & {\n reactions: Reaction[];\n showScreen: Animated.SharedValue<number>;\n title: string;\n alignment?: Alignment;\n supportedReactions?: ReactionData[];\n};\n\nconst ReactionIcon: React.FC<\n Pick<Reaction, 'type'> & {\n pathFill: string;\n size: number;\n supportedReactions: ReactionData[];\n }\n> = ({ pathFill, size, supportedReactions, type }) => {\n const Icon = supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n return <Icon height={size} pathFill={pathFill} width={size} />;\n};\n\n/**\n * OverlayReactions - A high level component which implements all the logic required for message overlay reactions\n */\nexport const OverlayReactions: React.FC<OverlayReactionsProps> = (props) => {\n const {\n alignment: overlayAlignment,\n reactions,\n supportedReactions = reactionData,\n showScreen,\n title,\n OverlayReactionsAvatar,\n } = props;\n const layoutHeight = useSharedValue(0);\n const layoutWidth = useSharedValue(0);\n\n const {\n theme: {\n colors: { accent_blue, black, grey_gainsboro, white },\n overlay: {\n padding: overlayPadding,\n reactions: {\n avatarContainer,\n avatarName,\n avatarSize,\n container,\n flatListContainer,\n radius,\n reactionBubble,\n reactionBubbleBackground,\n title: titleStyle,\n },\n },\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n const height = useWindowDimensions().height;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n\n const filteredReactions = reactions.filter((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n const numColumns = Math.floor(\n (width -\n overlayPadding * 2 -\n ((Number(flatListContainer.paddingHorizontal || 0) ||\n styles.flatListContainer.paddingHorizontal) +\n (Number(avatarContainer.padding || 0) || styles.avatarContainer.padding)) *\n 2) /\n (avatarSize + (Number(avatarContainer.padding || 0) || styles.avatarContainer.padding) * 2),\n );\n\n const maxHeight = Math.floor(\n height -\n overlayPadding * 2 -\n ((Number(flatListContainer.paddingVertical || 0) ||\n styles.flatListContainer.paddingVertical) +\n (Number(avatarContainer.padding || 0) || styles.avatarContainer.padding)) *\n 2,\n );\n\n const renderItem = ({ item }: { item: Reaction }) => {\n const { alignment = 'left', name, type } = item;\n const x = avatarSize / 2 - (avatarSize / (radius * 4)) * (alignment === 'left' ? 1 : -1);\n const y = avatarSize - radius;\n\n const left =\n alignment === 'left'\n ? x -\n (Number(reactionBubbleBackground.width || 0) || styles.reactionBubbleBackground.width) +\n radius\n : x - radius;\n const top =\n y -\n radius -\n (Number(reactionBubbleBackground.height || 0) || styles.reactionBubbleBackground.height);\n\n return (\n <View style={[styles.avatarContainer, avatarContainer]}>\n <View style={styles.avatarInnerContainer}>\n <OverlayReactionsAvatar reaction={item} size={avatarSize} />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle\n cx={x - (radius * 2 - radius / 4) * (alignment === 'left' ? 1 : -1)}\n cy={y - radius * 2 - radius / 4}\n fill={alignment === 'left' ? grey_gainsboro : white}\n r={radius * 2}\n stroke={alignment === 'left' ? white : grey_gainsboro}\n strokeWidth={radius / 2}\n />\n <Circle\n cx={x}\n cy={y}\n fill={alignment === 'left' ? grey_gainsboro : white}\n r={radius}\n stroke={alignment === 'left' ? white : grey_gainsboro}\n strokeWidth={radius / 2}\n />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignment === 'left' ? grey_gainsboro : white,\n borderColor: alignment === 'left' ? white : grey_gainsboro,\n borderWidth: radius / 2,\n left,\n top,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle\n cx={x - (radius * 2 - radius / 4) * (alignment === 'left' ? 1 : -1)}\n cy={y - radius * 2 - radius / 4}\n fill={alignment === 'left' ? grey_gainsboro : white}\n r={radius * 2 - radius / 2}\n />\n </Svg>\n </View>\n <View\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignment === 'left' ? grey_gainsboro : white,\n height:\n (reactionBubble.borderRadius || styles.reactionBubble.borderRadius) -\n radius / 2,\n left,\n top,\n width:\n (reactionBubble.borderRadius || styles.reactionBubble.borderRadius) -\n radius / 2,\n },\n reactionBubble,\n ]}\n >\n <ReactionIcon\n pathFill={accent_blue}\n size={(reactionBubble.borderRadius || styles.reactionBubble.borderRadius) / 2}\n supportedReactions={supportedReactions}\n type={type}\n />\n </View>\n </View>\n </View>\n <View style={styles.avatarNameContainer}>\n <Text style={[styles.avatarName, { color: black }, avatarName]}>{name}</Text>\n </View>\n </View>\n );\n };\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [-layoutHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [overlayAlignment === 'left' ? -layoutWidth.value / 2 : layoutWidth.value / 2, 0],\n ),\n },\n {\n scale: showScreen.value,\n },\n ],\n }),\n [overlayAlignment],\n );\n\n return (\n <Animated.View\n onLayout={({ nativeEvent: { layout } }) => {\n layoutWidth.value = layout.width;\n layoutHeight.value = layout.height;\n }}\n style={[styles.container, { backgroundColor: white }, container, showScreenStyle]}\n >\n <Text style={[styles.title, { color: black }, titleStyle]}>{title}</Text>\n <FlatList\n contentContainerStyle={styles.flatListContentContainer}\n data={filteredReactions}\n keyExtractor={({ name }, index) => `${name}_${index}`}\n numColumns={numColumns}\n renderItem={renderItem}\n style={[styles.flatListContainer, flatListContainer, { maxHeight: maxHeight / numColumns }]}\n />\n </Animated.View>\n );\n};\n\nOverlayReactions.displayName = 'OverlayReactions{overlay{reactions}}';\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_reactNativeSvg","_ThemeContext","_icons","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","avatarContainer","padding","avatarInnerContainer","alignSelf","avatarName","flex","fontSize","fontWeight","paddingTop","textAlign","avatarNameContainer","alignItems","flexDirection","flexGrow","container","borderRadius","marginTop","width","flatListContainer","paddingHorizontal","paddingVertical","flatListContentContainer","paddingBottom","reactionBubble","justifyContent","position","reactionBubbleBackground","height","title","unseenItemContainer","opacity","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","ReactionIcon","_ref","_supportedReactions$f","pathFill","size","supportedReactions","find","reaction","Unknown","createElement","__self","__source","fileName","lineNumber","columnNumber","OverlayReactions","props","overlayAlignment","alignment","reactions","_props$supportedReact","showScreen","OverlayReactionsAvatar","layoutHeight","useSharedValue","layoutWidth","_React$useState","React","useState","_React$useState2","_slicedToArray2","itemHeight","setItemHeight","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","accent_blue","black","grey_gainsboro","white","_useTheme$theme$overl","overlay","overlayPadding","_useTheme$theme$overl2","avatarSize","radius","titleStyle","useWindowDimensions","supportedReactionTypes","map","supportedReaction","filteredReactions","filter","includes","numColumns","Math","floor","Number","renderItem","_ref2","item","_item$alignment","name","x","y","left","top","View","style","absoluteFill","Circle","cx","cy","fill","r","stroke","strokeWidth","backgroundColor","borderColor","borderWidth","Text","color","showScreenStyle","useAnimatedStyle","transform","translateY","interpolate","value","translateX","scale","Fragment","onLayout","_ref3","layout","nativeEvent","FlatList","contentContainerStyle","data","keyExtractor","_ref4","index","maxHeight","length","_ref5","exports","displayName"],"sources":["OverlayReactions.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, useWindowDimensions, View, ViewStyle } from 'react-native';\nimport { FlatList } from 'react-native-gesture-handler';\nimport Animated, { interpolate, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';\nimport Svg, { Circle } from 'react-native-svg';\n\nimport type { Alignment } from '../../contexts/messageContext/MessageContext';\nimport type { MessageOverlayContextValue } from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n Unknown,\n WutReaction,\n} from '../../icons';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { ReactionData } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n avatarContainer: {\n padding: 8,\n },\n avatarInnerContainer: {\n alignSelf: 'center',\n },\n avatarName: {\n flex: 1,\n fontSize: 12,\n fontWeight: '700',\n paddingTop: 6,\n textAlign: 'center',\n },\n avatarNameContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n flexGrow: 1,\n },\n container: {\n alignItems: 'center',\n borderRadius: 16,\n marginTop: 8,\n width: '100%',\n },\n flatListContainer: {\n paddingHorizontal: 12,\n paddingVertical: 8,\n },\n flatListContentContainer: {\n alignItems: 'center',\n paddingBottom: 12,\n },\n reactionBubble: {\n alignItems: 'center',\n borderRadius: 24,\n justifyContent: 'center',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n width: 24,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n paddingTop: 16,\n },\n unseenItemContainer: {\n opacity: 0,\n position: 'absolute',\n },\n});\n\nconst reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\nexport type Reaction = {\n alignment: Alignment;\n id: string;\n name: string;\n type: string;\n image?: string;\n};\n\nexport type OverlayReactionsProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageOverlayContextValue<StreamChatGenerics>, 'OverlayReactionsAvatar'> & {\n reactions: Reaction[];\n showScreen: Animated.SharedValue<number>;\n title: string;\n alignment?: Alignment;\n supportedReactions?: ReactionData[];\n};\n\nconst ReactionIcon: React.FC<\n Pick<Reaction, 'type'> & {\n pathFill: string;\n size: number;\n supportedReactions: ReactionData[];\n }\n> = ({ pathFill, size, supportedReactions, type }) => {\n const Icon = supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n return <Icon height={size} pathFill={pathFill} width={size} />;\n};\n\n/**\n * OverlayReactions - A high level component which implements all the logic required for message overlay reactions\n */\nexport const OverlayReactions: React.FC<OverlayReactionsProps> = (props) => {\n const {\n alignment: overlayAlignment,\n reactions,\n supportedReactions = reactionData,\n showScreen,\n title,\n OverlayReactionsAvatar,\n } = props;\n const layoutHeight = useSharedValue(0);\n const layoutWidth = useSharedValue(0);\n\n const [itemHeight, setItemHeight] = React.useState(0);\n\n const {\n theme: {\n colors: { accent_blue, black, grey_gainsboro, white },\n overlay: {\n padding: overlayPadding,\n reactions: {\n avatarContainer,\n avatarName,\n avatarSize,\n container,\n flatListContainer,\n radius,\n reactionBubble,\n reactionBubbleBackground,\n title: titleStyle,\n },\n },\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n\n const filteredReactions = reactions.filter((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n const numColumns = Math.floor(\n (width -\n overlayPadding * 2 -\n ((Number(flatListContainer.paddingHorizontal || 0) ||\n styles.flatListContainer.paddingHorizontal) +\n (Number(avatarContainer.padding || 0) || styles.avatarContainer.padding)) *\n 2) /\n (avatarSize + (Number(avatarContainer.padding || 0) || styles.avatarContainer.padding) * 2),\n );\n\n const renderItem = ({ item }: { item: Reaction }) => {\n const { alignment = 'left', name, type } = item;\n const x = avatarSize / 2 - (avatarSize / (radius * 4)) * (alignment === 'left' ? 1 : -1);\n const y = avatarSize - radius;\n\n const left =\n alignment === 'left'\n ? x -\n (Number(reactionBubbleBackground.width || 0) || styles.reactionBubbleBackground.width) +\n radius\n : x - radius;\n const top =\n y -\n radius -\n (Number(reactionBubbleBackground.height || 0) || styles.reactionBubbleBackground.height);\n\n return (\n <View style={[styles.avatarContainer, avatarContainer]}>\n <View style={styles.avatarInnerContainer}>\n <OverlayReactionsAvatar reaction={item} size={avatarSize} />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle\n cx={x - (radius * 2 - radius / 4) * (alignment === 'left' ? 1 : -1)}\n cy={y - radius * 2 - radius / 4}\n fill={alignment === 'left' ? grey_gainsboro : white}\n r={radius * 2}\n stroke={alignment === 'left' ? white : grey_gainsboro}\n strokeWidth={radius / 2}\n />\n <Circle\n cx={x}\n cy={y}\n fill={alignment === 'left' ? grey_gainsboro : white}\n r={radius}\n stroke={alignment === 'left' ? white : grey_gainsboro}\n strokeWidth={radius / 2}\n />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignment === 'left' ? grey_gainsboro : white,\n borderColor: alignment === 'left' ? white : grey_gainsboro,\n borderWidth: radius / 2,\n left,\n top,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle\n cx={x - (radius * 2 - radius / 4) * (alignment === 'left' ? 1 : -1)}\n cy={y - radius * 2 - radius / 4}\n fill={alignment === 'left' ? grey_gainsboro : white}\n r={radius * 2 - radius / 2}\n />\n </Svg>\n </View>\n <View\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignment === 'left' ? grey_gainsboro : white,\n height:\n (reactionBubble.borderRadius || styles.reactionBubble.borderRadius) -\n radius / 2,\n left,\n top,\n width:\n (reactionBubble.borderRadius || styles.reactionBubble.borderRadius) -\n radius / 2,\n },\n reactionBubble,\n ]}\n >\n <ReactionIcon\n pathFill={accent_blue}\n size={(reactionBubble.borderRadius || styles.reactionBubble.borderRadius) / 2}\n supportedReactions={supportedReactions}\n type={type}\n />\n </View>\n </View>\n </View>\n <View style={styles.avatarNameContainer}>\n <Text style={[styles.avatarName, { color: black }, avatarName]}>{name}</Text>\n </View>\n </View>\n );\n };\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [-layoutHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [overlayAlignment === 'left' ? -layoutWidth.value / 2 : layoutWidth.value / 2, 0],\n ),\n },\n {\n scale: showScreen.value,\n },\n ],\n }),\n [overlayAlignment],\n );\n\n return (\n <>\n <Animated.View\n onLayout={({ nativeEvent: { layout } }) => {\n layoutWidth.value = layout.width;\n layoutHeight.value = layout.height;\n }}\n style={[\n styles.container,\n { backgroundColor: white, opacity: itemHeight ? 1 : 0 },\n container,\n showScreenStyle,\n ]}\n >\n <Text style={[styles.title, { color: black }, titleStyle]}>{title}</Text>\n <FlatList\n contentContainerStyle={styles.flatListContentContainer}\n data={filteredReactions}\n key={numColumns}\n keyExtractor={({ name }, index) => `${name}_${index}`}\n numColumns={numColumns}\n renderItem={renderItem}\n style={[\n styles.flatListContainer,\n flatListContainer,\n {\n // we show the item height plus a little extra to tease for scrolling if there are more than one row\n maxHeight:\n itemHeight + (filteredReactions.length / numColumns > 1 ? itemHeight / 8 : 0),\n },\n ]}\n />\n {/* The below view is unseen by the user, we use it to compute the height that the item must be */}\n <View\n onLayout={({ nativeEvent: { layout } }) => {\n setItemHeight(layout.height);\n }}\n style={[styles.unseenItemContainer, styles.flatListContentContainer]}\n >\n {renderItem({ item: filteredReactions[0] })}\n </View>\n </Animated.View>\n </>\n );\n};\n\nOverlayReactions.displayName = 'OverlayReactions{overlay{reactions}}';\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.18.0-beta.3"
2
+ "version": "5.18.0-beta.5"
3
3
  }
@@ -28,7 +28,7 @@ var getMentionUsers = function getMentionUsers(mentionedUser) {
28
28
  }
29
29
  return acc;
30
30
  }, '');
31
- return mentionUserString;
31
+ return mentionUserString.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
32
32
  }
33
33
  return '';
34
34
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_ChatContext","_TranslationContext","getMessageSenderName","message","currentUserId","t","membersLength","_message$user","user","id","_message$user2","_message$user3","_message$user4","name","username","getMentionUsers","mentionedUser","Array","isArray","mentionUserString","reduce","acc","cur","userName","length","getLatestMessageDisplayText","channel","client","_message$attachments","bold","text","isMessageTypeDeleted","type","userID","members","Object","keys","state","messageSender","messageSenderText","boldOwner","includes","shortenedText","substring","replace","mentionedUsers","mentioned_users","regEx","RegExp","concat","_toConsumableArray2","split","index","test","push","command","attachments","getLatestMessageDisplayDate","tDateTimeParser","parserOutput","created_at","isDayOrMoment","isSame","Date","format","MessageReadStatus","exports","getLatestMessageReadStatus","readEvents","_message$user5","NOT_SENT_BY_CURRENT_USER","readList","read","messageUpdatedAt","updated_at","undefined","values","some","_ref","last_read","READ","UNREAD","getLatestMessagePreview","params","lastMessage","messages","messageObject","previews","status","channelStateLastMessage","useLatestMessagePreview","forceUpdate","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","channelConfigExists","getConfig","channelLastMessageString","_useState","useState","_useState2","_slicedToArray2","setReadEvents","_useState3","_useState4","latestMessagePreview","setLatestMessagePreview","readStatus","useEffect","_channel$getConfig","read_events"],"sources":["useLatestMessagePreview.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, MessageResponse, StreamChat, UserResponse } from 'stream-chat';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport {\n isDayOrMoment,\n TDateTimeParser,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\ntype LatestMessage<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> =\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>;\n\nexport type LatestMessagePreview<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n created_at: string | number | Date;\n messageObject: LatestMessage<StreamChatGenerics> | undefined;\n previews: {\n bold: boolean;\n text: string;\n }[];\n status: number;\n};\n\nconst getMessageSenderName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: LatestMessage<StreamChatGenerics> | undefined,\n currentUserId: string | undefined,\n t: (key: string) => string,\n membersLength: number,\n) => {\n if (message?.user?.id === currentUserId) {\n return t('You');\n }\n\n if (membersLength > 2) {\n return message?.user?.name || message?.user?.username || message?.user?.id || '';\n }\n\n return '';\n};\n\nconst getMentionUsers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n mentionedUser: UserResponse<StreamChatGenerics>[] | undefined,\n) => {\n if (Array.isArray(mentionedUser)) {\n const mentionUserString = mentionedUser.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '');\n return mentionUserString;\n }\n return '';\n};\n\nconst getLatestMessageDisplayText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n client: StreamChat<StreamChatGenerics>,\n message: LatestMessage<StreamChatGenerics> | undefined,\n t: (key: string) => string,\n) => {\n if (!message) return [{ bold: false, text: t('Nothing yet...') }];\n const isMessageTypeDeleted = message.type === 'deleted';\n if (isMessageTypeDeleted) return [{ bold: false, text: t('Message deleted') }];\n const currentUserId = client?.userID;\n const members = Object.keys(channel.state.members);\n\n const messageSender = getMessageSenderName(message, currentUserId, t, members.length);\n const messageSenderText = messageSender\n ? `${messageSender === t('You') ? '' : '@'}${messageSender}: `\n : '';\n const boldOwner = messageSenderText.includes('@');\n if (message.text) {\n // rough guess optimization to limit string preview to max 100 characters\n const shortenedText = message.text.substring(0, 100).replace(/\\n/g, ' ');\n const mentionedUsers = getMentionUsers(message.mentioned_users);\n const regEx = new RegExp(`^(${mentionedUsers})`);\n return [\n { bold: boldOwner, text: messageSenderText },\n ...shortenedText.split('').reduce(\n (acc, cur, index) => {\n if (cur === '@' && mentionedUsers && regEx.test(shortenedText.substring(index))) {\n acc.push({ bold: true, text: cur });\n } else if (mentionedUsers && regEx.test(acc[acc.length - 1].text)) {\n acc.push({ bold: false, text: cur });\n } else {\n acc[acc.length - 1].text += cur;\n }\n return acc;\n },\n [{ bold: false, text: '' }],\n ),\n ];\n }\n if (message.command) {\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: `/${message.command}` },\n ];\n }\n if (message.attachments?.length) {\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: t('🏙 Attachment...') },\n ];\n }\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: t('Empty message...') },\n ];\n};\n\nconst getLatestMessageDisplayDate = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: LatestMessage<StreamChatGenerics> | undefined,\n tDateTimeParser: TDateTimeParser,\n) => {\n const parserOutput = tDateTimeParser(message?.created_at);\n if (isDayOrMoment(parserOutput)) {\n if (parserOutput.isSame(new Date(), 'day')) {\n return parserOutput.format('LT');\n }\n return parserOutput.format('L');\n }\n return parserOutput;\n};\n\nexport enum MessageReadStatus {\n NOT_SENT_BY_CURRENT_USER = 0,\n UNREAD = 1,\n READ = 2,\n}\n\nconst getLatestMessageReadStatus = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n client: StreamChat<StreamChatGenerics>,\n message: LatestMessage<StreamChatGenerics> | undefined,\n readEvents: boolean,\n): MessageReadStatus => {\n const currentUserId = client.userID;\n if (!message || currentUserId !== message.user?.id || readEvents === false) {\n return MessageReadStatus.NOT_SENT_BY_CURRENT_USER;\n }\n\n const readList = channel.state.read;\n if (currentUserId) {\n delete readList[currentUserId];\n }\n\n const messageUpdatedAt = message.updated_at\n ? typeof message.updated_at === 'string'\n ? new Date(message.updated_at)\n : message.updated_at\n : undefined;\n\n return Object.values(readList).some(\n ({ last_read }) => messageUpdatedAt && messageUpdatedAt < last_read,\n )\n ? MessageReadStatus.READ\n : MessageReadStatus.UNREAD;\n};\n\nconst getLatestMessagePreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(params: {\n channel: Channel<StreamChatGenerics>;\n client: StreamChat<StreamChatGenerics>;\n readEvents: boolean;\n t: (key: string) => string;\n tDateTimeParser: TDateTimeParser;\n lastMessage?:\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>;\n}) => {\n const { channel, client, lastMessage, readEvents, t, tDateTimeParser } = params;\n\n const messages = channel.state.messages;\n\n if (!messages.length && !lastMessage) {\n return {\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: t('Nothing yet...'),\n },\n ],\n status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,\n };\n }\n\n const channelStateLastMessage = messages.length ? messages[messages.length - 1] : undefined;\n\n const message = lastMessage !== undefined ? lastMessage : channelStateLastMessage;\n\n return {\n created_at: getLatestMessageDisplayDate(message, tDateTimeParser),\n messageObject: message,\n previews: getLatestMessageDisplayText(channel, client, message, t),\n status: getLatestMessageReadStatus(channel, client, message, readEvents),\n };\n};\n\n/**\n * Hook to set the display preview for latest message on channel.\n *\n * @param {*} channel Channel object\n *\n * @returns {object} latest message preview e.g.. { text: 'this was last message ...', created_at: '11/12/2020', messageObject: { originalMessageObject } }\n */\nexport const useLatestMessagePreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n forceUpdate: number,\n lastMessage?:\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n const channelConfigExists = typeof channel?.getConfig === 'function';\n\n const messages = channel.state.messages;\n const message = messages.length ? messages[messages.length - 1] : undefined;\n\n const channelLastMessageString = `${lastMessage?.id || message?.id}${\n lastMessage?.updated_at || message?.updated_at\n }`;\n\n const [readEvents, setReadEvents] = useState(true);\n const [latestMessagePreview, setLatestMessagePreview] = useState<\n LatestMessagePreview<StreamChatGenerics>\n >({\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: '',\n },\n ],\n status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,\n });\n\n const readStatus = getLatestMessageReadStatus(\n channel,\n client,\n lastMessage || message,\n readEvents,\n );\n\n useEffect(() => {\n if (channelConfigExists) {\n const read_events = channel.getConfig()?.read_events;\n if (typeof read_events === 'boolean') {\n setReadEvents(read_events);\n }\n }\n }, [channelConfigExists]);\n\n useEffect(\n () =>\n setLatestMessagePreview(\n getLatestMessagePreview({\n channel,\n client,\n lastMessage,\n readEvents,\n t,\n tDateTimeParser,\n }),\n ),\n [channelLastMessageString, forceUpdate, readEvents, readStatus],\n );\n\n return latestMessagePreview;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AA0BA,IAAMG,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAGxBC,OAAsD,EACtDC,aAAiC,EACjCC,CAA0B,EAC1BC,aAAqB,EAClB;EAAA,IAAAC,aAAA;EACH,IAAI,CAAAJ,OAAO,qBAAAI,aAAA,GAAPJ,OAAO,CAAEK,IAAI,qBAAbD,aAAA,CAAeE,EAAE,MAAKL,aAAa,EAAE;IACvC,OAAOC,CAAC,CAAC,KAAK,CAAC;EACjB;EAEA,IAAIC,aAAa,GAAG,CAAC,EAAE;IAAA,IAAAI,cAAA,EAAAC,cAAA,EAAAC,cAAA;IACrB,OAAO,CAAAT,OAAO,qBAAAO,cAAA,GAAPP,OAAO,CAAEK,IAAI,qBAAbE,cAAA,CAAeG,IAAI,MAAIV,OAAO,qBAAAQ,cAAA,GAAPR,OAAO,CAAEK,IAAI,qBAAbG,cAAA,CAAeG,QAAQ,MAAIX,OAAO,qBAAAS,cAAA,GAAPT,OAAO,CAAEK,IAAI,qBAAbI,cAAA,CAAeH,EAAE,KAAI,EAAE;EAClF;EAEA,OAAO,EAAE;AACX,CAAC;AAED,IAAMM,eAAe,GAAG,SAAlBA,eAAeA,CAGnBC,aAA6D,EAC1D;EACH,IAAIC,KAAK,CAACC,OAAO,CAACF,aAAa,CAAC,EAAE;IAChC,IAAMG,iBAAiB,GAAGH,aAAa,CAACI,MAAM,CAAC,UAACC,GAAG,EAAEC,GAAG,EAAK;MAC3D,IAAMC,QAAQ,GAAGD,GAAG,CAACT,IAAI,IAAIS,GAAG,CAACb,EAAE,IAAI,EAAE;MACzC,IAAIc,QAAQ,EAAE;QACZF,GAAG,KAAOA,GAAG,CAACG,MAAM,GAAG,GAAG,GAAG,EAAE,UAAID,QAAU;MAC/C;MACA,OAAOF,GAAG;IACZ,CAAC,EAAE,EAAE,CAAC;IACN,OAAOF,iBAAiB;EAC1B;EACA,OAAO,EAAE;AACX,CAAC;AAED,IAAMM,2BAA2B,GAAG,SAA9BA,2BAA2BA,CAG/BC,OAAoC,EACpCC,MAAsC,EACtCxB,OAAsD,EACtDE,CAA0B,EACvB;EAAA,IAAAuB,oBAAA;EACH,IAAI,CAACzB,OAAO,EAAE,OAAO,CAAC;IAAE0B,IAAI,EAAE,KAAK;IAAEC,IAAI,EAAEzB,CAAC,CAAC,gBAAgB;EAAE,CAAC,CAAC;EACjE,IAAM0B,oBAAoB,GAAG5B,OAAO,CAAC6B,IAAI,KAAK,SAAS;EACvD,IAAID,oBAAoB,EAAE,OAAO,CAAC;IAAEF,IAAI,EAAE,KAAK;IAAEC,IAAI,EAAEzB,CAAC,CAAC,iBAAiB;EAAE,CAAC,CAAC;EAC9E,IAAMD,aAAa,GAAGuB,MAAM,oBAANA,MAAM,CAAEM,MAAM;EACpC,IAAMC,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACV,OAAO,CAACW,KAAK,CAACH,OAAO,CAAC;EAElD,IAAMI,aAAa,GAAGpC,oBAAoB,CAACC,OAAO,EAAEC,aAAa,EAAEC,CAAC,EAAE6B,OAAO,CAACV,MAAM,CAAC;EACrF,IAAMe,iBAAiB,GAAGD,aAAa,SAChCA,aAAa,KAAKjC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,IAAGiC,aAAa,UACxD,EAAE;EACN,IAAME,SAAS,GAAGD,iBAAiB,CAACE,QAAQ,CAAC,GAAG,CAAC;EACjD,IAAItC,OAAO,CAAC2B,IAAI,EAAE;IAEhB,IAAMY,aAAa,GAAGvC,OAAO,CAAC2B,IAAI,CAACa,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAACC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;IACxE,IAAMC,cAAc,GAAG9B,eAAe,CAACZ,OAAO,CAAC2C,eAAe,CAAC;IAC/D,IAAMC,KAAK,GAAG,IAAIC,MAAM,QAAMH,cAAc,MAAG,CAAC;IAChD,QACE;MAAEhB,IAAI,EAAEW,SAAS;MAAEV,IAAI,EAAES;IAAkB,CAAC,EAAAU,MAAA,KAAAC,mBAAA,aACzCR,aAAa,CAACS,KAAK,CAAC,EAAE,CAAC,CAAC/B,MAAM,CAC/B,UAACC,GAAG,EAAEC,GAAG,EAAE8B,KAAK,EAAK;MACnB,IAAI9B,GAAG,KAAK,GAAG,IAAIuB,cAAc,IAAIE,KAAK,CAACM,IAAI,CAACX,aAAa,CAACC,SAAS,CAACS,KAAK,CAAC,CAAC,EAAE;QAC/E/B,GAAG,CAACiC,IAAI,CAAC;UAAEzB,IAAI,EAAE,IAAI;UAAEC,IAAI,EAAER;QAAI,CAAC,CAAC;MACrC,CAAC,MAAM,IAAIuB,cAAc,IAAIE,KAAK,CAACM,IAAI,CAAChC,GAAG,CAACA,GAAG,CAACG,MAAM,GAAG,CAAC,CAAC,CAACM,IAAI,CAAC,EAAE;QACjET,GAAG,CAACiC,IAAI,CAAC;UAAEzB,IAAI,EAAE,KAAK;UAAEC,IAAI,EAAER;QAAI,CAAC,CAAC;MACtC,CAAC,MAAM;QACLD,GAAG,CAACA,GAAG,CAACG,MAAM,GAAG,CAAC,CAAC,CAACM,IAAI,IAAIR,GAAG;MACjC;MACA,OAAOD,GAAG;IACZ,CAAC,EACD,CAAC;MAAEQ,IAAI,EAAE,KAAK;MAAEC,IAAI,EAAE;IAAG,CAAC,CAC5B,CAAC;EAEL;EACA,IAAI3B,OAAO,CAACoD,OAAO,EAAE;IACnB,OAAO,CACL;MAAE1B,IAAI,EAAEW,SAAS;MAAEV,IAAI,EAAES;IAAkB,CAAC,EAC5C;MAAEV,IAAI,EAAE,KAAK;MAAEC,IAAI,QAAM3B,OAAO,CAACoD;IAAU,CAAC,CAC7C;EACH;EACA,KAAA3B,oBAAA,GAAIzB,OAAO,CAACqD,WAAW,aAAnB5B,oBAAA,CAAqBJ,MAAM,EAAE;IAC/B,OAAO,CACL;MAAEK,IAAI,EAAEW,SAAS;MAAEV,IAAI,EAAES;IAAkB,CAAC,EAC5C;MAAEV,IAAI,EAAE,KAAK;MAAEC,IAAI,EAAEzB,CAAC,CAAC,kBAAkB;IAAE,CAAC,CAC7C;EACH;EACA,OAAO,CACL;IAAEwB,IAAI,EAAEW,SAAS;IAAEV,IAAI,EAAES;EAAkB,CAAC,EAC5C;IAAEV,IAAI,EAAE,KAAK;IAAEC,IAAI,EAAEzB,CAAC,CAAC,kBAAkB;EAAE,CAAC,CAC7C;AACH,CAAC;AAED,IAAMoD,2BAA2B,GAAG,SAA9BA,2BAA2BA,CAG/BtD,OAAsD,EACtDuD,eAAgC,EAC7B;EACH,IAAMC,YAAY,GAAGD,eAAe,CAACvD,OAAO,oBAAPA,OAAO,CAAEyD,UAAU,CAAC;EACzD,IAAI,IAAAC,iCAAa,EAACF,YAAY,CAAC,EAAE;IAC/B,IAAIA,YAAY,CAACG,MAAM,CAAC,IAAIC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;MAC1C,OAAOJ,YAAY,CAACK,MAAM,CAAC,IAAI,CAAC;IAClC;IACA,OAAOL,YAAY,CAACK,MAAM,CAAC,GAAG,CAAC;EACjC;EACA,OAAOL,YAAY;AACrB,CAAC;AAAC,IAEUM,iBAAiB,aAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAAC,OAAA,CAAAD,iBAAA,GAAAA,iBAAA;AAM7B,IAAME,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAG9BzC,OAAoC,EACpCC,MAAsC,EACtCxB,OAAsD,EACtDiE,UAAmB,EACG;EAAA,IAAAC,cAAA;EACtB,IAAMjE,aAAa,GAAGuB,MAAM,CAACM,MAAM;EACnC,IAAI,CAAC9B,OAAO,IAAIC,aAAa,OAAAiE,cAAA,GAAKlE,OAAO,CAACK,IAAI,qBAAZ6D,cAAA,CAAc5D,EAAE,KAAI2D,UAAU,KAAK,KAAK,EAAE;IAC1E,OAAOH,iBAAiB,CAACK,wBAAwB;EACnD;EAEA,IAAMC,QAAQ,GAAG7C,OAAO,CAACW,KAAK,CAACmC,IAAI;EACnC,IAAIpE,aAAa,EAAE;IACjB,OAAOmE,QAAQ,CAACnE,aAAa,CAAC;EAChC;EAEA,IAAMqE,gBAAgB,GAAGtE,OAAO,CAACuE,UAAU,GACvC,OAAOvE,OAAO,CAACuE,UAAU,KAAK,QAAQ,GACpC,IAAIX,IAAI,CAAC5D,OAAO,CAACuE,UAAU,CAAC,GAC5BvE,OAAO,CAACuE,UAAU,GACpBC,SAAS;EAEb,OAAOxC,MAAM,CAACyC,MAAM,CAACL,QAAQ,CAAC,CAACM,IAAI,CACjC,UAAAC,IAAA;IAAA,IAAGC,SAAS,GAAAD,IAAA,CAATC,SAAS;IAAA,OAAON,gBAAgB,IAAIA,gBAAgB,GAAGM,SAAS;EAAA,CACrE,CAAC,GACGd,iBAAiB,CAACe,IAAI,GACtBf,iBAAiB,CAACgB,MAAM;AAC9B,CAAC;AAED,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAE3BC,MASD,EAAK;EACJ,IAAQzD,OAAO,GAA0DyD,MAAM,CAAvEzD,OAAO;IAAEC,MAAM,GAAkDwD,MAAM,CAA9DxD,MAAM;IAAEyD,WAAW,GAAqCD,MAAM,CAAtDC,WAAW;IAAEhB,UAAU,GAAyBe,MAAM,CAAzCf,UAAU;IAAE/D,CAAC,GAAsB8E,MAAM,CAA7B9E,CAAC;IAAEqD,eAAe,GAAKyB,MAAM,CAA1BzB,eAAe;EAEpE,IAAM2B,QAAQ,GAAG3D,OAAO,CAACW,KAAK,CAACgD,QAAQ;EAEvC,IAAI,CAACA,QAAQ,CAAC7D,MAAM,IAAI,CAAC4D,WAAW,EAAE;IACpC,OAAO;MACLxB,UAAU,EAAE,EAAE;MACd0B,aAAa,EAAEX,SAAS;MACxBY,QAAQ,EAAE,CACR;QACE1D,IAAI,EAAE,KAAK;QACXC,IAAI,EAAEzB,CAAC,CAAC,gBAAgB;MAC1B,CAAC,CACF;MACDmF,MAAM,EAAEvB,iBAAiB,CAACK;IAC5B,CAAC;EACH;EAEA,IAAMmB,uBAAuB,GAAGJ,QAAQ,CAAC7D,MAAM,GAAG6D,QAAQ,CAACA,QAAQ,CAAC7D,MAAM,GAAG,CAAC,CAAC,GAAGmD,SAAS;EAE3F,IAAMxE,OAAO,GAAGiF,WAAW,KAAKT,SAAS,GAAGS,WAAW,GAAGK,uBAAuB;EAEjF,OAAO;IACL7B,UAAU,EAAEH,2BAA2B,CAACtD,OAAO,EAAEuD,eAAe,CAAC;IACjE4B,aAAa,EAAEnF,OAAO;IACtBoF,QAAQ,EAAE9D,2BAA2B,CAACC,OAAO,EAAEC,MAAM,EAAExB,OAAO,EAAEE,CAAC,CAAC;IAClEmF,MAAM,EAAErB,0BAA0B,CAACzC,OAAO,EAAEC,MAAM,EAAExB,OAAO,EAAEiE,UAAU;EACzE,CAAC;AACH,CAAC;AASM,IAAMsB,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAGlChE,OAAoC,EACpCiE,WAAmB,EACnBP,WAEuC,EACpC;EACH,IAAAQ,eAAA,GAAmB,IAAAC,2BAAc,EAAqB,CAAC;IAA/ClE,MAAM,GAAAiE,eAAA,CAANjE,MAAM;EACd,IAAAmE,qBAAA,GAA+B,IAAAC,yCAAqB,EAAC,CAAC;IAA9C1F,CAAC,GAAAyF,qBAAA,CAADzF,CAAC;IAAEqD,eAAe,GAAAoC,qBAAA,CAAfpC,eAAe;EAE1B,IAAMsC,mBAAmB,GAAG,QAAOtE,OAAO,oBAAPA,OAAO,CAAEuE,SAAS,MAAK,UAAU;EAEpE,IAAMZ,QAAQ,GAAG3D,OAAO,CAACW,KAAK,CAACgD,QAAQ;EACvC,IAAMlF,OAAO,GAAGkF,QAAQ,CAAC7D,MAAM,GAAG6D,QAAQ,CAACA,QAAQ,CAAC7D,MAAM,GAAG,CAAC,CAAC,GAAGmD,SAAS;EAE3E,IAAMuB,wBAAwB,SAAM,CAAAd,WAAW,oBAAXA,WAAW,CAAE3E,EAAE,MAAIN,OAAO,oBAAPA,OAAO,CAAEM,EAAE,MAChE,CAAA2E,WAAW,oBAAXA,WAAW,CAAEV,UAAU,MAAIvE,OAAO,oBAAPA,OAAO,CAAEuE,UAAU,EAC9C;EAEF,IAAAyB,SAAA,GAAoC,IAAAC,eAAQ,EAAC,IAAI,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA3C/B,UAAU,GAAAiC,UAAA;IAAEE,aAAa,GAAAF,UAAA;EAChC,IAAAG,UAAA,GAAwD,IAAAJ,eAAQ,EAE9D;MACAxC,UAAU,EAAE,EAAE;MACd0B,aAAa,EAAEX,SAAS;MACxBY,QAAQ,EAAE,CACR;QACE1D,IAAI,EAAE,KAAK;QACXC,IAAI,EAAE;MACR,CAAC,CACF;MACD0D,MAAM,EAAEvB,iBAAiB,CAACK;IAC5B,CAAC,CAAC;IAAAmC,UAAA,OAAAH,eAAA,aAAAE,UAAA;IAZKE,oBAAoB,GAAAD,UAAA;IAAEE,uBAAuB,GAAAF,UAAA;EAcpD,IAAMG,UAAU,GAAGzC,0BAA0B,CAC3CzC,OAAO,EACPC,MAAM,EACNyD,WAAW,IAAIjF,OAAO,EACtBiE,UACF,CAAC;EAED,IAAAyC,gBAAS,EAAC,YAAM;IACd,IAAIb,mBAAmB,EAAE;MAAA,IAAAc,kBAAA;MACvB,IAAMC,WAAW,IAAAD,kBAAA,GAAGpF,OAAO,CAACuE,SAAS,CAAC,CAAC,qBAAnBa,kBAAA,CAAqBC,WAAW;MACpD,IAAI,OAAOA,WAAW,KAAK,SAAS,EAAE;QACpCR,aAAa,CAACQ,WAAW,CAAC;MAC5B;IACF;EACF,CAAC,EAAE,CAACf,mBAAmB,CAAC,CAAC;EAEzB,IAAAa,gBAAS,EACP;IAAA,OACEF,uBAAuB,CACrBzB,uBAAuB,CAAC;MACtBxD,OAAO,EAAPA,OAAO;MACPC,MAAM,EAANA,MAAM;MACNyD,WAAW,EAAXA,WAAW;MACXhB,UAAU,EAAVA,UAAU;MACV/D,CAAC,EAADA,CAAC;MACDqD,eAAe,EAAfA;IACF,CAAC,CACH,CAAC;EAAA,GACH,CAACwC,wBAAwB,EAAEP,WAAW,EAAEvB,UAAU,EAAEwC,UAAU,CAChE,CAAC;EAED,OAAOF,oBAAoB;AAC7B,CAAC;AAACxC,OAAA,CAAAwB,uBAAA,GAAAA,uBAAA"}
1
+ {"version":3,"names":["_react","require","_ChatContext","_TranslationContext","getMessageSenderName","message","currentUserId","t","membersLength","_message$user","user","id","_message$user2","_message$user3","_message$user4","name","username","getMentionUsers","mentionedUser","Array","isArray","mentionUserString","reduce","acc","cur","userName","length","replaceAll","getLatestMessageDisplayText","channel","client","_message$attachments","bold","text","isMessageTypeDeleted","type","userID","members","Object","keys","state","messageSender","messageSenderText","boldOwner","includes","shortenedText","substring","replace","mentionedUsers","mentioned_users","regEx","RegExp","concat","_toConsumableArray2","split","index","test","push","command","attachments","getLatestMessageDisplayDate","tDateTimeParser","parserOutput","created_at","isDayOrMoment","isSame","Date","format","MessageReadStatus","exports","getLatestMessageReadStatus","readEvents","_message$user5","NOT_SENT_BY_CURRENT_USER","readList","read","messageUpdatedAt","updated_at","undefined","values","some","_ref","last_read","READ","UNREAD","getLatestMessagePreview","params","lastMessage","messages","messageObject","previews","status","channelStateLastMessage","useLatestMessagePreview","forceUpdate","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","channelConfigExists","getConfig","channelLastMessageString","_useState","useState","_useState2","_slicedToArray2","setReadEvents","_useState3","_useState4","latestMessagePreview","setLatestMessagePreview","readStatus","useEffect","_channel$getConfig","read_events"],"sources":["useLatestMessagePreview.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, MessageResponse, StreamChat, UserResponse } from 'stream-chat';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport {\n isDayOrMoment,\n TDateTimeParser,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\ntype LatestMessage<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> =\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>;\n\nexport type LatestMessagePreview<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n created_at: string | number | Date;\n messageObject: LatestMessage<StreamChatGenerics> | undefined;\n previews: {\n bold: boolean;\n text: string;\n }[];\n status: number;\n};\n\nconst getMessageSenderName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: LatestMessage<StreamChatGenerics> | undefined,\n currentUserId: string | undefined,\n t: (key: string) => string,\n membersLength: number,\n) => {\n if (message?.user?.id === currentUserId) {\n return t('You');\n }\n\n if (membersLength > 2) {\n return message?.user?.name || message?.user?.username || message?.user?.id || '';\n }\n\n return '';\n};\n\nconst getMentionUsers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n mentionedUser: UserResponse<StreamChatGenerics>[] | undefined,\n) => {\n if (Array.isArray(mentionedUser)) {\n const mentionUserString = mentionedUser.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '');\n\n // escape special characters\n return mentionUserString.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n return '';\n};\n\nconst getLatestMessageDisplayText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n client: StreamChat<StreamChatGenerics>,\n message: LatestMessage<StreamChatGenerics> | undefined,\n t: (key: string) => string,\n) => {\n if (!message) return [{ bold: false, text: t('Nothing yet...') }];\n const isMessageTypeDeleted = message.type === 'deleted';\n if (isMessageTypeDeleted) return [{ bold: false, text: t('Message deleted') }];\n const currentUserId = client?.userID;\n const members = Object.keys(channel.state.members);\n\n const messageSender = getMessageSenderName(message, currentUserId, t, members.length);\n const messageSenderText = messageSender\n ? `${messageSender === t('You') ? '' : '@'}${messageSender}: `\n : '';\n const boldOwner = messageSenderText.includes('@');\n if (message.text) {\n // rough guess optimization to limit string preview to max 100 characters\n const shortenedText = message.text.substring(0, 100).replace(/\\n/g, ' ');\n const mentionedUsers = getMentionUsers(message.mentioned_users);\n const regEx = new RegExp(`^(${mentionedUsers})`);\n return [\n { bold: boldOwner, text: messageSenderText },\n ...shortenedText.split('').reduce(\n (acc, cur, index) => {\n if (cur === '@' && mentionedUsers && regEx.test(shortenedText.substring(index))) {\n acc.push({ bold: true, text: cur });\n } else if (mentionedUsers && regEx.test(acc[acc.length - 1].text)) {\n acc.push({ bold: false, text: cur });\n } else {\n acc[acc.length - 1].text += cur;\n }\n return acc;\n },\n [{ bold: false, text: '' }],\n ),\n ];\n }\n if (message.command) {\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: `/${message.command}` },\n ];\n }\n if (message.attachments?.length) {\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: t('🏙 Attachment...') },\n ];\n }\n return [\n { bold: boldOwner, text: messageSenderText },\n { bold: false, text: t('Empty message...') },\n ];\n};\n\nconst getLatestMessageDisplayDate = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: LatestMessage<StreamChatGenerics> | undefined,\n tDateTimeParser: TDateTimeParser,\n) => {\n const parserOutput = tDateTimeParser(message?.created_at);\n if (isDayOrMoment(parserOutput)) {\n if (parserOutput.isSame(new Date(), 'day')) {\n return parserOutput.format('LT');\n }\n return parserOutput.format('L');\n }\n return parserOutput;\n};\n\nexport enum MessageReadStatus {\n NOT_SENT_BY_CURRENT_USER = 0,\n UNREAD = 1,\n READ = 2,\n}\n\nconst getLatestMessageReadStatus = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n client: StreamChat<StreamChatGenerics>,\n message: LatestMessage<StreamChatGenerics> | undefined,\n readEvents: boolean,\n): MessageReadStatus => {\n const currentUserId = client.userID;\n if (!message || currentUserId !== message.user?.id || readEvents === false) {\n return MessageReadStatus.NOT_SENT_BY_CURRENT_USER;\n }\n\n const readList = channel.state.read;\n if (currentUserId) {\n delete readList[currentUserId];\n }\n\n const messageUpdatedAt = message.updated_at\n ? typeof message.updated_at === 'string'\n ? new Date(message.updated_at)\n : message.updated_at\n : undefined;\n\n return Object.values(readList).some(\n ({ last_read }) => messageUpdatedAt && messageUpdatedAt < last_read,\n )\n ? MessageReadStatus.READ\n : MessageReadStatus.UNREAD;\n};\n\nconst getLatestMessagePreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(params: {\n channel: Channel<StreamChatGenerics>;\n client: StreamChat<StreamChatGenerics>;\n readEvents: boolean;\n t: (key: string) => string;\n tDateTimeParser: TDateTimeParser;\n lastMessage?:\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>;\n}) => {\n const { channel, client, lastMessage, readEvents, t, tDateTimeParser } = params;\n\n const messages = channel.state.messages;\n\n if (!messages.length && !lastMessage) {\n return {\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: t('Nothing yet...'),\n },\n ],\n status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,\n };\n }\n\n const channelStateLastMessage = messages.length ? messages[messages.length - 1] : undefined;\n\n const message = lastMessage !== undefined ? lastMessage : channelStateLastMessage;\n\n return {\n created_at: getLatestMessageDisplayDate(message, tDateTimeParser),\n messageObject: message,\n previews: getLatestMessageDisplayText(channel, client, message, t),\n status: getLatestMessageReadStatus(channel, client, message, readEvents),\n };\n};\n\n/**\n * Hook to set the display preview for latest message on channel.\n *\n * @param {*} channel Channel object\n *\n * @returns {object} latest message preview e.g.. { text: 'this was last message ...', created_at: '11/12/2020', messageObject: { originalMessageObject } }\n */\nexport const useLatestMessagePreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel: Channel<StreamChatGenerics>,\n forceUpdate: number,\n lastMessage?:\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n const channelConfigExists = typeof channel?.getConfig === 'function';\n\n const messages = channel.state.messages;\n const message = messages.length ? messages[messages.length - 1] : undefined;\n\n const channelLastMessageString = `${lastMessage?.id || message?.id}${\n lastMessage?.updated_at || message?.updated_at\n }`;\n\n const [readEvents, setReadEvents] = useState(true);\n const [latestMessagePreview, setLatestMessagePreview] = useState<\n LatestMessagePreview<StreamChatGenerics>\n >({\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: '',\n },\n ],\n status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,\n });\n\n const readStatus = getLatestMessageReadStatus(\n channel,\n client,\n lastMessage || message,\n readEvents,\n );\n\n useEffect(() => {\n if (channelConfigExists) {\n const read_events = channel.getConfig()?.read_events;\n if (typeof read_events === 'boolean') {\n setReadEvents(read_events);\n }\n }\n }, [channelConfigExists]);\n\n useEffect(\n () =>\n setLatestMessagePreview(\n getLatestMessagePreview({\n channel,\n client,\n lastMessage,\n readEvents,\n t,\n tDateTimeParser,\n }),\n ),\n [channelLastMessageString, forceUpdate, readEvents, readStatus],\n );\n\n return latestMessagePreview;\n};\n"],"mappings":"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"}
@@ -171,7 +171,7 @@ var renderText = function renderText(params) {
171
171
  if (userName) {
172
172
  acc += (acc.length ? '|' : '') + "@" + userName;
173
173
  }
174
- return acc;
174
+ return acc.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&');
175
175
  }, '') : '';
176
176
  var regEx = new RegExp("^\\B(" + mentionedUsers + ")", 'g');
177
177
  var match = function match(source) {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeMarkdownPackage","_truncate","_simpleMarkdown","_parseLinks","_this","_jsxFileName","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","parseInline","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","linkInfos","parseLinksFromText","_iterator","_step","linkInfo","displayLink","truncate","raw","omission","markdown","encodedUrl","replace","styles","_extends2","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","pattern","RegExp","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","_ref","_objectDestructuringEmpty2","target","event","additionalInfo","defaultHandler","emitter","createElement","Text","key","style","suppressHighlighting","__self","__source","fileName","lineNumber","columnNumber","withinLink","paragraphText","_ref2","numberOfLines","mentionedUsers","reduce","acc","cur","userName","id","regEx","match","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","ListOutput","customRules","image","react","reflink","sublist","order","defaultRules","JSON","stringify","undefined","rules","exports","_ref4","isSublist","withinList","parentTypes","View","items","map","item","index","_item$","indexAfterStart","start","ListRow","testID","Bullet","ordered","listItemBullet","type","isSublistWithinText","includes","ListItem","_ref5","_ref6","children","_ref7"],"sources":["renderText.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport truncate from 'lodash/truncate';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const linkInfos = parseLinksFromText(newText);\n\n for (const linkInfo of linkInfos) {\n const displayLink = truncate(linkInfo.raw, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;\n newText = newText.replace(linkInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) => {\n const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <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)\n ? node.content.reduce((acc, current) => acc + current.content, '') || ''\n : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n // do not render images, we will scrape them out of the message and show on attachment card component\n image: { match: () => null },\n link: { react: link },\n list: { react: list },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: list },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={style}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = ({ children, style }: PropsWithChildren<ViewProps>) => (\n <Text style={style}>{children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeMarkdownPackage","_truncate","_simpleMarkdown","_parseLinks","_this","_jsxFileName","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","parseInline","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","linkInfos","parseLinksFromText","_iterator","_step","linkInfo","displayLink","truncate","raw","omission","markdown","encodedUrl","replace","styles","_extends2","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","pattern","RegExp","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","_ref","_objectDestructuringEmpty2","target","event","additionalInfo","defaultHandler","emitter","createElement","Text","key","style","suppressHighlighting","__self","__source","fileName","lineNumber","columnNumber","withinLink","paragraphText","_ref2","numberOfLines","mentionedUsers","reduce","acc","cur","userName","id","replaceAll","regEx","match","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","ListOutput","customRules","image","react","reflink","sublist","order","defaultRules","JSON","stringify","undefined","rules","exports","_ref4","isSublist","withinList","parentTypes","View","items","map","item","index","_item$","indexAfterStart","start","ListRow","testID","Bullet","ordered","listItemBullet","type","isSublistWithinText","includes","ListItem","_ref5","_ref6","children","_ref7"],"sources":["renderText.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport truncate from 'lodash/truncate';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const linkInfos = parseLinksFromText(newText);\n\n for (const linkInfo of linkInfos) {\n const displayLink = truncate(linkInfo.raw, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;\n newText = newText.replace(linkInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) => {\n const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <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.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content)\n ? node.content.reduce((acc, current) => acc + current.content, '') || ''\n : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n // do not render images, we will scrape them out of the message and show on attachment card component\n image: { match: () => null },\n link: { react: link },\n list: { react: list },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: list },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={style}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = ({ children, style }: PropsWithChildren<ViewProps>) => (\n <Text style={style}>{children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"],"mappings":"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"}