@sendbird/uikit-react-native 3.1.2 → 3.2.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 (317) hide show
  1. package/README.md +67 -42
  2. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js +145 -0
  3. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  4. package/lib/commonjs/components/ChannelInput/SendInput.js +147 -312
  5. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  6. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +238 -0
  7. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  8. package/lib/commonjs/components/ChannelInput/index.js +5 -1
  9. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  10. package/lib/commonjs/components/ChannelMessageList/index.js +1 -1
  11. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +100 -5
  15. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  16. package/lib/commonjs/components/MessageSearchResultItem.js +1 -0
  17. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
  18. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +1 -0
  19. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
  20. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  21. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  22. package/lib/commonjs/components/ReactionBottomSheets/index.js.map +1 -1
  23. package/lib/commonjs/components/StatusComposition.js.map +1 -1
  24. package/lib/commonjs/constants.js +5 -1
  25. package/lib/commonjs/constants.js.map +1 -1
  26. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +1 -0
  27. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  28. package/lib/commonjs/containers/InternalErrorBoundaryContainer.js.map +1 -1
  29. package/lib/commonjs/containers/SendbirdUIKitContainer.js +72 -34
  30. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  31. package/lib/commonjs/contexts/PlatformServiceCtx.js +16 -12
  32. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  33. package/lib/commonjs/contexts/ReactionCtx.js +3 -2
  34. package/lib/commonjs/contexts/ReactionCtx.js.map +1 -1
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js +2 -0
  36. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +27 -42
  38. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +109 -5
  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/userList/types.js.map +1 -1
  43. package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -4
  44. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  45. package/lib/commonjs/fragments/createMessageSearchFragment.js +1 -1
  46. package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
  47. package/lib/commonjs/hooks/useChannelInputItems.js +211 -0
  48. package/lib/commonjs/hooks/useChannelInputItems.js.map +1 -0
  49. package/lib/commonjs/hooks/useConnection.js +1 -1
  50. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  51. package/lib/commonjs/hooks/useVoiceMessageInput.js +207 -0
  52. package/lib/commonjs/hooks/useVoiceMessageInput.js.map +1 -0
  53. package/lib/commonjs/index.js +32 -0
  54. package/lib/commonjs/index.js.map +1 -1
  55. package/lib/commonjs/libs/MentionManager.js.map +1 -1
  56. package/lib/commonjs/libs/SBUUtils.js +4 -0
  57. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  58. package/lib/commonjs/libs/VoiceMessageConfig.js +30 -0
  59. package/lib/commonjs/libs/VoiceMessageConfig.js.map +1 -0
  60. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  61. package/lib/commonjs/localization/createBaseStringSet.js +24 -9
  62. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  63. package/lib/commonjs/platform/createFileService.expo.js +10 -0
  64. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  65. package/lib/commonjs/platform/createFileService.native.js +19 -0
  66. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  67. package/lib/commonjs/platform/createPlayerService.expo.js +137 -0
  68. package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -0
  69. package/lib/commonjs/platform/createPlayerService.native.js +139 -0
  70. package/lib/commonjs/platform/createPlayerService.native.js.map +1 -0
  71. package/lib/commonjs/platform/createRecorderService.expo.js +158 -0
  72. package/lib/commonjs/platform/createRecorderService.expo.js.map +1 -0
  73. package/lib/commonjs/platform/createRecorderService.native.js +157 -0
  74. package/lib/commonjs/platform/createRecorderService.native.js.map +1 -0
  75. package/lib/commonjs/platform/types.js.map +1 -1
  76. package/lib/commonjs/types.js.map +1 -1
  77. package/lib/commonjs/version.js +1 -1
  78. package/lib/commonjs/version.js.map +1 -1
  79. package/lib/module/components/ChannelInput/MessageToReplyPreview.js +137 -0
  80. package/lib/module/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  81. package/lib/module/components/ChannelInput/SendInput.js +149 -314
  82. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  83. package/lib/module/components/ChannelInput/VoiceMessageInput.js +228 -0
  84. package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  85. package/lib/module/components/ChannelInput/index.js +5 -1
  86. package/lib/module/components/ChannelInput/index.js.map +1 -1
  87. package/lib/module/components/ChannelMessageList/index.js +2 -2
  88. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  89. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  90. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  91. package/lib/module/components/GroupChannelMessageRenderer/index.js +99 -6
  92. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  93. package/lib/module/components/MessageSearchResultItem.js +2 -1
  94. package/lib/module/components/MessageSearchResultItem.js.map +1 -1
  95. package/lib/module/components/OpenChannelMessageRenderer/index.js +1 -0
  96. package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
  97. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  98. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  99. package/lib/module/components/ReactionBottomSheets/index.js.map +1 -1
  100. package/lib/module/components/StatusComposition.js.map +1 -1
  101. package/lib/module/constants.js +2 -0
  102. package/lib/module/constants.js.map +1 -1
  103. package/lib/module/containers/GroupChannelPreviewContainer.js +2 -1
  104. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  105. package/lib/module/containers/InternalErrorBoundaryContainer.js.map +1 -1
  106. package/lib/module/containers/SendbirdUIKitContainer.js +74 -36
  107. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  108. package/lib/module/contexts/PlatformServiceCtx.js +14 -11
  109. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  110. package/lib/module/contexts/ReactionCtx.js +3 -2
  111. package/lib/module/contexts/ReactionCtx.js.map +1 -1
  112. package/lib/module/contexts/SendbirdChatCtx.js +2 -0
  113. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  114. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +28 -43
  115. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  116. package/lib/module/domain/groupChannel/module/moduleContext.js +111 -7
  117. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  118. package/lib/module/domain/groupChannel/types.js.map +1 -1
  119. package/lib/module/domain/userList/types.js.map +1 -1
  120. package/lib/module/fragments/createGroupChannelFragment.js +32 -6
  121. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  122. package/lib/module/fragments/createMessageSearchFragment.js +1 -1
  123. package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
  124. package/lib/module/hooks/useChannelInputItems.js +203 -0
  125. package/lib/module/hooks/useChannelInputItems.js.map +1 -0
  126. package/lib/module/hooks/useConnection.js +1 -1
  127. package/lib/module/hooks/useConnection.js.map +1 -1
  128. package/lib/module/hooks/useVoiceMessageInput.js +199 -0
  129. package/lib/module/hooks/useVoiceMessageInput.js.map +1 -0
  130. package/lib/module/index.js +4 -0
  131. package/lib/module/index.js.map +1 -1
  132. package/lib/module/libs/MentionManager.js.map +1 -1
  133. package/lib/module/libs/SBUUtils.js +4 -0
  134. package/lib/module/libs/SBUUtils.js.map +1 -1
  135. package/lib/module/libs/VoiceMessageConfig.js +23 -0
  136. package/lib/module/libs/VoiceMessageConfig.js.map +1 -0
  137. package/lib/module/localization/StringSet.type.js.map +1 -1
  138. package/lib/module/localization/createBaseStringSet.js +25 -10
  139. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  140. package/lib/module/platform/createFileService.expo.js +10 -0
  141. package/lib/module/platform/createFileService.expo.js.map +1 -1
  142. package/lib/module/platform/createFileService.native.js +19 -0
  143. package/lib/module/platform/createFileService.native.js.map +1 -1
  144. package/lib/module/platform/createPlayerService.expo.js +129 -0
  145. package/lib/module/platform/createPlayerService.expo.js.map +1 -0
  146. package/lib/module/platform/createPlayerService.native.js +132 -0
  147. package/lib/module/platform/createPlayerService.native.js.map +1 -0
  148. package/lib/module/platform/createRecorderService.expo.js +150 -0
  149. package/lib/module/platform/createRecorderService.expo.js.map +1 -0
  150. package/lib/module/platform/createRecorderService.native.js +149 -0
  151. package/lib/module/platform/createRecorderService.native.js.map +1 -0
  152. package/lib/module/platform/types.js.map +1 -1
  153. package/lib/module/types.js.map +1 -1
  154. package/lib/module/version.js +1 -1
  155. package/lib/module/version.js.map +1 -1
  156. package/lib/typescript/src/components/ChannelCover.d.ts +2 -1
  157. package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +2 -1
  158. package/lib/typescript/src/components/ChannelInput/MessageToReplyPreview.d.ts +7 -0
  159. package/lib/typescript/src/components/ChannelInput/VoiceMessageInput.d.ts +11 -0
  160. package/lib/typescript/src/components/ChannelInput/index.d.ts +7 -3
  161. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +1 -1
  162. package/lib/typescript/src/components/FileViewer.d.ts +2 -1
  163. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +2 -1
  164. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +1 -1
  165. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts +1 -1
  166. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +4 -2
  167. package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
  168. package/lib/typescript/src/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.d.ts +2 -1
  169. package/lib/typescript/src/components/ProviderLayout.d.ts +1 -1
  170. package/lib/typescript/src/components/ReactionAddons/BottomSheetReactionAddon.d.ts +2 -1
  171. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +2 -1
  172. package/lib/typescript/src/components/ReactionAddons/ReactionRoundedButton.d.ts +3 -2
  173. package/lib/typescript/src/components/ReactionAddons/index.d.ts +3 -2
  174. package/lib/typescript/src/components/ReactionBottomSheets/ReactionListBottomSheet.d.ts +2 -1
  175. package/lib/typescript/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.d.ts +2 -1
  176. package/lib/typescript/src/components/ReactionBottomSheets/index.d.ts +4 -4
  177. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  178. package/lib/typescript/src/components/StatusComposition.d.ts +4 -4
  179. package/lib/typescript/src/components/TypedPlaceholder.d.ts +2 -1
  180. package/lib/typescript/src/components/UserActionBar.d.ts +2 -1
  181. package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -1
  182. package/lib/typescript/src/constants.d.ts +2 -0
  183. package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +2 -1
  184. package/lib/typescript/src/containers/InternalErrorBoundaryContainer.d.ts +3 -3
  185. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +19 -8
  186. package/lib/typescript/src/contexts/LocalizationCtx.d.ts +1 -1
  187. package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +8 -8
  188. package/lib/typescript/src/contexts/ReactionCtx.d.ts +5 -2
  189. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +6 -3
  190. package/lib/typescript/src/contexts/UserProfileCtx.d.ts +1 -1
  191. package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +2 -1
  192. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  193. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -1
  194. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusEmpty.d.ts +2 -1
  195. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusLoading.d.ts +2 -1
  196. package/lib/typescript/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.d.ts +2 -1
  197. package/lib/typescript/src/domain/groupChannel/types.d.ts +45 -0
  198. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.d.ts +2 -1
  199. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.d.ts +2 -1
  200. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.d.ts +2 -1
  201. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.d.ts +2 -1
  202. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListHeader.d.ts +2 -1
  203. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +2 -1
  204. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.d.ts +2 -1
  205. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusLoading.d.ts +2 -1
  206. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +2 -1
  207. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.d.ts +2 -1
  208. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.d.ts +2 -1
  209. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.d.ts +2 -1
  210. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.d.ts +2 -1
  211. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.d.ts +2 -1
  212. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.d.ts +2 -1
  213. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.d.ts +2 -1
  214. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.d.ts +2 -1
  215. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.d.ts +2 -1
  216. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts +2 -1
  217. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.d.ts +2 -1
  218. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.d.ts +2 -1
  219. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.d.ts +2 -1
  220. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +2 -1
  221. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +2 -1
  222. package/lib/typescript/src/domain/messageSearch/component/MessageSearchHeader.d.ts +2 -1
  223. package/lib/typescript/src/domain/messageSearch/component/MessageSearchList.d.ts +2 -1
  224. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusEmpty.d.ts +2 -1
  225. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusLoading.d.ts +2 -1
  226. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +2 -2
  227. package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
  228. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
  229. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusEmpty.d.ts +2 -1
  230. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusLoading.d.ts +2 -1
  231. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.d.ts +2 -1
  232. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.d.ts +2 -1
  233. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.d.ts +2 -1
  234. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.d.ts +2 -1
  235. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateHeader.d.ts +2 -1
  236. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.d.ts +2 -1
  237. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.d.ts +2 -1
  238. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListHeader.d.ts +2 -1
  239. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +2 -1
  240. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusEmpty.d.ts +2 -1
  241. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusLoading.d.ts +2 -1
  242. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationHeader.d.ts +2 -1
  243. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationMenu.d.ts +2 -1
  244. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.d.ts +2 -1
  245. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.d.ts +2 -1
  246. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.d.ts +2 -1
  247. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.d.ts +2 -1
  248. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsHeader.d.ts +2 -1
  249. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsList.d.ts +2 -1
  250. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.d.ts +2 -1
  251. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.d.ts +2 -1
  252. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsHeader.d.ts +2 -1
  253. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsInfo.d.ts +2 -1
  254. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsMenu.d.ts +2 -1
  255. package/lib/typescript/src/domain/userList/component/UserListHeader.d.ts +3 -3
  256. package/lib/typescript/src/domain/userList/component/UserListList.d.ts +1 -1
  257. package/lib/typescript/src/domain/userList/component/UserListStatusEmpty.d.ts +2 -1
  258. package/lib/typescript/src/domain/userList/component/UserListStatusLoading.d.ts +2 -1
  259. package/lib/typescript/src/domain/userList/types.d.ts +2 -2
  260. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +10 -0
  261. package/lib/typescript/src/hooks/useVoiceMessageInput.d.ts +53 -0
  262. package/lib/typescript/src/index.d.ts +4 -0
  263. package/lib/typescript/src/libs/MentionManager.d.ts +2 -1
  264. package/lib/typescript/src/libs/SBUUtils.d.ts +1 -0
  265. package/lib/typescript/src/libs/VoiceMessageConfig.d.ts +25 -0
  266. package/lib/typescript/src/localization/StringSet.type.d.ts +7 -0
  267. package/lib/typescript/src/platform/createPlayerService.expo.d.ts +7 -0
  268. package/lib/typescript/src/platform/createPlayerService.native.d.ts +9 -0
  269. package/lib/typescript/src/platform/createRecorderService.expo.d.ts +7 -0
  270. package/lib/typescript/src/platform/createRecorderService.native.d.ts +9 -0
  271. package/lib/typescript/src/platform/types.d.ts +100 -1
  272. package/lib/typescript/src/types.d.ts +1 -1
  273. package/lib/typescript/src/version.d.ts +1 -1
  274. package/package.json +9 -11
  275. package/src/components/ChannelInput/MessageToReplyPreview.tsx +133 -0
  276. package/src/components/ChannelInput/SendInput.tsx +129 -320
  277. package/src/components/ChannelInput/VoiceMessageInput.tsx +206 -0
  278. package/src/components/ChannelInput/index.tsx +12 -4
  279. package/src/components/ChannelMessageList/index.tsx +3 -1
  280. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +24 -11
  281. package/src/components/GroupChannelMessageRenderer/index.tsx +80 -3
  282. package/src/components/MessageSearchResultItem.tsx +2 -1
  283. package/src/components/OpenChannelMessageRenderer/index.tsx +1 -0
  284. package/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx +2 -2
  285. package/src/components/ReactionBottomSheets/index.tsx +3 -2
  286. package/src/components/StatusComposition.tsx +3 -3
  287. package/src/constants.ts +2 -0
  288. package/src/containers/GroupChannelPreviewContainer.tsx +2 -0
  289. package/src/containers/InternalErrorBoundaryContainer.tsx +1 -1
  290. package/src/containers/SendbirdUIKitContainer.tsx +103 -59
  291. package/src/contexts/PlatformServiceCtx.tsx +22 -20
  292. package/src/contexts/ReactionCtx.tsx +7 -5
  293. package/src/contexts/SendbirdChatCtx.tsx +10 -2
  294. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +29 -43
  295. package/src/domain/groupChannel/module/moduleContext.tsx +119 -7
  296. package/src/domain/groupChannel/types.ts +41 -0
  297. package/src/domain/userList/types.ts +2 -2
  298. package/src/fragments/createGroupChannelFragment.tsx +32 -5
  299. package/src/fragments/createMessageSearchFragment.tsx +1 -1
  300. package/src/hooks/useChannelInputItems.ts +215 -0
  301. package/src/hooks/useConnection.ts +1 -1
  302. package/src/hooks/useVoiceMessageInput.ts +237 -0
  303. package/src/index.ts +4 -0
  304. package/src/libs/MentionManager.tsx +1 -1
  305. package/src/libs/SBUUtils.ts +5 -0
  306. package/src/libs/VoiceMessageConfig.ts +28 -0
  307. package/src/localization/StringSet.type.ts +8 -0
  308. package/src/localization/createBaseStringSet.ts +27 -11
  309. package/src/platform/createFileService.expo.ts +10 -0
  310. package/src/platform/createFileService.native.ts +19 -0
  311. package/src/platform/createPlayerService.expo.tsx +142 -0
  312. package/src/platform/createPlayerService.native.tsx +148 -0
  313. package/src/platform/createRecorderService.expo.tsx +160 -0
  314. package/src/platform/createRecorderService.native.tsx +170 -0
  315. package/src/platform/types.ts +114 -1
  316. package/src/types.ts +1 -1
  317. package/src/version.ts +1 -1
