@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
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUError","_interopRequireDefault","_SBUUtils","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","SendInput","forwardRef","_ref","ref","AttachmentsButton","onPressSendUserMessage","onPressSendFileMessage","text","onChangeText","onSelectionChange","mentionedUsers","inputDisabled","inputFrozen","inputMuted","channel","messageToReply","setMessageToReply","mentionManager","sbOptions","useSendbirdChat","select","colors","palette","useUIKitTheme","STRINGS","useLocalization","openSheet","useBottomSheet","toast","useToast","mediaService","usePlatformService","messageReplyParams","useIIFE","groupChannel","uikit","isGroupChannel","replyType","parentMessageId","messageId","isReplyToChannel","messageMentionParams","enableMention","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","onFailureToSend","error","show","TOAST","SEND_MSG_ERROR","Logger","sendUserMessage","message","catch","sendFileMessage","file","sheetItems","useChannelInputItems","onPressAttachment","getPlaceholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_MUTED","CHANNEL_INPUT_PLACEHOLDER_DISABLED","CHANNEL_INPUT_PLACEHOLDER_REPLY","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","getFileIconAsImage","url","createElement","ImageWithPlaceholder","source","uri","style","styles","previewImage","getFileIconAsVideoThumbnail","VideoThumbnail","iconSize","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","getFileIconAsSymbol","icon","Icon","size","color","onBackground02","containerStyle","backgroundColor","light","background100","dark","background500","width","height","borderRadius","marginRight","marginTop","getFileIcon","isFileMessage","messageType","getMessageType","getThumbnailUriFromFileMessage","getFileIconFromMessageType","View","flexDirection","paddingLeft","paddingRight","paddingTop","paddingBottom","alignItems","borderTopWidth","borderColor","onBackground04","flex","Text","numberOfLines","fontSize","fontWeight","marginBottom","CHANNEL_INPUT_REPLY_PREVIEW_TITLE","sender","onBackground03","CHANNEL_INPUT_REPLY_PREVIEW_BODY","TouchableOpacity","onPress","undefined","onBackground01","iconSend","sendInputContainer","disabled","TextInput","multiline","disableFullscreenUI","editable","input","placeholder","textToMentionedComponents","Boolean","trim","ui","highlight","active","imageCompressionConfig","fileService","alert","useAlert","isOpenChannel","openChannel","enableDocument","camera","enablePhoto","enableVideo","gallery","push","title","CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO","mediaFile","openCamera","mediaType","onOpenFailure","code","SBUError","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","ALERT_PERMISSIONS_MESSAGE","PERMISSION_CAMERA","PERMISSION_APP_NAME","buttons","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","OPEN_CAMERA_ERROR","isImage","type","shouldCompressImage","chat","imageCompressionEnabled","safeRun","compressed","compressImage","maxWidth","maxHeight","compressionRate","CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO","CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY","mediaFiles","openMediaLibrary","selectionLimit","PERMISSION_DEVICE_STORAGE","OPEN_PHOTO_LIBRARY_ERROR","CHANNEL_INPUT_ATTACHMENT_FILES","documentFile","openDocument","OPEN_FILES_ERROR","createStyleSheet","paddingVertical","paddingHorizontal","minHeight","Platform","ios","marginLeft","padding","overflow","_default","exports"],"sources":["SendInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport {\n NativeSyntheticEvent,\n Platform,\n TextInput as RNTextInput,\n TextInputSelectionChangeEventData,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport { MentionType } from '@sendbird/chat/message';\nimport type { BottomSheetItem } from '@sendbird/uikit-react-native-foundation';\nimport {\n Icon,\n ImageWithPlaceholder,\n Text,\n TextInput,\n VideoThumbnail,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n FileIcon,\n Logger,\n SendbirdBaseMessage,\n SendbirdChannel,\n getFileIconFromMessageType,\n getMessageType,\n getThumbnailUriFromFileMessage,\n isImage,\n shouldCompressImage,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUError from '../../libs/SBUError';\nimport SBUUtils from '../../libs/SBUUtils';\nimport type { FileType } from '../../platform/types';\nimport type { MentionedUser } from '../../types';\nimport type { ChannelInputProps } from './index';\n\ninterface SendInputProps extends ChannelInputProps {\n text: string;\n onChangeText: (val: string) => void;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n mentionedUsers: MentionedUser[];\n}\n\nconst SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(\n {\n AttachmentsButton,\n onPressSendUserMessage,\n onPressSendFileMessage,\n text,\n onChangeText,\n onSelectionChange,\n mentionedUsers,\n inputDisabled,\n inputFrozen,\n inputMuted,\n channel,\n messageToReply,\n setMessageToReply,\n },\n ref,\n) {\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { select, colors, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const { openSheet } = useBottomSheet();\n const toast = useToast();\n const { mediaService } = usePlatformService();\n\n const messageReplyParams = useIIFE(() => {\n const { groupChannel } = sbOptions.uikit;\n if (!channel.isGroupChannel() || groupChannel.channel.replyType === 'none' || !messageToReply) return {};\n return {\n parentMessageId: messageToReply.messageId,\n isReplyToChannel: true,\n };\n });\n\n const messageMentionParams = useIIFE(() => {\n const { groupChannel } = sbOptions.uikit;\n if (!channel.isGroupChannel() || !groupChannel.channel.enableMention) return {};\n return {\n mentionType: MentionType.USERS,\n mentionedUserIds: mentionedUsers.map((it) => it.user.userId),\n mentionedMessageTemplate: mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n groupChannel.channel.enableMention,\n ),\n };\n });\n\n const onFailureToSend = (error: Error) => {\n toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.SEND_MSG_ERROR, error);\n };\n\n const sendUserMessage = () => {\n onPressSendUserMessage({\n message: text,\n ...messageMentionParams,\n ...messageReplyParams,\n }).catch(onFailureToSend);\n\n onChangeText('');\n setMessageToReply?.();\n };\n\n const sendFileMessage = (file: FileType) => {\n onPressSendFileMessage({\n file,\n ...messageReplyParams,\n }).catch(onFailureToSend);\n\n setMessageToReply?.();\n };\n\n const sheetItems = useChannelInputItems(channel, sendFileMessage);\n const onPressAttachment = () => openSheet({ sheetItems });\n\n const getPlaceholder = () => {\n if (inputMuted) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_MUTED;\n if (inputFrozen) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (inputDisabled) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (messageToReply) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY;\n\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE;\n };\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 backgroundColor: select({\n light: palette.background100,\n dark: palette.background500,\n }),\n width: 36,\n height: 36,\n borderRadius: 10,\n marginRight: 10,\n marginTop: 2,\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 default:\n return getFileIconAsSymbol(getFileIconFromMessageType(messageType));\n }\n }\n return null;\n };\n\n return (\n <View>\n {messageToReply && (\n <View\n style={{\n flexDirection: 'row',\n paddingLeft: 18,\n paddingRight: 16,\n paddingTop: 10,\n paddingBottom: 8,\n alignItems: 'center',\n borderTopWidth: 1,\n borderColor: colors.onBackground04,\n }}\n >\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.iconSend} />\n </TouchableOpacity>\n </View>\n )}\n <View style={styles.sendInputContainer}>\n {AttachmentsButton && <AttachmentsButton onPress={onPressAttachment} disabled={inputDisabled} />}\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n onSelectionChange={onSelectionChange}\n editable={!inputDisabled}\n onChangeText={onChangeText}\n style={styles.input}\n placeholder={getPlaceholder()}\n >\n {mentionManager.textToMentionedComponents(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n )}\n </TextInput>\n\n {Boolean(text.trim()) && (\n <TouchableOpacity onPress={sendUserMessage} disabled={inputDisabled}>\n <Icon\n color={\n inputDisabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight\n }\n icon={'send'}\n size={24}\n containerStyle={styles.iconSend}\n />\n </TouchableOpacity>\n )}\n </View>\n </View>\n );\n});\n\nconst useChannelInputItems = (channel: SendbirdChannel, sendFileMessage: (file: FileType) => void) => {\n const { sbOptions, imageCompressionConfig } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { fileService, mediaService } = usePlatformService();\n const { alert } = useAlert();\n const toast = useToast();\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const input = useIIFE(() => {\n switch (true) {\n case channel.isOpenChannel():\n return sbOptions.uikit.openChannel.channel.input;\n case channel.isGroupChannel():\n return sbOptions.uikit.groupChannel.channel.input;\n default:\n return {\n enableDocument: true,\n camera: { enablePhoto: true, enableVideo: true },\n gallery: { enablePhoto: true, enableVideo: true },\n };\n }\n });\n\n if (input.camera.enablePhoto) {\n sheetItems.push({\n title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO,\n icon: 'camera',\n onPress: async () => {\n const mediaFile = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_CAMERA,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (mediaFile) {\n // Image compression\n if (\n isImage(mediaFile.uri, mediaFile.type) &&\n shouldCompressImage(mediaFile.type, sbOptions.chat.imageCompressionEnabled)\n ) {\n await SBUUtils.safeRun(async () => {\n const compressed = await mediaService.compressImage({\n uri: mediaFile.uri,\n maxWidth: imageCompressionConfig.width,\n maxHeight: imageCompressionConfig.height,\n compressionRate: imageCompressionConfig.compressionRate,\n });\n\n if (compressed) {\n mediaFile.uri = compressed.uri;\n mediaFile.size = compressed.size;\n }\n });\n }\n\n sendFileMessage(mediaFile);\n }\n },\n });\n }\n\n if (input.camera.enableVideo) {\n sheetItems.push({\n title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO,\n icon: 'camera',\n onPress: async () => {\n const mediaFile = await fileService.openCamera({\n mediaType: 'video',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_CAMERA,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (mediaFile) {\n sendFileMessage(mediaFile);\n }\n },\n });\n }\n\n if (input.gallery.enablePhoto || input.gallery.enableVideo) {\n const mediaType = (() => {\n switch (true) {\n case input.gallery.enablePhoto && input.gallery.enableVideo:\n return 'all';\n case input.gallery.enablePhoto && !input.gallery.enableVideo:\n return 'photo';\n case !input.gallery.enablePhoto && input.gallery.enableVideo:\n return 'video';\n default:\n return 'all';\n }\n })();\n\n sheetItems.push({\n title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const mediaFiles = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType,\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n\n if (mediaFiles && mediaFiles[0]) {\n const mediaFile = mediaFiles[0];\n\n // Image compression\n if (\n isImage(mediaFile.uri, mediaFile.type) &&\n shouldCompressImage(mediaFile.type, sbOptions.chat.imageCompressionEnabled)\n ) {\n await SBUUtils.safeRun(async () => {\n const compressed = await mediaService.compressImage({\n uri: mediaFile.uri,\n maxWidth: imageCompressionConfig.width,\n maxHeight: imageCompressionConfig.height,\n compressionRate: imageCompressionConfig.compressionRate,\n });\n\n if (compressed) {\n mediaFile.uri = compressed.uri;\n mediaFile.size = compressed.size;\n }\n });\n }\n\n sendFileMessage(mediaFile);\n }\n },\n });\n }\n\n if (input.enableDocument) {\n sheetItems.push({\n title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const documentFile = await fileService.openDocument({\n onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (documentFile) {\n // Image compression\n if (\n isImage(documentFile.uri, documentFile.type) &&\n shouldCompressImage(documentFile.type, sbOptions.chat.imageCompressionEnabled)\n ) {\n await SBUUtils.safeRun(async () => {\n const compressed = await mediaService.compressImage({\n uri: documentFile.uri,\n maxWidth: imageCompressionConfig.width,\n maxHeight: imageCompressionConfig.height,\n compressionRate: imageCompressionConfig.compressionRate,\n });\n\n if (compressed) {\n documentFile.uri = compressed.uri;\n documentFile.size = compressed.size;\n }\n });\n }\n\n sendFileMessage(documentFile);\n }\n },\n });\n }\n\n return sheetItems;\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n previewImage: {\n width: 36,\n height: 36,\n borderRadius: 10,\n marginTop: 2,\n marginRight: 10,\n overflow: 'hidden',\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_uikitUtils","_constants","_useChannelInputItems","_useContext","_SBUUtils","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","SendInput","forwardRef","_ref","ref","VoiceMessageInput","MessageToReplyPreview","AttachmentsButton","onPressSendUserMessage","onPressSendFileMessage","text","onChangeText","onSelectionChange","mentionedUsers","inputDisabled","inputFrozen","inputMuted","channel","messageToReply","setMessageToReply","playerService","recorderService","usePlatformService","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","openSheet","useBottomSheet","toast","useToast","onClose","onDismiss","visible","voiceMessageInputVisible","setVisible","setVoiceMessageInputVisible","useDeferredModalState","messageReplyParams","useIIFE","groupChannel","uikit","isGroupChannel","replyType","parentMessageId","messageId","isReplyToChannel","messageMentionParams","enableMention","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","onFailureToSend","error","show","TOAST","SEND_MSG_ERROR","Logger","sendUserMessage","message","catch","sendFileMessage","file","sendVoiceMessage","durationMills","USER_MUTED_ERROR","CHANNEL_FROZEN_ERROR","metaArrays","MessageMetaArray","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","value","String","VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY","options","extension","sheetItems","useChannelInputItems","getPlaceholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_MUTED","CHANNEL_INPUT_PLACEHOLDER_DISABLED","CHANNEL_INPUT_PLACEHOLDER_REPLY","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","voiceMessageEnabled","enableVoiceMessage","sendButtonVisible","Boolean","trim","createElement","View","style","styles","sendInputContainer","onPress","disabled","TextInput","multiline","disableFullscreenUI","editable","input","placeholder","textToMentionedComponents","VoiceMessageButton","UserMessageSendButton","Modal","disableBackgroundClose","Promise","allSettled","reset","backgroundStyle","justifyContent","type","onSend","_ref2","duration","_ref3","alert","useAlert","colors","useUIKitTheme","onPressWithPermissionCheck","recorderGranted","requestPermission","title","DIALOG","ALERT_PERMISSIONS_TITLE","ALERT_PERMISSIONS_MESSAGE","PERMISSION_MICROPHONE","PERMISSION_APP_NAME","buttons","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","playerGranted","PERMISSION_DEVICE_STORAGE","TouchableOpacity","Icon","color","ui","highlight","active","icon","size","containerStyle","sendIcon","_ref4","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","maxHeight","Platform","select","ios","borderRadius","marginLeft","padding","_default","exports"],"sources":["SendInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport {\n NativeSyntheticEvent,\n Platform,\n TextInput as RNTextInput,\n TextInputSelectionChangeEventData,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport { MentionType, MessageMetaArray } from '@sendbird/chat/message';\nimport {\n Icon,\n Modal,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { Logger, useDeferredModalState, useIIFE } from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY, VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY } from '../../constants';\nimport { useChannelInputItems } from '../../hooks/useChannelInputItems';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport type { FileType } from '../../platform/types';\nimport type { MentionedUser } from '../../types';\nimport type { ChannelInputProps } from './index';\n\ninterface SendInputProps extends ChannelInputProps {\n text: string;\n onChangeText: (val: string) => void;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n mentionedUsers: MentionedUser[];\n}\n\nconst SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(\n {\n VoiceMessageInput,\n MessageToReplyPreview,\n AttachmentsButton,\n onPressSendUserMessage,\n onPressSendFileMessage,\n text,\n onChangeText,\n onSelectionChange,\n mentionedUsers,\n inputDisabled,\n inputFrozen,\n inputMuted,\n channel,\n messageToReply,\n setMessageToReply,\n },\n ref,\n) {\n const { playerService, recorderService } = usePlatformService();\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { openSheet } = useBottomSheet();\n const toast = useToast();\n\n const {\n onClose,\n onDismiss,\n visible: voiceMessageInputVisible,\n setVisible: setVoiceMessageInputVisible,\n } = useDeferredModalState();\n\n const messageReplyParams = useIIFE(() => {\n const { groupChannel } = sbOptions.uikit;\n if (!channel.isGroupChannel() || groupChannel.channel.replyType === 'none' || !messageToReply) return {};\n return {\n parentMessageId: messageToReply.messageId,\n isReplyToChannel: true,\n };\n });\n\n const messageMentionParams = useIIFE(() => {\n const { groupChannel } = sbOptions.uikit;\n if (!channel.isGroupChannel() || !groupChannel.channel.enableMention) return {};\n return {\n mentionType: MentionType.USERS,\n mentionedUserIds: mentionedUsers.map((it) => it.user.userId),\n mentionedMessageTemplate: mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n groupChannel.channel.enableMention,\n ),\n };\n });\n\n const onFailureToSend = (error: Error) => {\n toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.SEND_MSG_ERROR, error);\n };\n\n const sendUserMessage = () => {\n onPressSendUserMessage({\n message: text,\n ...messageMentionParams,\n ...messageReplyParams,\n }).catch(onFailureToSend);\n\n onChangeText('');\n setMessageToReply?.();\n };\n\n const sendFileMessage = (file: FileType) => {\n onPressSendFileMessage({\n file,\n ...messageReplyParams,\n }).catch(onFailureToSend);\n\n setMessageToReply?.();\n };\n\n const sendVoiceMessage = (file: FileType, durationMills: number) => {\n if (inputMuted) {\n toast.show(STRINGS.TOAST.USER_MUTED_ERROR, 'error');\n Logger.error(STRINGS.TOAST.USER_MUTED_ERROR);\n } else if (inputFrozen) {\n toast.show(STRINGS.TOAST.CHANNEL_FROZEN_ERROR, 'error');\n Logger.error(STRINGS.TOAST.CHANNEL_FROZEN_ERROR);\n } else {\n onPressSendFileMessage({\n file,\n metaArrays: [\n new MessageMetaArray({\n key: VOICE_MESSAGE_META_ARRAY_DURATION_KEY,\n value: [String(durationMills)],\n }),\n new MessageMetaArray({\n key: VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY,\n value: [`voice/${recorderService.options.extension}`],\n }),\n ],\n ...messageReplyParams,\n }).catch(onFailureToSend);\n }\n\n onChangeText('');\n setMessageToReply?.();\n };\n\n const sheetItems = useChannelInputItems(channel, sendFileMessage);\n\n const getPlaceholder = () => {\n if (inputMuted) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_MUTED;\n if (inputFrozen) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (inputDisabled) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (messageToReply) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY;\n\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE;\n };\n\n const voiceMessageEnabled = channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.enableVoiceMessage;\n const sendButtonVisible = Boolean(text.trim());\n\n return (\n <View>\n {MessageToReplyPreview && (\n <MessageToReplyPreview messageToReply={messageToReply} setMessageToReply={setMessageToReply} />\n )}\n <View style={styles.sendInputContainer}>\n {AttachmentsButton && <AttachmentsButton onPress={() => openSheet({ sheetItems })} disabled={inputDisabled} />}\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n onSelectionChange={onSelectionChange}\n editable={!inputDisabled}\n onChangeText={onChangeText}\n style={styles.input}\n placeholder={getPlaceholder()}\n >\n {mentionManager.textToMentionedComponents(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n )}\n </TextInput>\n\n {voiceMessageEnabled && (\n <VoiceMessageButton\n visible={!sendButtonVisible}\n disabled={inputDisabled}\n onPress={() => setVoiceMessageInputVisible(true)}\n />\n )}\n <UserMessageSendButton visible={sendButtonVisible} disabled={inputDisabled} onPress={sendUserMessage} />\n {voiceMessageEnabled && VoiceMessageInput && (\n <Modal\n disableBackgroundClose\n onClose={onClose}\n onDismiss={() => {\n onDismiss();\n Promise.allSettled([playerService.reset(), recorderService.reset()]);\n }}\n backgroundStyle={{ justifyContent: 'flex-end' }}\n visible={voiceMessageInputVisible}\n type={'slide-no-gesture'}\n >\n <VoiceMessageInput onClose={onClose} onSend={({ file, duration }) => sendVoiceMessage(file, duration)} />\n </Modal>\n )}\n </View>\n </View>\n );\n});\n\ntype InputButtonProps = { visible: boolean; disabled: boolean; onPress: () => void };\nconst VoiceMessageButton = ({ visible, disabled, onPress }: InputButtonProps) => {\n const { STRINGS } = useLocalization();\n const { alert } = useAlert();\n const { playerService, recorderService } = usePlatformService();\n const { colors } = useUIKitTheme();\n if (!visible) return null;\n\n const onPressWithPermissionCheck = async () => {\n const recorderGranted = await recorderService.requestPermission();\n if (!recorderGranted) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_MICROPHONE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n Logger.error('Failed to request permission for recorder');\n return;\n }\n\n const playerGranted = await playerService.requestPermission();\n if (!playerGranted) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n Logger.error('Failed to request permission for player');\n return;\n }\n\n onPress();\n };\n\n return (\n <TouchableOpacity onPress={onPressWithPermissionCheck} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'audio-on'}\n size={24}\n containerStyle={styles.sendIcon}\n />\n </TouchableOpacity>\n );\n};\nconst UserMessageSendButton = ({ visible, disabled, onPress }: InputButtonProps) => {\n const { colors } = useUIKitTheme();\n if (!visible) return null;\n return (\n <TouchableOpacity onPress={onPress} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'send'}\n size={24}\n containerStyle={styles.sendIcon}\n />\n </TouchableOpacity>\n );\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n sendIcon: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
10
+ var _uikitUtils = require("@sendbird/uikit-utils");
11
+ var _useContext = require("../../hooks/useContext");
12
+ var _useVoiceMessageInput = _interopRequireDefault(require("../../hooks/useVoiceMessageInput"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ const VoiceMessageInput = _ref => {
17
+ let {
18
+ onClose,
19
+ onSend
20
+ } = _ref;
21
+ const {
22
+ STRINGS
23
+ } = (0, _useContext.useLocalization)();
24
+ const {
25
+ colors
26
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
27
+ const {
28
+ actions,
29
+ state
30
+ } = (0, _useVoiceMessageInput.default)({
31
+ onSend: (file, duration) => onSend({
32
+ file,
33
+ duration
34
+ }),
35
+ onClose
36
+ });
37
+ const uiColors = colors.ui.voiceMessageInput.default[state.status !== 'idle' ? 'active' : 'inactive'];
38
+ const onPressCancel = async () => {
39
+ actions.cancel();
40
+ onClose();
41
+ };
42
+ const onPressSend = async () => {
43
+ actions.send();
44
+ onClose();
45
+ };
46
+ const onPressVoiceMessageAction = () => {
47
+ switch (state.status) {
48
+ case 'idle':
49
+ actions.startRecording();
50
+ break;
51
+ case 'recording':
52
+ if (lessThanMinimumDuration) {
53
+ actions.cancel();
54
+ } else {
55
+ actions.stopRecording();
56
+ }
57
+ break;
58
+ case 'recording_completed':
59
+ case 'playing_paused':
60
+ actions.playPlayer();
61
+ break;
62
+ case 'playing':
63
+ actions.pausePlayer();
64
+ break;
65
+ }
66
+ };
67
+ const renderActionIcon = () => {
68
+ switch (state.status) {
69
+ case 'idle':
70
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
71
+ icon: 'recording',
72
+ size: 20,
73
+ color: uiColors.recording
74
+ });
75
+ case 'recording':
76
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
77
+ icon: 'stop',
78
+ size: 20,
79
+ color: uiColors.actionIcon
80
+ });
81
+ case 'recording_completed':
82
+ case 'playing_paused':
83
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
84
+ icon: 'play',
85
+ size: 20,
86
+ color: uiColors.actionIcon
87
+ });
88
+ case 'playing':
89
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
90
+ icon: 'pause',
91
+ size: 20,
92
+ color: uiColors.actionIcon
93
+ });
94
+ }
95
+ };
96
+ const isRecorderState = state.status === 'recording' || state.status === 'recording_completed';
97
+ const lessThanMinimumDuration = state.recordingTime.currentTime < state.recordingTime.minDuration;
98
+ const remainingTime = state.playingTime.duration - state.playingTime.currentTime;
99
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
100
+ backgroundColor: uiColors.background,
101
+ paddingVertical: 24,
102
+ paddingHorizontal: 16,
103
+ style: styles.container
104
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ProgressBar, {
105
+ style: styles.progressBar,
106
+ current: (0, _uikitUtils.conditionChaining)([state.status === 'recording', state.status === 'recording_completed'], [state.recordingTime.currentTime, 0, state.playingTime.currentTime]),
107
+ total: (isRecorderState ? state.recordingTime.maxDuration : state.playingTime.duration) || 1,
108
+ trackColor: uiColors.progressTrack,
109
+ overlay: /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
110
+ flex: 1,
111
+ flexDirection: 'row',
112
+ alignItems: 'center',
113
+ justifyContent: 'flex-end',
114
+ paddingRight: 16
115
+ }, /*#__PURE__*/_react.default.createElement(RecordingLight, {
116
+ visible: state.status === 'recording'
117
+ }), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
118
+ caption1: true,
119
+ style: {
120
+ lineHeight: undefined,
121
+ marginLeft: 6
122
+ },
123
+ color: uiColors.textTime
124
+ }, (0, _uikitUtils.millsToMMSS)(isRecorderState ? state.recordingTime.currentTime : remainingTime)))
125
+ }), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
126
+ height: 34,
127
+ alignItems: 'center',
128
+ justifyContent: 'center'
129
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
130
+ flexDirection: 'row'
131
+ }, /*#__PURE__*/_react.default.createElement(CancelButton, {
132
+ label: STRINGS.LABELS.VOICE_MESSAGE_INPUT_CANCEL,
133
+ onPress: onPressCancel
134
+ }), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
135
+ flex: 1
136
+ }), /*#__PURE__*/_react.default.createElement(SendButton, {
137
+ disabled: state.status === 'idle' || lessThanMinimumDuration,
138
+ onPress: onPressSend
139
+ })), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
140
+ style: {
141
+ position: 'absolute'
142
+ },
143
+ alignItems: 'center',
144
+ justifyContent: 'center'
145
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
146
+ activeOpacity: 0.5,
147
+ onPress: onPressVoiceMessageAction
148
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
149
+ width: 34,
150
+ height: 34,
151
+ borderRadius: 17,
152
+ alignItems: 'center',
153
+ justifyContent: 'center',
154
+ backgroundColor: uiColors.actionIconBackground
155
+ }, renderActionIcon())))));
156
+ };
157
+ const RecordingLight = props => {
158
+ const {
159
+ colors
160
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
161
+ const value = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
162
+ const animation = (0, _react.useRef)(_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(value, {
163
+ toValue: 1,
164
+ duration: 500,
165
+ useNativeDriver: true
166
+ }), _reactNative.Animated.timing(value, {
167
+ toValue: 0,
168
+ duration: 500,
169
+ useNativeDriver: true
170
+ })]))).current;
171
+ (0, _react.useEffect)(() => {
172
+ if (props.visible) animation.start();
173
+ return () => {
174
+ animation.reset();
175
+ };
176
+ }, [props.visible]);
177
+ if (!props.visible) return null;
178
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
179
+ style: {
180
+ width: 12,
181
+ height: 12,
182
+ borderRadius: 6,
183
+ opacity: value,
184
+ backgroundColor: colors.ui.voiceMessageInput.default.active.recording
185
+ }
186
+ });
187
+ };
188
+ const CancelButton = props => {
189
+ const {
190
+ colors
191
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
192
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
193
+ activeOpacity: 0.8,
194
+ onPress: props.onPress
195
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
196
+ paddingHorizontal: 12,
197
+ height: '100%',
198
+ alignItems: 'center',
199
+ justifyContent: 'center'
200
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
201
+ button: true,
202
+ color: colors.ui.voiceMessageInput.default.active.textCancel,
203
+ numberOfLines: 1
204
+ }, props.label)));
205
+ };
206
+ const SendButton = props => {
207
+ const {
208
+ colors
209
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
210
+ const uiColors = colors.ui.voiceMessageInput.default[props.disabled ? 'inactive' : 'active'];
211
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
212
+ disabled: props.disabled,
213
+ activeOpacity: 0.8,
214
+ onPress: props.onPress
215
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
216
+ backgroundColor: uiColors.sendIconBackground,
217
+ padding: 7,
218
+ borderRadius: 40
219
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
220
+ icon: 'send',
221
+ size: 20,
222
+ color: uiColors.sendIcon
223
+ })));
224
+ };
225
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
226
+ container: {
227
+ borderTopLeftRadius: 8,
228
+ borderTopRightRadius: 8
229
+ },
230
+ progressBar: {
231
+ height: 36,
232
+ marginBottom: 16,
233
+ borderRadius: 18
234
+ }
235
+ });
236
+ var _default = VoiceMessageInput;
237
+ exports.default = _default;
238
+ //# sourceMappingURL=VoiceMessageInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useVoiceMessageInput","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","VoiceMessageInput","_ref","onClose","onSend","STRINGS","useLocalization","colors","useUIKitTheme","actions","state","useVoiceMessageInput","file","duration","uiColors","ui","voiceMessageInput","status","onPressCancel","cancel","onPressSend","send","onPressVoiceMessageAction","startRecording","lessThanMinimumDuration","stopRecording","playPlayer","pausePlayer","renderActionIcon","createElement","Icon","icon","size","color","recording","actionIcon","isRecorderState","recordingTime","currentTime","minDuration","remainingTime","playingTime","Box","backgroundColor","background","paddingVertical","paddingHorizontal","style","styles","container","ProgressBar","progressBar","current","conditionChaining","total","maxDuration","trackColor","progressTrack","overlay","flex","flexDirection","alignItems","justifyContent","paddingRight","RecordingLight","visible","Text","caption1","lineHeight","undefined","marginLeft","textTime","millsToMMSS","height","CancelButton","label","LABELS","VOICE_MESSAGE_INPUT_CANCEL","onPress","SendButton","disabled","position","PressBox","activeOpacity","width","borderRadius","actionIconBackground","props","value","useRef","Animated","Value","animation","loop","sequence","timing","toValue","useNativeDriver","useEffect","start","reset","View","opacity","active","button","textCancel","numberOfLines","sendIconBackground","padding","sendIcon","createStyleSheet","borderTopLeftRadius","borderTopRightRadius","marginBottom","_default","exports"],"sources":["VoiceMessageInput.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated } from 'react-native';\n\nimport {\n Box,\n Icon,\n PressBox,\n ProgressBar,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining, millsToMMSS } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\nimport useVoiceMessageInput from '../../hooks/useVoiceMessageInput';\nimport type { FileType } from '../../platform/types';\n\nexport type VoiceMessageInputProps = {\n onClose: () => Promise<void>;\n onSend: (params: { file: FileType; duration: number }) => void;\n};\n\nconst VoiceMessageInput = ({ onClose, onSend }: VoiceMessageInputProps) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { actions, state } = useVoiceMessageInput({\n onSend: (file, duration) => onSend({ file, duration }),\n onClose,\n });\n\n const uiColors = colors.ui.voiceMessageInput.default[state.status !== 'idle' ? 'active' : 'inactive'];\n\n const onPressCancel = async () => {\n actions.cancel();\n onClose();\n };\n\n const onPressSend = async () => {\n actions.send();\n onClose();\n };\n\n const onPressVoiceMessageAction = () => {\n switch (state.status) {\n case 'idle':\n actions.startRecording();\n break;\n case 'recording':\n if (lessThanMinimumDuration) {\n actions.cancel();\n } else {\n actions.stopRecording();\n }\n break;\n case 'recording_completed':\n case 'playing_paused':\n actions.playPlayer();\n break;\n case 'playing':\n actions.pausePlayer();\n break;\n }\n };\n const renderActionIcon = () => {\n switch (state.status) {\n case 'idle':\n return <Icon icon={'recording'} size={20} color={uiColors.recording} />;\n case 'recording':\n return <Icon icon={'stop'} size={20} color={uiColors.actionIcon} />;\n case 'recording_completed':\n case 'playing_paused':\n return <Icon icon={'play'} size={20} color={uiColors.actionIcon} />;\n case 'playing':\n return <Icon icon={'pause'} size={20} color={uiColors.actionIcon} />;\n }\n };\n\n const isRecorderState = state.status === 'recording' || state.status === 'recording_completed';\n const lessThanMinimumDuration = state.recordingTime.currentTime < state.recordingTime.minDuration;\n const remainingTime = state.playingTime.duration - state.playingTime.currentTime;\n\n return (\n <Box backgroundColor={uiColors.background} paddingVertical={24} paddingHorizontal={16} style={styles.container}>\n {/** Progress bar **/}\n <ProgressBar\n style={styles.progressBar}\n current={conditionChaining(\n [state.status === 'recording', state.status === 'recording_completed'],\n [state.recordingTime.currentTime, 0, state.playingTime.currentTime],\n )}\n total={(isRecorderState ? state.recordingTime.maxDuration : state.playingTime.duration) || 1}\n trackColor={uiColors.progressTrack}\n overlay={\n <Box flex={1} flexDirection={'row'} alignItems={'center'} justifyContent={'flex-end'} paddingRight={16}>\n <RecordingLight visible={state.status === 'recording'} />\n <Text caption1 style={{ lineHeight: undefined, marginLeft: 6 }} color={uiColors.textTime}>\n {millsToMMSS(isRecorderState ? state.recordingTime.currentTime : remainingTime)}\n </Text>\n </Box>\n }\n />\n\n <Box height={34} alignItems={'center'} justifyContent={'center'}>\n {/** Cancel / Send **/}\n <Box flexDirection={'row'}>\n <CancelButton label={STRINGS.LABELS.VOICE_MESSAGE_INPUT_CANCEL} onPress={onPressCancel} />\n <Box flex={1} />\n <SendButton disabled={state.status === 'idle' || lessThanMinimumDuration} onPress={onPressSend} />\n </Box>\n\n {/** Record / Stop / Play / Pause **/}\n <Box style={{ position: 'absolute' }} alignItems={'center'} justifyContent={'center'}>\n <PressBox activeOpacity={0.5} onPress={onPressVoiceMessageAction}>\n <Box\n width={34}\n height={34}\n borderRadius={17}\n alignItems={'center'}\n justifyContent={'center'}\n backgroundColor={uiColors.actionIconBackground}\n >\n {renderActionIcon()}\n </Box>\n </PressBox>\n </Box>\n </Box>\n </Box>\n );\n};\n\nconst RecordingLight = (props: { visible: boolean }) => {\n const { colors } = useUIKitTheme();\n\n const value = useRef(new Animated.Value(0)).current;\n const animation = useRef(\n Animated.loop(\n Animated.sequence([\n Animated.timing(value, { toValue: 1, duration: 500, useNativeDriver: true }),\n Animated.timing(value, { toValue: 0, duration: 500, useNativeDriver: true }),\n ]),\n ),\n ).current;\n\n useEffect(() => {\n if (props.visible) animation.start();\n return () => {\n animation.reset();\n };\n }, [props.visible]);\n\n if (!props.visible) return null;\n return (\n <Animated.View\n style={{\n width: 12,\n height: 12,\n borderRadius: 6,\n opacity: value,\n backgroundColor: colors.ui.voiceMessageInput.default.active.recording,\n }}\n />\n );\n};\n\nconst CancelButton = (props: { onPress: () => void; label: string }) => {\n const { colors } = useUIKitTheme();\n\n return (\n <PressBox activeOpacity={0.8} onPress={props.onPress}>\n <Box paddingHorizontal={12} height={'100%'} alignItems={'center'} justifyContent={'center'}>\n <Text button color={colors.ui.voiceMessageInput.default.active.textCancel} numberOfLines={1}>\n {props.label}\n </Text>\n </Box>\n </PressBox>\n );\n};\n\nconst SendButton = (props: { onPress: () => void; disabled: boolean }) => {\n const { colors } = useUIKitTheme();\n\n const uiColors = colors.ui.voiceMessageInput.default[props.disabled ? 'inactive' : 'active'];\n\n return (\n <PressBox disabled={props.disabled} activeOpacity={0.8} onPress={props.onPress}>\n <Box backgroundColor={uiColors.sendIconBackground} padding={7} borderRadius={40}>\n <Icon icon={'send'} size={20} color={uiColors.sendIcon} />\n </Box>\n </PressBox>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n },\n progressBar: {\n height: 36,\n marginBottom: 16,\n borderRadius: 18,\n },\n});\n\nexport default VoiceMessageInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,2BAAA,GAAAF,OAAA;AASA,IAAAG,WAAA,GAAAH,OAAA;AAEA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAC,sBAAA,CAAAN,OAAA;AAAoE,SAAAM,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAZ,wBAAAQ,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAQpE,MAAMW,iBAAiB,GAAGC,IAAA,IAAiD;EAAA,IAAhD;IAAEC,OAAO;IAAEC;EAA+B,CAAC,GAAAF,IAAA;EACpE,MAAM;IAAEG;EAAQ,CAAC,GAAG,IAAAC,2BAAe,GAAE;EACrC,MAAM;IAAEC;EAAO,CAAC,GAAG,IAAAC,yCAAa,GAAE;EAClC,MAAM;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAG,IAAAC,6BAAoB,EAAC;IAC9CP,MAAM,EAAEA,CAACQ,IAAI,EAAEC,QAAQ,KAAKT,MAAM,CAAC;MAAEQ,IAAI;MAAEC;IAAS,CAAC,CAAC;IACtDV;EACF,CAAC,CAAC;EAEF,MAAMW,QAAQ,GAAGP,MAAM,CAACQ,EAAE,CAACC,iBAAiB,CAACnC,OAAO,CAAC6B,KAAK,CAACO,MAAM,KAAK,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;EAErG,MAAMC,aAAa,GAAG,MAAAA,CAAA,KAAY;IAChCT,OAAO,CAACU,MAAM,EAAE;IAChBhB,OAAO,EAAE;EACX,CAAC;EAED,MAAMiB,WAAW,GAAG,MAAAA,CAAA,KAAY;IAC9BX,OAAO,CAACY,IAAI,EAAE;IACdlB,OAAO,EAAE;EACX,CAAC;EAED,MAAMmB,yBAAyB,GAAGA,CAAA,KAAM;IACtC,QAAQZ,KAAK,CAACO,MAAM;MAClB,KAAK,MAAM;QACTR,OAAO,CAACc,cAAc,EAAE;QACxB;MACF,KAAK,WAAW;QACd,IAAIC,uBAAuB,EAAE;UAC3Bf,OAAO,CAACU,MAAM,EAAE;QAClB,CAAC,MAAM;UACLV,OAAO,CAACgB,aAAa,EAAE;QACzB;QACA;MACF,KAAK,qBAAqB;MAC1B,KAAK,gBAAgB;QACnBhB,OAAO,CAACiB,UAAU,EAAE;QACpB;MACF,KAAK,SAAS;QACZjB,OAAO,CAACkB,WAAW,EAAE;QACrB;IAAM;EAEZ,CAAC;EACD,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;IAC7B,QAAQlB,KAAK,CAACO,MAAM;MAClB,KAAK,MAAM;QACT,oBAAO/C,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAwD,IAAI;UAACC,IAAI,EAAE,WAAY;UAACC,IAAI,EAAE,EAAG;UAACC,KAAK,EAAEnB,QAAQ,CAACoB;QAAU,EAAG;MACzE,KAAK,WAAW;QACd,oBAAOhE,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAwD,IAAI;UAACC,IAAI,EAAE,MAAO;UAACC,IAAI,EAAE,EAAG;UAACC,KAAK,EAAEnB,QAAQ,CAACqB;QAAW,EAAG;MACrE,KAAK,qBAAqB;MAC1B,KAAK,gBAAgB;QACnB,oBAAOjE,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAwD,IAAI;UAACC,IAAI,EAAE,MAAO;UAACC,IAAI,EAAE,EAAG;UAACC,KAAK,EAAEnB,QAAQ,CAACqB;QAAW,EAAG;MACrE,KAAK,SAAS;QACZ,oBAAOjE,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAwD,IAAI;UAACC,IAAI,EAAE,OAAQ;UAACC,IAAI,EAAE,EAAG;UAACC,KAAK,EAAEnB,QAAQ,CAACqB;QAAW,EAAG;IAAC;EAE3E,CAAC;EAED,MAAMC,eAAe,GAAG1B,KAAK,CAACO,MAAM,KAAK,WAAW,IAAIP,KAAK,CAACO,MAAM,KAAK,qBAAqB;EAC9F,MAAMO,uBAAuB,GAAGd,KAAK,CAAC2B,aAAa,CAACC,WAAW,GAAG5B,KAAK,CAAC2B,aAAa,CAACE,WAAW;EACjG,MAAMC,aAAa,GAAG9B,KAAK,CAAC+B,WAAW,CAAC5B,QAAQ,GAAGH,KAAK,CAAC+B,WAAW,CAACH,WAAW;EAEhF,oBACEpE,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAoE,GAAG;IAACC,eAAe,EAAE7B,QAAQ,CAAC8B,UAAW;IAACC,eAAe,EAAE,EAAG;IAACC,iBAAiB,EAAE,EAAG;IAACC,KAAK,EAAEC,MAAM,CAACC;EAAU,gBAE7G/E,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAA4E,WAAW;IACVH,KAAK,EAAEC,MAAM,CAACG,WAAY;IAC1BC,OAAO,EAAE,IAAAC,6BAAiB,EACxB,CAAC3C,KAAK,CAACO,MAAM,KAAK,WAAW,EAAEP,KAAK,CAACO,MAAM,KAAK,qBAAqB,CAAC,EACtE,CAACP,KAAK,CAAC2B,aAAa,CAACC,WAAW,EAAE,CAAC,EAAE5B,KAAK,CAAC+B,WAAW,CAACH,WAAW,CAAC,CACnE;IACFgB,KAAK,EAAE,CAAClB,eAAe,GAAG1B,KAAK,CAAC2B,aAAa,CAACkB,WAAW,GAAG7C,KAAK,CAAC+B,WAAW,CAAC5B,QAAQ,KAAK,CAAE;IAC7F2C,UAAU,EAAE1C,QAAQ,CAAC2C,aAAc;IACnCC,OAAO,eACLxF,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAoE,GAAG;MAACiB,IAAI,EAAE,CAAE;MAACC,aAAa,EAAE,KAAM;MAACC,UAAU,EAAE,QAAS;MAACC,cAAc,EAAE,UAAW;MAACC,YAAY,EAAE;IAAG,gBACrG7F,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACmC,cAAc;MAACC,OAAO,EAAEvD,KAAK,CAACO,MAAM,KAAK;IAAY,EAAG,eACzD/C,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAA4F,IAAI;MAACC,QAAQ;MAACpB,KAAK,EAAE;QAAEqB,UAAU,EAAEC,SAAS;QAAEC,UAAU,EAAE;MAAE,CAAE;MAACrC,KAAK,EAAEnB,QAAQ,CAACyD;IAAS,GACtF,IAAAC,uBAAW,EAACpC,eAAe,GAAG1B,KAAK,CAAC2B,aAAa,CAACC,WAAW,GAAGE,aAAa,CAAC,CAC1E;EAEV,EACD,eAEFtE,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAoE,GAAG;IAAC+B,MAAM,EAAE,EAAG;IAACZ,UAAU,EAAE,QAAS;IAACC,cAAc,EAAE;EAAS,gBAE9D5F,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAoE,GAAG;IAACkB,aAAa,EAAE;EAAM,gBACxB1F,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAAC6C,YAAY;IAACC,KAAK,EAAEtE,OAAO,CAACuE,MAAM,CAACC,0BAA2B;IAACC,OAAO,EAAE5D;EAAc,EAAG,eAC1FhD,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAoE,GAAG;IAACiB,IAAI,EAAE;EAAE,EAAG,eAChBzF,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACkD,UAAU;IAACC,QAAQ,EAAEtE,KAAK,CAACO,MAAM,KAAK,MAAM,IAAIO,uBAAwB;IAACsD,OAAO,EAAE1D;EAAY,EAAG,CAC9F,eAGNlD,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAoE,GAAG;IAACK,KAAK,EAAE;MAAEkC,QAAQ,EAAE;IAAW,CAAE;IAACpB,UAAU,EAAE,QAAS;IAACC,cAAc,EAAE;EAAS,gBACnF5F,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAA4G,QAAQ;IAACC,aAAa,EAAE,GAAI;IAACL,OAAO,EAAExD;EAA0B,gBAC/DpD,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAoE,GAAG;IACF0C,KAAK,EAAE,EAAG;IACVX,MAAM,EAAE,EAAG;IACXY,YAAY,EAAE,EAAG;IACjBxB,UAAU,EAAE,QAAS;IACrBC,cAAc,EAAE,QAAS;IACzBnB,eAAe,EAAE7B,QAAQ,CAACwE;EAAqB,GAE9C1D,gBAAgB,EAAE,CACf,CACG,CACP,CACF,CACF;AAEV,CAAC;AAED,MAAMoC,cAAc,GAAIuB,KAA2B,IAAK;EACtD,MAAM;IAAEhF;EAAO,CAAC,GAAG,IAAAC,yCAAa,GAAE;EAElC,MAAMgF,KAAK,GAAG,IAAAC,aAAM,EAAC,IAAIC,qBAAQ,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAACvC,OAAO;EACnD,MAAMwC,SAAS,GAAG,IAAAH,aAAM,EACtBC,qBAAQ,CAACG,IAAI,CACXH,qBAAQ,CAACI,QAAQ,CAAC,CAChBJ,qBAAQ,CAACK,MAAM,CAACP,KAAK,EAAE;IAAEQ,OAAO,EAAE,CAAC;IAAEnF,QAAQ,EAAE,GAAG;IAAEoF,eAAe,EAAE;EAAK,CAAC,CAAC,EAC5EP,qBAAQ,CAACK,MAAM,CAACP,KAAK,EAAE;IAAEQ,OAAO,EAAE,CAAC;IAAEnF,QAAQ,EAAE,GAAG;IAAEoF,eAAe,EAAE;EAAK,CAAC,CAAC,CAC7E,CAAC,CACH,CACF,CAAC7C,OAAO;EAET,IAAA8C,gBAAS,EAAC,MAAM;IACd,IAAIX,KAAK,CAACtB,OAAO,EAAE2B,SAAS,CAACO,KAAK,EAAE;IACpC,OAAO,MAAM;MACXP,SAAS,CAACQ,KAAK,EAAE;IACnB,CAAC;EACH,CAAC,EAAE,CAACb,KAAK,CAACtB,OAAO,CAAC,CAAC;EAEnB,IAAI,CAACsB,KAAK,CAACtB,OAAO,EAAE,OAAO,IAAI;EAC/B,oBACE/F,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACxD,YAAA,CAAAqH,QAAQ,CAACW,IAAI;IACZtD,KAAK,EAAE;MACLqC,KAAK,EAAE,EAAE;MACTX,MAAM,EAAE,EAAE;MACVY,YAAY,EAAE,CAAC;MACfiB,OAAO,EAAEd,KAAK;MACd7C,eAAe,EAAEpC,MAAM,CAACQ,EAAE,CAACC,iBAAiB,CAACnC,OAAO,CAAC0H,MAAM,CAACrE;IAC9D;EAAE,EACF;AAEN,CAAC;AAED,MAAMwC,YAAY,GAAIa,KAA6C,IAAK;EACtE,MAAM;IAAEhF;EAAO,CAAC,GAAG,IAAAC,yCAAa,GAAE;EAElC,oBACEtC,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAA4G,QAAQ;IAACC,aAAa,EAAE,GAAI;IAACL,OAAO,EAAES,KAAK,CAACT;EAAQ,gBACnD5G,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAoE,GAAG;IAACI,iBAAiB,EAAE,EAAG;IAAC2B,MAAM,EAAE,MAAO;IAACZ,UAAU,EAAE,QAAS;IAACC,cAAc,EAAE;EAAS,gBACzF5F,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAA4F,IAAI;IAACsC,MAAM;IAACvE,KAAK,EAAE1B,MAAM,CAACQ,EAAE,CAACC,iBAAiB,CAACnC,OAAO,CAAC0H,MAAM,CAACE,UAAW;IAACC,aAAa,EAAE;EAAE,GACzFnB,KAAK,CAACZ,KAAK,CACP,CACH,CACG;AAEf,CAAC;AAED,MAAMI,UAAU,GAAIQ,KAAiD,IAAK;EACxE,MAAM;IAAEhF;EAAO,CAAC,GAAG,IAAAC,yCAAa,GAAE;EAElC,MAAMM,QAAQ,GAAGP,MAAM,CAACQ,EAAE,CAACC,iBAAiB,CAACnC,OAAO,CAAC0G,KAAK,CAACP,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;EAE5F,oBACE9G,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAA4G,QAAQ;IAACF,QAAQ,EAAEO,KAAK,CAACP,QAAS;IAACG,aAAa,EAAE,GAAI;IAACL,OAAO,EAAES,KAAK,CAACT;EAAQ,gBAC7E5G,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAoE,GAAG;IAACC,eAAe,EAAE7B,QAAQ,CAAC6F,kBAAmB;IAACC,OAAO,EAAE,CAAE;IAACvB,YAAY,EAAE;EAAG,gBAC9EnH,MAAA,CAAAW,OAAA,CAAAgD,aAAA,CAACvD,2BAAA,CAAAwD,IAAI;IAACC,IAAI,EAAE,MAAO;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAEnB,QAAQ,CAAC+F;EAAS,EAAG,CACtD,CACG;AAEf,CAAC;AAED,MAAM7D,MAAM,GAAG,IAAA8D,4CAAgB,EAAC;EAC9B7D,SAAS,EAAE;IACT8D,mBAAmB,EAAE,CAAC;IACtBC,oBAAoB,EAAE;EACxB,CAAC;EACD7D,WAAW,EAAE;IACXsB,MAAM,EAAE,EAAE;IACVwC,YAAY,EAAE,EAAE;IAChB5B,YAAY,EAAE;EAChB;AACF,CAAC,CAAC;AAAC,IAAA6B,QAAA,GAEYjH,iBAAiB;AAAAkH,OAAA,CAAAtI,OAAA,GAAAqI,QAAA"}
@@ -13,7 +13,9 @@ var _useContext = require("../../hooks/useContext");
13
13
  var _useMentionTextInput = _interopRequireDefault(require("../../hooks/useMentionTextInput"));
