stream-chat-react-native-core 4.0.0-beta.4 → 4.0.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.
- package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +28 -11
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +46 -46
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +11 -10
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +28 -11
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/ReactionList.js +46 -46
- package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.js +11 -10
- package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Avatar/Avatar.d.ts +1 -1
- package/lib/typescript/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/Avatar/Avatar.tsx +1 -1
- package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +23 -9
- package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +31 -0
- package/src/components/Message/MessageSimple/ReactionList.tsx +31 -31
- package/src/components/Message/MessageSimple/utils/renderText.tsx +7 -1
- package/src/version.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["renderText.tsx"],"names":["defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","length","omission","markdown","scheme","replace","raw","styles","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","event","defaultHandler","target","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","RegExp","match","source","exec","mentionsReact","customRules","react","reflink","sublist","order","defaultRules","JSON","stringify","undefined","ListOutput","isSublist","withinList","parentTypes","items","map","item","index","indexAfterStart","start","ordered","type","isSublistWithinText","includes","style","Bullet","ListRow","props","children","ListItem"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport truncate from 'lodash/truncate';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n params: RenderTextParams<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const urls = parseLinksFromText(newText);\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.scheme}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) =>\n onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n defaultHandler: () => onLink(node.target),\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput node={node} output={output} state={state} styles={styles} />\n );\n\n const customRules = {\n link: { link },\n list: { react: list },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphText } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: list },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet index={node.ordered && indexAfterStart} />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet index={node.ordered && indexAfterStart} />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={[style, defaultMarkdownStyles.listItemNumber]}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = (props: PropsWithChildren<ViewProps>) => (\n <Text style={[props.style, defaultMarkdownStyles.listRow]}>{props.children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["renderText.tsx"],"names":["defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","urls","urlInfo","displayLink","encoded","length","omission","markdown","scheme","replace","raw","styles","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","Linking","canOpenURL","then","canOpenUrl","openURL","link","node","output","event","defaultHandler","target","emitter","key","withinLink","paragraphText","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","regEx","RegExp","match","source","exec","mentionsReact","customRules","react","reflink","sublist","order","defaultRules","JSON","stringify","undefined","ListOutput","isSublist","withinList","parentTypes","items","map","item","index","indexAfterStart","start","ordered","type","isSublistWithinText","includes","style","Bullet","ListRow","props","children","ListItem"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport truncate from 'lodash/truncate';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n params: RenderTextParams<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const urls = parseLinksFromText(newText);\n\n for (const urlInfo of urls) {\n const displayLink = truncate(urlInfo.encoded, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${urlInfo.scheme}${urlInfo.encoded})`;\n newText = newText.replace(urlInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) =>\n onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n\n const link: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n defaultHandler: () => onLink(node.target),\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphText: ReactNodeOutput = (node, output, { ...state }) => (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content) ? node.content[0].content || '' : output(node.content, state)}\n </Text>\n );\n };\n\n const list: ReactNodeOutput = (node, output, state) => (\n <ListOutput\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Avatar.tsx"],"names":["randomImageBaseUrl","randomSvgBaseUrl","streamCDN","styles","StyleSheet","create","container","alignItems","justifyContent","overflow","presenceIndicatorContainer","height","position","right","top","width","getInitials","fullName","split","slice","map","name","charAt","join","Avatar","props","containerStyle","imageProp","image","imageStyle","online","presenceIndicatorProp","presenceIndicator","presenceIndicatorContainerStyle","size","testID","theme","avatar","colors","accent_green","white","imageError","setImageError","borderRadius","uri","includes","url","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { Image, ImageStyle, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport Svg, { Circle, CircleProps } from 'react-native-svg';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\n\nconst randomImageBaseUrl = 'https://getstream.io/random_png/';\nconst randomSvgBaseUrl = 'https://getstream.io/random_svg/';\nconst streamCDN = 'stream-io-cdn.com';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n presenceIndicatorContainer: {\n height: 12,\n position: 'absolute',\n right: 0,\n top: 0,\n width: 12,\n },\n});\n\nconst getInitials = (fullName: string) =>\n fullName\n .split(' ')\n .slice(0, 2)\n .map((name) => name.charAt(0))\n .join(' ');\n\nexport type AvatarProps = {\n /** size in pixels */\n size: number;\n containerStyle?: StyleProp<ViewStyle>;\n /** image url */\n image?: string;\n /** name of the picture, used for fallback */\n imageStyle?: StyleProp<ImageStyle>;\n name?: string;\n online?: boolean;\n presenceIndicator?: CircleProps;\n presenceIndicatorContainerStyle?: StyleProp<ViewStyle>;\n testID?: string;\n};\n\n/**\n * Avatar - A round avatar image with fallback to user's initials
|
|
1
|
+
{"version":3,"sources":["Avatar.tsx"],"names":["randomImageBaseUrl","randomSvgBaseUrl","streamCDN","styles","StyleSheet","create","container","alignItems","justifyContent","overflow","presenceIndicatorContainer","height","position","right","top","width","getInitials","fullName","split","slice","map","name","charAt","join","Avatar","props","containerStyle","imageProp","image","imageStyle","online","presenceIndicatorProp","presenceIndicator","presenceIndicatorContainerStyle","size","testID","theme","avatar","colors","accent_green","white","imageError","setImageError","borderRadius","uri","includes","url","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { Image, ImageStyle, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport Svg, { Circle, CircleProps } from 'react-native-svg';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\n\nconst randomImageBaseUrl = 'https://getstream.io/random_png/';\nconst randomSvgBaseUrl = 'https://getstream.io/random_svg/';\nconst streamCDN = 'stream-io-cdn.com';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n presenceIndicatorContainer: {\n height: 12,\n position: 'absolute',\n right: 0,\n top: 0,\n width: 12,\n },\n});\n\nconst getInitials = (fullName: string) =>\n fullName\n .split(' ')\n .slice(0, 2)\n .map((name) => name.charAt(0))\n .join(' ');\n\nexport type AvatarProps = {\n /** size in pixels */\n size: number;\n containerStyle?: StyleProp<ViewStyle>;\n /** image url */\n image?: string;\n /** name of the picture, used for fallback */\n imageStyle?: StyleProp<ImageStyle>;\n name?: string;\n online?: boolean;\n presenceIndicator?: CircleProps;\n presenceIndicatorContainerStyle?: StyleProp<ViewStyle>;\n testID?: string;\n};\n\n/**\n * Avatar - A round avatar image with fallback to user's initials.\n */\nexport const Avatar: React.FC<AvatarProps> = (props) => {\n const {\n containerStyle,\n image: imageProp,\n imageStyle,\n name,\n online,\n presenceIndicator: presenceIndicatorProp,\n presenceIndicatorContainerStyle,\n size,\n testID,\n } = props;\n const {\n theme: {\n avatar: { container, image, presenceIndicator, presenceIndicatorContainer },\n colors: { accent_green, white },\n },\n } = useTheme();\n\n const [imageError, setImageError] = useState(false);\n\n return (\n <View>\n <View\n style={[\n styles.container,\n {\n borderRadius: size / 2,\n height: size,\n width: size,\n },\n container,\n containerStyle,\n ]}\n >\n <Image\n accessibilityLabel={testID || 'avatar-image'}\n onError={() => setImageError(true)}\n source={{\n uri:\n imageError ||\n !imageProp ||\n imageProp.includes(randomImageBaseUrl) ||\n imageProp.includes(randomSvgBaseUrl)\n ? imageProp?.includes(streamCDN)\n ? imageProp\n : `${randomImageBaseUrl}${name ? `?name=${getInitials(name)}&size=${size}` : ''}`\n : getResizedImageUrl({\n height: size,\n url: imageProp,\n width: size,\n }),\n }}\n style={[\n image,\n size\n ? {\n borderRadius: size / 2,\n height: size,\n width: size,\n }\n : {},\n imageStyle,\n ]}\n testID={testID || 'avatar-image'}\n />\n </View>\n {online && (\n <View\n style={[\n styles.presenceIndicatorContainer,\n presenceIndicatorContainer,\n presenceIndicatorContainerStyle,\n ]}\n >\n <Svg>\n <Circle\n fill={accent_green}\n stroke={white}\n {...presenceIndicator}\n {...presenceIndicatorProp}\n />\n </Svg>\n </View>\n )}\n </View>\n );\n};\n\nAvatar.displayName = 'Avatar{avatar}';\n"]}
|
|
@@ -102,7 +102,24 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
102
102
|
translucentStatusBar = _useOverlayContext.translucentStatusBar;
|
|
103
103
|
|
|
104
104
|
var parsedDate = photo ? tDateTimeParser(photo == null ? void 0 : photo.created_at) : null;
|
|
105
|
-
|
|
105
|
+
|
|
106
|
+
var getDateObject = function getDateObject(date) {
|
|
107
|
+
if (date === null || !(0, _TranslationContext.isDayOrMoment)(date)) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (date.calendar) {
|
|
112
|
+
return date.calendar();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (date.fromNow) {
|
|
116
|
+
return date.fromNow();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return null;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
var date = getDateObject(parsedDate);
|
|
106
123
|
var headerStyle = (0, _reactNativeReanimated.useAnimatedStyle)(function () {
|
|
107
124
|
return {
|
|
108
125
|
opacity: opacity.value,
|
|
@@ -127,7 +144,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
127
144
|
__self: _this,
|
|
128
145
|
__source: {
|
|
129
146
|
fileName: _jsxFileName,
|
|
130
|
-
lineNumber:
|
|
147
|
+
lineNumber: 151,
|
|
131
148
|
columnNumber: 5
|
|
132
149
|
}
|
|
133
150
|
}, _react["default"].createElement(ReanimatedSafeAreaView, {
|
|
@@ -137,7 +154,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
137
154
|
__self: _this,
|
|
138
155
|
__source: {
|
|
139
156
|
fileName: _jsxFileName,
|
|
140
|
-
lineNumber:
|
|
157
|
+
lineNumber: 155,
|
|
141
158
|
columnNumber: 7
|
|
142
159
|
}
|
|
143
160
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -145,7 +162,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
145
162
|
__self: _this,
|
|
146
163
|
__source: {
|
|
147
164
|
fileName: _jsxFileName,
|
|
148
|
-
lineNumber:
|
|
165
|
+
lineNumber: 158,
|
|
149
166
|
columnNumber: 9
|
|
150
167
|
}
|
|
151
168
|
}, leftElement ? leftElement({
|
|
@@ -156,7 +173,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
156
173
|
__self: _this,
|
|
157
174
|
__source: {
|
|
158
175
|
fileName: _jsxFileName,
|
|
159
|
-
lineNumber:
|
|
176
|
+
lineNumber: 162,
|
|
160
177
|
columnNumber: 13
|
|
161
178
|
}
|
|
162
179
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -164,14 +181,14 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
164
181
|
__self: _this,
|
|
165
182
|
__source: {
|
|
166
183
|
fileName: _jsxFileName,
|
|
167
|
-
lineNumber:
|
|
184
|
+
lineNumber: 163,
|
|
168
185
|
columnNumber: 15
|
|
169
186
|
}
|
|
170
187
|
}, CloseIcon ? CloseIcon : _react["default"].createElement(_icons.Close, {
|
|
171
188
|
__self: _this,
|
|
172
189
|
__source: {
|
|
173
190
|
fileName: _jsxFileName,
|
|
174
|
-
lineNumber:
|
|
191
|
+
lineNumber: 164,
|
|
175
192
|
columnNumber: 42
|
|
176
193
|
}
|
|
177
194
|
}))), centerElement ? centerElement({
|
|
@@ -182,7 +199,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
182
199
|
__self: _this,
|
|
183
200
|
__source: {
|
|
184
201
|
fileName: _jsxFileName,
|
|
185
|
-
lineNumber:
|
|
202
|
+
lineNumber: 171,
|
|
186
203
|
columnNumber: 13
|
|
187
204
|
}
|
|
188
205
|
}, _react["default"].createElement(_reactNative.Text, {
|
|
@@ -192,7 +209,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
192
209
|
__self: _this,
|
|
193
210
|
__source: {
|
|
194
211
|
fileName: _jsxFileName,
|
|
195
|
-
lineNumber:
|
|
212
|
+
lineNumber: 172,
|
|
196
213
|
columnNumber: 15
|
|
197
214
|
}
|
|
198
215
|
}, (photo == null ? void 0 : (_photo$user = photo.user) == null ? void 0 : _photo$user.name) || t('Unknown User')), date && _react["default"].createElement(_reactNative.Text, {
|
|
@@ -202,7 +219,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
202
219
|
__self: _this,
|
|
203
220
|
__source: {
|
|
204
221
|
fileName: _jsxFileName,
|
|
205
|
-
lineNumber:
|
|
222
|
+
lineNumber: 175,
|
|
206
223
|
columnNumber: 24
|
|
207
224
|
}
|
|
208
225
|
}, date)), rightElement ? rightElement({
|
|
@@ -213,7 +230,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
|
|
|
213
230
|
__self: _this,
|
|
214
231
|
__source: {
|
|
215
232
|
fileName: _jsxFileName,
|
|
216
|
-
lineNumber:
|
|
233
|
+
lineNumber: 181,
|
|
217
234
|
columnNumber: 13
|
|
218
235
|
}
|
|
219
236
|
}))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImageGalleryHeader.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","date","fontSize","fontWeight","marginTop","opacity","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","width","userName","ImageGalleryHeader","props","centerElement","CloseIcon","leftElement","photo","rightElement","visible","setHeight","theme","colors","black","white","imageGallery","header","container","dateText","usernameText","t","tDateTimeParser","setOverlay","translucentStatusBar","parsedDate","created_at","calendar","fromNow","headerStyle","value","transform","translateY","Extrapolate","CLAMP","androidTranslucentHeaderStyle","paddingTop","Platform","OS","StatusBar","currentHeight","undefined","hideOverlay","event","nativeEvent","layout","backgroundColor","color","user","name","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n Platform,\n SafeAreaView,\n StatusBar,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { useOverlayContext } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../../icons';\n\nimport type { DefaultUserType, UnknownType } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n date: {\n fontSize: 12,\n fontWeight: '500',\n marginTop: 4,\n opacity: 0.5,\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n marginRight: 8,\n width: 24, // Width of icon currently on left\n },\n userName: {\n fontSize: 16,\n fontWeight: '700',\n },\n});\n\nexport type ImageGalleryHeaderCustomComponent<Us extends UnknownType = DefaultUserType> = ({\n hideOverlay,\n photo,\n}: {\n hideOverlay: () => void;\n photo?: Photo<Us>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryHeaderCustomComponentProps<Us extends UnknownType = DefaultUserType> = {\n centerElement?: ImageGalleryHeaderCustomComponent<Us>;\n CloseIcon?: React.ReactElement;\n leftElement?: ImageGalleryHeaderCustomComponent<Us>;\n rightElement?: ImageGalleryHeaderCustomComponent<Us>;\n};\n\ntype Props<Us extends UnknownType = DefaultUserType> =\n ImageGalleryHeaderCustomComponentProps<Us> & {\n opacity: Animated.SharedValue<number>;\n visible: Animated.SharedValue<number>;\n photo?: Photo<Us>;\n };\n\nexport const ImageGalleryHeader = <Us extends UnknownType = DefaultUserType>(props: Props<Us>) => {\n const { centerElement, CloseIcon, leftElement, opacity, photo, rightElement, visible } = props;\n const [height, setHeight] = useState(200);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n header: {\n centerContainer,\n container,\n dateText,\n innerContainer,\n leftContainer,\n rightContainer,\n usernameText,\n },\n },\n },\n } = useTheme();\n const { t, tDateTimeParser } = useTranslationContext();\n const { setOverlay, translucentStatusBar } = useOverlayContext();\n\n const parsedDate = photo ? tDateTimeParser(photo?.created_at) : null;\n\n /**\n * .calendar is required on moment types, but in reality it\n * is unavailable on first render. We therefore check if it\n * is available and call it, otherwise we call .fromNow.\n */\n const date =\n parsedDate && isDayOrMoment(parsedDate)\n ? parsedDate.calendar\n ? parsedDate.calendar()\n : parsedDate.fromNow()\n : null;\n\n const headerStyle = useAnimatedStyle<ViewStyle>(() => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [-height, 0], Extrapolate.CLAMP),\n },\n ],\n }));\n\n const androidTranslucentHeaderStyle = {\n paddingTop:\n Platform.OS === 'android' && translucentStatusBar ? StatusBar.currentHeight : undefined,\n };\n\n const hideOverlay = () => {\n setOverlay('none');\n };\n\n return (\n <View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n >\n <ReanimatedSafeAreaView\n style={[{ backgroundColor: white }, androidTranslucentHeaderStyle, container, headerStyle]}\n >\n <View style={[styles.innerContainer, innerContainer]}>\n {leftElement ? (\n leftElement({ hideOverlay, photo })\n ) : (\n <TouchableOpacity onPress={hideOverlay}>\n <View style={[styles.leftContainer, leftContainer]}>\n {CloseIcon ? CloseIcon : <Close />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.userName, { color: black }, usernameText]}>\n {photo?.user?.name || t('Unknown User')}\n </Text>\n {date && <Text style={[styles.date, { color: black }, dateText]}>{date}</Text>}\n </View>\n )}\n {rightElement ? (\n rightElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.rightContainer, rightContainer]} />\n )}\n </View>\n </ReanimatedSafeAreaView>\n </View>\n );\n};\n\nImageGalleryHeader.displayName = 'ImageGalleryHeader{imageGallery{header}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["ImageGalleryHeader.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","date","fontSize","fontWeight","marginTop","opacity","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","width","userName","ImageGalleryHeader","props","centerElement","CloseIcon","leftElement","photo","rightElement","visible","setHeight","theme","colors","black","white","imageGallery","header","container","dateText","usernameText","t","tDateTimeParser","setOverlay","translucentStatusBar","parsedDate","created_at","getDateObject","calendar","fromNow","headerStyle","value","transform","translateY","Extrapolate","CLAMP","androidTranslucentHeaderStyle","paddingTop","Platform","OS","StatusBar","currentHeight","undefined","hideOverlay","event","nativeEvent","layout","backgroundColor","color","user","name","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n Platform,\n SafeAreaView,\n StatusBar,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { useOverlayContext } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserOutput,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../../icons';\n\nimport type { DefaultUserType, UnknownType } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n date: {\n fontSize: 12,\n fontWeight: '500',\n marginTop: 4,\n opacity: 0.5,\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n marginRight: 8,\n width: 24, // Width of icon currently on left\n },\n userName: {\n fontSize: 16,\n fontWeight: '700',\n },\n});\n\nexport type ImageGalleryHeaderCustomComponent<Us extends UnknownType = DefaultUserType> = ({\n hideOverlay,\n photo,\n}: {\n hideOverlay: () => void;\n photo?: Photo<Us>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryHeaderCustomComponentProps<Us extends UnknownType = DefaultUserType> = {\n centerElement?: ImageGalleryHeaderCustomComponent<Us>;\n CloseIcon?: React.ReactElement;\n leftElement?: ImageGalleryHeaderCustomComponent<Us>;\n rightElement?: ImageGalleryHeaderCustomComponent<Us>;\n};\n\ntype Props<Us extends UnknownType = DefaultUserType> =\n ImageGalleryHeaderCustomComponentProps<Us> & {\n opacity: Animated.SharedValue<number>;\n visible: Animated.SharedValue<number>;\n photo?: Photo<Us>;\n };\n\nexport const ImageGalleryHeader = <Us extends UnknownType = DefaultUserType>(props: Props<Us>) => {\n const { centerElement, CloseIcon, leftElement, opacity, photo, rightElement, visible } = props;\n const [height, setHeight] = useState(200);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n header: {\n centerContainer,\n container,\n dateText,\n innerContainer,\n leftContainer,\n rightContainer,\n usernameText,\n },\n },\n },\n } = useTheme();\n const { t, tDateTimeParser } = useTranslationContext();\n const { setOverlay, translucentStatusBar } = useOverlayContext();\n\n const parsedDate = photo ? tDateTimeParser(photo?.created_at) : null;\n\n /**\n * .calendar and .fromNow can be initialized after the first render,\n * and attempting to access them at that time will cause an error\n * to be thrown.\n *\n * This falls back to null if neither exist.\n */\n const getDateObject = (date: TDateTimeParserOutput | null) => {\n if (date === null || !isDayOrMoment(date)) {\n return null;\n }\n\n if (date.calendar) {\n return date.calendar();\n }\n\n if (date.fromNow) {\n return date.fromNow();\n }\n\n return null;\n };\n\n const date = getDateObject(parsedDate);\n\n const headerStyle = useAnimatedStyle<ViewStyle>(() => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [-height, 0], Extrapolate.CLAMP),\n },\n ],\n }));\n\n const androidTranslucentHeaderStyle = {\n paddingTop:\n Platform.OS === 'android' && translucentStatusBar ? StatusBar.currentHeight : undefined,\n };\n\n const hideOverlay = () => {\n setOverlay('none');\n };\n\n return (\n <View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n >\n <ReanimatedSafeAreaView\n style={[{ backgroundColor: white }, androidTranslucentHeaderStyle, container, headerStyle]}\n >\n <View style={[styles.innerContainer, innerContainer]}>\n {leftElement ? (\n leftElement({ hideOverlay, photo })\n ) : (\n <TouchableOpacity onPress={hideOverlay}>\n <View style={[styles.leftContainer, leftContainer]}>\n {CloseIcon ? CloseIcon : <Close />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.userName, { color: black }, usernameText]}>\n {photo?.user?.name || t('Unknown User')}\n </Text>\n {date && <Text style={[styles.date, { color: black }, dateText]}>{date}</Text>}\n </View>\n )}\n {rightElement ? (\n rightElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.rightContainer, rightContainer]} />\n )}\n </View>\n </ReanimatedSafeAreaView>\n </View>\n );\n};\n\nImageGalleryHeader.displayName = 'ImageGalleryHeader{imageGallery{header}}';\n"]}
|
|
@@ -147,38 +147,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
147
147
|
var insideLeftBound = x2 - reactionSize * reactions.length / 2 > screenPadding;
|
|
148
148
|
var insideRightBound = x2 + strokeSize + reactionSize * reactions.length / 2 < width - screenPadding * 2;
|
|
149
149
|
var left = reactions.length === 1 ? x1 + (alignmentLeft ? -radius : radius - reactionSize) : !insideLeftBound ? screenPadding : !insideRightBound ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize : x2 - reactionSize * reactions.length / 2 - strokeSize;
|
|
150
|
-
return _react["default"].createElement(_reactNative.
|
|
151
|
-
disabled: preventPress,
|
|
152
|
-
onLongPress: function onLongPress(event) {
|
|
153
|
-
if (_onLongPress) {
|
|
154
|
-
_onLongPress({
|
|
155
|
-
emitter: 'reactionList',
|
|
156
|
-
event: event
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
},
|
|
160
|
-
onPress: function onPress(event) {
|
|
161
|
-
if (_onPress) {
|
|
162
|
-
_onPress({
|
|
163
|
-
defaultHandler: function defaultHandler() {
|
|
164
|
-
return showMessageOverlay(true);
|
|
165
|
-
},
|
|
166
|
-
emitter: 'reactionList',
|
|
167
|
-
event: event
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
onPressIn: function onPressIn(event) {
|
|
172
|
-
if (_onPressIn) {
|
|
173
|
-
_onPressIn({
|
|
174
|
-
defaultHandler: function defaultHandler() {
|
|
175
|
-
return showMessageOverlay(true);
|
|
176
|
-
},
|
|
177
|
-
emitter: 'reactionList',
|
|
178
|
-
event: event
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
},
|
|
150
|
+
return _react["default"].createElement(_reactNative.View, {
|
|
182
151
|
style: [styles.container, {
|
|
183
152
|
height: reactionSize + radius * 5,
|
|
184
153
|
width: width
|
|
@@ -195,14 +164,14 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
195
164
|
__self: _this,
|
|
196
165
|
__source: {
|
|
197
166
|
fileName: _jsxFileName,
|
|
198
|
-
lineNumber:
|
|
167
|
+
lineNumber: 213,
|
|
199
168
|
columnNumber: 9
|
|
200
169
|
}
|
|
201
170
|
}, _react["default"].createElement(_reactNativeSvg["default"], {
|
|
202
171
|
__self: _this,
|
|
203
172
|
__source: {
|
|
204
173
|
fileName: _jsxFileName,
|
|
205
|
-
lineNumber:
|
|
174
|
+
lineNumber: 214,
|
|
206
175
|
columnNumber: 11
|
|
207
176
|
}
|
|
208
177
|
}, _react["default"].createElement(_reactNativeSvg.Circle, {
|
|
@@ -213,7 +182,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
213
182
|
__self: _this,
|
|
214
183
|
__source: {
|
|
215
184
|
fileName: _jsxFileName,
|
|
216
|
-
lineNumber:
|
|
185
|
+
lineNumber: 215,
|
|
217
186
|
columnNumber: 13
|
|
218
187
|
}
|
|
219
188
|
}), _react["default"].createElement(_reactNativeSvg.Circle, {
|
|
@@ -224,7 +193,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
224
193
|
__self: _this,
|
|
225
194
|
__source: {
|
|
226
195
|
fileName: _jsxFileName,
|
|
227
|
-
lineNumber:
|
|
196
|
+
lineNumber: 216,
|
|
228
197
|
columnNumber: 13
|
|
229
198
|
}
|
|
230
199
|
}), _react["default"].createElement(_reactNativeSvg.Circle, {
|
|
@@ -235,7 +204,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
235
204
|
__self: _this,
|
|
236
205
|
__source: {
|
|
237
206
|
fileName: _jsxFileName,
|
|
238
|
-
lineNumber:
|
|
207
|
+
lineNumber: 217,
|
|
239
208
|
columnNumber: 13
|
|
240
209
|
}
|
|
241
210
|
}), _react["default"].createElement(_reactNativeSvg.Circle, {
|
|
@@ -246,7 +215,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
246
215
|
__self: _this,
|
|
247
216
|
__source: {
|
|
248
217
|
fileName: _jsxFileName,
|
|
249
|
-
lineNumber:
|
|
218
|
+
lineNumber: 218,
|
|
250
219
|
columnNumber: 13
|
|
251
220
|
}
|
|
252
221
|
}), _react["default"].createElement(_reactNativeSvg.Circle, {
|
|
@@ -257,7 +226,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
257
226
|
__self: _this,
|
|
258
227
|
__source: {
|
|
259
228
|
fileName: _jsxFileName,
|
|
260
|
-
lineNumber:
|
|
229
|
+
lineNumber: 219,
|
|
261
230
|
columnNumber: 13
|
|
262
231
|
}
|
|
263
232
|
}), _react["default"].createElement(_reactNativeSvg.Circle, {
|
|
@@ -268,7 +237,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
268
237
|
__self: _this,
|
|
269
238
|
__source: {
|
|
270
239
|
fileName: _jsxFileName,
|
|
271
|
-
lineNumber:
|
|
240
|
+
lineNumber: 220,
|
|
272
241
|
columnNumber: 13
|
|
273
242
|
}
|
|
274
243
|
})), _react["default"].createElement(_reactNative.View, {
|
|
@@ -284,7 +253,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
284
253
|
__self: _this,
|
|
285
254
|
__source: {
|
|
286
255
|
fileName: _jsxFileName,
|
|
287
|
-
lineNumber:
|
|
256
|
+
lineNumber: 222,
|
|
288
257
|
columnNumber: 11
|
|
289
258
|
}
|
|
290
259
|
}), _react["default"].createElement(_reactNative.View, {
|
|
@@ -292,14 +261,14 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
292
261
|
__self: _this,
|
|
293
262
|
__source: {
|
|
294
263
|
fileName: _jsxFileName,
|
|
295
|
-
lineNumber:
|
|
264
|
+
lineNumber: 237,
|
|
296
265
|
columnNumber: 11
|
|
297
266
|
}
|
|
298
267
|
}, _react["default"].createElement(_reactNativeSvg["default"], {
|
|
299
268
|
__self: _this,
|
|
300
269
|
__source: {
|
|
301
270
|
fileName: _jsxFileName,
|
|
302
|
-
lineNumber:
|
|
271
|
+
lineNumber: 238,
|
|
303
272
|
columnNumber: 13
|
|
304
273
|
}
|
|
305
274
|
}, _react["default"].createElement(_reactNativeSvg.Circle, {
|
|
@@ -310,10 +279,41 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
310
279
|
__self: _this,
|
|
311
280
|
__source: {
|
|
312
281
|
fileName: _jsxFileName,
|
|
313
|
-
lineNumber:
|
|
282
|
+
lineNumber: 239,
|
|
314
283
|
columnNumber: 15
|
|
315
284
|
}
|
|
316
|
-
}))), _react["default"].createElement(_reactNative.
|
|
285
|
+
}))), _react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
286
|
+
disabled: preventPress,
|
|
287
|
+
onLongPress: function onLongPress(event) {
|
|
288
|
+
if (_onLongPress) {
|
|
289
|
+
_onLongPress({
|
|
290
|
+
emitter: 'reactionList',
|
|
291
|
+
event: event
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
onPress: function onPress(event) {
|
|
296
|
+
if (_onPress) {
|
|
297
|
+
_onPress({
|
|
298
|
+
defaultHandler: function defaultHandler() {
|
|
299
|
+
return showMessageOverlay(true);
|
|
300
|
+
},
|
|
301
|
+
emitter: 'reactionList',
|
|
302
|
+
event: event
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
onPressIn: function onPressIn(event) {
|
|
307
|
+
if (_onPressIn) {
|
|
308
|
+
_onPressIn({
|
|
309
|
+
defaultHandler: function defaultHandler() {
|
|
310
|
+
return showMessageOverlay(true);
|
|
311
|
+
},
|
|
312
|
+
emitter: 'reactionList',
|
|
313
|
+
event: event
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
317
|
style: [styles.reactionBubble, {
|
|
318
318
|
backgroundColor: alignmentLeft ? fill : white,
|
|
319
319
|
borderRadius: reactionSize - strokeSize * 2,
|
|
@@ -325,7 +325,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
325
325
|
__self: _this,
|
|
326
326
|
__source: {
|
|
327
327
|
fileName: _jsxFileName,
|
|
328
|
-
lineNumber:
|
|
328
|
+
lineNumber: 242,
|
|
329
329
|
columnNumber: 11
|
|
330
330
|
}
|
|
331
331
|
}, reactions.map(function (reaction) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ReactionList.tsx"],"names":["styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","theme","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","messageSimple","avatarWrapper","leftAlign","spacer","reactionList","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","width","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","event","emitter","defaultHandler","height","absoluteFill","backgroundColor","borderColor","borderRadius","borderWidth","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevReactions","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextReactions","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","reactionsEqual","every","latestReaction","index","MemoizedReactionList","React","memo","ReactionList"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || alignmentLeft ? grey_gainsboro : grey_whisper;\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <View\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </View>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n reactions: prevReactions,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n reactions: nextReactions,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) return false;\n\n const reactionsEqual =\n prevReactions.length === nextReactions.length &&\n prevReactions.every(\n (latestReaction, index) =>\n nextReactions[index].own === latestReaction.own &&\n nextReactions[index].type === latestReaction.type,\n );\n if (!reactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<Omit<ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ReactionListProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { supportedReactions, targetedMessage } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["ReactionList.tsx"],"names":["styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","theme","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","messageSimple","avatarWrapper","leftAlign","spacer","reactionList","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","width","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","height","absoluteFill","backgroundColor","borderColor","borderRadius","borderWidth","event","emitter","defaultHandler","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevReactions","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextReactions","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","reactionsEqual","every","latestReaction","index","MemoizedReactionList","React","memo","ReactionList"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || alignmentLeft ? grey_gainsboro : grey_whisper;\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <View\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </TouchableOpacity>\n </View>\n ) : null}\n </View>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n reactions: prevReactions,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n reactions: nextReactions,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) return false;\n\n const reactionsEqual =\n prevReactions.length === nextReactions.length &&\n prevReactions.every(\n (latestReaction, index) =>\n nextReactions[index].own === latestReaction.own &&\n nextReactions[index].type === latestReaction.type,\n );\n if (!reactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<Omit<ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ReactionListProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { supportedReactions, targetedMessage } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"]}
|