@sendbird/uikit-react-native 3.7.3 → 3.7.4

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 (122) hide show
  1. package/lib/commonjs/components/ChannelInput/SendInput.js +2 -1
  2. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  3. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +33 -23
  4. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -1
  5. package/lib/commonjs/components/ChannelInput/index.js +11 -5
  6. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  7. package/lib/commonjs/components/ChannelMessageList/index.js +6 -1
  8. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  9. package/lib/commonjs/components/ChannelThreadMessageList/index.js +6 -1
  10. package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -1
  11. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +1 -1
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  13. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +7 -3
  14. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  15. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js +7 -3
  16. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -1
  17. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +1 -1
  18. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -1
  19. package/lib/commonjs/containers/SendbirdUIKitContainer.js +0 -1
  20. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  21. package/lib/commonjs/contexts/PlatformServiceCtx.js +2 -1
  22. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  23. package/lib/commonjs/contexts/SBUHandlersCtx.js.map +1 -1
  24. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +2 -2
  25. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  26. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +8 -4
  27. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  28. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +1 -1
  29. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -1
  30. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +8 -3
  31. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
  32. package/lib/commonjs/fragments/createGroupChannelFragment.js +3 -2
  33. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  34. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +3 -2
  35. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -1
  36. package/lib/commonjs/hooks/useConnection.js +2 -2
  37. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  38. package/lib/commonjs/hooks/usePushTokenRegistration.js +22 -4
  39. package/lib/commonjs/hooks/usePushTokenRegistration.js.map +1 -1
  40. package/lib/commonjs/platform/createPlayerService.expo.js +8 -2
  41. package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -1
  42. package/lib/commonjs/platform/createPlayerService.native.js +9 -3
  43. package/lib/commonjs/platform/createPlayerService.native.js.map +1 -1
  44. package/lib/commonjs/platform/createRecorderService.native.js +8 -2
  45. package/lib/commonjs/platform/createRecorderService.native.js.map +1 -1
  46. package/lib/commonjs/version.js +1 -1
  47. package/lib/commonjs/version.js.map +1 -1
  48. package/lib/module/components/ChannelInput/SendInput.js +2 -1
  49. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  50. package/lib/module/components/ChannelInput/VoiceMessageInput.js +34 -24
  51. package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -1
  52. package/lib/module/components/ChannelInput/index.js +12 -6
  53. package/lib/module/components/ChannelInput/index.js.map +1 -1
  54. package/lib/module/components/ChannelMessageList/index.js +6 -1
  55. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  56. package/lib/module/components/ChannelThreadMessageList/index.js +6 -1
  57. package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -1
  58. package/lib/module/components/GroupChannelMessageRenderer/index.js +1 -1
  59. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  60. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +8 -4
  61. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  62. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js +7 -3
  63. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -1
  64. package/lib/module/components/ThreadParentMessageRenderer/index.js +1 -1
  65. package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -1
  66. package/lib/module/containers/SendbirdUIKitContainer.js +0 -1
  67. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  68. package/lib/module/contexts/PlatformServiceCtx.js +2 -1
  69. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  70. package/lib/module/contexts/SBUHandlersCtx.js.map +1 -1
  71. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +2 -2
  72. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  73. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +8 -4
  74. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  75. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +1 -1
  76. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -1
  77. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +8 -3
  78. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
  79. package/lib/module/fragments/createGroupChannelFragment.js +3 -2
  80. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  81. package/lib/module/fragments/createGroupChannelThreadFragment.js +3 -2
  82. package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -1
  83. package/lib/module/hooks/useConnection.js +2 -2
  84. package/lib/module/hooks/useConnection.js.map +1 -1
  85. package/lib/module/hooks/usePushTokenRegistration.js +22 -4
  86. package/lib/module/hooks/usePushTokenRegistration.js.map +1 -1
  87. package/lib/module/platform/createPlayerService.expo.js +9 -3
  88. package/lib/module/platform/createPlayerService.expo.js.map +1 -1
  89. package/lib/module/platform/createPlayerService.native.js +10 -4
  90. package/lib/module/platform/createPlayerService.native.js.map +1 -1
  91. package/lib/module/platform/createRecorderService.native.js +9 -3
  92. package/lib/module/platform/createRecorderService.native.js.map +1 -1
  93. package/lib/module/version.js +1 -1
  94. package/lib/module/version.js.map +1 -1
  95. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  96. package/lib/typescript/src/contexts/SBUHandlersCtx.d.ts +1 -1
  97. package/lib/typescript/src/version.d.ts +1 -1
  98. package/package.json +5 -5
  99. package/src/components/ChannelInput/SendInput.tsx +2 -1
  100. package/src/components/ChannelInput/VoiceMessageInput.tsx +40 -24
  101. package/src/components/ChannelInput/index.tsx +16 -6
  102. package/src/components/ChannelMessageList/index.tsx +5 -1
  103. package/src/components/ChannelThreadMessageList/index.tsx +5 -1
  104. package/src/components/GroupChannelMessageRenderer/index.tsx +1 -1
  105. package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +10 -5
  106. package/src/components/ReactionBottomSheets/ReactionListBottomSheet.tsx +7 -4
  107. package/src/components/ThreadParentMessageRenderer/index.tsx +1 -1
  108. package/src/containers/SendbirdUIKitContainer.tsx +0 -1
  109. package/src/contexts/PlatformServiceCtx.tsx +2 -1
  110. package/src/contexts/SBUHandlersCtx.tsx +1 -1
  111. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +2 -2
  112. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +8 -4
  113. package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +1 -1
  114. package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +7 -3
  115. package/src/fragments/createGroupChannelFragment.tsx +3 -2
  116. package/src/fragments/createGroupChannelThreadFragment.tsx +3 -2
  117. package/src/hooks/useConnection.ts +8 -2
  118. package/src/hooks/usePushTokenRegistration.ts +22 -4
  119. package/src/platform/createPlayerService.expo.tsx +9 -3
  120. package/src/platform/createPlayerService.native.tsx +10 -4
  121. package/src/platform/createRecorderService.native.tsx +9 -3
  122. package/src/version.ts +1 -1
