@sendbird/uikit-react-native-foundation 2.5.0 → 3.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +4 -0
  2. package/lib/commonjs/components/ImageWithPlaceholder/index.js +7 -1
  3. package/lib/commonjs/components/ImageWithPlaceholder/index.js.map +1 -1
  4. package/lib/commonjs/components/RegexText/index.js.map +1 -1
  5. package/lib/commonjs/index.js +8 -8
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/types.js.map +1 -1
  8. package/lib/commonjs/ui/Avatar/AvatarGroup.js +1 -1
  9. package/lib/commonjs/ui/Avatar/AvatarGroup.js.map +1 -1
  10. package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js +37 -0
  11. package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js.map +1 -0
  12. package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js +54 -0
  13. package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
  14. package/lib/commonjs/ui/GroupChannelMessage/Message.file.js +80 -0
  15. package/lib/commonjs/ui/GroupChannelMessage/Message.file.js.map +1 -0
  16. package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js +120 -0
  17. package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
  18. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js +54 -0
  19. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
  20. package/lib/commonjs/ui/GroupChannelMessage/Message.user.js +44 -0
  21. package/lib/commonjs/ui/GroupChannelMessage/Message.user.js.map +1 -0
  22. package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js +59 -0
  23. package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
  24. package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js +74 -0
  25. package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
  26. package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js +110 -0
  27. package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
  28. package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js +91 -0
  29. package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
  30. package/lib/commonjs/ui/GroupChannelMessage/index.js +26 -0
  31. package/lib/commonjs/ui/GroupChannelMessage/index.js.map +1 -0
  32. package/lib/commonjs/ui/OpenChannelMessage/Message.user.js +1 -1
  33. package/lib/commonjs/ui/OpenChannelMessage/Message.user.js.map +1 -1
  34. package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js +5 -2
  35. package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
  36. package/lib/commonjs/ui/OpenChannelMessage/index.js.map +1 -1
  37. package/lib/module/components/ImageWithPlaceholder/index.js +7 -1
  38. package/lib/module/components/ImageWithPlaceholder/index.js.map +1 -1
  39. package/lib/module/components/RegexText/index.js.map +1 -1
  40. package/lib/module/index.js +2 -2
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/module/types.js.map +1 -1
  43. package/lib/module/ui/Avatar/AvatarGroup.js +1 -1
  44. package/lib/module/ui/Avatar/AvatarGroup.js.map +1 -1
  45. package/lib/module/ui/GroupChannelMessage/Message.admin.js +29 -0
  46. package/lib/module/ui/GroupChannelMessage/Message.admin.js.map +1 -0
  47. package/lib/module/ui/GroupChannelMessage/Message.file.image.js +46 -0
  48. package/lib/module/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
  49. package/lib/module/ui/GroupChannelMessage/Message.file.js +72 -0
  50. package/lib/module/ui/GroupChannelMessage/Message.file.js.map +1 -0
  51. package/lib/module/ui/GroupChannelMessage/Message.file.video.js +110 -0
  52. package/lib/module/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
  53. package/lib/module/ui/GroupChannelMessage/Message.unknown.js +46 -0
  54. package/lib/module/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
  55. package/lib/module/ui/GroupChannelMessage/Message.user.js +36 -0
  56. package/lib/module/ui/GroupChannelMessage/Message.user.js.map +1 -0
  57. package/lib/module/ui/GroupChannelMessage/Message.user.og.js +51 -0
  58. package/lib/module/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
  59. package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js +66 -0
  60. package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
  61. package/lib/module/ui/GroupChannelMessage/MessageContainer.js +102 -0
  62. package/lib/module/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
  63. package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js +83 -0
  64. package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
  65. package/lib/module/ui/GroupChannelMessage/index.js +18 -0
  66. package/lib/module/ui/GroupChannelMessage/index.js.map +1 -0
  67. package/lib/module/ui/OpenChannelMessage/Message.user.js +1 -1
  68. package/lib/module/ui/OpenChannelMessage/Message.user.js.map +1 -1
  69. package/lib/module/ui/OpenChannelMessage/Message.user.og.js +5 -2
  70. package/lib/module/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
  71. package/lib/module/ui/OpenChannelMessage/index.js.map +1 -1
  72. package/lib/typescript/src/components/RegexText/index.d.ts +2 -2
  73. package/lib/typescript/src/index.d.ts +4 -2
  74. package/lib/typescript/src/types.d.ts +1 -9
  75. package/lib/typescript/src/ui/GroupChannelMessage/Message.admin.d.ts +4 -0
  76. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.d.ts +5 -0
  77. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.image.d.ts +4 -0
  78. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.video.d.ts +9 -0
  79. package/lib/typescript/src/ui/GroupChannelMessage/Message.unknown.d.ts +4 -0
  80. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.d.ts +9 -0
  81. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.og.d.ts +9 -0
  82. package/lib/typescript/src/ui/GroupChannelMessage/MessageBubbleWithText.d.ts +10 -0
  83. package/lib/typescript/src/ui/GroupChannelMessage/MessageContainer.d.ts +9 -0
  84. package/lib/typescript/src/ui/GroupChannelMessage/MessageOpenGraph.d.ts +8 -0
  85. package/lib/typescript/src/ui/GroupChannelMessage/index.d.ts +191 -0
  86. package/lib/typescript/src/ui/OpenChannelMessage/index.d.ts +7 -7
  87. package/package.json +5 -6
  88. package/src/components/ImageWithPlaceholder/index.tsx +3 -2
  89. package/src/components/RegexText/index.tsx +2 -2
  90. package/src/index.ts +5 -2
  91. package/src/types.ts +1 -11
  92. package/src/ui/Avatar/AvatarGroup.tsx +1 -1
  93. package/src/ui/GroupChannelMessage/Message.admin.tsx +34 -0
  94. package/src/ui/GroupChannelMessage/Message.file.image.tsx +45 -0
  95. package/src/ui/GroupChannelMessage/Message.file.tsx +70 -0
  96. package/src/ui/GroupChannelMessage/Message.file.video.tsx +106 -0
  97. package/src/ui/GroupChannelMessage/Message.unknown.tsx +47 -0
  98. package/src/ui/GroupChannelMessage/Message.user.og.tsx +62 -0
  99. package/src/ui/GroupChannelMessage/Message.user.tsx +49 -0
  100. package/src/ui/GroupChannelMessage/MessageBubbleWithText.tsx +80 -0
  101. package/src/ui/GroupChannelMessage/MessageContainer.tsx +106 -0
  102. package/src/ui/GroupChannelMessage/MessageOpenGraph.tsx +84 -0
  103. package/src/ui/GroupChannelMessage/index.ts +48 -0
  104. package/src/ui/OpenChannelMessage/Message.user.og.tsx +6 -2
  105. package/src/ui/OpenChannelMessage/Message.user.tsx +1 -1
  106. package/src/ui/OpenChannelMessage/index.ts +1 -1
  107. package/lib/commonjs/components/URLParsedText/index.js +0 -46
  108. package/lib/commonjs/components/URLParsedText/index.js.map +0 -1
  109. package/lib/module/components/URLParsedText/index.js +0 -38
  110. package/lib/module/components/URLParsedText/index.js.map +0 -1
  111. package/lib/typescript/src/components/URLParsedText/index.d.ts +0 -8
  112. package/src/components/URLParsedText/index.tsx +0 -50
