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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +4 -0
  2. package/lib/commonjs/components/Image/FastImageInternal.js +13 -0
  3. package/lib/commonjs/components/Image/FastImageInternal.js.map +1 -0
  4. package/lib/commonjs/components/Image/Image.fastimage.js +2 -5
  5. package/lib/commonjs/components/Image/Image.fastimage.js.map +1 -1
  6. package/lib/commonjs/components/ImageWithPlaceholder/index.js +7 -1
  7. package/lib/commonjs/components/ImageWithPlaceholder/index.js.map +1 -1
  8. package/lib/commonjs/components/RegexText/index.js.map +1 -1
  9. package/lib/commonjs/index.js +8 -8
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/types.js.map +1 -1
  12. package/lib/commonjs/ui/Avatar/AvatarGroup.js +1 -1
  13. package/lib/commonjs/ui/Avatar/AvatarGroup.js.map +1 -1
  14. package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js +37 -0
  15. package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js.map +1 -0
  16. package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js +54 -0
  17. package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
  18. package/lib/commonjs/ui/GroupChannelMessage/Message.file.js +80 -0
  19. package/lib/commonjs/ui/GroupChannelMessage/Message.file.js.map +1 -0
  20. package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js +120 -0
  21. package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
  22. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js +54 -0
  23. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
  24. package/lib/commonjs/ui/GroupChannelMessage/Message.user.js +44 -0
  25. package/lib/commonjs/ui/GroupChannelMessage/Message.user.js.map +1 -0
  26. package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js +59 -0
  27. package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
  28. package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js +74 -0
  29. package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
  30. package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js +110 -0
  31. package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
  32. package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js +91 -0
  33. package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
  34. package/lib/commonjs/ui/GroupChannelMessage/index.js +26 -0
  35. package/lib/commonjs/ui/GroupChannelMessage/index.js.map +1 -0
  36. package/lib/commonjs/ui/OpenChannelMessage/Message.user.js +1 -1
  37. package/lib/commonjs/ui/OpenChannelMessage/Message.user.js.map +1 -1
  38. package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js +5 -2
  39. package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
  40. package/lib/commonjs/ui/OpenChannelMessage/index.js.map +1 -1
  41. package/lib/module/components/Image/FastImageInternal.js +6 -0
  42. package/lib/module/components/Image/FastImageInternal.js.map +1 -0
  43. package/lib/module/components/Image/Image.fastimage.js +2 -5
  44. package/lib/module/components/Image/Image.fastimage.js.map +1 -1
  45. package/lib/module/components/ImageWithPlaceholder/index.js +7 -1
  46. package/lib/module/components/ImageWithPlaceholder/index.js.map +1 -1
  47. package/lib/module/components/RegexText/index.js.map +1 -1
  48. package/lib/module/index.js +2 -2
  49. package/lib/module/index.js.map +1 -1
  50. package/lib/module/types.js.map +1 -1
  51. package/lib/module/ui/Avatar/AvatarGroup.js +1 -1
  52. package/lib/module/ui/Avatar/AvatarGroup.js.map +1 -1
  53. package/lib/module/ui/GroupChannelMessage/Message.admin.js +29 -0
  54. package/lib/module/ui/GroupChannelMessage/Message.admin.js.map +1 -0
  55. package/lib/module/ui/GroupChannelMessage/Message.file.image.js +46 -0
  56. package/lib/module/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
  57. package/lib/module/ui/GroupChannelMessage/Message.file.js +72 -0
  58. package/lib/module/ui/GroupChannelMessage/Message.file.js.map +1 -0
  59. package/lib/module/ui/GroupChannelMessage/Message.file.video.js +110 -0
  60. package/lib/module/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
  61. package/lib/module/ui/GroupChannelMessage/Message.unknown.js +46 -0
  62. package/lib/module/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
  63. package/lib/module/ui/GroupChannelMessage/Message.user.js +36 -0
  64. package/lib/module/ui/GroupChannelMessage/Message.user.js.map +1 -0
  65. package/lib/module/ui/GroupChannelMessage/Message.user.og.js +51 -0
  66. package/lib/module/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
  67. package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js +66 -0
  68. package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
  69. package/lib/module/ui/GroupChannelMessage/MessageContainer.js +102 -0
  70. package/lib/module/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
  71. package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js +83 -0
  72. package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
  73. package/lib/module/ui/GroupChannelMessage/index.js +18 -0
  74. package/lib/module/ui/GroupChannelMessage/index.js.map +1 -0
  75. package/lib/module/ui/OpenChannelMessage/Message.user.js +1 -1
  76. package/lib/module/ui/OpenChannelMessage/Message.user.js.map +1 -1
  77. package/lib/module/ui/OpenChannelMessage/Message.user.og.js +5 -2
  78. package/lib/module/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
  79. package/lib/module/ui/OpenChannelMessage/index.js.map +1 -1
  80. package/lib/typescript/src/components/Image/FastImageInternal.d.ts +3 -0
  81. package/lib/typescript/src/components/RegexText/index.d.ts +2 -2
  82. package/lib/typescript/src/index.d.ts +4 -2
  83. package/lib/typescript/src/types.d.ts +1 -9
  84. package/lib/typescript/src/ui/GroupChannelMessage/Message.admin.d.ts +4 -0
  85. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.d.ts +5 -0
  86. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.image.d.ts +4 -0
  87. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.video.d.ts +9 -0
  88. package/lib/typescript/src/ui/GroupChannelMessage/Message.unknown.d.ts +4 -0
  89. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.d.ts +9 -0
  90. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.og.d.ts +9 -0
  91. package/lib/typescript/src/ui/GroupChannelMessage/MessageBubbleWithText.d.ts +10 -0
  92. package/lib/typescript/src/ui/GroupChannelMessage/MessageContainer.d.ts +9 -0
  93. package/lib/typescript/src/ui/GroupChannelMessage/MessageOpenGraph.d.ts +8 -0
  94. package/lib/typescript/src/ui/GroupChannelMessage/index.d.ts +191 -0
  95. package/lib/typescript/src/ui/OpenChannelMessage/index.d.ts +7 -7
  96. package/package.json +6 -6
  97. package/src/components/Image/FastImageInternal.tsx +9 -0
  98. package/src/components/Image/Image.fastimage.tsx +2 -7
  99. package/src/components/ImageWithPlaceholder/index.tsx +3 -2
  100. package/src/components/RegexText/index.tsx +2 -2
  101. package/src/index.ts +5 -2
  102. package/src/types.ts +1 -11
  103. package/src/ui/Avatar/AvatarGroup.tsx +1 -1
  104. package/src/ui/GroupChannelMessage/Message.admin.tsx +34 -0
  105. package/src/ui/GroupChannelMessage/Message.file.image.tsx +45 -0
  106. package/src/ui/GroupChannelMessage/Message.file.tsx +70 -0
  107. package/src/ui/GroupChannelMessage/Message.file.video.tsx +106 -0
  108. package/src/ui/GroupChannelMessage/Message.unknown.tsx +47 -0
  109. package/src/ui/GroupChannelMessage/Message.user.og.tsx +62 -0
  110. package/src/ui/GroupChannelMessage/Message.user.tsx +49 -0
  111. package/src/ui/GroupChannelMessage/MessageBubbleWithText.tsx +80 -0
  112. package/src/ui/GroupChannelMessage/MessageContainer.tsx +106 -0
  113. package/src/ui/GroupChannelMessage/MessageOpenGraph.tsx +84 -0
  114. package/src/ui/GroupChannelMessage/index.ts +48 -0
  115. package/src/ui/OpenChannelMessage/Message.user.og.tsx +6 -2
  116. package/src/ui/OpenChannelMessage/Message.user.tsx +1 -1
  117. package/src/ui/OpenChannelMessage/index.ts +1 -1
  118. package/lib/commonjs/components/URLParsedText/index.js +0 -46
  119. package/lib/commonjs/components/URLParsedText/index.js.map +0 -1
  120. package/lib/module/components/URLParsedText/index.js +0 -38
  121. package/lib/module/components/URLParsedText/index.js.map +0 -1
  122. package/lib/typescript/src/components/URLParsedText/index.d.ts +0 -8
  123. package/src/components/URLParsedText/index.tsx +0 -50
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Box","Text","createStyleSheet","useUIKitTheme","AdminMessage","props","colors","createElement","style","styles","container","caption2","color","onBackground02","text","message","width","alignSelf","alignItems","textAlign"],"sources":["Message.admin.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdAdminMessage } 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 type { GroupChannelMessageProps } from './index';\n\nconst AdminMessage = (props: GroupChannelMessageProps<SendbirdAdminMessage>) => {\n const { colors } = useUIKitTheme();\n\n return (\n <Box style={styles.container}>\n <Text caption2 color={colors.onBackground02} style={styles.text}>\n {props.message.message}\n </Text>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n width: 300,\n alignSelf: 'center',\n alignItems: 'center',\n },\n text: {\n textAlign: 'center',\n },\n});\n\nexport default AdminMessage;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAIzB,OAAOC,GAAG,MAAM,sBAAsB;AACtC,OAAOC,IAAI,MAAM,uBAAuB;AACxC,OAAOC,gBAAgB,MAAM,+BAA+B;AAC5D,OAAOC,aAAa,MAAM,2BAA2B;AAGrD,MAAMC,YAAY,GAAIC,KAAqD,IAAK;EAC9E,MAAM;IAAEC;EAAO,CAAC,GAAGH,aAAa,EAAE;EAElC,oBACEJ,KAAA,CAAAQ,aAAA,CAACP,GAAG;IAACQ,KAAK,EAAEC,MAAM,CAACC;EAAU,gBAC3BX,KAAA,CAAAQ,aAAA,CAACN,IAAI;IAACU,QAAQ;IAACC,KAAK,EAAEN,MAAM,CAACO,cAAe;IAACL,KAAK,EAAEC,MAAM,CAACK;EAAK,GAC7DT,KAAK,CAACU,OAAO,CAACA,OAAO,CACjB,CACH;AAEV,CAAC;AAED,MAAMN,MAAM,GAAGP,gBAAgB,CAAC;EAC9BQ,SAAS,EAAE;IACTM,KAAK,EAAE,GAAG;IACVC,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE;EACd,CAAC;EACDJ,IAAI,EAAE;IACJK,SAAS,EAAE;EACb;AACF,CAAC,CAAC;AAEF,eAAef,YAAY"}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';
3
+ import Box from '../../components/Box';
4
+ import ImageWithPlaceholder from '../../components/ImageWithPlaceholder';
5
+ import PressBox from '../../components/PressBox';
6
+ import createStyleSheet from '../../styles/createStyleSheet';
7
+ import useUIKitTheme from '../../theme/useUIKitTheme';
8
+ import MessageContainer from './MessageContainer';
9
+ const ImageFileMessage = props => {
10
+ const {
11
+ onPress,
12
+ onLongPress,
13
+ variant = 'incoming'
14
+ } = props;
15
+ const {
16
+ colors
17
+ } = useUIKitTheme();
18
+ return /*#__PURE__*/React.createElement(MessageContainer, props, /*#__PURE__*/React.createElement(Box, {
19
+ style: styles.container,
20
+ backgroundColor: colors.ui.groupChannelMessage[variant].enabled.background
21
+ }, /*#__PURE__*/React.createElement(PressBox, {
22
+ activeOpacity: 0.8,
23
+ onPress: onPress,
24
+ onLongPress: onLongPress
25
+ }, /*#__PURE__*/React.createElement(ImageWithPlaceholder, {
26
+ source: {
27
+ uri: getAvailableUriFromFileMessage(props.message)
28
+ },
29
+ style: styles.image
30
+ })), props.children));
31
+ };
32
+ const styles = createStyleSheet({
33
+ container: {
34
+ borderRadius: 16,
35
+ overflow: 'hidden'
36
+ },
37
+ image: {
38
+ maxWidth: 240,
39
+ width: 240,
40
+ height: 160,
41
+ borderRadius: 16,
42
+ overflow: 'hidden'
43
+ }
44
+ });
45
+ export default ImageFileMessage;
46
+ //# sourceMappingURL=Message.file.image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","getAvailableUriFromFileMessage","Box","ImageWithPlaceholder","PressBox","createStyleSheet","useUIKitTheme","MessageContainer","ImageFileMessage","props","onPress","onLongPress","variant","colors","createElement","style","styles","container","backgroundColor","ui","groupChannelMessage","enabled","background","activeOpacity","source","uri","message","image","children","borderRadius","overflow","maxWidth","width","height"],"sources":["Message.file.image.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdFileMessage } from '@sendbird/uikit-utils';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\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\nconst ImageFileMessage = (props: GroupChannelMessageProps<SendbirdFileMessage>) => {\n const { onPress, onLongPress, variant = 'incoming' } = props;\n\n const { colors } = useUIKitTheme();\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}>\n <ImageWithPlaceholder source={{ uri: getAvailableUriFromFileMessage(props.message) }} style={styles.image} />\n </PressBox>\n {props.children}\n </Box>\n </MessageContainer>\n );\n};\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});\n\nexport default ImageFileMessage;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,SAASC,8BAA8B,QAAQ,uBAAuB;AAEtE,OAAOC,GAAG,MAAM,sBAAsB;AACtC,OAAOC,oBAAoB,MAAM,uCAAuC;AACxE,OAAOC,QAAQ,MAAM,2BAA2B;AAChD,OAAOC,gBAAgB,MAAM,+BAA+B;AAC5D,OAAOC,aAAa,MAAM,2BAA2B;AACrD,OAAOC,gBAAgB,MAAM,oBAAoB;AAGjD,MAAMC,gBAAgB,GAAIC,KAAoD,IAAK;EACjF,MAAM;IAAEC,OAAO;IAAEC,WAAW;IAAEC,OAAO,GAAG;EAAW,CAAC,GAAGH,KAAK;EAE5D,MAAM;IAAEI;EAAO,CAAC,GAAGP,aAAa,EAAE;EAElC,oBACEN,KAAA,CAAAc,aAAA,CAACP,gBAAgB,EAAKE,KAAK,eACzBT,KAAA,CAAAc,aAAA,CAACZ,GAAG;IAACa,KAAK,EAAEC,MAAM,CAACC,SAAU;IAACC,eAAe,EAAEL,MAAM,CAACM,EAAE,CAACC,mBAAmB,CAACR,OAAO,CAAC,CAACS,OAAO,CAACC;EAAW,gBACvGtB,KAAA,CAAAc,aAAA,CAACV,QAAQ;IAACmB,aAAa,EAAE,GAAI;IAACb,OAAO,EAAEA,OAAQ;IAACC,WAAW,EAAEA;EAAY,gBACvEX,KAAA,CAAAc,aAAA,CAACX,oBAAoB;IAACqB,MAAM,EAAE;MAAEC,GAAG,EAAExB,8BAA8B,CAACQ,KAAK,CAACiB,OAAO;IAAE,CAAE;IAACX,KAAK,EAAEC,MAAM,CAACW;EAAM,EAAG,CACpG,EACVlB,KAAK,CAACmB,QAAQ,CACX,CACW;AAEvB,CAAC;AAED,MAAMZ,MAAM,GAAGX,gBAAgB,CAAC;EAC9BY,SAAS,EAAE;IACTY,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ,CAAC;EACDH,KAAK,EAAE;IACLI,QAAQ,EAAE,GAAG;IACbC,KAAK,EAAE,GAAG;IACVC,MAAM,EAAE,GAAG;IACXJ,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAetB,gBAAgB"}
@@ -0,0 +1,72 @@
1
+ import React from 'react';
2
+ import { getFileExtension, getFileType } from '@sendbird/uikit-utils';
3
+ import Box from '../../components/Box';
4
+ import Icon from '../../components/Icon';
5
+ import PressBox from '../../components/PressBox';
6
+ import Text from '../../components/Text';
7
+ import createStyleSheet from '../../styles/createStyleSheet';
8
+ import useUIKitTheme from '../../theme/useUIKitTheme';
9
+ import MessageContainer from './MessageContainer';
10
+ const iconMapper = {
11
+ audio: 'file-audio',
12
+ image: 'photo',
13
+ video: 'play',
14
+ file: 'file-document'
15
+ };
16
+ const FileMessage = props => {
17
+ const {
18
+ variant = 'incoming'
19
+ } = props;
20
+ const {
21
+ colors
22
+ } = useUIKitTheme();
23
+ const fileType = getFileType(props.message.type || getFileExtension(props.message.name));
24
+ const color = colors.ui.groupChannelMessage[variant];
25
+ return /*#__PURE__*/React.createElement(MessageContainer, props, /*#__PURE__*/React.createElement(PressBox, {
26
+ onPress: props.onPress,
27
+ onLongPress: props.onLongPress
28
+ }, _ref => {
29
+ var _props$strings;
30
+ let {
31
+ pressed
32
+ } = _ref;
33
+ return /*#__PURE__*/React.createElement(Box, {
34
+ backgroundColor: pressed ? color.pressed.background : color.enabled.background,
35
+ style: styles.container
36
+ }, /*#__PURE__*/React.createElement(Box, {
37
+ style: styles.bubble
38
+ }, /*#__PURE__*/React.createElement(Icon, {
39
+ icon: iconMapper[fileType],
40
+ size: 24,
41
+ containerStyle: {
42
+ backgroundColor: colors.background,
43
+ padding: 2,
44
+ borderRadius: 8,
45
+ marginRight: 8
46
+ }
47
+ }), /*#__PURE__*/React.createElement(Text, {
48
+ body3: true,
49
+ ellipsizeMode: 'middle',
50
+ numberOfLines: 1,
51
+ color: pressed ? color.pressed.textMsg : color.enabled.textMsg,
52
+ style: styles.name
53
+ }, ((_props$strings = props.strings) === null || _props$strings === void 0 ? void 0 : _props$strings.fileName) || props.message.name)), props.children);
54
+ }));
55
+ };
56
+ const styles = createStyleSheet({
57
+ container: {
58
+ overflow: 'hidden',
59
+ borderRadius: 16
60
+ },
61
+ bubble: {
62
+ flexDirection: 'row',
63
+ alignItems: 'center',
64
+ paddingHorizontal: 12,
65
+ paddingVertical: 6
66
+ },
67
+ name: {
68
+ flexShrink: 1
69
+ }
70
+ });
71
+ export default FileMessage;
72
+ //# sourceMappingURL=Message.file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","getFileExtension","getFileType","Box","Icon","PressBox","Text","createStyleSheet","useUIKitTheme","MessageContainer","iconMapper","audio","image","video","file","FileMessage","props","variant","colors","fileType","message","type","name","color","ui","groupChannelMessage","createElement","onPress","onLongPress","_ref","_props$strings","pressed","backgroundColor","background","enabled","style","styles","container","bubble","icon","size","containerStyle","padding","borderRadius","marginRight","body3","ellipsizeMode","numberOfLines","textMsg","strings","fileName","children","overflow","flexDirection","alignItems","paddingHorizontal","paddingVertical","flexShrink"],"sources":["Message.file.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendbirdFileMessage, getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Icon from '../../components/Icon';\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 iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = GroupChannelMessageProps<SendbirdFileMessage>;\n\nconst FileMessage = (props: Props) => {\n const { variant = 'incoming' } = props;\n const { colors } = useUIKitTheme();\n\n const fileType = getFileType(props.message.type || getFileExtension(props.message.name));\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 <Box style={styles.bubble}>\n <Icon\n icon={iconMapper[fileType]}\n size={24}\n containerStyle={{ backgroundColor: colors.background, padding: 2, borderRadius: 8, marginRight: 8 }}\n />\n <Text\n body3\n ellipsizeMode={'middle'}\n numberOfLines={1}\n color={pressed ? color.pressed.textMsg : color.enabled.textMsg}\n style={styles.name}\n >\n {props.strings?.fileName || props.message.name}\n </Text>\n </Box>\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 bubble: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingVertical: 6,\n },\n name: {\n flexShrink: 1,\n },\n});\n\nexport default FileMessage;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAA8BC,gBAAgB,EAAEC,WAAW,QAAQ,uBAAuB;AAE1F,OAAOC,GAAG,MAAM,sBAAsB;AACtC,OAAOC,IAAI,MAAM,uBAAuB;AACxC,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,UAAU,GAAG;EAAEC,KAAK,EAAE,YAAY;EAAEC,KAAK,EAAE,OAAO;EAAEC,KAAK,EAAE,MAAM;EAAEC,IAAI,EAAE;AAAgB,CAAU;AAIzG,MAAMC,WAAW,GAAIC,KAAY,IAAK;EACpC,MAAM;IAAEC,OAAO,GAAG;EAAW,CAAC,GAAGD,KAAK;EACtC,MAAM;IAAEE;EAAO,CAAC,GAAGV,aAAa,EAAE;EAElC,MAAMW,QAAQ,GAAGjB,WAAW,CAACc,KAAK,CAACI,OAAO,CAACC,IAAI,IAAIpB,gBAAgB,CAACe,KAAK,CAACI,OAAO,CAACE,IAAI,CAAC,CAAC;EACxF,MAAMC,KAAK,GAAGL,MAAM,CAACM,EAAE,CAACC,mBAAmB,CAACR,OAAO,CAAC;EAEpD,oBACEjB,KAAA,CAAA0B,aAAA,CAACjB,gBAAgB,EAAKO,KAAK,eACzBhB,KAAA,CAAA0B,aAAA,CAACrB,QAAQ;IAACsB,OAAO,EAAEX,KAAK,CAACW,OAAQ;IAACC,WAAW,EAAEZ,KAAK,CAACY;EAAY,GAC9DC,IAAA;IAAA,IAAAC,cAAA;IAAA,IAAC;MAAEC;IAAQ,CAAC,GAAAF,IAAA;IAAA,oBACX7B,KAAA,CAAA0B,aAAA,CAACvB,GAAG;MAAC6B,eAAe,EAAED,OAAO,GAAGR,KAAK,CAACQ,OAAO,CAACE,UAAU,GAAGV,KAAK,CAACW,OAAO,CAACD,UAAW;MAACE,KAAK,EAAEC,MAAM,CAACC;IAAU,gBAC3GrC,KAAA,CAAA0B,aAAA,CAACvB,GAAG;MAACgC,KAAK,EAAEC,MAAM,CAACE;IAAO,gBACxBtC,KAAA,CAAA0B,aAAA,CAACtB,IAAI;MACHmC,IAAI,EAAE7B,UAAU,CAACS,QAAQ,CAAE;MAC3BqB,IAAI,EAAE,EAAG;MACTC,cAAc,EAAE;QAAET,eAAe,EAAEd,MAAM,CAACe,UAAU;QAAES,OAAO,EAAE,CAAC;QAAEC,YAAY,EAAE,CAAC;QAAEC,WAAW,EAAE;MAAE;IAAE,EACpG,eACF5C,KAAA,CAAA0B,aAAA,CAACpB,IAAI;MACHuC,KAAK;MACLC,aAAa,EAAE,QAAS;MACxBC,aAAa,EAAE,CAAE;MACjBxB,KAAK,EAAEQ,OAAO,GAAGR,KAAK,CAACQ,OAAO,CAACiB,OAAO,GAAGzB,KAAK,CAACW,OAAO,CAACc,OAAQ;MAC/Db,KAAK,EAAEC,MAAM,CAACd;IAAK,GAElB,EAAAQ,cAAA,GAAAd,KAAK,CAACiC,OAAO,cAAAnB,cAAA,uBAAbA,cAAA,CAAeoB,QAAQ,KAAIlC,KAAK,CAACI,OAAO,CAACE,IAAI,CACzC,CACH,EACLN,KAAK,CAACmC,QAAQ,CACX;EAAA,CACP,CACQ,CACM;AAEvB,CAAC;AAED,MAAMf,MAAM,GAAG7B,gBAAgB,CAAC;EAC9B8B,SAAS,EAAE;IACTe,QAAQ,EAAE,QAAQ;IAClBT,YAAY,EAAE;EAChB,CAAC;EACDL,MAAM,EAAE;IACNe,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB,CAAC;EACDlC,IAAI,EAAE;IACJmC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF,eAAe1C,WAAW"}
@@ -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