@@ -10,6 +10,7 @@ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
10
10
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
11
11
  var _uikitUtils = require("@sendbird/uikit-utils");
12
12
  var _useContext = require("../../hooks/useContext");
13
+ var _SBUUtils = _interopRequireDefault(require("../../libs/SBUUtils"));
13
14
  var _ReactionAddons = require("../ReactionAddons");
14
15
  var _ThreadChatFlatList = _interopRequireDefault(require("../ThreadChatFlatList"));
15
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -188,9 +189,13 @@ const useCreateMessagePressActions = _ref3 => {
188
189
  if (message.isFileMessage()) {
189
190
  const fileType = (0, _uikitUtils.getFileType)(message.type || (0, _uikitUtils.getFileExtension)(message.name));
190
191
  if (['image', 'video', 'audio'].includes(fileType)) {
192
+ var _handlers$onOpenFileU;
191
193
  onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage(message), (0, _uikitUtils.getAvailableUriFromFileMessage)(message));
194
+ (_handlers$onOpenFileU = handlers.onOpenFileURL) === null || _handlers$onOpenFileU === void 0 ? void 0 : _handlers$onOpenFileU.call(handlers, message.url);
195
+ } else {
196
+ const openFile = handlers.onOpenFileURL ?? _SBUUtils.default.openURL;
197
+ openFile(message.url);
192
198
  }
193
- handlers.onOpenFileURL(message.url);
194
199
  }
195
200
  };
196
201
  const openSheetForFailedMessage = message => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_ReactionAddons","_ThreadChatFlatList","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelThreadMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","handlers","useSBUHandlers","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","getAvailableUriFromFileMessage","onOpenFileURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isVoiceMessage","configs","uikitWithAppInfo","groupChannel","HeaderComponent","shouldRenderReaction","isGroupChannel","isSuper","enableReactionsSupergroup","enableReactions","_ref5","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport { ReactionAddons } from '../ReactionAddons';\nimport ThreadChatFlatList from '../ThreadChatFlatList';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelThreadMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelThreadMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelThreadMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelThreadMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelThreadMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index - 1],\n nextMessage: messages[index + 1],\n onPress,\n onLongPress,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ThreadChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelThreadMessageListProps<T>,\n 'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n }\n handlers.onOpenFileURL(message.url);\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelThreadMessageList) as typeof ChannelThreadMessageList;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ReactionAddons","_ThreadChatFlatList","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelThreadMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","handlers","useSBUHandlers","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","_handlers$onOpenFileU","getAvailableUriFromFileMessage","onOpenFileURL","openFile","SBUUtils","openURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isVoiceMessage","configs","uikitWithAppInfo","groupChannel","HeaderComponent","shouldRenderReaction","isGroupChannel","isSuper","enableReactionsSupergroup","enableReactions","_ref5","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { ReactionAddons } from '../ReactionAddons';\nimport ThreadChatFlatList from '../ThreadChatFlatList';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelThreadMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelThreadMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelThreadMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelThreadMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelThreadMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index - 1],\n nextMessage: messages[index + 1],\n onPress,\n onLongPress,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ThreadChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelThreadMessageListProps<T>,\n 'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n handlers.onOpenFileURL?.(message.url);\n } else {\n const openFile = handlers.onOpenFileURL ?? SBUUtils.openURL;\n openFile(message.url);\n }\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelThreadMessageList) as typeof ChannelThreadMessageList;\n"],"mappings":"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"}