@@ -0,0 +1,110 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';
4
+ import Box from '../../components/Box';
5
+ import Icon from '../../components/Icon';
6
+ import ImageWithPlaceholder from '../../components/ImageWithPlaceholder';
7
+ import PressBox from '../../components/PressBox';
8
+ import createStyleSheet from '../../styles/createStyleSheet';
9
+ import useUIKitTheme from '../../theme/useUIKitTheme';
10
+ import MessageContainer from './MessageContainer';
11
+ const VideoFileMessage = props => {
12
+ const {
13
+ onPress,
14
+ onLongPress,
15
+ variant = 'incoming'
16
+ } = props;
17
+ const {
18
+ colors,
19
+ palette,
20
+ select
21
+ } = useUIKitTheme();
22
+ const uri = getAvailableUriFromFileMessage(props.message);
23
+ const {
24
+ thumbnail,
25
+ loading
26
+ } = useRetry(() => props.fetchThumbnailFromVideoSource(uri));
27
+ return /*#__PURE__*/React.createElement(MessageContainer, props, /*#__PURE__*/React.createElement(Box, {
28
+ style: styles.container,
29
+ backgroundColor: colors.ui.groupChannelMessage[variant].enabled.background
30
+ }, /*#__PURE__*/React.createElement(PressBox, {
31
+ activeOpacity: 0.8,
32
+ onPress: onPress,
33
+ onLongPress: onLongPress,
34
+ style: styles.image
35
+ }, loading ? /*#__PURE__*/React.createElement(Box, {
36
+ style: StyleSheet.absoluteFill,
37
+ backgroundColor: select({
38
+ dark: palette.background400,
39
+ light: palette.background100
40
+ })
41
+ }) : /*#__PURE__*/React.createElement(ImageWithPlaceholder, {
42
+ source: {
43
+ uri: thumbnail ?? 'invalid-image'
44
+ },
45
+ style: StyleSheet.absoluteFill
46
+ }), (loading || thumbnail !== null) && /*#__PURE__*/React.createElement(Box, {
47
+ style: StyleSheet.absoluteFill,
48
+ alignItems: 'center',
49
+ justifyContent: 'center'
50
+ }, /*#__PURE__*/React.createElement(Icon, {
51
+ icon: 'play',
52
+ size: 28,
53
+ color: palette.onBackgroundLight02,
54
+ containerStyle: [styles.playIcon, {
55
+ backgroundColor: palette.onBackgroundDark01
56
+ }]
57
+ }))), props.children));
58
+ };
59
+ const useRetry = function (fetch) {
60
+ let retryCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
61
+ const [state, setState] = useState({
62
+ thumbnail: null,
63
+ loading: true
64
+ });
65
+ const retryCountRef = useRef(0);
66
+ const retryTimeoutRef = useRef();
67
+ const fetchThumbnail = useRef(fetch);
68
+ fetchThumbnail.current = fetch;
69
+ useEffect(() => {
70
+ if (!state.thumbnail) {
71
+ const reloadReservation = () => {
72
+ if (retryCountRef.current < retryCount) {
73
+ retryTimeoutRef.current = setTimeout(() => {
74
+ retryCountRef.current++;
75
+ reloadReservation();
76
+ fetchThumbnail.current().then(result => {
77
+ setState({
78
+ loading: false,
79
+ thumbnail: (result === null || result === void 0 ? void 0 : result.path) ?? null
80
+ });
81
+ });
82
+ }, retryCountRef.current * 5000);
83
+ }
84
+ };
85
+ return reloadReservation();
86
+ } else {
87
+ return clearTimeout(retryTimeoutRef.current);
88
+ }
89
+ }, [state.thumbnail]);
90
+ return state;
91
+ };
92
+ const styles = createStyleSheet({
93
+ container: {
94
+ borderRadius: 16,
95
+ overflow: 'hidden'
96
+ },
97
+ image: {
98
+ maxWidth: 240,
99
+ width: 240,
100
+ height: 160,
101
+ borderRadius: 16,
102
+ overflow: 'hidden'
103
+ },
104
+ playIcon: {
105
+ padding: 10,
106
+ borderRadius: 50
107
+ }
108
+ });
109
+ export default VideoFileMessage;
110
+ //# sourceMappingURL=Message.file.video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","useState","StyleSheet","getAvailableUriFromFileMessage","Box","Icon","ImageWithPlaceholder","PressBox","createStyleSheet","useUIKitTheme","MessageContainer","VideoFileMessage","props","onPress","onLongPress","variant","colors","palette","select","uri","message","thumbnail","loading","useRetry","fetchThumbnailFromVideoSource","createElement","style","styles","container","backgroundColor","ui","groupChannelMessage","enabled","background","activeOpacity","image","absoluteFill","dark","background400","light","background100","source","alignItems","justifyContent","icon","size","color","onBackgroundLight02","containerStyle","playIcon","onBackgroundDark01","children","fetch","retryCount","arguments","length","undefined","state","setState","retryCountRef","retryTimeoutRef","fetchThumbnail","current","reloadReservation","setTimeout","then","result","path","clearTimeout","borderRadius","overflow","maxWidth","width","height","padding"],"sources":["Message.file.video.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { StyleSheet } from 'react-native';\n\nimport type { SendbirdFileMessage } from '@sendbird/uikit-utils';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Icon from '../../components/Icon';\nimport ImageWithPlaceholder from '../../components/ImageWithPlaceholder';\nimport PressBox from '../../components/PressBox';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport MessageContainer from './MessageContainer';\nimport type { GroupChannelMessageProps } from './index';\n\ntype Props = GroupChannelMessageProps<\n SendbirdFileMessage,\n {\n fetchThumbnailFromVideoSource: (uri: string) => Promise<{ path: string } | null>;\n }\n>;\n\nconst VideoFileMessage = (props: Props) => {\n const { onPress, onLongPress, variant = 'incoming' } = props;\n\n const { colors, palette, select } = useUIKitTheme();\n const uri = getAvailableUriFromFileMessage(props.message);\n const { thumbnail, loading } = useRetry(() => props.fetchThumbnailFromVideoSource(uri));\n\n return (\n <MessageContainer {...props}>\n <Box style={styles.container} backgroundColor={colors.ui.groupChannelMessage[variant].enabled.background}>\n <PressBox activeOpacity={0.8} onPress={onPress} onLongPress={onLongPress} style={styles.image}>\n {loading ? (\n <Box\n style={StyleSheet.absoluteFill}\n backgroundColor={select({ dark: palette.background400, light: palette.background100 })}\n />\n ) : (\n <ImageWithPlaceholder source={{ uri: thumbnail ?? 'invalid-image' }} style={StyleSheet.absoluteFill} />\n )}\n\n {(loading || thumbnail !== null) && (\n <Box style={StyleSheet.absoluteFill} alignItems={'center'} justifyContent={'center'}>\n <Icon\n icon={'play'}\n size={28}\n color={palette.onBackgroundLight02}\n containerStyle={[styles.playIcon, { backgroundColor: palette.onBackgroundDark01 }]}\n />\n </Box>\n )}\n </PressBox>\n {props.children}\n </Box>\n </MessageContainer>\n );\n};\n\nconst useRetry = (fetch: () => Promise<{ path: string } | null>, retryCount = 5) => {\n const [state, setState] = useState({ thumbnail: null as null | string, loading: true });\n const retryCountRef = useRef(0);\n const retryTimeoutRef = useRef<NodeJS.Timeout>();\n const fetchThumbnail = useRef(fetch);\n fetchThumbnail.current = fetch;\n\n useEffect(() => {\n if (!state.thumbnail) {\n const reloadReservation = () => {\n if (retryCountRef.current < retryCount) {\n retryTimeoutRef.current = setTimeout(() => {\n retryCountRef.current++;\n reloadReservation();\n fetchThumbnail.current().then((result) => {\n setState({ loading: false, thumbnail: result?.path ?? null });\n });\n }, retryCountRef.current * 5000);\n }\n };\n\n return reloadReservation();\n } else {\n return clearTimeout(retryTimeoutRef.current);\n }\n }, [state.thumbnail]);\n\n return state;\n};\nconst styles = createStyleSheet({\n container: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n image: {\n maxWidth: 240,\n width: 240,\n height: 160,\n borderRadius: 16,\n overflow: 'hidden',\n },\n playIcon: {\n padding: 10,\n borderRadius: 50,\n },\n});\nexport default VideoFileMessage;\n"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import Box from '../../components/Box';
3
+ import PressBox from '../../components/PressBox';
4
+ import Text from '../../components/Text';
5
+ import createStyleSheet from '../../styles/createStyleSheet';
6
+ import useUIKitTheme from '../../theme/useUIKitTheme';
7
+ import MessageContainer from './MessageContainer';
8
+ const UnknownMessage = props => {
9
+ const {
10
+ variant = 'incoming'
11
+ } = props;
12
+ const {
13
+ colors
14
+ } = useUIKitTheme();
15
+ const color = colors.ui.groupChannelMessage['incoming'];
16
+ const titleColor = variant === 'incoming' ? colors.onBackground01 : colors.onBackgroundReverse01;
17
+ const descColor = variant === 'incoming' ? colors.onBackground02 : colors.onBackgroundReverse02;
18
+ return /*#__PURE__*/React.createElement(MessageContainer, props, /*#__PURE__*/React.createElement(PressBox, {
19
+ onPress: props.onPress,
20
+ onLongPress: props.onLongPress
21
+ }, _ref => {
22
+ var _props$strings, _props$strings2;
23
+ let {
24
+ pressed
25
+ } = _ref;
26
+ return /*#__PURE__*/React.createElement(Box, {
27
+ style: styles.bubble,
28
+ backgroundColor: pressed ? color.pressed.background : color.enabled.background
29
+ }, /*#__PURE__*/React.createElement(Text, {
30
+ body3: true,
31
+ color: titleColor
32
+ }, ((_props$strings = props.strings) === null || _props$strings === void 0 ? void 0 : _props$strings.unknownTitle) ?? '(Unknown message type)'), /*#__PURE__*/React.createElement(Text, {
33
+ body3: true,
34
+ color: descColor
35
+ }, ((_props$strings2 = props.strings) === null || _props$strings2 === void 0 ? void 0 : _props$strings2.unknownDescription) ?? 'Cannot read this message.'));
36
+ }));
37
+ };
38
+ const styles = createStyleSheet({
39
+ bubble: {
40
+ paddingVertical: 6,
41
+ paddingHorizontal: 12,
42
+ borderRadius: 16
43
+ }
44
+ });
45
+ export default UnknownMessage;
46
+ //# sourceMappingURL=Message.unknown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Box","PressBox","Text","createStyleSheet","useUIKitTheme","MessageContainer","UnknownMessage","props","variant","colors","color","ui","groupChannelMessage","titleColor","onBackground01","onBackgroundReverse01","descColor","onBackground02","onBackgroundReverse02","createElement","onPress","onLongPress","_ref","_props$strings","_props$strings2","pressed","style","styles","bubble","backgroundColor","background","enabled","body3","strings","unknownTitle","unknownDescription","paddingVertical","paddingHorizontal","borderRadius"],"sources":["Message.unknown.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport PressBox from '../../components/PressBox';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport MessageContainer from './MessageContainer';\nimport type { GroupChannelMessageProps } from './index';\n\nconst UnknownMessage = (props: GroupChannelMessageProps<SendbirdMessage>) => {\n const { variant = 'incoming' } = props;\n\n const { colors } = useUIKitTheme();\n const color = colors.ui.groupChannelMessage['incoming'];\n const titleColor = variant === 'incoming' ? colors.onBackground01 : colors.onBackgroundReverse01;\n const descColor = variant === 'incoming' ? colors.onBackground02 : colors.onBackgroundReverse02;\n\n return (\n <MessageContainer {...props}>\n <PressBox onPress={props.onPress} onLongPress={props.onLongPress}>\n {({ pressed }) => (\n <Box style={styles.bubble} backgroundColor={pressed ? color.pressed.background : color.enabled.background}>\n <Text body3 color={titleColor}>\n {props.strings?.unknownTitle ?? '(Unknown message type)'}\n </Text>\n <Text body3 color={descColor}>\n {props.strings?.unknownDescription ?? 'Cannot read this message.'}\n </Text>\n </Box>\n )}\n </PressBox>\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n bubble: {\n paddingVertical: 6,\n paddingHorizontal: 12,\n borderRadius: 16,\n },\n});\n\nexport default UnknownMessage;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAIzB,OAAOC,GAAG,MAAM,sBAAsB;AACtC,OAAOC,QAAQ,MAAM,2BAA2B;AAChD,OAAOC,IAAI,MAAM,uBAAuB;AACxC,OAAOC,gBAAgB,MAAM,+BAA+B;AAC5D,OAAOC,aAAa,MAAM,2BAA2B;AACrD,OAAOC,gBAAgB,MAAM,oBAAoB;AAGjD,MAAMC,cAAc,GAAIC,KAAgD,IAAK;EAC3E,MAAM;IAAEC,OAAO,GAAG;EAAW,CAAC,GAAGD,KAAK;EAEtC,MAAM;IAAEE;EAAO,CAAC,GAAGL,aAAa,EAAE;EAClC,MAAMM,KAAK,GAAGD,MAAM,CAACE,EAAE,CAACC,mBAAmB,CAAC,UAAU,CAAC;EACvD,MAAMC,UAAU,GAAGL,OAAO,KAAK,UAAU,GAAGC,MAAM,CAACK,cAAc,GAAGL,MAAM,CAACM,qBAAqB;EAChG,MAAMC,SAAS,GAAGR,OAAO,KAAK,UAAU,GAAGC,MAAM,CAACQ,cAAc,GAAGR,MAAM,CAACS,qBAAqB;EAE/F,oBACEnB,KAAA,CAAAoB,aAAA,CAACd,gBAAgB,EAAKE,KAAK,eACzBR,KAAA,CAAAoB,aAAA,CAAClB,QAAQ;IAACmB,OAAO,EAAEb,KAAK,CAACa,OAAQ;IAACC,WAAW,EAAEd,KAAK,CAACc;EAAY,GAC9DC,IAAA;IAAA,IAAAC,cAAA,EAAAC,eAAA;IAAA,IAAC;MAAEC;IAAQ,CAAC,GAAAH,IAAA;IAAA,oBACXvB,KAAA,CAAAoB,aAAA,CAACnB,GAAG;MAAC0B,KAAK,EAAEC,MAAM,CAACC,MAAO;MAACC,eAAe,EAAEJ,OAAO,GAAGf,KAAK,CAACe,OAAO,CAACK,UAAU,GAAGpB,KAAK,CAACqB,OAAO,CAACD;IAAW,gBACxG/B,KAAA,CAAAoB,aAAA,CAACjB,IAAI;MAAC8B,KAAK;MAACtB,KAAK,EAAEG;IAAW,GAC3B,EAAAU,cAAA,GAAAhB,KAAK,CAAC0B,OAAO,cAAAV,cAAA,uBAAbA,cAAA,CAAeW,YAAY,KAAI,wBAAwB,CACnD,eACPnC,KAAA,CAAAoB,aAAA,CAACjB,IAAI;MAAC8B,KAAK;MAACtB,KAAK,EAAEM;IAAU,GAC1B,EAAAQ,eAAA,GAAAjB,KAAK,CAAC0B,OAAO,cAAAT,eAAA,uBAAbA,eAAA,CAAeW,kBAAkB,KAAI,2BAA2B,CAC5D,CACH;EAAA,CACP,CACQ,CACM;AAEvB,CAAC;AAED,MAAMR,MAAM,GAAGxB,gBAAgB,CAAC;EAC9ByB,MAAM,EAAE;IACNQ,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAE,EAAE;IACrBC,YAAY,EAAE;EAChB;AACF,CAAC,CAAC;AAEF,eAAehC,cAAc"}
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import Box from '../../components/Box';
3
+ import PressBox from '../../components/PressBox';
4
+ import createStyleSheet from '../../styles/createStyleSheet';
5
+ import useUIKitTheme from '../../theme/useUIKitTheme';
6
+ import MessageBubbleWithText from './MessageBubbleWithText';
7
+ import MessageContainer from './MessageContainer';
8
+ const UserMessage = props => {
9
+ const {
10
+ variant = 'incoming'
11
+ } = props;
12
+ const {
13
+ colors
14
+ } = useUIKitTheme();
15
+ const color = colors.ui.groupChannelMessage[variant];
16
+ return /*#__PURE__*/React.createElement(MessageContainer, props, /*#__PURE__*/React.createElement(PressBox, {
17
+ onPress: props.onPress,
18
+ onLongPress: props.onLongPress
19
+ }, _ref => {
20
+ let {
21
+ pressed
22
+ } = _ref;
23
+ return /*#__PURE__*/React.createElement(Box, {
24
+ backgroundColor: pressed ? color.pressed.background : color.enabled.background,
25
+ style: styles.container
26
+ }, /*#__PURE__*/React.createElement(MessageBubbleWithText, props), props.children);
27
+ }));
28
+ };
29
+ const styles = createStyleSheet({
30
+ container: {
31
+ overflow: 'hidden',
32
+ borderRadius: 16
33
+ }
34
+ });
35
+ export default UserMessage;
36
+ //# sourceMappingURL=Message.user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Box","PressBox","createStyleSheet","useUIKitTheme","MessageBubbleWithText","MessageContainer","UserMessage","props","variant","colors","color","ui","groupChannelMessage","createElement","onPress","onLongPress","_ref","pressed","backgroundColor","background","enabled","style","styles","container","children","overflow","borderRadius"],"sources":["Message.user.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdUserMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport PressBox from '../../components/PressBox';\nimport type { RegexTextPattern } from '../../components/RegexText';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport MessageBubbleWithText from './MessageBubbleWithText';\nimport MessageContainer from './MessageContainer';\nimport type { GroupChannelMessageProps } from './index';\n\ntype Props = GroupChannelMessageProps<\n SendbirdUserMessage,\n {\n regexTextPatterns?: RegexTextPattern[];\n renderRegexTextChildren?: (message: SendbirdUserMessage) => string;\n }\n>;\n\nconst UserMessage = (props: Props) => {\n const { variant = 'incoming' } = props;\n\n const { colors } = useUIKitTheme();\n const color = colors.ui.groupChannelMessage[variant];\n\n return (\n <MessageContainer {...props}>\n <PressBox onPress={props.onPress} onLongPress={props.onLongPress}>\n {({ pressed }) => (\n <Box backgroundColor={pressed ? color.pressed.background : color.enabled.background} style={styles.container}>\n <MessageBubbleWithText {...props} />\n {props.children}\n </Box>\n )}\n </PressBox>\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n overflow: 'hidden',\n borderRadius: 16,\n },\n});\n\nexport default UserMessage;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAIzB,OAAOC,GAAG,MAAM,sBAAsB;AACtC,OAAOC,QAAQ,MAAM,2BAA2B;AAEhD,OAAOC,gBAAgB,MAAM,+BAA+B;AAC5D,OAAOC,aAAa,MAAM,2BAA2B;AACrD,OAAOC,qBAAqB,MAAM,yBAAyB;AAC3D,OAAOC,gBAAgB,MAAM,oBAAoB;AAWjD,MAAMC,WAAW,GAAIC,KAAY,IAAK;EACpC,MAAM;IAAEC,OAAO,GAAG;EAAW,CAAC,GAAGD,KAAK;EAEtC,MAAM;IAAEE;EAAO,CAAC,GAAGN,aAAa,EAAE;EAClC,MAAMO,KAAK,GAAGD,MAAM,CAACE,EAAE,CAACC,mBAAmB,CAACJ,OAAO,CAAC;EAEpD,oBACET,KAAA,CAAAc,aAAA,CAACR,gBAAgB,EAAKE,KAAK,eACzBR,KAAA,CAAAc,aAAA,CAACZ,QAAQ;IAACa,OAAO,EAAEP,KAAK,CAACO,OAAQ;IAACC,WAAW,EAAER,KAAK,CAACQ;EAAY,GAC9DC,IAAA;IAAA,IAAC;MAAEC;IAAQ,CAAC,GAAAD,IAAA;IAAA,oBACXjB,KAAA,CAAAc,aAAA,CAACb,GAAG;MAACkB,eAAe,EAAED,OAAO,GAAGP,KAAK,CAACO,OAAO,CAACE,UAAU,GAAGT,KAAK,CAACU,OAAO,CAACD,UAAW;MAACE,KAAK,EAAEC,MAAM,CAACC;IAAU,gBAC3GxB,KAAA,CAAAc,aAAA,CAACT,qBAAqB,EAAKG,KAAK,CAAI,EACnCA,KAAK,CAACiB,QAAQ,CACX;EAAA,CACP,CACQ,CACM;AAEvB,CAAC;AAED,MAAMF,MAAM,GAAGpB,gBAAgB,CAAC;EAC9BqB,SAAS,EAAE;IACTE,QAAQ,EAAE,QAAQ;IAClBC,YAAY,EAAE;EAChB;AACF,CAAC,CAAC;AAEF,eAAepB,WAAW"}
@@ -0,0 +1,51 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import React from 'react';
3
+ import Box from '../../components/Box';
4
+ import PressBox from '../../components/PressBox';
5
+ import createStyleSheet from '../../styles/createStyleSheet';
6
+ import useUIKitTheme from '../../theme/useUIKitTheme';
7
+ import MessageBubbleWithText from './MessageBubbleWithText';
8
+ import MessageContainer from './MessageContainer';
9
+ import MessageOpenGraph from './MessageOpenGraph';
10
+ const OpenGraphUserMessage = props => {
11
+ const {
12
+ variant = 'incoming'
13
+ } = props;
14
+ const {
15
+ palette,
16
+ select,
17
+ colors
18
+ } = useUIKitTheme();
19
+ const color = colors.ui.groupChannelMessage[variant];
20
+ const containerBackgroundColor = select({
21
+ dark: palette.background400,
22
+ light: palette.background100
23
+ });
24
+ return /*#__PURE__*/React.createElement(MessageContainer, props, /*#__PURE__*/React.createElement(PressBox, {
25
+ onPress: props.onPress,
26
+ onLongPress: props.onLongPress
27
+ }, _ref => {
28
+ let {
29
+ pressed
30
+ } = _ref;
31
+ return /*#__PURE__*/React.createElement(Box, {
32
+ backgroundColor: containerBackgroundColor,
33
+ style: styles.container
34
+ }, /*#__PURE__*/React.createElement(MessageBubbleWithText, _extends({
35
+ backgroundColor: pressed ? color.pressed.background : color.enabled.background
36
+ }, props)), props.message.ogMetaData && /*#__PURE__*/React.createElement(MessageOpenGraph, {
37
+ variant: variant,
38
+ ogMetaData: props.message.ogMetaData,
39
+ onLongPress: props.onLongPress,
40
+ onPressURL: props.onPressURL
41
+ }), props.children);
42
+ }));
43
+ };
44
+ const styles = createStyleSheet({
45
+ container: {
46
+ borderRadius: 16,
47
+ overflow: 'hidden'
48
+ }
49
+ });
50
+ export default OpenGraphUserMessage;
51
+ //# sourceMappingURL=Message.user.og.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Box","PressBox","createStyleSheet","useUIKitTheme","MessageBubbleWithText","MessageContainer","MessageOpenGraph","OpenGraphUserMessage","props","variant","palette","select","colors","color","ui","groupChannelMessage","containerBackgroundColor","dark","background400","light","background100","createElement","onPress","onLongPress","_ref","pressed","backgroundColor","style","styles","container","_extends","background","enabled","message","ogMetaData","onPressURL","children","borderRadius","overflow"],"sources":["Message.user.og.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdUserMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport PressBox from '../../components/PressBox';\nimport type { RegexTextPattern } from '../../components/RegexText';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport MessageBubbleWithText from './MessageBubbleWithText';\nimport MessageContainer from './MessageContainer';\nimport MessageOpenGraph from './MessageOpenGraph';\nimport type { GroupChannelMessageProps } from './index';\n\ntype Props = GroupChannelMessageProps<\n SendbirdUserMessage,\n {\n regexTextPatterns?: RegexTextPattern[];\n renderRegexTextChildren?: (message: SendbirdUserMessage) => string;\n }\n>;\n\nconst OpenGraphUserMessage = (props: Props) => {\n const { variant = 'incoming' } = props;\n\n const { palette, select, colors } = useUIKitTheme();\n const color = colors.ui.groupChannelMessage[variant];\n const containerBackgroundColor = select({ dark: palette.background400, light: palette.background100 });\n\n return (\n <MessageContainer {...props}>\n <PressBox onPress={props.onPress} onLongPress={props.onLongPress}>\n {({ pressed }) => (\n <Box backgroundColor={containerBackgroundColor} style={styles.container}>\n <MessageBubbleWithText\n backgroundColor={pressed ? color.pressed.background : color.enabled.background}\n {...props}\n />\n {props.message.ogMetaData && (\n <MessageOpenGraph\n variant={variant}\n ogMetaData={props.message.ogMetaData}\n onLongPress={props.onLongPress}\n onPressURL={props.onPressURL}\n />\n )}\n {props.children}\n </Box>\n )}\n </PressBox>\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n});\n\nexport default OpenGraphUserMessage;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAIzB,OAAOC,GAAG,MAAM,sBAAsB;AACtC,OAAOC,QAAQ,MAAM,2BAA2B;AAEhD,OAAOC,gBAAgB,MAAM,+BAA+B;AAC5D,OAAOC,aAAa,MAAM,2BAA2B;AACrD,OAAOC,qBAAqB,MAAM,yBAAyB;AAC3D,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,gBAAgB,MAAM,oBAAoB;AAWjD,MAAMC,oBAAoB,GAAIC,KAAY,IAAK;EAC7C,MAAM;IAAEC,OAAO,GAAG;EAAW,CAAC,GAAGD,KAAK;EAEtC,MAAM;IAAEE,OAAO;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGT,aAAa,EAAE;EACnD,MAAMU,KAAK,GAAGD,MAAM,CAACE,EAAE,CAACC,mBAAmB,CAACN,OAAO,CAAC;EACpD,MAAMO,wBAAwB,GAAGL,MAAM,CAAC;IAAEM,IAAI,EAAEP,OAAO,CAACQ,aAAa;IAAEC,KAAK,EAAET,OAAO,CAACU;EAAc,CAAC,CAAC;EAEtG,oBACErB,KAAA,CAAAsB,aAAA,CAAChB,gBAAgB,EAAKG,KAAK,eACzBT,KAAA,CAAAsB,aAAA,CAACpB,QAAQ;IAACqB,OAAO,EAAEd,KAAK,CAACc,OAAQ;IAACC,WAAW,EAAEf,KAAK,CAACe;EAAY,GAC9DC,IAAA;IAAA,IAAC;MAAEC;IAAQ,CAAC,GAAAD,IAAA;IAAA,oBACXzB,KAAA,CAAAsB,aAAA,CAACrB,GAAG;MAAC0B,eAAe,EAAEV,wBAAyB;MAACW,KAAK,EAAEC,MAAM,CAACC;IAAU,gBACtE9B,KAAA,CAAAsB,aAAA,CAACjB,qBAAqB,EAAA0B,QAAA;MACpBJ,eAAe,EAAED,OAAO,GAAGZ,KAAK,CAACY,OAAO,CAACM,UAAU,GAAGlB,KAAK,CAACmB,OAAO,CAACD;IAAW,GAC3EvB,KAAK,EACT,EACDA,KAAK,CAACyB,OAAO,CAACC,UAAU,iBACvBnC,KAAA,CAAAsB,aAAA,CAACf,gBAAgB;MACfG,OAAO,EAAEA,OAAQ;MACjByB,UAAU,EAAE1B,KAAK,CAACyB,OAAO,CAACC,UAAW;MACrCX,WAAW,EAAEf,KAAK,CAACe,WAAY;MAC/BY,UAAU,EAAE3B,KAAK,CAAC2B;IAAW,EAEhC,EACA3B,KAAK,CAAC4B,QAAQ,CACX;EAAA,CACP,CACQ,CACM;AAEvB,CAAC;AAED,MAAMR,MAAM,GAAG1B,gBAAgB,CAAC;EAC9B2B,SAAS,EAAE;IACTQ,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAe/B,oBAAoB"}
@@ -0,0 +1,66 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import React from 'react';
3
+ import { urlRegexStrict } from '@sendbird/uikit-utils';
4
+ import Box from '../../components/Box';
5
+ import RegexText from '../../components/RegexText';
6
+ import Text from '../../components/Text';
7
+ import createStyleSheet from '../../styles/createStyleSheet';
8
+ import useUIKitTheme from '../../theme/useUIKitTheme';
9
+ const MessageBubbleWithText = _ref => {
10
+ let {
11
+ backgroundColor,
12
+ message,
13
+ onPressURL,
14
+ onLongPress,
15
+ strings,
16
+ variant = 'incoming',
17
+ regexTextPatterns = [],
18
+ renderRegexTextChildren = msg => msg.message
19
+ } = _ref;
20
+ const {
21
+ colors
22
+ } = useUIKitTheme();
23
+ const color = colors.ui.groupChannelMessage[variant];
24
+ return /*#__PURE__*/React.createElement(Box, {
25
+ backgroundColor: backgroundColor,
26
+ style: styles.bubble
27
+ }, /*#__PURE__*/React.createElement(Text, {
28
+ body3: true,
29
+ color: color.enabled.textMsg,
30
+ suppressHighlighting: true
31
+ }, /*#__PURE__*/React.createElement(RegexText, {
32
+ body3: true,
33
+ color: color.enabled.textMsg,
34
+ patterns: [...regexTextPatterns, {
35
+ regex: urlRegexStrict,
36
+ replacer(_ref2) {
37
+ let {
38
+ match,
39
+ parentProps,
40
+ keyPrefix,
41
+ index
42
+ } = _ref2;
43
+ return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
44
+ key: `${keyPrefix}-${index}`,
45
+ onPress: () => onPressURL === null || onPressURL === void 0 ? void 0 : onPressURL(match),
46
+ onLongPress: onLongPress,
47
+ style: [parentProps === null || parentProps === void 0 ? void 0 : parentProps.style, styles.urlText]
48
+ }), match);
49
+ }
50
+ }]
51
+ }, renderRegexTextChildren(message)), Boolean(message.updatedAt) && /*#__PURE__*/React.createElement(Text, {
52
+ body3: true,
53
+ color: color.enabled.textEdited
54
+ }, (strings === null || strings === void 0 ? void 0 : strings.edited) ?? ' (edited)')));
55
+ };
56
+ const styles = createStyleSheet({
57
+ bubble: {
58
+ paddingHorizontal: 12,
59
+ paddingVertical: 6
60
+ },
61
+ urlText: {
62
+ textDecorationLine: 'underline'
63
+ }
64
+ });
65
+ export default MessageBubbleWithText;
66
+ //# sourceMappingURL=MessageBubbleWithText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","urlRegexStrict","Box","RegexText","Text","createStyleSheet","useUIKitTheme","MessageBubbleWithText","_ref","backgroundColor","message","onPressURL","onLongPress","strings","variant","regexTextPatterns","renderRegexTextChildren","msg","colors","color","ui","groupChannelMessage","createElement","style","styles","bubble","body3","enabled","textMsg","suppressHighlighting","patterns","regex","replacer","_ref2","match","parentProps","keyPrefix","index","_extends","key","onPress","urlText","Boolean","updatedAt","textEdited","edited","paddingHorizontal","paddingVertical","textDecorationLine"],"sources":["MessageBubbleWithText.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendbirdUserMessage, urlRegexStrict } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport RegexText, { RegexTextPattern } from '../../components/RegexText';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport type { GroupChannelMessageProps } from './index';\n\ntype Props = GroupChannelMessageProps<\n SendbirdUserMessage,\n {\n backgroundColor?: string;\n regexTextPatterns?: RegexTextPattern[];\n renderRegexTextChildren?: (message: SendbirdUserMessage) => string;\n }\n>;\n\nconst MessageBubbleWithText = ({\n backgroundColor,\n message,\n onPressURL,\n onLongPress,\n strings,\n variant = 'incoming',\n regexTextPatterns = [],\n renderRegexTextChildren = (msg) => msg.message,\n}: Props) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.groupChannelMessage[variant];\n return (\n <Box backgroundColor={backgroundColor} style={styles.bubble}>\n <Text body3 color={color.enabled.textMsg} suppressHighlighting>\n <RegexText\n body3\n color={color.enabled.textMsg}\n patterns={[\n ...regexTextPatterns,\n {\n regex: urlRegexStrict,\n replacer({ match, parentProps, keyPrefix, index }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => onPressURL?.(match)}\n onLongPress={onLongPress}\n style={[parentProps?.style, styles.urlText]}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {renderRegexTextChildren(message)}\n </RegexText>\n {Boolean(message.updatedAt) && (\n <Text body3 color={color.enabled.textEdited}>\n {strings?.edited ?? ' (edited)'}\n </Text>\n )}\n </Text>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n bubble: {\n paddingHorizontal: 12,\n paddingVertical: 6,\n },\n urlText: {\n textDecorationLine: 'underline',\n },\n});\nexport default MessageBubbleWithText;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAA8BC,cAAc,QAAQ,uBAAuB;AAE3E,OAAOC,GAAG,MAAM,sBAAsB;AACtC,OAAOC,SAAS,MAA4B,4BAA4B;AACxE,OAAOC,IAAI,MAAM,uBAAuB;AACxC,OAAOC,gBAAgB,MAAM,+BAA+B;AAC5D,OAAOC,aAAa,MAAM,2BAA2B;AAYrD,MAAMC,qBAAqB,GAAGC,IAAA,IASjB;EAAA,IATkB;IAC7BC,eAAe;IACfC,OAAO;IACPC,UAAU;IACVC,WAAW;IACXC,OAAO;IACPC,OAAO,GAAG,UAAU;IACpBC,iBAAiB,GAAG,EAAE;IACtBC,uBAAuB,GAAIC,GAAG,IAAKA,GAAG,CAACP;EAClC,CAAC,GAAAF,IAAA;EACN,MAAM;IAAEU;EAAO,CAAC,GAAGZ,aAAa,EAAE;EAClC,MAAMa,KAAK,GAAGD,MAAM,CAACE,EAAE,CAACC,mBAAmB,CAACP,OAAO,CAAC;EACpD,oBACEd,KAAA,CAAAsB,aAAA,CAACpB,GAAG;IAACO,eAAe,EAAEA,eAAgB;IAACc,KAAK,EAAEC,MAAM,CAACC;EAAO,gBAC1DzB,KAAA,CAAAsB,aAAA,CAAClB,IAAI;IAACsB,KAAK;IAACP,KAAK,EAAEA,KAAK,CAACQ,OAAO,CAACC,OAAQ;IAACC,oBAAoB;EAAA,gBAC5D7B,KAAA,CAAAsB,aAAA,CAACnB,SAAS;IACRuB,KAAK;IACLP,KAAK,EAAEA,KAAK,CAACQ,OAAO,CAACC,OAAQ;IAC7BE,QAAQ,EAAE,CACR,GAAGf,iBAAiB,EACpB;MACEgB,KAAK,EAAE9B,cAAc;MACrB+B,QAAQA,CAAAC,KAAA,EAA2C;QAAA,IAA1C;UAAEC,KAAK;UAAEC,WAAW;UAAEC,SAAS;UAAEC;QAAM,CAAC,GAAAJ,KAAA;QAC/C,oBACEjC,KAAA,CAAAsB,aAAA,CAAClB,IAAI,EAAAkC,QAAA,KACCH,WAAW;UACfI,GAAG,EAAG,GAAEH,SAAU,IAAGC,KAAM,EAAE;UAC7BG,OAAO,EAAEA,CAAA,KAAM7B,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAGuB,KAAK,CAAE;UACnCtB,WAAW,EAAEA,WAAY;UACzBW,KAAK,EAAE,CAACY,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEZ,KAAK,EAAEC,MAAM,CAACiB,OAAO;QAAE,IAE3CP,KAAK,CACD;MAEX;IACF,CAAC;EACD,GAEDlB,uBAAuB,CAACN,OAAO,CAAC,CACvB,EACXgC,OAAO,CAAChC,OAAO,CAACiC,SAAS,CAAC,iBACzB3C,KAAA,CAAAsB,aAAA,CAAClB,IAAI;IAACsB,KAAK;IAACP,KAAK,EAAEA,KAAK,CAACQ,OAAO,CAACiB;EAAW,GACzC,CAAA/B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEgC,MAAM,KAAI,WAAW,CAElC,CACI,CACH;AAEV,CAAC;AAED,MAAMrB,MAAM,GAAGnB,gBAAgB,CAAC;EAC9BoB,MAAM,EAAE;IACNqB,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB,CAAC;EACDN,OAAO,EAAE;IACPO,kBAAkB,EAAE;EACtB;AACF,CAAC,CAAC;AACF,eAAezC,qBAAqB"}
@@ -0,0 +1,102 @@
1
+ import React from 'react';
2
+ import { Pressable } from 'react-native';
3
+ import { getMessageTimeFormat } from '@sendbird/uikit-utils';
4
+ import Box from '../../components/Box';
5
+ import Text from '../../components/Text';
6
+ import createStyleSheet from '../../styles/createStyleSheet';
7
+ import useUIKitTheme from '../../theme/useUIKitTheme';
8
+ import Avatar from '../Avatar';
9
+ const MessageContainer = props => {
10
+ if (props.variant === 'incoming') {
11
+ return /*#__PURE__*/React.createElement(MessageContainer.Incoming, props);
12
+ } else {
13
+ return /*#__PURE__*/React.createElement(MessageContainer.Outgoing, props);
14
+ }
15
+ };
16
+ MessageContainer.Incoming = function MessageContainerIncoming(_ref) {
17
+ var _message$sender;
18
+ let {
19
+ children,
20
+ groupedWithNext,
21
+ groupedWithPrev,
22
+ message,
23
+ onPressAvatar,
24
+ strings
25
+ } = _ref;
26
+ const {
27
+ colors
28
+ } = useUIKitTheme();
29
+ const color = colors.ui.groupChannelMessage.incoming;
30
+ return /*#__PURE__*/React.createElement(Box, {
31
+ flexDirection: 'row',
32
+ justifyContent: 'flex-start',
33
+ alignItems: 'flex-end'
34
+ }, /*#__PURE__*/React.createElement(Box, {
35
+ width: 26,
36
+ marginRight: 12
37
+ }, (message.isFileMessage() || message.isUserMessage()) && !groupedWithNext && /*#__PURE__*/React.createElement(Pressable, {
38
+ onPress: onPressAvatar
39
+ }, /*#__PURE__*/React.createElement(Avatar, {
40
+ size: 26,
41
+ uri: (_message$sender = message.sender) === null || _message$sender === void 0 ? void 0 : _message$sender.profileUrl
42
+ }))), /*#__PURE__*/React.createElement(Box, {
43
+ flexShrink: 1
44
+ }, !groupedWithPrev && /*#__PURE__*/React.createElement(Box, {
45
+ marginLeft: 12,
46
+ marginBottom: 4
47
+ }, (message.isFileMessage() || message.isUserMessage()) && /*#__PURE__*/React.createElement(Text, {
48
+ caption1: true,
49
+ color: color.enabled.textSenderName,
50
+ numberOfLines: 1
51
+ }, (strings === null || strings === void 0 ? void 0 : strings.senderName) ?? message.sender.nickname)), /*#__PURE__*/React.createElement(Box, {
52
+ flexDirection: 'row',
53
+ alignItems: 'flex-end'
54
+ }, /*#__PURE__*/React.createElement(Box, {
55
+ style: styles.bubble
56
+ }, children), !groupedWithNext && /*#__PURE__*/React.createElement(Box, {
57
+ marginLeft: 4
58
+ }, /*#__PURE__*/React.createElement(Text, {
59
+ caption4: true,
60
+ color: color.enabled.textTime
61
+ }, (strings === null || strings === void 0 ? void 0 : strings.sentDate) ?? getMessageTimeFormat(new Date(message.createdAt)))))));
62
+ };
63
+ MessageContainer.Outgoing = function MessageContainerOutgoing(_ref2) {
64
+ let {
65
+ children,
66
+ message,
67
+ groupedWithNext,
68
+ strings,
69
+ sendingStatus
70
+ } = _ref2;
71
+ const {
72
+ colors
73
+ } = useUIKitTheme();
74
+ const color = colors.ui.groupChannelMessage.outgoing;
75
+ return /*#__PURE__*/React.createElement(Box, {
76
+ flexDirection: 'row',
77
+ justifyContent: 'flex-end',
78
+ alignItems: 'flex-end'
79
+ }, /*#__PURE__*/React.createElement(Box, {
80
+ flexDirection: 'row',
81
+ alignItems: 'flex-end',
82
+ justifyContent: 'center'
83
+ }, sendingStatus && /*#__PURE__*/React.createElement(Box, {
84
+ marginRight: 4
85
+ }, sendingStatus), !groupedWithNext && /*#__PURE__*/React.createElement(Box, {
86
+ marginRight: 4
87
+ }, /*#__PURE__*/React.createElement(Text, {
88
+ caption4: true,
89
+ color: color.enabled.textTime
90
+ }, (strings === null || strings === void 0 ? void 0 : strings.sentDate) ?? getMessageTimeFormat(new Date(message.createdAt))))), /*#__PURE__*/React.createElement(Box, {
91
+ style: styles.bubble
92
+ }, children));
93
+ };
94
+ const styles = createStyleSheet({
95
+ bubble: {
96
+ maxWidth: 240,
97
+ overflow: 'hidden',
98
+ flexShrink: 1
99
+ }
100
+ });
101
+ export default MessageContainer;
102
+ //# sourceMappingURL=MessageContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Pressable","getMessageTimeFormat","Box","Text","createStyleSheet","useUIKitTheme","Avatar","MessageContainer","props","variant","createElement","Incoming","Outgoing","MessageContainerIncoming","_ref","_message$sender","children","groupedWithNext","groupedWithPrev","message","onPressAvatar","strings","colors","color","ui","groupChannelMessage","incoming","flexDirection","justifyContent","alignItems","width","marginRight","isFileMessage","isUserMessage","onPress","size","uri","sender","profileUrl","flexShrink","marginLeft","marginBottom","caption1","enabled","textSenderName","numberOfLines","senderName","nickname","style","styles","bubble","caption4","textTime","sentDate","Date","createdAt","MessageContainerOutgoing","_ref2","sendingStatus","outgoing","maxWidth","overflow"],"sources":["MessageContainer.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable } from 'react-native';\n\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { getMessageTimeFormat } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Avatar from '../Avatar';\nimport type { GroupChannelMessageProps } from './index';\n\ntype Props = GroupChannelMessageProps<SendbirdMessage>;\n\nconst MessageContainer = (props: Props) => {\n if (props.variant === 'incoming') {\n return <MessageContainer.Incoming {...props} />;\n } else {\n return <MessageContainer.Outgoing {...props} />;\n }\n};\n\nMessageContainer.Incoming = function MessageContainerIncoming({\n children,\n groupedWithNext,\n groupedWithPrev,\n message,\n onPressAvatar,\n strings,\n}: Props) {\n const { colors } = useUIKitTheme();\n const color = colors.ui.groupChannelMessage.incoming;\n\n return (\n <Box flexDirection={'row'} justifyContent={'flex-start'} alignItems={'flex-end'}>\n <Box width={26} marginRight={12}>\n {(message.isFileMessage() || message.isUserMessage()) && !groupedWithNext && (\n <Pressable onPress={onPressAvatar}>\n <Avatar size={26} uri={message.sender?.profileUrl} />\n </Pressable>\n )}\n </Box>\n <Box flexShrink={1}>\n {!groupedWithPrev && (\n <Box marginLeft={12} marginBottom={4}>\n {(message.isFileMessage() || message.isUserMessage()) && (\n <Text caption1 color={color.enabled.textSenderName} numberOfLines={1}>\n {strings?.senderName ?? message.sender.nickname}\n </Text>\n )}\n </Box>\n )}\n\n <Box flexDirection={'row'} alignItems={'flex-end'}>\n <Box style={styles.bubble}>{children}</Box>\n {!groupedWithNext && (\n <Box marginLeft={4}>\n <Text caption4 color={color.enabled.textTime}>\n {strings?.sentDate ?? getMessageTimeFormat(new Date(message.createdAt))}\n </Text>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n\nMessageContainer.Outgoing = function MessageContainerOutgoing({\n children,\n message,\n groupedWithNext,\n strings,\n sendingStatus,\n}: Props) {\n const { colors } = useUIKitTheme();\n const color = colors.ui.groupChannelMessage.outgoing;\n\n return (\n <Box flexDirection={'row'} justifyContent={'flex-end'} alignItems={'flex-end'}>\n <Box flexDirection={'row'} alignItems={'flex-end'} justifyContent={'center'}>\n {sendingStatus && <Box marginRight={4}>{sendingStatus}</Box>}\n\n {!groupedWithNext && (\n <Box marginRight={4}>\n <Text caption4 color={color.enabled.textTime}>\n {strings?.sentDate ?? getMessageTimeFormat(new Date(message.createdAt))}\n </Text>\n </Box>\n )}\n </Box>\n <Box style={styles.bubble}>{children}</Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n bubble: {\n maxWidth: 240,\n overflow: 'hidden',\n flexShrink: 1,\n },\n});\n\nexport default MessageContainer;\n"],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import React from 'react';
2
+ import Box from '../../components/Box';
3
+ import ImageWithPlaceholder from '../../components/ImageWithPlaceholder';
4
+ import PressBox from '../../components/PressBox';
5
+ import Text from '../../components/Text';
6
+ import createStyleSheet from '../../styles/createStyleSheet';
7
+ import useUIKitTheme from '../../theme/useUIKitTheme';
8
+ const MessageOpenGraph = _ref => {
9
+ let {
10
+ onPressURL,
11
+ onLongPress,
12
+ ogMetaData,
13
+ variant
14
+ } = _ref;
15
+ const {
16
+ palette,
17
+ select,
18
+ colors
19
+ } = useUIKitTheme();
20
+ const color = colors.ui.groupChannelMessage[variant];
21
+ return /*#__PURE__*/React.createElement(PressBox, {
22
+ activeOpacity: 0.85,
23
+ onPress: () => typeof (ogMetaData === null || ogMetaData === void 0 ? void 0 : ogMetaData.url) === 'string' && (onPressURL === null || onPressURL === void 0 ? void 0 : onPressURL(ogMetaData.url)),
24
+ onLongPress: onLongPress
25
+ }, _ref2 => {
26
+ let {
27
+ pressed
28
+ } = _ref2;
29
+ return /*#__PURE__*/React.createElement(Box, {
30
+ backgroundColor: pressed ? color.pressed.background : color.enabled.background
31
+ }, Boolean(ogMetaData.defaultImage) && /*#__PURE__*/React.createElement(ImageWithPlaceholder, {
32
+ style: styles.ogImage,
33
+ source: {
34
+ uri: ogMetaData.defaultImage.url
35
+ }
36
+ }), /*#__PURE__*/React.createElement(Box, {
37
+ style: styles.ogContainer,
38
+ backgroundColor: select({
39
+ dark: palette.background400,
40
+ light: palette.background100
41
+ })
42
+ }, /*#__PURE__*/React.createElement(Text, {
43
+ numberOfLines: 3,
44
+ body2: true,
45
+ color: colors.onBackground01,
46
+ style: styles.ogTitle
47
+ }, ogMetaData.title), Boolean(ogMetaData.description) && /*#__PURE__*/React.createElement(Text, {
48
+ numberOfLines: 1,
49
+ caption2: true,
50
+ color: colors.onBackground01,
51
+ style: styles.ogDesc
52
+ }, ogMetaData.description), /*#__PURE__*/React.createElement(Text, {
53
+ numberOfLines: 1,
54
+ caption2: true,
55
+ color: colors.onBackground02
56
+ }, ogMetaData.url)));
57
+ });
58
+ };
59
+ const styles = createStyleSheet({
60
+ ogContainer: {
61
+ overflow: 'hidden',
62
+ paddingHorizontal: 12,
63
+ paddingTop: 8,
64
+ paddingBottom: 12
65
+ },
66
+ ogImage: {
67
+ maxWidth: 240,
68
+ width: 240,
69
+ height: 136
70
+ },
71
+ ogUrl: {
72
+ marginBottom: 4
73
+ },
74
+ ogTitle: {
75
+ marginBottom: 4
76
+ },
77
+ ogDesc: {
78
+ lineHeight: 14,
79
+ marginBottom: 8
80
+ }
81
+ });
82
+ export default MessageOpenGraph;
83
+ //# sourceMappingURL=MessageOpenGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Box","ImageWithPlaceholder","PressBox","Text","createStyleSheet","useUIKitTheme","MessageOpenGraph","_ref","onPressURL","onLongPress","ogMetaData","variant","palette","select","colors","color","ui","groupChannelMessage","createElement","activeOpacity","onPress","url","_ref2","pressed","backgroundColor","background","enabled","Boolean","defaultImage","style","styles","ogImage","source","uri","ogContainer","dark","background400","light","background100","numberOfLines","body2","onBackground01","ogTitle","title","description","caption2","ogDesc","onBackground02","overflow","paddingHorizontal","paddingTop","paddingBottom","maxWidth","width","height","ogUrl","marginBottom","lineHeight"],"sources":["MessageOpenGraph.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdUserMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport ImageWithPlaceholder from '../../components/ImageWithPlaceholder';\nimport PressBox from '../../components/PressBox';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\nconst MessageOpenGraph = ({\n onPressURL,\n onLongPress,\n ogMetaData,\n variant,\n}: {\n ogMetaData: Required<SendbirdUserMessage>['ogMetaData'];\n variant: 'outgoing' | 'incoming';\n onPressURL?: (url: string) => void;\n onLongPress?: () => void;\n}) => {\n const { palette, select, colors } = useUIKitTheme();\n const color = colors.ui.groupChannelMessage[variant];\n\n return (\n <PressBox\n activeOpacity={0.85}\n onPress={() => typeof ogMetaData?.url === 'string' && onPressURL?.(ogMetaData.url)}\n onLongPress={onLongPress}\n >\n {({ pressed }) => (\n <Box backgroundColor={pressed ? color.pressed.background : color.enabled.background}>\n {Boolean(ogMetaData.defaultImage) && (\n <ImageWithPlaceholder style={styles.ogImage} source={{ uri: ogMetaData.defaultImage.url }} />\n )}\n\n <Box\n style={styles.ogContainer}\n backgroundColor={select({ dark: palette.background400, light: palette.background100 })}\n >\n <Text numberOfLines={3} body2 color={colors.onBackground01} style={styles.ogTitle}>\n {ogMetaData.title}\n </Text>\n {Boolean(ogMetaData.description) && (\n <Text numberOfLines={1} caption2 color={colors.onBackground01} style={styles.ogDesc}>\n {ogMetaData.description}\n </Text>\n )}\n <Text numberOfLines={1} caption2 color={colors.onBackground02}>\n {ogMetaData.url}\n </Text>\n </Box>\n </Box>\n )}\n </PressBox>\n );\n};\n\nconst styles = createStyleSheet({\n ogContainer: {\n overflow: 'hidden',\n paddingHorizontal: 12,\n paddingTop: 8,\n paddingBottom: 12,\n },\n ogImage: {\n maxWidth: 240,\n width: 240,\n height: 136,\n },\n ogUrl: {\n marginBottom: 4,\n },\n ogTitle: {\n marginBottom: 4,\n },\n ogDesc: {\n lineHeight: 14,\n marginBottom: 8,\n },\n});\n\nexport default MessageOpenGraph;\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import AdminMessage from './Message.admin';
2
+ import FileMessage from './Message.file';
3
+ import ImageFileMessage from './Message.file.image';
4
+ import VideoFileMessage from './Message.file.video';
5
+ import UnknownMessage from './Message.unknown';
6
+ import UserMessage from './Message.user';
7
+ import OpenGraphUser from './Message.user.og';
8
+ const GroupChannelMessage = {
9
+ User: UserMessage,
10
+ OpenGraphUser: OpenGraphUser,
11
+ File: FileMessage,
12
+ ImageFile: ImageFileMessage,
13
+ VideoFile: VideoFileMessage,
14
+ Admin: AdminMessage,
15
+ Unknown: UnknownMessage
16
+ };
17
+ export default GroupChannelMessage;
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AdminMessage","FileMessage","ImageFileMessage","VideoFileMessage","UnknownMessage","UserMessage","OpenGraphUser","GroupChannelMessage","User","File","ImageFile","VideoFile","Admin","Unknown"],"sources":["index.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { SendbirdGroupChannel, SendbirdMessage, SendbirdUser } from '@sendbird/uikit-utils';\n\nimport AdminMessage from './Message.admin';\nimport FileMessage from './Message.file';\nimport ImageFileMessage from './Message.file.image';\nimport VideoFileMessage from './Message.file.video';\nimport UnknownMessage from './Message.unknown';\nimport UserMessage from './Message.user';\nimport OpenGraphUser from './Message.user.og';\n\nexport type GroupChannelMessageProps<T extends SendbirdMessage, AdditionalProps = unknown> = {\n channel: SendbirdGroupChannel;\n message: T;\n variant?: 'outgoing' | 'incoming';\n strings?: {\n senderName?: string;\n sentDate?: string;\n edited?: string;\n fileName?: string;\n unknownTitle?: string;\n unknownDescription?: string;\n };\n\n children?: React.ReactNode;\n sendingStatus?: React.ReactNode;\n\n groupedWithPrev: boolean;\n groupedWithNext: boolean;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressAvatar?: () => void;\n onPressURL?: (url: string) => void;\n onPressMentionedUser?: (mentionedUser?: SendbirdUser) => void;\n} & AdditionalProps;\n\nconst GroupChannelMessage = {\n User: UserMessage,\n OpenGraphUser: OpenGraphUser,\n File: FileMessage,\n ImageFile: ImageFileMessage,\n VideoFile: VideoFileMessage,\n Admin: AdminMessage,\n Unknown: UnknownMessage,\n};\n\nexport default GroupChannelMessage;\n"],"mappings":"AAIA,OAAOA,YAAY,MAAM,iBAAiB;AAC1C,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,aAAa,MAAM,mBAAmB;AA2B7C,MAAMC,mBAAmB,GAAG;EAC1BC,IAAI,EAAEH,WAAW;EACjBC,aAAa,EAAEA,aAAa;EAC5BG,IAAI,EAAER,WAAW;EACjBS,SAAS,EAAER,gBAAgB;EAC3BS,SAAS,EAAER,gBAAgB;EAC3BS,KAAK,EAAEZ,YAAY;EACnBa,OAAO,EAAET;AACX,CAAC;AAED,eAAeG,mBAAmB"}
@@ -44,7 +44,7 @@ const UserMessage = props => {
44
44
  } = _ref2;
45
45
  return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
46
46
  key: `${keyPrefix}-${index}`,
47
- onPress: onPressURL,
47
+ onPress: () => onPressURL === null || onPressURL === void 0 ? void 0 : onPressURL(match),
48
48
  onLongPress: onLongPress,
49
49
  color: colors.primary,
50
50
  style: parentProps === null || parentProps === void 0 ? void 0 : parentProps.style