14
14
  var _AttachmentsButton = _interopRequireDefault(require("./AttachmentsButton"));
15
15
  var _EditInput = _interopRequireDefault(require("./EditInput"));
16
+ var _MessageToReplyPreview = require("./MessageToReplyPreview");
16
17
  var _SendInput = _interopRequireDefault(require("./SendInput"));
18
+ var _VoiceMessageInput = _interopRequireDefault(require("./VoiceMessageInput"));
17
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
21
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -108,7 +110,9 @@ const ChannelInput = props => {
108
110
  onChangeText: onChangeText,
109
111
  onSelectionChange: onSelectionChange,
110
112
  mentionedUsers: mentionedUsers,
111
- AttachmentsButton: props.AttachmentsButton ?? _AttachmentsButton.default
113
+ VoiceMessageInput: props.VoiceMessageInput ?? _VoiceMessageInput.default,
114
+ AttachmentsButton: props.AttachmentsButton ?? _AttachmentsButton.default,
115
+ MessageToReplyPreview: props.MessageToReplyPreview ?? _MessageToReplyPreview.MessageToReplyPreview
112
116
  })), inputMode === 'edit' && messageToEdit && /*#__PURE__*/_react.default.createElement(_EditInput.default, _extends({}, props, {
113
117
  key: inputKeyToRemount,
114
118
  ref: textInputRef,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useMentionTextInput","_interopRequireDefault","_AttachmentsButton","_EditInput","_SendInput","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","AUTO_FOCUS","Platform","select","ios","android","KEYBOARD_AVOID_VIEW_BEHAVIOR","undefined","GET_INPUT_KEY","shouldReset","ChannelInput","props","channel","keyboardAvoidOffset","messageToEdit","setMessageToEdit","top","left","right","bottom","useSafeAreaInsets","colors","useUIKitTheme","sbOptions","mentionManager","useSendbirdChat","selection","onSelectionChange","textInputRef","text","onChangeText","mentionedUsers","useMentionTextInput","inputMode","useIIFE","isFileMessage","mentionAvailable","uikit","groupChannel","enableMention","isGroupChannel","isBroadcast","inputKeyToRemount","inputHeight","setInputHeight","useState","styles","inputDefault","height","useTypingTrigger","useTextClearOnDisabled","inputDisabled","useAutoFocusOnEditMode","onPressToMention","user","searchStringRange","mentionedMessageText","asMentionedMessageText","range","start","end","replace","shouldRenderInput","createElement","SafeAreaBottom","Fragment","KeyboardAvoidingView","keyboardVerticalOffset","behavior","View","style","paddingLeft","paddingRight","backgroundColor","background","onLayout","e","nativeEvent","layout","inputContainer","ref","AttachmentsButton","autoFocus","SuggestedMentionList","topInset","bottomInset","useEffect","endTyping","startTyping","setText","chatDisabled","isUserMessage","setTimeout","_textInputRef$current","current","focus","_ref","createStyleSheet","justifyContent","width","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { MutableRefObject, useEffect, useState } from 'react';\nimport { KeyboardAvoidingView, Platform, TextInput, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdMember,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n replace,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\nimport useMentionTextInput from '../../hooks/useMentionTextInput';\nimport type { MentionedUser, Range } from '../../types';\nimport type { AttachmentsButtonProps } from './AttachmentsButton';\nimport AttachmentsButton from './AttachmentsButton';\nimport EditInput from './EditInput';\nimport SendInput from './SendInput';\n\nexport type SuggestedMentionListProps = {\n text: string;\n selection: Range;\n topInset: number;\n bottomInset: number;\n inputHeight: number;\n onPressToMention: (user: SendbirdMember, searchStringRange: Range) => void;\n mentionedUsers: MentionedUser[];\n};\n\nexport type ChannelInputProps = {\n // default\n channel: SendbirdBaseChannel;\n shouldRenderInput: boolean;\n keyboardAvoidOffset: number;\n\n // default actions\n onPressSendUserMessage: (params: SendbirdUserMessageCreateParams) => Promise<void>;\n onPressSendFileMessage: (params: SendbirdFileMessageCreateParams) => Promise<void>;\n onPressUpdateUserMessage: (message: SendbirdUserMessage, params: SendbirdUserMessageUpdateParams) => Promise<void>;\n onPressUpdateFileMessage: (message: SendbirdFileMessage, params: SendbirdFileMessageUpdateParams) => Promise<void>;\n\n // input status\n inputFrozen: boolean;\n inputMuted: boolean;\n inputDisabled: boolean;\n\n // edit\n messageToEdit: undefined | SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;\n\n // reply - only available on group channel\n messageToReply?: undefined | SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply?: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;\n\n // mention\n SuggestedMentionList?: (props: SuggestedMentionListProps) => JSX.Element | null;\n\n // sub-components\n AttachmentsButton?: (props: AttachmentsButtonProps) => JSX.Element | null;\n};\n\nconst AUTO_FOCUS = Platform.select({ ios: false, android: true, default: false });\nconst KEYBOARD_AVOID_VIEW_BEHAVIOR = Platform.select({ ios: 'padding' as const, default: undefined });\n\n// FIXME(iOS): Dynamic style does not work properly when typing the CJK. (https://github.com/facebook/react-native/issues/26107)\n// To workaround temporarily, change the key for re-mount the component.\n// -> This will affect to keyboard blur when add/remove first mentioned user.\nconst GET_INPUT_KEY = (shouldReset: boolean) => (shouldReset ? 'uikit-input-clear' : 'uikit-input');\n\n// TODO: Refactor 'Edit' mode to clearly\nconst ChannelInput = (props: ChannelInputProps) => {\n const { channel, keyboardAvoidOffset, messageToEdit, setMessageToEdit } = props;\n\n const { top, left, right, bottom } = useSafeAreaInsets();\n const { colors } = useUIKitTheme();\n const { sbOptions, mentionManager } = useSendbirdChat();\n\n const { selection, onSelectionChange, textInputRef, text, onChangeText, mentionedUsers } = useMentionTextInput({\n messageToEdit,\n });\n const inputMode = useIIFE(() => {\n if (messageToEdit && !messageToEdit.isFileMessage()) return 'edit';\n else return 'send';\n });\n\n const mentionAvailable =\n sbOptions.uikit.groupChannel.channel.enableMention && channel.isGroupChannel() && !channel.isBroadcast;\n const inputKeyToRemount = GET_INPUT_KEY(mentionAvailable ? mentionedUsers.length === 0 : false);\n\n const [inputHeight, setInputHeight] = useState(styles.inputDefault.height);\n\n useTypingTrigger(text, channel);\n useTextClearOnDisabled(onChangeText, props.inputDisabled);\n useAutoFocusOnEditMode(textInputRef, messageToEdit);\n\n const onPressToMention = (user: SendbirdMember, searchStringRange: Range) => {\n const mentionedMessageText = mentionManager.asMentionedMessageText(user, true);\n const range = { start: searchStringRange.start, end: searchStringRange.start + mentionedMessageText.length - 1 };\n\n onChangeText(replace(text, searchStringRange.start, searchStringRange.end, mentionedMessageText), { user, range });\n };\n\n if (!props.shouldRenderInput) {\n return <SafeAreaBottom height={bottom} />;\n }\n\n return (\n <>\n <KeyboardAvoidingView\n keyboardVerticalOffset={-bottom + keyboardAvoidOffset}\n behavior={KEYBOARD_AVOID_VIEW_BEHAVIOR}\n >\n <View style={{ paddingLeft: left, paddingRight: right, backgroundColor: colors.background }}>\n <View onLayout={(e) => setInputHeight(e.nativeEvent.layout.height)} style={styles.inputContainer}>\n {inputMode === 'send' && (\n <SendInput\n {...props}\n key={inputKeyToRemount}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n AttachmentsButton={props.AttachmentsButton ?? AttachmentsButton}\n />\n )}\n {inputMode === 'edit' && messageToEdit && (\n <EditInput\n {...props}\n key={inputKeyToRemount}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n autoFocus={AUTO_FOCUS}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n messageToEdit={messageToEdit}\n setMessageToEdit={setMessageToEdit}\n />\n )}\n </View>\n <SafeAreaBottom height={bottom} />\n </View>\n </KeyboardAvoidingView>\n {mentionAvailable && props.SuggestedMentionList && (\n <props.SuggestedMentionList\n text={text}\n selection={selection}\n inputHeight={inputHeight}\n topInset={top}\n bottomInset={bottom}\n onPressToMention={onPressToMention}\n mentionedUsers={mentionedUsers}\n />\n )}\n </>\n );\n};\n\nconst useTypingTrigger = (text: string, channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel()) {\n useEffect(() => {\n if (text.length === 0) channel.endTyping();\n else channel.startTyping();\n }, [text]);\n }\n};\n\nconst useTextClearOnDisabled = (setText: (val: string) => void, chatDisabled: boolean) => {\n useEffect(() => {\n if (chatDisabled) setText('');\n }, [chatDisabled]);\n};\n\nconst useAutoFocusOnEditMode = (\n textInputRef: MutableRefObject<TextInput | undefined>,\n messageToEdit?: SendbirdBaseMessage,\n) => {\n useEffect(() => {\n if (messageToEdit?.isUserMessage()) {\n if (!AUTO_FOCUS) setTimeout(() => textInputRef.current?.focus(), 500);\n }\n }, [messageToEdit]);\n};\n\nconst SafeAreaBottom = ({ height }: { height: number }) => {\n return <View style={{ height }} />;\n};\n\nconst styles = createStyleSheet({\n inputContainer: {\n justifyContent: 'center',\n width: '100%',\n },\n inputDefault: {\n height: 56,\n },\n});\n\nexport default React.memo(ChannelInput);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useMentionTextInput","_interopRequireDefault","_AttachmentsButton","_EditInput","_MessageToReplyPreview","_SendInput","_VoiceMessageInput","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","AUTO_FOCUS","Platform","select","ios","android","KEYBOARD_AVOID_VIEW_BEHAVIOR","undefined","GET_INPUT_KEY","shouldReset","ChannelInput","props","channel","keyboardAvoidOffset","messageToEdit","setMessageToEdit","top","left","right","bottom","useSafeAreaInsets","colors","useUIKitTheme","sbOptions","mentionManager","useSendbirdChat","selection","onSelectionChange","textInputRef","text","onChangeText","mentionedUsers","useMentionTextInput","inputMode","useIIFE","isFileMessage","mentionAvailable","uikit","groupChannel","enableMention","isGroupChannel","isBroadcast","inputKeyToRemount","inputHeight","setInputHeight","useState","styles","inputDefault","height","useTypingTrigger","useTextClearOnDisabled","inputDisabled","useAutoFocusOnEditMode","onPressToMention","user","searchStringRange","mentionedMessageText","asMentionedMessageText","range","start","end","replace","shouldRenderInput","createElement","SafeAreaBottom","Fragment","KeyboardAvoidingView","keyboardVerticalOffset","behavior","View","style","paddingLeft","paddingRight","backgroundColor","background","onLayout","e","nativeEvent","layout","inputContainer","ref","VoiceMessageInput","AttachmentsButton","MessageToReplyPreview","autoFocus","SuggestedMentionList","topInset","bottomInset","useEffect","endTyping","startTyping","setText","chatDisabled","isUserMessage","setTimeout","_textInputRef$current","current","focus","_ref","createStyleSheet","justifyContent","width","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { KeyboardAvoidingView, Platform, TextInput, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdMember,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n replace,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\nimport useMentionTextInput from '../../hooks/useMentionTextInput';\nimport type { MentionedUser, Range } from '../../types';\nimport type { AttachmentsButtonProps } from './AttachmentsButton';\nimport AttachmentsButton from './AttachmentsButton';\nimport EditInput from './EditInput';\nimport type { MessageToReplyPreviewProps } from './MessageToReplyPreview';\nimport { MessageToReplyPreview } from './MessageToReplyPreview';\nimport SendInput from './SendInput';\nimport VoiceMessageInput, { VoiceMessageInputProps } from './VoiceMessageInput';\n\nexport type SuggestedMentionListProps = {\n text: string;\n selection: Range;\n topInset: number;\n bottomInset: number;\n inputHeight: number;\n onPressToMention: (user: SendbirdMember, searchStringRange: Range) => void;\n mentionedUsers: MentionedUser[];\n};\n\nexport type ChannelInputProps = {\n // default\n channel: SendbirdBaseChannel;\n shouldRenderInput: boolean;\n keyboardAvoidOffset: number;\n\n // default actions\n onPressSendUserMessage: (params: SendbirdUserMessageCreateParams) => Promise<void>;\n onPressSendFileMessage: (params: SendbirdFileMessageCreateParams) => Promise<void>;\n onPressUpdateUserMessage: (message: SendbirdUserMessage, params: SendbirdUserMessageUpdateParams) => Promise<void>;\n onPressUpdateFileMessage: (message: SendbirdFileMessage, params: SendbirdFileMessageUpdateParams) => Promise<void>;\n\n // input status\n inputFrozen: boolean;\n inputMuted: boolean;\n inputDisabled: boolean;\n\n // edit\n messageToEdit: undefined | SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;\n\n // reply - only available on group channel\n messageToReply?: undefined | SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply?: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;\n\n // mention\n SuggestedMentionList?: (props: SuggestedMentionListProps) => React.ReactNode | null;\n\n // sub-components\n AttachmentsButton?: (props: AttachmentsButtonProps) => React.ReactNode | null;\n MessageToReplyPreview?: (props: MessageToReplyPreviewProps) => React.ReactNode | null;\n VoiceMessageInput?: (props: VoiceMessageInputProps) => React.ReactNode | null;\n};\n\nconst AUTO_FOCUS = Platform.select({ ios: false, android: true, default: false });\nconst KEYBOARD_AVOID_VIEW_BEHAVIOR = Platform.select({ ios: 'padding' as const, default: undefined });\n\n// FIXME(iOS): Dynamic style does not work properly when typing the CJK. (https://github.com/facebook/react-native/issues/26107)\n// To workaround temporarily, change the key for re-mount the component.\n// -> This will affect to keyboard blur when add/remove first mentioned user.\nconst GET_INPUT_KEY = (shouldReset: boolean) => (shouldReset ? 'uikit-input-clear' : 'uikit-input');\n\n// TODO: Refactor 'Edit' mode to clearly\nconst ChannelInput = (props: ChannelInputProps) => {\n const { channel, keyboardAvoidOffset, messageToEdit, setMessageToEdit } = props;\n\n const { top, left, right, bottom } = useSafeAreaInsets();\n const { colors } = useUIKitTheme();\n const { sbOptions, mentionManager } = useSendbirdChat();\n\n const { selection, onSelectionChange, textInputRef, text, onChangeText, mentionedUsers } = useMentionTextInput({\n messageToEdit,\n });\n const inputMode = useIIFE(() => {\n if (messageToEdit && !messageToEdit.isFileMessage()) return 'edit';\n else return 'send';\n });\n\n const mentionAvailable =\n sbOptions.uikit.groupChannel.channel.enableMention && channel.isGroupChannel() && !channel.isBroadcast;\n\n const inputKeyToRemount = GET_INPUT_KEY(mentionAvailable ? mentionedUsers.length === 0 : false);\n\n const [inputHeight, setInputHeight] = useState(styles.inputDefault.height);\n\n useTypingTrigger(text, channel);\n useTextClearOnDisabled(onChangeText, props.inputDisabled);\n useAutoFocusOnEditMode(textInputRef, messageToEdit);\n\n const onPressToMention = (user: SendbirdMember, searchStringRange: Range) => {\n const mentionedMessageText = mentionManager.asMentionedMessageText(user, true);\n const range = { start: searchStringRange.start, end: searchStringRange.start + mentionedMessageText.length - 1 };\n\n onChangeText(replace(text, searchStringRange.start, searchStringRange.end, mentionedMessageText), { user, range });\n };\n\n if (!props.shouldRenderInput) {\n return <SafeAreaBottom height={bottom} />;\n }\n\n return (\n <>\n <KeyboardAvoidingView\n keyboardVerticalOffset={-bottom + keyboardAvoidOffset}\n behavior={KEYBOARD_AVOID_VIEW_BEHAVIOR}\n >\n <View style={{ paddingLeft: left, paddingRight: right, backgroundColor: colors.background }}>\n <View onLayout={(e) => setInputHeight(e.nativeEvent.layout.height)} style={styles.inputContainer}>\n {inputMode === 'send' && (\n <SendInput\n {...props}\n key={inputKeyToRemount}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n VoiceMessageInput={props.VoiceMessageInput ?? VoiceMessageInput}\n AttachmentsButton={props.AttachmentsButton ?? AttachmentsButton}\n MessageToReplyPreview={props.MessageToReplyPreview ?? MessageToReplyPreview}\n />\n )}\n {inputMode === 'edit' && messageToEdit && (\n <EditInput\n {...props}\n key={inputKeyToRemount}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n autoFocus={AUTO_FOCUS}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n messageToEdit={messageToEdit}\n setMessageToEdit={setMessageToEdit}\n />\n )}\n </View>\n <SafeAreaBottom height={bottom} />\n </View>\n </KeyboardAvoidingView>\n {mentionAvailable && props.SuggestedMentionList && (\n <props.SuggestedMentionList\n text={text}\n selection={selection}\n inputHeight={inputHeight}\n topInset={top}\n bottomInset={bottom}\n onPressToMention={onPressToMention}\n mentionedUsers={mentionedUsers}\n />\n )}\n </>\n );\n};\n\nconst useTypingTrigger = (text: string, channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel()) {\n useEffect(() => {\n if (text.length === 0) channel.endTyping();\n else channel.startTyping();\n }, [text]);\n }\n};\n\nconst useTextClearOnDisabled = (setText: (val: string) => void, chatDisabled: boolean) => {\n useEffect(() => {\n if (chatDisabled) setText('');\n }, [chatDisabled]);\n};\n\nconst useAutoFocusOnEditMode = (\n textInputRef: React.MutableRefObject<TextInput | undefined>,\n messageToEdit?: SendbirdBaseMessage,\n) => {\n useEffect(() => {\n if (messageToEdit?.isUserMessage()) {\n if (!AUTO_FOCUS) setTimeout(() => textInputRef.current?.focus(), 500);\n }\n }, [messageToEdit]);\n};\n\nconst SafeAreaBottom = ({ height }: { height: number }) => {\n return <View style={{ height }} />;\n};\n\nconst styles = createStyleSheet({\n inputContainer: {\n justifyContent: 'center',\n width: '100%',\n },\n inputDefault: {\n height: 56,\n },\n});\n\nexport default React.memo(ChannelInput);\n"],"mappings":"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"}
@@ -206,7 +206,7 @@ const useGetMessagePressActions = _ref3 => {
206
206
  }
207
207
  });
208
208
  }
209
- if (msg.isFileMessage()) {
209
+ if (!(0, _uikitUtils.isVoiceMessage)(msg) && msg.isFileMessage()) {
210
210
  sheetItems.push({
211
211
  icon: 'download',
212
212
  title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,