package/README.md CHANGED
@@ -78,6 +78,7 @@ Add the following permissions to your `android/app/src/main/AndroidManifest.xml`
78
78
  package="com.your.app">
79
79
 
80
80
  <uses-permission android:name="android.permission.CAMERA" />
81
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
81
82
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
82
83
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
83
84
  <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
@@ -123,6 +124,8 @@ const App = () => {
123
124
  notification: NotificationService,
124
125
  clipboard: ClipboardService,
125
126
  media: MediaService,
127
+ recorder: RecorderService,
128
+ player: PlayerService,
126
129
  }}
127
130
  >
128
131
  {/* ... */}
@@ -134,7 +137,7 @@ const App = () => {
134
137
  In order to implement the interfaces to your React Native app more easily, we provide various helper functions for each interface.
135
138
 
136
139
  > **NOTE**: Helper function is not required! You can implement it with native modules you're using.
137
- > More details about PlatformService interfaces, please see [here](https://sendbird.com/docs/uikit/v3/react-native/core-components/provider/platformserviceprovider)
140
+ > More details about PlatformService interfaces, please see [here](https://sendbird.com/docs/chat/uikit/v3/react-native/core-components/provider/platformserviceprovider)
138
141
 
139
142
  **Using React Native CLI**
140
143
 
@@ -147,6 +150,7 @@ npm install react-native-video \
147
150
  react-native-image-picker \
148
151
  react-native-document-picker \
149
152
  react-native-create-thumbnail \
153
+ react-native-audio-recorder-player \
150
154
  @react-native-clipboard/clipboard \
151
155
  @react-native-camera-roll/camera-roll \
152
156
  @react-native-firebase/app \
@@ -157,34 +161,45 @@ npx pod-install
157
161
  ```
158
162
 
159
163
  ```ts
160
- import * as ImageResizer from '@bam.tech/react-native-image-resizer';
161
- import { CameraRoll } from '@react-native-camera-roll/camera-roll';
162
164
  import Clipboard from '@react-native-clipboard/clipboard';
165
+ import { CameraRoll } from '@react-native-camera-roll/camera-roll';
163
166
  import RNFBMessaging from '@react-native-firebase/messaging';
164
- import * as CreateThumbnail from 'react-native-create-thumbnail';
167
+ import Video from 'react-native-video';
165
168
  import * as DocumentPicker from 'react-native-document-picker';
166
169
  import * as FileAccess from 'react-native-file-access';
167
170
  import * as ImagePicker from 'react-native-image-picker';
168
171
  import * as Permissions from 'react-native-permissions';
169
- import Video from 'react-native-video';
170
-
171
- const NativeClipboardService = createNativeClipboardService(Clipboard);
172
- const NativeNotificationService = createNativeNotificationService({
173
- messagingModule: RNFBMessaging,
174
- permissionModule: Permissions,
175
- });
176
- const NativeFileService = createNativeFileService({
177
- fsModule: FileAccess,
178
- permissionModule: Permissions,
179
- imagePickerModule: ImagePicker,
180
- mediaLibraryModule: CameraRoll,
181
- documentPickerModule: DocumentPicker,
182
- });
183
- const NativeMediaService = createNativeMediaService({
184
- VideoComponent: Video,
185
- thumbnailModule: CreateThumbnail,
186
- imageResizerModule: ImageResizer,
187
- });
172
+ import * as CreateThumbnail from 'react-native-create-thumbnail';
173
+ import * as ImageResizer from '@bam.tech/react-native-image-resizer';
174
+ import * as AudioRecorderPlayer from 'react-native-audio-recorder-player';
175
+
176
+ const nativePlatformServices = {
177
+ clipboard: createNativeClipboardService(Clipboard),
178
+ notification: createNativeNotificationService({
179
+ messagingModule: RNFBMessaging,
180
+ permissionModule: Permissions,
181
+ }),
182
+ file: createNativeFileService({
183
+ imagePickerModule: ImagePicker,
184
+ documentPickerModule: DocumentPicker,
185
+ permissionModule: Permissions,
186
+ fsModule: FileAccess,
187
+ mediaLibraryModule: CameraRoll,
188
+ }),
189
+ media: createNativeMediaService({
190
+ VideoComponent: Video,
191
+ thumbnailModule: CreateThumbnail,
192
+ imageResizerModule: ImageResizer,
193
+ }),
194
+ player: createNativePlayerService({
195
+ audioRecorderModule: AudioRecorderPlayer,
196
+ permissionModule: Permissions,
197
+ }),
198
+ recorder: createNativeRecorderService({
199
+ audioRecorderModule: AudioRecorderPlayer,
200
+ permissionModule: Permissions,
201
+ }),
202
+ };
188
203
  ```
189
204
 
190
205
  **Using Expo CLI**
@@ -204,30 +219,38 @@ expo install expo-image-picker \
204
219
  ```
205
220
 
206
221
  ```ts
207
- import * as ExpoAV from 'expo-av';
208
222
  import * as ExpoClipboard from 'expo-clipboard';
209
223
  import * as ExpoDocumentPicker from 'expo-document-picker';
210
224
  import * as ExpoFS from 'expo-file-system';
211
- import * as ExpoImageManipulator from 'expo-image-manipulator';
212
225
  import * as ExpoImagePicker from 'expo-image-picker';
213
226
  import * as ExpoMediaLibrary from 'expo-media-library';
214
227
  import * as ExpoNotifications from 'expo-notifications';
228
+ import * as ExpoAV from 'expo-av';
215
229
  import * as ExpoVideoThumbnail from 'expo-video-thumbnails';
230
+ import * as ExpoImageManipulator from 'expo-image-manipulator';
216
231
 
217
- const ExpoNotificationService = createExpoNotificationService(ExpoNotifications);
218
- const ExpoClipboardService = createExpoClipboardService(ExpoClipboard);
219
- const ExpoFileService = createExpoFileService({
220
- fsModule: ExpoFS,
221
- imagePickerModule: ExpoImagePicker,
222
- mediaLibraryModule: ExpoMediaLibrary,
223
- documentPickerModule: ExpoDocumentPicker,
224
- });
225
- const ExpoMediaService = createExpoMediaService({
226
- avModule: ExpoAV,
227
- thumbnailModule: ExpoVideoThumbnail,
228
- imageManipulator: ExpoImageManipulator,
229
- fsModule: ExpoFS,
230
- });
232
+ const expoPlatformServices = {
233
+ clipboard: createExpoClipboardService(ExpoClipboard),
234
+ notification: createExpoNotificationService(ExpoNotifications),
235
+ file: createExpoFileService({
236
+ fsModule: ExpoFS,
237
+ imagePickerModule: ExpoImagePicker,
238
+ mediaLibraryModule: ExpoMediaLibrary,
239
+ documentPickerModule: ExpoDocumentPicker,
240
+ }),
241
+ media: createExpoMediaService({
242
+ avModule: ExpoAV,
243
+ thumbnailModule: ExpoVideoThumbnail,
244
+ imageManipulator: ExpoImageManipulator,
245
+ fsModule: ExpoFS,
246
+ }),
247
+ player: createExpoPlayerService({
248
+ avModule: ExpoAV,
249
+ }),
250
+ recorder: createExpoRecorderService({
251
+ avModule: ExpoAV,
252
+ }),
253
+ };
231
254
  ```
232
255
 
233
256
  ### Local caching (required)
@@ -236,7 +259,7 @@ You can implement Local caching easily.
236
259
 
237
260
  ```shell
238
261
  npm i @react-native-async-storage/async-storage
239
- npx pod-isntall
262
+ npx pod-install
240
263
  ```
241
264
 
242
265
  ```tsx
@@ -280,7 +303,7 @@ const App = () => {
280
303
  ### Integration with navigation library
281
304
 
282
305
  Now you can create a screen and integrate it with a navigation library like [`react-navigation`](https://reactnavigation.org/).
283
- See more details on [here](https://st.sendbird.com/docs/uikit/v3/react-native/introduction/screen-navigation)
306
+ See more details on [here](https://sendbird.com/docs/chat/uikit/v3/react-native/introduction/screen-navigation)
284
307
 
285
308
  The example below shows how to integrate using `react-navigation`.
286
309
 
@@ -420,6 +443,8 @@ const App = () => {
420
443
  notification: NotificationService,
421
444
  clipboard: ClipboardService,
422
445
  media: MediaService,
446
+ recorder: RecorderService,
447
+ player: PlayerService,
423
448
  }}
424
449
  >
425
450
  <Navigation />
@@ -429,4 +454,4 @@ const App = () => {
429
454
  ```
430
455
 
431
456
  > You can use sendbird sdk using `useSendbirdChat()` hook, and you can connect or disconnect using `useConnection()` hook.
432
- > for more details about hooks, please refer to our [docs](https://sendbird.com/docs/uikit/v3/react-native/core-components/hooks)
457
+ > for more details about hooks, please refer to our [docs](https://sendbird.com/docs/chat/uikit/v3/react-native/core-components/hooks)
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MessageToReplyPreview = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
10
+ var _uikitUtils = require("@sendbird/uikit-utils");
11
+ var _useContext = require("../../hooks/useContext");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const MessageToReplyPreview = _ref => {
14
+ let {
15
+ messageToReply,
16
+ setMessageToReply
17
+ } = _ref;
18
+ const {
19
+ colors,
20
+ select,
21
+ palette
22
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
23
+ const {
24
+ mediaService
25
+ } = (0, _useContext.usePlatformService)();
26
+ const {
27
+ STRINGS
28
+ } = (0, _useContext.useLocalization)();
29
+ const getFileIconAsImage = url => {
30
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ImageWithPlaceholder, {
31
+ source: {
32
+ uri: url
33
+ },
34
+ style: styles.previewImage
35
+ });
36
+ };
37
+ const getFileIconAsVideoThumbnail = url => {
38
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.VideoThumbnail, {
39
+ style: styles.previewImage,
40
+ iconSize: 0,
41
+ source: url,
42
+ fetchThumbnailFromVideoSource: uri => mediaService.getVideoThumbnail({
43
+ url: uri,
44
+ timeMills: 1000
45
+ })
46
+ });
47
+ };
48
+ const getFileIconAsSymbol = icon => {
49
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
50
+ icon: icon,
51
+ size: 20,
52
+ color: colors.onBackground02,
53
+ containerStyle: [styles.fileIcon, {
54
+ backgroundColor: select({
55
+ light: palette.background100,
56
+ dark: palette.background500
57
+ })
58
+ }]
59
+ });
60
+ };
61
+ const getFileIcon = messageToReply => {
62
+ if (messageToReply !== null && messageToReply !== void 0 && messageToReply.isFileMessage()) {
63
+ const messageType = (0, _uikitUtils.getMessageType)(messageToReply);
64
+ switch (messageType) {
65
+ case 'file.image':
66
+ return getFileIconAsImage((0, _uikitUtils.getThumbnailUriFromFileMessage)(messageToReply));
67
+ case 'file.video':
68
+ return getFileIconAsVideoThumbnail((0, _uikitUtils.getThumbnailUriFromFileMessage)(messageToReply));
69
+ case 'file.voice':
70
+ return null;
71
+ default:
72
+ return getFileIconAsSymbol((0, _uikitUtils.getFileIconFromMessageType)(messageType));
73
+ }
74
+ }
75
+ return null;
76
+ };
77
+ if (!messageToReply) return null;
78
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
79
+ style: [styles.messageToReplyContainer, {
80
+ borderColor: colors.onBackground04
81
+ }]
82
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
83
+ style: {
84
+ flex: 1,
85
+ flexDirection: 'row'
86
+ }
87
+ }, getFileIcon(messageToReply), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
88
+ style: {
89
+ flex: 1,
90
+ flexDirection: 'column'
91
+ }
92
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
93
+ numberOfLines: 1,
94
+ style: {
95
+ fontSize: 13,
96
+ fontWeight: '900',
97
+ marginBottom: 4
98
+ }
99
+ }, STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_TITLE(messageToReply.sender)), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
100
+ numberOfLines: 1,
101
+ style: {
102
+ fontSize: 13,
103
+ color: colors.onBackground03
104
+ }
105
+ }, STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_BODY(messageToReply)))), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
106
+ onPress: () => setMessageToReply === null || setMessageToReply === void 0 ? void 0 : setMessageToReply(undefined)
107
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
108
+ icon: 'close',
109
+ size: 24,
110
+ color: colors.onBackground01,
111
+ containerStyle: styles.closeIcon
112
+ })));
113
+ };
114
+ exports.MessageToReplyPreview = MessageToReplyPreview;
115
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
116
+ previewImage: {
117
+ width: 36,
118
+ height: 36,
119
+ borderRadius: 10,
120
+ marginTop: 2,
121
+ marginRight: 10,
122
+ overflow: 'hidden'
123
+ },
124
+ messageToReplyContainer: {
125
+ flexDirection: 'row',
126
+ paddingLeft: 18,
127
+ paddingRight: 16,
128
+ paddingTop: 10,
129
+ paddingBottom: 8,
130
+ alignItems: 'center',
131
+ borderTopWidth: 1
132
+ },
133
+ fileIcon: {
134
+ width: 36,
135
+ height: 36,
136
+ borderRadius: 10,
137
+ marginRight: 10,
138
+ marginTop: 2
139
+ },
140
+ closeIcon: {
141
+ marginLeft: 4,
142
+ padding: 4
143
+ }
144
+ });
145
+ //# sourceMappingURL=MessageToReplyPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","obj","__esModule","default","MessageToReplyPreview","_ref","messageToReply","setMessageToReply","colors","select","palette","useUIKitTheme","mediaService","usePlatformService","STRINGS","useLocalization","getFileIconAsImage","url","createElement","ImageWithPlaceholder","source","uri","style","styles","previewImage","getFileIconAsVideoThumbnail","VideoThumbnail","iconSize","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","getFileIconAsSymbol","icon","Icon","size","color","onBackground02","containerStyle","fileIcon","backgroundColor","light","background100","dark","background500","getFileIcon","isFileMessage","messageType","getMessageType","getThumbnailUriFromFileMessage","getFileIconFromMessageType","View","messageToReplyContainer","borderColor","onBackground04","flex","flexDirection","Text","numberOfLines","fontSize","fontWeight","marginBottom","LABELS","CHANNEL_INPUT_REPLY_PREVIEW_TITLE","sender","onBackground03","CHANNEL_INPUT_REPLY_PREVIEW_BODY","TouchableOpacity","onPress","undefined","onBackground01","closeIcon","exports","createStyleSheet","width","height","borderRadius","marginTop","marginRight","overflow","paddingLeft","paddingRight","paddingTop","paddingBottom","alignItems","borderTopWidth","marginLeft","padding"],"sources":["MessageToReplyPreview.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport {\n Icon,\n ImageWithPlaceholder,\n Text,\n VideoThumbnail,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n FileIcon,\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdUserMessage,\n getFileIconFromMessageType,\n getMessageType,\n getThumbnailUriFromFileMessage,\n} from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../hooks/useContext';\n\nexport type MessageToReplyPreviewProps = {\n messageToReply?: SendbirdFileMessage | SendbirdUserMessage;\n setMessageToReply?: (message?: undefined | SendbirdFileMessage | SendbirdUserMessage) => void;\n};\n\nexport const MessageToReplyPreview = ({ messageToReply, setMessageToReply }: MessageToReplyPreviewProps) => {\n const { colors, select, palette } = useUIKitTheme();\n const { mediaService } = usePlatformService();\n const { STRINGS } = useLocalization();\n\n const getFileIconAsImage = (url: string) => {\n return <ImageWithPlaceholder source={{ uri: url }} style={styles.previewImage} />;\n };\n\n const getFileIconAsVideoThumbnail = (url: string) => {\n return (\n <VideoThumbnail\n style={styles.previewImage}\n iconSize={0}\n source={url}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n />\n );\n };\n\n const getFileIconAsSymbol = (icon: FileIcon) => {\n return (\n <Icon\n icon={icon}\n size={20}\n color={colors.onBackground02}\n containerStyle={[\n styles.fileIcon,\n {\n backgroundColor: select({ light: palette.background100, dark: palette.background500 }),\n },\n ]}\n />\n );\n };\n\n const getFileIcon = (messageToReply: SendbirdBaseMessage) => {\n if (messageToReply?.isFileMessage()) {\n const messageType = getMessageType(messageToReply);\n switch (messageType) {\n case 'file.image':\n return getFileIconAsImage(getThumbnailUriFromFileMessage(messageToReply));\n case 'file.video':\n return getFileIconAsVideoThumbnail(getThumbnailUriFromFileMessage(messageToReply));\n case 'file.voice':\n return null;\n default:\n return getFileIconAsSymbol(getFileIconFromMessageType(messageType));\n }\n }\n return null;\n };\n\n if (!messageToReply) return null;\n\n return (\n <View style={[styles.messageToReplyContainer, { borderColor: colors.onBackground04 }]}>\n <View style={{ flex: 1, flexDirection: 'row' }}>\n {getFileIcon(messageToReply)}\n <View style={{ flex: 1, flexDirection: 'column' }}>\n <Text numberOfLines={1} style={{ fontSize: 13, fontWeight: '900', marginBottom: 4 }}>\n {STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_TITLE(messageToReply.sender)}\n </Text>\n <Text numberOfLines={1} style={{ fontSize: 13, color: colors.onBackground03 }}>\n {STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_BODY(messageToReply)}\n </Text>\n </View>\n </View>\n <TouchableOpacity onPress={() => setMessageToReply?.(undefined)}>\n <Icon icon={'close'} size={24} color={colors.onBackground01} containerStyle={styles.closeIcon} />\n </TouchableOpacity>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n previewImage: {\n width: 36,\n height: 36,\n borderRadius: 10,\n marginTop: 2,\n marginRight: 10,\n overflow: 'hidden',\n },\n messageToReplyContainer: {\n flexDirection: 'row',\n paddingLeft: 18,\n paddingRight: 16,\n paddingTop: 10,\n paddingBottom: 8,\n alignItems: 'center',\n borderTopWidth: 1,\n },\n fileIcon: {\n width: 36,\n height: 36,\n borderRadius: 10,\n marginRight: 10,\n marginTop: 2,\n },\n closeIcon: {\n marginLeft: 4,\n padding: 4,\n },\n});\n"],"mappings":"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"}