@sendbird/uikit-react-native 3.2.0 → 3.4.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 (116) hide show
  1. package/lib/commonjs/components/ChannelInput/EditInput.js +2 -11
  2. package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
  3. package/lib/commonjs/components/ChannelInput/SendInput.js +2 -11
  4. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  5. package/lib/commonjs/components/ChannelInput/index.js +30 -3
  6. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  7. package/lib/commonjs/components/ChannelMessageList/index.js +148 -116
  8. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  9. package/lib/commonjs/components/FileViewer/FileViewerContent.js +140 -0
  10. package/lib/commonjs/components/FileViewer/FileViewerContent.js.map +1 -0
  11. package/lib/commonjs/components/FileViewer/FileViewerFooter.js +82 -0
  12. package/lib/commonjs/components/FileViewer/FileViewerFooter.js.map +1 -0
  13. package/lib/commonjs/components/FileViewer/FileViewerHeader.js +93 -0
  14. package/lib/commonjs/components/FileViewer/FileViewerHeader.js.map +1 -0
  15. package/lib/commonjs/components/FileViewer/index.js +133 -0
  16. package/lib/commonjs/components/FileViewer/index.js.map +1 -0
  17. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +34 -1
  18. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  19. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  20. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js +14 -4
  21. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  22. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +11 -9
  23. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  24. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  25. package/lib/commonjs/domain/messageSearch/component/MessageSearchHeader.js +4 -1
  26. package/lib/commonjs/domain/messageSearch/component/MessageSearchHeader.js.map +1 -1
  27. package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js +4 -2
  28. package/lib/commonjs/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js.map +1 -1
  29. package/lib/commonjs/fragments/createGroupChannelFragment.js +18 -16
  30. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  31. package/lib/commonjs/index.js +4 -0
  32. package/lib/commonjs/index.js.map +1 -1
  33. package/lib/commonjs/types.js +7 -0
  34. package/lib/commonjs/types.js.map +1 -1
  35. package/lib/commonjs/utils/promise.js +138 -0
  36. package/lib/commonjs/utils/promise.js.map +1 -0
  37. package/lib/commonjs/version.js +1 -1
  38. package/lib/commonjs/version.js.map +1 -1
  39. package/lib/module/components/ChannelInput/EditInput.js +3 -12
  40. package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
  41. package/lib/module/components/ChannelInput/SendInput.js +3 -12
  42. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  43. package/lib/module/components/ChannelInput/index.js +32 -5
  44. package/lib/module/components/ChannelInput/index.js.map +1 -1
  45. package/lib/module/components/ChannelMessageList/index.js +148 -116
  46. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  47. package/lib/module/components/FileViewer/FileViewerContent.js +130 -0
  48. package/lib/module/components/FileViewer/FileViewerContent.js.map +1 -0
  49. package/lib/module/components/FileViewer/FileViewerFooter.js +74 -0
  50. package/lib/module/components/FileViewer/FileViewerFooter.js.map +1 -0
  51. package/lib/module/components/FileViewer/FileViewerHeader.js +85 -0
  52. package/lib/module/components/FileViewer/FileViewerHeader.js.map +1 -0
  53. package/lib/module/components/FileViewer/index.js +123 -0
  54. package/lib/module/components/FileViewer/index.js.map +1 -0
  55. package/lib/module/components/GroupChannelMessageRenderer/index.js +34 -2
  56. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  57. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  58. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js +15 -5
  59. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  60. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +11 -9
  61. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  62. package/lib/module/domain/groupChannel/types.js.map +1 -1
  63. package/lib/module/domain/messageSearch/component/MessageSearchHeader.js +4 -1
  64. package/lib/module/domain/messageSearch/component/MessageSearchHeader.js.map +1 -1
  65. package/lib/module/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js +4 -2
  66. package/lib/module/domain/openChannelCreate/component/OpenChannelCreateProfileInput.js.map +1 -1
  67. package/lib/module/fragments/createGroupChannelFragment.js +19 -17
  68. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  69. package/lib/module/index.js +4 -0
  70. package/lib/module/index.js.map +1 -1
  71. package/lib/module/types.js +5 -1
  72. package/lib/module/types.js.map +1 -1
  73. package/lib/module/utils/promise.js +132 -0
  74. package/lib/module/utils/promise.js.map +1 -0
  75. package/lib/module/version.js +1 -1
  76. package/lib/module/version.js.map +1 -1
  77. package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -0
  78. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +4 -1
  79. package/lib/typescript/src/components/FileViewer/FileViewerContent.d.ts +13 -0
  80. package/lib/typescript/src/components/FileViewer/FileViewerFooter.d.ts +9 -0
  81. package/lib/typescript/src/components/FileViewer/FileViewerHeader.d.ts +10 -0
  82. package/lib/typescript/src/components/{FileViewer.d.ts → FileViewer/index.d.ts} +5 -1
  83. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -0
  84. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +2 -0
  85. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  86. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +2 -2
  87. package/lib/typescript/src/domain/groupChannel/types.d.ts +5 -2
  88. package/lib/typescript/src/types.d.ts +4 -0
  89. package/lib/typescript/src/utils/promise.d.ts +7 -0
  90. package/lib/typescript/src/version.d.ts +1 -1
  91. package/package.json +8 -7
  92. package/src/components/ChannelInput/EditInput.tsx +3 -15
  93. package/src/components/ChannelInput/SendInput.tsx +2 -9
  94. package/src/components/ChannelInput/index.tsx +27 -4
  95. package/src/components/ChannelMessageList/index.tsx +145 -115
  96. package/src/components/FileViewer/FileViewerContent.tsx +141 -0
  97. package/src/components/FileViewer/FileViewerFooter.tsx +73 -0
  98. package/src/components/FileViewer/FileViewerHeader.tsx +86 -0
  99. package/src/components/FileViewer/index.tsx +139 -0
  100. package/src/components/GroupChannelMessageRenderer/index.tsx +34 -2
  101. package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +3 -2
  102. package/src/domain/groupChannel/component/GroupChannelHeader.tsx +14 -3
  103. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +8 -6
  104. package/src/domain/groupChannel/types.ts +6 -2
  105. package/src/domain/messageSearch/component/MessageSearchHeader.tsx +4 -1
  106. package/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.tsx +4 -2
  107. package/src/fragments/createGroupChannelFragment.tsx +25 -15
  108. package/src/index.ts +5 -1
  109. package/src/types.ts +5 -0
  110. package/src/utils/promise.ts +139 -0
  111. package/src/version.ts +1 -1
  112. package/lib/commonjs/components/FileViewer.js +0 -300
  113. package/lib/commonjs/components/FileViewer.js.map +0 -1
  114. package/lib/module/components/FileViewer.js +0 -291
  115. package/lib/module/components/FileViewer.js.map +0 -1
  116. package/src/components/FileViewer.tsx +0 -288
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
9
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const FileViewerFooter = _ref => {
12
+ let {
13
+ bottomInset,
14
+ deleteShown,
15
+ onPressDelete,
16
+ onPressDownload
17
+ } = _ref;
18
+ const {
19
+ palette
20
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
21
+ const {
22
+ defaultHeight
23
+ } = (0, _uikitReactNativeFoundation.useHeaderStyle)();
24
+ const {
25
+ left,
26
+ right
27
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
28
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
29
+ style: [styles.container, {
30
+ paddingLeft: styles.container.paddingHorizontal + left,
31
+ paddingRight: styles.container.paddingHorizontal + right,
32
+ paddingBottom: bottomInset,
33
+ height: defaultHeight + bottomInset,
34
+ backgroundColor: palette.overlay01
35
+ }]
36
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
37
+ activeOpacity: 0.75,
38
+ onPress: onPressDownload,
39
+ style: styles.buttonContainer
40
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
41
+ icon: 'download',
42
+ size: 24,
43
+ color: palette.onBackgroundDark01
44
+ })), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
45
+ style: styles.titleContainer
46
+ }), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
47
+ activeOpacity: 0.75,
48
+ onPress: onPressDelete,
49
+ style: styles.buttonContainer,
50
+ disabled: !deleteShown
51
+ }, deleteShown && /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
52
+ icon: 'delete',
53
+ size: 24,
54
+ color: palette.onBackgroundDark01
55
+ })));
56
+ };
57
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
58
+ container: {
59
+ position: 'absolute',
60
+ left: 0,
61
+ right: 0,
62
+ bottom: 0,
63
+ flexDirection: 'row',
64
+ alignItems: 'center',
65
+ justifyContent: 'center',
66
+ paddingHorizontal: 12
67
+ },
68
+ buttonContainer: {
69
+ width: 32,
70
+ height: 32,
71
+ alignItems: 'center',
72
+ justifyContent: 'center'
73
+ },
74
+ titleContainer: {
75
+ flex: 1,
76
+ alignItems: 'center',
77
+ justifyContent: 'center'
78
+ }
79
+ });
80
+ var _default = FileViewerFooter;
81
+ exports.default = _default;
82
+ //# sourceMappingURL=FileViewerFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","obj","__esModule","default","FileViewerFooter","_ref","bottomInset","deleteShown","onPressDelete","onPressDownload","palette","useUIKitTheme","defaultHeight","useHeaderStyle","left","right","useSafeAreaInsets","createElement","Box","style","styles","container","paddingLeft","paddingHorizontal","paddingRight","paddingBottom","height","backgroundColor","overlay01","PressBox","activeOpacity","onPress","buttonContainer","Icon","icon","size","color","onBackgroundDark01","titleContainer","disabled","createStyleSheet","position","bottom","flexDirection","alignItems","justifyContent","width","flex","_default","exports"],"sources":["FileViewerFooter.tsx"],"sourcesContent":["import React from 'react';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Box,\n Icon,\n PressBox,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\n\ntype Props = {\n bottomInset: number;\n deleteShown: boolean;\n onPressDelete: () => void;\n onPressDownload: () => void;\n};\n\nconst FileViewerFooter = ({ bottomInset, deleteShown, onPressDelete, onPressDownload }: Props) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <Box\n style={[\n styles.container,\n {\n paddingLeft: styles.container.paddingHorizontal + left,\n paddingRight: styles.container.paddingHorizontal + right,\n paddingBottom: bottomInset,\n height: defaultHeight + bottomInset,\n backgroundColor: palette.overlay01,\n },\n ]}\n >\n <PressBox activeOpacity={0.75} onPress={onPressDownload} style={styles.buttonContainer}>\n <Icon icon={'download'} size={24} color={palette.onBackgroundDark01} />\n </PressBox>\n <Box style={styles.titleContainer} />\n <PressBox activeOpacity={0.75} onPress={onPressDelete} style={styles.buttonContainer} disabled={!deleteShown}>\n {deleteShown && <Icon icon={'delete'} size={24} color={palette.onBackgroundDark01} />}\n </PressBox>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n },\n buttonContainer: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n titleContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default FileViewerFooter;\n"],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
9
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
10
+ var _uikitUtils = require("@sendbird/uikit-utils");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const FileViewerHeader = _ref => {
13
+ let {
14
+ headerShown = true,
15
+ topInset,
16
+ onClose,
17
+ subtitle,
18
+ title
19
+ } = _ref;
20
+ const {
21
+ palette
22
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
23
+ const {
24
+ defaultHeight
25
+ } = (0, _uikitReactNativeFoundation.useHeaderStyle)();
26
+ const {
27
+ left,
28
+ right
29
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
30
+ if (!headerShown) return null;
31
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
32
+ style: [styles.container, {
33
+ paddingLeft: styles.container.paddingHorizontal + left,
34
+ paddingRight: styles.container.paddingHorizontal + right,
35
+ paddingTop: topInset,
36
+ height: defaultHeight + topInset,
37
+ backgroundColor: palette.overlay01
38
+ }]
39
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
40
+ activeOpacity: 0.75,
41
+ onPress: onClose,
42
+ style: styles.buttonContainer
43
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
44
+ icon: 'close',
45
+ size: 24,
46
+ color: palette.onBackgroundDark01
47
+ })), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
48
+ style: styles.titleContainer
49
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
50
+ h2: true,
51
+ color: palette.onBackgroundDark01,
52
+ style: styles.title,
53
+ numberOfLines: 1
54
+ }, (0, _uikitUtils.truncate)(title, {
55
+ mode: 'mid',
56
+ maxLen: 18
57
+ })), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
58
+ caption2: true,
59
+ color: palette.onBackgroundDark01,
60
+ numberOfLines: 1
61
+ }, subtitle)), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
62
+ style: styles.buttonContainer
63
+ }));
64
+ };
65
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
66
+ container: {
67
+ top: 0,
68
+ left: 0,
69
+ right: 0,
70
+ position: 'absolute',
71
+ flexDirection: 'row',
72
+ alignItems: 'center',
73
+ justifyContent: 'center',
74
+ paddingHorizontal: 12
75
+ },
76
+ buttonContainer: {
77
+ width: 32,
78
+ height: 32,
79
+ alignItems: 'center',
80
+ justifyContent: 'center'
81
+ },
82
+ titleContainer: {
83
+ flex: 1,
84
+ alignItems: 'center',
85
+ justifyContent: 'center'
86
+ },
87
+ title: {
88
+ marginBottom: 2
89
+ }
90
+ });
91
+ var _default = FileViewerHeader;
92
+ exports.default = _default;
93
+ //# sourceMappingURL=FileViewerHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","obj","__esModule","default","FileViewerHeader","_ref","headerShown","topInset","onClose","subtitle","title","palette","useUIKitTheme","defaultHeight","useHeaderStyle","left","right","useSafeAreaInsets","createElement","Box","style","styles","container","paddingLeft","paddingHorizontal","paddingRight","paddingTop","height","backgroundColor","overlay01","PressBox","activeOpacity","onPress","buttonContainer","Icon","icon","size","color","onBackgroundDark01","titleContainer","Text","h2","numberOfLines","truncate","mode","maxLen","caption2","createStyleSheet","top","position","flexDirection","alignItems","justifyContent","width","flex","marginBottom","_default","exports"],"sources":["FileViewerHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { truncate } from '@sendbird/uikit-utils';\n\ntype Props = {\n headerShown?: boolean;\n topInset: number;\n onClose: () => void;\n title: string;\n subtitle: string;\n};\n\nconst FileViewerHeader = ({ headerShown = true, topInset, onClose, subtitle, title }: Props) => {\n const { palette } = useUIKitTheme();\n const { defaultHeight } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n if (!headerShown) return null;\n\n return (\n <Box\n style={[\n styles.container,\n {\n paddingLeft: styles.container.paddingHorizontal + left,\n paddingRight: styles.container.paddingHorizontal + right,\n paddingTop: topInset,\n height: defaultHeight + topInset,\n backgroundColor: palette.overlay01,\n },\n ]}\n >\n <PressBox activeOpacity={0.75} onPress={onClose} style={styles.buttonContainer}>\n <Icon icon={'close'} size={24} color={palette.onBackgroundDark01} />\n </PressBox>\n <Box style={styles.titleContainer}>\n <Text h2 color={palette.onBackgroundDark01} style={styles.title} numberOfLines={1}>\n {truncate(title, { mode: 'mid', maxLen: 18 })}\n </Text>\n <Text caption2 color={palette.onBackgroundDark01} numberOfLines={1}>\n {subtitle}\n </Text>\n </Box>\n <Box style={styles.buttonContainer} />\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n top: 0,\n left: 0,\n right: 0,\n position: 'absolute',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n },\n buttonContainer: {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n titleContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n title: {\n marginBottom: 2,\n },\n});\n\nexport default FileViewerHeader;\n"],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
10
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
11
+ var _uikitUtils = require("@sendbird/uikit-utils");
12
+ var _useContext = require("../../hooks/useContext");
13
+ var _FileViewerContent = _interopRequireDefault(require("./FileViewerContent"));
14
+ var _FileViewerFooter = _interopRequireDefault(require("./FileViewerFooter"));
15
+ var _FileViewerHeader = _interopRequireDefault(require("./FileViewerHeader"));
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ const FileViewer = _ref => {
20
+ let {
21
+ headerShown = true,
22
+ maxZoom = 3,
23
+ minZoom = 1,
24
+ headerTopInset,
25
+ fileMessage,
26
+ onClose,
27
+ onPressDownload,
28
+ onPressDelete,
29
+ deleteMessage
30
+ } = _ref;
31
+ const {
32
+ topInset,
33
+ statusBarTranslucent
34
+ } = (0, _uikitReactNativeFoundation.useHeaderStyle)();
35
+ const {
36
+ bottom
37
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
38
+ const {
39
+ palette
40
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
41
+ const {
42
+ alert
43
+ } = (0, _uikitReactNativeFoundation.useAlert)();
44
+ const {
45
+ show
46
+ } = (0, _uikitReactNativeFoundation.useToast)();
47
+ const {
48
+ fileService
49
+ } = (0, _useContext.usePlatformService)();
50
+ const {
51
+ currentUser
52
+ } = (0, _useContext.useSendbirdChat)();
53
+ const {
54
+ STRINGS
55
+ } = (0, _useContext.useLocalization)();
56
+ const fileType = (0, _uikitUtils.getFileType)(fileMessage.type || (0, _uikitUtils.getFileExtension)(fileMessage.url));
57
+ const canDelete = (0, _uikitUtils.isMyMessage)(fileMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId);
58
+ const basicTopInset = statusBarTranslucent ? topInset : 0;
59
+ const onPressDeleteButton = () => {
60
+ if (!canDelete) return;
61
+ if (onPressDelete) {
62
+ onPressDelete(fileMessage);
63
+ } else {
64
+ alert({
65
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,
66
+ buttons: [{
67
+ text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL
68
+ }, {
69
+ text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,
70
+ style: 'destructive',
71
+ onPress: () => {
72
+ deleteMessage().then(() => {
73
+ onClose();
74
+ }).catch(() => {
75
+ show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');
76
+ });
77
+ }
78
+ }]
79
+ });
80
+ }
81
+ };
82
+ const onPressDownloadButton = () => {
83
+ if (onPressDownload) {
84
+ onPressDownload(fileMessage);
85
+ } else {
86
+ if ((0, _uikitUtils.toMegabyte)(fileMessage.size) > 4) {
87
+ show(STRINGS.TOAST.DOWNLOAD_START, 'success');
88
+ }
89
+ fileService.save({
90
+ fileUrl: fileMessage.url,
91
+ fileName: fileMessage.name,
92
+ fileType: fileMessage.type
93
+ }).then(response => {
94
+ show(STRINGS.TOAST.DOWNLOAD_OK, 'success');
95
+ _uikitUtils.Logger.log('File saved to', response);
96
+ }).catch(err => {
97
+ show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');
98
+ _uikitUtils.Logger.log('File save failure', err);
99
+ });
100
+ }
101
+ };
102
+ (0, _react.useEffect)(() => {
103
+ if (fileType === 'file') onClose();
104
+ }, []);
105
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
106
+ flex: 1,
107
+ backgroundColor: palette.background700
108
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.StatusBar, {
109
+ barStyle: 'light-content',
110
+ animated: true
111
+ }), /*#__PURE__*/_react.default.createElement(_FileViewerHeader.default, {
112
+ topInset: headerTopInset ?? basicTopInset,
113
+ headerShown: headerShown,
114
+ title: STRINGS.FILE_VIEWER.TITLE(fileMessage),
115
+ subtitle: STRINGS.FILE_VIEWER.SUBTITLE(fileMessage),
116
+ onClose: onClose
117
+ }), /*#__PURE__*/_react.default.createElement(_FileViewerContent.default, {
118
+ topInset: headerTopInset ?? basicTopInset,
119
+ bottomInset: bottom,
120
+ type: fileType,
121
+ src: fileMessage.url,
122
+ maxZoom: maxZoom,
123
+ minZoom: minZoom
124
+ }), /*#__PURE__*/_react.default.createElement(_FileViewerFooter.default, {
125
+ bottomInset: bottom,
126
+ deleteShown: canDelete,
127
+ onPressDelete: onPressDeleteButton,
128
+ onPressDownload: onPressDownloadButton
129
+ }));
130
+ };
131
+ var _default = FileViewer;
132
+ exports.default = _default;
133
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_FileViewerContent","_interopRequireDefault","_FileViewerFooter","_FileViewerHeader","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","FileViewer","_ref","headerShown","maxZoom","minZoom","headerTopInset","fileMessage","onClose","onPressDownload","onPressDelete","deleteMessage","topInset","statusBarTranslucent","useHeaderStyle","bottom","useSafeAreaInsets","palette","useUIKitTheme","alert","useAlert","show","useToast","fileService","usePlatformService","currentUser","useSendbirdChat","STRINGS","useLocalization","fileType","getFileType","type","getFileExtension","url","canDelete","isMyMessage","userId","basicTopInset","onPressDeleteButton","title","LABELS","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","text","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","style","onPress","then","catch","TOAST","DELETE_MSG_ERROR","onPressDownloadButton","toMegabyte","size","DOWNLOAD_START","save","fileUrl","fileName","name","response","DOWNLOAD_OK","Logger","log","err","DOWNLOAD_ERROR","useEffect","createElement","Box","flex","backgroundColor","background700","StatusBar","barStyle","animated","FILE_VIEWER","TITLE","subtitle","SUBTITLE","bottomInset","src","deleteShown","_default","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { StatusBar } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { Box, useAlert, useHeaderStyle, useToast, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage } from '@sendbird/uikit-utils';\nimport { Logger, getFileExtension, getFileType, isMyMessage, toMegabyte } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport FileViewerContent from './FileViewerContent';\nimport FileViewerFooter from './FileViewerFooter';\nimport FileViewerHeader from './FileViewerHeader';\n\ntype Props = {\n fileMessage: SendbirdFileMessage;\n deleteMessage: () => Promise<void>;\n\n onClose: () => void;\n onPressDownload?: (message: SendbirdFileMessage) => void;\n onPressDelete?: (message: SendbirdFileMessage) => void;\n\n headerShown?: boolean;\n headerTopInset?: number;\n\n /** This prop is only available on the Image viewer */\n minZoom?: number;\n /** This prop is only available on the Image viewer */\n maxZoom?: number;\n};\n\nconst FileViewer = ({\n headerShown = true,\n maxZoom = 3,\n minZoom = 1,\n headerTopInset,\n fileMessage,\n onClose,\n onPressDownload,\n onPressDelete,\n deleteMessage,\n}: Props) => {\n const { topInset, statusBarTranslucent } = useHeaderStyle();\n const { bottom } = useSafeAreaInsets();\n const { palette } = useUIKitTheme();\n const { alert } = useAlert();\n const { show } = useToast();\n\n const { fileService } = usePlatformService();\n const { currentUser } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n\n const fileType = getFileType(fileMessage.type || getFileExtension(fileMessage.url));\n const canDelete = isMyMessage(fileMessage, currentUser?.userId);\n const basicTopInset = statusBarTranslucent ? topInset : 0;\n\n const onPressDeleteButton = () => {\n if (!canDelete) return;\n\n if (onPressDelete) {\n onPressDelete(fileMessage);\n } else {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n deleteMessage()\n .then(() => {\n onClose();\n })\n .catch(() => {\n show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n });\n },\n },\n ],\n });\n }\n };\n\n const onPressDownloadButton = () => {\n if (onPressDownload) {\n onPressDownload(fileMessage);\n } else {\n if (toMegabyte(fileMessage.size) > 4) {\n show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: fileMessage.url, fileName: fileMessage.name, fileType: fileMessage.type })\n .then((response) => {\n show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n useEffect(() => {\n if (fileType === 'file') onClose();\n }, []);\n\n return (\n <Box flex={1} backgroundColor={palette.background700}>\n <StatusBar barStyle={'light-content'} animated />\n <FileViewerHeader\n topInset={headerTopInset ?? basicTopInset}\n headerShown={headerShown}\n title={STRINGS.FILE_VIEWER.TITLE(fileMessage)}\n subtitle={STRINGS.FILE_VIEWER.SUBTITLE(fileMessage)}\n onClose={onClose}\n />\n <FileViewerContent\n topInset={headerTopInset ?? basicTopInset}\n bottomInset={bottom}\n type={fileType}\n src={fileMessage.url}\n maxZoom={maxZoom}\n minZoom={minZoom}\n />\n <FileViewerFooter\n bottomInset={bottom}\n deleteShown={canDelete}\n onPressDelete={onPressDeleteButton}\n onPressDownload={onPressDownloadButton}\n />\n </Box>\n );\n};\n\nexport default FileViewer;\n"],"mappings":"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"}
@@ -3,13 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = exports.GroupChannelTypingIndicatorBubble = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
9
9
  var _uikitUtils = require("@sendbird/uikit-utils");
10
10
  var _constants = require("../../constants");
11
+ var _moduleContext = require("../../domain/groupChannel/module/moduleContext");
11
12
  var _useContext = require("../../hooks/useContext");
12
13
  var _SBUUtils = _interopRequireDefault(require("../../libs/SBUUtils"));
14
+ var _types = require("../../types");
13
15
  var _ReactionAddons = require("../ReactionAddons");
14
16
  var _GroupChannelMessageDateSeparator = _interopRequireDefault(require("./GroupChannelMessageDateSeparator"));
15
17
  var _GroupChannelMessageFocusAnimation = _interopRequireDefault(require("./GroupChannelMessageFocusAnimation"));
@@ -305,6 +307,37 @@ const GroupChannelMessageRenderer = _ref => {
305
307
  focused: focused
306
308
  }, renderMessage()));
