@sendbird/uikit-react-native 3.5.4 → 3.7.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 (251) hide show
  1. package/README.md +11 -27
  2. package/lib/commonjs/components/ChannelInput/SendInput.js +23 -6
  3. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  4. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  5. package/lib/commonjs/components/ChannelMessageList/index.js +22 -4
  6. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  7. package/lib/commonjs/components/ChannelThreadMessageList/index.js +349 -0
  8. package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -0
  9. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  10. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  11. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +100 -0
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +24 -6
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  15. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +23 -6
  16. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  17. package/lib/commonjs/components/ThreadChatFlatList/index.js +76 -0
  18. package/lib/commonjs/components/ThreadChatFlatList/index.js.map +1 -0
  19. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +41 -0
  20. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  21. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +74 -0
  22. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  23. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +42 -0
  24. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  25. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +94 -0
  26. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  27. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +61 -0
  28. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  29. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +127 -0
  30. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  31. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +206 -0
  32. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -0
  33. package/lib/commonjs/containers/SendbirdUIKitContainer.js +12 -11
  34. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js +7 -0
  36. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -5
  38. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +14 -4
  40. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  42. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js +82 -0
  43. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  44. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js +44 -0
  45. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  46. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +127 -0
  47. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  48. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +315 -0
  49. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  50. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +27 -0
  51. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  52. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +27 -0
  53. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  54. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +195 -0
  55. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  56. package/lib/commonjs/domain/groupChannelThread/index.js +69 -0
  57. package/lib/commonjs/domain/groupChannelThread/index.js.map +1 -0
  58. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js +42 -0
  59. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  60. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js +148 -0
  61. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  62. package/lib/commonjs/domain/groupChannelThread/types.js +6 -0
  63. package/lib/commonjs/domain/groupChannelThread/types.js.map +1 -0
  64. package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -5
  65. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  66. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +267 -0
  67. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -0
  68. package/lib/commonjs/hooks/useMentionSuggestion.js +5 -2
  69. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
  70. package/lib/commonjs/index.js +72 -40
  71. package/lib/commonjs/index.js.map +1 -1
  72. package/lib/commonjs/libs/EmojiManager.js.map +1 -1
  73. package/lib/commonjs/libs/InternalLocalCacheStorage.js +65 -19
  74. package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -1
  75. package/lib/commonjs/libs/VoiceMessageStatusManager.js +66 -0
  76. package/lib/commonjs/libs/VoiceMessageStatusManager.js.map +1 -0
  77. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  78. package/lib/commonjs/localization/createBaseStringSet.js +25 -3
  79. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  80. package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
  81. package/lib/commonjs/types.js.map +1 -1
  82. package/lib/commonjs/version.js +1 -1
  83. package/lib/commonjs/version.js.map +1 -1
  84. package/lib/module/components/ChannelInput/SendInput.js +23 -6
  85. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  86. package/lib/module/components/ChannelInput/index.js.map +1 -1
  87. package/lib/module/components/ChannelMessageList/index.js +22 -4
  88. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  89. package/lib/module/components/ChannelThreadMessageList/index.js +341 -0
  90. package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -0
  91. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  92. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  93. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +92 -0
  94. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  95. package/lib/module/components/GroupChannelMessageRenderer/index.js +24 -6
  96. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  97. package/lib/module/components/ReactionAddons/MessageReactionAddon.js +23 -6
  98. package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  99. package/lib/module/components/ThreadChatFlatList/index.js +66 -0
  100. package/lib/module/components/ThreadChatFlatList/index.js.map +1 -0
  101. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +34 -0
  102. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  103. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +67 -0
  104. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  105. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +34 -0
  106. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  107. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +87 -0
  108. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  109. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +54 -0
  110. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  111. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +119 -0
  112. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  113. package/lib/module/components/ThreadParentMessageRenderer/index.js +196 -0
  114. package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -0
  115. package/lib/module/containers/SendbirdUIKitContainer.js +13 -12
  116. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  117. package/lib/module/contexts/SendbirdChatCtx.js +6 -0
  118. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  119. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +30 -6
  120. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  121. package/lib/module/domain/groupChannel/module/moduleContext.js +14 -4
  122. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  123. package/lib/module/domain/groupChannel/types.js.map +1 -1
  124. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js +73 -0
  125. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  126. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js +34 -0
  127. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  128. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +117 -0
  129. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  130. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +305 -0
  131. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  132. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +19 -0
  133. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  134. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +19 -0
  135. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  136. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +185 -0
  137. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  138. package/lib/module/domain/groupChannelThread/index.js +9 -0
  139. package/lib/module/domain/groupChannelThread/index.js.map +1 -0
  140. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js +34 -0
  141. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  142. package/lib/module/domain/groupChannelThread/module/moduleContext.js +137 -0
  143. package/lib/module/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  144. package/lib/module/domain/groupChannelThread/types.js +2 -0
  145. package/lib/module/domain/groupChannelThread/types.js.map +1 -0
  146. package/lib/module/fragments/createGroupChannelFragment.js +33 -7
  147. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  148. package/lib/module/fragments/createGroupChannelThreadFragment.js +257 -0
  149. package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -0
  150. package/lib/module/hooks/useMentionSuggestion.js +5 -2
  151. package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
  152. package/lib/module/index.js +3 -0
  153. package/lib/module/index.js.map +1 -1
  154. package/lib/module/libs/EmojiManager.js.map +1 -1
  155. package/lib/module/libs/InternalLocalCacheStorage.js +65 -19
  156. package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -1
  157. package/lib/module/libs/VoiceMessageStatusManager.js +59 -0
  158. package/lib/module/libs/VoiceMessageStatusManager.js.map +1 -0
  159. package/lib/module/localization/StringSet.type.js.map +1 -1
  160. package/lib/module/localization/createBaseStringSet.js +27 -4
  161. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  162. package/lib/module/platform/createMediaService.native.js.map +1 -1
  163. package/lib/module/types.js.map +1 -1
  164. package/lib/module/version.js +1 -1
  165. package/lib/module/version.js.map +1 -1
  166. package/lib/typescript/src/components/ChannelInput/index.d.ts +1 -0
  167. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +5 -2
  168. package/lib/typescript/src/components/ChannelThreadMessageList/index.d.ts +55 -0
  169. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +1 -1
  170. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.d.ts +9 -0
  171. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -1
  172. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +3 -1
  173. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +3 -1
  174. package/lib/typescript/src/components/ReactionAddons/index.d.ts +2 -1
  175. package/lib/typescript/src/components/ThreadChatFlatList/index.d.ts +9 -0
  176. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.d.ts +4 -0
  177. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.d.ts +4 -0
  178. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.d.ts +9 -0
  179. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.d.ts +13 -0
  180. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.d.ts +10 -0
  181. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.d.ts +10 -0
  182. package/lib/typescript/src/components/ThreadParentMessageRenderer/index.d.ts +20 -0
  183. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +8 -10
  184. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +15 -1
  185. package/lib/typescript/src/domain/groupChannel/types.d.ts +4 -1
  186. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadHeader.d.ts +4 -0
  187. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadInput.d.ts +3 -0
  188. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.d.ts +7 -0
  189. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.d.ts +8 -0
  190. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.d.ts +3 -0
  191. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.d.ts +3 -0
  192. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.d.ts +4 -0
  193. package/lib/typescript/src/domain/groupChannelThread/index.d.ts +8 -0
  194. package/lib/typescript/src/domain/groupChannelThread/module/createGroupChannelThreadModule.d.ts +3 -0
  195. package/lib/typescript/src/domain/groupChannelThread/module/moduleContext.d.ts +3 -0
  196. package/lib/typescript/src/domain/groupChannelThread/types.d.ts +136 -0
  197. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  198. package/lib/typescript/src/fragments/createGroupChannelThreadFragment.d.ts +5 -0
  199. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  200. package/lib/typescript/src/index.d.ts +3 -0
  201. package/lib/typescript/src/libs/InternalLocalCacheStorage.d.ts +5 -4
  202. package/lib/typescript/src/libs/VoiceMessageStatusManager.d.ts +11 -0
  203. package/lib/typescript/src/localization/StringSet.type.d.ts +23 -0
  204. package/lib/typescript/src/localization/createBaseStringSet.d.ts +1 -1
  205. package/lib/typescript/src/types.d.ts +4 -1
  206. package/lib/typescript/src/version.d.ts +1 -1
  207. package/package.json +27 -22
  208. package/src/components/ChannelInput/SendInput.tsx +24 -5
  209. package/src/components/ChannelInput/index.tsx +1 -0
  210. package/src/components/ChannelMessageList/index.tsx +27 -5
  211. package/src/components/ChannelThreadMessageList/index.tsx +406 -0
  212. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +3 -3
  213. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.tsx +96 -0
  214. package/src/components/GroupChannelMessageRenderer/index.tsx +21 -5
  215. package/src/components/ReactionAddons/MessageReactionAddon.tsx +38 -5
  216. package/src/components/ThreadChatFlatList/index.tsx +63 -0
  217. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.tsx +36 -0
  218. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.tsx +61 -0
  219. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.tsx +45 -0
  220. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.tsx +107 -0
  221. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.tsx +133 -0
  222. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.tsx +65 -0
  223. package/src/components/ThreadParentMessageRenderer/index.tsx +194 -0
  224. package/src/containers/SendbirdUIKitContainer.tsx +28 -17
  225. package/src/contexts/SendbirdChatCtx.tsx +20 -0
  226. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +37 -8
  227. package/src/domain/groupChannel/module/moduleContext.tsx +12 -2
  228. package/src/domain/groupChannel/types.ts +5 -0
  229. package/src/domain/groupChannelThread/component/GroupChannelThreadHeader.tsx +63 -0
  230. package/src/domain/groupChannelThread/component/GroupChannelThreadInput.tsx +38 -0
  231. package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +105 -0
  232. package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +326 -0
  233. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.tsx +18 -0
  234. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.tsx +18 -0
  235. package/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.tsx +174 -0
  236. package/src/domain/groupChannelThread/index.ts +8 -0
  237. package/src/domain/groupChannelThread/module/createGroupChannelThreadModule.tsx +35 -0
  238. package/src/domain/groupChannelThread/module/moduleContext.tsx +165 -0
  239. package/src/domain/groupChannelThread/types.ts +184 -0
  240. package/src/fragments/createGroupChannelFragment.tsx +38 -8
  241. package/src/fragments/createGroupChannelThreadFragment.tsx +280 -0
  242. package/src/hooks/useMentionSuggestion.ts +13 -9
  243. package/src/index.ts +4 -0
  244. package/src/libs/EmojiManager.ts +2 -2
  245. package/src/libs/InternalLocalCacheStorage.ts +70 -21
  246. package/src/libs/VoiceMessageStatusManager.ts +56 -0
  247. package/src/localization/StringSet.type.ts +27 -0
  248. package/src/localization/createBaseStringSet.ts +33 -4
  249. package/src/platform/createMediaService.native.tsx +9 -1
  250. package/src/types.ts +6 -1
  251. package/src/version.ts +1 -1
