@sendbird/uikit-react-native-foundation 3.1.2 → 3.3.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 (254) hide show
  1. package/lib/commonjs/assets/icon/icon-audio-off-filled.png +0 -0
  2. package/lib/commonjs/assets/icon/icon-audio-off-filled@2x.png +0 -0
  3. package/lib/commonjs/assets/icon/icon-audio-off-filled@3x.png +0 -0
  4. package/lib/commonjs/assets/icon/icon-audio-off.png +0 -0
  5. package/lib/commonjs/assets/icon/icon-audio-off@2x.png +0 -0
  6. package/lib/commonjs/assets/icon/icon-audio-off@3x.png +0 -0
  7. package/lib/commonjs/assets/icon/icon-audio-on-filled.png +0 -0
  8. package/lib/commonjs/assets/icon/icon-audio-on-filled@2x.png +0 -0
  9. package/lib/commonjs/assets/icon/icon-audio-on-filled@3x.png +0 -0
  10. package/lib/commonjs/assets/icon/icon-audio-on.png +0 -0
  11. package/lib/commonjs/assets/icon/icon-audio-on@2x.png +0 -0
  12. package/lib/commonjs/assets/icon/icon-audio-on@3x.png +0 -0
  13. package/lib/commonjs/assets/icon/icon-pause.png +0 -0
  14. package/lib/commonjs/assets/icon/icon-pause@2x.png +0 -0
  15. package/lib/commonjs/assets/icon/icon-pause@3x.png +0 -0
  16. package/lib/commonjs/assets/icon/icon-recording.png +0 -0
  17. package/lib/commonjs/assets/icon/icon-recording@2x.png +0 -0
  18. package/lib/commonjs/assets/icon/icon-recording@3x.png +0 -0
  19. package/lib/commonjs/assets/icon/icon-stop.png +0 -0
  20. package/lib/commonjs/assets/icon/icon-stop@2x.png +0 -0
  21. package/lib/commonjs/assets/icon/icon-stop@3x.png +0 -0
  22. package/lib/commonjs/assets/icon/index.js +7 -0
  23. package/lib/commonjs/assets/icon/index.js.map +1 -1
  24. package/lib/commonjs/components/Box/index.js +2 -2
  25. package/lib/commonjs/components/Box/index.js.map +1 -1
  26. package/lib/commonjs/components/Icon/index.js +4 -3
  27. package/lib/commonjs/components/Icon/index.js.map +1 -1
  28. package/lib/commonjs/components/Image/FastImageInternal.js.map +1 -1
  29. package/lib/commonjs/components/Image/index.js.map +1 -1
  30. package/lib/commonjs/components/Modal/index.js +1 -1
  31. package/lib/commonjs/components/Modal/index.js.map +1 -1
  32. package/lib/commonjs/components/PressBox/index.js.map +1 -1
  33. package/lib/commonjs/components/ProgressBar/index.js +72 -0
  34. package/lib/commonjs/components/ProgressBar/index.js.map +1 -0
  35. package/lib/commonjs/components/RegexText/index.js.map +1 -1
  36. package/lib/commonjs/components/TextInput/index.js +10 -3
  37. package/lib/commonjs/components/TextInput/index.js.map +1 -1
  38. package/lib/commonjs/index.js +16 -2
  39. package/lib/commonjs/index.js.map +1 -1
  40. package/lib/commonjs/styles/HeaderStyleContext.js.map +1 -1
  41. package/lib/commonjs/styles/createScaleFactor.js +5 -4
  42. package/lib/commonjs/styles/createScaleFactor.js.map +1 -1
  43. package/lib/commonjs/styles/createStyleSheet.js +4 -0
  44. package/lib/commonjs/styles/createStyleSheet.js.map +1 -1
  45. package/lib/commonjs/theme/DarkUIKitTheme.js +80 -36
  46. package/lib/commonjs/theme/DarkUIKitTheme.js.map +1 -1
  47. package/lib/commonjs/theme/LightUIKitTheme.js +80 -36
  48. package/lib/commonjs/theme/LightUIKitTheme.js.map +1 -1
  49. package/lib/commonjs/types.js.map +1 -1
  50. package/lib/commonjs/ui/Avatar/AvatarStack.js +96 -0
  51. package/lib/commonjs/ui/Avatar/AvatarStack.js.map +1 -0
  52. package/lib/commonjs/ui/Avatar/index.js +6 -3
  53. package/lib/commonjs/ui/Avatar/index.js.map +1 -1
  54. package/lib/commonjs/ui/BottomSheet/index.js.map +1 -1
  55. package/lib/commonjs/ui/Dialog/DialogSheet.js.map +1 -1
  56. package/lib/commonjs/ui/GroupChannelMessage/Message.file.voice.js +108 -0
  57. package/lib/commonjs/ui/GroupChannelMessage/Message.file.voice.js.map +1 -0
  58. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js +1 -1
  59. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js.map +1 -1
  60. package/lib/commonjs/ui/GroupChannelMessage/index.js +2 -0
  61. package/lib/commonjs/ui/GroupChannelMessage/index.js.map +1 -1
  62. package/lib/commonjs/ui/GroupChannelPreview/index.js.map +1 -1
  63. package/lib/commonjs/ui/Header/index.js +5 -4
  64. package/lib/commonjs/ui/Header/index.js.map +1 -1
  65. package/lib/commonjs/ui/OpenChannelMessage/MessageContainer.js.map +1 -1
  66. package/lib/commonjs/ui/OpenChannelPreview/index.js.map +1 -1
  67. package/lib/commonjs/ui/ProfileCard/index.js.map +1 -1
  68. package/lib/commonjs/ui/TypingIndicatorBubble/index.js +118 -0
  69. package/lib/commonjs/ui/TypingIndicatorBubble/index.js.map +1 -0
  70. package/lib/module/assets/icon/icon-audio-off-filled.png +0 -0
  71. package/lib/module/assets/icon/icon-audio-off-filled@2x.png +0 -0
  72. package/lib/module/assets/icon/icon-audio-off-filled@3x.png +0 -0
  73. package/lib/module/assets/icon/icon-audio-off.png +0 -0
  74. package/lib/module/assets/icon/icon-audio-off@2x.png +0 -0
  75. package/lib/module/assets/icon/icon-audio-off@3x.png +0 -0
  76. package/lib/module/assets/icon/icon-audio-on-filled.png +0 -0
  77. package/lib/module/assets/icon/icon-audio-on-filled@2x.png +0 -0
  78. package/lib/module/assets/icon/icon-audio-on-filled@3x.png +0 -0
  79. package/lib/module/assets/icon/icon-audio-on.png +0 -0
  80. package/lib/module/assets/icon/icon-audio-on@2x.png +0 -0
  81. package/lib/module/assets/icon/icon-audio-on@3x.png +0 -0
  82. package/lib/module/assets/icon/icon-pause.png +0 -0
  83. package/lib/module/assets/icon/icon-pause@2x.png +0 -0
  84. package/lib/module/assets/icon/icon-pause@3x.png +0 -0
  85. package/lib/module/assets/icon/icon-recording.png +0 -0
  86. package/lib/module/assets/icon/icon-recording@2x.png +0 -0
  87. package/lib/module/assets/icon/icon-recording@3x.png +0 -0
  88. package/lib/module/assets/icon/icon-stop.png +0 -0
  89. package/lib/module/assets/icon/icon-stop@2x.png +0 -0
  90. package/lib/module/assets/icon/icon-stop@3x.png +0 -0
  91. package/lib/module/assets/icon/index.js +7 -0
  92. package/lib/module/assets/icon/index.js.map +1 -1
  93. package/lib/module/components/Box/index.js +2 -2
  94. package/lib/module/components/Box/index.js.map +1 -1
  95. package/lib/module/components/Icon/index.js +4 -3
  96. package/lib/module/components/Icon/index.js.map +1 -1
  97. package/lib/module/components/Image/FastImageInternal.js.map +1 -1
  98. package/lib/module/components/Image/index.js.map +1 -1
  99. package/lib/module/components/Modal/index.js +1 -1
  100. package/lib/module/components/Modal/index.js.map +1 -1
  101. package/lib/module/components/PressBox/index.js.map +1 -1
  102. package/lib/module/components/ProgressBar/index.js +62 -0
  103. package/lib/module/components/ProgressBar/index.js.map +1 -0
  104. package/lib/module/components/RegexText/index.js.map +1 -1
  105. package/lib/module/components/TextInput/index.js +10 -3
  106. package/lib/module/components/TextInput/index.js.map +1 -1
  107. package/lib/module/index.js +4 -2
  108. package/lib/module/index.js.map +1 -1
  109. package/lib/module/styles/HeaderStyleContext.js.map +1 -1
  110. package/lib/module/styles/createScaleFactor.js +5 -4
  111. package/lib/module/styles/createScaleFactor.js.map +1 -1
  112. package/lib/module/styles/createStyleSheet.js +4 -0
  113. package/lib/module/styles/createStyleSheet.js.map +1 -1
  114. package/lib/module/theme/DarkUIKitTheme.js +80 -36
  115. package/lib/module/theme/DarkUIKitTheme.js.map +1 -1
  116. package/lib/module/theme/LightUIKitTheme.js +80 -36
  117. package/lib/module/theme/LightUIKitTheme.js.map +1 -1
  118. package/lib/module/types.js.map +1 -1
  119. package/lib/module/ui/Avatar/AvatarStack.js +88 -0
  120. package/lib/module/ui/Avatar/AvatarStack.js.map +1 -0
  121. package/lib/module/ui/Avatar/index.js +6 -3
  122. package/lib/module/ui/Avatar/index.js.map +1 -1
  123. package/lib/module/ui/BottomSheet/index.js.map +1 -1
  124. package/lib/module/ui/Dialog/DialogSheet.js.map +1 -1
  125. package/lib/module/ui/GroupChannelMessage/Message.file.voice.js +98 -0
  126. package/lib/module/ui/GroupChannelMessage/Message.file.voice.js.map +1 -0
  127. package/lib/module/ui/GroupChannelMessage/Message.unknown.js +1 -1
  128. package/lib/module/ui/GroupChannelMessage/Message.unknown.js.map +1 -1
  129. package/lib/module/ui/GroupChannelMessage/index.js +2 -0
  130. package/lib/module/ui/GroupChannelMessage/index.js.map +1 -1
  131. package/lib/module/ui/GroupChannelPreview/index.js.map +1 -1
  132. package/lib/module/ui/Header/index.js +5 -4
  133. package/lib/module/ui/Header/index.js.map +1 -1
  134. package/lib/module/ui/OpenChannelMessage/MessageContainer.js.map +1 -1
  135. package/lib/module/ui/OpenChannelPreview/index.js.map +1 -1
  136. package/lib/module/ui/ProfileCard/index.js.map +1 -1
  137. package/lib/module/ui/TypingIndicatorBubble/index.js +108 -0
  138. package/lib/module/ui/TypingIndicatorBubble/index.js.map +1 -0
  139. package/lib/typescript/src/assets/icon/index.d.ts +7 -0
  140. package/lib/typescript/src/components/Box/index.d.ts +2 -1
  141. package/lib/typescript/src/components/Divider/index.d.ts +2 -1
  142. package/lib/typescript/src/components/Icon/index.d.ts +76 -7
  143. package/lib/typescript/src/components/Image/FastImageInternal.d.ts +2 -1
  144. package/lib/typescript/src/components/Image/index.d.ts +2 -1
  145. package/lib/typescript/src/components/ImageWithPlaceholder/index.d.ts +2 -1
  146. package/lib/typescript/src/components/Modal/index.d.ts +2 -1
  147. package/lib/typescript/src/components/PressBox/index.d.ts +2 -1
  148. package/lib/typescript/src/components/ProgressBar/index.d.ts +12 -0
  149. package/lib/typescript/src/components/RegexText/index.d.ts +3 -2
  150. package/lib/typescript/src/components/Switch/index.d.ts +1 -1
  151. package/lib/typescript/src/components/Text/index.d.ts +2 -1
  152. package/lib/typescript/src/components/VideoThumbnail/index.d.ts +2 -1
  153. package/lib/typescript/src/index.d.ts +5 -3
  154. package/lib/typescript/src/styles/HeaderStyleContext.d.ts +2 -2
  155. package/lib/typescript/src/styles/createScaleFactor.d.ts +4 -5
  156. package/lib/typescript/src/theme/UIKitThemeProvider.d.ts +1 -1
  157. package/lib/typescript/src/types.d.ts +11 -7
  158. package/lib/typescript/src/ui/ActionMenu/index.d.ts +2 -1
  159. package/lib/typescript/src/ui/Alert/index.d.ts +2 -1
  160. package/lib/typescript/src/ui/Avatar/AvatarGroup.d.ts +1 -1
  161. package/lib/typescript/src/ui/Avatar/AvatarIcon.d.ts +2 -1
  162. package/lib/typescript/src/ui/Avatar/AvatarStack.d.ts +16 -0
  163. package/lib/typescript/src/ui/Avatar/index.d.ts +30 -8
  164. package/lib/typescript/src/ui/Badge/index.d.ts +2 -1
  165. package/lib/typescript/src/ui/BottomSheet/index.d.ts +3 -2
  166. package/lib/typescript/src/ui/Button/index.d.ts +1 -1
  167. package/lib/typescript/src/ui/ChannelFrozenBanner/index.d.ts +2 -1
  168. package/lib/typescript/src/ui/Dialog/DialogBox.d.ts +1 -1
  169. package/lib/typescript/src/ui/Dialog/DialogSheet.d.ts +3 -3
  170. package/lib/typescript/src/ui/Dialog/index.d.ts +1 -1
  171. package/lib/typescript/src/ui/GroupChannelMessage/Message.admin.d.ts +2 -1
  172. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.d.ts +2 -1
  173. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.image.d.ts +2 -1
  174. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.video.d.ts +2 -1
  175. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.voice.d.ts +14 -0
  176. package/lib/typescript/src/ui/GroupChannelMessage/Message.unknown.d.ts +2 -1
  177. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.d.ts +2 -1
  178. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.og.d.ts +2 -1
  179. package/lib/typescript/src/ui/GroupChannelMessage/MessageBubbleWithText.d.ts +2 -1
  180. package/lib/typescript/src/ui/GroupChannelMessage/MessageContainer.d.ts +4 -3
  181. package/lib/typescript/src/ui/GroupChannelMessage/MessageOpenGraph.d.ts +2 -1
  182. package/lib/typescript/src/ui/GroupChannelMessage/index.d.ts +43 -7
  183. package/lib/typescript/src/ui/GroupChannelPreview/index.d.ts +3 -3
  184. package/lib/typescript/src/ui/Header/index.d.ts +8 -12
  185. package/lib/typescript/src/ui/LoadingSpinner/index.d.ts +2 -1
  186. package/lib/typescript/src/ui/MenuBar/index.d.ts +1 -1
  187. package/lib/typescript/src/ui/OpenChannelMessage/Message.admin.d.ts +2 -1
  188. package/lib/typescript/src/ui/OpenChannelMessage/Message.file.d.ts +2 -1
  189. package/lib/typescript/src/ui/OpenChannelMessage/Message.file.image.d.ts +2 -1
  190. package/lib/typescript/src/ui/OpenChannelMessage/Message.file.video.d.ts +2 -1
  191. package/lib/typescript/src/ui/OpenChannelMessage/Message.unknown.d.ts +2 -1
  192. package/lib/typescript/src/ui/OpenChannelMessage/Message.user.d.ts +2 -1
  193. package/lib/typescript/src/ui/OpenChannelMessage/Message.user.og.d.ts +2 -1
  194. package/lib/typescript/src/ui/OpenChannelMessage/MessageContainer.d.ts +2 -1
  195. package/lib/typescript/src/ui/OpenChannelMessage/index.d.ts +7 -7
  196. package/lib/typescript/src/ui/OpenChannelPreview/index.d.ts +2 -2
  197. package/lib/typescript/src/ui/OutlinedButton/index.d.ts +2 -1
  198. package/lib/typescript/src/ui/Placeholder/index.d.ts +2 -1
  199. package/lib/typescript/src/ui/ProfileCard/index.d.ts +3 -2
  200. package/lib/typescript/src/ui/Prompt/index.d.ts +2 -1
  201. package/lib/typescript/src/ui/Toast/index.d.ts +2 -2
  202. package/lib/typescript/src/ui/TypingIndicatorBubble/index.d.ts +10 -0
  203. package/package.json +5 -9
  204. package/src/assets/icon/icon-audio-off-filled.png +0 -0
  205. package/src/assets/icon/icon-audio-off-filled@2x.png +0 -0
  206. package/src/assets/icon/icon-audio-off-filled@3x.png +0 -0
  207. package/src/assets/icon/icon-audio-off.png +0 -0
  208. package/src/assets/icon/icon-audio-off@2x.png +0 -0
  209. package/src/assets/icon/icon-audio-off@3x.png +0 -0
  210. package/src/assets/icon/icon-audio-on-filled.png +0 -0
  211. package/src/assets/icon/icon-audio-on-filled@2x.png +0 -0
  212. package/src/assets/icon/icon-audio-on-filled@3x.png +0 -0
  213. package/src/assets/icon/icon-audio-on.png +0 -0
  214. package/src/assets/icon/icon-audio-on@2x.png +0 -0
  215. package/src/assets/icon/icon-audio-on@3x.png +0 -0
  216. package/src/assets/icon/icon-pause.png +0 -0
  217. package/src/assets/icon/icon-pause@2x.png +0 -0
  218. package/src/assets/icon/icon-pause@3x.png +0 -0
  219. package/src/assets/icon/icon-recording.png +0 -0
  220. package/src/assets/icon/icon-recording@2x.png +0 -0
  221. package/src/assets/icon/icon-recording@3x.png +0 -0
  222. package/src/assets/icon/icon-stop.png +0 -0
  223. package/src/assets/icon/icon-stop@2x.png +0 -0
  224. package/src/assets/icon/icon-stop@3x.png +0 -0
  225. package/src/assets/icon/index.ts +7 -0
  226. package/src/components/Box/index.tsx +1 -1
  227. package/src/components/Icon/index.tsx +6 -7
  228. package/src/components/Image/FastImageInternal.tsx +3 -2
  229. package/src/components/Image/index.ts +2 -1
  230. package/src/components/Modal/index.tsx +1 -1
  231. package/src/components/PressBox/index.tsx +1 -0
  232. package/src/components/ProgressBar/index.tsx +72 -0
  233. package/src/components/RegexText/index.tsx +3 -3
  234. package/src/components/TextInput/index.tsx +10 -3
  235. package/src/index.ts +5 -4
  236. package/src/styles/HeaderStyleContext.tsx +1 -1
  237. package/src/styles/createScaleFactor.ts +5 -5
  238. package/src/styles/createStyleSheet.ts +4 -0
  239. package/src/theme/DarkUIKitTheme.ts +80 -37
  240. package/src/theme/LightUIKitTheme.ts +80 -37
  241. package/src/types.ts +31 -7
  242. package/src/ui/Avatar/AvatarStack.tsx +103 -0
  243. package/src/ui/Avatar/index.tsx +8 -14
  244. package/src/ui/BottomSheet/index.tsx +2 -2
  245. package/src/ui/Dialog/DialogSheet.tsx +2 -2
  246. package/src/ui/GroupChannelMessage/Message.file.voice.tsx +123 -0
  247. package/src/ui/GroupChannelMessage/Message.unknown.tsx +1 -1
  248. package/src/ui/GroupChannelMessage/index.ts +7 -0
  249. package/src/ui/GroupChannelPreview/index.tsx +2 -2
  250. package/src/ui/Header/index.tsx +8 -12
  251. package/src/ui/OpenChannelMessage/MessageContainer.tsx +1 -1
  252. package/src/ui/OpenChannelPreview/index.tsx +1 -1
  253. package/src/ui/ProfileCard/index.tsx +2 -2
  254. package/src/ui/TypingIndicatorBubble/index.tsx +120 -0
