@sendbird/uikit-react-native 2.5.0 → 3.0.0-rc.1

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 (326) hide show
  1. package/README.md +6 -1
  2. package/lib/commonjs/components/{MessageRenderer/MessageTime.js → ChannelInput/AttachmentsButton.js} +20 -17
  3. package/lib/commonjs/components/ChannelInput/AttachmentsButton.js.map +1 -0
  4. package/lib/commonjs/components/ChannelInput/EditInput.js +10 -18
  5. package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
  6. package/lib/commonjs/components/ChannelInput/SendInput.js +220 -163
  7. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  8. package/lib/commonjs/components/ChannelInput/index.js +5 -3
  9. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  10. package/lib/commonjs/components/ChannelMessageList/index.js +27 -27
  11. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  12. package/lib/commonjs/components/ChatFlatList/FlatListInternal.js +33 -0
  13. package/lib/commonjs/components/ChatFlatList/FlatListInternal.js.map +1 -0
  14. package/lib/commonjs/components/{ChatFlatList.js → ChatFlatList/index.js} +5 -7
  15. package/lib/commonjs/components/ChatFlatList/index.js.map +1 -0
  16. package/lib/commonjs/components/{MessageRenderer/MessageDateSeparator.js → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js} +3 -3
  17. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -0
  18. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +47 -0
  19. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -0
  20. package/lib/commonjs/components/{MessageRenderer/MessageOutgoingStatus.js → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js} +11 -14
  21. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js.map +1 -0
  22. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +204 -0
  23. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -0
  24. package/lib/commonjs/components/MessageSearchResultItem.js +3 -2
  25. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
  26. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +15 -9
  27. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
  28. package/lib/commonjs/constants.js +1 -7
  29. package/lib/commonjs/constants.js.map +1 -1
  30. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +13 -13
  31. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  32. package/lib/commonjs/containers/SendbirdUIKitContainer.js +29 -19
  33. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  34. package/lib/commonjs/contexts/SendbirdChatCtx.js +17 -14
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  36. package/lib/commonjs/contexts/UserProfileCtx.js +6 -4
  37. package/lib/commonjs/contexts/UserProfileCtx.js.map +1 -1
  38. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js +4 -13
  39. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
  40. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +10 -6
  42. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  43. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js +3 -3
  44. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  45. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  46. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -10
  47. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  48. package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js +4 -8
  49. package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js.map +1 -1
  50. package/lib/commonjs/domain/openChannel/types.js.map +1 -1
  51. package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js +3 -1
  52. package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js.map +1 -1
  53. package/lib/commonjs/domain/openChannelList/types.js.map +1 -1
  54. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +1 -1
  55. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
  56. package/lib/commonjs/fragments/createGroupChannelFragment.js +22 -100
  57. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  58. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js +1 -1
  59. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js.map +1 -1
  60. package/lib/commonjs/fragments/createGroupChannelListFragment.js +8 -13
  61. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  62. package/lib/commonjs/fragments/createMessageSearchFragment.js +2 -2
  63. package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
  64. package/lib/commonjs/fragments/createOpenChannelFragment.js +1 -7
  65. package/lib/commonjs/fragments/createOpenChannelFragment.js.map +1 -1
  66. package/lib/commonjs/fragments/createOpenChannelListFragment.js +2 -1
  67. package/lib/commonjs/fragments/createOpenChannelListFragment.js.map +1 -1
  68. package/lib/commonjs/hooks/useConnection.js +11 -7
  69. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  70. package/lib/commonjs/hooks/useMentionTextInput.js +3 -2
  71. package/lib/commonjs/hooks/useMentionTextInput.js.map +1 -1
  72. package/lib/commonjs/index.js +20 -4
  73. package/lib/commonjs/index.js.map +1 -1
  74. package/lib/commonjs/libs/MentionManager.js +8 -9
  75. package/lib/commonjs/libs/MentionManager.js.map +1 -1
  76. package/lib/commonjs/libs/SBUUtils.js +7 -3
  77. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  78. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  79. package/lib/commonjs/localization/createBaseStringSet.js +20 -62
  80. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  81. package/lib/commonjs/version.js +1 -1
  82. package/lib/commonjs/version.js.map +1 -1
  83. package/lib/module/components/ChannelInput/AttachmentsButton.js +29 -0
  84. package/lib/module/components/ChannelInput/AttachmentsButton.js.map +1 -0
  85. package/lib/module/components/ChannelInput/EditInput.js +10 -18
  86. package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
  87. package/lib/module/components/ChannelInput/SendInput.js +221 -164
  88. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  89. package/lib/module/components/ChannelInput/index.js +5 -3
  90. package/lib/module/components/ChannelInput/index.js.map +1 -1
  91. package/lib/module/components/ChannelMessageList/index.js +28 -28
  92. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  93. package/lib/module/components/ChatFlatList/FlatListInternal.js +26 -0
  94. package/lib/module/components/ChatFlatList/FlatListInternal.js.map +1 -0
  95. package/lib/module/components/{ChatFlatList.js → ChatFlatList/index.js} +4 -7
  96. package/lib/module/components/ChatFlatList/index.js.map +1 -0
  97. package/lib/module/components/{MessageRenderer/MessageDateSeparator.js → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js} +3 -3
  98. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -0
  99. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +38 -0
  100. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -0
  101. package/lib/module/components/{MessageRenderer/MessageOutgoingStatus.js → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js} +12 -15
  102. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js.map +1 -0
  103. package/lib/module/components/GroupChannelMessageRenderer/index.js +196 -0
  104. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -0
  105. package/lib/module/components/MessageSearchResultItem.js +2 -1
  106. package/lib/module/components/MessageSearchResultItem.js.map +1 -1
  107. package/lib/module/components/OpenChannelMessageRenderer/index.js +16 -10
  108. package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
  109. package/lib/module/constants.js +0 -5
  110. package/lib/module/constants.js.map +1 -1
  111. package/lib/module/containers/GroupChannelPreviewContainer.js +13 -13
  112. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  113. package/lib/module/containers/SendbirdUIKitContainer.js +29 -19
  114. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  115. package/lib/module/contexts/SendbirdChatCtx.js +17 -14
  116. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  117. package/lib/module/contexts/UserProfileCtx.js +6 -4
  118. package/lib/module/contexts/UserProfileCtx.js.map +1 -1
  119. package/lib/module/domain/groupChannel/component/GroupChannelInput.js +4 -13
  120. package/lib/module/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
  121. package/lib/module/domain/groupChannel/types.js.map +1 -1
  122. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +9 -4
  123. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  124. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js +3 -3
  125. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  126. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  127. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -10
  128. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  129. package/lib/module/domain/openChannel/component/OpenChannelInput.js +4 -8
  130. package/lib/module/domain/openChannel/component/OpenChannelInput.js.map +1 -1
  131. package/lib/module/domain/openChannel/types.js.map +1 -1
  132. package/lib/module/domain/openChannelList/component/OpenChannelListList.js +3 -1
  133. package/lib/module/domain/openChannelList/component/OpenChannelListList.js.map +1 -1
  134. package/lib/module/domain/openChannelList/types.js.map +1 -1
  135. package/lib/module/fragments/createGroupChannelCreateFragment.js +1 -1
  136. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
  137. package/lib/module/fragments/createGroupChannelFragment.js +24 -102
  138. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  139. package/lib/module/fragments/createGroupChannelInviteFragment.js +1 -1
  140. package/lib/module/fragments/createGroupChannelInviteFragment.js.map +1 -1
  141. package/lib/module/fragments/createGroupChannelListFragment.js +8 -13
  142. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  143. package/lib/module/fragments/createMessageSearchFragment.js +1 -1
  144. package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
  145. package/lib/module/fragments/createOpenChannelFragment.js +2 -8
  146. package/lib/module/fragments/createOpenChannelFragment.js.map +1 -1
  147. package/lib/module/fragments/createOpenChannelListFragment.js +2 -1
  148. package/lib/module/fragments/createOpenChannelListFragment.js.map +1 -1
  149. package/lib/module/hooks/useConnection.js +11 -7
  150. package/lib/module/hooks/useConnection.js.map +1 -1
  151. package/lib/module/hooks/useMentionTextInput.js +3 -2
  152. package/lib/module/hooks/useMentionTextInput.js.map +1 -1
  153. package/lib/module/index.js +5 -2
  154. package/lib/module/index.js.map +1 -1
  155. package/lib/module/libs/MentionManager.js +8 -9
  156. package/lib/module/libs/MentionManager.js.map +1 -1
  157. package/lib/module/libs/SBUUtils.js +7 -3
  158. package/lib/module/libs/SBUUtils.js.map +1 -1
  159. package/lib/module/localization/StringSet.type.js.map +1 -1
  160. package/lib/module/localization/createBaseStringSet.js +20 -62
  161. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  162. package/lib/module/version.js +1 -1
  163. package/lib/module/version.js.map +1 -1
  164. package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +6 -0
  165. package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -14
  166. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +2 -4
  167. package/lib/typescript/src/components/ChatFlatList/FlatListInternal.d.ts +20 -0
  168. package/lib/typescript/src/components/{ChatFlatList.d.ts → ChatFlatList/index.d.ts} +1 -5
  169. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +6 -0
  170. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +5 -0
  171. package/lib/typescript/src/components/{MessageRenderer/MessageOutgoingStatus.d.ts → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts} +3 -1
  172. package/lib/typescript/src/components/{MessageRenderer → GroupChannelMessageRenderer}/index.d.ts +2 -13
  173. package/lib/typescript/src/components/MessageSearchResultItem.d.ts +2 -1
  174. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -1
  175. package/lib/typescript/src/constants.d.ts +0 -5
  176. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +16 -11
  177. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +33 -19
  178. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  179. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -4
  180. package/lib/typescript/src/domain/groupChannel/types.d.ts +2 -9
  181. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +1 -1
  182. package/lib/typescript/src/domain/groupChannelList/types.d.ts +8 -23
  183. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  184. package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
  185. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
  186. package/lib/typescript/src/domain/openChannel/types.d.ts +2 -2
  187. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +1 -1
  188. package/lib/typescript/src/domain/openChannelList/types.d.ts +3 -12
  189. package/lib/typescript/src/index.d.ts +4 -1
  190. package/lib/typescript/src/libs/MentionManager.d.ts +4 -5
  191. package/lib/typescript/src/libs/SBUUtils.d.ts +1 -1
  192. package/lib/typescript/src/localization/StringSet.type.d.ts +2 -43
  193. package/lib/typescript/src/version.d.ts +1 -1
  194. package/package.json +14 -10
  195. package/src/components/ChannelInput/AttachmentsButton.tsx +32 -0
  196. package/src/components/ChannelInput/EditInput.tsx +17 -18
  197. package/src/components/ChannelInput/SendInput.tsx +237 -181
  198. package/src/components/ChannelInput/index.tsx +8 -21
  199. package/src/components/ChannelMessageList/index.tsx +33 -41
  200. package/src/components/ChatFlatList/FlatListInternal.tsx +40 -0
  201. package/src/components/{ChatFlatList.tsx → ChatFlatList/index.tsx} +7 -12
  202. package/src/components/{MessageRenderer/MessageDateSeparator.tsx → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.tsx} +7 -5
  203. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.tsx +29 -0
  204. package/src/components/{MessageRenderer/MessageOutgoingStatus.tsx → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.tsx} +15 -15
  205. package/src/components/GroupChannelMessageRenderer/index.tsx +203 -0
  206. package/src/components/MessageSearchResultItem.tsx +3 -1
  207. package/src/components/OpenChannelMessageRenderer/index.tsx +10 -5
  208. package/src/constants.ts +0 -5
  209. package/src/containers/GroupChannelPreviewContainer.tsx +14 -13
  210. package/src/containers/SendbirdUIKitContainer.tsx +98 -90
  211. package/src/contexts/SendbirdChatCtx.tsx +49 -36
  212. package/src/contexts/UserProfileCtx.tsx +10 -5
  213. package/src/domain/groupChannel/component/GroupChannelInput.tsx +1 -10
  214. package/src/domain/groupChannel/types.ts +1 -14
  215. package/src/domain/groupChannelList/component/GroupChannelListList.tsx +8 -4
  216. package/src/domain/groupChannelList/component/GroupChannelListTypeSelector.tsx +3 -3
  217. package/src/domain/groupChannelList/types.ts +8 -30
  218. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +22 -10
  219. package/src/domain/openChannel/component/OpenChannelInput.tsx +1 -5
  220. package/src/domain/openChannel/types.ts +1 -1
  221. package/src/domain/openChannelList/component/OpenChannelListList.tsx +2 -1
  222. package/src/domain/openChannelList/types.ts +6 -13
  223. package/src/fragments/createGroupChannelCreateFragment.tsx +1 -1
  224. package/src/fragments/createGroupChannelFragment.tsx +21 -97
  225. package/src/fragments/createGroupChannelInviteFragment.tsx +1 -1
  226. package/src/fragments/createGroupChannelListFragment.tsx +9 -15
  227. package/src/fragments/createMessageSearchFragment.tsx +1 -1
  228. package/src/fragments/createOpenChannelFragment.tsx +2 -3
  229. package/src/fragments/createOpenChannelListFragment.tsx +2 -1
  230. package/src/hooks/useConnection.ts +9 -7
  231. package/src/hooks/useMentionTextInput.ts +7 -2
  232. package/src/index.ts +4 -2
  233. package/src/libs/MentionManager.tsx +8 -7
  234. package/src/libs/SBUUtils.ts +7 -3
  235. package/src/localization/StringSet.type.ts +2 -46
  236. package/src/localization/createBaseStringSet.ts +19 -71
  237. package/src/version.ts +1 -1
  238. package/lib/commonjs/components/ChatFlatList.js.map +0 -1
  239. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js +0 -46
  240. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js.map +0 -1
  241. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js +0 -73
  242. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +0 -1
  243. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +0 -93
  244. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +0 -1
  245. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +0 -132
  246. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +0 -1
  247. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +0 -24
  248. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +0 -1
  249. package/lib/commonjs/components/MessageRenderer/MessageContainer.js +0 -27
  250. package/lib/commonjs/components/MessageRenderer/MessageContainer.js.map +0 -1
  251. package/lib/commonjs/components/MessageRenderer/MessageDateSeparator.js.map +0 -1
  252. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js +0 -41
  253. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +0 -1
  254. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js +0 -41
  255. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +0 -1
  256. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +0 -1
  257. package/lib/commonjs/components/MessageRenderer/MessageTime.js.map +0 -1
  258. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js +0 -46
  259. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js.map +0 -1
  260. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +0 -113
  261. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +0 -1
  262. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +0 -200
  263. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +0 -1
  264. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js +0 -22
  265. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +0 -1
  266. package/lib/commonjs/components/MessageRenderer/index.js +0 -186
  267. package/lib/commonjs/components/MessageRenderer/index.js.map +0 -1
  268. package/lib/module/components/ChatFlatList.js.map +0 -1
  269. package/lib/module/components/MessageRenderer/AdminMessage/index.js +0 -38
  270. package/lib/module/components/MessageRenderer/AdminMessage/index.js.map +0 -1
  271. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js +0 -65
  272. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +0 -1
  273. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +0 -84
  274. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +0 -1
  275. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +0 -123
  276. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +0 -1
  277. package/lib/module/components/MessageRenderer/FileMessage/index.js +0 -16
  278. package/lib/module/components/MessageRenderer/FileMessage/index.js.map +0 -1
  279. package/lib/module/components/MessageRenderer/MessageContainer.js +0 -19
  280. package/lib/module/components/MessageRenderer/MessageContainer.js.map +0 -1
  281. package/lib/module/components/MessageRenderer/MessageDateSeparator.js.map +0 -1
  282. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js +0 -33
  283. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +0 -1
  284. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js +0 -33
  285. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +0 -1
  286. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +0 -1
  287. package/lib/module/components/MessageRenderer/MessageTime.js +0 -26
  288. package/lib/module/components/MessageRenderer/MessageTime.js.map +0 -1
  289. package/lib/module/components/MessageRenderer/UnknownMessage/index.js +0 -38
  290. package/lib/module/components/MessageRenderer/UnknownMessage/index.js.map +0 -1
  291. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +0 -105
  292. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +0 -1
  293. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +0 -190
  294. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +0 -1
  295. package/lib/module/components/MessageRenderer/UserMessage/index.js +0 -14
  296. package/lib/module/components/MessageRenderer/UserMessage/index.js.map +0 -1
  297. package/lib/module/components/MessageRenderer/index.js +0 -178
  298. package/lib/module/components/MessageRenderer/index.js.map +0 -1
  299. package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +0 -5
  300. package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +0 -6
  301. package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +0 -3
  302. package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +0 -3
  303. package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +0 -15
  304. package/lib/typescript/src/components/MessageRenderer/MessageContainer.d.ts +0 -3
  305. package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +0 -7
  306. package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +0 -7
  307. package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +0 -7
  308. package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +0 -9
  309. package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +0 -4
  310. package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +0 -3
  311. package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +0 -7
  312. package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +0 -9
  313. package/src/components/MessageRenderer/AdminMessage/index.tsx +0 -40
  314. package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +0 -51
  315. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +0 -98
  316. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +0 -113
  317. package/src/components/MessageRenderer/FileMessage/index.tsx +0 -20
  318. package/src/components/MessageRenderer/MessageContainer.tsx +0 -17
  319. package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +0 -34
  320. package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +0 -36
  321. package/src/components/MessageRenderer/MessageTime.tsx +0 -28
  322. package/src/components/MessageRenderer/UnknownMessage/index.tsx +0 -34
  323. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +0 -102
  324. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +0 -188
  325. package/src/components/MessageRenderer/UserMessage/index.tsx +0 -24
  326. package/src/components/MessageRenderer/index.tsx +0 -198
