@sendbird/uikit-react-native 1.0.0-rc.4 → 1.0.2

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 (222) hide show
  1. package/lib/commonjs/InternalErrorBoundary.js.map +1 -1
  2. package/lib/commonjs/SendbirdUIKitContainer.js +1 -1
  3. package/lib/commonjs/SendbirdUIKitContainer.js.map +1 -1
  4. package/lib/commonjs/components/ChannelCover.js.map +1 -1
  5. package/lib/commonjs/components/ChatFlatList.js.map +1 -1
  6. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js.map +1 -1
  7. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
  8. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  9. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +1 -1
  10. package/lib/commonjs/components/MessageRenderer/MessageContainer.js.map +1 -1
  11. package/lib/commonjs/components/MessageRenderer/MessageDateSeparator.js.map +1 -1
  12. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
  13. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
  14. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  15. package/lib/commonjs/components/MessageRenderer/MessageTime.js.map +1 -1
  16. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js.map +1 -1
  17. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  18. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  19. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +1 -1
  20. package/lib/commonjs/components/NewMessagesButton.js.map +1 -1
  21. package/lib/commonjs/components/ProviderLayout.js.map +1 -1
  22. package/lib/commonjs/components/ScrollToBottomButton.js.map +1 -1
  23. package/lib/commonjs/components/TypedPlaceholder.js.map +1 -1
  24. package/lib/commonjs/components/UserActionBar.js.map +1 -1
  25. package/lib/commonjs/components/UserSelectableBar.js.map +1 -1
  26. package/lib/commonjs/contexts/Localization.js.map +1 -1
  27. package/lib/commonjs/contexts/PlatformService.js.map +1 -1
  28. package/lib/commonjs/contexts/SendbirdChat.js.map +1 -1
  29. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  30. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  31. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  32. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  33. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  34. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  35. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListHeader.js +2 -5
  36. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListHeader.js.map +1 -1
  37. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  38. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannelList/module/moduleContext.js.map +1 -1
  40. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsHeader.js.map +1 -1
  42. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
  43. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  44. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  45. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  46. package/lib/commonjs/domain/groupChannelSettings/types.js.map +1 -1
  47. package/lib/commonjs/domain/groupChannelUserList/types.js.map +1 -1
  48. package/lib/commonjs/domain/userList/module/moduleContext.js +2 -2
  49. package/lib/commonjs/domain/userList/module/moduleContext.js.map +1 -1
  50. package/lib/commonjs/domain/userList/types.js.map +1 -1
  51. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js +2 -3
  52. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  53. package/lib/commonjs/platform/createFileService.expo.js +20 -21
  54. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  55. package/lib/commonjs/version.js +1 -1
  56. package/lib/commonjs/version.js.map +1 -1
  57. package/lib/module/InternalErrorBoundary.js.map +1 -1
  58. package/lib/module/SendbirdUIKitContainer.js +1 -1
  59. package/lib/module/SendbirdUIKitContainer.js.map +1 -1
  60. package/lib/module/components/ChannelCover.js.map +1 -1
  61. package/lib/module/components/ChatFlatList.js.map +1 -1
  62. package/lib/module/components/MessageRenderer/AdminMessage/index.js.map +1 -1
  63. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
  64. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  65. package/lib/module/components/MessageRenderer/FileMessage/index.js.map +1 -1
  66. package/lib/module/components/MessageRenderer/MessageContainer.js.map +1 -1
  67. package/lib/module/components/MessageRenderer/MessageDateSeparator.js.map +1 -1
  68. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
  69. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
  70. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
  71. package/lib/module/components/MessageRenderer/MessageTime.js.map +1 -1
  72. package/lib/module/components/MessageRenderer/UnknownMessage/index.js.map +1 -1
  73. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  74. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  75. package/lib/module/components/MessageRenderer/UserMessage/index.js.map +1 -1
  76. package/lib/module/components/NewMessagesButton.js.map +1 -1
  77. package/lib/module/components/ProviderLayout.js.map +1 -1
  78. package/lib/module/components/ScrollToBottomButton.js.map +1 -1
  79. package/lib/module/components/TypedPlaceholder.js.map +1 -1
  80. package/lib/module/components/UserActionBar.js.map +1 -1
  81. package/lib/module/components/UserSelectableBar.js.map +1 -1
  82. package/lib/module/contexts/Localization.js.map +1 -1
  83. package/lib/module/contexts/PlatformService.js.map +1 -1
  84. package/lib/module/contexts/SendbirdChat.js.map +1 -1
  85. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  86. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  87. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  88. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  89. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  90. package/lib/module/domain/groupChannel/types.js.map +1 -1
  91. package/lib/module/domain/groupChannelList/component/GroupChannelListHeader.js +2 -5
  92. package/lib/module/domain/groupChannelList/component/GroupChannelListHeader.js.map +1 -1
  93. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  94. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  95. package/lib/module/domain/groupChannelList/module/moduleContext.js.map +1 -1
  96. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  97. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsHeader.js.map +1 -1
  98. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
  99. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  100. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  101. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  102. package/lib/module/domain/groupChannelSettings/types.js.map +1 -1
  103. package/lib/module/domain/groupChannelUserList/types.js.map +1 -1
  104. package/lib/module/domain/userList/module/moduleContext.js +2 -2
  105. package/lib/module/domain/userList/module/moduleContext.js.map +1 -1
  106. package/lib/module/domain/userList/types.js.map +1 -1
  107. package/lib/module/fragments/createGroupChannelSettingsFragment.js +2 -3
  108. package/lib/module/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  109. package/lib/module/platform/createFileService.expo.js +20 -21
  110. package/lib/module/platform/createFileService.expo.js.map +1 -1
  111. package/lib/module/version.js +1 -1
  112. package/lib/module/version.js.map +1 -1
  113. package/lib/typescript/__template__/component/__domain__Header.d.ts +1 -2
  114. package/lib/typescript/__template__/component/__domain__StatusEmpty.d.ts +0 -1
  115. package/lib/typescript/__template__/component/__domain__StatusLoading.d.ts +0 -1
  116. package/lib/typescript/__template__/component/__domain__View.d.ts +1 -2
  117. package/lib/typescript/__template__/module/moduleContext.d.ts +2 -3
  118. package/lib/typescript/__template__/types.d.ts +2 -2
  119. package/lib/typescript/src/InternalErrorBoundary.d.ts +1 -0
  120. package/lib/typescript/src/SendbirdUIKitContainer.d.ts +3 -4
  121. package/lib/typescript/src/components/ChannelCover.d.ts +1 -2
  122. package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +1 -2
  123. package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +3 -3
  124. package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +1 -2
  125. package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +1 -1
  126. package/lib/typescript/src/components/MessageRenderer/MessageContainer.d.ts +1 -1
  127. package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +1 -2
  128. package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +1 -2
  129. package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +1 -2
  130. package/lib/typescript/src/components/MessageRenderer/MessageOutgoingStatus.d.ts +1 -1
  131. package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +1 -2
  132. package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +1 -2
  133. package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +1 -2
  134. package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +1 -2
  135. package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +1 -1
  136. package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
  137. package/lib/typescript/src/components/ProviderLayout.d.ts +1 -1
  138. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  139. package/lib/typescript/src/components/TypedPlaceholder.d.ts +1 -2
  140. package/lib/typescript/src/components/UserActionBar.d.ts +1 -1
  141. package/lib/typescript/src/components/UserSelectableBar.d.ts +1 -1
  142. package/lib/typescript/src/contexts/Localization.d.ts +2 -3
  143. package/lib/typescript/src/contexts/PlatformService.d.ts +3 -3
  144. package/lib/typescript/src/contexts/SendbirdChat.d.ts +3 -3
  145. package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +1 -2
  146. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/EditInput.d.ts +1 -2
  147. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/SendInput.d.ts +1 -2
  148. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/index.d.ts +2 -2
  149. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +2 -2
  150. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusEmpty.d.ts +0 -1
  151. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusLoading.d.ts +0 -1
  152. package/lib/typescript/src/domain/groupChannel/types.d.ts +2 -2
  153. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListHeader.d.ts +1 -2
  154. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +1 -2
  155. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.d.ts +0 -1
  156. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusLoading.d.ts +0 -1
  157. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +1 -2
  158. package/lib/typescript/src/domain/groupChannelList/module/moduleContext.d.ts +2 -3
  159. package/lib/typescript/src/domain/groupChannelList/types.d.ts +2 -2
  160. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.d.ts +1 -2
  161. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +1 -2
  162. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +1 -2
  163. package/lib/typescript/src/domain/groupChannelSettings/module/moduleContext.d.ts +2 -3
  164. package/lib/typescript/src/domain/groupChannelSettings/types.d.ts +2 -2
  165. package/lib/typescript/src/domain/groupChannelUserList/types.d.ts +4 -4
  166. package/lib/typescript/src/domain/userList/component/UserListStatusEmpty.d.ts +0 -1
  167. package/lib/typescript/src/domain/userList/component/UserListStatusLoading.d.ts +0 -1
  168. package/lib/typescript/src/domain/userList/module/moduleContext.d.ts +2 -3
  169. package/lib/typescript/src/domain/userList/types.d.ts +1 -1
  170. package/lib/typescript/src/hooks/useContext.d.ts +2 -0
  171. package/lib/typescript/src/platform/createFileService.expo.d.ts +4 -4
  172. package/lib/typescript/src/version.d.ts +1 -1
  173. package/package.json +7 -7
  174. package/src/InternalErrorBoundary.tsx +1 -0
  175. package/src/SendbirdUIKitContainer.tsx +4 -5
  176. package/src/components/ChannelCover.tsx +1 -1
  177. package/src/components/ChatFlatList.tsx +1 -1
  178. package/src/components/MessageRenderer/AdminMessage/index.tsx +1 -1
  179. package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +4 -6
  180. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +1 -1
  181. package/src/components/MessageRenderer/FileMessage/index.tsx +1 -1
  182. package/src/components/MessageRenderer/MessageContainer.tsx +1 -1
  183. package/src/components/MessageRenderer/MessageDateSeparator.tsx +1 -1
  184. package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +5 -2
  185. package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +5 -2
  186. package/src/components/MessageRenderer/MessageOutgoingStatus.tsx +1 -1
  187. package/src/components/MessageRenderer/MessageTime.tsx +6 -2
  188. package/src/components/MessageRenderer/UnknownMessage/index.tsx +1 -1
  189. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +1 -1
  190. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +4 -2
  191. package/src/components/MessageRenderer/UserMessage/index.tsx +1 -1
  192. package/src/components/NewMessagesButton.tsx +1 -1
  193. package/src/components/ProviderLayout.tsx +1 -1
  194. package/src/components/ScrollToBottomButton.tsx +1 -1
  195. package/src/components/TypedPlaceholder.tsx +1 -1
  196. package/src/components/UserActionBar.tsx +1 -1
  197. package/src/components/UserSelectableBar.tsx +1 -1
  198. package/src/contexts/Localization.tsx +2 -3
  199. package/src/contexts/PlatformService.tsx +3 -8
  200. package/src/contexts/SendbirdChat.tsx +3 -3
  201. package/src/domain/groupChannel/component/GroupChannelHeader.tsx +1 -1
  202. package/src/domain/groupChannel/component/GroupChannelInput/EditInput.tsx +1 -1
  203. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +1 -1
  204. package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +2 -2
  205. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +2 -2
  206. package/src/domain/groupChannel/types.ts +2 -2
  207. package/src/domain/groupChannelList/component/GroupChannelListHeader.tsx +2 -4
  208. package/src/domain/groupChannelList/component/GroupChannelListList.tsx +2 -2
  209. package/src/domain/groupChannelList/component/GroupChannelListTypeSelector.tsx +4 -4
  210. package/src/domain/groupChannelList/module/moduleContext.tsx +2 -2
  211. package/src/domain/groupChannelList/types.ts +2 -2
  212. package/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.tsx +1 -1
  213. package/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.tsx +1 -1
  214. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +2 -2
  215. package/src/domain/groupChannelSettings/module/moduleContext.tsx +2 -5
  216. package/src/domain/groupChannelSettings/types.ts +2 -2
  217. package/src/domain/groupChannelUserList/types.ts +4 -5
  218. package/src/domain/userList/module/moduleContext.tsx +3 -7
  219. package/src/domain/userList/types.ts +1 -1
  220. package/src/fragments/createGroupChannelSettingsFragment.tsx +1 -9
  221. package/src/platform/createFileService.expo.ts +13 -15
  222. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["GroupChannelSettingsContexts","Fragment","createContext","channel","headerTitle","headerRight","onPressHeaderRight","NOOP","HOOK_NAME","GroupChannelSettingsContextsProvider","children","uniqId","useUniqId","forceUpdate","useForceUpdate","STRINGS","useLocalization","sdk","useSendbirdChat","fileService","usePlatformService","activeChannel","setActiveChannel","useActiveGroupChannel","onChannelChanged","isDifferentChannel","isGroupChannel","useChannelHandler","onChannelFrozen","onChannelUnfrozen","toast","useToast","openSheet","useBottomSheet","openPrompt","usePrompt","openMenu","useActionMenu","updateChannel","useCallback","params","updatedChannel","changeChannelName","title","GROUP_CHANNEL_SETTINGS","DIALOG_CHANGE_NAME_PROMPT_TITLE","submitLabel","DIALOG_CHANGE_NAME_PROMPT_OK","placeholder","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","defaultValue","name","onSubmit","channelName","GroupChannelParams","changeChannelImage","DIALOG_CHANGE_IMAGE_MENU_TITLE","menuItems","DIALOG_CHANGE_IMAGE_MENU_CAMERA","onPress","file","openCamera","mediaType","onOpenFailureWithToastMessage","show","TOAST","OPEN_CAMERA_ERROR","coverImage","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","files","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","sheetItems","DIALOG_CHANGE_NAME","DIALOG_CHANGE_IMAGE","HEADER_TITLE","HEADER_RIGHT"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback } from 'react';\n\nimport { useActiveGroupChannel, useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useActionMenu, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';\nimport {\n NOOP,\n SendbirdGroupChannel,\n SendbirdGroupChannelParams,\n SendbirdOpenChannel,\n isDifferentChannel,\n useForceUpdate,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport type { GroupChannelSettingsContextsType, GroupChannelSettingsProps } from '../types';\n\nexport const GroupChannelSettingsContexts: GroupChannelSettingsContextsType = {\n Fragment: createContext({\n channel: {} as SendbirdGroupChannel,\n headerTitle: '',\n headerRight: '',\n onPressHeaderRight: NOOP,\n }),\n};\n\nconst HOOK_NAME = 'GroupChannelSettingsContextsProvider';\nexport const GroupChannelSettingsContextsProvider: React.FC<GroupChannelSettingsProps['Provider']> = ({\n children,\n channel,\n}) => {\n const uniqId = useUniqId(HOOK_NAME);\n const forceUpdate = useForceUpdate();\n const { STRINGS } = useLocalization();\n const { sdk } = useSendbirdChat();\n const { fileService } = usePlatformService();\n\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n\n const onChannelChanged = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (isDifferentChannel(channel, activeChannel) || !channel.isGroupChannel()) return;\n setActiveChannel(channel);\n forceUpdate();\n };\n\n useChannelHandler(\n sdk,\n `${HOOK_NAME}_${uniqId}`,\n {\n onChannelChanged: onChannelChanged,\n onChannelFrozen: onChannelChanged,\n onChannelUnfrozen: onChannelChanged,\n },\n [activeChannel],\n );\n\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { openPrompt } = usePrompt();\n const { openMenu } = useActionMenu();\n\n const updateChannel = useCallback(\n async (params: SendbirdGroupChannelParams) => {\n const updatedChannel = await activeChannel.updateChannel(params);\n setActiveChannel(updatedChannel);\n forceUpdate();\n },\n [activeChannel],\n );\n\n const changeChannelName = useCallback(() => {\n openPrompt({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_TITLE,\n submitLabel: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_OK,\n placeholder: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER,\n defaultValue: activeChannel.name,\n onSubmit: async (channelName) => {\n const params = new sdk.GroupChannelParams();\n params.name = channelName;\n await updateChannel(params);\n },\n });\n }, [STRINGS, updateChannel, activeChannel.name]);\n\n const changeChannelImage = useCallback(() => {\n openMenu({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_TITLE,\n menuItems: [\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const file = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error'),\n });\n if (!file) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = file;\n await updateChannel(params);\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const files = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error'),\n });\n if (!files || !files[0]) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = files[0];\n await updateChannel(params);\n },\n },\n ],\n });\n }, [STRINGS, updateChannel]);\n\n const onPressHeaderRight = useCallback(() => {\n openSheet({\n sheetItems: [\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME, onPress: changeChannelName },\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE, onPress: changeChannelImage },\n ],\n });\n }, [STRINGS, changeChannelImage, changeChannelName]);\n\n return (\n <ProviderLayout>\n <GroupChannelSettingsContexts.Fragment.Provider\n value={{\n channel: activeChannel,\n headerTitle: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_TITLE,\n headerRight: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_RIGHT,\n onPressHeaderRight,\n }}\n >\n {children}\n </GroupChannelSettingsContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["GroupChannelSettingsContexts","Fragment","createContext","channel","headerTitle","headerRight","onPressHeaderRight","NOOP","HOOK_NAME","GroupChannelSettingsContextsProvider","children","uniqId","useUniqId","forceUpdate","useForceUpdate","STRINGS","useLocalization","sdk","useSendbirdChat","fileService","usePlatformService","activeChannel","setActiveChannel","useActiveGroupChannel","onChannelChanged","isDifferentChannel","isGroupChannel","useChannelHandler","onChannelFrozen","onChannelUnfrozen","toast","useToast","openSheet","useBottomSheet","openPrompt","usePrompt","openMenu","useActionMenu","updateChannel","useCallback","params","updatedChannel","changeChannelName","title","GROUP_CHANNEL_SETTINGS","DIALOG_CHANGE_NAME_PROMPT_TITLE","submitLabel","DIALOG_CHANGE_NAME_PROMPT_OK","placeholder","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","defaultValue","name","onSubmit","channelName","GroupChannelParams","changeChannelImage","DIALOG_CHANGE_IMAGE_MENU_TITLE","menuItems","DIALOG_CHANGE_IMAGE_MENU_CAMERA","onPress","file","openCamera","mediaType","onOpenFailureWithToastMessage","show","TOAST","OPEN_CAMERA_ERROR","coverImage","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","files","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","sheetItems","DIALOG_CHANGE_NAME","DIALOG_CHANGE_IMAGE","HEADER_TITLE","HEADER_RIGHT"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback } from 'react';\n\nimport { useActiveGroupChannel, useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useActionMenu, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';\nimport {\n NOOP,\n SendbirdGroupChannel,\n SendbirdGroupChannelParams,\n SendbirdOpenChannel,\n isDifferentChannel,\n useForceUpdate,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport type { GroupChannelSettingsContextsType, GroupChannelSettingsModule } from '../types';\n\nexport const GroupChannelSettingsContexts: GroupChannelSettingsContextsType = {\n Fragment: createContext({\n channel: {} as SendbirdGroupChannel,\n headerTitle: '',\n headerRight: '',\n onPressHeaderRight: NOOP,\n }),\n};\n\nconst HOOK_NAME = 'GroupChannelSettingsContextsProvider';\nexport const GroupChannelSettingsContextsProvider: GroupChannelSettingsModule['Provider'] = ({ children, channel }) => {\n const uniqId = useUniqId(HOOK_NAME);\n const forceUpdate = useForceUpdate();\n const { STRINGS } = useLocalization();\n const { sdk } = useSendbirdChat();\n const { fileService } = usePlatformService();\n\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n\n const onChannelChanged = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (isDifferentChannel(channel, activeChannel) || !channel.isGroupChannel()) return;\n setActiveChannel(channel);\n forceUpdate();\n };\n\n useChannelHandler(\n sdk,\n `${HOOK_NAME}_${uniqId}`,\n {\n onChannelChanged: onChannelChanged,\n onChannelFrozen: onChannelChanged,\n onChannelUnfrozen: onChannelChanged,\n },\n [activeChannel],\n );\n\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { openPrompt } = usePrompt();\n const { openMenu } = useActionMenu();\n\n const updateChannel = useCallback(\n async (params: SendbirdGroupChannelParams) => {\n const updatedChannel = await activeChannel.updateChannel(params);\n setActiveChannel(updatedChannel);\n forceUpdate();\n },\n [activeChannel],\n );\n\n const changeChannelName = useCallback(() => {\n openPrompt({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_TITLE,\n submitLabel: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_OK,\n placeholder: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER,\n defaultValue: activeChannel.name,\n onSubmit: async (channelName) => {\n const params = new sdk.GroupChannelParams();\n params.name = channelName;\n await updateChannel(params);\n },\n });\n }, [STRINGS, updateChannel, activeChannel.name]);\n\n const changeChannelImage = useCallback(() => {\n openMenu({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_TITLE,\n menuItems: [\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const file = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error'),\n });\n if (!file) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = file;\n await updateChannel(params);\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const files = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error'),\n });\n if (!files || !files[0]) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = files[0];\n await updateChannel(params);\n },\n },\n ],\n });\n }, [STRINGS, updateChannel]);\n\n const onPressHeaderRight = useCallback(() => {\n openSheet({\n sheetItems: [\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME, onPress: changeChannelName },\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE, onPress: changeChannelImage },\n ],\n });\n }, [STRINGS, changeChannelImage, changeChannelName]);\n\n return (\n <ProviderLayout>\n <GroupChannelSettingsContexts.Fragment.Provider\n value={{\n channel: activeChannel,\n headerTitle: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_TITLE,\n headerRight: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_RIGHT,\n onPressHeaderRight,\n }}\n >\n {children}\n </GroupChannelSettingsContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { MenuBarProps } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface GroupChannelSettingsProps {\n Fragment: {\n channel: GroupChannelSettingsProps['Provider']['channel'];\n onPressHeaderLeft: GroupChannelSettingsProps['Header']['onPressHeaderLeft'];\n onPressMenuMembers: GroupChannelSettingsProps['Menu']['onPressMenuMembers'];\n onPressMenuLeaveChannel: GroupChannelSettingsProps['Menu']['onPressMenuLeaveChannel'];\n menuItemsCreator?: GroupChannelSettingsProps['Menu']['menuItemsCreator'];\n };\n Header: {\n onPressHeaderLeft: () => void;\n };\n Info: {};\n Menu: {\n onPressMenuMembers: () => void;\n onPressMenuLeaveChannel: () => void;\n menuItemsCreator?: (defaultMenuItems: MenuBarProps[]) => MenuBarProps[];\n };\n Provider: {\n channel: SendbirdGroupChannel;\n };\n}\n\n/**\n * Internal context for GroupChannelSettings\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelSettingsContextsType {\n Fragment: React.Context<{\n channel: SendbirdGroupChannel;\n headerTitle: string;\n headerRight: string;\n onPressHeaderRight: () => void;\n }>;\n}\nexport interface GroupChannelSettingsModule {\n Provider: React.FC<GroupChannelSettingsProps['Provider']>;\n Header: CommonComponent<GroupChannelSettingsProps['Header']>;\n Info: CommonComponent<GroupChannelSettingsProps['Info']>;\n Menu: CommonComponent<GroupChannelSettingsProps['Menu']>;\n}\n\nexport type GroupChannelSettingsFragment = React.FC<GroupChannelSettingsProps['Fragment']>;\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { MenuBarProps } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface GroupChannelSettingsProps {\n Fragment: {\n channel: GroupChannelSettingsProps['Provider']['channel'];\n onPressHeaderLeft: GroupChannelSettingsProps['Header']['onPressHeaderLeft'];\n onPressMenuMembers: GroupChannelSettingsProps['Menu']['onPressMenuMembers'];\n onPressMenuLeaveChannel: GroupChannelSettingsProps['Menu']['onPressMenuLeaveChannel'];\n menuItemsCreator?: GroupChannelSettingsProps['Menu']['menuItemsCreator'];\n };\n Header: {\n onPressHeaderLeft: () => void;\n };\n Info: {};\n Menu: {\n onPressMenuMembers: () => void;\n onPressMenuLeaveChannel: () => void;\n menuItemsCreator?: (defaultMenuItems: MenuBarProps[]) => MenuBarProps[];\n };\n Provider: {\n channel: SendbirdGroupChannel;\n };\n}\n\n/**\n * Internal context for GroupChannelSettings\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelSettingsContextsType {\n Fragment: React.Context<{\n channel: SendbirdGroupChannel;\n headerTitle: string;\n headerRight: string;\n onPressHeaderRight: () => void;\n }>;\n}\nexport interface GroupChannelSettingsModule {\n Provider: CommonComponent<GroupChannelSettingsProps['Provider']>;\n Header: CommonComponent<GroupChannelSettingsProps['Header']>;\n Info: CommonComponent<GroupChannelSettingsProps['Info']>;\n Menu: CommonComponent<GroupChannelSettingsProps['Menu']>;\n}\n\nexport type GroupChannelSettingsFragment = CommonComponent<GroupChannelSettingsProps['Fragment']>;\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { UseUserListOptions } from '@sendbird/uikit-chat-hooks';\nimport type { SendbirdGroupChannel, SendbirdGroupChannelParams } from '@sendbird/uikit-utils';\n\nimport type { GroupChannelType } from '../groupChannelList/types';\nimport type { UserListProps } from '../userList/types';\n\ntype UserIds = string[];\n\nexport interface GroupChannelCreateProps<User> {\n Fragment: {\n onPressHeaderLeft: () => void;\n onCreateChannel: (channel: SendbirdGroupChannel) => void;\n channelType?: GroupChannelType;\n userIdsGenerator?: (users: User[]) => UserIds;\n onBeforeCreateChannel?: (\n params: SendbirdGroupChannelParams,\n users: User[],\n ) => SendbirdGroupChannelParams | Promise<SendbirdGroupChannelParams>;\n sortComparator?: UseUserListOptions<User>['sortComparator'];\n queryCreator?: UseUserListOptions<User>['queryCreator'];\n renderUser?: UserListProps<User>['List']['renderUser'];\n };\n}\nexport type GroupChannelCreateFragment<User> = React.FC<GroupChannelCreateProps<User>['Fragment']>;\n\nexport interface GroupChannelInviteProps<User> {\n Fragment: {\n channel: SendbirdGroupChannel;\n onPressHeaderLeft: () => void;\n onInviteMembers: (channel: SendbirdGroupChannel) => void;\n userIdsGenerator?: (users: User[]) => UserIds;\n queryCreator?: UseUserListOptions<User>['queryCreator'];\n renderUser?: UserListProps<User>['List']['renderUser'];\n sortComparator?: UseUserListOptions<User>['sortComparator'];\n };\n}\nexport type GroupChannelInviteFragment<User> = React.FC<GroupChannelInviteProps<User>['Fragment']>;\n\nexport interface GroupChannelMembersProps<User> {\n Fragment: {\n channel: SendbirdGroupChannel;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n sortComparator?: UseUserListOptions<User>['sortComparator'];\n renderUser?: UserListProps<User>['List']['renderUser'];\n };\n}\nexport type GroupChannelMembersFragment<User> = React.FC<GroupChannelMembersProps<User>['Fragment']>;\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { UseUserListOptions } from '@sendbird/uikit-chat-hooks';\nimport type { SendbirdGroupChannel, SendbirdGroupChannelParams } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\nimport type { GroupChannelType } from '../groupChannelList/types';\nimport type { UserListProps } from '../userList/types';\n\ntype UserIds = string[];\n\nexport interface GroupChannelCreateProps<User> {\n Fragment: {\n onPressHeaderLeft: () => void;\n onCreateChannel: (channel: SendbirdGroupChannel) => void;\n channelType?: GroupChannelType;\n userIdsGenerator?: (users: User[]) => UserIds;\n onBeforeCreateChannel?: (\n params: SendbirdGroupChannelParams,\n users: User[],\n ) => SendbirdGroupChannelParams | Promise<SendbirdGroupChannelParams>;\n sortComparator?: UseUserListOptions<User>['sortComparator'];\n queryCreator?: UseUserListOptions<User>['queryCreator'];\n renderUser?: UserListProps<User>['List']['renderUser'];\n };\n}\nexport type GroupChannelCreateFragment<User> = CommonComponent<GroupChannelCreateProps<User>['Fragment']>;\n\nexport interface GroupChannelInviteProps<User> {\n Fragment: {\n channel: SendbirdGroupChannel;\n onPressHeaderLeft: () => void;\n onInviteMembers: (channel: SendbirdGroupChannel) => void;\n userIdsGenerator?: (users: User[]) => UserIds;\n queryCreator?: UseUserListOptions<User>['queryCreator'];\n renderUser?: UserListProps<User>['List']['renderUser'];\n sortComparator?: UseUserListOptions<User>['sortComparator'];\n };\n}\nexport type GroupChannelInviteFragment<User> = CommonComponent<GroupChannelInviteProps<User>['Fragment']>;\n\nexport interface GroupChannelMembersProps<User> {\n Fragment: {\n channel: SendbirdGroupChannel;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n sortComparator?: UseUserListOptions<User>['sortComparator'];\n renderUser?: UserListProps<User>['List']['renderUser'];\n };\n}\nexport type GroupChannelMembersFragment<User> = CommonComponent<GroupChannelMembersProps<User>['Fragment']>;\n"],"mappings":""}
@@ -17,6 +17,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
17
17
 
18
18
  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; }
19
19
 
20
+ /* eslint-disable @typescript-eslint/no-explicit-any */
20
21
  const UserListContexts = {
21
22
  Fragment: /*#__PURE__*/(0, _react.createContext)({
22
23
  headerTitle: '',
@@ -26,8 +27,7 @@ const UserListContexts = {
26
27
  selectedUsers: [],
27
28
  setSelectedUsers: _uikitUtils.NOOP
28
29
  })
29
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
-
30
+ };
31
31
  exports.UserListContexts = UserListContexts;
32
32
 
33
33
  const UserListContextsProvider = _ref => {
@@ -1 +1 @@
1
- {"version":3,"names":["UserListContexts","Fragment","createContext","headerTitle","headerRight","List","selectedUsers","setSelectedUsers","NOOP","UserListContextsProvider","children","useState"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useState } from 'react';\n\nimport type { ContextValue } from '@sendbird/uikit-utils';\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport type { UserListContextsType, UserListProps } from '../types';\n\nexport const UserListContexts: UserListContextsType<unknown> = {\n Fragment: createContext({\n headerTitle: '',\n headerRight: '',\n }),\n List: createContext<ContextValue<UserListContextsType<unknown>['List']>>({\n selectedUsers: [],\n setSelectedUsers: NOOP,\n }),\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const UserListContextsProvider: React.FC<UserListProps<any>['Provider']> = ({\n children,\n headerTitle,\n headerRight,\n}) => {\n const [selectedUsers, setSelectedUsers] = useState<unknown[]>([]);\n\n return (\n <ProviderLayout>\n <UserListContexts.Fragment.Provider value={{ headerTitle, headerRight: headerRight(selectedUsers) }}>\n <UserListContexts.List.Provider value={{ selectedUsers, setSelectedUsers }}>\n {children}\n </UserListContexts.List.Provider>\n </UserListContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAEA;;;;;;;;AAGO,MAAMA,gBAA+C,GAAG;EAC7DC,QAAQ,eAAE,IAAAC,oBAAA,EAAc;IACtBC,WAAW,EAAE,EADS;IAEtBC,WAAW,EAAE;EAFS,CAAd,CADmD;EAK7DC,IAAI,eAAE,IAAAH,oBAAA,EAAmE;IACvEI,aAAa,EAAE,EADwD;IAEvEC,gBAAgB,EAAEC;EAFqD,CAAnE;AALuD,CAAxD,C,CAUP;;;;AACO,MAAMC,wBAAkE,GAAG,QAI5E;EAAA,IAJ6E;IACjFC,QADiF;IAEjFP,WAFiF;IAGjFC;EAHiF,CAI7E;EACJ,MAAM,CAACE,aAAD,EAAgBC,gBAAhB,IAAoC,IAAAI,eAAA,EAAoB,EAApB,CAA1C;EAEA,oBACE,6BAAC,uBAAD,qBACE,6BAAC,gBAAD,CAAkB,QAAlB,CAA2B,QAA3B;IAAoC,KAAK,EAAE;MAAER,WAAF;MAAeC,WAAW,EAAEA,WAAW,CAACE,aAAD;IAAvC;EAA3C,gBACE,6BAAC,gBAAD,CAAkB,IAAlB,CAAuB,QAAvB;IAAgC,KAAK,EAAE;MAAEA,aAAF;MAAiBC;IAAjB;EAAvC,GACGG,QADH,CADF,CADF,CADF;AASD,CAhBM"}
1
+ {"version":3,"names":["UserListContexts","Fragment","createContext","headerTitle","headerRight","List","selectedUsers","setSelectedUsers","NOOP","UserListContextsProvider","children","useState"],"sources":["moduleContext.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { createContext, useState } from 'react';\n\nimport type { ContextValue } from '@sendbird/uikit-utils';\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport type { UserListContextsType, UserListModule } from '../types';\n\nexport const UserListContexts: UserListContextsType<unknown> = {\n Fragment: createContext({\n headerTitle: '',\n headerRight: '',\n }),\n List: createContext<ContextValue<UserListContextsType<unknown>['List']>>({\n selectedUsers: [],\n setSelectedUsers: NOOP,\n }),\n};\nexport const UserListContextsProvider: UserListModule<any>['Provider'] = ({ children, headerTitle, headerRight }) => {\n const [selectedUsers, setSelectedUsers] = useState<unknown[]>([]);\n\n return (\n <ProviderLayout>\n <UserListContexts.Fragment.Provider value={{ headerTitle, headerRight: headerRight(selectedUsers) }}>\n <UserListContexts.List.Provider value={{ selectedUsers, setSelectedUsers }}>\n {children}\n </UserListContexts.List.Provider>\n </UserListContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":";;;;;;;AACA;;AAGA;;AAEA;;;;;;;;AANA;AASO,MAAMA,gBAA+C,GAAG;EAC7DC,QAAQ,eAAE,IAAAC,oBAAA,EAAc;IACtBC,WAAW,EAAE,EADS;IAEtBC,WAAW,EAAE;EAFS,CAAd,CADmD;EAK7DC,IAAI,eAAE,IAAAH,oBAAA,EAAmE;IACvEI,aAAa,EAAE,EADwD;IAEvEC,gBAAgB,EAAEC;EAFqD,CAAnE;AALuD,CAAxD;;;AAUA,MAAMC,wBAAyD,GAAG,QAA4C;EAAA,IAA3C;IAAEC,QAAF;IAAYP,WAAZ;IAAyBC;EAAzB,CAA2C;EACnH,MAAM,CAACE,aAAD,EAAgBC,gBAAhB,IAAoC,IAAAI,eAAA,EAAoB,EAApB,CAA1C;EAEA,oBACE,6BAAC,uBAAD,qBACE,6BAAC,gBAAD,CAAkB,QAAlB,CAA2B,QAA3B;IAAoC,KAAK,EAAE;MAAER,WAAF;MAAeC,WAAW,EAAEA,WAAW,CAACE,aAAD;IAAvC;EAA3C,gBACE,6BAAC,gBAAD,CAAkB,IAAlB,CAAuB,QAAvB;IAAgC,KAAK,EAAE;MAAEA,aAAF;MAAiBC;IAAjB;EAAvC,GACGG,QADH,CADF,CADF,CADF;AASD,CAZM"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { ContextValue } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface UserListProps<User> {\n /** Props for `UserListModule.Header` **/\n Header: {\n right?: React.ReactElement;\n left?: React.ReactElement;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: (selectedUsers: User[]) => Promise<void>;\n shouldActivateHeaderRight?: (selectedUsers: User[]) => boolean;\n };\n /** Props for `UserListModule.List` **/\n List: {\n /** User list from SendbirdChat SDK or Custom query {@link Fragment.queryCreator} **/\n users: User[];\n /** Render user component **/\n renderUser: (\n user: User,\n selectedUsers: ContextValue<UserListContextsType<User>['List']>['selectedUsers'],\n setSelectedUsers: ContextValue<UserListContextsType<User>['List']>['setSelectedUsers'],\n ) => React.ReactElement | null;\n /** Load next user list **/\n onLoadNext: () => Promise<void>;\n /** Refresh user list **/\n onRefresh?: () => Promise<void>;\n /** Refreshing state **/\n refreshing?: boolean;\n /** List empty component **/\n ListEmptyComponent?: React.ReactElement;\n };\n /** Props for `UserListModule.Provider` **/\n Provider: {\n headerTitle: string;\n headerRight: (selectedUsers: Array<User>) => string;\n };\n}\n\n/**\n * Internal context for UserList\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface UserListContextsType<User> {\n Fragment: React.Context<{\n headerTitle: string;\n headerRight: string;\n }>;\n List: React.Context<{\n selectedUsers: User[];\n setSelectedUsers: React.Dispatch<React.SetStateAction<User[]>>;\n }>;\n}\n\nexport interface UserListModule<User> {\n Provider: React.FC<UserListProps<User>['Provider']>;\n Header: CommonComponent<UserListProps<User>['Header']>;\n List: CommonComponent<UserListProps<User>['List']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n StatusError: CommonComponent<{ onPressRetry: () => void }>;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { ContextValue } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface UserListProps<User> {\n /** Props for `UserListModule.Header` **/\n Header: {\n right?: React.ReactElement;\n left?: React.ReactElement;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: (selectedUsers: User[]) => Promise<void>;\n shouldActivateHeaderRight?: (selectedUsers: User[]) => boolean;\n };\n /** Props for `UserListModule.List` **/\n List: {\n /** User list from SendbirdChat SDK or Custom query {@link Fragment.queryCreator} **/\n users: User[];\n /** Render user component **/\n renderUser: (\n user: User,\n selectedUsers: ContextValue<UserListContextsType<User>['List']>['selectedUsers'],\n setSelectedUsers: ContextValue<UserListContextsType<User>['List']>['setSelectedUsers'],\n ) => React.ReactElement | null;\n /** Load next user list **/\n onLoadNext: () => Promise<void>;\n /** Refresh user list **/\n onRefresh?: () => Promise<void>;\n /** Refreshing state **/\n refreshing?: boolean;\n /** List empty component **/\n ListEmptyComponent?: React.ReactElement;\n };\n /** Props for `UserListModule.Provider` **/\n Provider: {\n headerTitle: string;\n headerRight: (selectedUsers: Array<User>) => string;\n };\n}\n\n/**\n * Internal context for UserList\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface UserListContextsType<User> {\n Fragment: React.Context<{\n headerTitle: string;\n headerRight: string;\n }>;\n List: React.Context<{\n selectedUsers: User[];\n setSelectedUsers: React.Dispatch<React.SetStateAction<User[]>>;\n }>;\n}\n\nexport interface UserListModule<User> {\n Provider: CommonComponent<UserListProps<User>['Provider']>;\n Header: CommonComponent<UserListProps<User>['Header']>;\n List: CommonComponent<UserListProps<User>['List']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n StatusError: CommonComponent<{ onPressRetry: () => void }>;\n}\n"],"mappings":""}
@@ -27,8 +27,7 @@ const createGroupChannelSettingsFragment = initModule => {
27
27
  channel,
28
28
  onPressMenuMembers,
29
29
  onPressMenuLeaveChannel,
30
- menuItemsCreator,
31
- children
30
+ menuItemsCreator
32
31
  } = _ref;
33
32
  const {
34
33
  colors
@@ -53,7 +52,7 @@ const createGroupChannelSettingsFragment = initModule => {
53
52
  menuItemsCreator: menuItemsCreator,
54
53
  onPressMenuMembers: onPressMenuMembers,
55
54
  onPressMenuLeaveChannel: onPressMenuLeaveChannel
56
- }), children));
55
+ })));
57
56
  };
58
57
  };
59
58
 
@@ -1 +1 @@
1
- {"version":3,"names":["createGroupChannelSettingsFragment","initModule","GroupChannelSettingsModule","createGroupChannelSettingsModule","onPressHeaderLeft","NOOP","channel","onPressMenuMembers","onPressMenuLeaveChannel","menuItemsCreator","children","colors","useUIKitTheme","left","right","useSafeAreaInsets","backgroundColor","background","paddingLeft","styles","viewContainer","paddingHorizontal","paddingRight","createStyleSheet"],"sources":["createGroupChannelSettingsFragment.tsx"],"sourcesContent":["import React from 'react';\nimport { ScrollView } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport createGroupChannelSettingsModule from '../domain/groupChannelSettings/module/createGroupChannelSettingsModule';\nimport type { GroupChannelSettingsFragment, GroupChannelSettingsModule } from '../domain/groupChannelSettings/types';\n\nconst createGroupChannelSettingsFragment = (\n initModule?: Partial<GroupChannelSettingsModule>,\n): GroupChannelSettingsFragment => {\n const GroupChannelSettingsModule = createGroupChannelSettingsModule(initModule);\n\n return ({\n onPressHeaderLeft = NOOP,\n channel,\n onPressMenuMembers,\n onPressMenuLeaveChannel,\n menuItemsCreator,\n children,\n }) => {\n const { colors } = useUIKitTheme();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <GroupChannelSettingsModule.Provider channel={channel}>\n <GroupChannelSettingsModule.Header onPressHeaderLeft={onPressHeaderLeft} />\n <ScrollView\n style={{ backgroundColor: colors.background }}\n contentContainerStyle={{\n paddingLeft: left + styles.viewContainer.paddingHorizontal,\n paddingRight: right + styles.viewContainer.paddingHorizontal,\n }}\n >\n <GroupChannelSettingsModule.Info />\n <GroupChannelSettingsModule.Menu\n menuItemsCreator={menuItemsCreator}\n onPressMenuMembers={onPressMenuMembers}\n onPressMenuLeaveChannel={onPressMenuLeaveChannel}\n />\n {children}\n </ScrollView>\n </GroupChannelSettingsModule.Provider>\n );\n };\n};\n\nconst styles = createStyleSheet({\n viewContainer: {\n paddingHorizontal: 16,\n },\n});\n\nexport default createGroupChannelSettingsFragment;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;;;AAGA,MAAMA,kCAAkC,GACtCC,UADyC,IAER;EACjC,MAAMC,0BAA0B,GAAG,IAAAC,yCAAA,EAAiCF,UAAjC,CAAnC;EAEA,OAAO,QAOD;IAAA,IAPE;MACNG,iBAAiB,GAAGC,gBADd;MAENC,OAFM;MAGNC,kBAHM;MAINC,uBAJM;MAKNC,gBALM;MAMNC;IANM,CAOF;IACJ,MAAM;MAAEC;IAAF,IAAa,IAAAC,yCAAA,GAAnB;IACA,MAAM;MAAEC,IAAF;MAAQC;IAAR,IAAkB,IAAAC,6CAAA,GAAxB;IAEA,oBACE,6BAAC,0BAAD,CAA4B,QAA5B;MAAqC,OAAO,EAAET;IAA9C,gBACE,6BAAC,0BAAD,CAA4B,MAA5B;MAAmC,iBAAiB,EAAEF;IAAtD,EADF,eAEE,6BAAC,uBAAD;MACE,KAAK,EAAE;QAAEY,eAAe,EAAEL,MAAM,CAACM;MAA1B,CADT;MAEE,qBAAqB,EAAE;QACrBC,WAAW,EAAEL,IAAI,GAAGM,MAAM,CAACC,aAAP,CAAqBC,iBADpB;QAErBC,YAAY,EAAER,KAAK,GAAGK,MAAM,CAACC,aAAP,CAAqBC;MAFtB;IAFzB,gBAOE,6BAAC,0BAAD,CAA4B,IAA5B,OAPF,eAQE,6BAAC,0BAAD,CAA4B,IAA5B;MACE,gBAAgB,EAAEZ,gBADpB;MAEE,kBAAkB,EAAEF,kBAFtB;MAGE,uBAAuB,EAAEC;IAH3B,EARF,EAaGE,QAbH,CAFF,CADF;EAoBD,CA/BD;AAgCD,CArCD;;AAuCA,MAAMS,MAAM,GAAG,IAAAI,4CAAA,EAAiB;EAC9BH,aAAa,EAAE;IACbC,iBAAiB,EAAE;EADN;AADe,CAAjB,CAAf;eAMerB,kC"}
1
+ {"version":3,"names":["createGroupChannelSettingsFragment","initModule","GroupChannelSettingsModule","createGroupChannelSettingsModule","onPressHeaderLeft","NOOP","channel","onPressMenuMembers","onPressMenuLeaveChannel","menuItemsCreator","colors","useUIKitTheme","left","right","useSafeAreaInsets","backgroundColor","background","paddingLeft","styles","viewContainer","paddingHorizontal","paddingRight","createStyleSheet"],"sources":["createGroupChannelSettingsFragment.tsx"],"sourcesContent":["import React from 'react';\nimport { ScrollView } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport createGroupChannelSettingsModule from '../domain/groupChannelSettings/module/createGroupChannelSettingsModule';\nimport type { GroupChannelSettingsFragment, GroupChannelSettingsModule } from '../domain/groupChannelSettings/types';\n\nconst createGroupChannelSettingsFragment = (\n initModule?: Partial<GroupChannelSettingsModule>,\n): GroupChannelSettingsFragment => {\n const GroupChannelSettingsModule = createGroupChannelSettingsModule(initModule);\n\n return ({ onPressHeaderLeft = NOOP, channel, onPressMenuMembers, onPressMenuLeaveChannel, menuItemsCreator }) => {\n const { colors } = useUIKitTheme();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <GroupChannelSettingsModule.Provider channel={channel}>\n <GroupChannelSettingsModule.Header onPressHeaderLeft={onPressHeaderLeft} />\n <ScrollView\n style={{ backgroundColor: colors.background }}\n contentContainerStyle={{\n paddingLeft: left + styles.viewContainer.paddingHorizontal,\n paddingRight: right + styles.viewContainer.paddingHorizontal,\n }}\n >\n <GroupChannelSettingsModule.Info />\n <GroupChannelSettingsModule.Menu\n menuItemsCreator={menuItemsCreator}\n onPressMenuMembers={onPressMenuMembers}\n onPressMenuLeaveChannel={onPressMenuLeaveChannel}\n />\n </ScrollView>\n </GroupChannelSettingsModule.Provider>\n );\n };\n};\n\nconst styles = createStyleSheet({\n viewContainer: {\n paddingHorizontal: 16,\n },\n});\n\nexport default createGroupChannelSettingsFragment;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;;;AAGA,MAAMA,kCAAkC,GACtCC,UADyC,IAER;EACjC,MAAMC,0BAA0B,GAAG,IAAAC,yCAAA,EAAiCF,UAAjC,CAAnC;EAEA,OAAO,QAA0G;IAAA,IAAzG;MAAEG,iBAAiB,GAAGC,gBAAtB;MAA4BC,OAA5B;MAAqCC,kBAArC;MAAyDC,uBAAzD;MAAkFC;IAAlF,CAAyG;IAC/G,MAAM;MAAEC;IAAF,IAAa,IAAAC,yCAAA,GAAnB;IACA,MAAM;MAAEC,IAAF;MAAQC;IAAR,IAAkB,IAAAC,6CAAA,GAAxB;IAEA,oBACE,6BAAC,0BAAD,CAA4B,QAA5B;MAAqC,OAAO,EAAER;IAA9C,gBACE,6BAAC,0BAAD,CAA4B,MAA5B;MAAmC,iBAAiB,EAAEF;IAAtD,EADF,eAEE,6BAAC,uBAAD;MACE,KAAK,EAAE;QAAEW,eAAe,EAAEL,MAAM,CAACM;MAA1B,CADT;MAEE,qBAAqB,EAAE;QACrBC,WAAW,EAAEL,IAAI,GAAGM,MAAM,CAACC,aAAP,CAAqBC,iBADpB;QAErBC,YAAY,EAAER,KAAK,GAAGK,MAAM,CAACC,aAAP,CAAqBC;MAFtB;IAFzB,gBAOE,6BAAC,0BAAD,CAA4B,IAA5B,OAPF,eAQE,6BAAC,0BAAD,CAA4B,IAA5B;MACE,gBAAgB,EAAEX,gBADpB;MAEE,kBAAkB,EAAEF,kBAFtB;MAGE,uBAAuB,EAAEC;IAH3B,EARF,CAFF,CADF;EAmBD,CAvBD;AAwBD,CA7BD;;AA+BA,MAAMU,MAAM,GAAG,IAAAI,4CAAA,EAAiB;EAC9BH,aAAa,EAAE;IACbC,iBAAiB,EAAE;EADN;AADe,CAAjB,CAAf;eAMepB,kC"}
@@ -88,7 +88,6 @@ const createExpoFileService = _ref => {
88
88
  }
89
89
 
90
90
  async openMediaLibrary(options) {
91
- const selectionLimit = (options === null || options === void 0 ? void 0 : options.selectionLimit) || 1;
92
91
  const hasPermission = await this.hasMediaLibraryPermission('read');
93
92
 
94
93
  if (!hasPermission) {
@@ -102,26 +101,22 @@ const createExpoFileService = _ref => {
102
101
  }
103
102
  }
104
103
 
105
- const response = await imagePickerModule.launchImageLibraryAsync({
106
- allowsMultipleSelection: true
107
- });
104
+ const response = await imagePickerModule.launchImageLibraryAsync();
108
105
  if (response.cancelled) return null;
109
- return Promise.all(response.selected.slice(0, selectionLimit).map(async _ref2 => {
110
- let {
111
- uri
112
- } = _ref2;
113
- const {
114
- size
115
- } = await fsModule.getInfoAsync(uri);
116
- const ext = (0, _uikitUtils.getFileExtension)(uri);
117
- const type = (0, _uikitUtils.getFileType)(ext);
118
- return (0, _fileTypeGuard.default)({
119
- uri,
120
- size,
121
- type: `${type}/${ext.slice(1)}`,
122
- name: Date.now() + ext
123
- });
124
- }));
106
+ const {
107
+ uri
108
+ } = response;
109
+ const {
110
+ size
111
+ } = await fsModule.getInfoAsync(uri);
112
+ const ext = (0, _uikitUtils.getFileExtension)(uri);
113
+ const type = (0, _uikitUtils.getFileType)(ext);
114
+ return [(0, _fileTypeGuard.default)({
115
+ uri,
116
+ size,
117
+ type: `${type}/${ext.slice(1)}`,
118
+ name: Date.now() + ext
119
+ })];
125
120
  }
126
121
 
127
122
  async openDocument(options) {
@@ -162,7 +157,11 @@ const createExpoFileService = _ref => {
162
157
  if (!basePath) throw new Error('Cannot determine directory');
163
158
  const downloadPath = `${basePath}/${options.fileName}`;
164
159
  const response = await fsModule.downloadAsync(options.fileUrl, downloadPath);
165
- await mediaLibraryModule.saveToLibraryAsync(response.uri);
160
+
161
+ if ((0, _uikitUtils.getFileType)(options.fileType || '').match(/video|image/)) {
162
+ await mediaLibraryModule.saveToLibraryAsync(response.uri);
163
+ }
164
+
166
165
  return response.uri;
167
166
  }
168
167
 
@@ -1 +1 @@
1
- {"version":3,"names":["createExpoFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","ExpoFileServiceInterface","hasCameraPermission","res","getCameraPermissionsAsync","expoPermissionGranted","requestCameraPermission","requestCameraPermissionsAsync","hasMediaLibraryPermission","type","perms","getPermissionsAsync","requestMediaLibraryPermission","requestPermissionsAsync","openCamera","options","hasPermission","granted","onOpenFailureWithToastMessage","response","launchCameraAsync","mediaTypes","mediaType","MediaTypeOptions","Images","Videos","All","cancelled","uri","size","getInfoAsync","ext","getFileExtension","getFileType","fileTypeGuard","slice","name","Date","now","openMediaLibrary","selectionLimit","launchImageLibraryAsync","allowsMultipleSelection","Promise","all","selected","map","openDocument","getDocumentAsync","mimeType","save","Error","basePath","documentDirectory","cacheDirectory","downloadPath","fileName","downloadAsync","fileUrl","saveToLibraryAsync"],"sources":["createFileService.expo.ts"],"sourcesContent":["import type ExpoDocumentPicker from 'expo-document-picker';\nimport type ExpoFs from 'expo-file-system';\nimport type ExpoImagePicker from 'expo-image-picker';\nimport type ExpoMediaLibrary from 'expo-media-library';\n\nimport { getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport type { ExpoMediaLibraryPermissionResponse, ExpoPermissionResponse } from '../utils/expoPermissionGranted';\nimport expoPermissionGranted from '../utils/expoPermissionGranted';\nimport fileTypeGuard from '../utils/fileTypeGuard';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nconst createExpoFileService = ({\n imagePickerModule,\n documentPickerModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ExpoImagePicker;\n documentPickerModule: typeof ExpoDocumentPicker;\n mediaLibraryModule: typeof ExpoMediaLibrary;\n fsModule: typeof ExpoFs;\n}): FileServiceInterface => {\n class ExpoFileServiceInterface implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.getCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async requestCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.requestCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async hasMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.getPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n async requestMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.requestPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCameraAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n default:\n return imagePickerModule.MediaTypeOptions.All;\n }\n })(),\n });\n\n if (response.cancelled) return null;\n\n const { uri } = response;\n const { size } = await fsModule.getInfoAsync(response.uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n\n return fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext });\n }\n async openMediaLibrary(options: OpenMediaLibraryOptions) {\n const selectionLimit = options?.selectionLimit || 1;\n const hasPermission = await this.hasMediaLibraryPermission('read');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('read');\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibraryAsync({ allowsMultipleSelection: true });\n if (response.cancelled) return null;\n\n return Promise.all(\n response.selected.slice(0, selectionLimit).map(async ({ uri }) => {\n const { size } = await fsModule.getInfoAsync(uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n return fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext });\n }),\n );\n }\n\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const response = await documentPickerModule.getDocumentAsync({ type: '*/*' });\n if (response.type === 'cancel') return null;\n const { mimeType, uri, size, name } = response;\n return fileTypeGuard({ uri, size, name, type: mimeType });\n } catch {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission('write');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('write');\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = fsModule.documentDirectory || fsModule.cacheDirectory;\n if (!basePath) throw new Error('Cannot determine directory');\n\n const downloadPath = `${basePath}/${options.fileName}`;\n\n const response = await fsModule.downloadAsync(options.fileUrl, downloadPath);\n await mediaLibraryModule.saveToLibraryAsync(response.uri);\n return response.uri;\n }\n }\n\n return new ExpoFileServiceInterface();\n};\n\nexport default createExpoFileService;\n"],"mappings":"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"}
1
+ {"version":3,"names":["createExpoFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","ExpoFileServiceInterface","hasCameraPermission","res","getCameraPermissionsAsync","expoPermissionGranted","requestCameraPermission","requestCameraPermissionsAsync","hasMediaLibraryPermission","type","perms","getPermissionsAsync","requestMediaLibraryPermission","requestPermissionsAsync","openCamera","options","hasPermission","granted","onOpenFailureWithToastMessage","response","launchCameraAsync","mediaTypes","mediaType","MediaTypeOptions","Images","Videos","All","cancelled","uri","size","getInfoAsync","ext","getFileExtension","getFileType","fileTypeGuard","slice","name","Date","now","openMediaLibrary","launchImageLibraryAsync","openDocument","getDocumentAsync","mimeType","save","Error","basePath","documentDirectory","cacheDirectory","downloadPath","fileName","downloadAsync","fileUrl","fileType","match","saveToLibraryAsync"],"sources":["createFileService.expo.ts"],"sourcesContent":["import type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoMediaLibrary from 'expo-media-library';\n\nimport { getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport type { ExpoMediaLibraryPermissionResponse, ExpoPermissionResponse } from '../utils/expoPermissionGranted';\nimport expoPermissionGranted from '../utils/expoPermissionGranted';\nimport fileTypeGuard from '../utils/fileTypeGuard';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nconst createExpoFileService = ({\n imagePickerModule,\n documentPickerModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ExpoImagePicker;\n documentPickerModule: typeof ExpoDocumentPicker;\n mediaLibraryModule: typeof ExpoMediaLibrary;\n fsModule: typeof ExpoFs;\n}): FileServiceInterface => {\n class ExpoFileServiceInterface implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.getCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async requestCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.requestCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async hasMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.getPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n async requestMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.requestPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCameraAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n default:\n return imagePickerModule.MediaTypeOptions.All;\n }\n })(),\n });\n\n if (response.cancelled) return null;\n\n const { uri } = response;\n const { size } = await fsModule.getInfoAsync(response.uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n\n return fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext });\n }\n async openMediaLibrary(options: OpenMediaLibraryOptions) {\n const hasPermission = await this.hasMediaLibraryPermission('read');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('read');\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibraryAsync();\n if (response.cancelled) return null;\n const { uri } = response;\n\n const { size } = await fsModule.getInfoAsync(uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n return [fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext })];\n }\n\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const response = await documentPickerModule.getDocumentAsync({ type: '*/*' });\n if (response.type === 'cancel') return null;\n const { mimeType, uri, size, name } = response;\n return fileTypeGuard({ uri, size, name, type: mimeType });\n } catch {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission('write');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('write');\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = fsModule.documentDirectory || fsModule.cacheDirectory;\n if (!basePath) throw new Error('Cannot determine directory');\n\n const downloadPath = `${basePath}/${options.fileName}`;\n\n const response = await fsModule.downloadAsync(options.fileUrl, downloadPath);\n if (getFileType(options.fileType || '').match(/video|image/)) {\n await mediaLibraryModule.saveToLibraryAsync(response.uri);\n }\n return response.uri;\n }\n }\n\n return new ExpoFileServiceInterface();\n};\n\nexport default createExpoFileService;\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- const VERSION = '1.0.0-rc.4';
7
+ const VERSION = '1.0.2';
8
8
  var _default = VERSION;
9
9
  exports.default = _default;
10
10
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '1.0.0-rc.4';\nexport default VERSION;\n"],"mappings":";;;;;;AAAA,MAAMA,OAAO,GAAG,YAAhB;eACeA,O"}
1
+ {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '1.0.2';\nexport default VERSION;\n"],"mappings":";;;;;;AAAA,MAAMA,OAAO,GAAG,OAAhB;eACeA,O"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","TypedPlaceholder","DefaultErrorBoundaryComponent","props","flex","justifyContent","alignItems","reset","InternalErrorBoundary","PureComponent","error","errorInfo","setState","onError","state","ErrorInfoComponent","children"],"sources":["InternalErrorBoundary.tsx"],"sourcesContent":["import React, { ErrorInfo } from 'react';\nimport { View } from 'react-native';\n\nimport TypedPlaceholder from './components/TypedPlaceholder';\nimport type { ErrorBoundaryProps } from './types';\n\nconst DefaultErrorBoundaryComponent = (props: ErrorBoundaryProps) => {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <TypedPlaceholder type={'error-wrong'} onPressRetry={props.reset} />\n </View>\n );\n};\n\nclass InternalErrorBoundary extends React.PureComponent<{\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n}> {\n static defaultProps = {\n ErrorInfoComponent: DefaultErrorBoundaryComponent,\n };\n\n state: { error: Error | null; errorInfo: ErrorInfo | null } = {\n error: null,\n errorInfo: null,\n };\n\n componentDidCatch = (error: Error, errorInfo: ErrorInfo) => {\n this.setState({ error, errorInfo });\n this.props.onError?.({ error, errorInfo, reset: this.reset });\n };\n\n reset = () => {\n this.setState({ error: null, errorInfo: null });\n };\n\n render = () => {\n if (this.state.error && this.state.errorInfo) {\n return (\n this.props.ErrorInfoComponent?.({\n error: this.state.error,\n errorInfo: this.state.errorInfo,\n reset: this.reset,\n }) ?? null\n );\n }\n\n return <>{this.props.children}</>;\n };\n}\n\nexport default InternalErrorBoundary;\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAiC,OAAjC;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,OAAOC,gBAAP,MAA6B,+BAA7B;;AAGA,MAAMC,6BAA6B,GAAIC,KAAD,IAA+B;EACnE,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAE;MAAEC,IAAI,EAAE,CAAR;MAAWC,cAAc,EAAE,QAA3B;MAAqCC,UAAU,EAAE;IAAjD;EAAb,gBACE,oBAAC,gBAAD;IAAkB,IAAI,EAAE,aAAxB;IAAuC,YAAY,EAAEH,KAAK,CAACI;EAA3D,EADF,CADF;AAKD,CAND;;AAQA,MAAMC,qBAAN,SAAoCT,KAAK,CAACU,aAA1C,CAGG;EAAA;IAAA;;IAAA,+BAK6D;MAC5DC,KAAK,EAAE,IADqD;MAE5DC,SAAS,EAAE;IAFiD,CAL7D;;IAAA,2CAUmB,CAACD,KAAD,EAAeC,SAAf,KAAwC;MAAA;;MAC1D,KAAKC,QAAL,CAAc;QAAEF,KAAF;QAASC;MAAT,CAAd;MACA,2CAAKR,KAAL,EAAWU,OAAX,8FAAqB;QAAEH,KAAF;QAASC,SAAT;QAAoBJ,KAAK,EAAE,KAAKA;MAAhC,CAArB;IACD,CAbA;;IAAA,+BAeO,MAAM;MACZ,KAAKK,QAAL,CAAc;QAAEF,KAAK,EAAE,IAAT;QAAeC,SAAS,EAAE;MAA1B,CAAd;IACD,CAjBA;;IAAA,gCAmBQ,MAAM;MACb,IAAI,KAAKG,KAAL,CAAWJ,KAAX,IAAoB,KAAKI,KAAL,CAAWH,SAAnC,EAA8C;QAAA;;QAC5C,OACE,+CAAKR,KAAL,EAAWY,kBAAX,mGAAgC;UAC9BL,KAAK,EAAE,KAAKI,KAAL,CAAWJ,KADY;UAE9BC,SAAS,EAAE,KAAKG,KAAL,CAAWH,SAFQ;UAG9BJ,KAAK,EAAE,KAAKA;QAHkB,CAAhC,MAIM,IALR;MAOD;;MAED,oBAAO,0CAAG,KAAKJ,KAAL,CAAWa,QAAd,CAAP;IACD,CA/BA;EAAA;;AAAA;;gBAHGR,qB,kBAIkB;EACpBO,kBAAkB,EAAEb;AADA,C;;AAiCxB,eAAeM,qBAAf"}
1
+ {"version":3,"names":["React","View","TypedPlaceholder","DefaultErrorBoundaryComponent","props","flex","justifyContent","alignItems","reset","InternalErrorBoundary","PureComponent","error","errorInfo","setState","onError","state","ErrorInfoComponent","children"],"sources":["InternalErrorBoundary.tsx"],"sourcesContent":["import React, { ErrorInfo } from 'react';\nimport { View } from 'react-native';\n\nimport TypedPlaceholder from './components/TypedPlaceholder';\nimport type { ErrorBoundaryProps } from './types';\n\nconst DefaultErrorBoundaryComponent = (props: ErrorBoundaryProps) => {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <TypedPlaceholder type={'error-wrong'} onPressRetry={props.reset} />\n </View>\n );\n};\n\nclass InternalErrorBoundary extends React.PureComponent<{\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n children?: React.ReactNode;\n}> {\n static defaultProps = {\n ErrorInfoComponent: DefaultErrorBoundaryComponent,\n };\n\n state: { error: Error | null; errorInfo: ErrorInfo | null } = {\n error: null,\n errorInfo: null,\n };\n\n componentDidCatch = (error: Error, errorInfo: ErrorInfo) => {\n this.setState({ error, errorInfo });\n this.props.onError?.({ error, errorInfo, reset: this.reset });\n };\n\n reset = () => {\n this.setState({ error: null, errorInfo: null });\n };\n\n render = () => {\n if (this.state.error && this.state.errorInfo) {\n return (\n this.props.ErrorInfoComponent?.({\n error: this.state.error,\n errorInfo: this.state.errorInfo,\n reset: this.reset,\n }) ?? null\n );\n }\n\n return <>{this.props.children}</>;\n };\n}\n\nexport default InternalErrorBoundary;\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAiC,OAAjC;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,OAAOC,gBAAP,MAA6B,+BAA7B;;AAGA,MAAMC,6BAA6B,GAAIC,KAAD,IAA+B;EACnE,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAE;MAAEC,IAAI,EAAE,CAAR;MAAWC,cAAc,EAAE,QAA3B;MAAqCC,UAAU,EAAE;IAAjD;EAAb,gBACE,oBAAC,gBAAD;IAAkB,IAAI,EAAE,aAAxB;IAAuC,YAAY,EAAEH,KAAK,CAACI;EAA3D,EADF,CADF;AAKD,CAND;;AAQA,MAAMC,qBAAN,SAAoCT,KAAK,CAACU,aAA1C,CAIG;EAAA;IAAA;;IAAA,+BAK6D;MAC5DC,KAAK,EAAE,IADqD;MAE5DC,SAAS,EAAE;IAFiD,CAL7D;;IAAA,2CAUmB,CAACD,KAAD,EAAeC,SAAf,KAAwC;MAAA;;MAC1D,KAAKC,QAAL,CAAc;QAAEF,KAAF;QAASC;MAAT,CAAd;MACA,2CAAKR,KAAL,EAAWU,OAAX,8FAAqB;QAAEH,KAAF;QAASC,SAAT;QAAoBJ,KAAK,EAAE,KAAKA;MAAhC,CAArB;IACD,CAbA;;IAAA,+BAeO,MAAM;MACZ,KAAKK,QAAL,CAAc;QAAEF,KAAK,EAAE,IAAT;QAAeC,SAAS,EAAE;MAA1B,CAAd;IACD,CAjBA;;IAAA,gCAmBQ,MAAM;MACb,IAAI,KAAKG,KAAL,CAAWJ,KAAX,IAAoB,KAAKI,KAAL,CAAWH,SAAnC,EAA8C;QAAA;;QAC5C,OACE,+CAAKR,KAAL,EAAWY,kBAAX,mGAAgC;UAC9BL,KAAK,EAAE,KAAKI,KAAL,CAAWJ,KADY;UAE9BC,SAAS,EAAE,KAAKG,KAAL,CAAWH,SAFQ;UAG9BJ,KAAK,EAAE,KAAKA;QAHkB,CAAhC,MAIM,IALR;MAOD;;MAED,oBAAO,0CAAG,KAAKJ,KAAL,CAAWa,QAAd,CAAP;IACD,CA/BA;EAAA;;AAAA;;gBAJGR,qB,kBAKkB;EACpBO,kBAAkB,EAAEb;AADA,C;;AAiCxB,eAAeM,qBAAf"}
@@ -60,7 +60,7 @@ const SendbirdUIKitContainer = _ref => {
60
60
  sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);
61
61
  }
62
62
 
63
- if (NetInfo.addEventListener) {
63
+ if (NetInfo !== null && NetInfo !== void 0 && NetInfo.addEventListener) {
64
64
  var _sdk$setOnlineListene, _sdk, _sdk$setOfflineListen, _sdk2;
65
65
 
66
66
  const listener = (callback, callbackType) => {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useState","Platform","SafeAreaProvider","Sendbird","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","InternalErrorBoundary","InternalLocalCacheStorage","LocalizationProvider","PlatformServiceProvider","SendbirdChatProvider","useLocalization","StringSetEn","SBUDynamicModule","VERSION","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","errorBoundary","unsubscribes","current","getSendbirdSDK","sdk","localCacheStorage","localCacheEnabled","useAsyncStorageAsDatabase","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","Boolean","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","forEach","u","enableAutoPushTokenRegistration","stringSet","file","notification","clipboard","theme","HeaderComponent","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","LocalizedDialogProvider","STRINGS","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\nimport Sendbird from 'sendbird';\n\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nimport InternalErrorBoundary from './InternalErrorBoundary';\nimport InternalLocalCacheStorage from './InternalLocalCacheStorage';\nimport { LocalizationProvider } from './contexts/Localization';\nimport { PlatformServiceProvider } from './contexts/PlatformService';\nimport { SendbirdChatProvider } from './contexts/SendbirdChat';\nimport { useLocalization } from './hooks/useContext';\nimport StringSetEn from './localization/StringSet.en';\nimport type { StringSet } from './localization/StringSet.type';\nimport SBUDynamicModule from './platform/dynamicModule';\nimport type { ClipboardServiceInterface, FileServiceInterface, NotificationServiceInterface } from './platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from './types';\nimport VERSION from './version';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n});\n\nexport type SendbirdUIKitContainerProps = {\n children?: React.ReactNode;\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n enableAutoPushTokenRegistration?: boolean;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n };\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n};\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const unsubscribes = useRef<(() => void)[]>([]).current;\n const getSendbirdSDK = () => {\n let sdk: SendbirdChatSDK;\n\n if (chatOptions?.localCacheStorage) {\n sdk = new Sendbird({ appId, localCacheEnabled: true });\n sdk.useAsyncStorageAsDatabase(new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n } else {\n sdk = new Sendbird({ appId });\n }\n\n if (chatOptions?.onInitialized) {\n sdk = chatOptions?.onInitialized(sdk);\n }\n\n if (SendbirdUIKit.VERSION) {\n // @ts-ignore\n sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n if (SendbirdUIKit.PLATFORM) {\n // @ts-ignore\n sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n sdk.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n sdk.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return sdk;\n };\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(getSendbirdSDK);\n\n useEffect(() => {\n setSdkInstance(getSendbirdSDK);\n return () => {\n unsubscribes.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, chatOptions?.localCacheStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}\n >\n <LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <LocalizedDialogProvider>\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <InternalErrorBoundary {...errorBoundary}>{children}</InternalErrorBoundary>\n </ToastProvider>\n </LocalizedDialogProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst LocalizedDialogProvider: React.FC = ({ children }) => {\n const { STRINGS } = useLocalization();\n return (\n <DialogProvider\n defaultLabels={{\n alert: {\n ok: STRINGS.DIALOG.ALERT_DEFAULT_OK,\n },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {children}\n </DialogProvider>\n );\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useEffect","useRef","useState","Platform","SafeAreaProvider","Sendbird","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","InternalErrorBoundary","InternalLocalCacheStorage","LocalizationProvider","PlatformServiceProvider","SendbirdChatProvider","useLocalization","StringSetEn","SBUDynamicModule","VERSION","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","errorBoundary","unsubscribes","current","getSendbirdSDK","sdk","localCacheStorage","localCacheEnabled","useAsyncStorageAsDatabase","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","Boolean","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","forEach","u","enableAutoPushTokenRegistration","stringSet","file","notification","clipboard","theme","HeaderComponent","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","LocalizedDialogProvider","STRINGS","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\nimport Sendbird from 'sendbird';\n\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nimport InternalErrorBoundary from './InternalErrorBoundary';\nimport InternalLocalCacheStorage from './InternalLocalCacheStorage';\nimport { LocalizationProvider } from './contexts/Localization';\nimport { PlatformServiceProvider } from './contexts/PlatformService';\nimport { SendbirdChatProvider } from './contexts/SendbirdChat';\nimport { useLocalization } from './hooks/useContext';\nimport StringSetEn from './localization/StringSet.en';\nimport type { StringSet } from './localization/StringSet.type';\nimport SBUDynamicModule from './platform/dynamicModule';\nimport type { ClipboardServiceInterface, FileServiceInterface, NotificationServiceInterface } from './platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from './types';\nimport VERSION from './version';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n enableAutoPushTokenRegistration?: boolean;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n };\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const unsubscribes = useRef<(() => void)[]>([]).current;\n const getSendbirdSDK = () => {\n let sdk: SendbirdChatSDK;\n\n if (chatOptions?.localCacheStorage) {\n sdk = new Sendbird({ appId, localCacheEnabled: true });\n sdk.useAsyncStorageAsDatabase(new InternalLocalCacheStorage(chatOptions.localCacheStorage));\n } else {\n sdk = new Sendbird({ appId });\n }\n\n if (chatOptions?.onInitialized) {\n sdk = chatOptions?.onInitialized(sdk);\n }\n\n if (SendbirdUIKit.VERSION) {\n // @ts-ignore\n sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n if (SendbirdUIKit.PLATFORM) {\n // @ts-ignore\n sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n sdk.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n sdk.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return sdk;\n };\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(getSendbirdSDK);\n\n useEffect(() => {\n setSdkInstance(getSendbirdSDK);\n return () => {\n unsubscribes.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, chatOptions?.localCacheStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}\n >\n <LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <LocalizedDialogProvider>\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <InternalErrorBoundary {...errorBoundary}>{children}</InternalErrorBoundary>\n </ToastProvider>\n </LocalizedDialogProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst LocalizedDialogProvider = ({ children }: React.PropsWithChildren) => {\n const { STRINGS } = useLocalization();\n return (\n <DialogProvider\n defaultLabels={{\n alert: {\n ok: STRINGS.DIALOG.ALERT_DEFAULT_OK,\n },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {children}\n </DialogProvider>\n );\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","Avatar","getMembersExcludeMe","isDefaultCoverImage","useSendbirdChat","ChannelCover","channel","avatarProps","currentUser","coverUrl","memberCount","otherUserProfile","members","filter","m","userId","profileUrl","map"],"sources":["ChannelCover.tsx"],"sourcesContent":["import React from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\n\nimport { Avatar } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdGroupChannel, getMembersExcludeMe, isDefaultCoverImage } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n channel: SendbirdGroupChannel;\n size?: number;\n containerStyle?: StyleProp<ViewStyle>;\n};\n\nconst ChannelCover: React.FC<Props> = ({ channel, ...avatarProps }) => {\n const { currentUser } = useSendbirdChat();\n\n // channel cover\n if (!isDefaultCoverImage(channel.coverUrl) || !currentUser) {\n return <Avatar uri={channel.coverUrl} {...avatarProps} />;\n }\n\n // no members, use anonymous profile\n if (channel.memberCount <= 1) {\n return <Avatar {...avatarProps} />;\n }\n\n // 1:1, use member profile\n if (channel.memberCount === 2) {\n const otherUserProfile = channel.members.filter((m) => m.userId !== currentUser.userId)?.[0]?.profileUrl;\n return <Avatar uri={otherUserProfile} {...avatarProps} />;\n }\n\n // group, use members profile\n return (\n <Avatar.Group {...avatarProps}>\n {getMembersExcludeMe(channel, currentUser?.userId).map((m) => (\n <Avatar key={m.userId} uri={m.profileUrl} />\n ))}\n </Avatar.Group>\n );\n};\n\nexport default ChannelCover;\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,SAASC,MAAT,QAAuB,yCAAvB;AACA,SAA+BC,mBAA/B,EAAoDC,mBAApD,QAA+E,uBAA/E;AAEA,SAASC,eAAT,QAAgC,qBAAhC;;AAQA,MAAMC,YAA6B,GAAG,QAAiC;EAAA,IAAhC;IAAEC,OAAF;IAAW,GAAGC;EAAd,CAAgC;EACrE,MAAM;IAAEC;EAAF,IAAkBJ,eAAe,EAAvC,CADqE,CAGrE;;EACA,IAAI,CAACD,mBAAmB,CAACG,OAAO,CAACG,QAAT,CAApB,IAA0C,CAACD,WAA/C,EAA4D;IAC1D,oBAAO,oBAAC,MAAD;MAAQ,GAAG,EAAEF,OAAO,CAACG;IAArB,GAAmCF,WAAnC,EAAP;EACD,CANoE,CAQrE;;;EACA,IAAID,OAAO,CAACI,WAAR,IAAuB,CAA3B,EAA8B;IAC5B,oBAAO,oBAAC,MAAD,EAAYH,WAAZ,CAAP;EACD,CAXoE,CAarE;;;EACA,IAAID,OAAO,CAACI,WAAR,KAAwB,CAA5B,EAA+B;IAAA;;IAC7B,MAAMC,gBAAgB,4BAAGL,OAAO,CAACM,OAAR,CAAgBC,MAAhB,CAAwBC,CAAD,IAAOA,CAAC,CAACC,MAAF,KAAaP,WAAW,CAACO,MAAvD,CAAH,oFAAG,sBAAiE,CAAjE,CAAH,2DAAG,uBAAqEC,UAA9F;IACA,oBAAO,oBAAC,MAAD;MAAQ,GAAG,EAAEL;IAAb,GAAmCJ,WAAnC,EAAP;EACD,CAjBoE,CAmBrE;;;EACA,oBACE,oBAAC,MAAD,CAAQ,KAAR,EAAkBA,WAAlB,EACGL,mBAAmB,CAACI,OAAD,EAAUE,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEO,MAAvB,CAAnB,CAAkDE,GAAlD,CAAuDH,CAAD,iBACrD,oBAAC,MAAD;IAAQ,GAAG,EAAEA,CAAC,CAACC,MAAf;IAAuB,GAAG,EAAED,CAAC,CAACE;EAA9B,EADD,CADH,CADF;AAOD,CA3BD;;AA6BA,eAAeX,YAAf"}
1
+ {"version":3,"names":["React","Avatar","getMembersExcludeMe","isDefaultCoverImage","useSendbirdChat","ChannelCover","channel","avatarProps","currentUser","coverUrl","memberCount","otherUserProfile","members","filter","m","userId","profileUrl","map"],"sources":["ChannelCover.tsx"],"sourcesContent":["import React from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\n\nimport { Avatar } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdGroupChannel, getMembersExcludeMe, isDefaultCoverImage } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n channel: SendbirdGroupChannel;\n size?: number;\n containerStyle?: StyleProp<ViewStyle>;\n};\n\nconst ChannelCover = ({ channel, ...avatarProps }: Props) => {\n const { currentUser } = useSendbirdChat();\n\n // channel cover\n if (!isDefaultCoverImage(channel.coverUrl) || !currentUser) {\n return <Avatar uri={channel.coverUrl} {...avatarProps} />;\n }\n\n // no members, use anonymous profile\n if (channel.memberCount <= 1) {\n return <Avatar {...avatarProps} />;\n }\n\n // 1:1, use member profile\n if (channel.memberCount === 2) {\n const otherUserProfile = channel.members.filter((m) => m.userId !== currentUser.userId)?.[0]?.profileUrl;\n return <Avatar uri={otherUserProfile} {...avatarProps} />;\n }\n\n // group, use members profile\n return (\n <Avatar.Group {...avatarProps}>\n {getMembersExcludeMe(channel, currentUser?.userId).map((m) => (\n <Avatar key={m.userId} uri={m.profileUrl} />\n ))}\n </Avatar.Group>\n );\n};\n\nexport default ChannelCover;\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,SAASC,MAAT,QAAuB,yCAAvB;AACA,SAA+BC,mBAA/B,EAAoDC,mBAApD,QAA+E,uBAA/E;AAEA,SAASC,eAAT,QAAgC,qBAAhC;;AAQA,MAAMC,YAAY,GAAG,QAAwC;EAAA,IAAvC;IAAEC,OAAF;IAAW,GAAGC;EAAd,CAAuC;EAC3D,MAAM;IAAEC;EAAF,IAAkBJ,eAAe,EAAvC,CAD2D,CAG3D;;EACA,IAAI,CAACD,mBAAmB,CAACG,OAAO,CAACG,QAAT,CAApB,IAA0C,CAACD,WAA/C,EAA4D;IAC1D,oBAAO,oBAAC,MAAD;MAAQ,GAAG,EAAEF,OAAO,CAACG;IAArB,GAAmCF,WAAnC,EAAP;EACD,CAN0D,CAQ3D;;;EACA,IAAID,OAAO,CAACI,WAAR,IAAuB,CAA3B,EAA8B;IAC5B,oBAAO,oBAAC,MAAD,EAAYH,WAAZ,CAAP;EACD,CAX0D,CAa3D;;;EACA,IAAID,OAAO,CAACI,WAAR,KAAwB,CAA5B,EAA+B;IAAA;;IAC7B,MAAMC,gBAAgB,4BAAGL,OAAO,CAACM,OAAR,CAAgBC,MAAhB,CAAwBC,CAAD,IAAOA,CAAC,CAACC,MAAF,KAAaP,WAAW,CAACO,MAAvD,CAAH,oFAAG,sBAAiE,CAAjE,CAAH,2DAAG,uBAAqEC,UAA9F;IACA,oBAAO,oBAAC,MAAD;MAAQ,GAAG,EAAEL;IAAb,GAAmCJ,WAAnC,EAAP;EACD,CAjB0D,CAmB3D;;;EACA,oBACE,oBAAC,MAAD,CAAQ,KAAR,EAAkBA,WAAlB,EACGL,mBAAmB,CAACI,OAAD,EAAUE,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEO,MAAvB,CAAnB,CAAkDE,GAAlD,CAAuDH,CAAD,iBACrD,oBAAC,MAAD;IAAQ,GAAG,EAAEA,CAAC,CAACC,MAAf;IAAuB,GAAG,EAAED,CAAC,CAACE;EAA9B,EADD,CADH,CADF;AAOD,CA3BD;;AA6BA,eAAeX,YAAf"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","FlatList","Platform","useUIKitTheme","isMyMessage","ANDROID_BUG_ALERT_SHOWED","OS","BOTTOM_DETECT_THRESHOLD","hasReachedToBottom","yPos","thresholdPx","ChatFlatList","CustomFlatList","ref","onTopReached","nextMessages","onBottomReached","onLeaveScrollBottom","onScroll","currentUserId","props","select","scrollRef","scrollToBottom","animated","current","scrollToOffset","offset","latestMessage","length","_onScroll","event","contentOffset","nativeEvent","y","__DEV__","console","warn","Boolean","data","light","dark"],"sources":["ChatFlatList.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef } from 'react';\nimport { FlatList, FlatListProps, Platform } from 'react-native';\n\nimport { useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdMessage, isMyMessage } from '@sendbird/uikit-utils';\n\nlet ANDROID_BUG_ALERT_SHOWED = Platform.OS !== 'android';\nconst BOTTOM_DETECT_THRESHOLD = 25;\n// const AUTO_SCROLL_TO_TOP_THRESHOLD = 15;\n\nfunction hasReachedToBottom(yPos: number, thresholdPx = 0) {\n return thresholdPx >= yPos;\n}\n\nexport type ChatFlatListRef = { scrollToBottom: (animated?: boolean) => void };\ntype Props = Omit<FlatListProps<SendbirdMessage>, 'onEndReached'> & {\n currentUserId?: string;\n onBottomReached: () => void;\n onTopReached: () => void;\n nextMessages: SendbirdMessage[];\n onLeaveScrollBottom: (value: boolean) => void;\n};\n// FIXME: Inverted FlatList performance issue on Android {@link https://github.com/facebook/react-native/issues/30034}\nconst ChatFlatList = forwardRef<ChatFlatListRef, Props>(function CustomFlatList(\n { onTopReached, nextMessages, onBottomReached, onLeaveScrollBottom, onScroll, currentUserId, ...props },\n ref,\n) {\n const { select } = useUIKitTheme();\n const scrollRef = useRef<FlatList<SendbirdMessage>>(null);\n const yPos = useRef(0);\n\n useImperativeHandle(\n ref,\n () => ({\n scrollToBottom: (animated = true) => scrollRef.current?.scrollToOffset({ animated, offset: 0 }),\n }),\n [],\n );\n\n useEffect(() => {\n const latestMessage = nextMessages[nextMessages.length - 1];\n if (!latestMessage) return;\n\n if (hasReachedToBottom(yPos.current)) {\n onBottomReached();\n } else if (isMyMessage(latestMessage, currentUserId)) {\n scrollRef.current?.scrollToOffset({ animated: false, offset: 0 });\n }\n }, [onBottomReached, nextMessages, currentUserId]);\n\n const _onScroll: Props['onScroll'] = useCallback(\n (event) => {\n const { contentOffset } = event.nativeEvent;\n if (BOTTOM_DETECT_THRESHOLD < yPos.current && contentOffset.y <= BOTTOM_DETECT_THRESHOLD) {\n onLeaveScrollBottom(false);\n } else if (BOTTOM_DETECT_THRESHOLD < contentOffset.y && yPos.current <= BOTTOM_DETECT_THRESHOLD) {\n onLeaveScrollBottom(true);\n }\n\n yPos.current = contentOffset.y;\n\n onScroll?.(event);\n if (hasReachedToBottom(yPos.current)) onBottomReached();\n },\n [onScroll, onBottomReached],\n );\n\n if (__DEV__ && !ANDROID_BUG_ALERT_SHOWED) {\n ANDROID_BUG_ALERT_SHOWED = true;\n // eslint-disable-next-line no-console\n console.warn(\n 'UIKit Warning: Inverted FlatList has a performance issue on Android, Maybe this is a bug please refer link\\nhttps://github.com/facebook/react-native/issues/30034',\n );\n }\n\n return (\n <FlatList\n {...props}\n // FIXME: inverted list of ListEmptyComponent is reversed {@link https://github.com/facebook/react-native/issues/21196#issuecomment-836937743}\n inverted={Boolean(props.data?.length)}\n // FIXME: maintainVisibleContentPosition is not working on Android {@link https://github.com/facebook/react-native/issues/25239}\n // maintainVisibleContentPosition={{ minIndexForVisible: 1, autoscrollToTopThreshold: AUTO_SCROLL_TO_TOP_THRESHOLD }}\n ref={scrollRef}\n bounces={false}\n keyboardShouldPersistTaps={'handled'}\n indicatorStyle={select({ light: 'black', dark: 'white' })}\n removeClippedSubviews\n onEndReachedThreshold={0.5}\n onEndReached={onTopReached}\n scrollEventThrottle={16}\n onScroll={_onScroll}\n />\n );\n});\n\nexport default ChatFlatList;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","FlatList","Platform","useUIKitTheme","isMyMessage","ANDROID_BUG_ALERT_SHOWED","OS","BOTTOM_DETECT_THRESHOLD","hasReachedToBottom","yPos","thresholdPx","ChatFlatList","CustomFlatList","ref","onTopReached","nextMessages","onBottomReached","onLeaveScrollBottom","onScroll","currentUserId","props","select","scrollRef","scrollToBottom","animated","current","scrollToOffset","offset","latestMessage","length","_onScroll","event","contentOffset","nativeEvent","y","__DEV__","console","warn","Boolean","data","light","dark"],"sources":["ChatFlatList.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef } from 'react';\nimport { FlatList, FlatListProps, Platform } from 'react-native';\n\nimport { useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdMessage, isMyMessage } from '@sendbird/uikit-utils';\n\nlet ANDROID_BUG_ALERT_SHOWED = Platform.OS !== 'android';\nconst BOTTOM_DETECT_THRESHOLD = 25;\n// const AUTO_SCROLL_TO_TOP_THRESHOLD = 15;\n\nfunction hasReachedToBottom(yPos: number, thresholdPx = 0) {\n return thresholdPx >= yPos;\n}\n\nexport type ChatFlatListRef = { scrollToBottom: (animated?: boolean) => void };\ntype Props = Omit<FlatListProps<SendbirdMessage>, 'onEndReached'> & {\n currentUserId?: string;\n onBottomReached: () => void;\n onTopReached: () => void;\n nextMessages: SendbirdMessage[];\n onLeaveScrollBottom: (value: boolean) => void;\n};\n// FIXME: Inverted FlatList performance issue on Android {@link https://github.com/facebook/react-native/issues/30034}\nconst ChatFlatList = forwardRef<ChatFlatListRef, Props>(function CustomFlatList(\n { onTopReached, nextMessages, onBottomReached, onLeaveScrollBottom, onScroll, currentUserId, ...props },\n ref,\n) {\n const { select } = useUIKitTheme();\n const scrollRef = useRef<FlatList<SendbirdMessage>>(null);\n const yPos = useRef(0);\n\n useImperativeHandle(\n ref,\n () => ({\n scrollToBottom: (animated = true) => scrollRef.current?.scrollToOffset({ animated, offset: 0 }),\n }),\n [],\n );\n\n useEffect(() => {\n const latestMessage = nextMessages[nextMessages.length - 1];\n if (!latestMessage) return;\n\n if (hasReachedToBottom(yPos.current)) {\n onBottomReached();\n } else if (isMyMessage(latestMessage, currentUserId)) {\n scrollRef.current?.scrollToOffset({ animated: false, offset: 0 });\n }\n }, [onBottomReached, nextMessages, currentUserId]);\n\n const _onScroll = useCallback<NonNullable<Props['onScroll']>>(\n (event) => {\n const { contentOffset } = event.nativeEvent;\n if (BOTTOM_DETECT_THRESHOLD < yPos.current && contentOffset.y <= BOTTOM_DETECT_THRESHOLD) {\n onLeaveScrollBottom(false);\n } else if (BOTTOM_DETECT_THRESHOLD < contentOffset.y && yPos.current <= BOTTOM_DETECT_THRESHOLD) {\n onLeaveScrollBottom(true);\n }\n\n yPos.current = contentOffset.y;\n\n onScroll?.(event);\n if (hasReachedToBottom(yPos.current)) onBottomReached();\n },\n [onScroll, onBottomReached],\n );\n\n if (__DEV__ && !ANDROID_BUG_ALERT_SHOWED) {\n ANDROID_BUG_ALERT_SHOWED = true;\n // eslint-disable-next-line no-console\n console.warn(\n 'UIKit Warning: Inverted FlatList has a performance issue on Android, Maybe this is a bug please refer link\\nhttps://github.com/facebook/react-native/issues/30034',\n );\n }\n\n return (\n <FlatList\n {...props}\n // FIXME: inverted list of ListEmptyComponent is reversed {@link https://github.com/facebook/react-native/issues/21196#issuecomment-836937743}\n inverted={Boolean(props.data?.length)}\n // FIXME: maintainVisibleContentPosition is not working on Android {@link https://github.com/facebook/react-native/issues/25239}\n // maintainVisibleContentPosition={{ minIndexForVisible: 1, autoscrollToTopThreshold: AUTO_SCROLL_TO_TOP_THRESHOLD }}\n ref={scrollRef}\n bounces={false}\n keyboardShouldPersistTaps={'handled'}\n indicatorStyle={select({ light: 'black', dark: 'white' })}\n removeClippedSubviews\n onEndReachedThreshold={0.5}\n onEndReached={onTopReached}\n scrollEventThrottle={16}\n onScroll={_onScroll}\n />\n );\n});\n\nexport default ChatFlatList;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","Text","createStyleSheet","useUIKitTheme","AdminMessage","message","nextMessage","colors","isNextAdmin","isAdminMessage","flatten","styles","container","nextAdminType","next","onBackground02","text","width","alignSelf","alignItems","marginBottom","textAlign"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdAdminMessage } from '@sendbird/uikit-utils';\n\nimport type { MessageRendererInterface } from '../index';\n\nexport type AdminMessageProps = MessageRendererInterface<SendbirdAdminMessage>;\nconst AdminMessage: React.FC<AdminMessageProps> = ({ message, nextMessage }) => {\n const { colors } = useUIKitTheme();\n\n const isNextAdmin = nextMessage?.isAdminMessage();\n return (\n <View style={StyleSheet.flatten([styles.container, isNextAdmin ? styles.nextAdminType : styles.next])}>\n <Text caption2 color={colors.onBackground02} style={styles.text}>\n {message.message}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n width: 300,\n alignSelf: 'center',\n alignItems: 'center',\n },\n nextAdminType: {\n marginBottom: 8,\n },\n next: {\n marginBottom: 16,\n },\n text: {\n textAlign: 'center',\n },\n});\n\nexport default AdminMessage;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AAEA,SAASC,IAAT,EAAeC,gBAAf,EAAiCC,aAAjC,QAAsD,yCAAtD;;AAMA,MAAMC,YAAyC,GAAG,QAA8B;EAAA,IAA7B;IAAEC,OAAF;IAAWC;EAAX,CAA6B;EAC9E,MAAM;IAAEC;EAAF,IAAaJ,aAAa,EAAhC;EAEA,MAAMK,WAAW,GAAGF,WAAH,aAAGA,WAAH,uBAAGA,WAAW,CAAEG,cAAb,EAApB;EACA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAEV,UAAU,CAACW,OAAX,CAAmB,CAACC,MAAM,CAACC,SAAR,EAAmBJ,WAAW,GAAGG,MAAM,CAACE,aAAV,GAA0BF,MAAM,CAACG,IAA/D,CAAnB;EAAb,gBACE,oBAAC,IAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEP,MAAM,CAACQ,cAA7B;IAA6C,KAAK,EAAEJ,MAAM,CAACK;EAA3D,GACGX,OAAO,CAACA,OADX,CADF,CADF;AAOD,CAXD;;AAaA,MAAMM,MAAM,GAAGT,gBAAgB,CAAC;EAC9BU,SAAS,EAAE;IACTK,KAAK,EAAE,GADE;IAETC,SAAS,EAAE,QAFF;IAGTC,UAAU,EAAE;EAHH,CADmB;EAM9BN,aAAa,EAAE;IACbO,YAAY,EAAE;EADD,CANe;EAS9BN,IAAI,EAAE;IACJM,YAAY,EAAE;EADV,CATwB;EAY9BJ,IAAI,EAAE;IACJK,SAAS,EAAE;EADP;AAZwB,CAAD,CAA/B;AAiBA,eAAejB,YAAf"}
1
+ {"version":3,"names":["React","StyleSheet","View","Text","createStyleSheet","useUIKitTheme","AdminMessage","message","nextMessage","colors","isNextAdmin","isAdminMessage","flatten","styles","container","nextAdminType","next","onBackground02","text","width","alignSelf","alignItems","marginBottom","textAlign"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdAdminMessage } from '@sendbird/uikit-utils';\n\nimport type { MessageRendererInterface } from '../index';\n\nexport type AdminMessageProps = MessageRendererInterface<SendbirdAdminMessage>;\nconst AdminMessage = ({ message, nextMessage }: AdminMessageProps) => {\n const { colors } = useUIKitTheme();\n\n const isNextAdmin = nextMessage?.isAdminMessage();\n return (\n <View style={StyleSheet.flatten([styles.container, isNextAdmin ? styles.nextAdminType : styles.next])}>\n <Text caption2 color={colors.onBackground02} style={styles.text}>\n {message.message}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n width: 300,\n alignSelf: 'center',\n alignItems: 'center',\n },\n nextAdminType: {\n marginBottom: 8,\n },\n next: {\n marginBottom: 16,\n },\n text: {\n textAlign: 'center',\n },\n});\n\nexport default AdminMessage;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AAEA,SAASC,IAAT,EAAeC,gBAAf,EAAiCC,aAAjC,QAAsD,yCAAtD;;AAMA,MAAMC,YAAY,GAAG,QAAiD;EAAA,IAAhD;IAAEC,OAAF;IAAWC;EAAX,CAAgD;EACpE,MAAM;IAAEC;EAAF,IAAaJ,aAAa,EAAhC;EAEA,MAAMK,WAAW,GAAGF,WAAH,aAAGA,WAAH,uBAAGA,WAAW,CAAEG,cAAb,EAApB;EACA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAEV,UAAU,CAACW,OAAX,CAAmB,CAACC,MAAM,CAACC,SAAR,EAAmBJ,WAAW,GAAGG,MAAM,CAACE,aAAV,GAA0BF,MAAM,CAACG,IAA/D,CAAnB;EAAb,gBACE,oBAAC,IAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEP,MAAM,CAACQ,cAA7B;IAA6C,KAAK,EAAEJ,MAAM,CAACK;EAA3D,GACGX,OAAO,CAACA,OADX,CADF,CADF;AAOD,CAXD;;AAaA,MAAMM,MAAM,GAAGT,gBAAgB,CAAC;EAC9BU,SAAS,EAAE;IACTK,KAAK,EAAE,GADE;IAETC,SAAS,EAAE,QAFF;IAGTC,UAAU,EAAE;EAHH,CADmB;EAM9BN,aAAa,EAAE;IACbO,YAAY,EAAE;EADD,CANe;EAS9BN,IAAI,EAAE;IACJM,YAAY,EAAE;EADV,CATwB;EAY9BJ,IAAI,EAAE;IACJK,SAAS,EAAE;EADP;AAZwB,CAAD,CAA/B;AAiBA,eAAejB,YAAf"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","Icon","Text","createStyleSheet","useUIKitTheme","useLocalization","iconMapper","audio","image","video","file","BaseFileMessage","message","variant","pressed","type","STRINGS","colors","color","ui","styles","container","backgroundColor","background","padding","borderRadius","marginRight","textMsg","name","GROUP_CHANNEL","MESSAGE_BUBBLE_FILE_TITLE","flexDirection","alignItems","justifyContent","paddingHorizontal","paddingVertical","flexShrink"],"sources":["BaseFileMessage.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../../../hooks/useContext';\nimport type { FileMessageProps } from './index';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\nconst BaseFileMessage: React.FC<FileMessageProps & { type: 'image' | 'audio' | 'video' | 'file' }> = ({\n message,\n variant,\n pressed,\n type,\n}) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const color = colors.ui.message[variant][pressed ? 'pressed' : 'enabled'];\n return (\n <View style={[styles.container, { backgroundColor: color.background }]}>\n <Icon\n icon={iconMapper[type]}\n size={24}\n containerStyle={{ backgroundColor: colors.background, padding: 2, borderRadius: 8, marginRight: 8 }}\n />\n <Text body3 ellipsizeMode={'middle'} numberOfLines={1} color={color.textMsg} style={styles.name}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message)}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 16,\n },\n name: {\n flexShrink: 1,\n },\n});\n\nexport default BaseFileMessage;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,IAAT,EAAeC,IAAf,EAAqBC,gBAArB,EAAuCC,aAAvC,QAA4D,yCAA5D;AAEA,SAASC,eAAT,QAAgC,2BAAhC;AAGA,MAAMC,UAAU,GAAG;EAAEC,KAAK,EAAE,YAAT;EAAuBC,KAAK,EAAE,OAA9B;EAAuCC,KAAK,EAAE,MAA9C;EAAsDC,IAAI,EAAE;AAA5D,CAAnB;;AAEA,MAAMC,eAA4F,GAAG,QAK/F;EAAA,IALgG;IACpGC,OADoG;IAEpGC,OAFoG;IAGpGC,OAHoG;IAIpGC;EAJoG,CAKhG;EACJ,MAAM;IAAEC;EAAF,IAAcX,eAAe,EAAnC;EACA,MAAM;IAAEY;EAAF,IAAab,aAAa,EAAhC;EACA,MAAMc,KAAK,GAAGD,MAAM,CAACE,EAAP,CAAUP,OAAV,CAAkBC,OAAlB,EAA2BC,OAAO,GAAG,SAAH,GAAe,SAAjD,CAAd;EACA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAE,CAACM,MAAM,CAACC,SAAR,EAAmB;MAAEC,eAAe,EAAEJ,KAAK,CAACK;IAAzB,CAAnB;EAAb,gBACE,oBAAC,IAAD;IACE,IAAI,EAAEjB,UAAU,CAACS,IAAD,CADlB;IAEE,IAAI,EAAE,EAFR;IAGE,cAAc,EAAE;MAAEO,eAAe,EAAEL,MAAM,CAACM,UAA1B;MAAsCC,OAAO,EAAE,CAA/C;MAAkDC,YAAY,EAAE,CAAhE;MAAmEC,WAAW,EAAE;IAAhF;EAHlB,EADF,eAME,oBAAC,IAAD;IAAM,KAAK,MAAX;IAAY,aAAa,EAAE,QAA3B;IAAqC,aAAa,EAAE,CAApD;IAAuD,KAAK,EAAER,KAAK,CAACS,OAApE;IAA6E,KAAK,EAAEP,MAAM,CAACQ;EAA3F,GACGZ,OAAO,CAACa,aAAR,CAAsBC,yBAAtB,CAAgDlB,OAAhD,CADH,CANF,CADF;AAYD,CArBD;;AAuBA,MAAMQ,MAAM,GAAGjB,gBAAgB,CAAC;EAC9BkB,SAAS,EAAE;IACTU,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,cAAc,EAAE,QAHP;IAITC,iBAAiB,EAAE,EAJV;IAKTC,eAAe,EAAE,CALR;IAMTV,YAAY,EAAE;EANL,CADmB;EAS9BG,IAAI,EAAE;IACJQ,UAAU,EAAE;EADR;AATwB,CAAD,CAA/B;AAcA,eAAezB,eAAf"}
1
+ {"version":3,"names":["React","View","Icon","Text","createStyleSheet","useUIKitTheme","useLocalization","iconMapper","audio","image","video","file","BaseFileMessage","message","variant","pressed","type","STRINGS","colors","color","ui","styles","container","backgroundColor","background","padding","borderRadius","marginRight","textMsg","name","GROUP_CHANNEL","MESSAGE_BUBBLE_FILE_TITLE","flexDirection","alignItems","justifyContent","paddingHorizontal","paddingVertical","flexShrink"],"sources":["BaseFileMessage.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\n\nimport { useLocalization } from '../../../hooks/useContext';\nimport type { FileMessageProps } from './index';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = FileMessageProps & {\n type: 'image' | 'audio' | 'video' | 'file';\n};\nconst BaseFileMessage = ({ message, variant, pressed, type }: Props) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const color = colors.ui.message[variant][pressed ? 'pressed' : 'enabled'];\n return (\n <View style={[styles.container, { backgroundColor: color.background }]}>\n <Icon\n icon={iconMapper[type]}\n size={24}\n containerStyle={{ backgroundColor: colors.background, padding: 2, borderRadius: 8, marginRight: 8 }}\n />\n <Text body3 ellipsizeMode={'middle'} numberOfLines={1} color={color.textMsg} style={styles.name}>\n {STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message)}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 16,\n },\n name: {\n flexShrink: 1,\n },\n});\n\nexport default BaseFileMessage;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,IAAT,EAAeC,IAAf,EAAqBC,gBAArB,EAAuCC,aAAvC,QAA4D,yCAA5D;AAEA,SAASC,eAAT,QAAgC,2BAAhC;AAGA,MAAMC,UAAU,GAAG;EAAEC,KAAK,EAAE,YAAT;EAAuBC,KAAK,EAAE,OAA9B;EAAuCC,KAAK,EAAE,MAA9C;EAAsDC,IAAI,EAAE;AAA5D,CAAnB;;AAKA,MAAMC,eAAe,GAAG,QAAgD;EAAA,IAA/C;IAAEC,OAAF;IAAWC,OAAX;IAAoBC,OAApB;IAA6BC;EAA7B,CAA+C;EACtE,MAAM;IAAEC;EAAF,IAAcX,eAAe,EAAnC;EACA,MAAM;IAAEY;EAAF,IAAab,aAAa,EAAhC;EACA,MAAMc,KAAK,GAAGD,MAAM,CAACE,EAAP,CAAUP,OAAV,CAAkBC,OAAlB,EAA2BC,OAAO,GAAG,SAAH,GAAe,SAAjD,CAAd;EACA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAE,CAACM,MAAM,CAACC,SAAR,EAAmB;MAAEC,eAAe,EAAEJ,KAAK,CAACK;IAAzB,CAAnB;EAAb,gBACE,oBAAC,IAAD;IACE,IAAI,EAAEjB,UAAU,CAACS,IAAD,CADlB;IAEE,IAAI,EAAE,EAFR;IAGE,cAAc,EAAE;MAAEO,eAAe,EAAEL,MAAM,CAACM,UAA1B;MAAsCC,OAAO,EAAE,CAA/C;MAAkDC,YAAY,EAAE,CAAhE;MAAmEC,WAAW,EAAE;IAAhF;EAHlB,EADF,eAME,oBAAC,IAAD;IAAM,KAAK,MAAX;IAAY,aAAa,EAAE,QAA3B;IAAqC,aAAa,EAAE,CAApD;IAAuD,KAAK,EAAER,KAAK,CAACS,OAApE;IAA6E,KAAK,EAAEP,MAAM,CAACQ;EAA3F,GACGZ,OAAO,CAACa,aAAR,CAAsBC,yBAAtB,CAAgDlB,OAAhD,CADH,CANF,CADF;AAYD,CAhBD;;AAkBA,MAAMQ,MAAM,GAAGjB,gBAAgB,CAAC;EAC9BkB,SAAS,EAAE;IACTU,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,cAAc,EAAE,QAHP;IAITC,iBAAiB,EAAE,EAJV;IAKTC,eAAe,EAAE,CALR;IAMTV,YAAY,EAAE;EANL,CADmB;EAS9BG,IAAI,EAAE;IACJQ,UAAU,EAAE;EADR;AATwB,CAAD,CAA/B;AAcA,eAAezB,eAAf"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","Icon","Image","createStyleSheet","useUIKitTheme","getAvailableUriFromFileMessage","ImageFileMessage","message","colors","imageNotFound","setImageNotFound","fileUrl","style","styles","image","backgroundColor","onBackground04","onBackground02","uri","width","maxWidth","height","borderRadius"],"sources":["ImageFileMessage.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport type { FileMessageProps } from './index';\n\nconst ImageFileMessage: React.FC<FileMessageProps> = ({ message }) => {\n const { colors } = useUIKitTheme();\n const [imageNotFound, setImageNotFound] = useState(false);\n\n const fileUrl = getAvailableUriFromFileMessage(message);\n const style = [styles.image, { backgroundColor: colors.onBackground04 }];\n\n if (imageNotFound) {\n return <Icon containerStyle={style} icon={'thumbnail-none'} size={48} color={colors.onBackground02} />;\n }\n\n return (\n <Image\n source={{ uri: fileUrl }}\n style={style}\n resizeMode={'cover'}\n resizeMethod={'resize'}\n onError={() => setImageNotFound(true)}\n />\n );\n};\n\nconst styles = createStyleSheet({\n image: {\n width: 240,\n maxWidth: 240,\n height: 160,\n borderRadius: 16,\n },\n});\n\nexport default ImageFileMessage;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAEA,SAASC,IAAT,EAAeC,KAAf,EAAsBC,gBAAtB,EAAwCC,aAAxC,QAA6D,yCAA7D;AACA,SAASC,8BAAT,QAA+C,uBAA/C;;AAIA,MAAMC,gBAA4C,GAAG,QAAiB;EAAA,IAAhB;IAAEC;EAAF,CAAgB;EACpE,MAAM;IAAEC;EAAF,IAAaJ,aAAa,EAAhC;EACA,MAAM,CAACK,aAAD,EAAgBC,gBAAhB,IAAoCV,QAAQ,CAAC,KAAD,CAAlD;EAEA,MAAMW,OAAO,GAAGN,8BAA8B,CAACE,OAAD,CAA9C;EACA,MAAMK,KAAK,GAAG,CAACC,MAAM,CAACC,KAAR,EAAe;IAAEC,eAAe,EAAEP,MAAM,CAACQ;EAA1B,CAAf,CAAd;;EAEA,IAAIP,aAAJ,EAAmB;IACjB,oBAAO,oBAAC,IAAD;MAAM,cAAc,EAAEG,KAAtB;MAA6B,IAAI,EAAE,gBAAnC;MAAqD,IAAI,EAAE,EAA3D;MAA+D,KAAK,EAAEJ,MAAM,CAACS;IAA7E,EAAP;EACD;;EAED,oBACE,oBAAC,KAAD;IACE,MAAM,EAAE;MAAEC,GAAG,EAAEP;IAAP,CADV;IAEE,KAAK,EAAEC,KAFT;IAGE,UAAU,EAAE,OAHd;IAIE,YAAY,EAAE,QAJhB;IAKE,OAAO,EAAE,MAAMF,gBAAgB,CAAC,IAAD;EALjC,EADF;AASD,CApBD;;AAsBA,MAAMG,MAAM,GAAGV,gBAAgB,CAAC;EAC9BW,KAAK,EAAE;IACLK,KAAK,EAAE,GADF;IAELC,QAAQ,EAAE,GAFL;IAGLC,MAAM,EAAE,GAHH;IAILC,YAAY,EAAE;EAJT;AADuB,CAAD,CAA/B;AASA,eAAehB,gBAAf"}
1
+ {"version":3,"names":["React","useState","Icon","Image","createStyleSheet","useUIKitTheme","getAvailableUriFromFileMessage","ImageFileMessage","message","colors","imageNotFound","setImageNotFound","fileUrl","style","styles","image","backgroundColor","onBackground04","onBackground02","uri","width","maxWidth","height","borderRadius"],"sources":["ImageFileMessage.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport type { FileMessageProps } from './index';\n\nconst ImageFileMessage = ({ message }: FileMessageProps) => {\n const { colors } = useUIKitTheme();\n const [imageNotFound, setImageNotFound] = useState(false);\n\n const fileUrl = getAvailableUriFromFileMessage(message);\n const style = [styles.image, { backgroundColor: colors.onBackground04 }];\n\n if (imageNotFound) {\n return <Icon containerStyle={style} icon={'thumbnail-none'} size={48} color={colors.onBackground02} />;\n }\n\n return (\n <Image\n source={{ uri: fileUrl }}\n style={style}\n resizeMode={'cover'}\n resizeMethod={'resize'}\n onError={() => setImageNotFound(true)}\n />\n );\n};\n\nconst styles = createStyleSheet({\n image: {\n width: 240,\n maxWidth: 240,\n height: 160,\n borderRadius: 16,\n },\n});\n\nexport default ImageFileMessage;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAEA,SAASC,IAAT,EAAeC,KAAf,EAAsBC,gBAAtB,EAAwCC,aAAxC,QAA6D,yCAA7D;AACA,SAASC,8BAAT,QAA+C,uBAA/C;;AAIA,MAAMC,gBAAgB,GAAG,QAAmC;EAAA,IAAlC;IAAEC;EAAF,CAAkC;EAC1D,MAAM;IAAEC;EAAF,IAAaJ,aAAa,EAAhC;EACA,MAAM,CAACK,aAAD,EAAgBC,gBAAhB,IAAoCV,QAAQ,CAAC,KAAD,CAAlD;EAEA,MAAMW,OAAO,GAAGN,8BAA8B,CAACE,OAAD,CAA9C;EACA,MAAMK,KAAK,GAAG,CAACC,MAAM,CAACC,KAAR,EAAe;IAAEC,eAAe,EAAEP,MAAM,CAACQ;EAA1B,CAAf,CAAd;;EAEA,IAAIP,aAAJ,EAAmB;IACjB,oBAAO,oBAAC,IAAD;MAAM,cAAc,EAAEG,KAAtB;MAA6B,IAAI,EAAE,gBAAnC;MAAqD,IAAI,EAAE,EAA3D;MAA+D,KAAK,EAAEJ,MAAM,CAACS;IAA7E,EAAP;EACD;;EAED,oBACE,oBAAC,KAAD;IACE,MAAM,EAAE;MAAEC,GAAG,EAAEP;IAAP,CADV;IAEE,KAAK,EAAEC,KAFT;IAGE,UAAU,EAAE,OAHd;IAIE,YAAY,EAAE,QAJhB;IAKE,OAAO,EAAE,MAAMF,gBAAgB,CAAC,IAAD;EALjC,EADF;AASD,CApBD;;AAsBA,MAAMG,MAAM,GAAGV,gBAAgB,CAAC;EAC9BW,KAAK,EAAE;IACLK,KAAK,EAAE,GADF;IAELC,QAAQ,EAAE,GAFL;IAGLC,MAAM,EAAE,GAHH;IAILC,YAAY,EAAE;EAJT;AADuB,CAAD,CAA/B;AASA,eAAehB,gBAAf"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","getFileExtension","getFileType","BaseFileMessage","ImageFileMessage","FileMessage","props","fileType","message","type","name","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendbirdFileMessage, getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport type { MessageRendererInterface } from '../index';\nimport BaseFileMessage from './BaseFileMessage';\nimport ImageFileMessage from './ImageFileMessage';\n\nexport type FileMessageProps = MessageRendererInterface<SendbirdFileMessage>;\nconst FileMessage: React.FC<FileMessageProps> = (props) => {\n const fileType = getFileType(props.message.type || getFileExtension(props.message.name));\n\n if (fileType === 'image') return <ImageFileMessage {...props} />;\n return <BaseFileMessage {...props} type={fileType} />;\n};\n\nexport default React.memo(FileMessage);\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAA8BC,gBAA9B,EAAgDC,WAAhD,QAAmE,uBAAnE;AAGA,OAAOC,eAAP,MAA4B,mBAA5B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;;AAGA,MAAMC,WAAuC,GAAIC,KAAD,IAAW;EACzD,MAAMC,QAAQ,GAAGL,WAAW,CAACI,KAAK,CAACE,OAAN,CAAcC,IAAd,IAAsBR,gBAAgB,CAACK,KAAK,CAACE,OAAN,CAAcE,IAAf,CAAvC,CAA5B;EAEA,IAAIH,QAAQ,KAAK,OAAjB,EAA0B,oBAAO,oBAAC,gBAAD,EAAsBD,KAAtB,CAAP;EAC1B,oBAAO,oBAAC,eAAD,eAAqBA,KAArB;IAA4B,IAAI,EAAEC;EAAlC,GAAP;AACD,CALD;;AAOA,4BAAeP,KAAK,CAACW,IAAN,CAAWN,WAAX,CAAf"}
1
+ {"version":3,"names":["React","getFileExtension","getFileType","BaseFileMessage","ImageFileMessage","FileMessage","props","fileType","message","type","name","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendbirdFileMessage, getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport type { MessageRendererInterface } from '../index';\nimport BaseFileMessage from './BaseFileMessage';\nimport ImageFileMessage from './ImageFileMessage';\n\nexport type FileMessageProps = MessageRendererInterface<SendbirdFileMessage>;\nconst FileMessage = (props: FileMessageProps) => {\n const fileType = getFileType(props.message.type || getFileExtension(props.message.name));\n\n if (fileType === 'image') return <ImageFileMessage {...props} />;\n return <BaseFileMessage {...props} type={fileType} />;\n};\n\nexport default React.memo(FileMessage);\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAA8BC,gBAA9B,EAAgDC,WAAhD,QAAmE,uBAAnE;AAGA,OAAOC,eAAP,MAA4B,mBAA5B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;;AAGA,MAAMC,WAAW,GAAIC,KAAD,IAA6B;EAC/C,MAAMC,QAAQ,GAAGL,WAAW,CAACI,KAAK,CAACE,OAAN,CAAcC,IAAd,IAAsBR,gBAAgB,CAACK,KAAK,CAACE,OAAN,CAAcE,IAAf,CAAvC,CAA5B;EAEA,IAAIH,QAAQ,KAAK,OAAjB,EAA0B,oBAAO,oBAAC,gBAAD,EAAsBD,KAAtB,CAAP;EAC1B,oBAAO,oBAAC,eAAD,eAAqBA,KAArB;IAA4B,IAAI,EAAEC;EAAlC,GAAP;AACD,CALD;;AAOA,4BAAeP,KAAK,CAACW,IAAN,CAAWN,WAAX,CAAf"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","createStyleSheet","MessageContainer","children","styles","container","flexDirection","paddingHorizontal"],"sources":["MessageContainer.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\n\nconst MessageContainer: React.FC = ({ children }) => {\n return <View style={styles.container}>{children}</View>;\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'column',\n paddingHorizontal: 16,\n },\n});\n\nexport default MessageContainer;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,gBAAT,QAAiC,yCAAjC;;AAEA,MAAMC,gBAA0B,GAAG,QAAkB;EAAA,IAAjB;IAAEC;EAAF,CAAiB;EACnD,oBAAO,oBAAC,IAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,GAAgCF,QAAhC,CAAP;AACD,CAFD;;AAIA,MAAMC,MAAM,GAAGH,gBAAgB,CAAC;EAC9BI,SAAS,EAAE;IACTC,aAAa,EAAE,QADN;IAETC,iBAAiB,EAAE;EAFV;AADmB,CAAD,CAA/B;AAOA,eAAeL,gBAAf"}
1
+ {"version":3,"names":["React","View","createStyleSheet","MessageContainer","children","styles","container","flexDirection","paddingHorizontal"],"sources":["MessageContainer.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\n\nconst MessageContainer = ({ children }: React.PropsWithChildren) => {\n return <View style={styles.container}>{children}</View>;\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'column',\n paddingHorizontal: 16,\n },\n});\n\nexport default MessageContainer;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,gBAAT,QAAiC,yCAAjC;;AAEA,MAAMC,gBAAgB,GAAG,QAA2C;EAAA,IAA1C;IAAEC;EAAF,CAA0C;EAClE,oBAAO,oBAAC,IAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,GAAgCF,QAAhC,CAAP;AACD,CAFD;;AAIA,MAAMC,MAAM,GAAGH,gBAAgB,CAAC;EAC9BI,SAAS,EAAE;IACTC,aAAa,EAAE,QADN;IAETC,iBAAiB,EAAE;EAFV;AADmB,CAAD,CAA/B;AAOA,eAAeL,gBAAf"}
@@ -1 +1 @@
1
- {"version":3,"names":["isSameDay","React","View","Text","createStyleSheet","useUIKitTheme","useLocalization","MessageDateSeparator","message","prevMessage","STRINGS","colors","sameDay","createdAt","styles","container","view","backgroundColor","ui","dateSeparator","default","none","background","text","GROUP_CHANNEL","LIST_DATE_SEPARATOR","Date","alignItems","marginVertical","borderRadius","paddingVertical","paddingHorizontal"],"sources":["MessageDateSeparator.tsx"],"sourcesContent":["import isSameDay from 'date-fns/isSameDay';\nimport React from 'react';\nimport { View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n};\n\nconst MessageDateSeparator: React.FC<Props> = ({ message, prevMessage }) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const sameDay = isSameDay(message.createdAt, prevMessage?.createdAt ?? 0);\n if (sameDay) return null;\n return (\n <View style={styles.container}>\n <View style={[styles.view, { backgroundColor: colors.ui.dateSeparator.default.none.background }]}>\n <Text caption1 color={colors.ui.dateSeparator.default.none.text}>\n {STRINGS.GROUP_CHANNEL.LIST_DATE_SEPARATOR(new Date(message.createdAt))}\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n alignItems: 'center',\n marginVertical: 16,\n },\n view: {\n borderRadius: 10,\n paddingVertical: 4,\n paddingHorizontal: 10,\n },\n});\n\nexport default MessageDateSeparator;\n"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,oBAAtB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,IAAT,EAAeC,gBAAf,EAAiCC,aAAjC,QAAsD,yCAAtD;AAGA,SAASC,eAAT,QAAgC,wBAAhC;;AAOA,MAAMC,oBAAqC,GAAG,QAA8B;EAAA,IAA7B;IAAEC,OAAF;IAAWC;EAAX,CAA6B;EAC1E,MAAM;IAAEC;EAAF,IAAcJ,eAAe,EAAnC;EACA,MAAM;IAAEK;EAAF,IAAaN,aAAa,EAAhC;EACA,MAAMO,OAAO,GAAGZ,SAAS,CAACQ,OAAO,CAACK,SAAT,EAAoB,CAAAJ,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEI,SAAb,KAA0B,CAA9C,CAAzB;EACA,IAAID,OAAJ,EAAa,OAAO,IAAP;EACb,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAEE,MAAM,CAACC;EAApB,gBACE,oBAAC,IAAD;IAAM,KAAK,EAAE,CAACD,MAAM,CAACE,IAAR,EAAc;MAAEC,eAAe,EAAEN,MAAM,CAACO,EAAP,CAAUC,aAAV,CAAwBC,OAAxB,CAAgCC,IAAhC,CAAqCC;IAAxD,CAAd;EAAb,gBACE,oBAAC,IAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEX,MAAM,CAACO,EAAP,CAAUC,aAAV,CAAwBC,OAAxB,CAAgCC,IAAhC,CAAqCE;EAA3D,GACGb,OAAO,CAACc,aAAR,CAAsBC,mBAAtB,CAA0C,IAAIC,IAAJ,CAASlB,OAAO,CAACK,SAAjB,CAA1C,CADH,CADF,CADF,CADF;AASD,CAdD;;AAgBA,MAAMC,MAAM,GAAGV,gBAAgB,CAAC;EAC9BW,SAAS,EAAE;IACTY,UAAU,EAAE,QADH;IAETC,cAAc,EAAE;EAFP,CADmB;EAK9BZ,IAAI,EAAE;IACJa,YAAY,EAAE,EADV;IAEJC,eAAe,EAAE,CAFb;IAGJC,iBAAiB,EAAE;EAHf;AALwB,CAAD,CAA/B;AAYA,eAAexB,oBAAf"}
1
+ {"version":3,"names":["isSameDay","React","View","Text","createStyleSheet","useUIKitTheme","useLocalization","MessageDateSeparator","message","prevMessage","STRINGS","colors","sameDay","createdAt","styles","container","view","backgroundColor","ui","dateSeparator","default","none","background","text","GROUP_CHANNEL","LIST_DATE_SEPARATOR","Date","alignItems","marginVertical","borderRadius","paddingVertical","paddingHorizontal"],"sources":["MessageDateSeparator.tsx"],"sourcesContent":["import isSameDay from 'date-fns/isSameDay';\nimport React from 'react';\nimport { View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n};\n\nconst MessageDateSeparator = ({ message, prevMessage }: Props) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const sameDay = isSameDay(message.createdAt, prevMessage?.createdAt ?? 0);\n if (sameDay) return null;\n return (\n <View style={styles.container}>\n <View style={[styles.view, { backgroundColor: colors.ui.dateSeparator.default.none.background }]}>\n <Text caption1 color={colors.ui.dateSeparator.default.none.text}>\n {STRINGS.GROUP_CHANNEL.LIST_DATE_SEPARATOR(new Date(message.createdAt))}\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n alignItems: 'center',\n marginVertical: 16,\n },\n view: {\n borderRadius: 10,\n paddingVertical: 4,\n paddingHorizontal: 10,\n },\n});\n\nexport default MessageDateSeparator;\n"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,oBAAtB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,IAAT,EAAeC,gBAAf,EAAiCC,aAAjC,QAAsD,yCAAtD;AAGA,SAASC,eAAT,QAAgC,wBAAhC;;AAOA,MAAMC,oBAAoB,GAAG,QAAqC;EAAA,IAApC;IAAEC,OAAF;IAAWC;EAAX,CAAoC;EAChE,MAAM;IAAEC;EAAF,IAAcJ,eAAe,EAAnC;EACA,MAAM;IAAEK;EAAF,IAAaN,aAAa,EAAhC;EACA,MAAMO,OAAO,GAAGZ,SAAS,CAACQ,OAAO,CAACK,SAAT,EAAoB,CAAAJ,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEI,SAAb,KAA0B,CAA9C,CAAzB;EACA,IAAID,OAAJ,EAAa,OAAO,IAAP;EACb,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAEE,MAAM,CAACC;EAApB,gBACE,oBAAC,IAAD;IAAM,KAAK,EAAE,CAACD,MAAM,CAACE,IAAR,EAAc;MAAEC,eAAe,EAAEN,MAAM,CAACO,EAAP,CAAUC,aAAV,CAAwBC,OAAxB,CAAgCC,IAAhC,CAAqCC;IAAxD,CAAd;EAAb,gBACE,oBAAC,IAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEX,MAAM,CAACO,EAAP,CAAUC,aAAV,CAAwBC,OAAxB,CAAgCC,IAAhC,CAAqCE;EAA3D,GACGb,OAAO,CAACc,aAAR,CAAsBC,mBAAtB,CAA0C,IAAIC,IAAJ,CAASlB,OAAO,CAACK,SAAjB,CAA1C,CADH,CADF,CADF,CADF;AASD,CAdD;;AAgBA,MAAMC,MAAM,GAAGV,gBAAgB,CAAC;EAC9BW,SAAS,EAAE;IACTY,UAAU,EAAE,QADH;IAETC,cAAc,EAAE;EAFP,CADmB;EAK9BZ,IAAI,EAAE;IACJa,YAAY,EAAE,EADV;IAEJC,eAAe,EAAE,CAFb;IAGJC,iBAAiB,EAAE;EAHf;AALwB,CAAD,CAA/B;AAYA,eAAexB,oBAAf"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","Avatar","createStyleSheet","MessageIncomingAvatar","message","grouping","styles","avatar","isFileMessage","isUserMessage","sender","profileUrl","width","marginRight"],"sources":["MessageIncomingAvatar.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Avatar, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\ntype Props = { message: SendbirdMessage; grouping: boolean };\nconst MessageIncomingAvatar: React.FC<Props> = ({ message, grouping }) => {\n if (grouping) return <View style={styles.avatar} />;\n return (\n <View style={styles.avatar}>\n {(message.isFileMessage() || message.isUserMessage()) && <Avatar size={26} uri={message.sender?.profileUrl} />}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n avatar: {\n width: 26,\n marginRight: 12,\n },\n});\n\nexport default MessageIncomingAvatar;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,MAAT,EAAiBC,gBAAjB,QAAyC,yCAAzC;;AAIA,MAAMC,qBAAsC,GAAG,QAA2B;EAAA;;EAAA,IAA1B;IAAEC,OAAF;IAAWC;EAAX,CAA0B;EACxE,IAAIA,QAAJ,EAAc,oBAAO,oBAAC,IAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,EAAP;EACd,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAED,MAAM,CAACC;EAApB,GACG,CAACH,OAAO,CAACI,aAAR,MAA2BJ,OAAO,CAACK,aAAR,EAA5B,kBAAwD,oBAAC,MAAD;IAAQ,IAAI,EAAE,EAAd;IAAkB,GAAG,qBAAEL,OAAO,CAACM,MAAV,oDAAE,gBAAgBC;EAAvC,EAD3D,CADF;AAKD,CAPD;;AASA,MAAML,MAAM,GAAGJ,gBAAgB,CAAC;EAC9BK,MAAM,EAAE;IACNK,KAAK,EAAE,EADD;IAENC,WAAW,EAAE;EAFP;AADsB,CAAD,CAA/B;AAOA,eAAeV,qBAAf"}
1
+ {"version":3,"names":["React","View","Avatar","createStyleSheet","MessageIncomingAvatar","message","grouping","styles","avatar","isFileMessage","isUserMessage","sender","profileUrl","width","marginRight"],"sources":["MessageIncomingAvatar.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Avatar, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\ntype Props = {\n message: SendbirdMessage;\n grouping: boolean;\n};\nconst MessageIncomingAvatar = ({ message, grouping }: Props) => {\n if (grouping) return <View style={styles.avatar} />;\n return (\n <View style={styles.avatar}>\n {(message.isFileMessage() || message.isUserMessage()) && <Avatar size={26} uri={message.sender?.profileUrl} />}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n avatar: {\n width: 26,\n marginRight: 12,\n },\n});\n\nexport default MessageIncomingAvatar;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,MAAT,EAAiBC,gBAAjB,QAAyC,yCAAzC;;AAOA,MAAMC,qBAAqB,GAAG,QAAkC;EAAA;;EAAA,IAAjC;IAAEC,OAAF;IAAWC;EAAX,CAAiC;EAC9D,IAAIA,QAAJ,EAAc,oBAAO,oBAAC,IAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,EAAP;EACd,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAED,MAAM,CAACC;EAApB,GACG,CAACH,OAAO,CAACI,aAAR,MAA2BJ,OAAO,CAACK,aAAR,EAA5B,kBAAwD,oBAAC,MAAD;IAAQ,IAAI,EAAE,EAAd;IAAkB,GAAG,qBAAEL,OAAO,CAACM,MAAV,oDAAE,gBAAgBC;EAAvC,EAD3D,CADF;AAKD,CAPD;;AASA,MAAML,MAAM,GAAGJ,gBAAgB,CAAC;EAC9BK,MAAM,EAAE;IACNK,KAAK,EAAE,EADD;IAENC,WAAW,EAAE;EAFP;AADsB,CAAD,CAA/B;AAOA,eAAeV,qBAAf"}