@@ -0,0 +1,98 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { millsToMSS } from '@sendbird/uikit-utils';
3
+ import Box from '../../components/Box';
4
+ import Icon from '../../components/Icon';
5
+ import PressBox from '../../components/PressBox';
6
+ import ProgressBar from '../../components/ProgressBar';
7
+ import Text from '../../components/Text';
8
+ import createStyleSheet from '../../styles/createStyleSheet';
9
+ import useUIKitTheme from '../../theme/useUIKitTheme';
10
+ import LoadingSpinner from '../LoadingSpinner';
11
+ import MessageContainer from './MessageContainer';
12
+ const VoiceFileMessage = props => {
13
+ const {
14
+ onLongPress,
15
+ variant = 'incoming',
16
+ onToggleVoiceMessage,
17
+ message,
18
+ durationMetaArrayKey = 'KEY_VOICE_MESSAGE_DURATION',
19
+ onUnmount
20
+ } = props;
21
+ const {
22
+ colors
23
+ } = useUIKitTheme();
24
+ const [state, setState] = useState(() => {
25
+ var _meta$value;
26
+ const meta = message.metaArrays.find(it => it.key === durationMetaArrayKey);
27
+ const value = meta === null || meta === void 0 ? void 0 : (_meta$value = meta.value) === null || _meta$value === void 0 ? void 0 : _meta$value[0];
28
+ const initialDuration = value ? parseInt(value, 10) : 0;
29
+ return {
30
+ status: 'paused',
31
+ currentTime: 0,
32
+ duration: initialDuration
33
+ };
34
+ });
35
+ useEffect(() => {
36
+ return () => {
37
+ onUnmount();
38
+ };
39
+ }, []);
40
+ const uiColors = colors.ui.groupChannelMessage[variant];
41
+ const remainingTime = state.duration - state.currentTime;
42
+ return /*#__PURE__*/React.createElement(MessageContainer, props, /*#__PURE__*/React.createElement(Box, {
43
+ style: styles.container,
44
+ backgroundColor: uiColors.enabled.background
45
+ }, /*#__PURE__*/React.createElement(PressBox, {
46
+ onPress: () => onToggleVoiceMessage === null || onToggleVoiceMessage === void 0 ? void 0 : onToggleVoiceMessage(state, setState),
47
+ onLongPress: onLongPress
48
+ }, /*#__PURE__*/React.createElement(ProgressBar, {
49
+ current: state.currentTime,
50
+ total: state.duration,
51
+ style: {
52
+ minWidth: 136,
53
+ height: 44
54
+ },
55
+ trackColor: uiColors.enabled.voiceProgressTrack,
56
+ overlay: /*#__PURE__*/React.createElement(Box, {
57
+ flex: 1,
58
+ flexDirection: 'row',
59
+ alignItems: 'center',
60
+ justifyContent: 'space-between',
61
+ paddingHorizontal: 12
62
+ }, state.status === 'preparing' ? /*#__PURE__*/React.createElement(LoadingSpinner, {
63
+ size: 24,
64
+ color: uiColors.enabled.voiceSpinner
65
+ }) : /*#__PURE__*/React.createElement(Icon, {
66
+ size: 16,
67
+ containerStyle: {
68
+ backgroundColor: uiColors.enabled.voiceActionIconBackground,
69
+ padding: 6,
70
+ borderRadius: 16
71
+ },
72
+ icon: state.status === 'paused' ? 'play' : 'pause'
73
+ }), /*#__PURE__*/React.createElement(Text, {
74
+ body3: true,
75
+ style: {
76
+ lineHeight: undefined,
77
+ marginLeft: 6,
78
+ opacity: 0.88
79
+ },
80
+ color: uiColors.enabled.textVoicePlaytime
81
+ }, millsToMSS(state.currentTime === 0 ? state.duration : remainingTime)))
82
+ })), props.children));
83
+ };
84
+ const styles = createStyleSheet({
85
+ container: {
86
+ borderRadius: 16,
87
+ overflow: 'hidden'
88
+ },
89
+ image: {
90
+ maxWidth: 240,
91
+ width: 240,
92
+ height: 160,
93
+ borderRadius: 16,
94
+ overflow: 'hidden'
95
+ }
96
+ });
97
+ export default VoiceFileMessage;
98
+ //# sourceMappingURL=Message.file.voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useState","millsToMSS","Box","Icon","PressBox","ProgressBar","Text","createStyleSheet","useUIKitTheme","LoadingSpinner","MessageContainer","VoiceFileMessage","props","onLongPress","variant","onToggleVoiceMessage","message","durationMetaArrayKey","onUnmount","colors","state","setState","_meta$value","meta","metaArrays","find","it","key","value","initialDuration","parseInt","status","currentTime","duration","uiColors","ui","groupChannelMessage","remainingTime","createElement","style","styles","container","backgroundColor","enabled","background","onPress","current","total","minWidth","height","trackColor","voiceProgressTrack","overlay","flex","flexDirection","alignItems","justifyContent","paddingHorizontal","size","color","voiceSpinner","containerStyle","voiceActionIconBackground","padding","borderRadius","icon","body3","lineHeight","undefined","marginLeft","opacity","textVoicePlaytime","children","overflow","image","maxWidth","width"],"sources":["Message.file.voice.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { SendbirdFileMessage } from '@sendbird/uikit-utils';\nimport { millsToMSS } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Icon from '../../components/Icon';\nimport PressBox from '../../components/PressBox';\nimport ProgressBar from '../../components/ProgressBar';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport LoadingSpinner from '../LoadingSpinner';\nimport MessageContainer from './MessageContainer';\nimport type { GroupChannelMessageProps } from './index';\n\nexport type VoiceFileMessageState = {\n status: 'preparing' | 'playing' | 'paused';\n currentTime: number;\n duration: number;\n};\n\ntype Props = GroupChannelMessageProps<\n SendbirdFileMessage,\n {\n durationMetaArrayKey?: string;\n onUnmount: () => void;\n }\n>;\nconst VoiceFileMessage = (props: Props) => {\n const {\n onLongPress,\n variant = 'incoming',\n onToggleVoiceMessage,\n message,\n durationMetaArrayKey = 'KEY_VOICE_MESSAGE_DURATION',\n onUnmount,\n } = props;\n\n const { colors } = useUIKitTheme();\n\n const [state, setState] = useState<VoiceFileMessageState>(() => {\n const meta = message.metaArrays.find((it) => it.key === durationMetaArrayKey);\n const value = meta?.value?.[0];\n const initialDuration = value ? parseInt(value, 10) : 0;\n return {\n status: 'paused',\n currentTime: 0,\n duration: initialDuration,\n };\n });\n\n useEffect(() => {\n return () => {\n onUnmount();\n };\n }, []);\n\n const uiColors = colors.ui.groupChannelMessage[variant];\n const remainingTime = state.duration - state.currentTime;\n\n return (\n <MessageContainer {...props}>\n <Box style={styles.container} backgroundColor={uiColors.enabled.background}>\n <PressBox onPress={() => onToggleVoiceMessage?.(state, setState)} onLongPress={onLongPress}>\n <ProgressBar\n current={state.currentTime}\n total={state.duration}\n style={{ minWidth: 136, height: 44 }}\n trackColor={uiColors.enabled.voiceProgressTrack}\n overlay={\n <Box\n flex={1}\n flexDirection={'row'}\n alignItems={'center'}\n justifyContent={'space-between'}\n paddingHorizontal={12}\n >\n {state.status === 'preparing' ? (\n <LoadingSpinner size={24} color={uiColors.enabled.voiceSpinner} />\n ) : (\n <Icon\n size={16}\n containerStyle={{\n backgroundColor: uiColors.enabled.voiceActionIconBackground,\n padding: 6,\n borderRadius: 16,\n }}\n icon={state.status === 'paused' ? 'play' : 'pause'}\n />\n )}\n <Text\n body3\n style={{ lineHeight: undefined, marginLeft: 6, opacity: 0.88 }}\n color={uiColors.enabled.textVoicePlaytime}\n >\n {millsToMSS(state.currentTime === 0 ? state.duration : remainingTime)}\n </Text>\n </Box>\n }\n />\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 VoiceFileMessage;\n"],"mappings":"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"}
@@ -12,7 +12,7 @@ const UnknownMessage = props => {
12
12
  const {
13
13
  colors
14
14
  } = useUIKitTheme();
15
- const color = colors.ui.groupChannelMessage['incoming'];
15
+ const color = colors.ui.groupChannelMessage[variant];
16
16
  const titleColor = variant === 'incoming' ? colors.onBackground01 : colors.onBackgroundReverse01;
17
17
  const descColor = variant === 'incoming' ? colors.onBackground02 : colors.onBackgroundReverse02;
18
18
  return /*#__PURE__*/React.createElement(MessageContainer, props, /*#__PURE__*/React.createElement(PressBox, {
@@ -1 +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"}
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[variant];\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,CAACJ,OAAO,CAAC;EACpD,MAAMK,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"}
@@ -2,6 +2,7 @@ import AdminMessage from './Message.admin';
2
2
  import FileMessage from './Message.file';
3
3
  import ImageFileMessage from './Message.file.image';
4
4
  import VideoFileMessage from './Message.file.video';
5
+ import VoiceFileMessage from './Message.file.voice';
5
6
  import UnknownMessage from './Message.unknown';
6
7
  import UserMessage from './Message.user';
7
8
  import OpenGraphUser from './Message.user.og';
@@ -11,6 +12,7 @@ const GroupChannelMessage = {
11
12
  File: FileMessage,
12
13
  ImageFile: ImageFileMessage,
13
14
  VideoFile: VideoFileMessage,
15
+ VoiceFile: VoiceFileMessage,
14
16
  Admin: AdminMessage,
15
17
  Unknown: UnknownMessage
16
18
  };
@@ -1 +1 @@
1
- {"version":3,"names":["AdminMessage","FileMessage","ImageFileMessage","VideoFileMessage","UnknownMessage","UserMessage","OpenGraphUser","GroupChannelMessage","User","File","ImageFile","VideoFile","Admin","Unknown"],"sources":["index.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { SendbirdGroupChannel, SendbirdMessage, SendbirdUser } from '@sendbird/uikit-utils';\n\nimport AdminMessage from './Message.admin';\nimport FileMessage from './Message.file';\nimport ImageFileMessage from './Message.file.image';\nimport VideoFileMessage from './Message.file.video';\nimport UnknownMessage from './Message.unknown';\nimport UserMessage from './Message.user';\nimport OpenGraphUser from './Message.user.og';\n\nexport type GroupChannelMessageProps<T extends SendbirdMessage, AdditionalProps = unknown> = {\n channel: SendbirdGroupChannel;\n message: T;\n variant?: 'outgoing' | 'incoming';\n strings?: {\n senderName?: string;\n sentDate?: string;\n edited?: string;\n fileName?: string;\n unknownTitle?: string;\n unknownDescription?: string;\n };\n\n children?: React.ReactNode;\n sendingStatus?: React.ReactNode;\n parentMessage?: React.ReactNode;\n\n groupedWithPrev: boolean;\n groupedWithNext: boolean;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressAvatar?: () => void;\n onPressURL?: (url: string) => void;\n onPressMentionedUser?: (mentionedUser?: SendbirdUser) => void;\n} & AdditionalProps;\n\nconst GroupChannelMessage = {\n User: UserMessage,\n OpenGraphUser: OpenGraphUser,\n File: FileMessage,\n ImageFile: ImageFileMessage,\n VideoFile: VideoFileMessage,\n Admin: AdminMessage,\n Unknown: UnknownMessage,\n};\n\nexport default GroupChannelMessage;\n"],"mappings":"AAIA,OAAOA,YAAY,MAAM,iBAAiB;AAC1C,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,aAAa,MAAM,mBAAmB;AA4B7C,MAAMC,mBAAmB,GAAG;EAC1BC,IAAI,EAAEH,WAAW;EACjBC,aAAa,EAAEA,aAAa;EAC5BG,IAAI,EAAER,WAAW;EACjBS,SAAS,EAAER,gBAAgB;EAC3BS,SAAS,EAAER,gBAAgB;EAC3BS,KAAK,EAAEZ,YAAY;EACnBa,OAAO,EAAET;AACX,CAAC;AAED,eAAeG,mBAAmB"}
1
+ {"version":3,"names":["AdminMessage","FileMessage","ImageFileMessage","VideoFileMessage","VoiceFileMessage","UnknownMessage","UserMessage","OpenGraphUser","GroupChannelMessage","User","File","ImageFile","VideoFile","VoiceFile","Admin","Unknown"],"sources":["index.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { SendbirdGroupChannel, SendbirdMessage, SendbirdUser } from '@sendbird/uikit-utils';\n\nimport AdminMessage from './Message.admin';\nimport FileMessage from './Message.file';\nimport ImageFileMessage from './Message.file.image';\nimport VideoFileMessage from './Message.file.video';\nimport VoiceFileMessage from './Message.file.voice';\nimport type { VoiceFileMessageState } from './Message.file.voice';\nimport UnknownMessage from './Message.unknown';\nimport UserMessage from './Message.user';\nimport OpenGraphUser from './Message.user.og';\n\nexport type GroupChannelMessageProps<T extends SendbirdMessage, AdditionalProps = unknown> = {\n channel: SendbirdGroupChannel;\n message: T;\n variant?: 'outgoing' | 'incoming';\n strings?: {\n senderName?: string;\n sentDate?: string;\n edited?: string;\n fileName?: string;\n unknownTitle?: string;\n unknownDescription?: string;\n };\n\n children?: React.ReactNode;\n sendingStatus?: React.ReactNode;\n parentMessage?: React.ReactNode;\n\n groupedWithPrev: boolean;\n groupedWithNext: boolean;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressAvatar?: () => void;\n onPressURL?: (url: string) => void;\n onPressMentionedUser?: (mentionedUser?: SendbirdUser) => void;\n onToggleVoiceMessage?: (\n state: VoiceFileMessageState,\n setState: React.Dispatch<React.SetStateAction<VoiceFileMessageState>>,\n ) => Promise<void>;\n} & AdditionalProps;\n\nconst GroupChannelMessage = {\n User: UserMessage,\n OpenGraphUser: OpenGraphUser,\n File: FileMessage,\n ImageFile: ImageFileMessage,\n VideoFile: VideoFileMessage,\n VoiceFile: VoiceFileMessage,\n Admin: AdminMessage,\n Unknown: UnknownMessage,\n};\n\nexport default GroupChannelMessage;\n"],"mappings":"AAIA,OAAOA,YAAY,MAAM,iBAAiB;AAC1C,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,gBAAgB,MAAM,sBAAsB;AAEnD,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,aAAa,MAAM,mBAAmB;AAgC7C,MAAMC,mBAAmB,GAAG;EAC1BC,IAAI,EAAEH,WAAW;EACjBC,aAAa,EAAEA,aAAa;EAC5BG,IAAI,EAAET,WAAW;EACjBU,SAAS,EAAET,gBAAgB;EAC3BU,SAAS,EAAET,gBAAgB;EAC3BU,SAAS,EAAET,gBAAgB;EAC3BU,KAAK,EAAEd,YAAY;EACnBe,OAAO,EAAEV;AACX,CAAC;AAED,eAAeG,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","conditionChaining","Icon","Image","Text","createStyleSheet","useUIKitTheme","Badge","GroupChannelPreview","_ref","customCover","coverUrl","memberCount","badgeCount","maxBadgeCount","body","bodyIcon","title","titleCaption","titleCaptionLeft","frozen","notificationOff","broadcast","mentioned","mentionTrigger","colors","color","ui","groupChannelPreview","createElement","style","styles","container","backgroundColor","default","none","background","coverContainer","Boolean","resizeMode","channelCover","coverBackground","source","uri","rightSection","rightTopSection","channelInfoContainer","size","icon","secondary","containerStyle","channelInfoBroadcast","numberOfLines","subtitle1","channelInfoTitle","textTitle","caption1","channelInfoMemberCount","primary","channelInfoFrozen","onBackground03","titleCaptionContainer","caption2","textTitleCaption","titleCaptionText","rightBottomSection","bodyWrapper","bodyIconBackground","body3","ellipsizeMode","bodyText","textBody","unreadContainer","h2","badge","unreadMention","count","maxCount","Separator","separator","_ref2","height","width","flexDirection","alignItems","justifyContent","marginLeft","marginRight","borderRadius","flex","paddingTop","paddingRight","marginBottom","flexShrink","marginTop","position","left","right","bottom"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport Icon from '../../components/Icon';\nimport Image from '../../components/Image';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Badge from '../Badge';\n\ntype Props = {\n customCover?: React.ReactElement;\n coverUrl: string;\n\n title: string;\n\n titleCaption: string;\n titleCaptionLeft?: React.ReactElement;\n\n bodyIcon?: keyof typeof Icon.Assets;\n body: string;\n\n memberCount?: number;\n badgeCount: number;\n maxBadgeCount?: number;\n\n frozen?: boolean;\n notificationOff?: boolean;\n broadcast?: boolean;\n mentioned?: boolean;\n mentionTrigger?: string;\n};\n\nconst GroupChannelPreview = ({\n customCover,\n coverUrl,\n memberCount,\n badgeCount,\n maxBadgeCount,\n body,\n bodyIcon,\n title,\n titleCaption,\n titleCaptionLeft,\n frozen,\n notificationOff,\n broadcast,\n mentioned,\n mentionTrigger = '@',\n}: Props) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.groupChannelPreview;\n\n return (\n <View style={[styles.container, { backgroundColor: color.default.none.background }]}>\n <View style={styles.coverContainer}>\n {conditionChaining(\n [Boolean(customCover)],\n [\n customCover,\n <Image\n resizeMode={'cover'}\n style={[styles.channelCover, { backgroundColor: color.default.none.coverBackground }]}\n source={{ uri: coverUrl }}\n />,\n ],\n )}\n </View>\n <View style={styles.rightSection}>\n <View style={styles.rightTopSection}>\n <View style={styles.channelInfoContainer}>\n {broadcast && (\n <Icon\n size={16}\n icon={'broadcast'}\n color={colors.secondary}\n containerStyle={styles.channelInfoBroadcast}\n />\n )}\n <Text numberOfLines={1} subtitle1 style={styles.channelInfoTitle} color={color.default.none.textTitle}>\n {title}\n </Text>\n {Boolean(memberCount) && (\n <Text caption1 style={styles.channelInfoMemberCount} color={color.default.none.memberCount}>\n {memberCount}\n </Text>\n )}\n {frozen && (\n <Icon size={16} icon={'freeze'} color={colors.primary} containerStyle={styles.channelInfoFrozen} />\n )}\n {notificationOff && <Icon size={16} icon={'notifications-off-filled'} color={colors.onBackground03} />}\n </View>\n <View style={styles.titleCaptionContainer}>\n {titleCaptionLeft}\n <Text caption2 color={color.default.none.textTitleCaption} style={styles.titleCaptionText}>\n {titleCaption}\n </Text>\n </View>\n </View>\n\n <View style={styles.rightBottomSection}>\n <View style={styles.body}>\n <View style={styles.bodyWrapper}>\n {bodyIcon && (\n <Icon\n size={18}\n icon={bodyIcon}\n color={color.default.none.bodyIcon}\n containerStyle={[\n styles.bodyIcon,\n { backgroundColor: colors.ui.groupChannelPreview.default.none.bodyIconBackground },\n ]}\n />\n )}\n <Text\n body3\n numberOfLines={1}\n ellipsizeMode={bodyIcon ? 'middle' : 'tail'}\n style={styles.bodyText}\n color={color.default.none.textBody}\n >\n {body}\n </Text>\n </View>\n </View>\n <View style={styles.unreadContainer}>\n {mentioned && (\n <Text h2 color={colors.ui.badge.default.none.background} style={styles.unreadMention}>\n {mentionTrigger}\n </Text>\n )}\n {badgeCount > 0 && <Badge count={badgeCount} maxCount={maxBadgeCount} />}\n </View>\n </View>\n <Separator color={color.default.none.separator} />\n </View>\n </View>\n );\n};\n\ntype SeparatorProps = { color: string };\nconst Separator = ({ color }: SeparatorProps) => <View style={[styles.separator, { backgroundColor: color }]} />;\n\nconst styles = createStyleSheet({\n container: {\n height: 76,\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n coverContainer: {\n marginLeft: 16,\n marginRight: 16,\n },\n channelCover: {\n width: 56,\n height: 56,\n borderRadius: 28,\n },\n rightSection: {\n flex: 1,\n paddingTop: 10,\n paddingRight: 16,\n },\n rightTopSection: {\n flexDirection: 'row',\n marginBottom: 4,\n },\n channelInfoContainer: {\n flex: 1,\n marginRight: 4,\n alignItems: 'center',\n flexDirection: 'row',\n },\n channelInfoBroadcast: {\n marginRight: 4,\n },\n channelInfoTitle: {\n flexShrink: 1,\n marginRight: 4,\n },\n channelInfoMemberCount: {\n paddingTop: 2,\n marginRight: 4,\n },\n channelInfoFrozen: {\n marginRight: 4,\n },\n titleCaptionContainer: {\n alignItems: 'flex-start',\n flexDirection: 'row',\n marginLeft: 4,\n },\n titleCaptionText: {\n marginTop: 2,\n },\n rightBottomSection: {\n flex: 1,\n height: '100%',\n flexDirection: 'row',\n },\n body: {\n marginRight: 4,\n flex: 1,\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n bodyWrapper: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n bodyText: {\n flex: 1,\n },\n bodyIcon: {\n borderRadius: 8,\n width: 26,\n height: 26,\n marginRight: 4,\n },\n unreadContainer: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n unreadMention: {\n marginRight: 4,\n },\n separator: {\n position: 'absolute',\n left: 0,\n right: -16,\n bottom: 0,\n height: 1,\n },\n});\n\nexport default GroupChannelPreview;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AAEnC,SAASC,iBAAiB,QAAQ,uBAAuB;AAEzD,OAAOC,IAAI,MAAM,uBAAuB;AACxC,OAAOC,KAAK,MAAM,wBAAwB;AAC1C,OAAOC,IAAI,MAAM,uBAAuB;AACxC,OAAOC,gBAAgB,MAAM,+BAA+B;AAC5D,OAAOC,aAAa,MAAM,2BAA2B;AACrD,OAAOC,KAAK,MAAM,UAAU;AAyB5B,MAAMC,mBAAmB,GAAGC,IAAA,IAgBf;EAAA,IAhBgB;IAC3BC,WAAW;IACXC,QAAQ;IACRC,WAAW;IACXC,UAAU;IACVC,aAAa;IACbC,IAAI;IACJC,QAAQ;IACRC,KAAK;IACLC,YAAY;IACZC,gBAAgB;IAChBC,MAAM;IACNC,eAAe;IACfC,SAAS;IACTC,SAAS;IACTC,cAAc,GAAG;EACZ,CAAC,GAAAf,IAAA;EACN,MAAM;IAAEgB;EAAO,CAAC,GAAGnB,aAAa,EAAE;EAClC,MAAMoB,KAAK,GAAGD,MAAM,CAACE,EAAE,CAACC,mBAAmB;EAE3C,oBACE7B,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE;MAAEC,eAAe,EAAEP,KAAK,CAACQ,OAAO,CAACC,IAAI,CAACC;IAAW,CAAC;EAAE,gBAClFrC,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAEC,MAAM,CAACM;EAAe,GAChCpC,iBAAiB,CAChB,CAACqC,OAAO,CAAC5B,WAAW,CAAC,CAAC,EACtB,CACEA,WAAW,eACXX,KAAA,CAAA8B,aAAA,CAAC1B,KAAK;IACJoC,UAAU,EAAE,OAAQ;IACpBT,KAAK,EAAE,CAACC,MAAM,CAACS,YAAY,EAAE;MAAEP,eAAe,EAAEP,KAAK,CAACQ,OAAO,CAACC,IAAI,CAACM;IAAgB,CAAC,CAAE;IACtFC,MAAM,EAAE;MAAEC,GAAG,EAAEhC;IAAS;EAAE,EAC1B,CACH,CACF,CACI,eACPZ,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAEC,MAAM,CAACa;EAAa,gBAC/B7C,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAEC,MAAM,CAACc;EAAgB,gBAClC9C,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAEC,MAAM,CAACe;EAAqB,GACtCxB,SAAS,iBACRvB,KAAA,CAAA8B,aAAA,CAAC3B,IAAI;IACH6C,IAAI,EAAE,EAAG;IACTC,IAAI,EAAE,WAAY;IAClBtB,KAAK,EAAED,MAAM,CAACwB,SAAU;IACxBC,cAAc,EAAEnB,MAAM,CAACoB;EAAqB,EAE/C,eACDpD,KAAA,CAAA8B,aAAA,CAACzB,IAAI;IAACgD,aAAa,EAAE,CAAE;IAACC,SAAS;IAACvB,KAAK,EAAEC,MAAM,CAACuB,gBAAiB;IAAC5B,KAAK,EAAEA,KAAK,CAACQ,OAAO,CAACC,IAAI,CAACoB;EAAU,GACnGtC,KAAK,CACD,EACNqB,OAAO,CAAC1B,WAAW,CAAC,iBACnBb,KAAA,CAAA8B,aAAA,CAACzB,IAAI;IAACoD,QAAQ;IAAC1B,KAAK,EAAEC,MAAM,CAAC0B,sBAAuB;IAAC/B,KAAK,EAAEA,KAAK,CAACQ,OAAO,CAACC,IAAI,CAACvB;EAAY,GACxFA,WAAW,CAEf,EACAQ,MAAM,iBACLrB,KAAA,CAAA8B,aAAA,CAAC3B,IAAI;IAAC6C,IAAI,EAAE,EAAG;IAACC,IAAI,EAAE,QAAS;IAACtB,KAAK,EAAED,MAAM,CAACiC,OAAQ;IAACR,cAAc,EAAEnB,MAAM,CAAC4B;EAAkB,EACjG,EACAtC,eAAe,iBAAItB,KAAA,CAAA8B,aAAA,CAAC3B,IAAI;IAAC6C,IAAI,EAAE,EAAG;IAACC,IAAI,EAAE,0BAA2B;IAACtB,KAAK,EAAED,MAAM,CAACmC;EAAe,EAAG,CACjG,eACP7D,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAEC,MAAM,CAAC8B;EAAsB,GACvC1C,gBAAgB,eACjBpB,KAAA,CAAA8B,aAAA,CAACzB,IAAI;IAAC0D,QAAQ;IAACpC,KAAK,EAAEA,KAAK,CAACQ,OAAO,CAACC,IAAI,CAAC4B,gBAAiB;IAACjC,KAAK,EAAEC,MAAM,CAACiC;EAAiB,GACvF9C,YAAY,CACR,CACF,CACF,eAEPnB,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAEC,MAAM,CAACkC;EAAmB,gBACrClE,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAEC,MAAM,CAAChB;EAAK,gBACvBhB,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAEC,MAAM,CAACmC;EAAY,GAC7BlD,QAAQ,iBACPjB,KAAA,CAAA8B,aAAA,CAAC3B,IAAI;IACH6C,IAAI,EAAE,EAAG;IACTC,IAAI,EAAEhC,QAAS;IACfU,KAAK,EAAEA,KAAK,CAACQ,OAAO,CAACC,IAAI,CAACnB,QAAS;IACnCkC,cAAc,EAAE,CACdnB,MAAM,CAACf,QAAQ,EACf;MAAEiB,eAAe,EAAER,MAAM,CAACE,EAAE,CAACC,mBAAmB,CAACM,OAAO,CAACC,IAAI,CAACgC;IAAmB,CAAC;EAClF,EAEL,eACDpE,KAAA,CAAA8B,aAAA,CAACzB,IAAI;IACHgE,KAAK;IACLhB,aAAa,EAAE,CAAE;IACjBiB,aAAa,EAAErD,QAAQ,GAAG,QAAQ,GAAG,MAAO;IAC5Cc,KAAK,EAAEC,MAAM,CAACuC,QAAS;IACvB5C,KAAK,EAAEA,KAAK,CAACQ,OAAO,CAACC,IAAI,CAACoC;EAAS,GAElCxD,IAAI,CACA,CACF,CACF,eACPhB,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAEC,MAAM,CAACyC;EAAgB,GACjCjD,SAAS,iBACRxB,KAAA,CAAA8B,aAAA,CAACzB,IAAI;IAACqE,EAAE;IAAC/C,KAAK,EAAED,MAAM,CAACE,EAAE,CAAC+C,KAAK,CAACxC,OAAO,CAACC,IAAI,CAACC,UAAW;IAACN,KAAK,EAAEC,MAAM,CAAC4C;EAAc,GAClFnD,cAAc,CAElB,EACAX,UAAU,GAAG,CAAC,iBAAId,KAAA,CAAA8B,aAAA,CAACtB,KAAK;IAACqE,KAAK,EAAE/D,UAAW;IAACgE,QAAQ,EAAE/D;EAAc,EAAG,CACnE,CACF,eACPf,KAAA,CAAA8B,aAAA,CAACiD,SAAS;IAACpD,KAAK,EAAEA,KAAK,CAACQ,OAAO,CAACC,IAAI,CAAC4C;EAAU,EAAG,CAC7C,CACF;AAEX,CAAC;AAGD,MAAMD,SAAS,GAAGE,KAAA;EAAA,IAAC;IAAEtD;EAAsB,CAAC,GAAAsD,KAAA;EAAA,oBAAKjF,KAAA,CAAA8B,aAAA,CAAC7B,IAAI;IAAC8B,KAAK,EAAE,CAACC,MAAM,CAACgD,SAAS,EAAE;MAAE9C,eAAe,EAAEP;IAAM,CAAC;EAAE,EAAG;AAAA;AAEhH,MAAMK,MAAM,GAAG1B,gBAAgB,CAAC;EAC9B2B,SAAS,EAAE;IACTiD,MAAM,EAAE,EAAE;IACVC,KAAK,EAAE,MAAM;IACbC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDhD,cAAc,EAAE;IACdiD,UAAU,EAAE,EAAE;IACdC,WAAW,EAAE;EACf,CAAC;EACD/C,YAAY,EAAE;IACZ0C,KAAK,EAAE,EAAE;IACTD,MAAM,EAAE,EAAE;IACVO,YAAY,EAAE;EAChB,CAAC;EACD5C,YAAY,EAAE;IACZ6C,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE,EAAE;IACdC,YAAY,EAAE;EAChB,CAAC;EACD9C,eAAe,EAAE;IACfsC,aAAa,EAAE,KAAK;IACpBS,YAAY,EAAE;EAChB,CAAC;EACD9C,oBAAoB,EAAE;IACpB2C,IAAI,EAAE,CAAC;IACPF,WAAW,EAAE,CAAC;IACdH,UAAU,EAAE,QAAQ;IACpBD,aAAa,EAAE;EACjB,CAAC;EACDhC,oBAAoB,EAAE;IACpBoC,WAAW,EAAE;EACf,CAAC;EACDjC,gBAAgB,EAAE;IAChBuC,UAAU,EAAE,CAAC;IACbN,WAAW,EAAE;EACf,CAAC;EACD9B,sBAAsB,EAAE;IACtBiC,UAAU,EAAE,CAAC;IACbH,WAAW,EAAE;EACf,CAAC;EACD5B,iBAAiB,EAAE;IACjB4B,WAAW,EAAE;EACf,CAAC;EACD1B,qBAAqB,EAAE;IACrBuB,UAAU,EAAE,YAAY;IACxBD,aAAa,EAAE,KAAK;IACpBG,UAAU,EAAE;EACd,CAAC;EACDtB,gBAAgB,EAAE;IAChB8B,SAAS,EAAE;EACb,CAAC;EACD7B,kBAAkB,EAAE;IAClBwB,IAAI,EAAE,CAAC;IACPR,MAAM,EAAE,MAAM;IACdE,aAAa,EAAE;EACjB,CAAC;EACDpE,IAAI,EAAE;IACJwE,WAAW,EAAE,CAAC;IACdE,IAAI,EAAE,CAAC;IACPN,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd,CAAC;EACDlB,WAAW,EAAE;IACXiB,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd,CAAC;EACDd,QAAQ,EAAE;IACRmB,IAAI,EAAE;EACR,CAAC;EACDzE,QAAQ,EAAE;IACRwE,YAAY,EAAE,CAAC;IACfN,KAAK,EAAE,EAAE;IACTD,MAAM,EAAE,EAAE;IACVM,WAAW,EAAE;EACf,CAAC;EACDf,eAAe,EAAE;IACfW,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd,CAAC;EACDT,aAAa,EAAE;IACbY,WAAW,EAAE;EACf,CAAC;EACDR,SAAS,EAAE;IACTgB,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC,EAAE;IACVC,MAAM,EAAE,CAAC;IACTjB,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AAEF,eAAezE,mBAAmB"}
1
+ {"version":3,"names":["React","View","conditionChaining","Icon","Image","Text","createStyleSheet","useUIKitTheme","Badge","GroupChannelPreview","_ref","customCover","coverUrl","memberCount","badgeCount","maxBadgeCount","body","bodyIcon","title","titleCaption","titleCaptionLeft","frozen","notificationOff","broadcast","mentioned","mentionTrigger","colors","color","ui","groupChannelPreview","createElement","style","styles","container","backgroundColor","default","none","background","coverContainer","Boolean","resizeMode","channelCover","coverBackground","source","uri","rightSection","rightTopSection","channelInfoContainer","size","icon","secondary","containerStyle","channelInfoBroadcast","numberOfLines","subtitle1","channelInfoTitle","textTitle","caption1","channelInfoMemberCount","primary","channelInfoFrozen","onBackground03","titleCaptionContainer","caption2","textTitleCaption","titleCaptionText","rightBottomSection","bodyWrapper","bodyIconBackground","body3","ellipsizeMode","bodyText","textBody","unreadContainer","h2","badge","unreadMention","count","maxCount","Separator","separator","_ref2","height","width","flexDirection","alignItems","justifyContent","marginLeft","marginRight","borderRadius","flex","paddingTop","paddingRight","marginBottom","flexShrink","marginTop","position","left","right","bottom"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport Icon from '../../components/Icon';\nimport Image from '../../components/Image';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Badge from '../Badge';\n\ntype Props = {\n customCover?: React.ReactNode;\n coverUrl: string;\n\n title: string;\n\n titleCaption: string;\n titleCaptionLeft?: React.ReactNode;\n\n bodyIcon?: keyof typeof Icon.Assets;\n body: string;\n\n memberCount?: number;\n badgeCount: number;\n maxBadgeCount?: number;\n\n frozen?: boolean;\n notificationOff?: boolean;\n broadcast?: boolean;\n mentioned?: boolean;\n mentionTrigger?: string;\n};\n\nconst GroupChannelPreview = ({\n customCover,\n coverUrl,\n memberCount,\n badgeCount,\n maxBadgeCount,\n body,\n bodyIcon,\n title,\n titleCaption,\n titleCaptionLeft,\n frozen,\n notificationOff,\n broadcast,\n mentioned,\n mentionTrigger = '@',\n}: Props) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.groupChannelPreview;\n\n return (\n <View style={[styles.container, { backgroundColor: color.default.none.background }]}>\n <View style={styles.coverContainer}>\n {conditionChaining(\n [Boolean(customCover)],\n [\n customCover,\n <Image\n resizeMode={'cover'}\n style={[styles.channelCover, { backgroundColor: color.default.none.coverBackground }]}\n source={{ uri: coverUrl }}\n />,\n ],\n )}\n </View>\n <View style={styles.rightSection}>\n <View style={styles.rightTopSection}>\n <View style={styles.channelInfoContainer}>\n {broadcast && (\n <Icon\n size={16}\n icon={'broadcast'}\n color={colors.secondary}\n containerStyle={styles.channelInfoBroadcast}\n />\n )}\n <Text numberOfLines={1} subtitle1 style={styles.channelInfoTitle} color={color.default.none.textTitle}>\n {title}\n </Text>\n {Boolean(memberCount) && (\n <Text caption1 style={styles.channelInfoMemberCount} color={color.default.none.memberCount}>\n {memberCount}\n </Text>\n )}\n {frozen && (\n <Icon size={16} icon={'freeze'} color={colors.primary} containerStyle={styles.channelInfoFrozen} />\n )}\n {notificationOff && <Icon size={16} icon={'notifications-off-filled'} color={colors.onBackground03} />}\n </View>\n <View style={styles.titleCaptionContainer}>\n {titleCaptionLeft}\n <Text caption2 color={color.default.none.textTitleCaption} style={styles.titleCaptionText}>\n {titleCaption}\n </Text>\n </View>\n </View>\n\n <View style={styles.rightBottomSection}>\n <View style={styles.body}>\n <View style={styles.bodyWrapper}>\n {bodyIcon && (\n <Icon\n size={18}\n icon={bodyIcon}\n color={color.default.none.bodyIcon}\n containerStyle={[\n styles.bodyIcon,\n { backgroundColor: colors.ui.groupChannelPreview.default.none.bodyIconBackground },\n ]}\n />\n )}\n <Text\n body3\n numberOfLines={1}\n ellipsizeMode={bodyIcon ? 'middle' : 'tail'}\n style={styles.bodyText}\n color={color.default.none.textBody}\n >\n {body}\n </Text>\n </View>\n </View>\n <View style={styles.unreadContainer}>\n {mentioned && (\n <Text h2 color={colors.ui.badge.default.none.background} style={styles.unreadMention}>\n {mentionTrigger}\n </Text>\n )}\n {badgeCount > 0 && <Badge count={badgeCount} maxCount={maxBadgeCount} />}\n </View>\n </View>\n <Separator color={color.default.none.separator} />\n </View>\n </View>\n );\n};\n\ntype SeparatorProps = { color: string };\nconst Separator = ({ color }: SeparatorProps) => <View style={[styles.separator, { backgroundColor: color }]} />;\n\nconst styles = createStyleSheet({\n container: {\n height: 76,\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n coverContainer: {\n marginLeft: 16,\n marginRight: 16,\n },\n channelCover: {\n width: 56,\n height: 56,\n borderRadius: 28,\n },\n rightSection: {\n flex: 1,\n paddingTop: 10,\n paddingRight: 16,\n },\n rightTopSection: {\n flexDirection: 'row',\n marginBottom: 4,\n },\n channelInfoContainer: {\n flex: 1,\n marginRight: 4,\n alignItems: 'center',\n flexDirection: 'row',\n },\n channelInfoBroadcast: {\n marginRight: 4,\n },\n channelInfoTitle: {\n flexShrink: 1,\n marginRight: 4,\n },\n channelInfoMemberCount: {\n paddingTop: 2,\n marginRight: 4,\n },\n channelInfoFrozen: {\n marginRight: 4,\n },\n titleCaptionContainer: {\n alignItems: 'flex-start',\n flexDirection: 'row',\n marginLeft: 4,\n },\n titleCaptionText: {\n marginTop: 2,\n },\n rightBottomSection: {\n flex: 1,\n height: '100%',\n flexDirection: 'row',\n },\n body: {\n marginRight: 4,\n flex: 1,\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n bodyWrapper: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n bodyText: {\n flex: 1,\n },\n bodyIcon: {\n borderRadius: 8,\n width: 26,\n height: 26,\n marginRight: 4,\n },\n unreadContainer: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n unreadMention: {\n marginRight: 4,\n },\n separator: {\n position: 'absolute',\n left: 0,\n right: -16,\n bottom: 0,\n height: 1,\n },\n});\n\nexport default GroupChannelPreview;\n"],"mappings":"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"}
@@ -196,8 +196,9 @@ const styles = createStyleSheet({
196
196
  padding: 4
197
197
  }
198
198
  });
199
- Header.Button = HeaderButton;
200
- Header.Title = HeaderTitle;
201
- Header.Subtitle = HeaderSubtitle;
202
- export default Header;
199
+ export default Object.assign(Header, {
200
+ Button: HeaderButton,
201
+ Title: HeaderTitle,
202
+ Subtitle: HeaderSubtitle
203
+ });
203
204
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","TouchableOpacity","View","useSafeAreaInsets","conditionChaining","Text","createStyleSheet","useHeaderStyle","useUIKitTheme","AlignMapper","left","center","right","Header","_ref","children","titleAlign","title","onPressLeft","onPressRight","clearTitleMargin","clearStatusBarTopInset","statusBarTopInsetAs","topInset","defaultTitleAlign","defaultHeight","colors","paddingLeft","paddingRight","actualTitleAlign","actualTopInset","createElement","style","paddingTop","backgroundColor","ui","header","nav","none","background","styles","container","paddingHorizontal","borderBottomColor","borderBottom","height","LeftSide","marginHorizontal","justifyContent","HeaderTitle","RightSide","_ref2","HeaderButton","onPress","_ref3","_ref4","props","_extends","h1","numberOfLines","HeaderSubtitle","_ref5","color","onBackground03","caption2","_ref6","disabled","button","e","activeOpacity","borderBottomWidth","flexDirection","flex","alignItems","minWidth","marginRight","marginLeft","padding","Button","Title","Subtitle"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, TouchableOpacityProps, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport Text, { TextProps } from '../../components/Text';\nimport type { BaseHeaderProps } from '../../index';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype HeaderElement = string | React.ReactElement | null;\nexport type HeaderProps = BaseHeaderProps<\n {\n title?: HeaderElement;\n left?: HeaderElement;\n right?: HeaderElement;\n onPressLeft?: () => void;\n onPressRight?: () => void;\n },\n {\n clearTitleMargin?: boolean;\n clearStatusBarTopInset?: boolean;\n statusBarTopInsetAs?: 'padding' | 'margin';\n }\n>;\n\nconst AlignMapper = { left: 'flex-start', center: 'center', right: 'flex-end' } as const;\nconst Header: ((props: HeaderProps) => JSX.Element) & {\n Button: typeof HeaderButton;\n Title: typeof HeaderTitle;\n Subtitle: typeof HeaderSubtitle;\n} = ({\n children,\n titleAlign,\n title = null,\n left = null,\n right = null,\n onPressLeft,\n onPressRight,\n clearTitleMargin = false,\n clearStatusBarTopInset = false,\n statusBarTopInsetAs = 'padding',\n}) => {\n const { topInset, defaultTitleAlign, defaultHeight } = useHeaderStyle();\n\n const { colors } = useUIKitTheme();\n const { left: paddingLeft, right: paddingRight } = useSafeAreaInsets();\n\n const actualTitleAlign = titleAlign ?? defaultTitleAlign;\n const actualTopInset = clearStatusBarTopInset ? 0 : topInset;\n\n if (!title && !left && !right) {\n return (\n <View style={{ paddingTop: actualTopInset, backgroundColor: colors.ui.header.nav.none.background }}>\n {children}\n </View>\n );\n }\n\n return (\n <View\n style={[\n styles.container,\n {\n [statusBarTopInsetAs === 'padding' ? 'paddingTop' : 'marginTop']: actualTopInset,\n paddingLeft: paddingLeft + styles.container.paddingHorizontal,\n paddingRight: paddingRight + styles.container.paddingHorizontal,\n backgroundColor: colors.ui.header.nav.none.background,\n borderBottomColor: colors.ui.header.nav.none.borderBottom,\n },\n ]}\n >\n <View style={[styles.header, { height: defaultHeight }]}>\n <LeftSide titleAlign={actualTitleAlign} left={left} onPressLeft={onPressLeft} />\n <View\n style={[\n styles.title,\n clearTitleMargin && { marginHorizontal: 0 },\n { justifyContent: AlignMapper[actualTitleAlign] },\n ]}\n >\n {typeof title === 'string' ? <HeaderTitle>{title}</HeaderTitle> : title}\n </View>\n <RightSide titleAlign={actualTitleAlign} right={right} onPressRight={onPressRight} />\n </View>\n {children}\n </View>\n );\n};\n\nconst LeftSide = ({ titleAlign, onPressLeft, left }: HeaderProps) => {\n if (titleAlign === 'center') {\n return <View style={styles.left}>{left && <HeaderButton onPress={onPressLeft}>{left}</HeaderButton>}</View>;\n }\n if (!left) return null;\n return (\n <View style={styles.left}>\n <HeaderButton onPress={onPressLeft}>{left}</HeaderButton>\n </View>\n );\n};\n\nconst RightSide = ({ titleAlign, onPressRight, right }: HeaderProps) => {\n if (titleAlign === 'center') {\n return <View style={styles.right}>{right && <HeaderButton onPress={onPressRight}>{right}</HeaderButton>}</View>;\n }\n if (!right) return null;\n return (\n <View style={styles.right}>\n <HeaderButton onPress={onPressRight}>{right}</HeaderButton>\n </View>\n );\n};\n\nconst HeaderTitle = ({ children, style, ...props }: TextProps) => {\n return (\n <Text {...props} h1 numberOfLines={1} style={style}>\n {children}\n </Text>\n );\n};\nconst HeaderSubtitle = ({ children, style, ...props }: TextProps) => {\n const { colors } = useUIKitTheme();\n return (\n <Text color={colors.onBackground03} {...props} caption2 numberOfLines={1} style={style}>\n {children}\n </Text>\n );\n};\nconst HeaderButton = ({ children, disabled, onPress, color, ...props }: TouchableOpacityProps & { color?: string }) => {\n return (\n <TouchableOpacity\n style={styles.button}\n {...props}\n disabled={!onPress || disabled}\n onPress={(e) => onPress?.(e)}\n activeOpacity={0.7}\n >\n {conditionChaining(\n [typeof children === 'string' || typeof children === 'number'],\n [\n <Text button numberOfLines={1} color={color}>\n {children}\n </Text>,\n children,\n ],\n )}\n </TouchableOpacity>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingHorizontal: 12,\n borderBottomWidth: 1,\n },\n header: {\n flexDirection: 'row',\n },\n title: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n marginHorizontal: 12,\n },\n left: {\n height: '100%',\n minWidth: 32,\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 12,\n },\n right: {\n height: '100%',\n minWidth: 32,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 12,\n },\n button: {\n padding: 4,\n },\n});\n\nHeader.Button = HeaderButton;\nHeader.Title = HeaderTitle;\nHeader.Subtitle = HeaderSubtitle;\nexport default Header;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","TouchableOpacity","View","useSafeAreaInsets","conditionChaining","Text","createStyleSheet","useHeaderStyle","useUIKitTheme","AlignMapper","left","center","right","Header","_ref","children","titleAlign","title","onPressLeft","onPressRight","clearTitleMargin","clearStatusBarTopInset","statusBarTopInsetAs","topInset","defaultTitleAlign","defaultHeight","colors","paddingLeft","paddingRight","actualTitleAlign","actualTopInset","createElement","style","paddingTop","backgroundColor","ui","header","nav","none","background","styles","container","paddingHorizontal","borderBottomColor","borderBottom","height","LeftSide","marginHorizontal","justifyContent","HeaderTitle","RightSide","_ref2","HeaderButton","onPress","_ref3","_ref4","props","_extends","h1","numberOfLines","HeaderSubtitle","_ref5","color","onBackground03","caption2","_ref6","disabled","button","e","activeOpacity","borderBottomWidth","flexDirection","flex","alignItems","minWidth","marginRight","marginLeft","padding","Object","assign","Button","Title","Subtitle"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, TouchableOpacityProps, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport Text, { TextProps } from '../../components/Text';\nimport type { BaseHeaderProps, HeaderElement } from '../../index';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\nexport type HeaderProps = BaseHeaderProps<\n {\n title?: HeaderElement;\n left?: HeaderElement;\n right?: HeaderElement;\n onPressLeft?: () => void;\n onPressRight?: () => void;\n },\n {\n clearTitleMargin?: boolean;\n clearStatusBarTopInset?: boolean;\n statusBarTopInsetAs?: 'padding' | 'margin';\n }\n>;\n\nconst AlignMapper = { left: 'flex-start', center: 'center', right: 'flex-end' } as const;\nconst Header = ({\n children,\n titleAlign,\n title = null,\n left = null,\n right = null,\n onPressLeft,\n onPressRight,\n clearTitleMargin = false,\n clearStatusBarTopInset = false,\n statusBarTopInsetAs = 'padding',\n}: HeaderProps) => {\n const { topInset, defaultTitleAlign, defaultHeight } = useHeaderStyle();\n\n const { colors } = useUIKitTheme();\n const { left: paddingLeft, right: paddingRight } = useSafeAreaInsets();\n\n const actualTitleAlign = titleAlign ?? defaultTitleAlign;\n const actualTopInset = clearStatusBarTopInset ? 0 : topInset;\n\n if (!title && !left && !right) {\n return (\n <View style={{ paddingTop: actualTopInset, backgroundColor: colors.ui.header.nav.none.background }}>\n {children}\n </View>\n );\n }\n\n return (\n <View\n style={[\n styles.container,\n {\n [statusBarTopInsetAs === 'padding' ? 'paddingTop' : 'marginTop']: actualTopInset,\n paddingLeft: paddingLeft + styles.container.paddingHorizontal,\n paddingRight: paddingRight + styles.container.paddingHorizontal,\n backgroundColor: colors.ui.header.nav.none.background,\n borderBottomColor: colors.ui.header.nav.none.borderBottom,\n },\n ]}\n >\n <View style={[styles.header, { height: defaultHeight }]}>\n <LeftSide titleAlign={actualTitleAlign} left={left} onPressLeft={onPressLeft} />\n <View\n style={[\n styles.title,\n clearTitleMargin && { marginHorizontal: 0 },\n { justifyContent: AlignMapper[actualTitleAlign] },\n ]}\n >\n {typeof title === 'string' ? <HeaderTitle>{title}</HeaderTitle> : title}\n </View>\n <RightSide titleAlign={actualTitleAlign} right={right} onPressRight={onPressRight} />\n </View>\n {children}\n </View>\n );\n};\n\nconst LeftSide = ({ titleAlign, onPressLeft, left }: HeaderProps) => {\n if (titleAlign === 'center') {\n return <View style={styles.left}>{left && <HeaderButton onPress={onPressLeft}>{left}</HeaderButton>}</View>;\n }\n if (!left) return null;\n return (\n <View style={styles.left}>\n <HeaderButton onPress={onPressLeft}>{left}</HeaderButton>\n </View>\n );\n};\n\nconst RightSide = ({ titleAlign, onPressRight, right }: HeaderProps) => {\n if (titleAlign === 'center') {\n return <View style={styles.right}>{right && <HeaderButton onPress={onPressRight}>{right}</HeaderButton>}</View>;\n }\n if (!right) return null;\n return (\n <View style={styles.right}>\n <HeaderButton onPress={onPressRight}>{right}</HeaderButton>\n </View>\n );\n};\n\nconst HeaderTitle = ({ children, style, ...props }: TextProps) => {\n return (\n <Text {...props} h1 numberOfLines={1} style={style}>\n {children}\n </Text>\n );\n};\nconst HeaderSubtitle = ({ children, style, ...props }: TextProps) => {\n const { colors } = useUIKitTheme();\n return (\n <Text color={colors.onBackground03} {...props} caption2 numberOfLines={1} style={style}>\n {children}\n </Text>\n );\n};\nconst HeaderButton = ({ children, disabled, onPress, color, ...props }: TouchableOpacityProps & { color?: string }) => {\n return (\n <TouchableOpacity\n style={styles.button}\n {...props}\n disabled={!onPress || disabled}\n onPress={(e) => onPress?.(e)}\n activeOpacity={0.7}\n >\n {conditionChaining(\n [typeof children === 'string' || typeof children === 'number'],\n [\n <Text button numberOfLines={1} color={color}>\n {children}\n </Text>,\n children,\n ],\n )}\n </TouchableOpacity>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingHorizontal: 12,\n borderBottomWidth: 1,\n },\n header: {\n flexDirection: 'row',\n },\n title: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n marginHorizontal: 12,\n },\n left: {\n height: '100%',\n minWidth: 32,\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 12,\n },\n right: {\n height: '100%',\n minWidth: 32,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 12,\n },\n button: {\n padding: 4,\n },\n});\n\nexport default Object.assign(Header, {\n Button: HeaderButton,\n Title: HeaderTitle,\n Subtitle: HeaderSubtitle,\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","SendingStatus","getMessageTimeFormat","Box","Icon","PressBox","Text","createStyleSheet","useUIKitTheme","Avatar","LoadingSpinner","MessageContainer","_ref","_props$strings","_props$strings2","children","channel","grouped","pressed","props","colors","color","ui","openChannelMessage","default","renderSendingStatus","message","sendingStatus","PENDING","createElement","SendingStatusContainer","primary","size","FAILED","icon","error","flexDirection","paddingVertical","paddingLeft","paddingRight","backgroundColor","background","enabled","marginRight","onPress","onPressAvatar","styles","avatar","width","uri","sender","profileUrl","style","flexShrink","flex","alignItems","marginBottom","caption1","ellipsizeMode","numberOfLines","isOperator","userId","textOperator","textSenderName","strings","senderName","nickname","caption4","textTime","sentDate","Date","createdAt","_ref2","marginTop"],"sources":["MessageContainer.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendingStatus } from '@sendbird/chat/message';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { getMessageTimeFormat } 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 Avatar from '../Avatar';\nimport LoadingSpinner from '../LoadingSpinner';\nimport type { OpenChannelMessageProps } from './index';\n\ntype Props = {\n pressed?: boolean;\n};\n\nconst MessageContainer = ({\n children,\n channel,\n grouped,\n pressed,\n ...props\n}: OpenChannelMessageProps<SendbirdMessage, Props>) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.openChannelMessage.default;\n\n const renderSendingStatus = () => {\n if (!('sendingStatus' in props.message)) return null;\n\n switch (props.message.sendingStatus) {\n case SendingStatus.PENDING: {\n return (\n <SendingStatusContainer>\n <LoadingSpinner color={colors.primary} size={16} />\n </SendingStatusContainer>\n );\n }\n case SendingStatus.FAILED: {\n return (\n <SendingStatusContainer>\n <Icon icon={'error'} color={colors.error} size={16} />\n </SendingStatusContainer>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n return (\n <Box\n flexDirection={'row'}\n paddingVertical={grouped ? 5 : 6}\n paddingLeft={12}\n paddingRight={12}\n backgroundColor={pressed ? color.pressed.background : color.enabled.background}\n >\n <Box marginRight={12}>\n {!grouped && 'sender' in props.message ? (\n <PressBox onPress={props.onPressAvatar}>\n <Avatar size={styles.avatar.width} uri={props.message.sender.profileUrl} />\n </PressBox>\n ) : (\n <Box style={styles.avatar} />\n )}\n </Box>\n <Box flexShrink={1} flex={1} flexDirection={'column'} alignItems={'flex-start'}>\n {!grouped && 'sender' in props.message && (\n <Box flexDirection={'row'} alignItems={'center'} marginBottom={2}>\n <Box marginRight={4} flexShrink={1}>\n <Text\n caption1\n ellipsizeMode={'middle'}\n numberOfLines={1}\n color={\n channel.isOperator(props.message.sender.userId)\n ? color.enabled.textOperator\n : color.enabled.textSenderName\n }\n >\n {props.strings?.senderName ?? props.message.sender.nickname}\n </Text>\n </Box>\n <Box>\n <Text caption4 color={color.enabled.textTime}>\n {props.strings?.sentDate ?? getMessageTimeFormat(new Date(props.message.createdAt))}\n </Text>\n </Box>\n </Box>\n )}\n <Box style={styles.message}>{children}</Box>\n\n {renderSendingStatus()}\n </Box>\n </Box>\n );\n};\n\nconst SendingStatusContainer = ({ children }: { children: React.ReactElement }) => {\n return (\n <Box flexDirection={'row'}>\n <Box marginTop={2}>{children}</Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n avatar: {\n width: 28,\n },\n message: {\n width: '100%',\n },\n});\n\nexport default MessageContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","SendingStatus","getMessageTimeFormat","Box","Icon","PressBox","Text","createStyleSheet","useUIKitTheme","Avatar","LoadingSpinner","MessageContainer","_ref","_props$strings","_props$strings2","children","channel","grouped","pressed","props","colors","color","ui","openChannelMessage","default","renderSendingStatus","message","sendingStatus","PENDING","createElement","SendingStatusContainer","primary","size","FAILED","icon","error","flexDirection","paddingVertical","paddingLeft","paddingRight","backgroundColor","background","enabled","marginRight","onPress","onPressAvatar","styles","avatar","width","uri","sender","profileUrl","style","flexShrink","flex","alignItems","marginBottom","caption1","ellipsizeMode","numberOfLines","isOperator","userId","textOperator","textSenderName","strings","senderName","nickname","caption4","textTime","sentDate","Date","createdAt","_ref2","marginTop"],"sources":["MessageContainer.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendingStatus } from '@sendbird/chat/message';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { getMessageTimeFormat } 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 Avatar from '../Avatar';\nimport LoadingSpinner from '../LoadingSpinner';\nimport type { OpenChannelMessageProps } from './index';\n\ntype Props = {\n pressed?: boolean;\n};\n\nconst MessageContainer = ({\n children,\n channel,\n grouped,\n pressed,\n ...props\n}: OpenChannelMessageProps<SendbirdMessage, Props>) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.openChannelMessage.default;\n\n const renderSendingStatus = () => {\n if (!('sendingStatus' in props.message)) return null;\n\n switch (props.message.sendingStatus) {\n case SendingStatus.PENDING: {\n return (\n <SendingStatusContainer>\n <LoadingSpinner color={colors.primary} size={16} />\n </SendingStatusContainer>\n );\n }\n case SendingStatus.FAILED: {\n return (\n <SendingStatusContainer>\n <Icon icon={'error'} color={colors.error} size={16} />\n </SendingStatusContainer>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n return (\n <Box\n flexDirection={'row'}\n paddingVertical={grouped ? 5 : 6}\n paddingLeft={12}\n paddingRight={12}\n backgroundColor={pressed ? color.pressed.background : color.enabled.background}\n >\n <Box marginRight={12}>\n {!grouped && 'sender' in props.message ? (\n <PressBox onPress={props.onPressAvatar}>\n <Avatar size={styles.avatar.width} uri={props.message.sender.profileUrl} />\n </PressBox>\n ) : (\n <Box style={styles.avatar} />\n )}\n </Box>\n <Box flexShrink={1} flex={1} flexDirection={'column'} alignItems={'flex-start'}>\n {!grouped && 'sender' in props.message && (\n <Box flexDirection={'row'} alignItems={'center'} marginBottom={2}>\n <Box marginRight={4} flexShrink={1}>\n <Text\n caption1\n ellipsizeMode={'middle'}\n numberOfLines={1}\n color={\n channel.isOperator(props.message.sender.userId)\n ? color.enabled.textOperator\n : color.enabled.textSenderName\n }\n >\n {props.strings?.senderName ?? props.message.sender.nickname}\n </Text>\n </Box>\n <Box>\n <Text caption4 color={color.enabled.textTime}>\n {props.strings?.sentDate ?? getMessageTimeFormat(new Date(props.message.createdAt))}\n </Text>\n </Box>\n </Box>\n )}\n <Box style={styles.message}>{children}</Box>\n\n {renderSendingStatus()}\n </Box>\n </Box>\n );\n};\n\nconst SendingStatusContainer = ({ children }: { children: React.ReactNode }) => {\n return (\n <Box flexDirection={'row'}>\n <Box marginTop={2}>{children}</Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n avatar: {\n width: 28,\n },\n message: {\n width: '100%',\n },\n});\n\nexport default MessageContainer;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","conditionChaining","truncatedCount","Box","Icon","Image","Text","createStyleSheet","useUIKitTheme","OpenChannelPreview","_ref","customCover","coverUrl","participantsCount","title","frozen","colors","color","ui","openChannelPreview","default","none","createElement","backgroundColor","background","width","height","flexDirection","alignItems","paddingHorizontal","styles","channelCover","borderRadius","overflow","marginRight","Boolean","resizeMode","style","coverBackground","source","uri","flex","justifyContent","flexShrink","marginBottom","subtitle1","channelInfoTitle","numberOfLines","textTitle","size","icon","frozenIcon","containerStyle","marginLeft","participantsIcon","caption2","textParticipants","Separator","separator","_ref2","position","left","right","bottom"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { conditionChaining, truncatedCount } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Icon from '../../components/Icon';\nimport Image from '../../components/Image';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = {\n customCover?: React.ReactElement;\n coverUrl: string;\n title: string;\n participantsCount?: number;\n frozen?: boolean;\n};\nconst OpenChannelPreview = ({ customCover, coverUrl, participantsCount = 0, title, frozen }: Props) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.openChannelPreview.default.none;\n\n return (\n <Box\n backgroundColor={color.background}\n width={'100%'}\n height={62}\n flexDirection={'row'}\n alignItems={'center'}\n paddingHorizontal={16}\n >\n <Box\n width={styles.channelCover.width}\n height={styles.channelCover.height}\n borderRadius={styles.channelCover.width}\n overflow={'hidden'}\n marginRight={16}\n >\n {conditionChaining(\n [Boolean(customCover)],\n [\n customCover,\n <Image\n resizeMode={'cover'}\n style={[styles.channelCover, { backgroundColor: color.coverBackground }]}\n source={{ uri: coverUrl }}\n />,\n ],\n )}\n </Box>\n <Box flex={1} height={'100%'} justifyContent={'center'}>\n <Box flexDirection={'row'} flexShrink={1} marginBottom={4} alignItems={'center'}>\n <Text subtitle1 style={styles.channelInfoTitle} numberOfLines={1} color={color.textTitle}>\n {title}\n </Text>\n {frozen && <Icon size={16} icon={'freeze'} color={color.frozenIcon} containerStyle={styles.marginLeft} />}\n </Box>\n <Box flexDirection={'row'} flexShrink={1} alignItems={'center'} justifyContent={'flex-start'}>\n <Box flexDirection={'row'} alignItems={'center'}>\n <Icon size={16} icon={'members'} color={color.participantsIcon} containerStyle={styles.marginRight} />\n <Text caption2 color={color.textParticipants}>\n {truncatedCount(participantsCount, 999)}\n </Text>\n </Box>\n </Box>\n <Separator color={color.separator} />\n </Box>\n </Box>\n );\n};\n\nconst Separator = ({ color }: { color: string }) => <Box style={[styles.separator, { backgroundColor: color }]} />;\n\nconst styles = createStyleSheet({\n channelCover: {\n width: 32,\n height: 32,\n },\n channelInfoTitle: {\n flexShrink: 1,\n },\n marginRight: {\n marginRight: 4,\n },\n marginLeft: {\n marginLeft: 4,\n },\n separator: {\n position: 'absolute',\n left: 0,\n right: -16,\n bottom: 0,\n height: 1,\n },\n});\n\nexport default OpenChannelPreview;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","conditionChaining","truncatedCount","Box","Icon","Image","Text","createStyleSheet","useUIKitTheme","OpenChannelPreview","_ref","customCover","coverUrl","participantsCount","title","frozen","colors","color","ui","openChannelPreview","default","none","createElement","backgroundColor","background","width","height","flexDirection","alignItems","paddingHorizontal","styles","channelCover","borderRadius","overflow","marginRight","Boolean","resizeMode","style","coverBackground","source","uri","flex","justifyContent","flexShrink","marginBottom","subtitle1","channelInfoTitle","numberOfLines","textTitle","size","icon","frozenIcon","containerStyle","marginLeft","participantsIcon","caption2","textParticipants","Separator","separator","_ref2","position","left","right","bottom"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { conditionChaining, truncatedCount } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Icon from '../../components/Icon';\nimport Image from '../../components/Image';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = {\n customCover?: React.ReactNode;\n coverUrl: string;\n title: string;\n participantsCount?: number;\n frozen?: boolean;\n};\nconst OpenChannelPreview = ({ customCover, coverUrl, participantsCount = 0, title, frozen }: Props) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.openChannelPreview.default.none;\n\n return (\n <Box\n backgroundColor={color.background}\n width={'100%'}\n height={62}\n flexDirection={'row'}\n alignItems={'center'}\n paddingHorizontal={16}\n >\n <Box\n width={styles.channelCover.width}\n height={styles.channelCover.height}\n borderRadius={styles.channelCover.width}\n overflow={'hidden'}\n marginRight={16}\n >\n {conditionChaining(\n [Boolean(customCover)],\n [\n customCover,\n <Image\n resizeMode={'cover'}\n style={[styles.channelCover, { backgroundColor: color.coverBackground }]}\n source={{ uri: coverUrl }}\n />,\n ],\n )}\n </Box>\n <Box flex={1} height={'100%'} justifyContent={'center'}>\n <Box flexDirection={'row'} flexShrink={1} marginBottom={4} alignItems={'center'}>\n <Text subtitle1 style={styles.channelInfoTitle} numberOfLines={1} color={color.textTitle}>\n {title}\n </Text>\n {frozen && <Icon size={16} icon={'freeze'} color={color.frozenIcon} containerStyle={styles.marginLeft} />}\n </Box>\n <Box flexDirection={'row'} flexShrink={1} alignItems={'center'} justifyContent={'flex-start'}>\n <Box flexDirection={'row'} alignItems={'center'}>\n <Icon size={16} icon={'members'} color={color.participantsIcon} containerStyle={styles.marginRight} />\n <Text caption2 color={color.textParticipants}>\n {truncatedCount(participantsCount, 999)}\n </Text>\n </Box>\n </Box>\n <Separator color={color.separator} />\n </Box>\n </Box>\n );\n};\n\nconst Separator = ({ color }: { color: string }) => <Box style={[styles.separator, { backgroundColor: color }]} />;\n\nconst styles = createStyleSheet({\n channelCover: {\n width: 32,\n height: 32,\n },\n channelInfoTitle: {\n flexShrink: 1,\n },\n marginRight: {\n marginRight: 4,\n },\n marginLeft: {\n marginLeft: 4,\n },\n separator: {\n position: 'absolute',\n left: 0,\n right: -16,\n bottom: 0,\n height: 1,\n },\n});\n\nexport default OpenChannelPreview;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","Divider","Text","createStyleSheet","useUIKitTheme","Avatar","ProfileCard","_ref","uri","username","bodyLabel","body","button","containerStyle","colors","color","ui","profileCard","default","none","createElement","style","styles","container","backgroundColor","background","profileContainer","size","profileAvatar","h1","textUsername","numberOfLines","messageButtonArea","space","profileInfoContainer","body2","textBodyLabel","profileInfoBodyLabel","body3","textBody","paddingTop","width","alignItems","paddingHorizontal","marginBottom","padding","marginHorizontal"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport Divider from '../../components/Divider';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Avatar from '../Avatar';\n\ntype Props = {\n uri: string;\n username: string;\n\n button?: JSX.Element;\n\n bodyLabel: string;\n body: string;\n\n containerStyle?: StyleProp<ViewStyle>;\n};\n\nconst ProfileCard = ({ uri, username, bodyLabel, body, button, containerStyle }: Props) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.profileCard.default.none;\n\n return (\n <View style={[styles.container, { backgroundColor: color.background }, containerStyle]}>\n <View style={styles.profileContainer}>\n <Avatar uri={uri} size={80} containerStyle={styles.profileAvatar} />\n <Text h1 color={color.textUsername} numberOfLines={1}>\n {username}\n </Text>\n </View>\n {button && <View style={styles.messageButtonArea}>{button}</View>}\n <Divider space={16} />\n <View style={styles.profileInfoContainer}>\n <Text body2 color={color.textBodyLabel} style={styles.profileInfoBodyLabel}>\n {bodyLabel}\n </Text>\n <Text body3 numberOfLines={1} color={color.textBody}>\n {body}\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 32,\n width: '100%',\n },\n profileContainer: {\n alignItems: 'center',\n paddingHorizontal: 16,\n marginBottom: 24,\n },\n profileAvatar: {\n marginBottom: 8,\n },\n profileInfoContainer: {\n padding: 16,\n },\n profileInfoBodyLabel: {\n marginBottom: 4,\n },\n messageButtonArea: {\n marginHorizontal: 24,\n marginBottom: 24,\n },\n});\n\nexport default ProfileCard;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAoBC,IAAI,QAAmB,cAAc;AAEzD,OAAOC,OAAO,MAAM,0BAA0B;AAC9C,OAAOC,IAAI,MAAM,uBAAuB;AACxC,OAAOC,gBAAgB,MAAM,+BAA+B;AAC5D,OAAOC,aAAa,MAAM,2BAA2B;AACrD,OAAOC,MAAM,MAAM,WAAW;AAc9B,MAAMC,WAAW,GAAGC,IAAA,IAAuE;EAAA,IAAtE;IAAEC,GAAG;IAAEC,QAAQ;IAAEC,SAAS;IAAEC,IAAI;IAAEC,MAAM;IAAEC;EAAsB,CAAC,GAAAN,IAAA;EACpF,MAAM;IAAEO;EAAO,CAAC,GAAGV,aAAa,EAAE;EAClC,MAAMW,KAAK,GAAGD,MAAM,CAACE,EAAE,CAACC,WAAW,CAACC,OAAO,CAACC,IAAI;EAEhD,oBACEpB,KAAA,CAAAqB,aAAA,CAACpB,IAAI;IAACqB,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE;MAAEC,eAAe,EAAET,KAAK,CAACU;IAAW,CAAC,EAAEZ,cAAc;EAAE,gBACrFd,KAAA,CAAAqB,aAAA,CAACpB,IAAI;IAACqB,KAAK,EAAEC,MAAM,CAACI;EAAiB,gBACnC3B,KAAA,CAAAqB,aAAA,CAACf,MAAM;IAACG,GAAG,EAAEA,GAAI;IAACmB,IAAI,EAAE,EAAG;IAACd,cAAc,EAAES,MAAM,CAACM;EAAc,EAAG,eACpE7B,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAAC2B,EAAE;IAACd,KAAK,EAAEA,KAAK,CAACe,YAAa;IAACC,aAAa,EAAE;EAAE,GAClDtB,QAAQ,CACJ,CACF,EACNG,MAAM,iBAAIb,KAAA,CAAAqB,aAAA,CAACpB,IAAI;IAACqB,KAAK,EAAEC,MAAM,CAACU;EAAkB,GAAEpB,MAAM,CAAQ,eACjEb,KAAA,CAAAqB,aAAA,CAACnB,OAAO;IAACgC,KAAK,EAAE;EAAG,EAAG,eACtBlC,KAAA,CAAAqB,aAAA,CAACpB,IAAI;IAACqB,KAAK,EAAEC,MAAM,CAACY;EAAqB,gBACvCnC,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAACiC,KAAK;IAACpB,KAAK,EAAEA,KAAK,CAACqB,aAAc;IAACf,KAAK,EAAEC,MAAM,CAACe;EAAqB,GACxE3B,SAAS,CACL,eACPX,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAACoC,KAAK;IAACP,aAAa,EAAE,CAAE;IAAChB,KAAK,EAAEA,KAAK,CAACwB;EAAS,GACjD5B,IAAI,CACA,CACF,CACF;AAEX,CAAC;AAED,MAAMW,MAAM,GAAGnB,gBAAgB,CAAC;EAC9BoB,SAAS,EAAE;IACTiB,UAAU,EAAE,EAAE;IACdC,KAAK,EAAE;EACT,CAAC;EACDf,gBAAgB,EAAE;IAChBgB,UAAU,EAAE,QAAQ;IACpBC,iBAAiB,EAAE,EAAE;IACrBC,YAAY,EAAE;EAChB,CAAC;EACDhB,aAAa,EAAE;IACbgB,YAAY,EAAE;EAChB,CAAC;EACDV,oBAAoB,EAAE;IACpBW,OAAO,EAAE;EACX,CAAC;EACDR,oBAAoB,EAAE;IACpBO,YAAY,EAAE;EAChB,CAAC;EACDZ,iBAAiB,EAAE;IACjBc,gBAAgB,EAAE,EAAE;IACpBF,YAAY,EAAE;EAChB;AACF,CAAC,CAAC;AAEF,eAAetC,WAAW"}
1
+ {"version":3,"names":["React","View","Divider","Text","createStyleSheet","useUIKitTheme","Avatar","ProfileCard","_ref","uri","username","bodyLabel","body","button","containerStyle","colors","color","ui","profileCard","default","none","createElement","style","styles","container","backgroundColor","background","profileContainer","size","profileAvatar","h1","textUsername","numberOfLines","messageButtonArea","space","profileInfoContainer","body2","textBodyLabel","profileInfoBodyLabel","body3","textBody","paddingTop","width","alignItems","paddingHorizontal","marginBottom","padding","marginHorizontal"],"sources":["index.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport Divider from '../../components/Divider';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Avatar from '../Avatar';\n\ntype Props = {\n uri: string;\n username: string;\n\n button?: ReactNode;\n\n bodyLabel: string;\n body: string;\n\n containerStyle?: StyleProp<ViewStyle>;\n};\n\nconst ProfileCard = ({ uri, username, bodyLabel, body, button, containerStyle }: Props) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.profileCard.default.none;\n\n return (\n <View style={[styles.container, { backgroundColor: color.background }, containerStyle]}>\n <View style={styles.profileContainer}>\n <Avatar uri={uri} size={80} containerStyle={styles.profileAvatar} />\n <Text h1 color={color.textUsername} numberOfLines={1}>\n {username}\n </Text>\n </View>\n {button && <View style={styles.messageButtonArea}>{button}</View>}\n <Divider space={16} />\n <View style={styles.profileInfoContainer}>\n <Text body2 color={color.textBodyLabel} style={styles.profileInfoBodyLabel}>\n {bodyLabel}\n </Text>\n <Text body3 numberOfLines={1} color={color.textBody}>\n {body}\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 32,\n width: '100%',\n },\n profileContainer: {\n alignItems: 'center',\n paddingHorizontal: 16,\n marginBottom: 24,\n },\n profileAvatar: {\n marginBottom: 8,\n },\n profileInfoContainer: {\n padding: 16,\n },\n profileInfoBodyLabel: {\n marginBottom: 4,\n },\n messageButtonArea: {\n marginHorizontal: 24,\n marginBottom: 24,\n },\n});\n\nexport default ProfileCard;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAqB,OAAO;AACxC,SAAoBC,IAAI,QAAmB,cAAc;AAEzD,OAAOC,OAAO,MAAM,0BAA0B;AAC9C,OAAOC,IAAI,MAAM,uBAAuB;AACxC,OAAOC,gBAAgB,MAAM,+BAA+B;AAC5D,OAAOC,aAAa,MAAM,2BAA2B;AACrD,OAAOC,MAAM,MAAM,WAAW;AAc9B,MAAMC,WAAW,GAAGC,IAAA,IAAuE;EAAA,IAAtE;IAAEC,GAAG;IAAEC,QAAQ;IAAEC,SAAS;IAAEC,IAAI;IAAEC,MAAM;IAAEC;EAAsB,CAAC,GAAAN,IAAA;EACpF,MAAM;IAAEO;EAAO,CAAC,GAAGV,aAAa,EAAE;EAClC,MAAMW,KAAK,GAAGD,MAAM,CAACE,EAAE,CAACC,WAAW,CAACC,OAAO,CAACC,IAAI;EAEhD,oBACEpB,KAAA,CAAAqB,aAAA,CAACpB,IAAI;IAACqB,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE;MAAEC,eAAe,EAAET,KAAK,CAACU;IAAW,CAAC,EAAEZ,cAAc;EAAE,gBACrFd,KAAA,CAAAqB,aAAA,CAACpB,IAAI;IAACqB,KAAK,EAAEC,MAAM,CAACI;EAAiB,gBACnC3B,KAAA,CAAAqB,aAAA,CAACf,MAAM;IAACG,GAAG,EAAEA,GAAI;IAACmB,IAAI,EAAE,EAAG;IAACd,cAAc,EAAES,MAAM,CAACM;EAAc,EAAG,eACpE7B,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAAC2B,EAAE;IAACd,KAAK,EAAEA,KAAK,CAACe,YAAa;IAACC,aAAa,EAAE;EAAE,GAClDtB,QAAQ,CACJ,CACF,EACNG,MAAM,iBAAIb,KAAA,CAAAqB,aAAA,CAACpB,IAAI;IAACqB,KAAK,EAAEC,MAAM,CAACU;EAAkB,GAAEpB,MAAM,CAAQ,eACjEb,KAAA,CAAAqB,aAAA,CAACnB,OAAO;IAACgC,KAAK,EAAE;EAAG,EAAG,eACtBlC,KAAA,CAAAqB,aAAA,CAACpB,IAAI;IAACqB,KAAK,EAAEC,MAAM,CAACY;EAAqB,gBACvCnC,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAACiC,KAAK;IAACpB,KAAK,EAAEA,KAAK,CAACqB,aAAc;IAACf,KAAK,EAAEC,MAAM,CAACe;EAAqB,GACxE3B,SAAS,CACL,eACPX,KAAA,CAAAqB,aAAA,CAAClB,IAAI;IAACoC,KAAK;IAACP,aAAa,EAAE,CAAE;IAAChB,KAAK,EAAEA,KAAK,CAACwB;EAAS,GACjD5B,IAAI,CACA,CACF,CACF;AAEX,CAAC;AAED,MAAMW,MAAM,GAAGnB,gBAAgB,CAAC;EAC9BoB,SAAS,EAAE;IACTiB,UAAU,EAAE,EAAE;IACdC,KAAK,EAAE;EACT,CAAC;EACDf,gBAAgB,EAAE;IAChBgB,UAAU,EAAE,QAAQ;IACpBC,iBAAiB,EAAE,EAAE;IACrBC,YAAY,EAAE;EAChB,CAAC;EACDhB,aAAa,EAAE;IACbgB,YAAY,EAAE;EAChB,CAAC;EACDV,oBAAoB,EAAE;IACpBW,OAAO,EAAE;EACX,CAAC;EACDR,oBAAoB,EAAE;IACpBO,YAAY,EAAE;EAChB,CAAC;EACDZ,iBAAiB,EAAE;IACjBc,gBAAgB,EAAE,EAAE;IACpBF,YAAY,EAAE;EAChB;AACF,CAAC,CAAC;AAEF,eAAetC,WAAW"}
@@ -0,0 +1,108 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+ import { Animated, Easing } from 'react-native';
3
+ import Box from '../../components/Box';
4
+ import createStyleSheet from '../../styles/createStyleSheet';
5
+ import useUIKitTheme from '../../theme/useUIKitTheme';
6
+ import Avatar from '../Avatar';
7
+ const TypingIndicatorBubble = _ref => {
8
+ let {
9
+ typingUsers,
10
+ containerStyle,
11
+ maxAvatar
12
+ } = _ref;
13
+ const {
14
+ select,
15
+ palette,
16
+ colors
17
+ } = useUIKitTheme();
18
+ if (typingUsers.length === 0) return null;
19
+ return /*#__PURE__*/React.createElement(Box, {
20
+ flexDirection: 'row',
21
+ justifyContent: 'flex-start',
22
+ alignItems: 'center',
23
+ style: containerStyle
24
+ }, /*#__PURE__*/React.createElement(Avatar.Stack, {
25
+ size: 26,
26
+ maxAvatar: maxAvatar,
27
+ styles: {
28
+ remainsTextColor: colors.onBackground02,
29
+ remainsBackgroundColor: select({
30
+ light: palette.background100,
31
+ dark: palette.background400
32
+ })
33
+ },
34
+ containerStyle: {
35
+ marginRight: 12
36
+ }
37
+ }, typingUsers.map((user, index) => /*#__PURE__*/React.createElement(Avatar, {
38
+ key: index,
39
+ uri: user.profileUrl
40
+ }))), /*#__PURE__*/React.createElement(TypingDots, {
41
+ dotColor: select({
42
+ light: palette.background100,
43
+ dark: palette.background400
44
+ }),
45
+ backgroundColor: colors.onBackground02
46
+ }));
47
+ };
48
+ const TypingDots = _ref2 => {
49
+ let {
50
+ dotColor,
51
+ backgroundColor
52
+ } = _ref2;
53
+ const animation = useRef(new Animated.Value(0)).current;
54
+ const dots = matrix.map(_ref3 => {
55
+ let [timeline, scale, opacity] = _ref3;
56
+ return [animation.interpolate({
57
+ inputRange: timeline,
58
+ outputRange: scale,
59
+ extrapolate: 'clamp'
60
+ }), animation.interpolate({
61
+ inputRange: timeline,
62
+ outputRange: opacity,
63
+ extrapolate: 'clamp'
64
+ })];
65
+ });
66
+ useEffect(() => {
67
+ const animated = Animated.loop(Animated.timing(animation, {
68
+ toValue: 1.4,
69
+ duration: 1400,
70
+ easing: Easing.linear,
71
+ useNativeDriver: true
72
+ }));
73
+ animated.start();
74
+ return () => animated.reset();
75
+ }, []);
76
+ return /*#__PURE__*/React.createElement(Box, {
77
+ flexDirection: 'row',
78
+ alignItems: 'center',
79
+ justifyContent: 'center',
80
+ borderRadius: 16,
81
+ paddingHorizontal: 12,
82
+ height: 34,
83
+ backgroundColor: dotColor
84
+ }, dots.map((_ref4, index) => {
85
+ let [scale, opacity] = _ref4;
86
+ return /*#__PURE__*/React.createElement(Animated.View, {
87
+ key: index,
88
+ style: [styles.dot, {
89
+ marginRight: index === dots.length - 1 ? 0 : 6,
90
+ opacity: opacity,
91
+ transform: [{
92
+ scale: scale
93
+ }],
94
+ backgroundColor: backgroundColor
95
+ }]
96
+ });
97
+ }));
98
+ };
99
+ const matrix = [[[0.4, 0.7, 1.0], [1.0, 1.2, 1.0], [0.12, 0.38, 0.12]], [[0.6, 0.9, 1.2], [1.0, 1.2, 1.0], [0.12, 0.38, 0.12]], [[0.8, 1.1, 1.4], [1.0, 1.2, 1.0], [0.12, 0.38, 0.12]]];
100
+ const styles = createStyleSheet({
101
+ dot: {
102
+ width: 8,
103
+ height: 8,
104
+ borderRadius: 4
105
+ }
106
+ });
107
+ export default TypingIndicatorBubble;
108
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","Animated","Easing","Box","createStyleSheet","useUIKitTheme","Avatar","TypingIndicatorBubble","_ref","typingUsers","containerStyle","maxAvatar","select","palette","colors","length","createElement","flexDirection","justifyContent","alignItems","style","Stack","size","styles","remainsTextColor","onBackground02","remainsBackgroundColor","light","background100","dark","background400","marginRight","map","user","index","key","uri","profileUrl","TypingDots","dotColor","backgroundColor","_ref2","animation","Value","current","dots","matrix","_ref3","timeline","scale","opacity","interpolate","inputRange","outputRange","extrapolate","animated","loop","timing","toValue","duration","easing","linear","useNativeDriver","start","reset","borderRadius","paddingHorizontal","height","_ref4","View","dot","transform","width"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated, Easing, StyleProp, ViewStyle } from 'react-native';\n\nimport type { SendbirdUser } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Avatar from '../Avatar';\n\ntype Props = {\n typingUsers: SendbirdUser[];\n containerStyle?: StyleProp<ViewStyle>;\n maxAvatar?: number;\n};\n\nconst TypingIndicatorBubble = ({ typingUsers, containerStyle, maxAvatar }: Props) => {\n const { select, palette, colors } = useUIKitTheme();\n\n if (typingUsers.length === 0) return null;\n\n return (\n <Box flexDirection={'row'} justifyContent={'flex-start'} alignItems={'center'} style={containerStyle}>\n <Avatar.Stack\n size={26}\n maxAvatar={maxAvatar}\n styles={{\n remainsTextColor: colors.onBackground02,\n remainsBackgroundColor: select({ light: palette.background100, dark: palette.background400 }),\n }}\n containerStyle={{ marginRight: 12 }}\n >\n {typingUsers.map((user, index) => (\n <Avatar key={index} uri={user.profileUrl} />\n ))}\n </Avatar.Stack>\n <TypingDots\n dotColor={select({ light: palette.background100, dark: palette.background400 })}\n backgroundColor={colors.onBackground02}\n />\n </Box>\n );\n};\n\ntype TypingDotsProps = {\n dotColor: string;\n backgroundColor: string;\n};\nconst TypingDots = ({ dotColor, backgroundColor }: TypingDotsProps) => {\n const animation = useRef(new Animated.Value(0)).current;\n const dots = matrix.map(([timeline, scale, opacity]) => [\n animation.interpolate({ inputRange: timeline, outputRange: scale, extrapolate: 'clamp' }),\n animation.interpolate({ inputRange: timeline, outputRange: opacity, extrapolate: 'clamp' }),\n ]);\n\n useEffect(() => {\n const animated = Animated.loop(\n Animated.timing(animation, { toValue: 1.4, duration: 1400, easing: Easing.linear, useNativeDriver: true }),\n );\n animated.start();\n return () => animated.reset();\n }, []);\n\n return (\n <Box\n flexDirection={'row'}\n alignItems={'center'}\n justifyContent={'center'}\n borderRadius={16}\n paddingHorizontal={12}\n height={34}\n backgroundColor={dotColor}\n >\n {dots.map(([scale, opacity], index) => {\n return (\n <Animated.View\n key={index}\n style={[\n styles.dot,\n {\n marginRight: index === dots.length - 1 ? 0 : 6,\n opacity: opacity,\n transform: [{ scale: scale }],\n backgroundColor: backgroundColor,\n },\n ]}\n />\n );\n })}\n </Box>\n );\n};\n\nconst matrix = [\n [\n [0.4, 0.7, 1.0],\n [1.0, 1.2, 1.0],\n [0.12, 0.38, 0.12],\n ],\n [\n [0.6, 0.9, 1.2],\n [1.0, 1.2, 1.0],\n [0.12, 0.38, 0.12],\n ],\n [\n [0.8, 1.1, 1.4],\n [1.0, 1.2, 1.0],\n [0.12, 0.38, 0.12],\n ],\n];\n\nconst styles = createStyleSheet({\n dot: {\n width: 8,\n height: 8,\n borderRadius: 4,\n },\n});\n\nexport default TypingIndicatorBubble;\n"],"mappings":"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"}
@@ -4,6 +4,10 @@ declare const IconAssets: {
4
4
  add: any;
5
5
  archive: any;
6
6
  'arrow-left': any;
7
+ 'audio-off-filled': any;
8
+ 'audio-off': any;
9
+ 'audio-on-filled': any;
10
+ 'audio-on': any;
7
11
  ban: any;
8
12
  broadcast: any;
9
13
  camera: any;
@@ -40,12 +44,14 @@ declare const IconAssets: {
40
44
  'notifications-off-filled': any;
41
45
  notifications: any;
42
46
  operator: any;
47
+ pause: any;
43
48
  photo: any;
44
49
  play: any;
45
50
  plus: any;
46
51
  question: any;
47
52
  'radio-off': any;
48
53
  'radio-on': any;
54
+ recording: any;
49
55
  refresh: any;
50
56
  remove: any;
51
57
  'reply-filled': any;
@@ -54,6 +60,7 @@ declare const IconAssets: {
54
60
  send: any;
55
61
  'settings-filled': any;
56
62
  spinner: any;
63
+ stop: any;
57
64
  streaming: any;
58
65
  supergroup: any;
59
66
  theme: any;