@@ -0,0 +1,67 @@
1
+ import React from 'react';
2
+ import { Box, Icon, PressBox, Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';
3
+ import { useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
+ import { getFileExtension, getFileType, truncate } from '@sendbird/uikit-utils';
5
+ import { useLocalization } from './../../hooks/useContext';
6
+ const ThreadParentMessageFile = props => {
7
+ const fileMessage = props.parentMessage;
8
+ if (!fileMessage) return null;
9
+ const {
10
+ STRINGS
11
+ } = useLocalization();
12
+ const {
13
+ select,
14
+ colors,
15
+ palette
16
+ } = useUIKitTheme();
17
+ const fileType = getFileType(fileMessage.type || getFileExtension(fileMessage.name));
18
+ const fileName = STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(fileMessage) ?? fileMessage.name;
19
+ return /*#__PURE__*/React.createElement(Box, {
20
+ style: styles.fileBubbleContainer,
21
+ backgroundColor: select({
22
+ light: palette.background100,
23
+ dark: palette.background400
24
+ })
25
+ }, /*#__PURE__*/React.createElement(PressBox, {
26
+ onPress: props.onPress,
27
+ onLongPress: props.onLongPress
28
+ }, /*#__PURE__*/React.createElement(Box, {
29
+ style: styles.iconBackground
30
+ }, /*#__PURE__*/React.createElement(Icon.File, {
31
+ fileType: fileType,
32
+ size: 24,
33
+ containerStyle: {
34
+ backgroundColor: palette.background50,
35
+ borderRadius: 8
36
+ }
37
+ }), /*#__PURE__*/React.createElement(Text, {
38
+ body3: true,
39
+ numberOfLines: 1,
40
+ color: colors.onBackground01,
41
+ style: styles.name
42
+ }, truncate(fileName, {
43
+ mode: 'mid',
44
+ maxLen: 30
45
+ })))));
46
+ };
47
+ const styles = createStyleSheet({
48
+ fileBubbleContainer: {
49
+ alignSelf: 'flex-start',
50
+ overflow: 'hidden',
51
+ flexDirection: 'row',
52
+ alignItems: 'center',
53
+ borderRadius: 16,
54
+ paddingHorizontal: 12,
55
+ paddingVertical: 8
56
+ },
57
+ iconBackground: {
58
+ flexDirection: 'row',
59
+ alignItems: 'center'
60
+ },
61
+ name: {
62
+ flexShrink: 1,
63
+ marginLeft: 8
64
+ }
65
+ });
66
+ export default ThreadParentMessageFile;
67
+ //# sourceMappingURL=ThreadParentMessage.file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Box","Icon","PressBox","Text","createStyleSheet","useUIKitTheme","getFileExtension","getFileType","truncate","useLocalization","ThreadParentMessageFile","props","fileMessage","parentMessage","STRINGS","select","colors","palette","fileType","type","name","fileName","GROUP_CHANNEL","MESSAGE_BUBBLE_FILE_TITLE","createElement","style","styles","fileBubbleContainer","backgroundColor","light","background100","dark","background400","onPress","onLongPress","iconBackground","File","size","containerStyle","background50","borderRadius","body3","numberOfLines","color","onBackground01","mode","maxLen","alignSelf","overflow","flexDirection","alignItems","paddingHorizontal","paddingVertical","flexShrink","marginLeft"],"sources":["ThreadParentMessage.file.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Box, Icon, PressBox, Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdFileMessage, getFileExtension, getFileType, truncate } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from './../../hooks/useContext';\nimport { ThreadParentMessageRendererProps } from './index';\n\nconst ThreadParentMessageFile = (props: ThreadParentMessageRendererProps) => {\n const fileMessage: SendbirdFileMessage = props.parentMessage as SendbirdFileMessage;\n if (!fileMessage) return null;\n\n const { STRINGS } = useLocalization();\n const { select, colors, palette } = useUIKitTheme();\n\n const fileType = getFileType(fileMessage.type || getFileExtension(fileMessage.name));\n const fileName = STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(fileMessage) ?? fileMessage.name;\n\n return (\n <Box\n style={styles.fileBubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <PressBox onPress={props.onPress} onLongPress={props.onLongPress}>\n <Box style={styles.iconBackground}>\n <Icon.File\n fileType={fileType}\n size={24}\n containerStyle={{ backgroundColor: palette.background50, borderRadius: 8 }}\n />\n <Text body3 numberOfLines={1} color={colors.onBackground01} style={styles.name}>\n {truncate(fileName, { mode: 'mid', maxLen: 30 })}\n </Text>\n </Box>\n </PressBox>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n fileBubbleContainer: {\n alignSelf: 'flex-start',\n overflow: 'hidden',\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 16,\n paddingHorizontal: 12,\n paddingVertical: 8,\n },\n iconBackground: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n name: {\n flexShrink: 1,\n marginLeft: 8,\n },\n});\n\nexport default ThreadParentMessageFile;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,GAAG,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,gBAAgB,QAAQ,yCAAyC;AACrG,SAASC,aAAa,QAAQ,yCAAyC;AACvE,SAA8BC,gBAAgB,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,uBAAuB;AAEpG,SAASC,eAAe,QAAQ,0BAA0B;AAG1D,MAAMC,uBAAuB,GAAIC,KAAuC,IAAK;EAC3E,MAAMC,WAAgC,GAAGD,KAAK,CAACE,aAAoC;EACnF,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;EAE7B,MAAM;IAAEE;EAAQ,CAAC,GAAGL,eAAe,EAAE;EACrC,MAAM;IAAEM,MAAM;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAGZ,aAAa,EAAE;EAEnD,MAAMa,QAAQ,GAAGX,WAAW,CAACK,WAAW,CAACO,IAAI,IAAIb,gBAAgB,CAACM,WAAW,CAACQ,IAAI,CAAC,CAAC;EACpF,MAAMC,QAAQ,GAAGP,OAAO,CAACQ,aAAa,CAACC,yBAAyB,CAACX,WAAW,CAAC,IAAIA,WAAW,CAACQ,IAAI;EAEjG,oBACErB,KAAA,CAAAyB,aAAA,CAACxB,GAAG;IACFyB,KAAK,EAAEC,MAAM,CAACC,mBAAoB;IAClCC,eAAe,EAAEb,MAAM,CAAC;MAAEc,KAAK,EAAEZ,OAAO,CAACa,aAAa;MAAEC,IAAI,EAAEd,OAAO,CAACe;IAAc,CAAC;EAAE,gBAEvFjC,KAAA,CAAAyB,aAAA,CAACtB,QAAQ;IAAC+B,OAAO,EAAEtB,KAAK,CAACsB,OAAQ;IAACC,WAAW,EAAEvB,KAAK,CAACuB;EAAY,gBAC/DnC,KAAA,CAAAyB,aAAA,CAACxB,GAAG;IAACyB,KAAK,EAAEC,MAAM,CAACS;EAAe,gBAChCpC,KAAA,CAAAyB,aAAA,CAACvB,IAAI,CAACmC,IAAI;IACRlB,QAAQ,EAAEA,QAAS;IACnBmB,IAAI,EAAE,EAAG;IACTC,cAAc,EAAE;MAAEV,eAAe,EAAEX,OAAO,CAACsB,YAAY;MAAEC,YAAY,EAAE;IAAE;EAAE,EAC3E,eACFzC,KAAA,CAAAyB,aAAA,CAACrB,IAAI;IAACsC,KAAK;IAACC,aAAa,EAAE,CAAE;IAACC,KAAK,EAAE3B,MAAM,CAAC4B,cAAe;IAACnB,KAAK,EAAEC,MAAM,CAACN;EAAK,GAC5EZ,QAAQ,CAACa,QAAQ,EAAE;IAAEwB,IAAI,EAAE,KAAK;IAAEC,MAAM,EAAE;EAAG,CAAC,CAAC,CAC3C,CACH,CACG,CACP;AAEV,CAAC;AAED,MAAMpB,MAAM,GAAGtB,gBAAgB,CAAC;EAC9BuB,mBAAmB,EAAE;IACnBoB,SAAS,EAAE,YAAY;IACvBC,QAAQ,EAAE,QAAQ;IAClBC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBV,YAAY,EAAE,EAAE;IAChBW,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB,CAAC;EACDjB,cAAc,EAAE;IACdc,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd,CAAC;EACD9B,IAAI,EAAE;IACJiC,UAAU,EAAE,CAAC;IACbC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF,eAAe5C,uBAAuB"}
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import { Box, PressBox, VideoThumbnail, createStyleSheet } from '@sendbird/uikit-react-native-foundation';
3
+ import { getThumbnailUriFromFileMessage } from '@sendbird/uikit-utils';
4
+ const ThreadParentMessageFileVideo = props => {
5
+ const fileMessage = props.parentMessage;
6
+ if (!fileMessage) return null;
7
+ const uri = getThumbnailUriFromFileMessage(fileMessage);
8
+ return /*#__PURE__*/React.createElement(Box, {
9
+ style: styles.container
10
+ }, /*#__PURE__*/React.createElement(PressBox, {
11
+ activeOpacity: 0.8,
12
+ onPress: props.onPress,
13
+ onLongPress: props.onLongPress
14
+ }, /*#__PURE__*/React.createElement(VideoThumbnail, {
15
+ style: styles.image,
16
+ source: uri,
17
+ fetchThumbnailFromVideoSource: props.fetchThumbnailFromVideoSource
18
+ })));
19
+ };
20
+ const styles = createStyleSheet({
21
+ container: {
22
+ borderRadius: 16,
23
+ overflow: 'hidden'
24
+ },
25
+ image: {
26
+ maxWidth: 240,
27
+ width: 240,
28
+ height: 160,
29
+ borderRadius: 16,
30
+ overflow: 'hidden'
31
+ }
32
+ });
33
+ export default ThreadParentMessageFileVideo;
34
+ //# sourceMappingURL=ThreadParentMessage.file.video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Box","PressBox","VideoThumbnail","createStyleSheet","getThumbnailUriFromFileMessage","ThreadParentMessageFileVideo","props","fileMessage","parentMessage","uri","createElement","style","styles","container","activeOpacity","onPress","onLongPress","image","source","fetchThumbnailFromVideoSource","borderRadius","overflow","maxWidth","width","height"],"sources":["ThreadParentMessage.file.video.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Box, PressBox, VideoThumbnail, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdFileMessage, getThumbnailUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport { ThreadParentMessageRendererProps } from './index';\n\ntype Props = ThreadParentMessageRendererProps<{\n fetchThumbnailFromVideoSource: (uri: string) => Promise<{ path: string } | null>;\n}>;\n\nconst ThreadParentMessageFileVideo = (props: Props) => {\n const fileMessage: SendbirdFileMessage = props.parentMessage as SendbirdFileMessage;\n if (!fileMessage) return null;\n\n const uri = getThumbnailUriFromFileMessage(fileMessage);\n\n return (\n <Box style={styles.container}>\n <PressBox activeOpacity={0.8} onPress={props.onPress} onLongPress={props.onLongPress}>\n <VideoThumbnail\n style={styles.image}\n source={uri}\n fetchThumbnailFromVideoSource={props.fetchThumbnailFromVideoSource}\n />\n </PressBox>\n </Box>\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 ThreadParentMessageFileVideo;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,GAAG,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,yCAAyC;AACzG,SAA8BC,8BAA8B,QAAQ,uBAAuB;AAQ3F,MAAMC,4BAA4B,GAAIC,KAAY,IAAK;EACrD,MAAMC,WAAgC,GAAGD,KAAK,CAACE,aAAoC;EACnF,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;EAE7B,MAAME,GAAG,GAAGL,8BAA8B,CAACG,WAAW,CAAC;EAEvD,oBACER,KAAA,CAAAW,aAAA,CAACV,GAAG;IAACW,KAAK,EAAEC,MAAM,CAACC;EAAU,gBAC3Bd,KAAA,CAAAW,aAAA,CAACT,QAAQ;IAACa,aAAa,EAAE,GAAI;IAACC,OAAO,EAAET,KAAK,CAACS,OAAQ;IAACC,WAAW,EAAEV,KAAK,CAACU;EAAY,gBACnFjB,KAAA,CAAAW,aAAA,CAACR,cAAc;IACbS,KAAK,EAAEC,MAAM,CAACK,KAAM;IACpBC,MAAM,EAAET,GAAI;IACZU,6BAA6B,EAAEb,KAAK,CAACa;EAA8B,EACnE,CACO,CACP;AAEV,CAAC;AAED,MAAMP,MAAM,GAAGT,gBAAgB,CAAC;EAC9BU,SAAS,EAAE;IACTO,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ,CAAC;EACDJ,KAAK,EAAE;IACLK,QAAQ,EAAE,GAAG;IACbC,KAAK,EAAE,GAAG;IACVC,MAAM,EAAE,GAAG;IACXJ,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAehB,4BAA4B"}
@@ -0,0 +1,87 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Box, Icon, PressBox, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
3
+ import { LoadingSpinner, ProgressBar } from '@sendbird/uikit-react-native-foundation';
4
+ import { createStyleSheet } from '@sendbird/uikit-react-native-foundation';
5
+ import { millsToMSS } from '@sendbird/uikit-utils';
6
+ const ThreadParentMessageFileVoice = props => {
7
+ const {
8
+ onLongPress,
9
+ onToggleVoiceMessage,
10
+ parentMessage,
11
+ durationMetaArrayKey = 'KEY_VOICE_MESSAGE_DURATION',
12
+ onUnmount
13
+ } = props;
14
+ const fileMessage = parentMessage;
15
+ if (!fileMessage) return null;
16
+ const {
17
+ colors
18
+ } = useUIKitTheme();
19
+ const [state, setState] = useState(() => {
20
+ var _meta$value;
21
+ const meta = fileMessage.metaArrays.find(it => it.key === durationMetaArrayKey);
22
+ const value = meta === null || meta === void 0 ? void 0 : (_meta$value = meta.value) === null || _meta$value === void 0 ? void 0 : _meta$value[0];
23
+ const initialDuration = value ? parseInt(value, 10) : 0;
24
+ return {
25
+ status: 'paused',
26
+ currentTime: 0,
27
+ duration: initialDuration
28
+ };
29
+ });
30
+ useEffect(() => {
31
+ return () => {
32
+ onUnmount();
33
+ };
34
+ }, []);
35
+ const uiColors = colors.ui.groupChannelMessage['incoming'];
36
+ const remainingTime = state.duration - state.currentTime;
37
+ return /*#__PURE__*/React.createElement(Box, {
38
+ style: styles.container,
39
+ backgroundColor: uiColors.enabled.background
40
+ }, /*#__PURE__*/React.createElement(PressBox, {
41
+ onPress: () => onToggleVoiceMessage === null || onToggleVoiceMessage === void 0 ? void 0 : onToggleVoiceMessage(state, setState),
42
+ onLongPress: onLongPress
43
+ }, /*#__PURE__*/React.createElement(ProgressBar, {
44
+ current: state.currentTime,
45
+ total: state.duration,
46
+ style: {
47
+ minWidth: 136,
48
+ height: 44
49
+ },
50
+ trackColor: uiColors.enabled.voiceProgressTrack,
51
+ overlay: /*#__PURE__*/React.createElement(Box, {
52
+ flex: 1,
53
+ flexDirection: 'row',
54
+ alignItems: 'center',
55
+ justifyContent: 'space-between',
56
+ paddingHorizontal: 12
57
+ }, state.status === 'preparing' ? /*#__PURE__*/React.createElement(LoadingSpinner, {
58
+ size: 24,
59
+ color: uiColors.enabled.voiceSpinner
60
+ }) : /*#__PURE__*/React.createElement(Icon, {
61
+ size: 16,
62
+ containerStyle: {
63
+ backgroundColor: uiColors.enabled.voiceActionIconBackground,
64
+ padding: 6,
65
+ borderRadius: 16
66
+ },
67
+ icon: state.status === 'paused' ? 'play' : 'pause'
68
+ }), /*#__PURE__*/React.createElement(Text, {
69
+ body3: true,
70
+ style: {
71
+ lineHeight: undefined,
72
+ marginLeft: 6,
73
+ opacity: 0.88
74
+ },
75
+ color: uiColors.enabled.textVoicePlaytime
76
+ }, millsToMSS(state.currentTime === 0 ? state.duration : remainingTime)))
77
+ })));
78
+ };
79
+ const styles = createStyleSheet({
80
+ container: {
81
+ borderRadius: 16,
82
+ overflow: 'hidden',
83
+ maxWidth: 136
84
+ }
85
+ });
86
+ export default ThreadParentMessageFileVoice;
87
+ //# sourceMappingURL=ThreadParentMessage.file.voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useState","Box","Icon","PressBox","Text","useUIKitTheme","LoadingSpinner","ProgressBar","createStyleSheet","millsToMSS","ThreadParentMessageFileVoice","props","onLongPress","onToggleVoiceMessage","parentMessage","durationMetaArrayKey","onUnmount","fileMessage","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","overflow","maxWidth"],"sources":["ThreadParentMessage.file.voice.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport { Box, Icon, PressBox, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { LoadingSpinner, ProgressBar } from '@sendbird/uikit-react-native-foundation';\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdFileMessage, millsToMSS } from '@sendbird/uikit-utils';\n\nimport { ThreadParentMessageRendererProps } from './index';\n\nexport type VoiceFileMessageState = {\n status: 'preparing' | 'playing' | 'paused';\n currentTime: number;\n duration: number;\n};\n\ntype Props = ThreadParentMessageRendererProps<{\n durationMetaArrayKey?: string;\n onUnmount: () => void;\n}>;\n\nconst ThreadParentMessageFileVoice = (props: Props) => {\n const {\n onLongPress,\n onToggleVoiceMessage,\n parentMessage,\n durationMetaArrayKey = 'KEY_VOICE_MESSAGE_DURATION',\n onUnmount,\n } = props;\n\n const fileMessage: SendbirdFileMessage = parentMessage as SendbirdFileMessage;\n if (!fileMessage) return null;\n\n const { colors } = useUIKitTheme();\n\n const [state, setState] = useState<VoiceFileMessageState>(() => {\n const meta = fileMessage.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['incoming'];\n const remainingTime = state.duration - state.currentTime;\n\n return (\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 </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n borderRadius: 16,\n overflow: 'hidden',\n maxWidth: 136,\n },\n});\n\nexport default ThreadParentMessageFileVoice;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAElD,SAASC,GAAG,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,aAAa,QAAQ,yCAAyC;AAClG,SAASC,cAAc,EAAEC,WAAW,QAAQ,yCAAyC;AACrF,SAASC,gBAAgB,QAAQ,yCAAyC;AAC1E,SAA8BC,UAAU,QAAQ,uBAAuB;AAevE,MAAMC,4BAA4B,GAAIC,KAAY,IAAK;EACrD,MAAM;IACJC,WAAW;IACXC,oBAAoB;IACpBC,aAAa;IACbC,oBAAoB,GAAG,4BAA4B;IACnDC;EACF,CAAC,GAAGL,KAAK;EAET,MAAMM,WAAgC,GAAGH,aAAoC;EAC7E,IAAI,CAACG,WAAW,EAAE,OAAO,IAAI;EAE7B,MAAM;IAAEC;EAAO,CAAC,GAAGb,aAAa,EAAE;EAElC,MAAM,CAACc,KAAK,EAAEC,QAAQ,CAAC,GAAGpB,QAAQ,CAAwB,MAAM;IAAA,IAAAqB,WAAA;IAC9D,MAAMC,IAAI,GAAGL,WAAW,CAACM,UAAU,CAACC,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACC,GAAG,KAAKX,oBAAoB,CAAC;IACjF,MAAMY,KAAK,GAAGL,IAAI,aAAJA,IAAI,wBAAAD,WAAA,GAAJC,IAAI,CAAEK,KAAK,cAAAN,WAAA,uBAAXA,WAAA,CAAc,CAAC,CAAC;IAC9B,MAAMO,eAAe,GAAGD,KAAK,GAAGE,QAAQ,CAACF,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC;IACvD,OAAO;MACLG,MAAM,EAAE,QAAQ;MAChBC,WAAW,EAAE,CAAC;MACdC,QAAQ,EAAEJ;IACZ,CAAC;EACH,CAAC,CAAC;EAEF7B,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXiB,SAAS,EAAE;IACb,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMiB,QAAQ,GAAGf,MAAM,CAACgB,EAAE,CAACC,mBAAmB,CAAC,UAAU,CAAC;EAC1D,MAAMC,aAAa,GAAGjB,KAAK,CAACa,QAAQ,GAAGb,KAAK,CAACY,WAAW;EAExD,oBACEjC,KAAA,CAAAuC,aAAA,CAACpC,GAAG;IAACqC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAACC,eAAe,EAAER,QAAQ,CAACS,OAAO,CAACC;EAAW,gBACzE7C,KAAA,CAAAuC,aAAA,CAAClC,QAAQ;IAACyC,OAAO,EAAEA,CAAA,KAAM/B,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAGM,KAAK,EAAEC,QAAQ,CAAE;IAACR,WAAW,EAAEA;EAAY,gBACzFd,KAAA,CAAAuC,aAAA,CAAC9B,WAAW;IACVsC,OAAO,EAAE1B,KAAK,CAACY,WAAY;IAC3Be,KAAK,EAAE3B,KAAK,CAACa,QAAS;IACtBM,KAAK,EAAE;MAAES,QAAQ,EAAE,GAAG;MAAEC,MAAM,EAAE;IAAG,CAAE;IACrCC,UAAU,EAAEhB,QAAQ,CAACS,OAAO,CAACQ,kBAAmB;IAChDC,OAAO,eACLrD,KAAA,CAAAuC,aAAA,CAACpC,GAAG;MACFmD,IAAI,EAAE,CAAE;MACRC,aAAa,EAAE,KAAM;MACrBC,UAAU,EAAE,QAAS;MACrBC,cAAc,EAAE,eAAgB;MAChCC,iBAAiB,EAAE;IAAG,GAErBrC,KAAK,CAACW,MAAM,KAAK,WAAW,gBAC3BhC,KAAA,CAAAuC,aAAA,CAAC/B,cAAc;MAACmD,IAAI,EAAE,EAAG;MAACC,KAAK,EAAEzB,QAAQ,CAACS,OAAO,CAACiB;IAAa,EAAG,gBAElE7D,KAAA,CAAAuC,aAAA,CAACnC,IAAI;MACHuD,IAAI,EAAE,EAAG;MACTG,cAAc,EAAE;QACdnB,eAAe,EAAER,QAAQ,CAACS,OAAO,CAACmB,yBAAyB;QAC3DC,OAAO,EAAE,CAAC;QACVC,YAAY,EAAE;MAChB,CAAE;MACFC,IAAI,EAAE7C,KAAK,CAACW,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG;IAAQ,EAEtD,eACDhC,KAAA,CAAAuC,aAAA,CAACjC,IAAI;MACH6D,KAAK;MACL3B,KAAK,EAAE;QAAE4B,UAAU,EAAEC,SAAS;QAAEC,UAAU,EAAE,CAAC;QAAEC,OAAO,EAAE;MAAK,CAAE;MAC/DX,KAAK,EAAEzB,QAAQ,CAACS,OAAO,CAAC4B;IAAkB,GAEzC7D,UAAU,CAACU,KAAK,CAACY,WAAW,KAAK,CAAC,GAAGZ,KAAK,CAACa,QAAQ,GAAGI,aAAa,CAAC,CAChE;EAEV,EACD,CACO,CACP;AAEV,CAAC;AAED,MAAMG,MAAM,GAAG/B,gBAAgB,CAAC;EAC9BgC,SAAS,EAAE;IACTuB,YAAY,EAAE,EAAE;IAChBQ,QAAQ,EAAE,QAAQ;IAClBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAe9D,4BAA4B"}
@@ -0,0 +1,54 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import React from 'react';
3
+ import { Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
+ import { RegexText, createStyleSheet } from '@sendbird/uikit-react-native-foundation';
5
+ import { urlRegexStrict } from '@sendbird/uikit-utils';
6
+ const ThreadParentMessageUser = props => {
7
+ var _props$renderRegexTex;
8
+ const userMessage = props.parentMessage;
9
+ if (!userMessage) return null;
10
+ const {
11
+ colors
12
+ } = useUIKitTheme();
13
+ return /*#__PURE__*/React.createElement(Text, {
14
+ body3: true,
15
+ color: colors.onBackground01,
16
+ suppressHighlighting: true
17
+ }, /*#__PURE__*/React.createElement(RegexText, {
18
+ body3: true,
19
+ color: colors.onBackground01,
20
+ patterns: [...(props.regexTextPatterns ?? []), {
21
+ regex: urlRegexStrict,
22
+ replacer(_ref) {
23
+ let {
24
+ match,
25
+ parentProps,
26
+ keyPrefix,
27
+ index
28
+ } = _ref;
29
+ return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
30
+ key: `${keyPrefix}-${index}`,
31
+ onPress: () => {
32
+ var _props$onPressURL;
33
+ return (_props$onPressURL = props.onPressURL) === null || _props$onPressURL === void 0 ? void 0 : _props$onPressURL.call(props, match);
34
+ },
35
+ style: [parentProps === null || parentProps === void 0 ? void 0 : parentProps.style, styles.urlText]
36
+ }), match);
37
+ }
38
+ }]
39
+ }, (_props$renderRegexTex = props.renderRegexTextChildren) === null || _props$renderRegexTex === void 0 ? void 0 : _props$renderRegexTex.call(props, userMessage)), Boolean(userMessage.updatedAt) && /*#__PURE__*/React.createElement(Text, {
40
+ body3: true,
41
+ color: colors.onBackground02
42
+ }, ' (edited)'));
43
+ };
44
+ const styles = createStyleSheet({
45
+ bubble: {
46
+ paddingHorizontal: 12,
47
+ paddingVertical: 6
48
+ },
49
+ urlText: {
50
+ textDecorationLine: 'underline'
51
+ }
52
+ });
53
+ export default ThreadParentMessageUser;
54
+ //# sourceMappingURL=ThreadParentMessage.user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Text","useUIKitTheme","RegexText","createStyleSheet","urlRegexStrict","ThreadParentMessageUser","props","_props$renderRegexTex","userMessage","parentMessage","colors","createElement","body3","color","onBackground01","suppressHighlighting","patterns","regexTextPatterns","regex","replacer","_ref","match","parentProps","keyPrefix","index","_extends","key","onPress","_props$onPressURL","onPressURL","call","style","styles","urlText","renderRegexTextChildren","Boolean","updatedAt","onBackground02","bubble","paddingHorizontal","paddingVertical","textDecorationLine"],"sources":["ThreadParentMessage.user.tsx"],"sourcesContent":["import React from 'react';\n\nimport { type RegexTextPattern, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { RegexText, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdUserMessage, urlRegexStrict } from '@sendbird/uikit-utils';\n\nimport { ThreadParentMessageRendererProps } from './index';\n\ntype Props = ThreadParentMessageRendererProps<{\n regexTextPatterns?: RegexTextPattern[];\n renderRegexTextChildren?: (message: SendbirdUserMessage) => string;\n}>;\n\nconst ThreadParentMessageUser = (props: Props) => {\n const userMessage: SendbirdUserMessage = props.parentMessage as SendbirdUserMessage;\n if (!userMessage) return null;\n\n const { colors } = useUIKitTheme();\n\n return (\n <Text body3 color={colors.onBackground01} suppressHighlighting>\n <RegexText\n body3\n color={colors.onBackground01}\n patterns={[\n ...(props.regexTextPatterns ?? []),\n {\n regex: urlRegexStrict,\n replacer({ match, parentProps, keyPrefix, index }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => props.onPressURL?.(match)}\n style={[parentProps?.style, styles.urlText]}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {props.renderRegexTextChildren?.(userMessage)}\n </RegexText>\n {Boolean(userMessage.updatedAt) && (\n <Text body3 color={colors.onBackground02}>\n {' (edited)'}\n </Text>\n )}\n </Text>\n );\n};\n\nconst styles = createStyleSheet({\n bubble: {\n paddingHorizontal: 12,\n paddingVertical: 6,\n },\n urlText: {\n textDecorationLine: 'underline',\n },\n});\n\nexport default ThreadParentMessageUser;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAAgCC,IAAI,EAAEC,aAAa,QAAQ,yCAAyC;AACpG,SAASC,SAAS,EAAEC,gBAAgB,QAAQ,yCAAyC;AACrF,SAA8BC,cAAc,QAAQ,uBAAuB;AAS3E,MAAMC,uBAAuB,GAAIC,KAAY,IAAK;EAAA,IAAAC,qBAAA;EAChD,MAAMC,WAAgC,GAAGF,KAAK,CAACG,aAAoC;EACnF,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;EAE7B,MAAM;IAAEE;EAAO,CAAC,GAAGT,aAAa,EAAE;EAElC,oBACEF,KAAA,CAAAY,aAAA,CAACX,IAAI;IAACY,KAAK;IAACC,KAAK,EAAEH,MAAM,CAACI,cAAe;IAACC,oBAAoB;EAAA,gBAC5DhB,KAAA,CAAAY,aAAA,CAACT,SAAS;IACRU,KAAK;IACLC,KAAK,EAAEH,MAAM,CAACI,cAAe;IAC7BE,QAAQ,EAAE,CACR,IAAIV,KAAK,CAACW,iBAAiB,IAAI,EAAE,CAAC,EAClC;MACEC,KAAK,EAAEd,cAAc;MACrBe,QAAQA,CAAAC,IAAA,EAA2C;QAAA,IAA1C;UAAEC,KAAK;UAAEC,WAAW;UAAEC,SAAS;UAAEC;QAAM,CAAC,GAAAJ,IAAA;QAC/C,oBACErB,KAAA,CAAAY,aAAA,CAACX,IAAI,EAAAyB,QAAA,KACCH,WAAW;UACfI,GAAG,EAAG,GAAEH,SAAU,IAAGC,KAAM,EAAE;UAC7BG,OAAO,EAAEA,CAAA;YAAA,IAAAC,iBAAA;YAAA,QAAAA,iBAAA,GAAMtB,KAAK,CAACuB,UAAU,cAAAD,iBAAA,uBAAhBA,iBAAA,CAAAE,IAAA,CAAAxB,KAAK,EAAce,KAAK,CAAC;UAAA,CAAC;UACzCU,KAAK,EAAE,CAACT,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAES,KAAK,EAAEC,MAAM,CAACC,OAAO;QAAE,IAE3CZ,KAAK,CACD;MAEX;IACF,CAAC;EACD,IAAAd,qBAAA,GAEDD,KAAK,CAAC4B,uBAAuB,cAAA3B,qBAAA,uBAA7BA,qBAAA,CAAAuB,IAAA,CAAAxB,KAAK,EAA2BE,WAAW,CAAC,CACnC,EACX2B,OAAO,CAAC3B,WAAW,CAAC4B,SAAS,CAAC,iBAC7BrC,KAAA,CAAAY,aAAA,CAACX,IAAI;IAACY,KAAK;IAACC,KAAK,EAAEH,MAAM,CAAC2B;EAAe,GACtC,WAAW,CAEf,CACI;AAEX,CAAC;AAED,MAAML,MAAM,GAAG7B,gBAAgB,CAAC;EAC9BmC,MAAM,EAAE;IACNC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB,CAAC;EACDP,OAAO,EAAE;IACPQ,kBAAkB,EAAE;EACtB;AACF,CAAC,CAAC;AAEF,eAAepC,uBAAuB"}
@@ -0,0 +1,119 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import React from 'react';
3
+ import { Box, ImageWithPlaceholder, PressBox, RegexText, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
+ import { urlRegexStrict, useFreshCallback } from '@sendbird/uikit-utils';
5
+ import { useSendbirdChat } from './../../hooks/useContext';
6
+ const ThreadParentMessageUserOg = props => {
7
+ var _props$renderRegexTex;
8
+ const userMessage = props.parentMessage;
9
+ if (!userMessage) return null;
10
+ const {
11
+ sbOptions
12
+ } = useSendbirdChat();
13
+ const {
14
+ select,
15
+ colors,
16
+ palette
17
+ } = useUIKitTheme();
18
+ const enableOgtag = sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag;
19
+ const onPressMessage = userMessage => useFreshCallback(() => {
20
+ var _userMessage$ogMetaDa, _props$onPressURL;
21
+ typeof ((_userMessage$ogMetaDa = userMessage.ogMetaData) === null || _userMessage$ogMetaDa === void 0 ? void 0 : _userMessage$ogMetaDa.url) === 'string' && ((_props$onPressURL = props.onPressURL) === null || _props$onPressURL === void 0 ? void 0 : _props$onPressURL.call(props, userMessage.ogMetaData.url));
22
+ });
23
+ return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(PressBox, {
24
+ activeOpacity: 0.85,
25
+ onPress: onPressMessage(userMessage)
26
+ }, /*#__PURE__*/React.createElement(Text, {
27
+ body3: true,
28
+ color: colors.onBackground01,
29
+ suppressHighlighting: true
30
+ }, /*#__PURE__*/React.createElement(RegexText, {
31
+ body3: true,
32
+ color: colors.onBackground01,
33
+ patterns: [...(props.regexTextPatterns ?? []), {
34
+ regex: urlRegexStrict,
35
+ replacer(_ref) {
36
+ let {
37
+ match,
38
+ parentProps,
39
+ keyPrefix,
40
+ index
41
+ } = _ref;
42
+ return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
43
+ key: `${keyPrefix}-${index}`,
44
+ onPress: () => {
45
+ var _props$onPressURL2;
46
+ return (_props$onPressURL2 = props.onPressURL) === null || _props$onPressURL2 === void 0 ? void 0 : _props$onPressURL2.call(props, match);
47
+ },
48
+ style: [parentProps === null || parentProps === void 0 ? void 0 : parentProps.style, styles.urlText]
49
+ }), match);
50
+ }
51
+ }]
52
+ }, (_props$renderRegexTex = props.renderRegexTextChildren) === null || _props$renderRegexTex === void 0 ? void 0 : _props$renderRegexTex.call(props, userMessage)), Boolean(userMessage.updatedAt) && /*#__PURE__*/React.createElement(Text, {
53
+ body3: true,
54
+ color: colors.onBackground02
55
+ }, ' (edited)'))), userMessage.ogMetaData && enableOgtag && /*#__PURE__*/React.createElement(PressBox, {
56
+ onPress: onPressMessage(userMessage),
57
+ style: styles.container
58
+ }, /*#__PURE__*/React.createElement(Box, null, !!userMessage.ogMetaData.defaultImage && /*#__PURE__*/React.createElement(ImageWithPlaceholder, {
59
+ style: styles.ogImage,
60
+ source: {
61
+ uri: userMessage.ogMetaData.defaultImage.url
62
+ }
63
+ }), /*#__PURE__*/React.createElement(Box, {
64
+ style: styles.ogContainer,
65
+ backgroundColor: select({
66
+ dark: palette.background400,
67
+ light: palette.background100
68
+ })
69
+ }, /*#__PURE__*/React.createElement(Text, {
70
+ numberOfLines: 3,
71
+ body2: true,
72
+ color: colors.onBackground01,
73
+ style: styles.ogTitle
74
+ }, userMessage.ogMetaData.title), !!userMessage.ogMetaData.description && /*#__PURE__*/React.createElement(Text, {
75
+ numberOfLines: 1,
76
+ caption2: true,
77
+ color: colors.onBackground01,
78
+ style: styles.ogDesc
79
+ }, userMessage.ogMetaData.description), /*#__PURE__*/React.createElement(Text, {
80
+ numberOfLines: 1,
81
+ caption2: true,
82
+ color: colors.onBackground02
83
+ }, userMessage.ogMetaData.url)))));
84
+ };
85
+ const styles = createStyleSheet({
86
+ container: {
87
+ borderRadius: 16,
88
+ overflow: 'hidden'
89
+ },
90
+ ogContainer: {
91
+ paddingHorizontal: 12,
92
+ paddingTop: 8,
93
+ paddingBottom: 12,
94
+ maxWidth: 240,
95
+ borderBottomLeftRadius: 16,
96
+ borderBottomRightRadius: 16
97
+ },
98
+ ogImage: {
99
+ width: 240,
100
+ height: 136,
101
+ borderTopLeftRadius: 16,
102
+ borderTopRightRadius: 16
103
+ },
104
+ ogUrl: {
105
+ marginBottom: 4
106
+ },
107
+ ogTitle: {
108
+ marginBottom: 4
109
+ },
110
+ ogDesc: {
111
+ lineHeight: 14,
112
+ marginBottom: 8
113
+ },
114
+ urlText: {
115
+ textDecorationLine: 'underline'
116
+ }
117
+ });
118
+ export default ThreadParentMessageUserOg;
119
+ //# sourceMappingURL=ThreadParentMessage.user.og.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Box","ImageWithPlaceholder","PressBox","RegexText","Text","createStyleSheet","useUIKitTheme","urlRegexStrict","useFreshCallback","useSendbirdChat","ThreadParentMessageUserOg","props","_props$renderRegexTex","userMessage","parentMessage","sbOptions","select","colors","palette","enableOgtag","uikitWithAppInfo","groupChannel","channel","onPressMessage","_userMessage$ogMetaDa","_props$onPressURL","ogMetaData","url","onPressURL","call","createElement","activeOpacity","onPress","body3","color","onBackground01","suppressHighlighting","patterns","regexTextPatterns","regex","replacer","_ref","match","parentProps","keyPrefix","index","_extends","key","_props$onPressURL2","style","styles","urlText","renderRegexTextChildren","Boolean","updatedAt","onBackground02","container","defaultImage","ogImage","source","uri","ogContainer","backgroundColor","dark","background400","light","background100","numberOfLines","body2","ogTitle","title","description","caption2","ogDesc","borderRadius","overflow","paddingHorizontal","paddingTop","paddingBottom","maxWidth","borderBottomLeftRadius","borderBottomRightRadius","width","height","borderTopLeftRadius","borderTopRightRadius","ogUrl","marginBottom","lineHeight","textDecorationLine"],"sources":["ThreadParentMessage.user.og.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Box,\n ImageWithPlaceholder,\n PressBox,\n RegexText,\n type RegexTextPattern,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdUserMessage, urlRegexStrict, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from './../../hooks/useContext';\nimport { ThreadParentMessageRendererProps } from './index';\n\ntype Props = ThreadParentMessageRendererProps<{\n regexTextPatterns?: RegexTextPattern[];\n renderRegexTextChildren?: (message: SendbirdUserMessage) => string;\n}>;\n\nconst ThreadParentMessageUserOg = (props: Props) => {\n const userMessage: SendbirdUserMessage = props.parentMessage as SendbirdUserMessage;\n if (!userMessage) return null;\n\n const { sbOptions } = useSendbirdChat();\n const { select, colors, palette } = useUIKitTheme();\n const enableOgtag = sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag;\n const onPressMessage = (userMessage: SendbirdUserMessage) =>\n useFreshCallback(() => {\n typeof userMessage.ogMetaData?.url === 'string' && props.onPressURL?.(userMessage.ogMetaData.url);\n });\n\n return (\n <Box>\n <PressBox activeOpacity={0.85} onPress={onPressMessage(userMessage)}>\n <Text body3 color={colors.onBackground01} suppressHighlighting>\n <RegexText\n body3\n color={colors.onBackground01}\n patterns={[\n ...(props.regexTextPatterns ?? []),\n {\n regex: urlRegexStrict,\n replacer({ match, parentProps, keyPrefix, index }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={() => props.onPressURL?.(match)}\n style={[parentProps?.style, styles.urlText]}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {props.renderRegexTextChildren?.(userMessage)}\n </RegexText>\n {Boolean(userMessage.updatedAt) && (\n <Text body3 color={colors.onBackground02}>\n {' (edited)'}\n </Text>\n )}\n </Text>\n </PressBox>\n {userMessage.ogMetaData && enableOgtag && (\n <PressBox onPress={onPressMessage(userMessage)} style={styles.container}>\n <Box>\n {!!userMessage.ogMetaData.defaultImage && (\n <ImageWithPlaceholder style={styles.ogImage} source={{ uri: userMessage.ogMetaData.defaultImage.url }} />\n )}\n <Box\n style={styles.ogContainer}\n backgroundColor={select({ dark: palette.background400, light: palette.background100 })}\n >\n <Text numberOfLines={3} body2 color={colors.onBackground01} style={styles.ogTitle}>\n {userMessage.ogMetaData.title}\n </Text>\n {!!userMessage.ogMetaData.description && (\n <Text numberOfLines={1} caption2 color={colors.onBackground01} style={styles.ogDesc}>\n {userMessage.ogMetaData.description}\n </Text>\n )}\n <Text numberOfLines={1} caption2 color={colors.onBackground02}>\n {userMessage.ogMetaData.url}\n </Text>\n </Box>\n </Box>\n </PressBox>\n )}\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n borderRadius: 16,\n overflow: 'hidden',\n },\n ogContainer: {\n paddingHorizontal: 12,\n paddingTop: 8,\n paddingBottom: 12,\n maxWidth: 240,\n borderBottomLeftRadius: 16,\n borderBottomRightRadius: 16,\n },\n ogImage: {\n width: 240,\n height: 136,\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n },\n ogUrl: {\n marginBottom: 4,\n },\n ogTitle: {\n marginBottom: 4,\n },\n ogDesc: {\n lineHeight: 14,\n marginBottom: 8,\n },\n urlText: {\n textDecorationLine: 'underline',\n },\n});\n\nexport default ThreadParentMessageUserOg;\n"],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import React, { useRef } from 'react';
3
+ import { Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
+ import { getMessageType, isMyMessage, isVoiceMessage } from '@sendbird/uikit-utils';
5
+ import { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';
6
+ import SBUUtils from '../../libs/SBUUtils';
7
+ import { usePlatformService, useSendbirdChat } from './../../hooks/useContext';
8
+ import ThreadParentMessageFile from './ThreadParentMessage.file';
9
+ import ThreadParentMessageFileImage from './ThreadParentMessage.file.image';
10
+ import ThreadParentMessageFileVideo from './ThreadParentMessage.file.video';
11
+ import ThreadParentMessageFileVoice from './ThreadParentMessage.file.voice';
12
+ import ThreadParentMessageUser from './ThreadParentMessage.user';
13
+ import ThreadParentMessageUserOg from './ThreadParentMessage.user.og';
14
+ const ThreadParentMessageRenderer = props => {
15
+ const playerUnsubscribes = useRef([]);
16
+ const {
17
+ sbOptions,
18
+ currentUser,
19
+ mentionManager
20
+ } = useSendbirdChat();
21
+ const {
22
+ palette
23
+ } = useUIKitTheme();
24
+ const {
25
+ mediaService,
26
+ playerService
27
+ } = usePlatformService();
28
+ const parentMessage = props.parentMessage;
29
+ const resetPlayer = async () => {
30
+ playerUnsubscribes.current.forEach(unsubscribe => {
31
+ try {
32
+ unsubscribe();
33
+ } catch {}
34
+ });
35
+ playerUnsubscribes.current.length = 0;
36
+ await playerService.reset();
37
+ };
38
+ const messageProps = {
39
+ onPressURL: url => SBUUtils.openURL(url),
40
+ onToggleVoiceMessage: async (state, setState) => {
41
+ if (isVoiceMessage(parentMessage) && parentMessage.sendingStatus === 'succeeded') {
42
+ if (playerService.uri === parentMessage.url) {
43
+ if (playerService.state === 'playing') {
44
+ await playerService.pause();
45
+ } else {
46
+ await playerService.play(parentMessage.url);
47
+ }
48
+ } else {
49
+ if (playerService.state !== 'idle') {
50
+ await resetPlayer();
51
+ }
52
+ const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;
53
+ let seekFinished = !shouldSeekToTime;
54
+ const forPlayback = playerService.addPlaybackListener(_ref => {
55
+ let {
56
+ stopped,
57
+ currentTime,
58
+ duration
59
+ } = _ref;
60
+ if (seekFinished) {
61
+ setState(prevState => ({
62
+ ...prevState,
63
+ currentTime: stopped ? 0 : currentTime,
64
+ duration
65
+ }));
66
+ }
67
+ });
68
+ const forState = playerService.addStateListener(state => {
69
+ switch (state) {
70
+ case 'preparing':
71
+ setState(prevState => ({
72
+ ...prevState,
73
+ status: 'preparing'
74
+ }));
75
+ break;
76
+ case 'playing':
77
+ setState(prevState => ({
78
+ ...prevState,
79
+ status: 'playing'
80
+ }));
81
+ break;
82
+ case 'idle':
83
+ case 'paused':
84
+ {
85
+ setState(prevState => ({
86
+ ...prevState,
87
+ status: 'paused'
88
+ }));
89
+ break;
90
+ }
91
+ case 'stopped':
92
+ setState(prevState => ({
93
+ ...prevState,
94
+ status: 'paused'
95
+ }));
96
+ break;
97
+ }
98
+ });
99
+ playerUnsubscribes.current.push(forPlayback, forState);
100
+ await playerService.play(parentMessage.url);
101
+ if (shouldSeekToTime) {
102
+ await playerService.seek(state.currentTime);
103
+ seekFinished = true;
104
+ }
105
+ }
106
+ }
107
+ },
108
+ ...props
109
+ };
110
+ const userMessageProps = {
111
+ renderRegexTextChildren: message => {
112
+ if (mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)) {
113
+ return message.mentionedMessageTemplate;
114
+ } else {
115
+ return message.message;
116
+ }
117
+ },
118
+ regexTextPatterns: [{
119
+ regex: mentionManager.templateRegex,
120
+ replacer(_ref2) {
121
+ var _parentMessage$mentio;
122
+ let {
123
+ match,
124
+ groups,
125
+ parentProps,
126
+ index,
127
+ keyPrefix
128
+ } = _ref2;
129
+ const user = (_parentMessage$mentio = parentMessage.mentionedUsers) === null || _parentMessage$mentio === void 0 ? void 0 : _parentMessage$mentio.find(it => it.userId === groups[2]);
130
+ if (user) {
131
+ const mentionColor = !isMyMessage(parentMessage, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) && user.userId === (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ? palette.onBackgroundLight01 : parentProps === null || parentProps === void 0 ? void 0 : parentProps.color;
132
+ return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
133
+ key: `${keyPrefix}-${index}`,
134
+ color: mentionColor,
135
+ onPress: () => {
136
+ var _messageProps$onPress;
137
+ return (_messageProps$onPress = messageProps.onPressMentionedUser) === null || _messageProps$onPress === void 0 ? void 0 : _messageProps$onPress.call(messageProps, user);
138
+ },
139
+ onLongPress: messageProps.onLongPress,
140
+ style: [parentProps === null || parentProps === void 0 ? void 0 : parentProps.style, {
141
+ fontWeight: '700'
142
+ }, user.userId === (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) && {
143
+ backgroundColor: palette.highlight
144
+ }]
145
+ }), `${mentionManager.asMentionedMessageText(user)}`);
146
+ }
147
+ return match;
148
+ }
149
+ }]
150
+ };
151
+ switch (getMessageType(props.parentMessage)) {
152
+ case 'user':
153
+ {
154
+ return /*#__PURE__*/React.createElement(ThreadParentMessageUser, _extends({}, userMessageProps, messageProps));
155
+ }
156
+ case 'user.opengraph':
157
+ {
158
+ return /*#__PURE__*/React.createElement(ThreadParentMessageUserOg, _extends({}, userMessageProps, messageProps));
159
+ }
160
+ case 'file':
161
+ case 'file.audio':
162
+ {
163
+ return /*#__PURE__*/React.createElement(ThreadParentMessageFile, messageProps);
164
+ }
165
+ case 'file.video':
166
+ {
167
+ return /*#__PURE__*/React.createElement(ThreadParentMessageFileVideo, _extends({
168
+ fetchThumbnailFromVideoSource: uri => mediaService.getVideoThumbnail({
169
+ url: uri,
170
+ timeMills: 1000
171
+ })
172
+ }, messageProps));
173
+ }
174
+ case 'file.image':
175
+ {
176
+ return /*#__PURE__*/React.createElement(ThreadParentMessageFileImage, messageProps);
177
+ }
178
+ case 'file.voice':
179
+ {
180
+ return /*#__PURE__*/React.createElement(ThreadParentMessageFileVoice, _extends({
181
+ durationMetaArrayKey: VOICE_MESSAGE_META_ARRAY_DURATION_KEY,
182
+ onUnmount: () => {
183
+ if (isVoiceMessage(parentMessage) && playerService.uri === parentMessage.url) {
184
+ resetPlayer();
185
+ }
186
+ }
187
+ }, messageProps));
188
+ }
189
+ default:
190
+ {
191
+ return null;
192
+ }
193
+ }
194
+ };
195
+ export default /*#__PURE__*/React.memo(ThreadParentMessageRenderer);
196
+ //# sourceMappingURL=index.js.map