@sendbird/uikit-react-native 3.5.4 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.md +11 -27
  2. package/lib/commonjs/components/ChannelInput/SendInput.js +23 -6
  3. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  4. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  5. package/lib/commonjs/components/ChannelMessageList/index.js +22 -4
  6. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  7. package/lib/commonjs/components/ChannelThreadMessageList/index.js +349 -0
  8. package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -0
  9. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  10. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  11. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +100 -0
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +24 -6
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  15. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +23 -6
  16. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  17. package/lib/commonjs/components/ThreadChatFlatList/index.js +76 -0
  18. package/lib/commonjs/components/ThreadChatFlatList/index.js.map +1 -0
  19. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +41 -0
  20. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  21. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +74 -0
  22. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  23. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +42 -0
  24. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  25. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +94 -0
  26. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  27. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +61 -0
  28. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  29. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +127 -0
  30. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  31. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +206 -0
  32. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -0
  33. package/lib/commonjs/containers/SendbirdUIKitContainer.js +12 -11
  34. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js +7 -0
  36. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -5
  38. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +14 -4
  40. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  42. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js +82 -0
  43. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  44. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js +44 -0
  45. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  46. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +127 -0
  47. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  48. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +315 -0
  49. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  50. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +27 -0
  51. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  52. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +27 -0
  53. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  54. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +195 -0
  55. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  56. package/lib/commonjs/domain/groupChannelThread/index.js +69 -0
  57. package/lib/commonjs/domain/groupChannelThread/index.js.map +1 -0
  58. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js +42 -0
  59. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  60. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js +148 -0
  61. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  62. package/lib/commonjs/domain/groupChannelThread/types.js +6 -0
  63. package/lib/commonjs/domain/groupChannelThread/types.js.map +1 -0
  64. package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -5
  65. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  66. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +267 -0
  67. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -0
  68. package/lib/commonjs/hooks/useMentionSuggestion.js +5 -2
  69. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
  70. package/lib/commonjs/index.js +72 -40
  71. package/lib/commonjs/index.js.map +1 -1
  72. package/lib/commonjs/libs/EmojiManager.js.map +1 -1
  73. package/lib/commonjs/libs/InternalLocalCacheStorage.js +65 -19
  74. package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -1
  75. package/lib/commonjs/libs/VoiceMessageStatusManager.js +66 -0
  76. package/lib/commonjs/libs/VoiceMessageStatusManager.js.map +1 -0
  77. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  78. package/lib/commonjs/localization/createBaseStringSet.js +25 -3
  79. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  80. package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
  81. package/lib/commonjs/types.js.map +1 -1
  82. package/lib/commonjs/version.js +1 -1
  83. package/lib/commonjs/version.js.map +1 -1
  84. package/lib/module/components/ChannelInput/SendInput.js +23 -6
  85. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  86. package/lib/module/components/ChannelInput/index.js.map +1 -1
  87. package/lib/module/components/ChannelMessageList/index.js +22 -4
  88. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  89. package/lib/module/components/ChannelThreadMessageList/index.js +341 -0
  90. package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -0
  91. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  92. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  93. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +92 -0
  94. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  95. package/lib/module/components/GroupChannelMessageRenderer/index.js +24 -6
  96. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  97. package/lib/module/components/ReactionAddons/MessageReactionAddon.js +23 -6
  98. package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  99. package/lib/module/components/ThreadChatFlatList/index.js +66 -0
  100. package/lib/module/components/ThreadChatFlatList/index.js.map +1 -0
  101. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +34 -0
  102. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  103. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +67 -0
  104. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  105. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +34 -0
  106. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  107. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +87 -0
  108. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  109. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +54 -0
  110. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  111. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +119 -0
  112. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  113. package/lib/module/components/ThreadParentMessageRenderer/index.js +196 -0
  114. package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -0
  115. package/lib/module/containers/SendbirdUIKitContainer.js +13 -12
  116. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  117. package/lib/module/contexts/SendbirdChatCtx.js +6 -0
  118. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  119. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +30 -6
  120. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  121. package/lib/module/domain/groupChannel/module/moduleContext.js +14 -4
  122. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  123. package/lib/module/domain/groupChannel/types.js.map +1 -1
  124. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js +73 -0
  125. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  126. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js +34 -0
  127. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  128. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +117 -0
  129. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  130. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +305 -0
  131. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  132. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +19 -0
  133. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  134. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +19 -0
  135. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  136. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +185 -0
  137. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  138. package/lib/module/domain/groupChannelThread/index.js +9 -0
  139. package/lib/module/domain/groupChannelThread/index.js.map +1 -0
  140. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js +34 -0
  141. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  142. package/lib/module/domain/groupChannelThread/module/moduleContext.js +137 -0
  143. package/lib/module/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  144. package/lib/module/domain/groupChannelThread/types.js +2 -0
  145. package/lib/module/domain/groupChannelThread/types.js.map +1 -0
  146. package/lib/module/fragments/createGroupChannelFragment.js +33 -7
  147. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  148. package/lib/module/fragments/createGroupChannelThreadFragment.js +257 -0
  149. package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -0
  150. package/lib/module/hooks/useMentionSuggestion.js +5 -2
  151. package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
  152. package/lib/module/index.js +3 -0
  153. package/lib/module/index.js.map +1 -1
  154. package/lib/module/libs/EmojiManager.js.map +1 -1
  155. package/lib/module/libs/InternalLocalCacheStorage.js +65 -19
  156. package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -1
  157. package/lib/module/libs/VoiceMessageStatusManager.js +59 -0
  158. package/lib/module/libs/VoiceMessageStatusManager.js.map +1 -0
  159. package/lib/module/localization/StringSet.type.js.map +1 -1
  160. package/lib/module/localization/createBaseStringSet.js +27 -4
  161. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  162. package/lib/module/platform/createMediaService.native.js.map +1 -1
  163. package/lib/module/types.js.map +1 -1
  164. package/lib/module/version.js +1 -1
  165. package/lib/module/version.js.map +1 -1
  166. package/lib/typescript/src/components/ChannelInput/index.d.ts +1 -0
  167. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +5 -2
  168. package/lib/typescript/src/components/ChannelThreadMessageList/index.d.ts +55 -0
  169. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +1 -1
  170. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.d.ts +9 -0
  171. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -1
  172. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +3 -1
  173. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +3 -1
  174. package/lib/typescript/src/components/ReactionAddons/index.d.ts +2 -1
  175. package/lib/typescript/src/components/ThreadChatFlatList/index.d.ts +9 -0
  176. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.d.ts +4 -0
  177. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.d.ts +4 -0
  178. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.d.ts +9 -0
  179. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.d.ts +13 -0
  180. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.d.ts +10 -0
  181. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.d.ts +10 -0
  182. package/lib/typescript/src/components/ThreadParentMessageRenderer/index.d.ts +20 -0
  183. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +8 -10
  184. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +15 -1
  185. package/lib/typescript/src/domain/groupChannel/types.d.ts +4 -1
  186. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadHeader.d.ts +4 -0
  187. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadInput.d.ts +3 -0
  188. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.d.ts +7 -0
  189. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.d.ts +8 -0
  190. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.d.ts +3 -0
  191. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.d.ts +3 -0
  192. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.d.ts +4 -0
  193. package/lib/typescript/src/domain/groupChannelThread/index.d.ts +8 -0
  194. package/lib/typescript/src/domain/groupChannelThread/module/createGroupChannelThreadModule.d.ts +3 -0
  195. package/lib/typescript/src/domain/groupChannelThread/module/moduleContext.d.ts +3 -0
  196. package/lib/typescript/src/domain/groupChannelThread/types.d.ts +136 -0
  197. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  198. package/lib/typescript/src/fragments/createGroupChannelThreadFragment.d.ts +5 -0
  199. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  200. package/lib/typescript/src/index.d.ts +3 -0
  201. package/lib/typescript/src/libs/InternalLocalCacheStorage.d.ts +5 -4
  202. package/lib/typescript/src/libs/VoiceMessageStatusManager.d.ts +11 -0
  203. package/lib/typescript/src/localization/StringSet.type.d.ts +23 -0
  204. package/lib/typescript/src/localization/createBaseStringSet.d.ts +1 -1
  205. package/lib/typescript/src/types.d.ts +4 -1
  206. package/lib/typescript/src/version.d.ts +1 -1
  207. package/package.json +27 -22
  208. package/src/components/ChannelInput/SendInput.tsx +24 -5
  209. package/src/components/ChannelInput/index.tsx +1 -0
  210. package/src/components/ChannelMessageList/index.tsx +27 -5
  211. package/src/components/ChannelThreadMessageList/index.tsx +406 -0
  212. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +3 -3
  213. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.tsx +96 -0
  214. package/src/components/GroupChannelMessageRenderer/index.tsx +21 -5
  215. package/src/components/ReactionAddons/MessageReactionAddon.tsx +38 -5
  216. package/src/components/ThreadChatFlatList/index.tsx +63 -0
  217. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.tsx +36 -0
  218. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.tsx +61 -0
  219. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.tsx +45 -0
  220. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.tsx +107 -0
  221. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.tsx +133 -0
  222. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.tsx +65 -0
  223. package/src/components/ThreadParentMessageRenderer/index.tsx +194 -0
  224. package/src/containers/SendbirdUIKitContainer.tsx +28 -17
  225. package/src/contexts/SendbirdChatCtx.tsx +20 -0
  226. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +37 -8
  227. package/src/domain/groupChannel/module/moduleContext.tsx +12 -2
  228. package/src/domain/groupChannel/types.ts +5 -0
  229. package/src/domain/groupChannelThread/component/GroupChannelThreadHeader.tsx +63 -0
  230. package/src/domain/groupChannelThread/component/GroupChannelThreadInput.tsx +38 -0
  231. package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +105 -0
  232. package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +326 -0
  233. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.tsx +18 -0
  234. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.tsx +18 -0
  235. package/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.tsx +174 -0
  236. package/src/domain/groupChannelThread/index.ts +8 -0
  237. package/src/domain/groupChannelThread/module/createGroupChannelThreadModule.tsx +35 -0
  238. package/src/domain/groupChannelThread/module/moduleContext.tsx +165 -0
  239. package/src/domain/groupChannelThread/types.ts +184 -0
  240. package/src/fragments/createGroupChannelFragment.tsx +38 -8
  241. package/src/fragments/createGroupChannelThreadFragment.tsx +280 -0
  242. package/src/hooks/useMentionSuggestion.ts +13 -9
  243. package/src/index.ts +4 -0
  244. package/src/libs/EmojiManager.ts +2 -2
  245. package/src/libs/InternalLocalCacheStorage.ts +70 -21
  246. package/src/libs/VoiceMessageStatusManager.ts +56 -0
  247. package/src/localization/StringSet.type.ts +27 -0
  248. package/src/localization/createBaseStringSet.ts +33 -4
  249. package/src/platform/createMediaService.native.tsx +9 -1
  250. package/src/types.ts +6 -1
  251. package/src/version.ts +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useKeyboardStatus","_interopRequireDefault","_useMentionSuggestion","_moduleContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelThreadSuggestedMentionList","_ref","text","selection","inputHeight","bottomInset","onPressToMention","mentionedUsers","width","screenWidth","height","screenHeight","useWindowDimensions","channel","useContext","GroupChannelThreadContexts","Fragment","sdk","mentionManager","useSendbirdChat","STRINGS","useLocalization","colors","useUIKitTheme","topInset","useHeaderStyle","left","right","useSafeAreaInsets","keyboard","useKeyboardStatus","members","reset","searchStringRange","searchLimited","useMentionSuggestion","isLandscape","isShortened","visible","canRenderMembers","length","maxHeight","styles","suggestion","renderLimitGuide","createElement","View","style","borderTopColor","onBackground04","Icon","icon","size","containerStyle","marginRight","color","onBackground02","Text","body3","GROUP_CHANNEL_THREAD","MENTION_LIMITED","config","mentionLimit","renderMembers","map","member","Pressable","onPress","userId","userContainer","Avatar","uri","profileUrl","userAvatar","userInfo","body2","onBackground01","numberOfLines","userNickname","nickname","LABELS","USER_NO_NAME","onBackground03","Divider","position","bottom","pointerEvents","container","ScrollView","bounces","keyboardDismissMode","keyboardShouldPersistTaps","scrollView","backgroundColor","background","bottomSpace","borderTopWidth","contentContainerStyle","paddingLeft","paddingRight","conditionChaining","createStyleSheet","top","flexDirection","alignItems","justifyContent","flex","flexShrink","lineHeight","textAlignVertical","minWidth","paddingHorizontal","_default","exports"],"sources":["GroupChannelThreadSuggestedMentionList.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { Pressable, ScrollView, View, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Avatar,\n Divider,\n Icon,\n Text,\n createStyleSheet,\n useHeaderStyle,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport useKeyboardStatus from '../../../hooks/useKeyboardStatus';\nimport useMentionSuggestion from '../../../hooks/useMentionSuggestion';\nimport { GroupChannelThreadContexts } from '../module/moduleContext';\nimport type { GroupChannelThreadProps } from '../types';\n\nconst GroupChannelThreadSuggestedMentionList = ({\n text,\n selection,\n inputHeight,\n bottomInset,\n onPressToMention,\n mentionedUsers,\n}: GroupChannelThreadProps['SuggestedMentionList']) => {\n const { width: screenWidth, height: screenHeight } = useWindowDimensions();\n const { channel } = useContext(GroupChannelThreadContexts.Fragment);\n const { sdk, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { topInset } = useHeaderStyle();\n const { left, right } = useSafeAreaInsets();\n\n const keyboard = useKeyboardStatus();\n\n const { members, reset, searchStringRange, searchLimited } = useMentionSuggestion({\n sdk,\n text,\n selection,\n channel,\n mentionedUsers,\n });\n\n const isLandscape = screenWidth > screenHeight;\n const isShortened = isLandscape && keyboard.visible;\n const canRenderMembers = members.length > 0;\n const maxHeight = isShortened ? screenHeight - (topInset + inputHeight + keyboard.height) : styles.suggestion.height;\n\n const renderLimitGuide = () => {\n return (\n <View style={[styles.searchLimited, { borderTopColor: colors.onBackground04 }]}>\n <Icon icon={'info'} size={20} containerStyle={{ marginRight: 4 }} color={colors.onBackground02} />\n <Text body3 color={colors.onBackground02}>\n {STRINGS.GROUP_CHANNEL_THREAD.MENTION_LIMITED(mentionManager.config.mentionLimit)}\n </Text>\n </View>\n );\n };\n\n const renderMembers = () => {\n return (\n <View>\n {members.map((member) => {\n return (\n <Pressable\n onPress={() => {\n onPressToMention(member, searchStringRange);\n reset();\n }}\n key={member.userId}\n style={styles.userContainer}\n >\n <Avatar size={28} uri={member.profileUrl} containerStyle={styles.userAvatar} />\n <View style={styles.userInfo}>\n <Text body2 color={colors.onBackground01} numberOfLines={1} style={styles.userNickname}>\n {member.nickname || STRINGS.LABELS.USER_NO_NAME}\n </Text>\n <Text body3 color={colors.onBackground03} numberOfLines={1} style={styles.userId}>\n {member.userId}\n </Text>\n <Divider style={{ position: 'absolute', bottom: 0 }} />\n </View>\n </Pressable>\n );\n })}\n </View>\n );\n };\n\n return (\n <Pressable\n onPress={reset}\n pointerEvents={canRenderMembers ? 'auto' : 'none'}\n style={[styles.container, { bottom: inputHeight + bottomInset }]}\n >\n <ScrollView\n bounces={false}\n keyboardDismissMode={'none'}\n keyboardShouldPersistTaps={'always'}\n style={[\n styles.scrollView,\n {\n maxHeight,\n backgroundColor: colors.background,\n bottom: keyboard.bottomSpace,\n },\n canRenderMembers && {\n borderTopWidth: 1,\n borderTopColor: colors.onBackground04,\n },\n ]}\n contentContainerStyle={{ paddingLeft: left, paddingRight: right }}\n >\n {conditionChaining([searchLimited, canRenderMembers], [renderLimitGuide(), renderMembers(), null])}\n </ScrollView>\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n suggestion: {\n height: 196,\n },\n container: {\n position: 'absolute',\n top: 0,\n right: 0,\n left: 0,\n },\n scrollView: {\n position: 'absolute',\n left: 0,\n right: 0,\n },\n userContainer: {\n paddingLeft: 16,\n flexDirection: 'row',\n height: 44,\n alignItems: 'center',\n justifyContent: 'center',\n },\n userAvatar: {\n marginRight: 16,\n },\n userInfo: {\n flexDirection: 'row',\n flex: 1,\n },\n userNickname: {\n flexShrink: 1,\n lineHeight: 44,\n textAlignVertical: 'center',\n marginRight: 6,\n },\n userId: {\n lineHeight: 44,\n textAlignVertical: 'center',\n minWidth: 32,\n flexShrink: 1,\n marginRight: 16,\n },\n searchLimited: {\n borderTopWidth: 1,\n paddingHorizontal: 16,\n height: 44,\n flexDirection: 'row',\n alignItems: 'center',\n },\n});\nexport default GroupChannelThreadSuggestedMentionList;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,2BAAA,GAAAF,OAAA;AAEA,IAAAG,2BAAA,GAAAH,OAAA;AASA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAC,sBAAA,CAAAP,OAAA;AACA,IAAAQ,qBAAA,GAAAD,sBAAA,CAAAP,OAAA;AACA,IAAAS,cAAA,GAAAT,OAAA;AAAqE,SAAAO,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAf,wBAAAW,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAGrE,MAAMW,sCAAsC,GAAGC,IAAA,IAOQ;EAAA,IAPP;IAC9CC,IAAI;IACJC,SAAS;IACTC,WAAW;IACXC,WAAW;IACXC,gBAAgB;IAChBC;EAC+C,CAAC,GAAAN,IAAA;EAChD,MAAM;IAAEO,KAAK,EAAEC,WAAW;IAAEC,MAAM,EAAEC;EAAa,CAAC,GAAG,IAAAC,gCAAmB,GAAE;EAC1E,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,iBAAU,EAACC,yCAA0B,CAACC,QAAQ,CAAC;EACnE,MAAM;IAAEC,GAAG;IAAEC;EAAe,CAAC,GAAG,IAAAC,2BAAe,GAAE;EACjD,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,2BAAe,GAAE;EACrC,MAAM;IAAEC;EAAO,CAAC,GAAG,IAAAC,yCAAa,GAAE;EAClC,MAAM;IAAEC;EAAS,CAAC,GAAG,IAAAC,0CAAc,GAAE;EACrC,MAAM;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAG,IAAAC,6CAAiB,GAAE;EAE3C,MAAMC,QAAQ,GAAG,IAAAC,0BAAiB,GAAE;EAEpC,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC,iBAAiB;IAAEC;EAAc,CAAC,GAAG,IAAAC,6BAAoB,EAAC;IAChFlB,GAAG;IACHf,IAAI;IACJC,SAAS;IACTU,OAAO;IACPN;EACF,CAAC,CAAC;EAEF,MAAM6B,WAAW,GAAG3B,WAAW,GAAGE,YAAY;EAC9C,MAAM0B,WAAW,GAAGD,WAAW,IAAIP,QAAQ,CAACS,OAAO;EACnD,MAAMC,gBAAgB,GAAGR,OAAO,CAACS,MAAM,GAAG,CAAC;EAC3C,MAAMC,SAAS,GAAGJ,WAAW,GAAG1B,YAAY,IAAIa,QAAQ,GAAGpB,WAAW,GAAGyB,QAAQ,CAACnB,MAAM,CAAC,GAAGgC,MAAM,CAACC,UAAU,CAACjC,MAAM;EAEpH,MAAMkC,gBAAgB,GAAGA,CAAA,KAAM;IAC7B,oBACE9E,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC5E,YAAA,CAAA6E,IAAI;MAACC,KAAK,EAAE,CAACL,MAAM,CAACR,aAAa,EAAE;QAAEc,cAAc,EAAE1B,MAAM,CAAC2B;MAAe,CAAC;IAAE,gBAC7EnF,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC1E,2BAAA,CAAA+E,IAAI;MAACC,IAAI,EAAE,MAAO;MAACC,IAAI,EAAE,EAAG;MAACC,cAAc,EAAE;QAAEC,WAAW,EAAE;MAAE,CAAE;MAACC,KAAK,EAAEjC,MAAM,CAACkC;IAAe,EAAG,eAClG1F,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC1E,2BAAA,CAAAsF,IAAI;MAACC,KAAK;MAACH,KAAK,EAAEjC,MAAM,CAACkC;IAAe,GACtCpC,OAAO,CAACuC,oBAAoB,CAACC,eAAe,CAAC1C,cAAc,CAAC2C,MAAM,CAACC,YAAY,CAAC,CAC5E,CACF;EAEX,CAAC;EAED,MAAMC,aAAa,GAAGA,CAAA,KAAM;IAC1B,oBACEjG,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC5E,YAAA,CAAA6E,IAAI,QACFf,OAAO,CAACiC,GAAG,CAAEC,MAAM,IAAK;MACvB,oBACEnG,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC5E,YAAA,CAAAiG,SAAS;QACRC,OAAO,EAAEA,CAAA,KAAM;UACb7D,gBAAgB,CAAC2D,MAAM,EAAEhC,iBAAiB,CAAC;UAC3CD,KAAK,EAAE;QACT,CAAE;QACFtC,GAAG,EAAEuE,MAAM,CAACG,MAAO;QACnBrB,KAAK,EAAEL,MAAM,CAAC2B;MAAc,gBAE5BvG,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC1E,2BAAA,CAAAmG,MAAM;QAAClB,IAAI,EAAE,EAAG;QAACmB,GAAG,EAAEN,MAAM,CAACO,UAAW;QAACnB,cAAc,EAAEX,MAAM,CAAC+B;MAAW,EAAG,eAC/E3G,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC5E,YAAA,CAAA6E,IAAI;QAACC,KAAK,EAAEL,MAAM,CAACgC;MAAS,gBAC3B5G,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC1E,2BAAA,CAAAsF,IAAI;QAACkB,KAAK;QAACpB,KAAK,EAAEjC,MAAM,CAACsD,cAAe;QAACC,aAAa,EAAE,CAAE;QAAC9B,KAAK,EAAEL,MAAM,CAACoC;MAAa,GACpFb,MAAM,CAACc,QAAQ,IAAI3D,OAAO,CAAC4D,MAAM,CAACC,YAAY,CAC1C,eACPnH,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC1E,2BAAA,CAAAsF,IAAI;QAACC,KAAK;QAACH,KAAK,EAAEjC,MAAM,CAAC4D,cAAe;QAACL,aAAa,EAAE,CAAE;QAAC9B,KAAK,EAAEL,MAAM,CAAC0B;MAAO,GAC9EH,MAAM,CAACG,MAAM,CACT,eACPtG,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC1E,2BAAA,CAAAgH,OAAO;QAACpC,KAAK,EAAE;UAAEqC,QAAQ,EAAE,UAAU;UAAEC,MAAM,EAAE;QAAE;MAAE,EAAG,CAClD,CACG;IAEhB,CAAC,CAAC,CACG;EAEX,CAAC;EAED,oBACEvH,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC5E,YAAA,CAAAiG,SAAS;IACRC,OAAO,EAAEnC,KAAM;IACfsD,aAAa,EAAE/C,gBAAgB,GAAG,MAAM,GAAG,MAAO;IAClDQ,KAAK,EAAE,CAACL,MAAM,CAAC6C,SAAS,EAAE;MAAEF,MAAM,EAAEjF,WAAW,GAAGC;IAAY,CAAC;EAAE,gBAEjEvC,MAAA,CAAAc,OAAA,CAAAiE,aAAA,CAAC5E,YAAA,CAAAuH,UAAU;IACTC,OAAO,EAAE,KAAM;IACfC,mBAAmB,EAAE,MAAO;IAC5BC,yBAAyB,EAAE,QAAS;IACpC5C,KAAK,EAAE,CACLL,MAAM,CAACkD,UAAU,EACjB;MACEnD,SAAS;MACToD,eAAe,EAAEvE,MAAM,CAACwE,UAAU;MAClCT,MAAM,EAAExD,QAAQ,CAACkE;IACnB,CAAC,EACDxD,gBAAgB,IAAI;MAClByD,cAAc,EAAE,CAAC;MACjBhD,cAAc,EAAE1B,MAAM,CAAC2B;IACzB,CAAC,CACD;IACFgD,qBAAqB,EAAE;MAAEC,WAAW,EAAExE,IAAI;MAAEyE,YAAY,EAAExE;IAAM;EAAE,GAEjE,IAAAyE,6BAAiB,EAAC,CAAClE,aAAa,EAAEK,gBAAgB,CAAC,EAAE,CAACK,gBAAgB,EAAE,EAAEmB,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC,CACvF,CACH;AAEhB,CAAC;AAED,MAAMrB,MAAM,GAAG,IAAA2D,4CAAgB,EAAC;EAC9B1D,UAAU,EAAE;IACVjC,MAAM,EAAE;EACV,CAAC;EACD6E,SAAS,EAAE;IACTH,QAAQ,EAAE,UAAU;IACpBkB,GAAG,EAAE,CAAC;IACN3E,KAAK,EAAE,CAAC;IACRD,IAAI,EAAE;EACR,CAAC;EACDkE,UAAU,EAAE;IACVR,QAAQ,EAAE,UAAU;IACpB1D,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT,CAAC;EACD0C,aAAa,EAAE;IACb6B,WAAW,EAAE,EAAE;IACfK,aAAa,EAAE,KAAK;IACpB7F,MAAM,EAAE,EAAE;IACV8F,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDhC,UAAU,EAAE;IACVnB,WAAW,EAAE;EACf,CAAC;EACDoB,QAAQ,EAAE;IACR6B,aAAa,EAAE,KAAK;IACpBG,IAAI,EAAE;EACR,CAAC;EACD5B,YAAY,EAAE;IACZ6B,UAAU,EAAE,CAAC;IACbC,UAAU,EAAE,EAAE;IACdC,iBAAiB,EAAE,QAAQ;IAC3BvD,WAAW,EAAE;EACf,CAAC;EACDc,MAAM,EAAE;IACNwC,UAAU,EAAE,EAAE;IACdC,iBAAiB,EAAE,QAAQ;IAC3BC,QAAQ,EAAE,EAAE;IACZH,UAAU,EAAE,CAAC;IACbrD,WAAW,EAAE;EACf,CAAC;EACDpB,aAAa,EAAE;IACb8D,cAAc,EAAE,CAAC;IACjBe,iBAAiB,EAAE,EAAE;IACrBrG,MAAM,EAAE,EAAE;IACV6F,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAAC,IAAAQ,QAAA,GACYhH,sCAAsC;AAAAiH,OAAA,CAAArI,OAAA,GAAAoI,QAAA"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "GroupChannelThreadContexts", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _moduleContext.GroupChannelThreadContexts;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "GroupChannelThreadContextsProvider", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _moduleContext.GroupChannelThreadContextsProvider;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "GroupChannelThreadHeader", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _GroupChannelThreadHeader.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "GroupChannelThreadInput", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _GroupChannelThreadInput.default;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "GroupChannelThreadMessageList", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _GroupChannelThreadMessageList.default;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "GroupChannelThreadStatusEmpty", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _GroupChannelThreadStatusEmpty.default;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "GroupChannelThreadStatusLoading", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _GroupChannelThreadStatusLoading.default;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "GroupChannelThreadSuggestedMentionList", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _GroupChannelThreadSuggestedMentionList.default;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "createGroupChannelThreadModule", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _createGroupChannelThreadModule.default;
58
+ }
59
+ });
60
+ var _GroupChannelThreadHeader = _interopRequireDefault(require("./component/GroupChannelThreadHeader"));
61
+ var _GroupChannelThreadMessageList = _interopRequireDefault(require("./component/GroupChannelThreadMessageList"));
62
+ var _GroupChannelThreadInput = _interopRequireDefault(require("./component/GroupChannelThreadInput"));
63
+ var _GroupChannelThreadSuggestedMentionList = _interopRequireDefault(require("./component/GroupChannelThreadSuggestedMentionList"));
64
+ var _GroupChannelThreadStatusEmpty = _interopRequireDefault(require("./component/GroupChannelThreadStatusEmpty"));
65
+ var _GroupChannelThreadStatusLoading = _interopRequireDefault(require("./component/GroupChannelThreadStatusLoading"));
66
+ var _createGroupChannelThreadModule = _interopRequireDefault(require("./module/createGroupChannelThreadModule"));
67
+ var _moduleContext = require("./module/moduleContext");
68
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_GroupChannelThreadHeader","_interopRequireDefault","require","_GroupChannelThreadMessageList","_GroupChannelThreadInput","_GroupChannelThreadSuggestedMentionList","_GroupChannelThreadStatusEmpty","_GroupChannelThreadStatusLoading","_createGroupChannelThreadModule","_moduleContext","obj","__esModule","default"],"sources":["index.ts"],"sourcesContent":["export { default as GroupChannelThreadHeader } from './component/GroupChannelThreadHeader';\nexport { default as GroupChannelThreadMessageList } from './component/GroupChannelThreadMessageList';\nexport { default as GroupChannelThreadInput } from './component/GroupChannelThreadInput';\nexport { default as GroupChannelThreadSuggestedMentionList } from './component/GroupChannelThreadSuggestedMentionList';\nexport { default as GroupChannelThreadStatusEmpty } from './component/GroupChannelThreadStatusEmpty';\nexport { default as GroupChannelThreadStatusLoading } from './component/GroupChannelThreadStatusLoading';\nexport { default as createGroupChannelThreadModule } from './module/createGroupChannelThreadModule';\nexport { GroupChannelThreadContextsProvider, GroupChannelThreadContexts } from './module/moduleContext';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,yBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,8BAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,uCAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,8BAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,gCAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,+BAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,cAAA,GAAAP,OAAA;AAAwG,SAAAD,uBAAAS,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _GroupChannelThreadHeader = _interopRequireDefault(require("../component/GroupChannelThreadHeader"));
8
+ var _GroupChannelThreadInput = _interopRequireDefault(require("../component/GroupChannelThreadInput"));
9
+ var _GroupChannelThreadMessageList = _interopRequireDefault(require("../component/GroupChannelThreadMessageList"));
10
+ var _GroupChannelThreadParentMessageInfo = _interopRequireDefault(require("../component/GroupChannelThreadParentMessageInfo"));
11
+ var _GroupChannelThreadStatusEmpty = _interopRequireDefault(require("../component/GroupChannelThreadStatusEmpty"));
12
+ var _GroupChannelThreadStatusLoading = _interopRequireDefault(require("../component/GroupChannelThreadStatusLoading"));
13
+ var _GroupChannelThreadSuggestedMentionList = _interopRequireDefault(require("../component/GroupChannelThreadSuggestedMentionList"));
14
+ var _moduleContext = require("./moduleContext");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ const createGroupChannelThreadModule = function () {
17
+ let {
18
+ Header = _GroupChannelThreadHeader.default,
19
+ ParentMessageInfo = _GroupChannelThreadParentMessageInfo.default,
20
+ MessageList = _GroupChannelThreadMessageList.default,
21
+ Input = _GroupChannelThreadInput.default,
22
+ SuggestedMentionList = _GroupChannelThreadSuggestedMentionList.default,
23
+ StatusLoading = _GroupChannelThreadStatusLoading.default,
24
+ StatusEmpty = _GroupChannelThreadStatusEmpty.default,
25
+ Provider = _moduleContext.GroupChannelThreadContextsProvider,
26
+ ...module
27
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
28
+ return {
29
+ Header,
30
+ ParentMessageInfo,
31
+ MessageList,
32
+ Input,
33
+ SuggestedMentionList,
34
+ StatusEmpty,
35
+ StatusLoading,
36
+ Provider,
37
+ ...module
38
+ };
39
+ };
40
+ var _default = createGroupChannelThreadModule;
41
+ exports.default = _default;
42
+ //# sourceMappingURL=createGroupChannelThreadModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_GroupChannelThreadHeader","_interopRequireDefault","require","_GroupChannelThreadInput","_GroupChannelThreadMessageList","_GroupChannelThreadParentMessageInfo","_GroupChannelThreadStatusEmpty","_GroupChannelThreadStatusLoading","_GroupChannelThreadSuggestedMentionList","_moduleContext","obj","__esModule","default","createGroupChannelThreadModule","Header","GroupChannelThreadHeader","ParentMessageInfo","GroupChannelThreadParentMessageInfo","MessageList","GroupChannelThreadMessageList","Input","GroupChannelThreadInput","SuggestedMentionList","GroupChannelThreadSuggestedMentionList","StatusLoading","GroupChannelThreadStatusLoading","StatusEmpty","GroupChannelThreadStatusEmpty","Provider","GroupChannelThreadContextsProvider","module","arguments","length","undefined","_default","exports"],"sources":["createGroupChannelThreadModule.tsx"],"sourcesContent":["import GroupChannelThreadHeader from '../component/GroupChannelThreadHeader';\nimport GroupChannelThreadInput from '../component/GroupChannelThreadInput';\nimport GroupChannelThreadMessageList from '../component/GroupChannelThreadMessageList';\nimport GroupChannelThreadParentMessageInfo from '../component/GroupChannelThreadParentMessageInfo';\nimport GroupChannelThreadStatusEmpty from '../component/GroupChannelThreadStatusEmpty';\nimport GroupChannelThreadStatusLoading from '../component/GroupChannelThreadStatusLoading';\nimport GroupChannelThreadSuggestedMentionList from '../component/GroupChannelThreadSuggestedMentionList';\nimport type { GroupChannelThreadModule } from '../types';\nimport { GroupChannelThreadContextsProvider } from './moduleContext';\n\nconst createGroupChannelThreadModule = ({\n Header = GroupChannelThreadHeader,\n ParentMessageInfo = GroupChannelThreadParentMessageInfo,\n MessageList = GroupChannelThreadMessageList,\n Input = GroupChannelThreadInput,\n SuggestedMentionList = GroupChannelThreadSuggestedMentionList,\n StatusLoading = GroupChannelThreadStatusLoading,\n StatusEmpty = GroupChannelThreadStatusEmpty,\n Provider = GroupChannelThreadContextsProvider,\n ...module\n}: Partial<GroupChannelThreadModule> = {}): GroupChannelThreadModule => {\n return {\n Header,\n ParentMessageInfo,\n MessageList,\n Input,\n SuggestedMentionList,\n StatusEmpty,\n StatusLoading,\n Provider,\n ...module,\n };\n};\n\nexport default createGroupChannelThreadModule;\n"],"mappings":";;;;;;AAAA,IAAAA,yBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,8BAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,oCAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,8BAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,gCAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,uCAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,cAAA,GAAAP,OAAA;AAAqE,SAAAD,uBAAAS,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAErE,MAAMG,8BAA8B,GAAG,SAAAA,CAAA,EAUiC;EAAA,IAVhC;IACtCC,MAAM,GAAGC,iCAAwB;IACjCC,iBAAiB,GAAGC,4CAAmC;IACvDC,WAAW,GAAGC,sCAA6B;IAC3CC,KAAK,GAAGC,gCAAuB;IAC/BC,oBAAoB,GAAGC,+CAAsC;IAC7DC,aAAa,GAAGC,wCAA+B;IAC/CC,WAAW,GAAGC,sCAA6B;IAC3CC,QAAQ,GAAGC,iDAAkC;IAC7C,GAAGC;EAC8B,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACvC,OAAO;IACLjB,MAAM;IACNE,iBAAiB;IACjBE,WAAW;IACXE,KAAK;IACLE,oBAAoB;IACpBI,WAAW;IACXF,aAAa;IACbI,QAAQ;IACR,GAAGE;EACL,CAAC;AACH,CAAC;AAAC,IAAAI,QAAA,GAEarB,8BAA8B;AAAAsB,OAAA,CAAAvB,OAAA,GAAAsB,QAAA"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GroupChannelThreadContextsProvider = exports.GroupChannelThreadContexts = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _uikitUtils = require("@sendbird/uikit-utils");
9
+ var _ProviderLayout = _interopRequireDefault(require("../../../components/ProviderLayout"));
10
+ var _useContext = require("../../../hooks/useContext");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ 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
+ 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
+ const GroupChannelThreadContexts = {
15
+ Fragment: /*#__PURE__*/(0, _react.createContext)({
16
+ headerTitle: '',
17
+ channel: {},
18
+ parentMessage: {},
19
+ setMessageToEdit: _uikitUtils.NOOP
20
+ }),
21
+ PubSub: /*#__PURE__*/(0, _react.createContext)({
22
+ publish: _uikitUtils.NOOP,
23
+ subscribe: () => _uikitUtils.NOOP
24
+ }),
25
+ MessageList: /*#__PURE__*/(0, _react.createContext)({
26
+ flatListRef: {
27
+ current: null
28
+ },
29
+ scrollToMessage: () => false,
30
+ lazyScrollToBottom: () => {
31
+ // noop
32
+ },
33
+ lazyScrollToIndex: () => {
34
+ // noop
35
+ }
36
+ })
37
+ };
38
+ exports.GroupChannelThreadContexts = GroupChannelThreadContexts;
39
+ const GroupChannelThreadContextsProvider = _ref => {
40
+ let {
41
+ children,
42
+ channel,
43
+ parentMessage,
44
+ keyboardAvoidOffset = 0,
45
+ groupChannelThreadPubSub,
46
+ threadedMessages
47
+ } = _ref;
48
+ if (!channel) throw new Error('GroupChannel is not provided to GroupChannelThreadModule');
49
+ const {
50
+ STRINGS
51
+ } = (0, _useContext.useLocalization)();
52
+ const [messageToEdit, setMessageToEdit] = (0, _react.useState)();
53
+ const {
54
+ flatListRef,
55
+ lazyScrollToIndex,
56
+ lazyScrollToBottom,
57
+ scrollToMessage
58
+ } = useScrollActions({
59
+ threadedMessages: threadedMessages
60
+ });
61
+ return /*#__PURE__*/_react.default.createElement(_ProviderLayout.default, null, /*#__PURE__*/_react.default.createElement(GroupChannelThreadContexts.Fragment.Provider, {
62
+ value: {
63
+ headerTitle: STRINGS.GROUP_CHANNEL_THREAD.HEADER_TITLE,
64
+ channel,
65
+ parentMessage,
66
+ keyboardAvoidOffset,
67
+ messageToEdit: messageToEdit,
68
+ setMessageToEdit
69
+ }
70
+ }, /*#__PURE__*/_react.default.createElement(GroupChannelThreadContexts.PubSub.Provider, {
71
+ value: groupChannelThreadPubSub
72
+ }, /*#__PURE__*/_react.default.createElement(GroupChannelThreadContexts.MessageList.Provider, {
73
+ value: {
74
+ flatListRef,
75
+ scrollToMessage,
76
+ lazyScrollToIndex,
77
+ lazyScrollToBottom
78
+ }
79
+ }, children))));
80
+ };
81
+ exports.GroupChannelThreadContextsProvider = GroupChannelThreadContextsProvider;
82
+ const useScrollActions = params => {
83
+ const {
84
+ threadedMessages
85
+ } = params;
86
+ const flatListRef = (0, _react.useRef)(null);
87
+
88
+ // FIXME: Workaround, should run after data has been applied to UI.
89
+ const lazyScrollToBottom = (0, _uikitUtils.useFreshCallback)(params => {
90
+ if (!flatListRef.current) {
91
+ logFlatListRefWarning();
92
+ return;
93
+ }
94
+ setTimeout(() => {
95
+ if (flatListRef.current) {
96
+ flatListRef.current.scrollToEnd({
97
+ animated: (params === null || params === void 0 ? void 0 : params.animated) ?? false
98
+ });
99
+ }
100
+ }, (params === null || params === void 0 ? void 0 : params.timeout) ?? 0);
101
+ });
102
+
103
+ // FIXME: Workaround, should run after data has been applied to UI.
104
+ const lazyScrollToIndex = (0, _uikitUtils.useFreshCallback)(params => {
105
+ if (!flatListRef.current) {
106
+ logFlatListRefWarning();
107
+ return;
108
+ }
109
+ setTimeout(() => {
110
+ if (flatListRef.current) {
111
+ flatListRef.current.scrollToIndex({
112
+ index: (params === null || params === void 0 ? void 0 : params.index) ?? 0,
113
+ animated: (params === null || params === void 0 ? void 0 : params.animated) ?? false,
114
+ viewPosition: (params === null || params === void 0 ? void 0 : params.viewPosition) ?? 0.5
115
+ });
116
+ }
117
+ }, (params === null || params === void 0 ? void 0 : params.timeout) ?? 0);
118
+ });
119
+ const scrollToMessage = (0, _uikitUtils.useFreshCallback)((messageId, options) => {
120
+ if (!flatListRef.current) {
121
+ logFlatListRefWarning();
122
+ return false;
123
+ }
124
+ const foundMessageIndex = threadedMessages.findIndex(it => it.messageId === messageId);
125
+ const isIncludedInList = foundMessageIndex > -1;
126
+ if (isIncludedInList) {
127
+ lazyScrollToIndex({
128
+ index: foundMessageIndex,
129
+ animated: true,
130
+ timeout: 0,
131
+ viewPosition: options === null || options === void 0 ? void 0 : options.viewPosition
132
+ });
133
+ return true;
134
+ } else {
135
+ return false;
136
+ }
137
+ });
138
+ return {
139
+ flatListRef,
140
+ lazyScrollToIndex,
141
+ lazyScrollToBottom,
142
+ scrollToMessage
143
+ };
144
+ };
145
+ const logFlatListRefWarning = () => {
146
+ _uikitUtils.Logger.warn('Cannot find flatListRef.current, please render FlatList and pass the flatListRef' + 'or please try again after FlatList has been rendered.');
147
+ };
148
+ //# sourceMappingURL=moduleContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitUtils","_ProviderLayout","_interopRequireDefault","_useContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelThreadContexts","Fragment","createContext","headerTitle","channel","parentMessage","setMessageToEdit","NOOP","PubSub","publish","subscribe","MessageList","flatListRef","current","scrollToMessage","lazyScrollToBottom","lazyScrollToIndex","exports","GroupChannelThreadContextsProvider","_ref","children","keyboardAvoidOffset","groupChannelThreadPubSub","threadedMessages","Error","STRINGS","useLocalization","messageToEdit","useState","useScrollActions","createElement","Provider","value","GROUP_CHANNEL_THREAD","HEADER_TITLE","params","useRef","useFreshCallback","logFlatListRefWarning","setTimeout","scrollToEnd","animated","timeout","scrollToIndex","index","viewPosition","messageId","options","foundMessageIndex","findIndex","it","isIncludedInList","Logger","warn"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useRef, useState } from 'react';\nimport type { FlatList } from 'react-native';\n\nimport {\n ContextValue,\n Logger,\n NOOP,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUserMessage,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization } from '../../../hooks/useContext';\nimport type { PubSub } from '../../../utils/pubsub';\nimport type {\n GroupChannelThreadContextsType,\n GroupChannelThreadModule,\n GroupChannelThreadPubSubContextPayload,\n} from '../types';\nimport { GroupChannelThreadProps } from '../types';\n\nexport const GroupChannelThreadContexts: GroupChannelThreadContextsType = {\n Fragment: createContext({\n headerTitle: '',\n channel: {} as SendbirdGroupChannel,\n parentMessage: {} as SendbirdUserMessage | SendbirdFileMessage,\n setMessageToEdit: NOOP,\n }),\n PubSub: createContext({\n publish: NOOP,\n subscribe: () => NOOP,\n } as PubSub<GroupChannelThreadPubSubContextPayload>),\n MessageList: createContext({\n flatListRef: { current: null },\n scrollToMessage: () => false,\n lazyScrollToBottom: () => {\n // noop\n },\n lazyScrollToIndex: () => {\n // noop\n },\n } as MessageListContextValue),\n};\n\nexport const GroupChannelThreadContextsProvider: GroupChannelThreadModule['Provider'] = ({\n children,\n channel,\n parentMessage,\n keyboardAvoidOffset = 0,\n groupChannelThreadPubSub,\n threadedMessages,\n}) => {\n if (!channel) throw new Error('GroupChannel is not provided to GroupChannelThreadModule');\n\n const { STRINGS } = useLocalization();\n const [messageToEdit, setMessageToEdit] = useState<SendbirdUserMessage | SendbirdFileMessage>();\n const { flatListRef, lazyScrollToIndex, lazyScrollToBottom, scrollToMessage } = useScrollActions({\n threadedMessages: threadedMessages,\n });\n\n return (\n <ProviderLayout>\n <GroupChannelThreadContexts.Fragment.Provider\n value={{\n headerTitle: STRINGS.GROUP_CHANNEL_THREAD.HEADER_TITLE,\n channel,\n parentMessage,\n keyboardAvoidOffset,\n messageToEdit: messageToEdit,\n setMessageToEdit,\n }}\n >\n <GroupChannelThreadContexts.PubSub.Provider value={groupChannelThreadPubSub}>\n <GroupChannelThreadContexts.MessageList.Provider\n value={{\n flatListRef,\n scrollToMessage,\n lazyScrollToIndex,\n lazyScrollToBottom,\n }}\n >\n {children}\n </GroupChannelThreadContexts.MessageList.Provider>\n </GroupChannelThreadContexts.PubSub.Provider>\n </GroupChannelThreadContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n\ntype MessageListContextValue = ContextValue<GroupChannelThreadContextsType['MessageList']>;\nconst useScrollActions = (params: Pick<GroupChannelThreadProps['Provider'], 'threadedMessages'>) => {\n const { threadedMessages } = params;\n const flatListRef = useRef<FlatList<SendbirdMessage>>(null);\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToBottom = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n if (flatListRef.current) {\n flatListRef.current.scrollToEnd({ animated: params?.animated ?? false });\n }\n }, params?.timeout ?? 0);\n });\n\n // FIXME: Workaround, should run after data has been applied to UI.\n const lazyScrollToIndex = useFreshCallback<MessageListContextValue['lazyScrollToIndex']>((params) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return;\n }\n\n setTimeout(() => {\n if (flatListRef.current) {\n flatListRef.current.scrollToIndex({\n index: params?.index ?? 0,\n animated: params?.animated ?? false,\n viewPosition: params?.viewPosition ?? 0.5,\n });\n }\n }, params?.timeout ?? 0);\n });\n\n const scrollToMessage = useFreshCallback<MessageListContextValue['scrollToMessage']>((messageId, options) => {\n if (!flatListRef.current) {\n logFlatListRefWarning();\n return false;\n }\n\n const foundMessageIndex = threadedMessages.findIndex((it) => it.messageId === messageId);\n const isIncludedInList = foundMessageIndex > -1;\n\n if (isIncludedInList) {\n lazyScrollToIndex({\n index: foundMessageIndex,\n animated: true,\n timeout: 0,\n viewPosition: options?.viewPosition,\n });\n return true;\n } else {\n return false;\n }\n });\n\n return {\n flatListRef,\n lazyScrollToIndex,\n lazyScrollToBottom,\n scrollToMessage,\n };\n};\n\nconst logFlatListRefWarning = () => {\n Logger.warn(\n 'Cannot find flatListRef.current, please render FlatList and pass the flatListRef' +\n 'or please try again after FlatList has been rendered.',\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n PickPartial,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelThreadMessageListProps } from '../../components/ChannelThreadMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport interface GroupChannelThreadProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n parentMessage: SendbirdUserMessage | SendbirdFileMessage;\n startingPoint?: number;\n onParentMessageDeleted: () => void;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelThreadProps['Header']['onPressLeft'];\n onPressHeaderSubtitle?: GroupChannelThreadProps['Header']['onPressSubtitle'];\n onPressMediaMessage?: GroupChannelThreadProps['MessageList']['onPressMediaMessage'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelThreadProps['MessageList']['renderMessage'];\n\n enableMessageGrouping?: GroupChannelThreadProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelThreadProps['Provider']['keyboardAvoidOffset'];\n flatListProps?: GroupChannelThreadProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n };\n Header: {\n onPressLeft: () => void;\n onPressSubtitle: () => void;\n };\n ParentMessageInfo: {\n channel: SendbirdGroupChannel;\n currentUserId?: string;\n onDeleteMessage: (message: SendbirdUserMessage | SendbirdFileMessage) => Promise<void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n };\n MessageList: Pick<\n ChannelThreadMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: () => Promise<void>;\n onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;\n startingPoint?: number;\n };\n Input: PickPartial<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton',\n 'inputDisabled'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n keyboardAvoidOffset?: number;\n groupChannelThreadPubSub: PubSub<GroupChannelThreadPubSubContextPayload>;\n parentMessage: SendbirdUserMessage | SendbirdFileMessage;\n threadedMessages: SendbirdMessage[];\n };\n}\n\n/**\n * Internal context for GroupChannelThread\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelThreadContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n parentMessage: SendbirdUserMessage | SendbirdFileMessage;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n PubSub: React.Context<PubSub<GroupChannelThreadPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelThreadContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n }>;\n}\n\nexport interface GroupChannelThreadModule {\n Provider: CommonComponent<GroupChannelThreadProps['Provider']>;\n Header: CommonComponent<GroupChannelThreadProps['Header']>;\n ParentMessageInfo: CommonComponent<GroupChannelThreadProps['ParentMessageInfo']>;\n MessageList: CommonComponent<GroupChannelThreadProps['MessageList']>;\n Input: CommonComponent<GroupChannelThreadProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelThreadProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelThreadFragment = React.FC<GroupChannelThreadProps['Fragment']>;\n\nexport type GroupChannelThreadPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n }\n | {\n type: 'TYPING_BUBBLE_RENDERED';\n data?: undefined;\n };\n"],"mappings":""}
@@ -34,6 +34,7 @@ const createGroupChannelFragment = initModule => {
34
34
  onPressHeaderRight = _uikitUtils.NOOP,
35
35
  onPressMediaMessage = _uikitUtils.NOOP,
36
36
  onChannelDeleted = _uikitUtils.NOOP,
37
+ onPressReplyMessageInThread = _uikitUtils.NOOP,
37
38
  onBeforeSendUserMessage = _uikitUtils.PASS,
38
39
  onBeforeSendFileMessage = _uikitUtils.PASS,
39
40
  onBeforeUpdateUserMessage = _uikitUtils.PASS,
@@ -52,15 +53,24 @@ const createGroupChannelFragment = initModule => {
52
53
  const {
53
54
  sdk,
54
55
  currentUser,
55
- sbOptions
56
+ sbOptions,
57
+ voiceMessageStatusManager
56
58
  } = (0, _useContext.useSendbirdChat)();
59
+ const toast = (0, _uikitReactNativeFoundation.useToast)();
60
+ const {
61
+ STRINGS
62
+ } = (0, _useContext.useLocalization)();
57
63
  const [internalSearchItem, setInternalSearchItem] = (0, _react.useState)(searchItem);
58
64
  const navigateFromMessageSearch = (0, _react.useCallback)(() => Boolean(searchItem), []);
59
65
  const [groupChannelPubSub] = (0, _react.useState)(() => (0, _pubsub.default)());
60
66
  const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = (0, _react.useState)(false);
61
67
  const scrolledAwayFromBottomRef = (0, _uikitUtils.useRefTracker)(scrolledAwayFromBottom);
62
68
  const replyType = (0, _uikitUtils.useIIFE)(() => {
63
- if (sbOptions.uikit.groupChannel.channel.replyType === 'none') return _message.ReplyType.NONE;else return _message.ReplyType.ONLY_REPLY_TO_CHANNEL;
69
+ if (sbOptions.uikit.groupChannel.channel.replyType === 'none') {
70
+ return _message.ReplyType.NONE;
71
+ } else {
72
+ return _message.ReplyType.ONLY_REPLY_TO_CHANNEL;
73
+ }
64
74
  });
65
75
  const {
66
76
  loading,
@@ -107,6 +117,7 @@ const createGroupChannelFragment = initModule => {
107
117
  return Promise.allSettled([playerService.reset(), recorderService.reset()]);
108
118
  };
109
119
  const _onPressHeaderLeft = (0, _uikitUtils.useFreshCallback)(async () => {
120
+ voiceMessageStatusManager.clear();
110
121
  await onBlurFragment();
111
122
  onPressHeaderLeft();
112
123
  });
@@ -118,6 +129,10 @@ const createGroupChannelFragment = initModule => {
118
129
  await onBlurFragment();
119
130
  onPressMediaMessage(message, deleteMessage, uri);
120
131
  });
132
+ const _onPressReplyMessageInThread = (0, _uikitUtils.useFreshCallback)(async (message, startingPoint) => {
133
+ await onBlurFragment();
134
+ onPressReplyMessageInThread(message, startingPoint);
135
+ });
121
136
  (0, _react.useEffect)(() => {
122
137
  return () => {
123
138
  onBlurFragment();
@@ -169,9 +184,18 @@ const createGroupChannelFragment = initModule => {
169
184
  onSent(message);
170
185
  });
171
186
  const onPressSendFileMessage = (0, _uikitUtils.useFreshCallback)(async params => {
187
+ var _processedParams$file;
172
188
  const processedParams = await onBeforeSendFileMessage(params);
173
- const message = await sendFileMessage(processedParams, onPending);
174
- onSent(message);
189
+ const fileSize = ((_processedParams$file = processedParams.file) === null || _processedParams$file === void 0 ? void 0 : _processedParams$file.size) ?? processedParams.fileSize;
190
+ const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;
191
+ if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {
192
+ const sizeLimitString = `${(0, _uikitUtils.getReadableFileSize)(uploadSizeLimit)} MB`;
193
+ toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');
194
+ return;
195
+ } else {
196
+ const message = await sendFileMessage(processedParams, onPending);
197
+ onSent(message);
198
+ }
175
199
  });
176
200
  const onPressUpdateUserMessage = (0, _uikitUtils.useFreshCallback)(async (message, params) => {
177
201
  const processedParams = await onBeforeUpdateUserMessage(params);
@@ -191,7 +215,8 @@ const createGroupChannelFragment = initModule => {
191
215
  enableTypingIndicator: enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator,
192
216
  keyboardAvoidOffset: keyboardAvoidOffset,
193
217
  messages: messages,
194
- onUpdateSearchItem: onUpdateSearchItem
218
+ onUpdateSearchItem: onUpdateSearchItem,
219
+ onPressReplyMessageInThread: _onPressReplyMessageInThread
195
220
  }, /*#__PURE__*/_react.default.createElement(GroupChannelModule.Header, {
196
221
  shouldHideRight: navigateFromMessageSearch,
197
222
  onPressHeaderLeft: _onPressHeaderLeft,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_groupChannel","_message","_uikitReactNativeFoundation","_uikitTools","_uikitUtils","_GroupChannelMessageRenderer","_NewMessagesButton","_interopRequireDefault","_ScrollToBottomButton","_StatusComposition","_createGroupChannelModule","_useContext","_pubsub","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","messageComparator","flatListProps","messageListQueryParams","collectionCreator","playerService","recorderService","usePlatformService","sdk","currentUser","sbOptions","useSendbirdChat","internalSearchItem","setInternalSearchItem","useState","navigateFromMessageSearch","useCallback","Boolean","groupChannelPubSub","pubsub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","useRefTracker","replyType","useIIFE","uikit","groupChannel","ReplyType","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","useGroupChannelMessages","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","onCurrentUserBanned","getCollectionCreator","markAsRead","confirmAndMarkAsRead","startingPoint","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","useFreshCallback","_onPressHeaderRight","_onPressMediaMessage","message","uri","useEffect","renderItem","content","Box","isFirstItem","GroupChannelTypingIndicatorBubble","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","userId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter","MessageFilter","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MessageCollection, MessageFilter } from '@sendbird/chat/groupChannel';\nimport { ReplyType } from '@sendbird/chat/message';\nimport { Box } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelMessages } from '@sendbird/uikit-tools';\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer, {\n GroupChannelTypingIndicatorBubble,\n} from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n sortComparator = messageComparator,\n flatListProps,\n messageListQueryParams,\n collectionCreator,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions } = useSendbirdChat();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') return ReplyType.NONE;\n else return ReplyType.ONLY_REPLY_TO_CHANNEL;\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: confirmAndMarkAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? renderMessage(props) : <GroupChannelMessageRenderer {...props} />;\n return (\n <Box>\n {content}\n {props.isFirstItem && !hasNext() && <GroupChannelTypingIndicatorBubble />}\n </Box>\n );\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nfunction getCollectionCreator(\n channel: SendbirdGroupChannel,\n messageListQueryParams?: GroupChannelProps['Fragment']['messageListQueryParams'],\n deprecatedCreatorProp?: () => MessageCollection,\n) {\n if (!messageListQueryParams && deprecatedCreatorProp) return deprecatedCreatorProp;\n\n return (defaultParams: GroupChannelProps['Fragment']['messageListQueryParams']) => {\n const params = { ...defaultParams, ...messageListQueryParams };\n return channel.createMessageCollection({\n ...params,\n filter: new MessageFilter(params),\n });\n };\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_groupChannel","_message","_uikitReactNativeFoundation","_uikitTools","_uikitUtils","_GroupChannelMessageRenderer","_NewMessagesButton","_interopRequireDefault","_ScrollToBottomButton","_StatusComposition","_createGroupChannelModule","_useContext","_pubsub","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onPressReplyMessageInThread","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","messageComparator","flatListProps","messageListQueryParams","collectionCreator","playerService","recorderService","usePlatformService","sdk","currentUser","sbOptions","voiceMessageStatusManager","useSendbirdChat","toast","useToast","STRINGS","useLocalization","internalSearchItem","setInternalSearchItem","useState","navigateFromMessageSearch","useCallback","Boolean","groupChannelPubSub","pubsub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","useRefTracker","replyType","useIIFE","uikit","groupChannel","ReplyType","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","useGroupChannelMessages","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","onCurrentUserBanned","getCollectionCreator","markAsRead","confirmAndMarkAsRead","startingPoint","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","useFreshCallback","clear","_onPressHeaderRight","_onPressMediaMessage","message","uri","_onPressReplyMessageInThread","useEffect","renderItem","content","Box","isFirstItem","GroupChannelTypingIndicatorBubble","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","_processedParams$file","fileSize","file","size","uploadSizeLimit","appInfo","sizeLimitString","getReadableFileSize","show","TOAST","FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","userId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter","MessageFilter","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MessageCollection, MessageFilter } from '@sendbird/chat/groupChannel';\nimport { ReplyType } from '@sendbird/chat/message';\nimport { Box, useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelMessages } from '@sendbird/uikit-tools';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdSendableMessage,\n SendbirdUserMessage,\n getReadableFileSize,\n} from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer, {\n GroupChannelTypingIndicatorBubble,\n} from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport { FileType } from '../platform/types';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onPressReplyMessageInThread = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n sortComparator = messageComparator,\n flatListProps,\n messageListQueryParams,\n collectionCreator,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions, voiceMessageStatusManager } = useSendbirdChat();\n const toast = useToast();\n const { STRINGS } = useLocalization();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') {\n return ReplyType.NONE;\n } else {\n return ReplyType.ONLY_REPLY_TO_CHANNEL;\n }\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: confirmAndMarkAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n voiceMessageStatusManager.clear();\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n const _onPressReplyMessageInThread = useFreshCallback(\n async (message: SendbirdSendableMessage, startingPoint?: number) => {\n await onBlurFragment();\n onPressReplyMessageInThread(message, startingPoint);\n },\n );\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? renderMessage(props) : <GroupChannelMessageRenderer {...props} />;\n return (\n <Box>\n {content}\n {props.isFirstItem && !hasNext() && <GroupChannelTypingIndicatorBubble />}\n </Box>\n );\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const fileSize = (processedParams.file as FileType)?.size ?? processedParams.fileSize;\n const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;\n\n if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {\n const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)} MB`;\n toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');\n return;\n } else {\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n }\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n onPressReplyMessageInThread={_onPressReplyMessageInThread}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nfunction getCollectionCreator(\n channel: SendbirdGroupChannel,\n messageListQueryParams?: GroupChannelProps['Fragment']['messageListQueryParams'],\n deprecatedCreatorProp?: () => MessageCollection,\n) {\n if (!messageListQueryParams && deprecatedCreatorProp) return deprecatedCreatorProp;\n\n return (defaultParams: GroupChannelProps['Fragment']['messageListQueryParams']) => {\n const params = { ...defaultParams, ...messageListQueryParams };\n return channel.createMessageCollection({\n ...params,\n filter: new MessageFilter(params),\n });\n };\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}