@@ -287,7 +287,7 @@ const GroupChannelMessageRenderer = _ref => {
287
287
  onUnsubscribeStatus: voiceMessageStatusManager.unsubscribe,
288
288
  onUnmount: () => {
289
289
  if ((0, _uikitUtils.isVoiceMessage)(message) && playerService.uri === message.url) {
290
- resetPlayer();
290
+ resetPlayer().catch(_ => {});
291
291
  }
292
292
  }
293
293
  }, messageProps));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_constants","_moduleContext","_useContext","_types","_ReactionAddons","_GroupChannelMessageDateSeparator","_interopRequireDefault","_GroupChannelMessageFocusAnimation","_GroupChannelMessageOutgoingStatus","_GroupChannelMessageParentMessage","_GroupChannelMessageReplyInfo","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","onReplyInThreadMessage","enableMessageGrouping","focused","prevMessage","nextMessage","hideParentMessage","handlers","useSBUHandlers","playerUnsubscribes","useRef","palette","useUIKitTheme","sbOptions","currentUser","mentionManager","voiceMessageStatusManager","useSendbirdChat","STRINGS","useLocalization","mediaService","playerService","usePlatformService","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","uikit","groupChannel","replyType","shouldRenderParentMessage","variant","isMyMessage","userId","reactionChildren","useIIFE","configs","uikitWithAppInfo","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","reactions","createElement","ReactionAddons","Message","replyInfo","threadInfo","replyCount","resetPlayer","current","forEach","unsubscribe","reset","messageProps","onPressURL","url","onOpenURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","isVoiceMessage","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref2","stopped","setCurrentTime","channelUrl","messageId","prevState","forState","addStateListener","status","push","seek","groupedWithPrev","groupedWithNext","children","parentMessage","childMessage","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref3","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","Text","_messageProps$onPress","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","getMessageType","GroupChannelMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","initialCurrentTime","getCurrentTime","onSubscribeStatus","subscribe","onUnsubscribeStatus","onUnmount","Unknown","messageGap","isAdminMessage","Box","paddingHorizontal","marginBottom","GroupChannelTypingIndicatorBubble","publish","useContext","GroupChannelContexts","PubSub","typingUsers","TypingIndicator","shouldRenderBubble","enableTypingIndicator","typingIndicatorTypes","TypingIndicatorType","Bubble","useEffect","type","marginTop","TypingIndicatorBubble","exports","_default","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport {\n Box,\n GroupChannelMessage,\n Text,\n TypingIndicatorBubble,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../hooks/useContext';\nimport { TypingIndicatorType } from '../../types';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\nimport GroupChannelMessageReplyInfo from './GroupChannelMessageReplyInfo';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n onReplyInThreadMessage,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n hideParentMessage,\n}) => {\n const handlers = useSBUHandlers();\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager, voiceMessageStatusManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService, playerService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n sbOptions.uikit.groupChannel.channel.replyType === 'thread',\n shouldRenderParentMessage(message, hideParentMessage),\n );\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const reactionChildren = useIIFE(() => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (\n shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const replyInfo = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType !== 'thread') return null;\n if (!channel || !message.threadInfo || !message.threadInfo.replyCount) return null;\n return <GroupChannelMessageReplyInfo channel={channel} message={message} onPress={onReplyInThreadMessage} />;\n });\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => handlers.onOpenURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {\n if (playerService.uri === message.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(message.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n voiceMessageStatusManager.setCurrentTime(message.channelUrl, message.messageId, currentTime);\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(message.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n replyInfo: replyInfo,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message, hideParentMessage) ? (\n <GroupChannelMessageParentMessage\n channel={channel}\n message={message.parentMessage}\n variant={variant}\n childMessage={message}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.voice': {\n return (\n <GroupChannelMessage.VoiceFile\n message={message as SendbirdFileMessage}\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n initialCurrentTime={voiceMessageStatusManager.getCurrentTime(message.channelUrl, message.messageId)}\n onSubscribeStatus={voiceMessageStatusManager.subscribe}\n onUnsubscribeStatus={voiceMessageStatusManager.unsubscribe}\n onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer();\n }\n }}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage, hideParentMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport const GroupChannelTypingIndicatorBubble = () => {\n const { sbOptions } = useSendbirdChat();\n const { publish } = useContext(GroupChannelContexts.PubSub);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n\n const shouldRenderBubble = useIIFE(() => {\n if (typingUsers.length === 0) return false;\n if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;\n if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;\n return true;\n });\n\n useEffect(() => {\n if (shouldRenderBubble) publish({ type: 'TYPING_BUBBLE_RENDERED' });\n }, [shouldRenderBubble]);\n\n if (!shouldRenderBubble) return null;\n return (\n <Box paddingHorizontal={16} marginTop={4} marginBottom={16}>\n <TypingIndicatorBubble typingUsers={typingUsers} />\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_constants","_moduleContext","_useContext","_types","_ReactionAddons","_GroupChannelMessageDateSeparator","_interopRequireDefault","_GroupChannelMessageFocusAnimation","_GroupChannelMessageOutgoingStatus","_GroupChannelMessageParentMessage","_GroupChannelMessageReplyInfo","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","onReplyInThreadMessage","enableMessageGrouping","focused","prevMessage","nextMessage","hideParentMessage","handlers","useSBUHandlers","playerUnsubscribes","useRef","palette","useUIKitTheme","sbOptions","currentUser","mentionManager","voiceMessageStatusManager","useSendbirdChat","STRINGS","useLocalization","mediaService","playerService","usePlatformService","groupWithPrev","groupWithNext","calcMessageGrouping","Boolean","uikit","groupChannel","replyType","shouldRenderParentMessage","variant","isMyMessage","userId","reactionChildren","useIIFE","configs","uikitWithAppInfo","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","reactions","createElement","ReactionAddons","Message","replyInfo","threadInfo","replyCount","resetPlayer","current","forEach","unsubscribe","reset","messageProps","onPressURL","url","onOpenURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","isVoiceMessage","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref2","stopped","setCurrentTime","channelUrl","messageId","prevState","forState","addStateListener","status","push","seek","groupedWithPrev","groupedWithNext","children","parentMessage","childMessage","strings","edited","GROUP_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref3","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","Text","_messageProps$onPress","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","getMessageType","GroupChannelMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","initialCurrentTime","getCurrentTime","onSubscribeStatus","subscribe","onUnsubscribeStatus","onUnmount","catch","_","Unknown","messageGap","isAdminMessage","Box","paddingHorizontal","marginBottom","GroupChannelTypingIndicatorBubble","publish","useContext","GroupChannelContexts","PubSub","typingUsers","TypingIndicator","shouldRenderBubble","enableTypingIndicator","typingIndicatorTypes","TypingIndicatorType","Bubble","useEffect","type","marginTop","TypingIndicatorBubble","exports","_default","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport {\n Box,\n GroupChannelMessage,\n Text,\n TypingIndicatorBubble,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSBUHandlers, useSendbirdChat } from '../../hooks/useContext';\nimport { TypingIndicatorType } from '../../types';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\nimport GroupChannelMessageReplyInfo from './GroupChannelMessageReplyInfo';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n onReplyInThreadMessage,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n hideParentMessage,\n}) => {\n const handlers = useSBUHandlers();\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager, voiceMessageStatusManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService, playerService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n sbOptions.uikit.groupChannel.channel.replyType === 'thread',\n shouldRenderParentMessage(message, hideParentMessage),\n );\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const reactionChildren = useIIFE(() => {\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n if (\n shouldRenderReaction(channel, channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const replyInfo = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType !== 'thread') return null;\n if (!channel || !message.threadInfo || !message.threadInfo.replyCount) return null;\n return <GroupChannelMessageReplyInfo channel={channel} message={message} onPress={onReplyInThreadMessage} />;\n });\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => handlers.onOpenURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {\n if (playerService.uri === message.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(message.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n voiceMessageStatusManager.setCurrentTime(message.channelUrl, message.messageId, currentTime);\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(message.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n replyInfo: replyInfo,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message, hideParentMessage) ? (\n <GroupChannelMessageParentMessage\n channel={channel}\n message={message.parentMessage}\n variant={variant}\n childMessage={message}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.voice': {\n return (\n <GroupChannelMessage.VoiceFile\n message={message as SendbirdFileMessage}\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n initialCurrentTime={voiceMessageStatusManager.getCurrentTime(message.channelUrl, message.messageId)}\n onSubscribeStatus={voiceMessageStatusManager.subscribe}\n onUnsubscribeStatus={voiceMessageStatusManager.unsubscribe}\n onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer().catch((_) => {});\n }\n }}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage, hideParentMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport const GroupChannelTypingIndicatorBubble = () => {\n const { sbOptions } = useSendbirdChat();\n const { publish } = useContext(GroupChannelContexts.PubSub);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n\n const shouldRenderBubble = useIIFE(() => {\n if (typingUsers.length === 0) return false;\n if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;\n if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;\n return true;\n });\n\n useEffect(() => {\n if (shouldRenderBubble) publish({ type: 'TYPING_BUBBLE_RENDERED' });\n }, [shouldRenderBubble]);\n\n if (!shouldRenderBubble) return null;\n return (\n <Box paddingHorizontal={16} marginTop={4} marginBottom={16}>\n <TypingIndicatorBubble typingUsers={typingUsers} />\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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"}
@@ -67,9 +67,13 @@ const BottomSheetReactionAddon = _ref => {
67
67
  const reactionUserIds = (message === null || message === void 0 ? void 0 : (_message$reactions = message.reactions) === null || _message$reactions === void 0 ? void 0 : (_message$reactions$fi = _message$reactions.find(it => it.key === key)) === null || _message$reactions$fi === void 0 ? void 0 : _message$reactions$fi.userIds) ?? [];
68
68
  const currentUserIdx = reactionUserIds.indexOf((currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ?? _constants.UNKNOWN_USER_ID);
69
69
  const reacted = currentUserIdx > -1;
70
- const onPress = () => {
71
- if (reacted) channel.deleteReaction(message, key);else channel.addReaction(message, key);
72
- onClose();
70
+ const onPress = async () => {
71
+ const action = reacted ? channel.deleteReaction : channel.addReaction;
72
+ await action(message, key).catch(error => {
73
+ _uikitUtils.Logger.warn('Failed to reaction', error);
74
+ }).finally(() => {
75
+ onClose();
76
+ });
73
77
  };
74
78
  return /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
75
79
  key: key,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitChatHooks","_uikitReactNativeFoundation","_uikitUtils","_constants","_useContext","obj","__esModule","default","BottomSheetReactionAddon","_ref","onClose","message","channel","emojiManager","currentUser","sdk","useSendbirdChat","updateReactionFocusedItem","openReactionList","useReaction","colors","useUIKitTheme","handlerId","useUniqHandlerId","left","right","useSafeAreaInsets","useChannelHandler","onReactionUpdated","eventChannel","event","url","messageId","msg","getMessage","includeReactions","channelUrl","channelType","emojiAll","allEmoji","slice","color","ui","reaction","createElement","View","style","styles","container","marginRight","marginLeft","map","_ref2","_message$reactions","_message$reactions$fi","key","reactionUserIds","reactions","find","it","userIds","currentUserIdx","indexOf","userId","UNKNOWN_USER_ID","reacted","onPress","deleteReaction","addReaction","Pressable","_ref3","pressed","button","backgroundColor","selected","background","enabled","Image","source","uri","emoji","_ref4","Icon","icon","onBackground03","createStyleSheet","paddingTop","paddingBottom","paddingHorizontal","flexDirection","justifyContent","width","height","padding","borderRadius","_default","exports"],"sources":["BottomSheetReactionAddon.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type { BaseMessage } from '@sendbird/chat/message';\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdBaseChannel, SendbirdBaseMessage, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport { useReaction, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n onClose: () => Promise<void>;\n channel: SendbirdBaseChannel;\n message: SendbirdBaseMessage;\n};\nconst BottomSheetReactionAddon = ({ onClose, message, channel }: Props) => {\n const { emojiManager, currentUser, sdk } = useSendbirdChat();\n const { updateReactionFocusedItem, openReactionList } = useReaction();\n const { colors } = useUIKitTheme();\n const handlerId = useUniqHandlerId('BottomSheetReactionAddon');\n const { left, right } = useSafeAreaInsets();\n\n useChannelHandler(sdk, handlerId, {\n async onReactionUpdated(eventChannel, event) {\n if (channel?.url === eventChannel.url && event.messageId === message?.messageId) {\n const msg = (await sdk.message.getMessage({\n includeReactions: true,\n messageId: message.messageId,\n channelUrl: message.channelUrl,\n channelType: message.channelType,\n })) as null | BaseMessage;\n if (msg) updateReactionFocusedItem({ message: msg });\n }\n },\n });\n\n const emojiAll = emojiManager.allEmoji.slice(0, 5);\n const color = colors.ui.reaction.default;\n\n return (\n <View style={[styles.container, { marginRight: right, marginLeft: left }]}>\n {emojiAll.map(({ key, url }) => {\n const reactionUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n const currentUserIdx = reactionUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = currentUserIdx > -1;\n\n const onPress = () => {\n if (reacted) channel.deleteReaction(message, key);\n else channel.addReaction(message, key);\n onClose();\n };\n\n return (\n <Pressable\n key={key}\n onPress={onPress}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n );\n })}\n\n <Pressable\n onPress={async () => {\n await onClose();\n openReactionList({ channel, message });\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Icon icon={'emoji-more'} style={styles.emoji} color={colors.onBackground03} />\n </Pressable>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 12,\n paddingBottom: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default BottomSheetReactionAddon;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitChatHooks","_uikitReactNativeFoundation","_uikitUtils","_constants","_useContext","obj","__esModule","default","BottomSheetReactionAddon","_ref","onClose","message","channel","emojiManager","currentUser","sdk","useSendbirdChat","updateReactionFocusedItem","openReactionList","useReaction","colors","useUIKitTheme","handlerId","useUniqHandlerId","left","right","useSafeAreaInsets","useChannelHandler","onReactionUpdated","eventChannel","event","url","messageId","msg","getMessage","includeReactions","channelUrl","channelType","emojiAll","allEmoji","slice","color","ui","reaction","createElement","View","style","styles","container","marginRight","marginLeft","map","_ref2","_message$reactions","_message$reactions$fi","key","reactionUserIds","reactions","find","it","userIds","currentUserIdx","indexOf","userId","UNKNOWN_USER_ID","reacted","onPress","action","deleteReaction","addReaction","catch","error","Logger","warn","finally","Pressable","_ref3","pressed","button","backgroundColor","selected","background","enabled","Image","source","uri","emoji","_ref4","Icon","icon","onBackground03","createStyleSheet","paddingTop","paddingBottom","paddingHorizontal","flexDirection","justifyContent","width","height","padding","borderRadius","_default","exports"],"sources":["BottomSheetReactionAddon.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type { BaseMessage } from '@sendbird/chat/message';\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { Icon, Image, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, SendbirdBaseChannel, SendbirdBaseMessage, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport { useReaction, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n onClose: () => Promise<void>;\n channel: SendbirdBaseChannel;\n message: SendbirdBaseMessage;\n};\nconst BottomSheetReactionAddon = ({ onClose, message, channel }: Props) => {\n const { emojiManager, currentUser, sdk } = useSendbirdChat();\n const { updateReactionFocusedItem, openReactionList } = useReaction();\n const { colors } = useUIKitTheme();\n const handlerId = useUniqHandlerId('BottomSheetReactionAddon');\n const { left, right } = useSafeAreaInsets();\n\n useChannelHandler(sdk, handlerId, {\n async onReactionUpdated(eventChannel, event) {\n if (channel?.url === eventChannel.url && event.messageId === message?.messageId) {\n const msg = (await sdk.message.getMessage({\n includeReactions: true,\n messageId: message.messageId,\n channelUrl: message.channelUrl,\n channelType: message.channelType,\n })) as null | BaseMessage;\n if (msg) updateReactionFocusedItem({ message: msg });\n }\n },\n });\n\n const emojiAll = emojiManager.allEmoji.slice(0, 5);\n const color = colors.ui.reaction.default;\n\n return (\n <View style={[styles.container, { marginRight: right, marginLeft: left }]}>\n {emojiAll.map(({ key, url }) => {\n const reactionUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n const currentUserIdx = reactionUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = currentUserIdx > -1;\n\n const onPress = async () => {\n const action = reacted ? channel.deleteReaction : channel.addReaction;\n await action(message, key)\n .catch((error) => {\n Logger.warn('Failed to reaction', error);\n })\n .finally(() => {\n onClose();\n });\n };\n\n return (\n <Pressable\n key={key}\n onPress={onPress}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n );\n })}\n\n <Pressable\n onPress={async () => {\n await onClose();\n openReactionList({ channel, message });\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Icon icon={'emoji-more'} style={styles.emoji} color={colors.onBackground03} />\n </Pressable>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 12,\n paddingBottom: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default BottomSheetReactionAddon;\n"],"mappings":"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"}
@@ -8,6 +8,7 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
10
10
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
11
+ var _uikitUtils = require("@sendbird/uikit-utils");
11
12
  var _constants = require("../../constants");
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14
  const NUM_COLUMN = 6;
@@ -78,11 +79,14 @@ const ReactionListBottomSheet = _ref => {
78
79
  style: styles.emojiItem
79
80
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
80
81
  key: key,
81
- onPress: () => {
82
+ onPress: async () => {
82
83
  if (message && channel) {
83
- if (reacted) channel.deleteReaction(message, key);else channel.addReaction(message, key);
84
+ const action = reacted ? channel.deleteReaction : channel.addReaction;
85
+ action(message, key).catch(error => {
86
+ _uikitUtils.Logger.warn('Failed to reaction', error);
87
+ });
84
88
  }
85
- onClose();
89
+ await onClose();
86
90
  },
87
91
  style: _ref3 => {
88
92
  let {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_constants","obj","__esModule","default","NUM_COLUMN","ReactionListBottomSheet","_ref","visible","onClose","onDismiss","reactionCtx","chatCtx","width","useWindowDimensions","bottom","left","right","useSafeAreaInsets","colors","useUIKitTheme","currentUser","emojiManager","channel","message","color","ui","reaction","createElement","Modal","type","Boolean","backgroundStyle","styles","modal","View","style","container","paddingBottom","backgroundColor","dialog","none","background","paddingLeft","paddingHorizontal","paddingRight","FlatList","data","allEmoji","numColumns","keyExtractor","item","key","contentContainerStyle","flatlist","ItemSeparatorComponent","height","renderItem","_ref2","_message$reactions","_message$reactions$fi","url","reactedUserIds","reactions","find","it","userIds","idx","indexOf","userId","UNKNOWN_USER_ID","reacted","emojiItem","Pressable","onPress","deleteReaction","addReaction","_ref3","pressed","button","selected","enabled","Image","source","uri","emoji","createStyleSheet","overflow","borderTopLeftRadius","borderTopRightRadius","paddingTop","flexDirection","alignItems","justifyContent","padding","borderRadius","_default","exports"],"sources":["ReactionListBottomSheet.tsx"],"sourcesContent":["import React from 'react';\nimport { FlatList, Pressable, View, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { Image, Modal, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport type { ReactionBottomSheetProps } from './index';\n\nconst NUM_COLUMN = 6;\nconst ReactionListBottomSheet = ({ visible, onClose, onDismiss, reactionCtx, chatCtx }: ReactionBottomSheetProps) => {\n const { width } = useWindowDimensions();\n const { bottom, left, right } = useSafeAreaInsets();\n const { colors } = useUIKitTheme();\n\n const { currentUser, emojiManager } = chatCtx;\n const { channel, message } = reactionCtx;\n const color = colors.ui.reaction.default;\n\n return (\n <Modal\n type={'slide'}\n visible={Boolean(visible && channel && message)}\n onClose={onClose}\n onDismiss={onDismiss}\n backgroundStyle={styles.modal}\n >\n <View\n style={[\n styles.container,\n {\n width,\n paddingBottom: bottom,\n backgroundColor: colors.ui.dialog.default.none.background,\n paddingLeft: left + styles.container.paddingHorizontal,\n paddingRight: right + styles.container.paddingHorizontal,\n },\n ]}\n >\n <FlatList\n data={emojiManager.allEmoji}\n numColumns={NUM_COLUMN}\n keyExtractor={(item) => item.key}\n contentContainerStyle={styles.flatlist}\n ItemSeparatorComponent={() => <View style={{ height: 16 }} />}\n renderItem={({ item: { key, url } }) => {\n const reactedUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n\n const idx = reactedUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = idx > -1;\n\n return (\n <View style={styles.emojiItem}>\n <Pressable\n key={key}\n onPress={() => {\n if (message && channel) {\n if (reacted) channel.deleteReaction(message, key);\n else channel.addReaction(message, key);\n }\n onClose();\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n </View>\n );\n }}\n />\n </View>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n overflow: 'hidden',\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n paddingTop: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n },\n modal: {\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n flatlist: {\n width: '100%',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n emojiItem: {\n width: `${100 / NUM_COLUMN}%`,\n alignItems: 'center',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default ReactionListBottomSheet;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_constants","obj","__esModule","default","NUM_COLUMN","ReactionListBottomSheet","_ref","visible","onClose","onDismiss","reactionCtx","chatCtx","width","useWindowDimensions","bottom","left","right","useSafeAreaInsets","colors","useUIKitTheme","currentUser","emojiManager","channel","message","color","ui","reaction","createElement","Modal","type","Boolean","backgroundStyle","styles","modal","View","style","container","paddingBottom","backgroundColor","dialog","none","background","paddingLeft","paddingHorizontal","paddingRight","FlatList","data","allEmoji","numColumns","keyExtractor","item","key","contentContainerStyle","flatlist","ItemSeparatorComponent","height","renderItem","_ref2","_message$reactions","_message$reactions$fi","url","reactedUserIds","reactions","find","it","userIds","idx","indexOf","userId","UNKNOWN_USER_ID","reacted","emojiItem","Pressable","onPress","action","deleteReaction","addReaction","catch","error","Logger","warn","_ref3","pressed","button","selected","enabled","Image","source","uri","emoji","createStyleSheet","overflow","borderTopLeftRadius","borderTopRightRadius","paddingTop","flexDirection","alignItems","justifyContent","padding","borderRadius","_default","exports"],"sources":["ReactionListBottomSheet.tsx"],"sourcesContent":["import React from 'react';\nimport { FlatList, Pressable, View, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { Image, Modal, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { Logger } from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../../constants';\nimport type { ReactionBottomSheetProps } from './index';\n\nconst NUM_COLUMN = 6;\nconst ReactionListBottomSheet = ({ visible, onClose, onDismiss, reactionCtx, chatCtx }: ReactionBottomSheetProps) => {\n const { width } = useWindowDimensions();\n const { bottom, left, right } = useSafeAreaInsets();\n const { colors } = useUIKitTheme();\n\n const { currentUser, emojiManager } = chatCtx;\n const { channel, message } = reactionCtx;\n const color = colors.ui.reaction.default;\n\n return (\n <Modal\n type={'slide'}\n visible={Boolean(visible && channel && message)}\n onClose={onClose}\n onDismiss={onDismiss}\n backgroundStyle={styles.modal}\n >\n <View\n style={[\n styles.container,\n {\n width,\n paddingBottom: bottom,\n backgroundColor: colors.ui.dialog.default.none.background,\n paddingLeft: left + styles.container.paddingHorizontal,\n paddingRight: right + styles.container.paddingHorizontal,\n },\n ]}\n >\n <FlatList\n data={emojiManager.allEmoji}\n numColumns={NUM_COLUMN}\n keyExtractor={(item) => item.key}\n contentContainerStyle={styles.flatlist}\n ItemSeparatorComponent={() => <View style={{ height: 16 }} />}\n renderItem={({ item: { key, url } }) => {\n const reactedUserIds = message?.reactions?.find((it) => it.key === key)?.userIds ?? [];\n\n const idx = reactedUserIds.indexOf(currentUser?.userId ?? UNKNOWN_USER_ID);\n const reacted = idx > -1;\n\n return (\n <View style={styles.emojiItem}>\n <Pressable\n key={key}\n onPress={async () => {\n if (message && channel) {\n const action = reacted ? channel.deleteReaction : channel.addReaction;\n action(message, key).catch((error) => {\n Logger.warn('Failed to reaction', error);\n });\n }\n await onClose();\n }}\n style={({ pressed }) => [\n styles.button,\n { backgroundColor: reacted || pressed ? color.selected.background : color.enabled.background },\n ]}\n >\n <Image source={{ uri: url }} style={styles.emoji} />\n </Pressable>\n </View>\n );\n }}\n />\n </View>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n overflow: 'hidden',\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n paddingTop: 16,\n paddingHorizontal: 18,\n flexDirection: 'row',\n },\n modal: {\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n flatlist: {\n width: '100%',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n emojiItem: {\n width: `${100 / NUM_COLUMN}%`,\n alignItems: 'center',\n },\n button: {\n width: 44,\n height: 44,\n padding: 4,\n borderRadius: 8,\n },\n emoji: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default ReactionListBottomSheet;\n"],"mappings":"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"}
@@ -190,7 +190,7 @@ const ThreadParentMessageRenderer = props => {
190
190
  durationMetaArrayKey: _constants.VOICE_MESSAGE_META_ARRAY_DURATION_KEY,
191
191
  onUnmount: () => {
192
192
  if ((0, _uikitUtils.isVoiceMessage)(parentMessage) && playerService.uri === parentMessage.url) {
193
- resetPlayer();
193
+ resetPlayer().catch(_ => {});
194
194
  }
195
195
  }
196
196
  }, messageProps));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_constants","_useContext","_ThreadParentMessage","_interopRequireDefault","_ThreadParentMessageFile","_ThreadParentMessageFile2","_ThreadParentMessageFile3","_ThreadParentMessage2","_ThreadParentMessageUser","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","ThreadParentMessageRenderer","props","handlers","useSBUHandlers","playerUnsubscribes","useRef","sbOptions","currentUser","mentionManager","useSendbirdChat","palette","useUIKitTheme","mediaService","playerService","usePlatformService","parentMessage","resetPlayer","current","forEach","unsubscribe","reset","messageProps","onPressURL","url","onOpenURL","onToggleVoiceMessage","state","setState","isVoiceMessage","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref","stopped","prevState","forState","addStateListener","status","push","seek","userMessageProps","renderRegexTextChildren","message","shouldUseMentionedMessageTemplate","uikit","groupChannel","channel","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref2","_parentMessage$mentio","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","userId","mentionColor","isMyMessage","onBackgroundLight01","color","createElement","Text","onPress","_messageProps$onPress","onPressMentionedUser","onLongPress","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","getMessageType","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","durationMetaArrayKey","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","onUnmount","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { useRef } from 'react';\n\nimport { RegexTextPattern, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n type SendbirdUser,\n SendbirdUserMessage,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { usePlatformService, useSBUHandlers, useSendbirdChat } from './../../hooks/useContext';\nimport ThreadParentMessageFile from './ThreadParentMessage.file';\nimport ThreadParentMessageFileImage from './ThreadParentMessage.file.image';\nimport ThreadParentMessageFileVideo from './ThreadParentMessage.file.video';\nimport ThreadParentMessageFileVoice, { VoiceFileMessageState } from './ThreadParentMessage.file.voice';\nimport ThreadParentMessageUser from './ThreadParentMessage.user';\nimport ThreadParentMessageUserOg from './ThreadParentMessage.user.og';\n\nexport type ThreadParentMessageRendererProps<AdditionalProps = unknown> = {\n parentMessage: SendbirdUserMessage | SendbirdFileMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressURL?: (url: string) => void;\n onPressMentionedUser?: (mentionedUser?: SendbirdUser) => void;\n onToggleVoiceMessage?: (\n state: VoiceFileMessageState,\n setState: React.Dispatch<React.SetStateAction<VoiceFileMessageState>>,\n ) => Promise<void>;\n} & AdditionalProps;\n\nconst ThreadParentMessageRenderer = (props: ThreadParentMessageRendererProps) => {\n const handlers = useSBUHandlers();\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { sbOptions, currentUser, mentionManager } = useSendbirdChat();\n const { palette } = useUIKitTheme();\n const { mediaService, playerService } = usePlatformService();\n const parentMessage = props.parentMessage;\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const messageProps: ThreadParentMessageRendererProps = {\n onPressURL: (url) => handlers.onOpenURL(url),\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(parentMessage) && parentMessage.sendingStatus === 'succeeded') {\n if (playerService.uri === parentMessage.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(parentMessage.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(parentMessage.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n ...props,\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = parentMessage.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(parentMessage, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n switch (getMessageType(props.parentMessage)) {\n case 'user': {\n return <ThreadParentMessageUser {...userMessageProps} {...messageProps} />;\n }\n case 'user.opengraph': {\n return <ThreadParentMessageUserOg {...userMessageProps} {...messageProps} />;\n }\n case 'file':\n case 'file.audio': {\n return <ThreadParentMessageFile {...messageProps} />;\n }\n case 'file.video': {\n return (\n <ThreadParentMessageFileVideo\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.image': {\n return <ThreadParentMessageFileImage {...messageProps} />;\n }\n case 'file.voice': {\n return (\n <ThreadParentMessageFileVoice\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n onUnmount={() => {\n if (isVoiceMessage(parentMessage) && playerService.uri === parentMessage.url) {\n resetPlayer();\n }\n }}\n {...messageProps}\n />\n );\n }\n default: {\n return null;\n }\n }\n};\n\nexport default React.memo(ThreadParentMessageRenderer);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_constants","_useContext","_ThreadParentMessage","_interopRequireDefault","_ThreadParentMessageFile","_ThreadParentMessageFile2","_ThreadParentMessageFile3","_ThreadParentMessage2","_ThreadParentMessageUser","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","ThreadParentMessageRenderer","props","handlers","useSBUHandlers","playerUnsubscribes","useRef","sbOptions","currentUser","mentionManager","useSendbirdChat","palette","useUIKitTheme","mediaService","playerService","usePlatformService","parentMessage","resetPlayer","current","forEach","unsubscribe","reset","messageProps","onPressURL","url","onOpenURL","onToggleVoiceMessage","state","setState","isVoiceMessage","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref","stopped","prevState","forState","addStateListener","status","push","seek","userMessageProps","renderRegexTextChildren","message","shouldUseMentionedMessageTemplate","uikit","groupChannel","channel","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref2","_parentMessage$mentio","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","userId","mentionColor","isMyMessage","onBackgroundLight01","color","createElement","Text","onPress","_messageProps$onPress","onPressMentionedUser","onLongPress","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","getMessageType","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","durationMetaArrayKey","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","onUnmount","catch","_","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { useRef } from 'react';\n\nimport { RegexTextPattern, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n type SendbirdUser,\n SendbirdUserMessage,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { usePlatformService, useSBUHandlers, useSendbirdChat } from './../../hooks/useContext';\nimport ThreadParentMessageFile from './ThreadParentMessage.file';\nimport ThreadParentMessageFileImage from './ThreadParentMessage.file.image';\nimport ThreadParentMessageFileVideo from './ThreadParentMessage.file.video';\nimport ThreadParentMessageFileVoice, { VoiceFileMessageState } from './ThreadParentMessage.file.voice';\nimport ThreadParentMessageUser from './ThreadParentMessage.user';\nimport ThreadParentMessageUserOg from './ThreadParentMessage.user.og';\n\nexport type ThreadParentMessageRendererProps<AdditionalProps = unknown> = {\n parentMessage: SendbirdUserMessage | SendbirdFileMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressURL?: (url: string) => void;\n onPressMentionedUser?: (mentionedUser?: SendbirdUser) => void;\n onToggleVoiceMessage?: (\n state: VoiceFileMessageState,\n setState: React.Dispatch<React.SetStateAction<VoiceFileMessageState>>,\n ) => Promise<void>;\n} & AdditionalProps;\n\nconst ThreadParentMessageRenderer = (props: ThreadParentMessageRendererProps) => {\n const handlers = useSBUHandlers();\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { sbOptions, currentUser, mentionManager } = useSendbirdChat();\n const { palette } = useUIKitTheme();\n const { mediaService, playerService } = usePlatformService();\n const parentMessage = props.parentMessage;\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const messageProps: ThreadParentMessageRendererProps = {\n onPressURL: (url) => handlers.onOpenURL(url),\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(parentMessage) && parentMessage.sendingStatus === 'succeeded') {\n if (playerService.uri === parentMessage.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(parentMessage.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(parentMessage.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n ...props,\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = parentMessage.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(parentMessage, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n switch (getMessageType(props.parentMessage)) {\n case 'user': {\n return <ThreadParentMessageUser {...userMessageProps} {...messageProps} />;\n }\n case 'user.opengraph': {\n return <ThreadParentMessageUserOg {...userMessageProps} {...messageProps} />;\n }\n case 'file':\n case 'file.audio': {\n return <ThreadParentMessageFile {...messageProps} />;\n }\n case 'file.video': {\n return (\n <ThreadParentMessageFileVideo\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.image': {\n return <ThreadParentMessageFileImage {...messageProps} />;\n }\n case 'file.voice': {\n return (\n <ThreadParentMessageFileVoice\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n onUnmount={() => {\n if (isVoiceMessage(parentMessage) && playerService.uri === parentMessage.url) {\n resetPlayer().catch((_) => {});\n }\n }}\n {...messageProps}\n />\n );\n }\n default: {\n return null;\n }\n }\n};\n\nexport default React.memo(ThreadParentMessageRenderer);\n"],"mappings":"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"}
@@ -114,7 +114,6 @@ const SendbirdUIKitContainer = props => {
114
114
  };
115
115
  const sbuHandlers = {
116
116
  onOpenURL: _SBUUtils.default.openURL,
117
- onOpenFileURL: _SBUUtils.default.openURL,
118
117
  ...handlers
119
118
  };
120
119
  return /*#__PURE__*/_react.default.createElement(_SBUHandlersCtx.SBUHandlersProvider, sbuHandlers, /*#__PURE__*/_react.default.createElement(_reactNativeSafeAreaContext.SafeAreaProvider, null, /*#__PURE__*/_react.default.createElement(_uikitTools.UIKitConfigProvider, {