@sendbird/uikit-react-native 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/lib/commonjs/components/ChatFlatList.js +2 -1
  2. package/lib/commonjs/components/ChatFlatList.js.map +1 -1
  3. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js +11 -6
  4. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
  5. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +12 -2
  6. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  7. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +25 -10
  8. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  9. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +86 -10
  10. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  11. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +99 -14
  12. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  13. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +1 -1
  14. package/lib/commonjs/components/MessageRenderer/index.js +22 -3
  15. package/lib/commonjs/components/MessageRenderer/index.js.map +1 -1
  16. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +150 -0
  17. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -0
  18. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +135 -0
  19. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -0
  20. package/lib/commonjs/components/ReactionAddons/ReactionRoundedButton.js +87 -0
  21. package/lib/commonjs/components/ReactionAddons/ReactionRoundedButton.js.map +1 -0
  22. package/lib/commonjs/components/ReactionAddons/index.js +19 -0
  23. package/lib/commonjs/components/ReactionAddons/index.js.map +1 -0
  24. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js +150 -0
  25. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -0
  26. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +276 -0
  27. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -0
  28. package/lib/commonjs/components/ReactionBottomSheets/index.js +19 -0
  29. package/lib/commonjs/components/ReactionBottomSheets/index.js.map +1 -0
  30. package/lib/commonjs/constants.js +3 -1
  31. package/lib/commonjs/constants.js.map +1 -1
  32. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +4 -1
  33. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  34. package/lib/commonjs/containers/SendbirdUIKitContainer.js +118 -78
  35. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  36. package/lib/commonjs/contexts/ReactionCtx.js +107 -0
  37. package/lib/commonjs/contexts/ReactionCtx.js.map +1 -0
  38. package/lib/commonjs/contexts/SendbirdChatCtx.js +18 -6
  39. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  40. package/lib/commonjs/contexts/UserProfileCtx.js +9 -0
  41. package/lib/commonjs/contexts/UserProfileCtx.js.map +1 -1
  42. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js +33 -37
  43. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  44. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +28 -11
  45. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  46. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js +120 -31
  47. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  48. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +31 -12
  49. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  50. package/lib/commonjs/domain/groupChannel/component/GroupChannelSuggestedMentionList.js +210 -0
  51. package/lib/commonjs/domain/groupChannel/component/GroupChannelSuggestedMentionList.js.map +1 -0
  52. package/lib/commonjs/domain/groupChannel/index.js +8 -0
  53. package/lib/commonjs/domain/groupChannel/index.js.map +1 -1
  54. package/lib/commonjs/domain/groupChannel/module/createGroupChannelModule.js +4 -0
  55. package/lib/commonjs/domain/groupChannel/module/createGroupChannelModule.js.map +1 -1
  56. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +4 -4
  57. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  58. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  59. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js +3 -2
  60. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js.map +1 -1
  61. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +2 -1
  62. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  63. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +2 -1
  64. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -1
  65. package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js +39 -0
  66. package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js.map +1 -0
  67. package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js +140 -0
  68. package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js.map +1 -0
  69. package/lib/commonjs/domain/groupChannelNotifications/index.js +46 -0
  70. package/lib/commonjs/domain/groupChannelNotifications/index.js.map +1 -0
  71. package/lib/commonjs/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js +33 -0
  72. package/lib/commonjs/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js.map +1 -0
  73. package/lib/commonjs/domain/groupChannelNotifications/module/moduleContext.js +45 -0
  74. package/lib/commonjs/domain/groupChannelNotifications/module/moduleContext.js.map +1 -0
  75. package/lib/commonjs/domain/groupChannelNotifications/types.js +6 -0
  76. package/lib/commonjs/domain/groupChannelNotifications/types.js.map +1 -0
  77. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +2 -1
  78. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -1
  79. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +49 -6
  80. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  81. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +9 -14
  82. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  83. package/lib/commonjs/domain/groupChannelSettings/types.js.map +1 -1
  84. package/lib/commonjs/domain/groupChannelUserList/types.js.map +1 -1
  85. package/lib/commonjs/domain/userList/component/UserListList.js +4 -1
  86. package/lib/commonjs/domain/userList/component/UserListList.js.map +1 -1
  87. package/lib/commonjs/domain/userList/module/createUserListModule.js.map +1 -1
  88. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
  89. package/lib/commonjs/fragments/createGroupChannelFragment.js +11 -4
  90. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  91. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js.map +1 -1
  92. package/lib/commonjs/fragments/createGroupChannelNotificationsFragment.js +34 -0
  93. package/lib/commonjs/fragments/createGroupChannelNotificationsFragment.js.map +1 -0
  94. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js +3 -1
  95. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  96. package/lib/commonjs/hooks/useConnection.js +3 -0
  97. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  98. package/lib/commonjs/hooks/useContext.js +11 -1
  99. package/lib/commonjs/hooks/useContext.js.map +1 -1
  100. package/lib/commonjs/hooks/useKeyboardStatus.js +93 -0
  101. package/lib/commonjs/hooks/useKeyboardStatus.js.map +1 -0
  102. package/lib/commonjs/hooks/useMentionSuggestion.js +110 -0
  103. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -0
  104. package/lib/commonjs/hooks/useMentionTextInput.js +139 -0
  105. package/lib/commonjs/hooks/useMentionTextInput.js.map +1 -0
  106. package/lib/commonjs/index.js +95 -40
  107. package/lib/commonjs/index.js.map +1 -1
  108. package/lib/commonjs/libs/EmojiManager.js +100 -0
  109. package/lib/commonjs/libs/EmojiManager.js.map +1 -0
  110. package/lib/commonjs/libs/MentionConfig.js +47 -0
  111. package/lib/commonjs/libs/MentionConfig.js.map +1 -0
  112. package/lib/commonjs/libs/MentionManager.js +235 -0
  113. package/lib/commonjs/libs/MentionManager.js.map +1 -0
  114. package/lib/commonjs/localization/StringSet.type.js +17 -5
  115. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  116. package/lib/commonjs/types.js.map +1 -1
  117. package/lib/commonjs/utils/common.js +19 -0
  118. package/lib/commonjs/utils/common.js.map +1 -0
  119. package/lib/commonjs/version.js +1 -1
  120. package/lib/commonjs/version.js.map +1 -1
  121. package/lib/module/components/ChatFlatList.js +3 -2
  122. package/lib/module/components/ChatFlatList.js.map +1 -1
  123. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js +11 -6
  124. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
  125. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +12 -2
  126. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  127. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +25 -10
  128. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  129. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +86 -12
  130. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  131. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +101 -17
  132. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  133. package/lib/module/components/MessageRenderer/UserMessage/index.js.map +1 -1
  134. package/lib/module/components/MessageRenderer/index.js +21 -4
  135. package/lib/module/components/MessageRenderer/index.js.map +1 -1
  136. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +132 -0
  137. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -0
  138. package/lib/module/components/ReactionAddons/MessageReactionAddon.js +118 -0
  139. package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -0
  140. package/lib/module/components/ReactionAddons/ReactionRoundedButton.js +74 -0
  141. package/lib/module/components/ReactionAddons/ReactionRoundedButton.js.map +1 -0
  142. package/lib/module/components/ReactionAddons/index.js +7 -0
  143. package/lib/module/components/ReactionAddons/index.js.map +1 -0
  144. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js +135 -0
  145. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -0
  146. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +259 -0
  147. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -0
  148. package/lib/module/components/ReactionBottomSheets/index.js +7 -0
  149. package/lib/module/components/ReactionBottomSheets/index.js.map +1 -0
  150. package/lib/module/constants.js +1 -0
  151. package/lib/module/constants.js.map +1 -1
  152. package/lib/module/containers/GroupChannelPreviewContainer.js +4 -1
  153. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  154. package/lib/module/containers/SendbirdUIKitContainer.js +116 -80
  155. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  156. package/lib/module/contexts/ReactionCtx.js +85 -0
  157. package/lib/module/contexts/ReactionCtx.js.map +1 -0
  158. package/lib/module/contexts/SendbirdChatCtx.js +18 -6
  159. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  160. package/lib/module/contexts/UserProfileCtx.js +7 -0
  161. package/lib/module/contexts/UserProfileCtx.js.map +1 -1
  162. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js +34 -39
  163. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  164. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +24 -13
  165. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  166. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js +117 -33
  167. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  168. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +32 -14
  169. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  170. package/lib/module/domain/groupChannel/component/GroupChannelSuggestedMentionList.js +188 -0
  171. package/lib/module/domain/groupChannel/component/GroupChannelSuggestedMentionList.js.map +1 -0
  172. package/lib/module/domain/groupChannel/index.js +1 -0
  173. package/lib/module/domain/groupChannel/index.js.map +1 -1
  174. package/lib/module/domain/groupChannel/module/createGroupChannelModule.js +3 -0
  175. package/lib/module/domain/groupChannel/module/createGroupChannelModule.js.map +1 -1
  176. package/lib/module/domain/groupChannel/module/moduleContext.js +4 -4
  177. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  178. package/lib/module/domain/groupChannel/types.js.map +1 -1
  179. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js +4 -3
  180. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js.map +1 -1
  181. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +3 -2
  182. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  183. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +3 -2
  184. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -1
  185. package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js +25 -0
  186. package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js.map +1 -0
  187. package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js +122 -0
  188. package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js.map +1 -0
  189. package/lib/module/domain/groupChannelNotifications/index.js +5 -0
  190. package/lib/module/domain/groupChannelNotifications/index.js.map +1 -0
  191. package/lib/module/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js +21 -0
  192. package/lib/module/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js.map +1 -0
  193. package/lib/module/domain/groupChannelNotifications/module/moduleContext.js +25 -0
  194. package/lib/module/domain/groupChannelNotifications/module/moduleContext.js.map +1 -0
  195. package/lib/module/domain/groupChannelNotifications/types.js +2 -0
  196. package/lib/module/domain/groupChannelNotifications/types.js.map +1 -0
  197. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +3 -2
  198. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -1
  199. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +46 -6
  200. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  201. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +10 -15
  202. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  203. package/lib/module/domain/groupChannelSettings/types.js.map +1 -1
  204. package/lib/module/domain/groupChannelUserList/types.js.map +1 -1
  205. package/lib/module/domain/userList/component/UserListList.js +3 -1
  206. package/lib/module/domain/userList/component/UserListList.js.map +1 -1
  207. package/lib/module/domain/userList/module/createUserListModule.js.map +1 -1
  208. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
  209. package/lib/module/fragments/createGroupChannelFragment.js +11 -4
  210. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  211. package/lib/module/fragments/createGroupChannelInviteFragment.js.map +1 -1
  212. package/lib/module/fragments/createGroupChannelNotificationsFragment.js +22 -0
  213. package/lib/module/fragments/createGroupChannelNotificationsFragment.js.map +1 -0
  214. package/lib/module/fragments/createGroupChannelSettingsFragment.js +3 -1
  215. package/lib/module/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  216. package/lib/module/hooks/useConnection.js +3 -0
  217. package/lib/module/hooks/useConnection.js.map +1 -1
  218. package/lib/module/hooks/useContext.js +6 -0
  219. package/lib/module/hooks/useContext.js.map +1 -1
  220. package/lib/module/hooks/useKeyboardStatus.js +75 -0
  221. package/lib/module/hooks/useKeyboardStatus.js.map +1 -0
  222. package/lib/module/hooks/useMentionSuggestion.js +100 -0
  223. package/lib/module/hooks/useMentionSuggestion.js.map +1 -0
  224. package/lib/module/hooks/useMentionTextInput.js +128 -0
  225. package/lib/module/hooks/useMentionTextInput.js.map +1 -0
  226. package/lib/module/index.js +8 -3
  227. package/lib/module/index.js.map +1 -1
  228. package/lib/module/libs/EmojiManager.js +90 -0
  229. package/lib/module/libs/EmojiManager.js.map +1 -0
  230. package/lib/module/libs/MentionConfig.js +39 -0
  231. package/lib/module/libs/MentionConfig.js.map +1 -0
  232. package/lib/module/libs/MentionManager.js +223 -0
  233. package/lib/module/libs/MentionManager.js.map +1 -0
  234. package/lib/module/localization/StringSet.type.js +18 -6
  235. package/lib/module/localization/StringSet.type.js.map +1 -1
  236. package/lib/module/types.js.map +1 -1
  237. package/lib/module/utils/common.js +7 -0
  238. package/lib/module/utils/common.js.map +1 -0
  239. package/lib/module/version.js +1 -1
  240. package/lib/module/version.js.map +1 -1
  241. package/lib/typescript/__template__/types.d.ts +3 -3
  242. package/lib/typescript/src/components/ChannelCover.d.ts +1 -1
  243. package/lib/typescript/src/components/ChatFlatList.d.ts +1 -1
  244. package/lib/typescript/src/components/FileViewer.d.ts +1 -1
  245. package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +1 -1
  246. package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +2 -2
  247. package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +1 -1
  248. package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +1 -1
  249. package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +11 -2
  250. package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +1 -1
  251. package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +1 -1
  252. package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +1 -1
  253. package/lib/typescript/src/components/MessageRenderer/MessageOutgoingStatus.d.ts +1 -1
  254. package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +1 -1
  255. package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +1 -1
  256. package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +1 -1
  257. package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +2 -2
  258. package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +4 -1
  259. package/lib/typescript/src/components/MessageRenderer/index.d.ts +4 -3
  260. package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
  261. package/lib/typescript/src/components/ReactionAddons/BottomSheetReactionAddon.d.ts +8 -0
  262. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +6 -0
  263. package/lib/typescript/src/components/ReactionAddons/ReactionRoundedButton.d.ts +14 -0
  264. package/lib/typescript/src/components/ReactionAddons/index.d.ts +11 -0
  265. package/lib/typescript/src/components/ReactionBottomSheets/ReactionListBottomSheet.d.ts +3 -0
  266. package/lib/typescript/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.d.ts +3 -0
  267. package/lib/typescript/src/components/ReactionBottomSheets/index.d.ts +20 -0
  268. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  269. package/lib/typescript/src/components/StatusComposition.d.ts +1 -1
  270. package/lib/typescript/src/components/TypedPlaceholder.d.ts +1 -1
  271. package/lib/typescript/src/components/UserActionBar.d.ts +1 -1
  272. package/lib/typescript/src/components/UserSelectableBar.d.ts +1 -1
  273. package/lib/typescript/src/constants.d.ts +1 -0
  274. package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +1 -1
  275. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +12 -3
  276. package/lib/typescript/src/contexts/LocalizationCtx.d.ts +2 -2
  277. package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +1 -1
  278. package/lib/typescript/src/contexts/ReactionCtx.d.ts +18 -0
  279. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +10 -2
  280. package/lib/typescript/src/contexts/UserProfileCtx.d.ts +4 -4
  281. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/EditInput.d.ts +35 -7
  282. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/SendInput.d.ts +32 -5
  283. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/index.d.ts +19 -2
  284. package/lib/typescript/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.d.ts +3 -0
  285. package/lib/typescript/src/domain/groupChannel/index.d.ts +1 -0
  286. package/lib/typescript/src/domain/groupChannel/module/createGroupChannelModule.d.ts +1 -1
  287. package/lib/typescript/src/domain/groupChannel/types.d.ts +24 -7
  288. package/lib/typescript/src/domain/groupChannelBannedUsers/types.d.ts +3 -3
  289. package/lib/typescript/src/domain/groupChannelList/types.d.ts +2 -2
  290. package/lib/typescript/src/domain/groupChannelModeration/types.d.ts +3 -3
  291. package/lib/typescript/src/domain/groupChannelMutedMembers/types.d.ts +3 -3
  292. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.d.ts +3 -0
  293. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.d.ts +2 -0
  294. package/lib/typescript/src/domain/groupChannelNotifications/index.d.ts +4 -0
  295. package/lib/typescript/src/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.d.ts +3 -0
  296. package/lib/typescript/src/domain/groupChannelNotifications/module/moduleContext.d.ts +3 -0
  297. package/lib/typescript/src/domain/groupChannelNotifications/types.d.ts +33 -0
  298. package/lib/typescript/src/domain/groupChannelOperators/types.d.ts +3 -3
  299. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +1 -1
  300. package/lib/typescript/src/domain/groupChannelSettings/types.d.ts +3 -1
  301. package/lib/typescript/src/domain/groupChannelUserList/types.d.ts +6 -6
  302. package/lib/typescript/src/domain/userList/component/UserListList.d.ts +2 -1
  303. package/lib/typescript/src/domain/userList/module/createUserListModule.d.ts +2 -1
  304. package/lib/typescript/src/fragments/createGroupChannelCreateFragment.d.ts +1 -1
  305. package/lib/typescript/src/fragments/createGroupChannelInviteFragment.d.ts +1 -1
  306. package/lib/typescript/src/fragments/createGroupChannelNotificationsFragment.d.ts +3 -0
  307. package/lib/typescript/src/hooks/useConnection.d.ts +1 -1
  308. package/lib/typescript/src/hooks/useContext.d.ts +4 -0
  309. package/lib/typescript/src/hooks/useKeyboardStatus.d.ts +6 -0
  310. package/lib/typescript/src/hooks/useMentionSuggestion.d.ts +17 -0
  311. package/lib/typescript/src/hooks/useMentionTextInput.d.ts +18 -0
  312. package/lib/typescript/src/index.d.ts +7 -2
  313. package/lib/typescript/src/libs/EmojiManager.d.ts +16 -0
  314. package/lib/typescript/src/libs/MentionConfig.d.ts +24 -0
  315. package/lib/typescript/src/libs/MentionManager.d.ts +61 -0
  316. package/lib/typescript/src/localization/StringSet.type.d.ts +16 -2
  317. package/lib/typescript/src/platform/createMediaService.expo.d.ts +1 -1
  318. package/lib/typescript/src/platform/createMediaService.native.d.ts +1 -1
  319. package/lib/typescript/src/platform/dynamicModule.d.ts +1 -1
  320. package/lib/typescript/src/platform/types.d.ts +5 -5
  321. package/lib/typescript/src/types.d.ts +13 -4
  322. package/lib/typescript/src/utils/common.d.ts +1 -0
  323. package/lib/typescript/src/version.d.ts +1 -1
  324. package/package.json +6 -6
  325. package/src/components/ChatFlatList.tsx +2 -1
  326. package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +17 -12
  327. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +25 -18
  328. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +20 -10
  329. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +82 -14
  330. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +135 -61
  331. package/src/components/MessageRenderer/UserMessage/index.tsx +8 -1
  332. package/src/components/MessageRenderer/index.tsx +39 -7
  333. package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +106 -0
  334. package/src/components/ReactionAddons/MessageReactionAddon.tsx +123 -0
  335. package/src/components/ReactionAddons/ReactionRoundedButton.tsx +71 -0
  336. package/src/components/ReactionAddons/index.tsx +7 -0
  337. package/src/components/ReactionBottomSheets/ReactionListBottomSheet.tsx +113 -0
  338. package/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx +249 -0
  339. package/src/components/ReactionBottomSheets/index.tsx +24 -0
  340. package/src/constants.ts +2 -0
  341. package/src/containers/GroupChannelPreviewContainer.tsx +3 -1
  342. package/src/containers/SendbirdUIKitContainer.tsx +141 -83
  343. package/src/contexts/ReactionCtx.tsx +102 -0
  344. package/src/contexts/SendbirdChatCtx.tsx +24 -2
  345. package/src/contexts/UserProfileCtx.tsx +9 -0
  346. package/src/domain/groupChannel/component/GroupChannelInput/EditInput.tsx +56 -30
  347. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +48 -19
  348. package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +137 -43
  349. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +27 -10
  350. package/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.tsx +173 -0
  351. package/src/domain/groupChannel/index.ts +1 -0
  352. package/src/domain/groupChannel/module/createGroupChannelModule.tsx +12 -1
  353. package/src/domain/groupChannel/module/moduleContext.tsx +4 -4
  354. package/src/domain/groupChannel/types.ts +28 -5
  355. package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.tsx +3 -2
  356. package/src/domain/groupChannelList/component/GroupChannelListList.tsx +2 -1
  357. package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.tsx +2 -1
  358. package/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.tsx +14 -0
  359. package/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.tsx +128 -0
  360. package/src/domain/groupChannelNotifications/index.ts +4 -0
  361. package/src/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.tsx +15 -0
  362. package/src/domain/groupChannelNotifications/module/moduleContext.tsx +31 -0
  363. package/src/domain/groupChannelNotifications/types.ts +38 -0
  364. package/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.tsx +2 -1
  365. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +42 -3
  366. package/src/domain/groupChannelSettings/module/moduleContext.tsx +9 -12
  367. package/src/domain/groupChannelSettings/types.ts +2 -0
  368. package/src/domain/groupChannelUserList/types.ts +7 -2
  369. package/src/domain/userList/component/UserListList.tsx +5 -1
  370. package/src/domain/userList/module/createUserListModule.tsx +3 -1
  371. package/src/fragments/createGroupChannelCreateFragment.tsx +8 -2
  372. package/src/fragments/createGroupChannelFragment.tsx +19 -6
  373. package/src/fragments/createGroupChannelInviteFragment.tsx +2 -2
  374. package/src/fragments/createGroupChannelNotificationsFragment.tsx +27 -0
  375. package/src/fragments/createGroupChannelSettingsFragment.tsx +2 -0
  376. package/src/hooks/useConnection.ts +3 -1
  377. package/src/hooks/useContext.ts +7 -0
  378. package/src/hooks/useKeyboardStatus.ts +54 -0
  379. package/src/hooks/useMentionSuggestion.ts +106 -0
  380. package/src/hooks/useMentionTextInput.ts +139 -0
  381. package/src/index.ts +13 -2
  382. package/src/libs/EmojiManager.ts +80 -0
  383. package/src/libs/MentionConfig.ts +40 -0
  384. package/src/libs/MentionManager.tsx +240 -0
  385. package/src/localization/StringSet.type.ts +38 -8
  386. package/src/types.ts +12 -0
  387. package/src/utils/common.ts +8 -0
  388. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["Logger","setLogLevel","__DEV__","setTitle","Platform","OS"],"sources":["index.ts"],"sourcesContent":["/** Components **/\nimport { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport { default as MessageRenderer } from './components/MessageRenderer';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport { useLocalization, usePlatformService, useSendbirdChat, useUserProfile } from './hooks/useContext';\n\n/** Localization **/\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport { createBaseStringSet } from './localization/StringSet.type';\nexport type { StringSet } from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\n\nexport type {\n FileServiceInterface,\n ClipboardServiceInterface,\n FilePickerServiceInterface,\n FileSystemServiceInterface,\n SaveOptions,\n OpenDocumentOptions,\n OpenCameraOptions,\n OpenMediaLibraryOptions,\n OpenResultListener,\n DownloadedPath,\n Unsubscribe,\n FilePickerResponse,\n FileType,\n NotificationServiceInterface,\n} from './platform/types';\n\n/** Domain **/\nexport * from './domain/groupChannel';\nexport type {\n GroupChannelProps,\n GroupChannelModule,\n GroupChannelFragment,\n GroupChannelContextsType,\n} from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport type {\n GroupChannelSettingsProps,\n GroupChannelSettingsModule,\n GroupChannelSettingsFragment,\n GroupChannelSettingsContextsType,\n} from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport type {\n GroupChannelType,\n GroupChannelListProps,\n GroupChannelListModule,\n GroupChannelListFragment,\n GroupChannelListContextsType,\n} from './domain/groupChannelList/types';\n\nexport * from './domain/userList';\nexport type { UserListProps, UserListModule, UserListContextsType } from './domain/userList/types';\nexport * from './domain/groupChannelUserList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\n\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AAGA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAoBA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AASA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AAEA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;;;;;;;AA5GA;;AAiBA;;AAaA;;AAMA;;AAKA;;AAKA;;AA2BA;;AA8BA;AAOAA,kBAAA,CAAOC,WAAP,CAAmBC,OAAO,GAAG,MAAH,GAAY,MAAtC;;AACAF,kBAAA,CAAOG,QAAP,CAAiB,UAASC,qBAAA,CAASC,EAAG,GAAtC"}