307
309
  };
310
+ const GroupChannelTypingIndicatorBubble = () => {
311
+ const {
312
+ sbOptions
313
+ } = (0, _useContext.useSendbirdChat)();
314
+ const {
315
+ publish
316
+ } = (0, _react.useContext)(_moduleContext.GroupChannelContexts.PubSub);
317
+ const {
318
+ typingUsers
319
+ } = (0, _react.useContext)(_moduleContext.GroupChannelContexts.TypingIndicator);
320
+ const shouldRenderBubble = (0, _uikitUtils.useIIFE)(() => {
321
+ if (typingUsers.length === 0) return false;
322
+ if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;
323
+ if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(_types.TypingIndicatorType.Bubble)) return false;
324
+ return true;
325
+ });
326
+ (0, _react.useEffect)(() => {
327
+ if (shouldRenderBubble) publish({
328
+ type: 'TYPING_BUBBLE_RENDERED'
329
+ });
330
+ }, [shouldRenderBubble]);
331
+ if (!shouldRenderBubble) return null;
332
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
333
+ paddingHorizontal: 16,
334
+ marginTop: 4,
335
+ marginBottom: 16
336
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.TypingIndicatorBubble, {
337
+ typingUsers: typingUsers
338
+ }));
339
+ };
340
+ exports.GroupChannelTypingIndicatorBubble = GroupChannelTypingIndicatorBubble;
308
341
  var _default = /*#__PURE__*/_react.default.memo(GroupChannelMessageRenderer);