@@ -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","onPressSendUserMessage","onPressSendFileMessage","onSendUserMessage","onSendFileMessage","text","onChangeText","onSelectionChange","mentionedUsers","inputDisabled","inputFrozen","inputMuted","mentionManager","imageCompressionConfig","features","useSendbirdChat","STRINGS","useLocalization","fileService","mediaService","usePlatformService","colors","useUIKitTheme","openSheet","useBottomSheet","alert","useAlert","toast","useToast","sendUserMessage","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","message","catch","onFailureToSend","type","userIds","messageTemplate","sendFileMessage","file","show","TOAST","SEND_MSG_ERROR","onPressAttachment","sheetItems","title","LABELS","CHANNEL_INPUT_ATTACHMENT_CAMERA","icon","onPress","mediaFile","openCamera","mediaType","onOpenFailure","error","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","uri","shouldCompressImage","imageCompressionEnabled","safeRun","compressed","compressImage","maxWidth","width","maxHeight","height","compressionRate","size","CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY","mediaFiles","openMediaLibrary","selectionLimit","PERMISSION_DEVICE_STORAGE","OPEN_PHOTO_LIBRARY_ERROR","CHANNEL_INPUT_ATTACHMENT_FILES","documentFile","openDocument","OPEN_FILES_ERROR","getPlaceholder","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","CHANNEL_INPUT_PLACEHOLDER_DISABLED","CHANNEL_INPUT_PLACEHOLDER_MUTED","createElement","View","style","styles","sendInputContainer","TouchableOpacity","disabled","Icon","color","ui","input","highlight","active","containerStyle","iconAttach","TextInput","multiline","disableFullscreenUI","editable","placeholder","textToMentionedComponents","Boolean","trim","iconSend","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","Platform","select","ios","borderRadius","padding","marginLeft","_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 {\n Icon,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { isImage, shouldCompressImage } 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 onPressSendUserMessage,\n onPressSendFileMessage,\n onSendUserMessage,\n onSendFileMessage,\n text,\n onChangeText,\n onSelectionChange,\n mentionedUsers,\n inputDisabled,\n inputFrozen,\n inputMuted,\n },\n ref,\n) {\n const { mentionManager, imageCompressionConfig, features } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { fileService, mediaService } = usePlatformService();\n const { colors } = useUIKitTheme();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const toast = useToast();\n\n const sendUserMessage = () => {\n const mentionType = MentionType.USERS;\n const mentionedUserIds = mentionedUsers.map((it) => it.user.userId);\n const mentionedMessageTemplate = mentionManager.textToMentionedMessageTemplate(text, mentionedUsers);\n\n if (onPressSendUserMessage) {\n onPressSendUserMessage({\n message: text,\n mentionType,\n mentionedUserIds,\n mentionedMessageTemplate,\n }).catch(onFailureToSend);\n } else if (onSendUserMessage) {\n onSendUserMessage(text, {\n type: mentionType,\n userIds: mentionedUserIds,\n messageTemplate: mentionedMessageTemplate,\n }).catch(onFailureToSend);\n }\n\n onChangeText('');\n };\n\n const sendFileMessage = (file: FileType) => {\n if (onPressSendFileMessage) {\n onPressSendFileMessage({ file }).catch(onFailureToSend);\n } else if (onSendFileMessage) {\n onSendFileMessage(file).catch(onFailureToSend);\n }\n };\n\n const onFailureToSend = () => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error');\n\n const onPressAttachment = () => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA,\n icon: 'camera',\n onPress: async () => {\n const mediaFile = await fileService.openCamera({\n mediaType: 'all',\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, features.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 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: 'all',\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, features.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 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, features.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 };\n\n const getPlaceholder = () => {\n if (!inputDisabled) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE;\n if (inputFrozen) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (inputMuted) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_MUTED;\n\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n };\n\n return (\n <View style={styles.sendInputContainer}>\n <TouchableOpacity onPress={onPressAttachment} disabled={inputDisabled}>\n <Icon\n color={inputDisabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'add'}\n size={24}\n containerStyle={styles.iconAttach}\n />\n </TouchableOpacity>\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(text, mentionedUsers)}\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 );\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 iconAttach: {\n marginRight: 8,\n padding: 4,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
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","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","colors","useUIKitTheme","openSheet","useBottomSheet","toast","useToast","onFailureToSend","show","TOAST","SEND_MSG_ERROR","sendUserMessage","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","uikit","groupChannel","enableMention","message","catch","sheetItems","useChannelInputItems","file","onPressAttachment","getPlaceholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","CHANNEL_INPUT_PLACEHOLDER_DISABLED","CHANNEL_INPUT_PLACEHOLDER_MUTED","createElement","View","style","styles","sendInputContainer","onPress","disabled","TextInput","multiline","disableFullscreenUI","editable","input","placeholder","textToMentionedComponents","Boolean","trim","TouchableOpacity","Icon","color","ui","highlight","active","icon","size","containerStyle","iconSend","sendFileMessage","imageCompressionConfig","fileService","mediaService","usePlatformService","alert","useAlert","useIIFE","isOpenChannel","openChannel","isGroupChannel","enableDocument","camera","enablePhoto","enableVideo","gallery","push","title","CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO","mediaFile","openCamera","mediaType","onOpenFailure","error","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","uri","type","shouldCompressImage","chat","imageCompressionEnabled","safeRun","compressed","compressImage","maxWidth","width","maxHeight","height","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","alignItems","flexDirection","flex","marginRight","minHeight","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 } from '@sendbird/chat/message';\nimport {\n Icon,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { BottomSheetItem } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdChannel, isImage, shouldCompressImage, useIIFE } 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 },\n ref,\n) {\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { openSheet } = useBottomSheet();\n const toast = useToast();\n\n const onFailureToSend = () => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error');\n\n const sendUserMessage = () => {\n const mentionType = MentionType.USERS;\n const mentionedUserIds = mentionedUsers.map((it) => it.user.userId);\n const mentionedMessageTemplate = mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n );\n\n onPressSendUserMessage({\n message: text,\n mentionType,\n mentionedUserIds,\n mentionedMessageTemplate,\n }).catch(onFailureToSend);\n\n onChangeText('');\n };\n\n const sheetItems = useChannelInputItems(channel, (file) => {\n onPressSendFileMessage({ file }).catch(onFailureToSend);\n });\n const onPressAttachment = () => openSheet({ sheetItems });\n\n const getPlaceholder = () => {\n if (!inputDisabled) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE;\n if (inputFrozen) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (inputMuted) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_MUTED;\n\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n };\n\n return (\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 );\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});\n\nexport default SendInput;\n"],"mappings":"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"}
@@ -11,6 +11,7 @@ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundati
11
11
  var _uikitUtils = require("@sendbird/uikit-utils");
12
12
  var _useContext = require("../../hooks/useContext");
13
13
  var _useMentionTextInput = _interopRequireDefault(require("../../hooks/useMentionTextInput"));
14
+ var _AttachmentsButton = _interopRequireDefault(require("./AttachmentsButton"));
14
15
  var _EditInput = _interopRequireDefault(require("./EditInput"));
15
16
  var _SendInput = _interopRequireDefault(require("./SendInput"));
16
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -50,7 +51,7 @@ const ChannelInput = props => {
50
51
  colors
51
52
  } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
52
53
  const {
53
- features,
54
+ sbOptions,
54
55
  mentionManager
55
56
  } = (0, _useContext.useSendbirdChat)();
56
57
  const {
@@ -68,7 +69,7 @@ const ChannelInput = props => {
68
69
  if (messageToEdit.isFileMessage()) return 'send';
69
70
  return 'edit';
70
71
  });
71
- const mentionAvailable = features.userMentionEnabled && channel.isGroupChannel() && !channel.isBroadcast;
72
+ const mentionAvailable = sbOptions.uikit.groupChannel.channel.enableMention && channel.isGroupChannel() && !channel.isBroadcast;
72
73
  const inputKeyToRemount = GET_INPUT_KEY(mentionAvailable ? mentionedUsers.length === 0 : false);
73
74
  const [inputHeight, setInputHeight] = (0, _react.useState)(styles.inputDefault.height);
74
75
  useTypingTrigger(text, channel);
@@ -108,7 +109,8 @@ const ChannelInput = props => {
108
109
  text: text,
109
110
  onChangeText: onChangeText,
110
111
  onSelectionChange: onSelectionChange,
111
- mentionedUsers: mentionedUsers
112
+ mentionedUsers: mentionedUsers,
113
+ AttachmentsButton: props.AttachmentsButton ?? _AttachmentsButton.default
112
114
  })), inputMode === 'edit' && messageToEdit && /*#__PURE__*/_react.default.createElement(_EditInput.default, _extends({}, props, {
113
115
  key: inputKeyToRemount,
114
116
  ref: textInputRef,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useMentionTextInput","_interopRequireDefault","_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","features","mentionManager","useSendbirdChat","selection","onSelectionChange","textInputRef","text","onChangeText","mentionedUsers","useMentionTextInput","inputMode","useIIFE","isFileMessage","mentionAvailable","userMentionEnabled","isGroupChannel","isBroadcast","inputKeyToRemount","inputHeight","setInputHeight","useState","styles","inputDefault","height","useTypingTrigger","useTextPersistenceOnDisabled","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","autoFocus","SuggestedMentionList","topInset","bottomInset","useEffect","endTyping","startTyping","setText","chatDisabled","textTmpRef","useRef","current","isUserMessage","setTimeout","_textInputRef$current","focus","_ref","createStyleSheet","justifyContent","width","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { MutableRefObject, useEffect, useRef, 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 { FileType } from '../../platform/types';\nimport type { MentionedUser, Range } from '../../types';\nimport EditInput from './EditInput';\nimport SendInput from './SendInput';\n\ntype UserMessageMentionParams = Required<{\n messageTemplate: SendbirdUserMessageCreateParams['mentionedMessageTemplate'];\n userIds: SendbirdUserMessageCreateParams['mentionedUserIds'];\n type: SendbirdUserMessageCreateParams['mentionType'];\n}>;\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 // mention\n SuggestedMentionList?: (props: SuggestedMentionListProps) => JSX.Element | null;\n\n /** @deprecated Please use `onPressSendUserMessage` **/\n onSendFileMessage?: (file: FileType) => Promise<void>;\n /** @deprecated Please use `onPressSendFileMessage` **/\n onSendUserMessage?: (text: string, mention?: UserMessageMentionParams) => Promise<void>;\n /** @deprecated Please use `onPressUpdateUserMessage` **/\n onUpdateFileMessage?: (editedFile: FileType, message: SendbirdFileMessage) => Promise<void>;\n /** @deprecated Please use `onPressUpdateFileMessage` **/\n onUpdateUserMessage?: (\n editedText: string,\n message: SendbirdUserMessage,\n mention?: UserMessageMentionParams,\n ) => Promise<void>;\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 { features, mentionManager } = useSendbirdChat();\n\n const { selection, onSelectionChange, textInputRef, text, onChangeText, mentionedUsers } = useMentionTextInput({\n messageToEdit,\n });\n const inputMode = useIIFE(() => {\n if (!messageToEdit) return 'send';\n if (messageToEdit.isFileMessage()) return 'send';\n return 'edit';\n });\n\n const mentionAvailable = features.userMentionEnabled && 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 useTextPersistenceOnDisabled(text, 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 />\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 messageToEdit={messageToEdit}\n mentionedUsers={mentionedUsers}\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 useTextPersistenceOnDisabled = (text: string, setText: (val: string) => void, chatDisabled: boolean) => {\n const textTmpRef = useRef('');\n\n useEffect(() => {\n if (chatDisabled) {\n textTmpRef.current = text;\n setText('');\n } else {\n setText(textTmpRef.current);\n }\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","_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","useTextPersistenceOnDisabled","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","textTmpRef","useRef","current","isUserMessage","setTimeout","_textInputRef$current","focus","_ref","createStyleSheet","justifyContent","width","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { MutableRefObject, useEffect, useRef, 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 // 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) return 'send';\n if (messageToEdit.isFileMessage()) return 'send';\n return 'edit';\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 useTextPersistenceOnDisabled(text, 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 messageToEdit={messageToEdit}\n mentionedUsers={mentionedUsers}\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 useTextPersistenceOnDisabled = (text: string, setText: (val: string) => void, chatDisabled: boolean) => {\n const textTmpRef = useRef('');\n\n useEffect(() => {\n if (chatDisabled) {\n textTmpRef.current = text;\n setText('');\n } else {\n setText(textTmpRef.current);\n }\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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"}
@@ -9,7 +9,6 @@ var _reactNative = require("react-native");
9
9
  var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
10
10
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
11
11
  var _uikitUtils = require("@sendbird/uikit-utils");
12
- var _constants = require("../../constants");
13
12
  var _useContext = require("../../hooks/useContext");
14
13
  var _SBUUtils = _interopRequireDefault(require("../../libs/SBUUtils"));
15
14
  var _ChatFlatList = _interopRequireDefault(require("../ChatFlatList"));
@@ -38,8 +37,7 @@ const ChannelMessageList = (_ref, ref) => {
38
37
  onTopReached,
39
38
  flatListProps,
40
39
  onPressNewMessagesButton,
41
- onPressScrollToBottomButton,
42
- onPressImageMessage
40
+ onPressScrollToBottomButton
43
41
  } = _ref;
44
42
  const {
45
43
  STRINGS
@@ -47,6 +45,9 @@ const ChannelMessageList = (_ref, ref) => {
47
45
  const {
48
46
  colors
49
47
  } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
48
+ const {
49
+ show
50
+ } = (0, _useContext.useUserProfile)();
50
51
  const {
51
52
  left,
52
53
  right
@@ -57,7 +58,6 @@ const ChannelMessageList = (_ref, ref) => {
57
58
  onEditMessage,
58
59
  onDeleteMessage,
59
60
  onResendFailedMessage,
60
- onPressImageMessage,
61
61
  onPressMediaMessage
62
62
  });
63
63
  const safeAreaLayout = {
@@ -79,6 +79,7 @@ const ChannelMessageList = (_ref, ref) => {
79
79
  nextMessage: messages[index - 1],
80
80
  onPress,
81
81
  onLongPress,
82
+ onShowUserProfile: show,
82
83
  enableMessageGrouping,
83
84
  channel,
84
85
  currentUserId,
@@ -124,7 +125,6 @@ const useGetMessagePressActions = _ref3 => {
124
125
  onResendFailedMessage,
125
126
  onEditMessage,
126
127
  onDeleteMessage,
127
- onPressImageMessage,
128
128
  onPressMediaMessage
129
129
  } = _ref3;
130
130
  const {
@@ -145,7 +145,7 @@ const useGetMessagePressActions = _ref3 => {
145
145
  fileService
146
146
  } = (0, _useContext.usePlatformService)();
147
147
  const {
148
- features
148
+ sbOptions
149
149
  } = (0, _useContext.useSendbirdChat)();
150
150
  const handleFailedMessage = message => {
151
151
  openSheet({
@@ -196,16 +196,18 @@ const useGetMessagePressActions = _ref3 => {
196
196
  toast.show(STRINGS.TOAST.COPY_OK, 'success');
197
197
  }
198
198
  });
199
- if ((0, _uikitUtils.isMyMessage)(msg, currentUserId) && msg.sendingStatus === 'succeeded') {
200
- sheetItems.push({
201
- icon: 'edit',
202
- title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,
203
- onPress: () => onEditMessage(msg)
204
- }, {
205
- icon: 'delete',
206
- title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,
207
- onPress: () => confirmDelete(msg)
208
- });
199
+ if (!channel.isEphemeral) {
200
+ if ((0, _uikitUtils.isMyMessage)(msg, currentUserId) && msg.sendingStatus === 'succeeded') {
201
+ sheetItems.push({
202
+ icon: 'edit',
203
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,
204
+ onPress: () => onEditMessage(msg)
205
+ }, {
206
+ icon: 'delete',
207
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,
208
+ onPress: () => confirmDelete(msg)
209
+ });
210
+ }
209
211
  }
210
212
  }
211
213
  if (msg.isFileMessage()) {
@@ -229,12 +231,14 @@ const useGetMessagePressActions = _ref3 => {
229
231
  });
230
232
  }
231
233
  });
232
- if ((0, _uikitUtils.isMyMessage)(msg, currentUserId) && msg.sendingStatus === 'succeeded') {
233
- sheetItems.push({
234
- icon: 'delete',
235
- title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,
236
- onPress: () => confirmDelete(msg)
237
- });
234
+ if (!channel.isEphemeral) {
235
+ if ((0, _uikitUtils.isMyMessage)(msg, currentUserId) && msg.sendingStatus === 'succeeded') {
236
+ sheetItems.push({
237
+ icon: 'delete',
238
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,
239
+ onPress: () => confirmDelete(msg)
240
+ });
241
+ }
238
242
  }
239
243
  const fileType = (0, _uikitUtils.getFileType)(msg.type || (0, _uikitUtils.getFileExtension)(msg.name));
240
244
  switch (fileType) {
@@ -243,10 +247,6 @@ const useGetMessagePressActions = _ref3 => {
243
247
  case 'audio':
244
248
  {
245
249
  response.onPress = () => {
246
- if (onPressImageMessage && fileType === 'image') {
247
- _uikitUtils.Logger.warn(_constants.DEPRECATION_WARNING.CHANNEL.ON_PRESS_IMAGE_MESSAGE);
248
- onPressImageMessage(msg, (0, _uikitUtils.getAvailableUriFromFileMessage)(msg));
249
- }
250
250
  onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(msg, () => onDeleteMessage(msg), (0, _uikitUtils.getAvailableUriFromFileMessage)(msg));
251
251
  };
252
252
  break;
@@ -262,7 +262,7 @@ const useGetMessagePressActions = _ref3 => {
262
262
  response.onLongPress = () => {
263
263
  openSheet({
264
264
  sheetItems,
265
- HeaderComponent: (0, _uikitUtils.shouldRenderReaction)(channel, features.reactionEnabled) ? _ref4 => {
265
+ HeaderComponent: (0, _uikitUtils.shouldRenderReaction)(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions) ? _ref4 => {
266
266
  let {
267
267
  onClose
268
268
  } = _ref4;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_constants","_useContext","_SBUUtils","_ChatFlatList","_ReactionAddons","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","onPressImageMessage","STRINGS","useLocalization","colors","useUIKitTheme","left","right","useSafeAreaInsets","getMessagePressActions","useGetMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","message","prevMessage","nextMessage","focused","startingPoint","createdAt","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","features","useSendbirdChat","handleFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","catch","show","TOAST","RESEND_MSG_ERROR","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","confirmDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","DELETE_MSG_ERROR","msg","isUserMessage","isFileMessage","undefined","response","push","icon","CHANNEL_MESSAGE_COPY","setString","COPY_OK","isMyMessage","sendingStatus","CHANNEL_MESSAGE_EDIT","CHANNEL_MESSAGE_DELETE","CHANNEL_MESSAGE_SAVE","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","DOWNLOAD_OK","Logger","log","err","DOWNLOAD_ERROR","getFileType","getFileExtension","warn","DEPRECATION_WARNING","CHANNEL","ON_PRESS_IMAGE_MESSAGE","getAvailableUriFromFileMessage","SBUUtils","openURL","HeaderComponent","shouldRenderReaction","reactionEnabled","_ref4","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport { DEPRECATION_WARNING } from '../../constants';\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport type { CommonComponent } from '../../types';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressAvatar?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n }) => React.ReactElement | null;\n renderNewMessagesButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n newMessages: SendbirdMessage[];\n }>;\n renderScrollToBottomButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n }>;\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n\n /** @deprecated Please use `onPressMediaMessage` instead **/\n onPressImageMessage?: (message: SendbirdFileMessage, uri: string) => void;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n onPressImageMessage,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { left, right } = useSafeAreaInsets();\n const getMessagePressActions = useGetMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressImageMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress } = getMessagePressActions(item);\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useGetMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressImageMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressImageMessage'\n | 'onPressMediaMessage'\n>) => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { features } = useSendbirdChat();\n\n const handleFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => {\n onResendFailedMessage(message).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error'));\n },\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => confirmDelete(message),\n },\n ],\n });\n };\n const confirmDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(() => toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error'));\n },\n },\n ],\n });\n };\n\n return (msg: SendbirdMessage) => {\n if (!msg.isUserMessage() && !msg.isFileMessage()) {\n return { onPress: undefined, onLongPress: undefined };\n }\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const response: PressActions = {\n onPress: undefined,\n onLongPress: undefined,\n };\n\n if (msg.isUserMessage()) {\n sheetItems.push({\n icon: 'copy',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => {\n clipboardService.setString(msg.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n },\n });\n\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push(\n {\n icon: 'edit',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(msg),\n },\n {\n icon: 'delete',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n },\n );\n }\n }\n\n if (msg.isFileMessage()) {\n sheetItems.push({\n icon: 'download',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: async () => {\n if (toMegabyte(msg.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: msg.url, fileName: msg.name, fileType: msg.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n },\n });\n\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push({\n icon: 'delete',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n });\n }\n\n const fileType = getFileType(msg.type || getFileExtension(msg.name));\n switch (fileType) {\n case 'image':\n case 'video':\n case 'audio': {\n response.onPress = () => {\n if (onPressImageMessage && fileType === 'image') {\n Logger.warn(DEPRECATION_WARNING.CHANNEL.ON_PRESS_IMAGE_MESSAGE);\n onPressImageMessage(msg, getAvailableUriFromFileMessage(msg));\n }\n onPressMediaMessage?.(msg, () => onDeleteMessage(msg), getAvailableUriFromFileMessage(msg));\n };\n break;\n }\n default: {\n response.onPress = () => SBUUtils.openURL(msg.url);\n break;\n }\n }\n }\n\n if (sheetItems.length > 0) {\n response.onLongPress = () => {\n openSheet({\n sheetItems,\n HeaderComponent: shouldRenderReaction(channel, features.reactionEnabled)\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={msg} channel={channel} onClose={onClose} />\n : undefined,\n });\n };\n }\n\n if (msg.sendingStatus === 'failed') {\n response.onLongPress = () => handleFailedMessage(msg);\n response.onPress = () => {\n onResendFailedMessage(msg).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error'));\n };\n }\n\n if (msg.sendingStatus === 'pending') {\n response.onLongPress = undefined;\n response.onPress = undefined;\n }\n\n return response;\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelMessageList) as typeof ChannelMessageList;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ChatFlatList","_ReactionAddons","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","getMessagePressActions","useGetMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","handleFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","catch","TOAST","RESEND_MSG_ERROR","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","confirmDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","DELETE_MSG_ERROR","msg","isUserMessage","isFileMessage","undefined","response","push","icon","CHANNEL_MESSAGE_COPY","setString","COPY_OK","isEphemeral","isMyMessage","sendingStatus","CHANNEL_MESSAGE_EDIT","CHANNEL_MESSAGE_DELETE","CHANNEL_MESSAGE_SAVE","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","DOWNLOAD_OK","Logger","log","err","DOWNLOAD_ERROR","getFileType","getFileExtension","getAvailableUriFromFileMessage","SBUUtils","openURL","HeaderComponent","shouldRenderReaction","uikitWithAppInfo","groupChannel","enableReactions","_ref4","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport { useLocalization, usePlatformService, useSendbirdChat, useUserProfile } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport type { CommonComponent } from '../../types';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n }) => React.ReactElement | null;\n renderNewMessagesButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n newMessages: SendbirdMessage[];\n }>;\n renderScrollToBottomButton: null | CommonComponent<{\n visible: boolean;\n onPress: () => void;\n }>;\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const getMessagePressActions = useGetMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress } = getMessagePressActions(item);\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useGetMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n 'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'\n>) => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const handleFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => {\n onResendFailedMessage(message).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error'));\n },\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => confirmDelete(message),\n },\n ],\n });\n };\n const confirmDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL,\n },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(() => toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error'));\n },\n },\n ],\n });\n };\n\n return (msg: SendbirdMessage) => {\n if (!msg.isUserMessage() && !msg.isFileMessage()) {\n return { onPress: undefined, onLongPress: undefined };\n }\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const response: PressActions = {\n onPress: undefined,\n onLongPress: undefined,\n };\n\n if (msg.isUserMessage()) {\n sheetItems.push({\n icon: 'copy',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => {\n clipboardService.setString(msg.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n },\n });\n\n if (!channel.isEphemeral) {\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push(\n {\n icon: 'edit',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(msg),\n },\n {\n icon: 'delete',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n },\n );\n }\n }\n }\n\n if (msg.isFileMessage()) {\n sheetItems.push({\n icon: 'download',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: async () => {\n if (toMegabyte(msg.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: msg.url, fileName: msg.name, fileType: msg.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n },\n });\n\n if (!channel.isEphemeral) {\n if (isMyMessage(msg, currentUserId) && msg.sendingStatus === 'succeeded') {\n sheetItems.push({\n icon: 'delete',\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => confirmDelete(msg),\n });\n }\n }\n\n const fileType = getFileType(msg.type || getFileExtension(msg.name));\n switch (fileType) {\n case 'image':\n case 'video':\n case 'audio': {\n response.onPress = () => {\n onPressMediaMessage?.(msg, () => onDeleteMessage(msg), getAvailableUriFromFileMessage(msg));\n };\n break;\n }\n default: {\n response.onPress = () => SBUUtils.openURL(msg.url);\n break;\n }\n }\n }\n\n if (sheetItems.length > 0) {\n response.onLongPress = () => {\n openSheet({\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions,\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={msg} channel={channel} onClose={onClose} />\n : undefined,\n });\n };\n }\n\n if (msg.sendingStatus === 'failed') {\n response.onLongPress = () => handleFailedMessage(msg);\n response.onPress = () => {\n onResendFailedMessage(msg).catch(() => toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error'));\n };\n }\n\n if (msg.sendingStatus === 'pending') {\n response.onLongPress = undefined;\n response.onPress = undefined;\n }\n\n return response;\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelMessageList) as typeof ChannelMessageList;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,2BAAA,GAAAF,OAAA;AAEA,IAAAG,2BAAA,GAAAH,OAAA;AASA,IAAAI,WAAA,GAAAJ,OAAA;AAkBA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,aAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,eAAA,GAAAR,OAAA;AAAmD,SAAAD,uBAAAU,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAoDnD,MAAMQ,kBAAkB,GAAGA,CAAAC,IAAA,EAwBzBC,GAAkD,KAC/C;EAAA,IAxBH;IACEC,UAAU;IACVC,OAAO;IACPC,OAAO;IACPC,aAAa;IACbC,eAAe;IACfC,qBAAqB;IACrBC,mBAAmB;IACnBC,aAAa;IACbC,uBAAuB;IACvBC,0BAA0B;IAC1BC,aAAa;IACbC,QAAQ;IACRC,WAAW;IACXC,qBAAqB;IACrBC,wBAAwB;IACxBC,sBAAsB;IACtBC,eAAe;IACfC,YAAY;IACZC,aAAa;IACbC,wBAAwB;IACxBC;EAC0B,CAAC,GAAAtB,IAAA;EAG7B,MAAM;IAAEuB;EAAQ,CAAC,GAAG,IAAAC,2BAAe,GAAE;EACrC,MAAM;IAAEC;EAAO,CAAC,GAAG,IAAAC,yCAAa,GAAE;EAClC,MAAM;IAAEC;EAAK,CAAC,GAAG,IAAAC,0BAAc,GAAE;EACjC,MAAM;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAG,IAAAC,6CAAiB,GAAE;EAC3C,MAAMC,sBAAsB,GAAGC,yBAAyB,CAAC;IACvD7B,OAAO;IACPK,aAAa;IACbJ,aAAa;IACbC,eAAe;IACfC,qBAAqB;IACrBC;EACF,CAAC,CAAC;EAEF,MAAM0B,cAAc,GAAG;IAAEC,WAAW,EAAEN,IAAI;IAAEO,YAAY,EAAEN;EAAM,CAAC;EAEjE,MAAMO,UAA2C,GAAG,IAAAC,4BAAgB,EAACC,KAAA,IAAqB;IAAA,IAApB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,KAAA;IACnF,MAAM;MAAEG,OAAO;MAAEC;IAAY,CAAC,GAAGX,sBAAsB,CAACQ,IAAI,CAAC;IAC7D,OAAO5B,aAAa,CAAC;MACnBgC,OAAO,EAAEJ,IAAI;MACbK,WAAW,EAAEhC,QAAQ,CAAC4B,KAAK,GAAG,CAAC,CAAC;MAChCK,WAAW,EAAEjC,QAAQ,CAAC4B,KAAK,GAAG,CAAC,CAAC;MAChCC,OAAO;MACPC,WAAW;MACXI,iBAAiB,EAAEpB,IAAI;MACvBZ,qBAAqB;MACrBX,OAAO;MACPK,aAAa;MACbuC,OAAO,EAAE,CAAC,CAAA9C,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE+C,aAAa,KAAI,CAAC,CAAC,MAAMT,IAAI,CAACU;IACtD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,oBACE/E,MAAA,CAAAa,OAAA,CAAAmE,aAAA,CAAC7E,YAAA,CAAA8E,IAAI;IAACC,KAAK,EAAE,CAAC;MAAEC,IAAI,EAAE,CAAC;MAAEC,eAAe,EAAE9B,MAAM,CAAC+B;IAAW,CAAC,EAAEtB,cAAc;EAAE,GAC5E9B,OAAO,CAACqD,QAAQ,iBACftF,MAAA,CAAAa,OAAA,CAAAmE,aAAA,CAAC3E,2BAAA,CAAAkF,mBAAmB;IAACL,KAAK,EAAEM,MAAM,CAACC,YAAa;IAACC,IAAI,EAAEtC,OAAO,CAACuC,MAAM,CAACC;EAA4B,EACnG,eACD5F,MAAA,CAAAa,OAAA,CAAAmE,aAAA,CAACvE,aAAA,CAAAI,OAAY,EAAAC,QAAA,KACPmC,aAAa;IACjBD,YAAY,EAAEA,YAAa;IAC3BD,eAAe,EAAEA,eAAgB;IACjCF,wBAAwB,EAAEA,wBAAyB;IACnDf,GAAG,EAAEA,GAAI;IACT+D,IAAI,EAAEnD,QAAS;IACfwB,UAAU,EAAEA,UAAW;IACvB4B,YAAY,EAAEC,+BAAoB;IAClCC,qBAAqB,EAAE;IACrB;IACA/D,OAAO,CAACqD,QAAQ,IAAIE,MAAM,CAACS,iBAAiB,EAC5ChD,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE+C,qBAAqB;EACpC,GACF,EACDzD,uBAAuB,iBACtBvC,MAAA,CAAAa,OAAA,CAAAmE,aAAA,CAAC7E,YAAA,CAAA8E,IAAI;IAACC,KAAK,EAAE,CAACM,MAAM,CAACU,YAAY,EAAEnC,cAAc;EAAE,GAChDxB,uBAAuB,CAAC;IACvB4D,OAAO,EAAExD,WAAW,CAACtB,MAAM,GAAG,CAAC,KAAKW,OAAO,EAAE,IAAIc,sBAAsB,CAAC;IACxEyB,OAAO,EAAEA,CAAA,KAAMrB,wBAAwB,EAAE;IACzCP;EACF,CAAC,CAAC,CAEL,EACAH,0BAA0B,iBACzBxC,MAAA,CAAAa,OAAA,CAAAmE,aAAA,CAAC7E,YAAA,CAAA8E,IAAI;IAACC,KAAK,EAAE,CAACM,MAAM,CAACY,YAAY,EAAErC,cAAc;EAAE,GAChDvB,0BAA0B,CAAC;IAC1B2D,OAAO,EAAEnE,OAAO,EAAE,IAAIc,sBAAsB;IAC5CyB,OAAO,EAAEA,CAAA,KAAMpB,2BAA2B;EAC5C,CAAC,CAAC,CAEL,CACI;AAEX,CAAC;AAED,MAAMW,yBAAyB,GAAGuC,KAAA,IAU5B;EAAA,IAVmF;IACvFpE,OAAO;IACPK,aAAa;IACbF,qBAAqB;IACrBF,aAAa;IACbC,eAAe;IACfE;EAIF,CAAC,GAAAgE,KAAA;EACC,MAAM;IAAE/C;EAAO,CAAC,GAAG,IAAAC,yCAAa,GAAE;EAClC,MAAM;IAAEH;EAAQ,CAAC,GAAG,IAAAC,2BAAe,GAAE;EACrC,MAAMiD,KAAK,GAAG,IAAAC,oCAAQ,GAAE;EACxB,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,0CAAc,GAAE;EACtC,MAAM;IAAEC;EAAM,CAAC,GAAG,IAAAC,oCAAQ,GAAE;EAC5B,MAAM;IAAEC,gBAAgB;IAAEC;EAAY,CAAC,GAAG,IAAAC,8BAAkB,GAAE;EAC9D,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,2BAAe,GAAE;EAEvC,MAAMC,mBAAmB,GAAIxC,OAA0B,IAAK;IAC1D+B,SAAS,CAAC;MACRU,UAAU,EAAE,CACV;QACEC,KAAK,EAAE/D,OAAO,CAACuC,MAAM,CAACyB,4BAA4B;QAClD7C,OAAO,EAAEA,CAAA,KAAM;UACbnC,qBAAqB,CAACqC,OAAO,CAAC,CAAC4C,KAAK,CAAC,MAAMf,KAAK,CAAC9C,IAAI,CAACJ,OAAO,CAACkE,KAAK,CAACC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACjG;MACF,CAAC,EACD;QACEJ,KAAK,EAAE/D,OAAO,CAACuC,MAAM,CAAC6B,6BAA6B;QACnDC,UAAU,EAAEnE,MAAM,CAACoE,EAAE,CAACC,MAAM,CAAC9G,OAAO,CAAC+G,IAAI,CAACC,WAAW;QACrDtD,OAAO,EAAEA,CAAA,KAAMuD,aAAa,CAACrD,OAAO;MACtC,CAAC;IAEL,CAAC,CAAC;EACJ,CAAC;EACD,MAAMqD,aAAa,GAAIrD,OAA0B,IAAK;IACpDiC,KAAK,CAAC;MACJS,KAAK,EAAE/D,OAAO,CAACuC,MAAM,CAACoC,oCAAoC;MAC1DC,OAAO,EAAE,CACP;QACEtC,IAAI,EAAEtC,OAAO,CAACuC,MAAM,CAACsC;MACvB,CAAC,EACD;QACEvC,IAAI,EAAEtC,OAAO,CAACuC,MAAM,CAACuC,iCAAiC;QACtDhD,KAAK,EAAE,aAAa;QACpBX,OAAO,EAAEA,CAAA,KAAM;UACbpC,eAAe,CAACsC,OAAO,CAAC,CAAC4C,KAAK,CAAC,MAAMf,KAAK,CAAC9C,IAAI,CAACJ,OAAO,CAACkE,KAAK,CAACa,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC3F;MACF,CAAC;IAEL,CAAC,CAAC;EACJ,CAAC;EAED,OAAQC,GAAoB,IAAK;IAC/B,IAAI,CAACA,GAAG,CAACC,aAAa,EAAE,IAAI,CAACD,GAAG,CAACE,aAAa,EAAE,EAAE;MAChD,OAAO;QAAE/D,OAAO,EAAEgE,SAAS;QAAE/D,WAAW,EAAE+D;MAAU,CAAC;IACvD;IAEA,MAAMrB,UAAyC,GAAG,EAAE;IACpD,MAAMsB,QAAsB,GAAG;MAC7BjE,OAAO,EAAEgE,SAAS;MAClB/D,WAAW,EAAE+D;IACf,CAAC;IAED,IAAIH,GAAG,CAACC,aAAa,EAAE,EAAE;MACvBnB,UAAU,CAACuB,IAAI,CAAC;QACdC,IAAI,EAAE,MAAM;QACZvB,KAAK,EAAE/D,OAAO,CAACuC,MAAM,CAACgD,oBAAoB;QAC1CpE,OAAO,EAAEA,CAAA,KAAM;UACbqC,gBAAgB,CAACgC,SAAS,CAACR,GAAG,CAAC3D,OAAO,IAAI,EAAE,CAAC;UAC7C6B,KAAK,CAAC9C,IAAI,CAACJ,OAAO,CAACkE,KAAK,CAACuB,OAAO,EAAE,SAAS,CAAC;QAC9C;MACF,CAAC,CAAC;MAEF,IAAI,CAAC5G,OAAO,CAAC6G,WAAW,EAAE;QACxB,IAAI,IAAAC,uBAAW,EAACX,GAAG,EAAE9F,aAAa,CAAC,IAAI8F,GAAG,CAACY,aAAa,KAAK,WAAW,EAAE;UACxE9B,UAAU,CAACuB,IAAI,CACb;YACEC,IAAI,EAAE,MAAM;YACZvB,KAAK,EAAE/D,OAAO,CAACuC,MAAM,CAACsD,oBAAoB;YAC1C1E,OAAO,EAAEA,CAAA,KAAMrC,aAAa,CAACkG,GAAG;UAClC,CAAC,EACD;YACEM,IAAI,EAAE,QAAQ;YACdvB,KAAK,EAAE/D,OAAO,CAACuC,MAAM,CAACuD,sBAAsB;YAC5C3E,OAAO,EAAEA,CAAA,KAAMuD,aAAa,CAACM,GAAG;UAClC,CAAC,CACF;QACH;MACF;IACF;IAEA,IAAIA,GAAG,CAACE,aAAa,EAAE,EAAE;MACvBpB,UAAU,CAACuB,IAAI,CAAC;QACdC,IAAI,EAAE,UAAU;QAChBvB,KAAK,EAAE/D,OAAO,CAACuC,MAAM,CAACwD,oBAAoB;QAC1C5E,OAAO,EAAE,MAAAA,CAAA,KAAY;UACnB,IAAI,IAAA6E,sBAAU,EAAChB,GAAG,CAACiB,IAAI,CAAC,GAAG,CAAC,EAAE;YAC5B/C,KAAK,CAAC9C,IAAI,CAACJ,OAAO,CAACkE,KAAK,CAACgC,cAAc,EAAE,SAAS,CAAC;UACrD;UAEAzC,WAAW,CACR0C,IAAI,CAAC;YAAEC,OAAO,EAAEpB,GAAG,CAACqB,GAAG;YAAEC,QAAQ,EAAEtB,GAAG,CAACuB,IAAI;YAAEC,QAAQ,EAAExB,GAAG,CAACyB;UAAK,CAAC,CAAC,CAClEC,IAAI,CAAEtB,QAAQ,IAAK;YAClBlC,KAAK,CAAC9C,IAAI,CAACJ,OAAO,CAACkE,KAAK,CAACyC,WAAW,EAAE,SAAS,CAAC;YAChDC,kBAAM,CAACC,GAAG,CAAC,eAAe,EAAEzB,QAAQ,CAAC;UACvC,CAAC,CAAC,CACDnB,KAAK,CAAE6C,GAAG,IAAK;YACd5D,KAAK,CAAC9C,IAAI,CAACJ,OAAO,CAACkE,KAAK,CAAC6C,cAAc,EAAE,OAAO,CAAC;YACjDH,kBAAM,CAACC,GAAG,CAAC,mBAAmB,EAAEC,GAAG,CAAC;UACtC,CAAC,CAAC;QACN;MACF,CAAC,CAAC;MAEF,IAAI,CAACjI,OAAO,CAAC6G,WAAW,EAAE;QACxB,IAAI,IAAAC,uBAAW,EAACX,GAAG,EAAE9F,aAAa,CAAC,IAAI8F,GAAG,CAACY,aAAa,KAAK,WAAW,EAAE;UACxE9B,UAAU,CAACuB,IAAI,CAAC;YACdC,IAAI,EAAE,QAAQ;YACdvB,KAAK,EAAE/D,OAAO,CAACuC,MAAM,CAACuD,sBAAsB;YAC5C3E,OAAO,EAAEA,CAAA,KAAMuD,aAAa,CAACM,GAAG;UAClC,CAAC,CAAC;QACJ;MACF;MAEA,MAAMwB,QAAQ,GAAG,IAAAQ,uBAAW,EAAChC,GAAG,CAACyB,IAAI,IAAI,IAAAQ,4BAAgB,EAACjC,GAAG,CAACuB,IAAI,CAAC,CAAC;MACpE,QAAQC,QAAQ;QACd,KAAK,OAAO;QACZ,KAAK,OAAO;QACZ,KAAK,OAAO;UAAE;YACZpB,QAAQ,CAACjE,OAAO,GAAG,MAAM;cACvBlC,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAG+F,GAAG,EAAE,MAAMjG,eAAe,CAACiG,GAAG,CAAC,EAAE,IAAAkC,0CAA8B,EAAClC,GAAG,CAAC,CAAC;YAC7F,CAAC;YACD;UACF;QACA;UAAS;YACPI,QAAQ,CAACjE,OAAO,GAAG,MAAMgG,iBAAQ,CAACC,OAAO,CAACpC,GAAG,CAACqB,GAAG,CAAC;YAClD;UACF;MAAC;IAEL;IAEA,IAAIvC,UAAU,CAAC7F,MAAM,GAAG,CAAC,EAAE;MACzBmH,QAAQ,CAAChE,WAAW,GAAG,MAAM;QAC3BgC,SAAS,CAAC;UACRU,UAAU;UACVuD,eAAe,EAAE,IAAAC,gCAAoB,EACnCzI,OAAO,EACP8E,SAAS,CAAC4D,gBAAgB,CAACC,YAAY,CAAC3I,OAAO,CAAC4I,eAAe,CAChE,GACGC,KAAA;YAAA,IAAC;cAAEC;YAAQ,CAAC,GAAAD,KAAA;YAAA,oBAAK9K,MAAA,CAAAa,OAAA,CAAAmE,aAAA,CAACtE,eAAA,CAAAsK,cAAc,CAACC,WAAW;cAACxG,OAAO,EAAE2D,GAAI;cAACnG,OAAO,EAAEA,OAAQ;cAAC8I,OAAO,EAAEA;YAAQ,EAAG;UAAA,IACjGxC;QACN,CAAC,CAAC;MACJ,CAAC;IACH;IAEA,IAAIH,GAAG,CAACY,aAAa,KAAK,QAAQ,EAAE;MAClCR,QAAQ,CAAChE,WAAW,GAAG,MAAMyC,mBAAmB,CAACmB,GAAG,CAAC;MACrDI,QAAQ,CAACjE,OAAO,GAAG,MAAM;QACvBnC,qBAAqB,CAACgG,GAAG,CAAC,CAACf,KAAK,CAAC,MAAMf,KAAK,CAAC9C,IAAI,CAACJ,OAAO,CAACkE,KAAK,CAACC,gBAAgB,EAAE,OAAO,CAAC,CAAC;MAC7F,CAAC;IACH;IAEA,IAAIa,GAAG,CAACY,aAAa,KAAK,SAAS,EAAE;MACnCR,QAAQ,CAAChE,WAAW,GAAG+D,SAAS;MAChCC,QAAQ,CAACjE,OAAO,GAAGgE,SAAS;IAC9B;IAEA,OAAOC,QAAQ;EACjB,CAAC;AACH,CAAC;AAED,MAAMhD,MAAM,GAAG,IAAA0F,4CAAgB,EAAC;EAC9BzF,YAAY,EAAE;IACZ0F,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,GAAG;IACXC,GAAG,EAAE,CAAC;IACN3H,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT,CAAC;EACDsC,iBAAiB,EAAE;IACjBqF,aAAa,EAAE;EACjB,CAAC;EACDpF,YAAY,EAAE;IACZiF,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,GAAG;IACXG,MAAM,EAAE,EAAE;IACVC,SAAS,EAAE;EACb,CAAC;EACDpF,YAAY,EAAE;IACZ+E,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,GAAG;IACXG,MAAM,EAAE,EAAE;IACV5H,KAAK,EAAE;EACT;AACF,CAAC,CAAC;;AAEF;AAAA,IAAA8H,QAAA,gBACeC,cAAK,CAACC,UAAU,CAAC/J,kBAAkB,CAAC;AAAAgK,OAAA,CAAA/K,OAAA,GAAA4K,QAAA"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ /**
9
+ * */
10
+
11
+ function shouldUseScrollViewEnhancer() {
12
+ if (_reactNative.Platform.constants.reactNativeVersion.major < 1) {
13
+ if (_reactNative.Platform.constants.reactNativeVersion.minor < 72) {
14
+ return true;
15
+ }
16
+ }
17
+ return false;
18
+ }
19
+ function getFlatList() {
20
+ if (shouldUseScrollViewEnhancer()) {
21
+ try {
22
+ return require('@sendbird/react-native-scrollview-enhancer').FlatList;
23
+ } catch {
24
+ return require('react-native').FlatList;
25
+ }
26
+ } else {
27
+ return require('react-native').FlatList;
28
+ }
29
+ }
30
+ const FlatListInternal = getFlatList();
31
+ var _default = FlatListInternal;
32
+ exports.default = _default;
33
+ //# sourceMappingURL=FlatListInternal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","shouldUseScrollViewEnhancer","Platform","constants","reactNativeVersion","major","minor","getFlatList","FlatList","FlatListInternal","_default","exports","default"],"sources":["FlatListInternal.tsx"],"sourcesContent":["/**\n * */\nimport type { ForwardedRef, ReactElement } from 'react';\nimport type { FlatListProps, FlatList as RNFlatList, ScrollViewProps } from 'react-native';\nimport { Platform } from 'react-native';\n\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\ntype FlatListBidirectional<T = SendbirdMessage> = (props: FlatListProps<T> & BidirectionalProps<T>) => ReactElement;\ntype BidirectionalProps<T> = {\n onStartReached?: ((info: { distanceFromStart: number }) => void) | null | undefined;\n onStartReachedThreshold?: number | null | undefined;\n onEndReached?: ((info: { distanceFromEnd: number }) => void) | null | undefined;\n onEndReachedThreshold?: number | null | undefined;\n maintainVisibleContentPosition?: ScrollViewProps['maintainVisibleContentPosition'];\n ref: ForwardedRef<RNFlatList<T>>;\n};\n\nfunction shouldUseScrollViewEnhancer() {\n if (Platform.constants.reactNativeVersion.major < 1) {\n if (Platform.constants.reactNativeVersion.minor < 72) {\n return true;\n }\n }\n return false;\n}\nfunction getFlatList(): FlatListBidirectional {\n if (shouldUseScrollViewEnhancer()) {\n try {\n return require('@sendbird/react-native-scrollview-enhancer').FlatList;\n } catch {\n return require('react-native').FlatList;\n }\n } else {\n return require('react-native').FlatList;\n }\n}\n\nconst FlatListInternal = getFlatList();\nexport default FlatListInternal;\n"],"mappings":";;;;;;AAIA,IAAAA,YAAA,GAAAC,OAAA;AAJA;AACA;;AAiBA,SAASC,2BAA2BA,CAAA,EAAG;EACrC,IAAIC,qBAAQ,CAACC,SAAS,CAACC,kBAAkB,CAACC,KAAK,GAAG,CAAC,EAAE;IACnD,IAAIH,qBAAQ,CAACC,SAAS,CAACC,kBAAkB,CAACE,KAAK,GAAG,EAAE,EAAE;MACpD,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd;AACA,SAASC,WAAWA,CAAA,EAA0B;EAC5C,IAAIN,2BAA2B,EAAE,EAAE;IACjC,IAAI;MACF,OAAOD,OAAO,CAAC,4CAA4C,CAAC,CAACQ,QAAQ;IACvE,CAAC,CAAC,MAAM;MACN,OAAOR,OAAO,CAAC,cAAc,CAAC,CAACQ,QAAQ;IACzC;EACF,CAAC,MAAM;IACL,OAAOR,OAAO,CAAC,cAAc,CAAC,CAACQ,QAAQ;EACzC;AACF;AAEA,MAAMC,gBAAgB,GAAGF,WAAW,EAAE;AAAC,IAAAG,QAAA,GACxBD,gBAAgB;AAAAE,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
- var _reactNativeScrollviewEnhancer = require("@sendbird/react-native-scrollview-enhancer");
10
9
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
11
10
  var _uikitUtils = require("@sendbird/uikit-utils");
11
+ var _FlatListInternal = _interopRequireDefault(require("./FlatListInternal"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
13
  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); }
13
14
  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; }
14
15
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -22,7 +23,6 @@ const ChatFlatList = /*#__PURE__*/(0, _react.forwardRef)(function CustomFlatList
22
23
  onTopReached,
23
24
  onBottomReached,
24
25
  onScrolledAwayFromBottom,
25
- onLeaveScrollBottom,
26
26
  onScroll,
27
27
  ...props
28
28
  } = _ref;
@@ -39,19 +39,17 @@ const ChatFlatList = /*#__PURE__*/(0, _react.forwardRef)(function CustomFlatList
39
39
  const currOffsetY = contentOffset.y;
40
40
  if (BOTTOM_DETECT_THRESHOLD < prevOffsetY && currOffsetY <= BOTTOM_DETECT_THRESHOLD) {
41
41
  onScrolledAwayFromBottom(false);
42
- onLeaveScrollBottom === null || onLeaveScrollBottom === void 0 ? void 0 : onLeaveScrollBottom(false);
43
42
  } else if (BOTTOM_DETECT_THRESHOLD < currOffsetY && prevOffsetY <= BOTTOM_DETECT_THRESHOLD) {
44
43
  onScrolledAwayFromBottom(true);
45
- onLeaveScrollBottom === null || onLeaveScrollBottom === void 0 ? void 0 : onLeaveScrollBottom(true);
46
44
  }
47
45
  contentOffsetY.current = contentOffset.y;
48
46
  });
49
47
  if (__DEV__ && !ANDROID_BUG_ALERT_SHOWED) {
50
48
  ANDROID_BUG_ALERT_SHOWED = true;
51
49
  // eslint-disable-next-line no-console
52
- console.warn('UIKit Warning: Inverted FlatList has a performance issue on Android, Maybe this is a bug please refer link\nhttps://github.com/facebook/react-native/issues/30034');
50
+ console.warn('UIKit Warning: The inverted FlatList has a performance issue on Android. Maybe this is a bug.\n' + 'Please refer to the link: https://github.com/facebook/react-native/issues/30034');
53
51
  }
54
- return /*#__PURE__*/_react.default.createElement(_reactNativeScrollviewEnhancer.FlatList, _extends({
52
+ return /*#__PURE__*/_react.default.createElement(_FlatListInternal.default, _extends({
55
53
  bounces: false,
56
54
  removeClippedSubviews: true,
57
55
  keyboardDismissMode: 'on-drag',
@@ -82,4 +80,4 @@ const ChatFlatList = /*#__PURE__*/(0, _react.forwardRef)(function CustomFlatList
82
80
  });
83
81
  var _default = ChatFlatList;
84
82
  exports.default = _default;
85
- //# sourceMappingURL=ChatFlatList.js.map
83
+ //# sourceMappingURL=index.js.map