1
+ {"version":3,"names":["Logger","setLogLevel","__DEV__","setTitle","Platform","OS"],"sources":["index.ts"],"sourcesContent":["/** Components **/\nimport { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport { default as MessageRenderer } from './components/MessageRenderer';\nexport { ReactionAddons } from './components/ReactionAddons';\nexport { ReactionBottomSheets } from './components/ReactionBottomSheets';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\nexport { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport * from './hooks/useContext';\n\n/** Localization **/\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport { createBaseStringSet } from './localization/StringSet.type';\nexport type { StringSet } from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\n\nexport type {\n FileServiceInterface,\n ClipboardServiceInterface,\n FilePickerServiceInterface,\n FileSystemServiceInterface,\n SaveOptions,\n OpenDocumentOptions,\n OpenCameraOptions,\n OpenMediaLibraryOptions,\n OpenResultListener,\n DownloadedPath,\n Unsubscribe,\n FilePickerResponse,\n FileType,\n NotificationServiceInterface,\n} from './platform/types';\n\n/** Domain **/\nexport * from './domain/groupChannel';\nexport type {\n GroupChannelProps,\n GroupChannelModule,\n GroupChannelFragment,\n GroupChannelContextsType,\n} from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport type {\n GroupChannelSettingsProps,\n GroupChannelSettingsModule,\n GroupChannelSettingsFragment,\n GroupChannelSettingsContextsType,\n} from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport type {\n GroupChannelType,\n GroupChannelListProps,\n GroupChannelListModule,\n GroupChannelListFragment,\n GroupChannelListContextsType,\n} from './domain/groupChannelList/types';\n\nexport * from './domain/groupChannelNotifications';\nexport {\n GroupChannelNotificationsProps,\n GroupChannelNotificationsContextsType,\n GroupChannelNotificationsFragment,\n GroupChannelNotificationsModule,\n} from './domain/groupChannelNotifications/types';\n\nexport * from './domain/groupChannelUserList/types';\nexport * from './domain/userList';\nexport type { UserListProps, UserListModule, UserListContextsType } from './domain/userList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\n\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAoBA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AASA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAOA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAIA;;AAEA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;;;;;;;AAvHA;;AAmBA;;AAcA;;AAMA;;AAKA;;AAKA;;AA2BA;;AAsCA;AAOAA,kBAAA,CAAOC,WAAP,CAAmBC,OAAO,GAAG,MAAH,GAAY,MAAtC;;AACAF,kBAAA,CAAOG,QAAP,CAAiB,UAASC,qBAAA,CAASC,EAAG,GAAtC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _InternalLocalCacheStorage = _interopRequireDefault(require("./InternalLocalCacheStorage"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+
14
+ class MemoryStorage {
15
+ constructor() {
16
+ _defineProperty(this, "_data", {});
17
+ }
18
+
19
+ async getAllKeys() {
20
+ return Object.keys(this._data);
21
+ }
22
+
23
+ async getItem(key) {
24
+ return this._data[key];
25
+ }
26
+
27
+ async removeItem(key) {
28
+ delete this._data[key];
29
+ }
30
+
31
+ async setItem(key, value) {
32
+ this._data[key] = value;
33
+ }
34
+
35
+ }
36
+
37
+ class EmojiManager {
38
+ constructor() {
39
+ let internalStorage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new _InternalLocalCacheStorage.default(new MemoryStorage());
40
+ this.internalStorage = internalStorage;
41
+
42
+ _defineProperty(this, "emojiStorage", {
43
+ data: null,
44
+ get: async () => {
45
+ if (!this.emojiStorage.data) {
46
+ const strItem = await this.internalStorage.getItem(EmojiManager.key);
47
+ if (strItem) this.emojiStorage.data = Object.freeze(JSON.parse(strItem));
48
+ }
49
+
50
+ return this.emojiStorage.data;
51
+ },
52
+ set: async data => {
53
+ this.emojiStorage.data = Object.freeze(data);
54
+ await this.internalStorage.setItem(EmojiManager.key, JSON.stringify(data));
55
+ }
56
+ });
57
+
58
+ _defineProperty(this, "_emojiCategoryMap", {});
59
+
60
+ _defineProperty(this, "_allEmojiMap", {});
61
+
62
+ _defineProperty(this, "_allEmoji", []);
63
+
64
+ _defineProperty(this, "init", async emojiContainer => {
65
+ if (emojiContainer) await this.emojiStorage.set(emojiContainer);
66
+ const container = await this.emojiStorage.get();
67
+
68
+ if (container) {
69
+ for (const category of container.emojiCategories) {
70
+ this._emojiCategoryMap[category.id] = category;
71
+
72
+ for (const emoji of category.emojis) {
73
+ this._allEmojiMap[emoji.key] = emoji;
74
+ }
75
+ }
76
+
77
+ this._allEmoji = Object.values(this._allEmojiMap);
78
+ }
79
+ });
80
+ }
81
+
82
+ get emojiCategoryMap() {
83
+ return this._emojiCategoryMap;
84
+ }
85
+
86
+ get allEmojiMap() {
87
+ return this._allEmojiMap;
88
+ }
89
+
90
+ get allEmoji() {
91
+ return this._allEmoji;
92
+ }
93
+
94
+ }
95
+
96
+ _defineProperty(EmojiManager, "key", 'sendbird-uikit@emoji-manager');
97
+
98
+ var _default = EmojiManager;
99
+ exports.default = _default;
100
+ //# sourceMappingURL=EmojiManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MemoryStorage","getAllKeys","Object","keys","_data","getItem","key","removeItem","setItem","value","EmojiManager","constructor","internalStorage","InternalLocalCacheStorage","data","get","emojiStorage","strItem","freeze","JSON","parse","set","stringify","emojiContainer","container","category","emojiCategories","_emojiCategoryMap","id","emoji","emojis","_allEmojiMap","_allEmoji","values","emojiCategoryMap","allEmojiMap","allEmoji"],"sources":["EmojiManager.ts"],"sourcesContent":["import type { SendbirdEmoji, SendbirdEmojiCategory, SendbirdEmojiContainer } from '@sendbird/uikit-utils';\n\nimport type { LocalCacheStorage } from '../types';\nimport InternalLocalCacheStorage from './InternalLocalCacheStorage';\n\nclass MemoryStorage implements LocalCacheStorage {\n _data: Record<string, string> = {};\n\n async getAllKeys(): Promise<readonly string[] | string[]> {\n return Object.keys(this._data);\n }\n\n async getItem(key: string): Promise<string | null> {\n return this._data[key];\n }\n\n async removeItem(key: string): Promise<void> {\n delete this._data[key];\n }\n\n async setItem(key: string, value: string): Promise<void> {\n this._data[key] = value;\n }\n}\n\nclass EmojiManager {\n static key = 'sendbird-uikit@emoji-manager';\n\n constructor(\n private internalStorage: InternalLocalCacheStorage = new InternalLocalCacheStorage(new MemoryStorage()),\n ) {}\n\n private emojiStorage = {\n data: null as null | SendbirdEmojiContainer,\n get: async () => {\n if (!this.emojiStorage.data) {\n const strItem = await this.internalStorage.getItem(EmojiManager.key);\n if (strItem) this.emojiStorage.data = Object.freeze(JSON.parse(strItem));\n }\n return this.emojiStorage.data;\n },\n set: async (data: SendbirdEmojiContainer) => {\n this.emojiStorage.data = Object.freeze(data);\n await this.internalStorage.setItem(EmojiManager.key, JSON.stringify(data));\n },\n };\n\n private _emojiCategoryMap: Record<string, SendbirdEmojiCategory> = {};\n public get emojiCategoryMap() {\n return this._emojiCategoryMap;\n }\n\n private _allEmojiMap: Record<string, SendbirdEmoji> = {};\n public get allEmojiMap() {\n return this._allEmojiMap;\n }\n\n private _allEmoji: SendbirdEmoji[] = [];\n public get allEmoji() {\n return this._allEmoji;\n }\n\n public init = async (emojiContainer?: SendbirdEmojiContainer) => {\n if (emojiContainer) await this.emojiStorage.set(emojiContainer);\n\n const container = await this.emojiStorage.get();\n\n if (container) {\n for (const category of container.emojiCategories) {\n this._emojiCategoryMap[category.id] = category;\n for (const emoji of category.emojis) {\n this._allEmojiMap[emoji.key] = emoji;\n }\n }\n this._allEmoji = Object.values(this._allEmojiMap);\n }\n };\n}\n\nexport default EmojiManager;\n"],"mappings":";;;;;;;AAGA;;;;;;AAEA,MAAMA,aAAN,CAAiD;EAAA;IAAA,+BACf,EADe;EAAA;;EAG/B,MAAVC,UAAU,GAA0C;IACxD,OAAOC,MAAM,CAACC,IAAP,CAAY,KAAKC,KAAjB,CAAP;EACD;;EAEY,MAAPC,OAAO,CAACC,GAAD,EAAsC;IACjD,OAAO,KAAKF,KAAL,CAAWE,GAAX,CAAP;EACD;;EAEe,MAAVC,UAAU,CAACD,GAAD,EAA6B;IAC3C,OAAO,KAAKF,KAAL,CAAWE,GAAX,CAAP;EACD;;EAEY,MAAPE,OAAO,CAACF,GAAD,EAAcG,KAAd,EAA4C;IACvD,KAAKL,KAAL,CAAWE,GAAX,IAAkBG,KAAlB;EACD;;AAjB8C;;AAoBjD,MAAMC,YAAN,CAAmB;EAGjBC,WAAW,GAET;IAAA,IADQC,eACR,uEADqD,IAAIC,kCAAJ,CAA8B,IAAIb,aAAJ,EAA9B,CACrD;IAAA,KADQY,eACR,GADQA,eACR;;IAAA,sCAEqB;MACrBE,IAAI,EAAE,IADe;MAErBC,GAAG,EAAE,YAAY;QACf,IAAI,CAAC,KAAKC,YAAL,CAAkBF,IAAvB,EAA6B;UAC3B,MAAMG,OAAO,GAAG,MAAM,KAAKL,eAAL,CAAqBP,OAArB,CAA6BK,YAAY,CAACJ,GAA1C,CAAtB;UACA,IAAIW,OAAJ,EAAa,KAAKD,YAAL,CAAkBF,IAAlB,GAAyBZ,MAAM,CAACgB,MAAP,CAAcC,IAAI,CAACC,KAAL,CAAWH,OAAX,CAAd,CAAzB;QACd;;QACD,OAAO,KAAKD,YAAL,CAAkBF,IAAzB;MACD,CARoB;MASrBO,GAAG,EAAE,MAAOP,IAAP,IAAwC;QAC3C,KAAKE,YAAL,CAAkBF,IAAlB,GAAyBZ,MAAM,CAACgB,MAAP,CAAcJ,IAAd,CAAzB;QACA,MAAM,KAAKF,eAAL,CAAqBJ,OAArB,CAA6BE,YAAY,CAACJ,GAA1C,EAA+Ca,IAAI,CAACG,SAAL,CAAeR,IAAf,CAA/C,CAAN;MACD;IAZoB,CAFrB;;IAAA,2CAiBiE,EAjBjE;;IAAA,sCAsBoD,EAtBpD;;IAAA,mCA2BmC,EA3BnC;;IAAA,8BAgCY,MAAOS,cAAP,IAAmD;MAC/D,IAAIA,cAAJ,EAAoB,MAAM,KAAKP,YAAL,CAAkBK,GAAlB,CAAsBE,cAAtB,CAAN;MAEpB,MAAMC,SAAS,GAAG,MAAM,KAAKR,YAAL,CAAkBD,GAAlB,EAAxB;;MAEA,IAAIS,SAAJ,EAAe;QACb,KAAK,MAAMC,QAAX,IAAuBD,SAAS,CAACE,eAAjC,EAAkD;UAChD,KAAKC,iBAAL,CAAuBF,QAAQ,CAACG,EAAhC,IAAsCH,QAAtC;;UACA,KAAK,MAAMI,KAAX,IAAoBJ,QAAQ,CAACK,MAA7B,EAAqC;YACnC,KAAKC,YAAL,CAAkBF,KAAK,CAACvB,GAAxB,IAA+BuB,KAA/B;UACD;QACF;;QACD,KAAKG,SAAL,GAAiB9B,MAAM,CAAC+B,MAAP,CAAc,KAAKF,YAAnB,CAAjB;MACD;IACF,CA9CC;EAAE;;EAkBuB,IAAhBG,gBAAgB,GAAG;IAC5B,OAAO,KAAKP,iBAAZ;EACD;;EAGqB,IAAXQ,WAAW,GAAG;IACvB,OAAO,KAAKJ,YAAZ;EACD;;EAGkB,IAARK,QAAQ,GAAG;IACpB,OAAO,KAAKJ,SAAZ;EACD;;AAnCgB;;gBAAbtB,Y,SACS,8B;;eAqDAA,Y"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+
10
+ class MentionConfig {
11
+ constructor(_config) {
12
+ this._config = _config;
13
+ }
14
+
15
+ get mentionLimit() {
16
+ return this._config.mentionLimit;
17
+ }
18
+
19
+ get suggestionLimit() {
20
+ return this._config.suggestionLimit;
21
+ }
22
+
23
+ get delimiter() {
24
+ return this._config.delimiter;
25
+ }
26
+
27
+ get debounceMills() {
28
+ return this._config.debounceMills;
29
+ }
30
+
31
+ get trigger() {
32
+ return this._config.trigger;
33
+ }
34
+
35
+ }
36
+
37
+ _defineProperty(MentionConfig, "DEFAULT", {
38
+ MENTION_LIMIT: 10,
39
+ SUGGESTION_LIMIT: 15,
40
+ DEBOUNCE_MILLS: 300,
41
+ DELIMITER: ' ',
42
+ TRIGGER: '@'
43
+ });
44
+
45
+ var _default = MentionConfig;
46
+ exports.default = _default;
47
+ //# sourceMappingURL=MentionConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MentionConfig","constructor","_config","mentionLimit","suggestionLimit","delimiter","debounceMills","trigger","MENTION_LIMIT","SUGGESTION_LIMIT","DEBOUNCE_MILLS","DELIMITER","TRIGGER"],"sources":["MentionConfig.ts"],"sourcesContent":["export interface MentionConfigInterface {\n mentionLimit: number;\n suggestionLimit: number;\n debounceMills: number;\n delimiter: string;\n trigger: string;\n}\n\nclass MentionConfig {\n static DEFAULT = {\n MENTION_LIMIT: 10,\n SUGGESTION_LIMIT: 15,\n DEBOUNCE_MILLS: 300,\n DELIMITER: ' ',\n TRIGGER: '@',\n };\n constructor(private _config: MentionConfigInterface) {}\n\n get mentionLimit() {\n return this._config.mentionLimit;\n }\n\n get suggestionLimit() {\n return this._config.suggestionLimit;\n }\n\n get delimiter() {\n return this._config.delimiter;\n }\n\n get debounceMills() {\n return this._config.debounceMills;\n }\n\n get trigger() {\n return this._config.trigger;\n }\n}\n\nexport default MentionConfig;\n"],"mappings":";;;;;;;;;AAQA,MAAMA,aAAN,CAAoB;EAQlBC,WAAW,CAASC,OAAT,EAA0C;IAAA,KAAjCA,OAAiC,GAAjCA,OAAiC;EAAE;;EAEvC,IAAZC,YAAY,GAAG;IACjB,OAAO,KAAKD,OAAL,CAAaC,YAApB;EACD;;EAEkB,IAAfC,eAAe,GAAG;IACpB,OAAO,KAAKF,OAAL,CAAaE,eAApB;EACD;;EAEY,IAATC,SAAS,GAAG;IACd,OAAO,KAAKH,OAAL,CAAaG,SAApB;EACD;;EAEgB,IAAbC,aAAa,GAAG;IAClB,OAAO,KAAKJ,OAAL,CAAaI,aAApB;EACD;;EAEU,IAAPC,OAAO,GAAG;IACZ,OAAO,KAAKL,OAAL,CAAaK,OAApB;EACD;;AA5BiB;;gBAAdP,a,aACa;EACfQ,aAAa,EAAE,EADA;EAEfC,gBAAgB,EAAE,EAFH;EAGfC,cAAc,EAAE,GAHD;EAIfC,SAAS,EAAE,GAJI;EAKfC,OAAO,EAAE;AALM,C;;eA8BJZ,a"}
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
11
+
12
+ var _uikitUtils = require("@sendbird/uikit-utils");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+
18
+ class MentionManager {
19
+ constructor(config, mentionEnabled) {
20
+ var _this = this;
21
+
22
+ this.config = config;
23
+ this.mentionEnabled = mentionEnabled;
24
+
25
+ _defineProperty(this, "_invalidStartsKeywords", void 0);
26
+
27
+ _defineProperty(this, "_templateRegex", void 0);
28
+
29
+ _defineProperty(this, "rangeHelpers", {
30
+ inRangeUnderOver(start, num, end) {
31
+ return start < num && num < end;
32
+ },
33
+
34
+ inRangeUnderMore(start, num, end) {
35
+ return start < num && num <= end;
36
+ },
37
+
38
+ inRangeLessOver(start, num, end) {
39
+ return start <= num && num < end;
40
+ },
41
+
42
+ inRangeLessMore(start, num, end) {
43
+ return start <= num && num <= end;
44
+ },
45
+
46
+ overlaps(a, b) {
47
+ let compare = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'underOver';
48
+ const inRange = {
49
+ underOver: this.inRangeUnderOver,
50
+ underMore: this.inRangeUnderMore,
51
+ lessOver: this.inRangeLessOver,
52
+ lessMore: this.inRangeLessMore
53
+ }[compare];
54
+ return inRange(a.start, b.start, a.end) || inRange(a.start, b.end, a.end);
55
+ }
56
+
57
+ });
58
+
59
+ _defineProperty(this, "getSearchString", (text, selectionIndex) => {
60
+ const lastSpan = text.slice(0, selectionIndex).split(this.config.delimiter).pop() ?? '';
61
+ const triggerIdx = lastSpan.indexOf(this.config.trigger);
62
+ const mentionSpan = triggerIdx === -1 ? lastSpan : lastSpan.slice(triggerIdx);
63
+ const searchString = mentionSpan.slice(this.config.trigger.length);
64
+ return {
65
+ searchString,
66
+ isTriggered: () => mentionSpan.startsWith(this.config.trigger),
67
+ isValidSearchString: () => this._invalidStartsKeywords.every(it => !searchString.startsWith(it))
68
+ };
69
+ });
70
+
71
+ _defineProperty(this, "reconcileRangeOfMentionedUsers", (offset, selectionIndex, mentionedUsers) => {
72
+ return mentionedUsers.map(it => {
73
+ // Changes only on the right text of selection.
74
+ if (selectionIndex <= it.range.start) {
75
+ return { ...it,
76
+ range: {
77
+ start: it.range.start + offset,
78
+ end: it.range.end + offset
79
+ }
80
+ };
81
+ }
82
+
83
+ return it;
84
+ });
85
+ });
86
+
87
+ _defineProperty(this, "removeMentionedUsersInSelection", (selection, mentionedUsers) => {
88
+ let lastSelection = 0;
89
+ let removedOffset = 0;
90
+ const filtered = mentionedUsers.filter(it => {
91
+ const shouldRemove = this.rangeHelpers.overlaps(selection, it.range, 'lessMore');
92
+
93
+ if (shouldRemove) {
94
+ lastSelection = Math.max(lastSelection, it.range.end);
95
+ removedOffset -= it.range.end - it.range.start;
96
+ }
97
+
98
+ return !shouldRemove;
99
+ });
100
+ return {
101
+ filtered,
102
+ lastSelection,
103
+ removedOffset
104
+ };
105
+ });
106
+
107
+ _defineProperty(this, "getSearchStringRangeInText", (selectionIndex, searchString) => {
108
+ return {
109
+ start: selectionIndex - searchString.length - this.config.trigger.length,
110
+ end: selectionIndex
111
+ };
112
+ });
113
+
114
+ _defineProperty(this, "asMentionedMessageTemplate", function (user) {
115
+ let delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
116
+ return `${_this.config.trigger}{${user.userId}}` + (delimiter ? _this.config.delimiter : '');
117
+ });
118
+
119
+ _defineProperty(this, "asMentionedMessageText", function (user) {
120
+ let delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
121
+ return `${_this.config.trigger}${user.nickname}` + (delimiter ? _this.config.delimiter : '');
122
+ });
123
+
124
+ _defineProperty(this, "textToMentionedComponents", (text, mentionedUsers) => {
125
+ if (!this.mentionEnabled || mentionedUsers.length === 0) return text;
126
+ const {
127
+ leftText,
128
+ components
129
+ } = mentionedUsers.sort((a, b) => b.range.start - a.range.start).reduce((_ref, curr, currentIndex) => {
130
+ let {
131
+ leftText,
132
+ components
133
+ } = _ref;
134
+ const leftSpan = leftText.slice(0, curr.range.start);
135
+ const mentionSpan = leftText.slice(curr.range.start, curr.range.end);
136
+ const rightSpan = leftText.slice(curr.range.end);
137
+ return {
138
+ leftText: leftSpan,
139
+ components: [/*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
140
+ key: mentionSpan + currentIndex,
141
+ style: styles.mentionedText
142
+ }, mentionSpan), rightSpan, ...components]
143
+ };
144
+ }, {
145
+ leftText: text,
146
+ components: []
147
+ });
148
+ return [leftText, ...components];
149
+ });
150
+
151
+ _defineProperty(this, "textToMentionedMessageTemplate", (text, mentionedUsers) => {
152
+ if (!this.mentionEnabled) return text;
153
+ const {
154
+ leftText,
155
+ strings
156
+ } = mentionedUsers.sort((a, b) => b.range.start - a.range.start).reduce((_ref2, curr) => {
157
+ let {
158
+ leftText,
159
+ strings
160
+ } = _ref2;
161
+ const leftSpan = leftText.slice(0, curr.range.start);
162
+ const templateSpan = this.asMentionedMessageTemplate(curr.user);
163
+ const rightSpan = leftText.slice(curr.range.end);
164
+ return {
165
+ leftText: leftSpan,
166
+ strings: [templateSpan, rightSpan, ...strings]
167
+ };
168
+ }, {
169
+ leftText: text,
170
+ strings: []
171
+ });
172
+ return [leftText, ...strings].join('');
173
+ });
174
+
175
+ _defineProperty(this, "templateToTextAndMentionedUsers", (template, mentionedUsers) => {
176
+ const actualMentionedUsers = [];
177
+ let offsetToMove = 0;
178
+ const mentionedText = (0, _uikitUtils.replaceWithRegex)(template, this.templateRegex, _ref3 => {
179
+ let {
180
+ match,
181
+ matchIndex,
182
+ groups
183
+ } = _ref3;
184
+ const user = mentionedUsers.find(it => it.userId === groups[2]);
185
+
186
+ if (user && typeof matchIndex === 'number') {
187
+ const userIdSpan = match;
188
+ const userNicknameSpan = this.asMentionedMessageText(user);
189
+ const offsetAfterConverted = userNicknameSpan.length - userIdSpan.length;
190
+ const originalRange = {
191
+ start: matchIndex,
192
+ end: matchIndex + userIdSpan.length
193
+ };
194
+ const convertedRange = {
195
+ start: Math.max(0, originalRange.start + offsetToMove),
196
+ end: originalRange.end + offsetToMove + offsetAfterConverted
197
+ };
198
+ offsetToMove += offsetAfterConverted;
199
+ actualMentionedUsers.push({
200
+ range: convertedRange,
201
+ user
202
+ });
203
+ return userNicknameSpan;
204
+ }
205
+
206
+ return match;
207
+ }, '').join('');
208
+ return {
209
+ mentionedText,
210
+ mentionedUsers: actualMentionedUsers
211
+ };
212
+ });
213
+
214
+ _defineProperty(this, "shouldUseMentionedMessageTemplate", message => {
215
+ return Boolean(this.mentionEnabled && (message === null || message === void 0 ? void 0 : message.mentionedMessageTemplate) && (message === null || message === void 0 ? void 0 : message.mentionedUsers) && (message === null || message === void 0 ? void 0 : message.mentionedUsers.length) > 0);
216
+ });
217
+
218
+ this._invalidStartsKeywords = [this.config.trigger, this.config.delimiter];
219
+ this._templateRegex = (0, _uikitUtils.createMentionTemplateRegex)(this.config.trigger);
220
+ }
221
+
222
+ get templateRegex() {
223
+ return this._templateRegex;
224
+ }
225
+
226
+ }
227
+
228
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
229
+ mentionedText: {
230
+ fontWeight: 'bold'
231
+ }
232
+ });
233
+ var _default = MentionManager;
234
+ exports.default = _default;
235
+ //# sourceMappingURL=MentionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MentionManager","constructor","config","mentionEnabled","inRangeUnderOver","start","num","end","inRangeUnderMore","inRangeLessOver","inRangeLessMore","overlaps","a","b","compare","inRange","underOver","underMore","lessOver","lessMore","text","selectionIndex","lastSpan","slice","split","delimiter","pop","triggerIdx","indexOf","trigger","mentionSpan","searchString","length","isTriggered","startsWith","isValidSearchString","_invalidStartsKeywords","every","it","offset","mentionedUsers","map","range","selection","lastSelection","removedOffset","filtered","filter","shouldRemove","rangeHelpers","Math","max","user","userId","nickname","leftText","components","sort","reduce","curr","currentIndex","leftSpan","rightSpan","styles","mentionedText","strings","templateSpan","asMentionedMessageTemplate","join","template","actualMentionedUsers","offsetToMove","replaceWithRegex","templateRegex","match","matchIndex","groups","find","userIdSpan","userNicknameSpan","asMentionedMessageText","offsetAfterConverted","originalRange","convertedRange","push","message","Boolean","mentionedMessageTemplate","_templateRegex","createMentionTemplateRegex","createStyleSheet","fontWeight"],"sources":["MentionManager.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage, SendbirdUser, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport { createMentionTemplateRegex, replaceWithRegex } from '@sendbird/uikit-utils';\n\nimport type { MentionedUser, Range } from '../types';\nimport type { MentionConfigInterface } from './MentionConfig';\n\nclass MentionManager {\n private _invalidStartsKeywords: string[];\n private _templateRegex: RegExp;\n\n constructor(public config: MentionConfigInterface, public mentionEnabled: boolean) {\n this._invalidStartsKeywords = [this.config.trigger, this.config.delimiter];\n this._templateRegex = createMentionTemplateRegex(this.config.trigger);\n }\n\n public rangeHelpers = {\n inRangeUnderOver(start: number, num: number, end: number) {\n return start < num && num < end;\n },\n inRangeUnderMore(start: number, num: number, end: number) {\n return start < num && num <= end;\n },\n inRangeLessOver(start: number, num: number, end: number) {\n return start <= num && num < end;\n },\n inRangeLessMore(start: number, num: number, end: number) {\n return start <= num && num <= end;\n },\n overlaps(a: Range, b: Range, compare: 'underOver' | 'underMore' | 'lessOver' | 'lessMore' = 'underOver') {\n const inRange = {\n underOver: this.inRangeUnderOver,\n underMore: this.inRangeUnderMore,\n lessOver: this.inRangeLessOver,\n lessMore: this.inRangeLessMore,\n }[compare];\n\n return inRange(a.start, b.start, a.end) || inRange(a.start, b.end, a.end);\n },\n };\n\n public get templateRegex() {\n return this._templateRegex;\n }\n\n public getSearchString = (text: string, selectionIndex: number) => {\n const lastSpan = text.slice(0, selectionIndex).split(this.config.delimiter).pop() ?? '';\n const triggerIdx = lastSpan.indexOf(this.config.trigger);\n const mentionSpan = triggerIdx === -1 ? lastSpan : lastSpan.slice(triggerIdx);\n const searchString = mentionSpan.slice(this.config.trigger.length);\n\n return {\n searchString,\n isTriggered: () => mentionSpan.startsWith(this.config.trigger),\n isValidSearchString: () => this._invalidStartsKeywords.every((it) => !searchString.startsWith(it)),\n };\n };\n\n /**\n * @description Reconcile the range by offset in the mentioned users\n * */\n public reconcileRangeOfMentionedUsers = (offset: number, selectionIndex: number, mentionedUsers: MentionedUser[]) => {\n return mentionedUsers.map((it) => {\n // Changes only on the right text of selection.\n if (selectionIndex <= it.range.start) {\n return {\n ...it,\n range: {\n start: it.range.start + offset,\n end: it.range.end + offset,\n },\n };\n }\n\n return it;\n });\n };\n\n /**\n * @description Remove users who in a range\n * */\n public removeMentionedUsersInSelection = (selection: Range, mentionedUsers: MentionedUser[]) => {\n let lastSelection = 0;\n let removedOffset = 0;\n const filtered = mentionedUsers.filter((it) => {\n const shouldRemove = this.rangeHelpers.overlaps(selection, it.range, 'lessMore');\n if (shouldRemove) {\n lastSelection = Math.max(lastSelection, it.range.end);\n removedOffset -= it.range.end - it.range.start;\n }\n return !shouldRemove;\n });\n\n return { filtered, lastSelection, removedOffset };\n };\n\n public getSearchStringRangeInText = (selectionIndex: number, searchString: string): Range => {\n return {\n start: selectionIndex - searchString.length - this.config.trigger.length,\n end: selectionIndex,\n };\n };\n\n /**\n * @description User to @{user.id} template format\n * */\n public asMentionedMessageTemplate = (user: SendbirdUser, delimiter = false) => {\n return `${this.config.trigger}{${user.userId}}` + (delimiter ? this.config.delimiter : '');\n };\n\n /**\n * @description User to @user.nickname text format\n * */\n public asMentionedMessageText = (user: SendbirdUser, delimiter = false) => {\n return `${this.config.trigger}${user.nickname}` + (delimiter ? this.config.delimiter : '');\n };\n\n /**\n * @description Bold @user.nickname\n * */\n public textToMentionedComponents = (text: string, mentionedUsers: MentionedUser[]) => {\n if (!this.mentionEnabled || mentionedUsers.length === 0) return text;\n\n const { leftText, components } = mentionedUsers\n .sort((a, b) => b.range.start - a.range.start)\n .reduce(\n ({ leftText, components }, curr, currentIndex) => {\n const leftSpan = leftText.slice(0, curr.range.start);\n const mentionSpan = leftText.slice(curr.range.start, curr.range.end);\n const rightSpan = leftText.slice(curr.range.end);\n\n return {\n leftText: leftSpan,\n components: [\n <Text key={mentionSpan + currentIndex} style={styles.mentionedText}>\n {mentionSpan}\n </Text>,\n rightSpan,\n ...components,\n ],\n };\n },\n { leftText: text, components: [] as (string | JSX.Element)[] },\n );\n\n return [leftText, ...components];\n };\n\n public textToMentionedMessageTemplate = (text: string, mentionedUsers: MentionedUser[]) => {\n if (!this.mentionEnabled) return text;\n\n const { leftText, strings } = mentionedUsers\n .sort((a, b) => b.range.start - a.range.start)\n .reduce(\n ({ leftText, strings }, curr) => {\n const leftSpan = leftText.slice(0, curr.range.start);\n const templateSpan = this.asMentionedMessageTemplate(curr.user);\n const rightSpan = leftText.slice(curr.range.end);\n\n return {\n leftText: leftSpan,\n strings: [templateSpan, rightSpan, ...strings],\n };\n },\n { leftText: text, strings: [] as string[] },\n );\n\n return [leftText, ...strings].join('');\n };\n\n /**\n * @description Convert @{user.id} template to @user.nickname text and MentionedUser[] array.\n * */\n public templateToTextAndMentionedUsers = (template: string, mentionedUsers: SendbirdUser[]) => {\n const actualMentionedUsers: MentionedUser[] = [];\n\n let offsetToMove = 0;\n const mentionedText = replaceWithRegex(\n template,\n this.templateRegex,\n ({ match, matchIndex, groups }) => {\n const user = mentionedUsers.find((it) => it.userId === groups[2]);\n if (user && typeof matchIndex === 'number') {\n const userIdSpan = match;\n const userNicknameSpan = this.asMentionedMessageText(user);\n\n const offsetAfterConverted = userNicknameSpan.length - userIdSpan.length;\n\n const originalRange: Range = {\n start: matchIndex,\n end: matchIndex + userIdSpan.length,\n };\n\n const convertedRange: Range = {\n start: Math.max(0, originalRange.start + offsetToMove),\n end: originalRange.end + offsetToMove + offsetAfterConverted,\n };\n\n offsetToMove += offsetAfterConverted;\n\n actualMentionedUsers.push({ range: convertedRange, user });\n return userNicknameSpan;\n }\n return match;\n },\n '',\n ).join('');\n\n return {\n mentionedText,\n mentionedUsers: actualMentionedUsers,\n };\n };\n\n public shouldUseMentionedMessageTemplate = (\n message?: SendbirdUserMessage | SendbirdFileMessage,\n ): message is RequiredSpecific<\n SendbirdUserMessage | SendbirdFileMessage,\n 'mentionedMessageTemplate' | 'mentionedUsers' | 'mentionedUserIds' | 'mentionType'\n > => {\n return Boolean(\n this.mentionEnabled &&\n message?.mentionedMessageTemplate &&\n message?.mentionedUsers &&\n message?.mentionedUsers.length > 0,\n );\n };\n}\n\ntype RequiredSpecific<T, K extends keyof T> = T & {\n [P in K]-?: T[P];\n};\n\nconst styles = createStyleSheet({\n mentionedText: { fontWeight: 'bold' },\n});\n\nexport default MentionManager;\n"],"mappings":"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"}
@@ -27,9 +27,9 @@ const createBaseStringSet = _ref => {
27
27
  GROUP_CHANNEL: {
28
28
  HEADER_TITLE: (currentUserId, channel) => (0, _uikitUtils.getGroupChannelTitle)(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),
29
29
  LIST_BANNER_FROZEN: 'Channel is frozen',
30
- LIST_DATE_SEPARATOR: (date, locale) => (0, _uikitUtils.dateSeparator)(date, locale ?? dateLocale),
30
+ LIST_DATE_SEPARATOR: (date, locale) => (0, _uikitUtils.getDateSeparatorFormat)(date, locale ?? dateLocale),
31
31
  LIST_BUTTON_NEW_MSG: newMessages => `${newMessages.length} new messages`,
32
- MESSAGE_BUBBLE_TIME: (message, locale) => (0, _uikitUtils.messageTime)(new Date(message.createdAt), locale ?? dateLocale),
32
+ MESSAGE_BUBBLE_TIME: (message, locale) => (0, _uikitUtils.getMessageTimeFormat)(new Date(message.createdAt), locale ?? dateLocale),
33
33
  MESSAGE_BUBBLE_FILE_TITLE: message => message.name,
34
34
  MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',
35
35
  MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',
@@ -39,6 +39,7 @@ const createBaseStringSet = _ref => {
39
39
  INPUT_PLACEHOLDER_MUTED: "You're muted by the operator.",
40
40
  INPUT_EDIT_OK: 'Save',
41
41
  INPUT_EDIT_CANCEL: 'Cancel',
42
+ MENTION_LIMITED: mentionLimit => `You can have up to ${mentionLimit} mentions per message.`,
42
43
  DIALOG_MESSAGE_COPY: 'Copy',
43
44
  DIALOG_MESSAGE_EDIT: 'Edit',
44
45
  DIALOG_MESSAGE_SAVE: 'Save',
@@ -57,9 +58,12 @@ const createBaseStringSet = _ref => {
57
58
  HEADER_TITLE: 'Channel information',
58
59
  HEADER_RIGHT: 'Edit',
59
60
  MENU_MODERATION: 'Moderation',
60
- MENU_NOTIFICATION: 'Notifications',
61
61
  MENU_MEMBERS: 'Members',
62
62
  MENU_LEAVE_CHANNEL: 'Leave channel',
63
+ MENU_NOTIFICATION: 'Notifications',
64
+ MENU_NOTIFICATION_LABEL_ON: 'On',
65
+ MENU_NOTIFICATION_LABEL_OFF: 'Off',
66
+ MENU_NOTIFICATION_LABEL_MENTION_ONLY: 'Mentions only',
63
67
  DIALOG_CHANGE_NAME: 'Change channel name',
64
68
  DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',
65
69
  DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',
@@ -71,6 +75,14 @@ const createBaseStringSet = _ref => {
71
75
  DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',
72
76
  ...(overrides === null || overrides === void 0 ? void 0 : overrides.GROUP_CHANNEL_SETTINGS)
73
77
  },
78
+ GROUP_CHANNEL_NOTIFICATIONS: {
79
+ HEADER_TITLE: 'Notifications',
80
+ MENU_NOTIFICATIONS: 'Notifications',
81
+ MENU_NOTIFICATIONS_DESC: 'Turn on push notifications if you wish to be notified when messages are delivered to this channel.',
82
+ MENU_NOTIFICATIONS_OPTION_ALL: 'All new messages',
83
+ MENU_NOTIFICATIONS_OPTION_MENTION_ONLY: 'Mentions only',
84
+ ...(overrides === null || overrides === void 0 ? void 0 : overrides.GROUP_CHANNEL_NOTIFICATIONS)
85
+ },
74
86
  GROUP_CHANNEL_MODERATION: {
75
87
  HEADER_TITLE: 'Moderation',
76
88
  MENU_OPERATORS: 'Operators',
@@ -182,7 +194,7 @@ const createBaseStringSet = _ref => {
182
194
 
183
195
  return ((_message$sender = message.sender) === null || _message$sender === void 0 ? void 0 : _message$sender.nickname) || USER_NO_NAME;
184
196
  },
185
- SUBTITLE: message => (0, _uikitUtils.messageTime)(new Date(message.createdAt), dateLocale)
197
+ SUBTITLE: message => (0, _uikitUtils.getMessageTimeFormat)(new Date(message.createdAt), dateLocale)
186
198
  },
187
199
  PLACEHOLDER: {
188
200
  NO_BANNED_USERS: 'No banned users',
@@ -203,7 +215,7 @@ const createBaseStringSet = _ref => {
203
215
  ALERT_PERMISSIONS_TITLE: 'Allow access?',
204
216
  ALERT_PERMISSIONS_MESSAGE: function (permission) {
205
217
  let appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Application';
206
- return `${appName} need permission to access your ${permission}. Go to Settings to allow access`;
218
+ return `${appName} need permission to access your ${permission}.`;
207
219
  },
208
220
  ALERT_PERMISSIONS_OK: 'Go to settings',
209
221
  PROMPT_DEFAULT_OK: 'Submit',