309
342
  exports.default = _default;
310
343
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_constants","_useContext","_SBUUtils","_interopRequireDefault","_ReactionAddons","_GroupChannelMessageDateSeparator","_GroupChannelMessageFocusAnimation","_GroupChannelMessageOutgoingStatus","_GroupChannelMessageParentMessage","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","enableMessageGrouping","focused","prevMessage","nextMessage","playerUnsubscribes","useRef","palette","useUIKitTheme","sbOptions","currentUser","mentionManager","useSendbirdChat","STRINGS","useLocalization","mediaService","playerService","usePlatformService","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","reactionChildren","useIIFE","shouldRenderReaction","uikitWithAppInfo","groupChannel","enableReactions","reactions","createElement","ReactionAddons","Message","resetPlayer","current","forEach","unsubscribe","reset","variant","isMyMessage","userId","messageProps","onPressURL","url","SBUUtils","openURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","isVoiceMessage","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref2","stopped","prevState","forState","addStateListener","status","push","seek","groupedWithPrev","groupedWithNext","children","parentMessage","shouldRenderParentMessage","childMessage","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","uikit","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref3","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","Text","_messageProps$onPress","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","getMessageType","GroupChannelMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","onUnmount","Unknown","messageGap","isAdminMessage","Box","paddingHorizontal","marginBottom","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport { Box, GroupChannelMessage, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n}) => {\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService, playerService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n );\n\n const reactionChildren = useIIFE(() => {\n if (\n shouldRenderReaction(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {\n if (playerService.uri === message.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(message.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(message.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message) ? (\n <GroupChannelMessageParentMessage\n channel={channel}\n message={message.parentMessage}\n variant={variant}\n childMessage={message}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.voice': {\n return (\n <GroupChannelMessage.VoiceFile\n message={message as SendbirdFileMessage}\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer();\n }\n }}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_constants","_moduleContext","_useContext","_SBUUtils","_interopRequireDefault","_types","_ReactionAddons","_GroupChannelMessageDateSeparator","_GroupChannelMessageFocusAnimation","_GroupChannelMessageOutgoingStatus","_GroupChannelMessageParentMessage","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","enableMessageGrouping","focused","prevMessage","nextMessage","playerUnsubscribes","useRef","palette","useUIKitTheme","sbOptions","currentUser","mentionManager","useSendbirdChat","STRINGS","useLocalization","mediaService","playerService","usePlatformService","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","reactionChildren","useIIFE","shouldRenderReaction","uikitWithAppInfo","groupChannel","enableReactions","reactions","createElement","ReactionAddons","Message","resetPlayer","current","forEach","unsubscribe","reset","variant","isMyMessage","userId","messageProps","onPressURL","url","SBUUtils","openURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","isVoiceMessage","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref2","stopped","prevState","forState","addStateListener","status","push","seek","groupedWithPrev","groupedWithNext","children","parentMessage","shouldRenderParentMessage","childMessage","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","uikit","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref3","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","Text","_messageProps$onPress","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","getMessageType","GroupChannelMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","onUnmount","Unknown","messageGap","isAdminMessage","Box","paddingHorizontal","marginBottom","GroupChannelTypingIndicatorBubble","publish","useContext","GroupChannelContexts","PubSub","typingUsers","TypingIndicator","shouldRenderBubble","enableTypingIndicator","typingIndicatorTypes","TypingIndicatorType","Bubble","useEffect","type","marginTop","TypingIndicatorBubble","exports","_default","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport {\n Box,\n GroupChannelMessage,\n Text,\n TypingIndicatorBubble,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { TypingIndicatorType } from '../../types';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n}) => {\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService, playerService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n );\n\n const reactionChildren = useIIFE(() => {\n if (\n shouldRenderReaction(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {\n if (playerService.uri === message.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(message.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(message.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message) ? (\n <GroupChannelMessageParentMessage\n channel={channel}\n message={message.parentMessage}\n variant={variant}\n childMessage={message}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.voice': {\n return (\n <GroupChannelMessage.VoiceFile\n message={message as SendbirdFileMessage}\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer();\n }\n }}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport const GroupChannelTypingIndicatorBubble = () => {\n const { sbOptions } = useSendbirdChat();\n const { publish } = useContext(GroupChannelContexts.PubSub);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n\n const shouldRenderBubble = useIIFE(() => {\n if (typingUsers.length === 0) return false;\n if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;\n if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;\n return true;\n });\n\n useEffect(() => {\n if (shouldRenderBubble) publish({ type: 'TYPING_BUBBLE_RENDERED' });\n }, [shouldRenderBubble]);\n\n if (!shouldRenderBubble) return null;\n return (\n <Box paddingHorizontal={16} marginTop={4} marginBottom={16}>\n <TypingIndicatorBubble typingUsers={typingUsers} />\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitChatHooks","_uikitReactNativeFoundation","_uikitUtils","_constants","_useContext","obj","__esModule","default","BottomSheetReactionAddon","_ref","onClose","message","channel","emojiManager","currentUser","sdk","useSendbirdChat","updateReactionFocusedItem","openReactionList","useReaction","colors","useUIKitTheme","handlerId","useUniqHandlerId","left","right","useSafeAreaInsets","useChannelHandler","onReactionUpdated","eventChannel","event","url","messageId","msg","getMessage","includeReactions","channelUrl","channelType","emojiAll","allEmoji","slice","color","ui","reaction","createElement","View","style","styles","container","marginRight","marginLeft","map","_ref2","_message$reactions","_message$reactions$fi","key","reactionUserIds","reactions","find","it","userIds","currentUserIdx","indexOf","userId","UNKNOWN_USER_ID","reacted","onPress","deleteReaction","addReaction","Pressable","_ref3","pressed","button","backgroundColor","selected","background","enabled","Image","source","uri","emoji","_ref4","Icon","icon","onBackground03","createStyleSheet","paddingTop","paddingBottom","paddingHorizontal","flexDirection","justifyContent","width","height","padding","borderRadius","_default","exports"],"sources":["BottomSheetReactionAddon.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdBaseChannel, SendbirdBaseMessage, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport { useReaction, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n onClose: () => Promise<void>;\n channel: SendbirdBaseChannel;\n message: SendbirdBaseMessage;\n};\nconst BottomSheetReactionAddon = ({ onClose, message, channel }: Props) => {\n const { emojiManager, currentUser, sdk } = useSendbirdChat();\n const { updateReactionFocusedItem, openReactionList } = useReaction();\n const { colors } = useUIKitTheme();\n const handlerId = useUniqHandlerId('BottomSheetReactionAddon');\n const { left, right } = useSafeAreaInsets();\n\n useChannelHandler(sdk, handlerId, {\n async onReactionUpdated(eventChannel, event) {\n if (channel?.url === eventChannel.url && event.messageId === message?.messageId) {\n const msg = await sdk.message.getMessage({\n includeReactions: true,\n messageId: message.messageId,\n channelUrl: message.channelUrl,\n channelType: message.channelType,\n });\n if (msg) updateReactionFocusedItem({ message: msg });\n }\n },\n });\n\n const emojiAll = emojiManager.allEmoji.slice(0, 5);\n const color = colors.ui.reaction.default;\n\n return (\n <View style={[styles.container, { marginRight: right, marginLeft: left }]}>\n {emojiAll.map(({ key, url }) => {\n const reactionUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n const currentUserIdx = reactionUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = currentUserIdx > -1;\n\n const onPress = () => {\n if (reacted) channel.deleteReaction(message, key);\n else channel.addReaction(message, key);\n onClose();\n };\n\n return (\n <Pressable\n key={key}\n onPress={onPress}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n );\n })}\n\n <Pressable\n onPress={async () => {\n await onClose();\n openReactionList({ channel, message });\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Icon icon={'emoji-more'} style={styles.emoji} color={colors.onBackground03} />\n </Pressable>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 12,\n paddingBottom: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default BottomSheetReactionAddon;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitChatHooks","_uikitReactNativeFoundation","_uikitUtils","_constants","_useContext","obj","__esModule","default","BottomSheetReactionAddon","_ref","onClose","message","channel","emojiManager","currentUser","sdk","useSendbirdChat","updateReactionFocusedItem","openReactionList","useReaction","colors","useUIKitTheme","handlerId","useUniqHandlerId","left","right","useSafeAreaInsets","useChannelHandler","onReactionUpdated","eventChannel","event","url","messageId","msg","getMessage","includeReactions","channelUrl","channelType","emojiAll","allEmoji","slice","color","ui","reaction","createElement","View","style","styles","container","marginRight","marginLeft","map","_ref2","_message$reactions","_message$reactions$fi","key","reactionUserIds","reactions","find","it","userIds","currentUserIdx","indexOf","userId","UNKNOWN_USER_ID","reacted","onPress","deleteReaction","addReaction","Pressable","_ref3","pressed","button","backgroundColor","selected","background","enabled","Image","source","uri","emoji","_ref4","Icon","icon","onBackground03","createStyleSheet","paddingTop","paddingBottom","paddingHorizontal","flexDirection","justifyContent","width","height","padding","borderRadius","_default","exports"],"sources":["BottomSheetReactionAddon.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type { BaseMessage } from '@sendbird/chat/message';\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdBaseChannel, SendbirdBaseMessage, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport { useReaction, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n onClose: () => Promise<void>;\n channel: SendbirdBaseChannel;\n message: SendbirdBaseMessage;\n};\nconst BottomSheetReactionAddon = ({ onClose, message, channel }: Props) => {\n const { emojiManager, currentUser, sdk } = useSendbirdChat();\n const { updateReactionFocusedItem, openReactionList } = useReaction();\n const { colors } = useUIKitTheme();\n const handlerId = useUniqHandlerId('BottomSheetReactionAddon');\n const { left, right } = useSafeAreaInsets();\n\n useChannelHandler(sdk, handlerId, {\n async onReactionUpdated(eventChannel, event) {\n if (channel?.url === eventChannel.url && event.messageId === message?.messageId) {\n const msg = (await sdk.message.getMessage({\n includeReactions: true,\n messageId: message.messageId,\n channelUrl: message.channelUrl,\n channelType: message.channelType,\n })) as null | BaseMessage;\n if (msg) updateReactionFocusedItem({ message: msg });\n }\n },\n });\n\n const emojiAll = emojiManager.allEmoji.slice(0, 5);\n const color = colors.ui.reaction.default;\n\n return (\n <View style={[styles.container, { marginRight: right, marginLeft: left }]}>\n {emojiAll.map(({ key, url }) => {\n const reactionUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n const currentUserIdx = reactionUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = currentUserIdx > -1;\n\n const onPress = () => {\n if (reacted) channel.deleteReaction(message, key);\n else channel.addReaction(message, key);\n onClose();\n };\n\n return (\n <Pressable\n key={key}\n onPress={onPress}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n );\n })}\n\n <Pressable\n onPress={async () => {\n await onClose();\n openReactionList({ channel, message });\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Icon icon={'emoji-more'} style={styles.emoji} color={colors.onBackground03} />\n </Pressable>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 12,\n paddingBottom: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default BottomSheetReactionAddon;\n"],"mappings":"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"}