@sendbird/uikit-react-native 3.9.6 → 3.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/lib/commonjs/components/ChannelInput/index.js +13 -2
  2. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  3. package/lib/commonjs/components/ChannelMessageList/index.js +57 -9
  4. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  5. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js +53 -0
  6. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js.map +1 -0
  7. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +5 -0
  8. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  9. package/lib/commonjs/components/UnreadMessagesFloating.js +77 -0
  10. package/lib/commonjs/components/UnreadMessagesFloating.js.map +1 -0
  11. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +156 -7
  12. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  13. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  14. package/lib/commonjs/fragments/createGroupChannelFragment.js +57 -3
  15. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  16. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  17. package/lib/commonjs/localization/createBaseStringSet.js +16 -2
  18. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  19. package/lib/commonjs/version.js +1 -1
  20. package/lib/commonjs/version.js.map +1 -1
  21. package/lib/module/components/ChannelInput/index.js +13 -2
  22. package/lib/module/components/ChannelInput/index.js.map +1 -1
  23. package/lib/module/components/ChannelMessageList/index.js +57 -9
  24. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  25. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js +46 -0
  26. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.js.map +1 -0
  27. package/lib/module/components/GroupChannelMessageRenderer/index.js +5 -0
  28. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  29. package/lib/module/components/UnreadMessagesFloating.js +70 -0
  30. package/lib/module/components/UnreadMessagesFloating.js.map +1 -0
  31. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +158 -9
  32. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  33. package/lib/module/domain/groupChannel/types.js.map +1 -1
  34. package/lib/module/fragments/createGroupChannelFragment.js +59 -5
  35. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  36. package/lib/module/localization/StringSet.type.js.map +1 -1
  37. package/lib/module/localization/createBaseStringSet.js +16 -2
  38. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  39. package/lib/module/version.js +1 -1
  40. package/lib/module/version.js.map +1 -1
  41. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +8 -1
  42. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.d.ts +6 -0
  43. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +1 -0
  44. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -0
  45. package/lib/typescript/src/components/UnreadMessagesFloating.d.ts +8 -0
  46. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  47. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +6 -1
  48. package/lib/typescript/src/domain/groupChannel/types.d.ts +13 -1
  49. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  50. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  51. package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
  52. package/lib/typescript/src/version.d.ts +1 -1
  53. package/package.json +8 -7
  54. package/src/components/ChannelInput/index.tsx +17 -6
  55. package/src/components/ChannelMessageList/index.tsx +71 -5
  56. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.tsx +45 -0
  57. package/src/components/GroupChannelMessageRenderer/index.tsx +5 -0
  58. package/src/components/UnreadMessagesFloating.tsx +60 -0
  59. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +204 -5
  60. package/src/domain/groupChannel/types.ts +15 -0
  61. package/src/fragments/createGroupChannelFragment.tsx +67 -4
  62. package/src/localization/StringSet.type.ts +3 -0
  63. package/src/localization/createBaseStringSet.ts +16 -4
  64. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { MessageCollectionParams, MessageFilterParams } from '@sendbird/chat/groupChannel';\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n PickPartial,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdSendableMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport type MessageListQueryParamsType = Omit<MessageCollectionParams, 'filter'> & MessageFilterParams;\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n onPressReplyMessageInThread?: GroupChannelProps['Provider']['onPressReplyMessageInThread'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListComponent?: GroupChannelProps['MessageList']['flatListComponent'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n\n /**\n * @description You can specify the query parameters for the message list.\n * @example\n * ```\n * <GroupChannelFragment messageListQueryParams={{ prevResultLimit: 20, customTypesFilter: ['filter'] }} />\n * ```\n * */\n messageListQueryParams?: MessageListQueryParamsType;\n /** @deprecated Please use `messageListQueryParams` instead */\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'flatListComponent'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: () => Promise<void>;\n onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n };\n Input: PickPartial<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton',\n 'inputDisabled'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n\n messages: SendbirdMessage[];\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n onPressReplyMessageInThread: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n\n onPressReplyMessageInThread?: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;\n }>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = React.FC<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n }\n | {\n type: 'TYPING_BUBBLE_RENDERED';\n data?: undefined;\n };\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatList } from 'react-native';\n\nimport type { MessageCollectionParams, MessageFilterParams } from '@sendbird/chat/groupChannel';\nimport type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';\nimport type {\n OnBeforeHandler,\n PickPartial,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdSendableMessage,\n SendbirdUser,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n} from '@sendbird/uikit-utils';\n\nimport type { ChannelInputProps, SuggestedMentionListProps } from '../../components/ChannelInput';\nimport type { ChannelMessageListProps } from '../../components/ChannelMessageList';\nimport type { CommonComponent } from '../../types';\nimport type { PubSub } from '../../utils/pubsub';\n\nexport type MessageListQueryParamsType = Omit<MessageCollectionParams, 'filter'> & MessageFilterParams;\nexport interface GroupChannelProps {\n Fragment: {\n channel: SendbirdGroupChannel;\n onChannelDeleted: () => void;\n onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];\n onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];\n onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];\n onPressReplyMessageInThread?: GroupChannelProps['Provider']['onPressReplyMessageInThread'];\n\n onBeforeSendUserMessage?: OnBeforeHandler<SendbirdUserMessageCreateParams>;\n onBeforeSendFileMessage?: OnBeforeHandler<SendbirdFileMessageCreateParams>;\n onBeforeUpdateUserMessage?: OnBeforeHandler<SendbirdUserMessageUpdateParams>;\n onBeforeUpdateFileMessage?: OnBeforeHandler<SendbirdFileMessageUpdateParams>;\n\n renderMessage?: GroupChannelProps['MessageList']['renderMessage'];\n renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];\n renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];\n renderUnreadMessagesFloating?: GroupChannelProps['MessageList']['renderUnreadMessagesFloating'];\n\n enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];\n enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];\n\n keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];\n flatListComponent?: GroupChannelProps['MessageList']['flatListComponent'];\n flatListProps?: GroupChannelProps['MessageList']['flatListProps'];\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];\n\n searchItem?: GroupChannelProps['MessageList']['searchItem'];\n\n /**\n * @description You can specify the query parameters for the message list.\n * @example\n * ```\n * <GroupChannelFragment messageListQueryParams={{ prevResultLimit: 20, customTypesFilter: ['filter'] }} />\n * ```\n * */\n messageListQueryParams?: MessageListQueryParamsType;\n /** @deprecated Please use `messageListQueryParams` instead */\n collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];\n };\n Header: {\n shouldHideRight: () => boolean;\n onPressHeaderLeft: () => void;\n onPressHeaderRight: () => void;\n };\n MessageList: Pick<\n ChannelMessageListProps<SendbirdGroupChannel>,\n | 'enableMessageGrouping'\n | 'currentUserId'\n | 'channel'\n | 'messages'\n | 'newMessages'\n | 'scrolledAwayFromBottom'\n | 'onScrolledAwayFromBottom'\n | 'onTopReached'\n | 'onBottomReached'\n | 'onResendFailedMessage'\n | 'onDeleteMessage'\n | 'onPressMediaMessage'\n | 'renderMessage'\n | 'renderNewMessagesButton'\n | 'renderScrollToBottomButton'\n | 'renderUnreadMessagesFloating'\n | 'flatListComponent'\n | 'flatListProps'\n | 'hasNext'\n | 'searchItem'\n > & {\n onResetMessageList: () => Promise<void>;\n onResetMessageListWithStartingPoint: (startingPoint: number) => Promise<void>;\n\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n hasPrevious?: () => boolean;\n resetNewMessages?: () => void;\n isNewLineExistInChannel?: boolean;\n onNewLineSeenChange?: (hasSeenNewLine: boolean) => void;\n onUserMarkedAsUnreadChange?: (hasUserMarkedAsUnread: boolean) => void;\n };\n Input: PickPartial<\n ChannelInputProps,\n | 'shouldRenderInput'\n | 'onPressSendUserMessage'\n | 'onPressSendFileMessage'\n | 'onPressUpdateUserMessage'\n | 'onPressUpdateFileMessage'\n | 'SuggestedMentionList'\n | 'AttachmentsButton',\n 'inputDisabled'\n >;\n\n SuggestedMentionList: SuggestedMentionListProps;\n Provider: {\n channel: SendbirdGroupChannel;\n enableTypingIndicator: boolean;\n keyboardAvoidOffset?: number;\n groupChannelPubSub: PubSub<GroupChannelPubSubContextPayload>;\n\n messages: SendbirdMessage[];\n // Changing the search item will trigger the focus animation on messages.\n onUpdateSearchItem: (searchItem?: GroupChannelProps['MessageList']['searchItem']) => void;\n onPressReplyMessageInThread: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;\n };\n}\n\n/**\n * Internal context for GroupChannel\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n keyboardAvoidOffset?: number;\n channel: SendbirdGroupChannel;\n messageToEdit?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n messageToReply?: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n }>;\n TypingIndicator: React.Context<{\n typingUsers: SendbirdUser[];\n }>;\n PubSub: React.Context<PubSub<GroupChannelPubSubContextPayload>>;\n MessageList: React.Context<{\n /**\n * ref object for FlatList of MessageList\n * */\n flatListRef: React.MutableRefObject<FlatList | null>;\n /**\n * Function that scrolls to a message within a group channel.\n * @param messageId {number} - The id of the message to scroll.\n * @param options {object} - Scroll options (optional).\n * @param options.focusAnimated {boolean} - Enable a shake animation on the message component upon completion of scrolling.\n * @param options.viewPosition {number} - Position information to adjust the visible area during scrolling. bottom(0) ~ top(1.0)\n *\n * @example\n * ```\n * const { scrollToMessage } = useContext(GroupChannelContexts.MessageList);\n * const messageIncludedInMessageList = scrollToMessage(lastMessage.messageId, { focusAnimated: true, viewPosition: 1 });\n * if (!messageIncludedInMessageList) console.warn('Message not found in the message list.');\n * ```\n * */\n scrollToMessage: (messageId: number, options?: { focusAnimated?: boolean; viewPosition?: number }) => boolean;\n /**\n * Call the FlatList function asynchronously to scroll to bottom lazily\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToBottom: (params?: { animated?: boolean; timeout?: number }) => void;\n /**\n * Call the FlatList function asynchronously to scroll to index lazily.\n * to avoid scrolling before data rendering has been committed.\n * */\n lazyScrollToIndex: (params?: {\n index?: number;\n animated?: boolean;\n timeout?: number;\n viewPosition?: number;\n }) => void;\n\n onPressReplyMessageInThread?: (parentMessage: SendbirdSendableMessage, startingPoint?: number) => void;\n }>;\n}\nexport interface GroupChannelModule {\n Provider: CommonComponent<GroupChannelProps['Provider']>;\n Header: CommonComponent<GroupChannelProps['Header']>;\n MessageList: CommonComponent<GroupChannelProps['MessageList']>;\n Input: CommonComponent<GroupChannelProps['Input']>;\n SuggestedMentionList: CommonComponent<GroupChannelProps['SuggestedMentionList']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelFragment = React.FC<GroupChannelProps['Fragment']>;\n\nexport type GroupChannelPubSubContextPayload =\n | {\n type: 'MESSAGE_SENT_PENDING' | 'MESSAGE_SENT_SUCCESS';\n data: {\n message: SendbirdUserMessage | SendbirdFileMessage;\n };\n }\n | {\n type: 'MESSAGES_RECEIVED' | 'MESSAGES_UPDATED';\n data: {\n messages: SendbirdMessage[];\n };\n }\n | {\n type: 'TYPING_BUBBLE_RENDERED';\n data?: undefined;\n }\n | {\n type: 'ON_MARKED_AS_READ_BY_CURRENT_USER';\n data?: undefined;\n }\n | {\n type: 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER';\n data?: undefined;\n };\n"],"mappings":"","ignoreList":[]}
@@ -14,6 +14,7 @@ var _GroupChannelMessageRenderer = _interopRequireWildcard(require("../component
14
14
  var _NewMessagesButton = _interopRequireDefault(require("../components/NewMessagesButton"));
15
15
  var _ScrollToBottomButton = _interopRequireDefault(require("../components/ScrollToBottomButton"));
16
16
  var _StatusComposition = _interopRequireDefault(require("../components/StatusComposition"));
17
+ var _UnreadMessagesFloating = _interopRequireDefault(require("../components/UnreadMessagesFloating"));
17
18
  var _createGroupChannelModule = _interopRequireDefault(require("../domain/groupChannel/module/createGroupChannelModule"));
18
19
  var _useContext = require("../hooks/useContext");
19
20
  var _pubsub = _interopRequireDefault(require("../utils/pubsub"));
@@ -24,6 +25,7 @@ const createGroupChannelFragment = initModule => {
24
25
  const GroupChannelModule = (0, _createGroupChannelModule.default)(initModule);
25
26
  return ({
26
27
  searchItem,
28
+ renderUnreadMessagesFloating = props => /*#__PURE__*/_react.default.createElement(_UnreadMessagesFloating.default, props),
27
29
  renderNewMessagesButton = props => /*#__PURE__*/_react.default.createElement(_NewMessagesButton.default, props),
28
30
  renderScrollToBottomButton = props => /*#__PURE__*/_react.default.createElement(_ScrollToBottomButton.default, props),
29
31
  renderMessage,
@@ -72,6 +74,28 @@ const createGroupChannelFragment = initModule => {
72
74
  return _message.ReplyType.ONLY_REPLY_TO_CHANNEL;
73
75
  }
74
76
  });
77
+ const [isNewLineExistInChannel, setIsNewLineExistInChannel] = (0, _react.useState)(false);
78
+ const hasSeenNewLineRef = (0, _react.useRef)(false);
79
+ const hasUserMarkedAsUnreadRef = (0, _react.useRef)(false);
80
+ (0, _react.useEffect)(() => {
81
+ var _channel$lastMessage;
82
+ setIsNewLineExistInChannel(channel.myLastRead < (((_channel$lastMessage = channel.lastMessage) === null || _channel$lastMessage === void 0 ? void 0 : _channel$lastMessage.createdAt) ?? Number.MIN_SAFE_INTEGER));
83
+ }, [channel.url]);
84
+ const onNewLineSeenChange = (0, _uikitUtils.useFreshCallback)(hasSeenNewLine => {
85
+ hasSeenNewLineRef.current = hasSeenNewLine;
86
+ });
87
+ const onUserMarkedAsUnreadChange = (0, _uikitUtils.useFreshCallback)(hasUserMarkedAsUnread => {
88
+ hasUserMarkedAsUnreadRef.current = hasUserMarkedAsUnread;
89
+ });
90
+ const markAsRead = (0, _uikitUtils.useFreshCallback)(channels => {
91
+ if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {
92
+ if (!scrolledAwayFromBottom && !hasUserMarkedAsUnreadRef.current && (hasSeenNewLineRef.current || !isNewLineExistInChannel)) {
93
+ (0, _uikitUtils.confirmAndMarkAsRead)(channels, true);
94
+ }
95
+ } else {
96
+ (0, _uikitUtils.confirmAndMarkAsRead)(channels);
97
+ }
98
+ });
75
99
  const {
76
100
  loading,
77
101
  messages,
@@ -80,6 +104,7 @@ const createGroupChannelFragment = initModule => {
80
104
  loadNext,
81
105
  loadPrevious,
82
106
  hasNext,
107
+ hasPrevious,
83
108
  sendFileMessage,
84
109
  sendUserMessage,
85
110
  updateFileMessage,
@@ -105,11 +130,27 @@ const createGroupChannelFragment = initModule => {
105
130
  }
106
131
  });
107
132
  },
133
+ onChannelUpdated(_, ctx) {
134
+ if ((ctx === null || ctx === void 0 ? void 0 : ctx.source) === _groupChannel.GroupChannelEventSource.EVENT_CHANNEL_READ) {
135
+ if (ctx.userIds.includes((currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ?? '')) {
136
+ groupChannelPubSub.publish({
137
+ type: 'ON_MARKED_AS_READ_BY_CURRENT_USER'
138
+ });
139
+ }
140
+ } else if ((ctx === null || ctx === void 0 ? void 0 : ctx.source) === _groupChannel.GroupChannelEventSource.EVENT_CHANNEL_UNREAD) {
141
+ if (ctx.userIds.includes((currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ?? '')) {
142
+ setIsNewLineExistInChannel(true);
143
+ groupChannelPubSub.publish({
144
+ type: 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER'
145
+ });
146
+ }
147
+ }
148
+ },
108
149
  onChannelDeleted,
109
150
  onCurrentUserBanned: onChannelDeleted,
110
151
  collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),
111
152
  sortComparator,
112
- markAsRead: _uikitUtils.confirmAndMarkAsRead,
153
+ markAsRead: markAsRead,
113
154
  replyType,
114
155
  startingPoint: internalSearchItem === null || internalSearchItem === void 0 ? void 0 : internalSearchItem.startingPoint
115
156
  });
@@ -207,7 +248,14 @@ const createGroupChannelFragment = initModule => {
207
248
  await updateFileMessage(message.messageId, processedParams);
208
249
  });
209
250
  const onScrolledAwayFromBottom = (0, _uikitUtils.useFreshCallback)(value => {
210
- if (!value) resetNewMessages();
251
+ if (!value) {
252
+ resetNewMessages();
253
+ if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {
254
+ if (!hasUserMarkedAsUnreadRef.current && (hasSeenNewLineRef.current || !isNewLineExistInChannel)) {
255
+ (0, _uikitUtils.confirmAndMarkAsRead)([channel]);
256
+ }
257
+ }
258
+ }
211
259
  setScrolledAwayFromBottom(value);
212
260
  });
213
261
  return /*#__PURE__*/_react.default.createElement(GroupChannelModule.Provider, {
@@ -239,15 +287,21 @@ const createGroupChannelFragment = initModule => {
239
287
  onTopReached: loadPrevious,
240
288
  onBottomReached: loadNext,
241
289
  hasNext: hasNext,
290
+ hasPrevious: hasPrevious,
291
+ resetNewMessages: resetNewMessages,
242
292
  scrolledAwayFromBottom: scrolledAwayFromBottom,
243
293
  onScrolledAwayFromBottom: onScrolledAwayFromBottom,
244
294
  renderNewMessagesButton: renderNewMessagesButton,
245
295
  renderScrollToBottomButton: renderScrollToBottomButton,
296
+ renderUnreadMessagesFloating: renderUnreadMessagesFloating,
246
297
  onResendFailedMessage: resendMessage,
247
298
  onDeleteMessage: deleteMessage,
248
299
  onPressMediaMessage: _onPressMediaMessage,
249
300
  flatListComponent: flatListComponent,
250
- flatListProps: memoizedFlatListProps
301
+ flatListProps: memoizedFlatListProps,
302
+ isNewLineExistInChannel: isNewLineExistInChannel,
303
+ onNewLineSeenChange: onNewLineSeenChange,
304
+ onUserMarkedAsUnreadChange: onUserMarkedAsUnreadChange
251
305
  }), /*#__PURE__*/_react.default.createElement(GroupChannelModule.Input, {
252
306
  SuggestedMentionList: GroupChannelModule.SuggestedMentionList,
253
307
  shouldRenderInput: shouldRenderInput(channel),
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_groupChannel","_message","_uikitReactNativeFoundation","_uikitTools","_uikitUtils","_GroupChannelMessageRenderer","_NewMessagesButton","_interopRequireDefault","_ScrollToBottomButton","_StatusComposition","_createGroupChannelModule","_useContext","_pubsub","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onPressReplyMessageInThread","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","messageComparator","flatListComponent","flatListProps","messageListQueryParams","collectionCreator","playerService","recorderService","usePlatformService","sdk","currentUser","sbOptions","voiceMessageStatusManager","useSendbirdChat","toast","useToast","STRINGS","useLocalization","internalSearchItem","setInternalSearchItem","useState","navigateFromMessageSearch","useCallback","Boolean","groupChannelPubSub","pubsub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","useRefTracker","replyType","useIIFE","uikit","groupChannel","ReplyType","NONE","ONLY_REPLY_TO_CHANNEL","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","useGroupChannelMessages","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","onCurrentUserBanned","getCollectionCreator","markAsRead","confirmAndMarkAsRead","startingPoint","onBlurFragment","reset","catch","_onPressHeaderLeft","useFreshCallback","_onPressHeaderRight","_onPressMediaMessage","message","uri","_onPressReplyMessageInThread","useEffect","clear","renderItem","content","Box","isFirstItem","GroupChannelTypingIndicatorBubble","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","_processedParams$file","fileSize","file","size","uploadSizeLimit","appInfo","sizeLimitString","getReadableFileSize","show","TOAST","FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","userId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter","MessageFilter","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { MessageCollection, MessageFilter } from '@sendbird/chat/groupChannel';\nimport { ReplyType } from '@sendbird/chat/message';\nimport { Box, useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelMessages } from '@sendbird/uikit-tools';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdSendableMessage,\n SendbirdUserMessage,\n getReadableFileSize,\n} from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer, {\n GroupChannelTypingIndicatorBubble,\n} from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport { FileType } from '../platform/types';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onPressReplyMessageInThread = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n sortComparator = messageComparator,\n flatListComponent,\n flatListProps,\n messageListQueryParams,\n collectionCreator,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions, voiceMessageStatusManager } = useSendbirdChat();\n const toast = useToast();\n const { STRINGS } = useLocalization();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') {\n return ReplyType.NONE;\n } else {\n return ReplyType.ONLY_REPLY_TO_CHANNEL;\n }\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: confirmAndMarkAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = async () => {\n await playerService.reset().catch(() => {});\n await recorderService.reset().catch(() => {});\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n const _onPressReplyMessageInThread = useFreshCallback(\n async (message: SendbirdSendableMessage, startingPoint?: number) => {\n await onBlurFragment();\n onPressReplyMessageInThread(message, startingPoint);\n },\n );\n\n useEffect(() => {\n return () => {\n voiceMessageStatusManager.clear();\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? renderMessage(props) : <GroupChannelMessageRenderer {...props} />;\n return (\n <Box>\n {content}\n {props.isFirstItem && !hasNext() && <GroupChannelTypingIndicatorBubble />}\n </Box>\n );\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const fileSize = (processedParams.file as FileType)?.size ?? processedParams.fileSize;\n const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;\n\n if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {\n const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)}`;\n toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');\n return;\n } else {\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n }\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n onPressReplyMessageInThread={_onPressReplyMessageInThread}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListComponent={flatListComponent}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nfunction getCollectionCreator(\n channel: SendbirdGroupChannel,\n messageListQueryParams?: GroupChannelProps['Fragment']['messageListQueryParams'],\n deprecatedCreatorProp?: () => MessageCollection,\n) {\n if (!messageListQueryParams && deprecatedCreatorProp) return deprecatedCreatorProp;\n\n return (defaultParams: GroupChannelProps['Fragment']['messageListQueryParams']) => {\n const params = { ...defaultParams, ...messageListQueryParams };\n return channel.createMessageCollection({\n ...params,\n filter: new MessageFilter(params),\n });\n };\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_groupChannel","_message","_uikitReactNativeFoundation","_uikitTools","_uikitUtils","_GroupChannelMessageRenderer","_NewMessagesButton","_interopRequireDefault","_ScrollToBottomButton","_StatusComposition","_UnreadMessagesFloating","_createGroupChannelModule","_useContext","_pubsub","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","searchItem","renderUnreadMessagesFloating","props","createElement","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onPressReplyMessageInThread","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","sortComparator","messageComparator","flatListComponent","flatListProps","messageListQueryParams","collectionCreator","playerService","recorderService","usePlatformService","sdk","currentUser","sbOptions","voiceMessageStatusManager","useSendbirdChat","toast","useToast","STRINGS","useLocalization","internalSearchItem","setInternalSearchItem","useState","navigateFromMessageSearch","useCallback","Boolean","groupChannelPubSub","pubsub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","useRefTracker","replyType","useIIFE","uikit","groupChannel","ReplyType","NONE","ONLY_REPLY_TO_CHANNEL","isNewLineExistInChannel","setIsNewLineExistInChannel","hasSeenNewLineRef","useRef","hasUserMarkedAsUnreadRef","useEffect","_channel$lastMessage","myLastRead","lastMessage","createdAt","Number","MIN_SAFE_INTEGER","url","onNewLineSeenChange","useFreshCallback","hasSeenNewLine","current","onUserMarkedAsUnreadChange","hasUserMarkedAsUnread","markAsRead","channels","enableMarkAsUnread","confirmAndMarkAsRead","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","hasPrevious","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","useGroupChannelMessages","shouldCountNewMessages","onMessagesReceived","publish","type","data","onMessagesUpdated","onChannelUpdated","_","ctx","source","GroupChannelEventSource","EVENT_CHANNEL_READ","userIds","includes","userId","EVENT_CHANNEL_UNREAD","onCurrentUserBanned","getCollectionCreator","startingPoint","onBlurFragment","reset","catch","_onPressHeaderLeft","_onPressHeaderRight","_onPressMediaMessage","message","uri","_onPressReplyMessageInThread","clear","renderItem","content","Box","isFirstItem","GroupChannelTypingIndicatorBubble","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onUpdateSearchItem","undefined","onPending","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","_processedParams$file","fileSize","file","size","uploadSizeLimit","appInfo","sizeLimitString","getReadableFileSize","show","TOAST","FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","deprecatedCreatorProp","defaultParams","createMessageCollection","filter","MessageFilter","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport {\n type GroupChannel,\n GroupChannelEventSource,\n MessageCollection,\n MessageFilter,\n} from '@sendbird/chat/groupChannel';\nimport { ReplyType } from '@sendbird/chat/message';\nimport { Box, useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelMessages } from '@sendbird/uikit-tools';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdSendableMessage,\n SendbirdUserMessage,\n getReadableFileSize,\n} from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useIIFE,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer, {\n GroupChannelTypingIndicatorBubble,\n} from '../components/GroupChannelMessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport UnreadMessagesFloating from '../components/UnreadMessagesFloating';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport { FileType } from '../platform/types';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderUnreadMessagesFloating = (props) => <UnreadMessagesFloating {...props} />,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onPressReplyMessageInThread = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n sortComparator = messageComparator,\n flatListComponent,\n flatListProps,\n messageListQueryParams,\n collectionCreator,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions, voiceMessageStatusManager } = useSendbirdChat();\n const toast = useToast();\n const { STRINGS } = useLocalization();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const replyType = useIIFE(() => {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'none') {\n return ReplyType.NONE;\n } else {\n return ReplyType.ONLY_REPLY_TO_CHANNEL;\n }\n });\n\n const [isNewLineExistInChannel, setIsNewLineExistInChannel] = useState(false);\n const hasSeenNewLineRef = useRef(false);\n const hasUserMarkedAsUnreadRef = useRef(false);\n\n useEffect(() => {\n setIsNewLineExistInChannel(channel.myLastRead < (channel.lastMessage?.createdAt ?? Number.MIN_SAFE_INTEGER));\n }, [channel.url]);\n\n const onNewLineSeenChange = useFreshCallback((hasSeenNewLine: boolean) => {\n hasSeenNewLineRef.current = hasSeenNewLine;\n });\n\n const onUserMarkedAsUnreadChange = useFreshCallback((hasUserMarkedAsUnread: boolean) => {\n hasUserMarkedAsUnreadRef.current = hasUserMarkedAsUnread;\n });\n\n const markAsRead = useFreshCallback((channels: GroupChannel[]) => {\n if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n if (\n !scrolledAwayFromBottom &&\n !hasUserMarkedAsUnreadRef.current &&\n (hasSeenNewLineRef.current || !isNewLineExistInChannel)\n ) {\n confirmAndMarkAsRead(channels, true);\n }\n } else {\n confirmAndMarkAsRead(channels);\n }\n });\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n hasPrevious,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onChannelUpdated(_, ctx) {\n if (ctx?.source === GroupChannelEventSource.EVENT_CHANNEL_READ) {\n if (ctx.userIds.includes(currentUser?.userId ?? '')) {\n groupChannelPubSub.publish({ type: 'ON_MARKED_AS_READ_BY_CURRENT_USER' });\n }\n } else if (ctx?.source === GroupChannelEventSource.EVENT_CHANNEL_UNREAD) {\n if (ctx.userIds.includes(currentUser?.userId ?? '')) {\n setIsNewLineExistInChannel(true);\n groupChannelPubSub.publish({ type: 'ON_MARKED_AS_UNREAD_BY_CURRENT_USER' });\n }\n }\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n collectionCreator: getCollectionCreator(channel, messageListQueryParams, collectionCreator),\n sortComparator,\n markAsRead: markAsRead,\n replyType,\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const onBlurFragment = async () => {\n await playerService.reset().catch(() => {});\n await recorderService.reset().catch(() => {});\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderLeft();\n });\n const _onPressHeaderRight = useFreshCallback(async () => {\n await onBlurFragment();\n onPressHeaderRight();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelProps['MessageList']['onPressMediaMessage']> = useFreshCallback(\n async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n },\n );\n const _onPressReplyMessageInThread = useFreshCallback(\n async (message: SendbirdSendableMessage, startingPoint?: number) => {\n await onBlurFragment();\n onPressReplyMessageInThread(message, startingPoint);\n },\n );\n\n useEffect(() => {\n return () => {\n voiceMessageStatusManager.clear();\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? renderMessage(props) : <GroupChannelMessageRenderer {...props} />;\n return (\n <Box>\n {content}\n {props.isFirstItem && !hasNext() && <GroupChannelTypingIndicatorBubble />}\n </Box>\n );\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n // Changing the search item will trigger the focus animation on messages.\n const onUpdateSearchItem: GroupChannelProps['MessageList']['onUpdateSearchItem'] = useCallback((searchItem) => {\n // Clean up for animation trigger with useEffect\n setInternalSearchItem(undefined);\n setInternalSearchItem(searchItem);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const fileSize = (processedParams.file as FileType)?.size ?? processedParams.fileSize;\n const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;\n\n if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {\n const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)}`;\n toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');\n return;\n } else {\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n }\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) {\n resetNewMessages();\n if (sbOptions.uikit.groupChannel.channel.enableMarkAsUnread) {\n if (!hasUserMarkedAsUnreadRef.current && (hasSeenNewLineRef.current || !isNewLineExistInChannel)) {\n confirmAndMarkAsRead([channel]);\n }\n }\n }\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator ?? sbOptions.uikit.groupChannel.channel.enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n messages={messages}\n onUpdateSearchItem={onUpdateSearchItem}\n onPressReplyMessageInThread={_onPressReplyMessageInThread}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={_onPressHeaderLeft}\n onPressHeaderRight={_onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n onUpdateSearchItem={onUpdateSearchItem}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n hasPrevious={hasPrevious}\n resetNewMessages={resetNewMessages}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n renderUnreadMessagesFloating={renderUnreadMessagesFloating}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListComponent={flatListComponent}\n flatListProps={memoizedFlatListProps}\n isNewLineExistInChannel={isNewLineExistInChannel}\n onNewLineSeenChange={onNewLineSeenChange}\n onUserMarkedAsUnreadChange={onUserMarkedAsUnreadChange}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nfunction getCollectionCreator(\n channel: SendbirdGroupChannel,\n messageListQueryParams?: GroupChannelProps['Fragment']['messageListQueryParams'],\n deprecatedCreatorProp?: () => MessageCollection,\n) {\n if (!messageListQueryParams && deprecatedCreatorProp) return deprecatedCreatorProp;\n\n return (defaultParams: GroupChannelProps['Fragment']['messageListQueryParams']) => {\n const params = { ...defaultParams, ...messageListQueryParams };\n return channel.createMessageCollection({\n ...params,\n filter: new MessageFilter(params),\n });\n };\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA;AAMA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,2BAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAiBA,IAAAM,4BAAA,GAAAP,uBAAA,CAAAC,OAAA;AAGA,IAAAO,kBAAA,GAAAC,sBAAA,CAAAR,OAAA;AACA,IAAAS,qBAAA,GAAAD,sBAAA,CAAAR,OAAA;AACA,IAAAU,kBAAA,GAAAF,sBAAA,CAAAR,OAAA;AACA,IAAAW,uBAAA,GAAAH,sBAAA,CAAAR,OAAA;AACA,IAAAY,yBAAA,GAAAJ,sBAAA,CAAAR,OAAA;AAOA,IAAAa,WAAA,GAAAb,OAAA;AAEA,IAAAc,OAAA,GAAAN,sBAAA,CAAAR,OAAA;AAAqC,SAAAQ,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAhB,wBAAAgB,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAErC,MAAMW,0BAA0B,GAAIC,UAAwC,IAA2B;EACrG,MAAMC,kBAAkB,GAAG,IAAAC,iCAAwB,EAACF,UAAU,CAAC;EAE/D,OAAO,CAAC;IACNG,UAAU;IACVC,4BAA4B,GAAIC,KAAK,iBAAK3C,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAAC/B,uBAAA,CAAAM,OAAsB,EAAKwB,KAAQ,CAAC;IAC/EE,uBAAuB,GAAIF,KAAK,iBAAK3C,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACnC,kBAAA,CAAAU,OAAiB,EAAKwB,KAAQ,CAAC;IACrEG,0BAA0B,GAAIH,KAAK,iBAAK3C,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACjC,qBAAA,CAAAQ,OAAoB,EAAKwB,KAAQ,CAAC;IAC3EI,aAAa;IACbC,qBAAqB,GAAG,IAAI;IAC5BC,qBAAqB;IACrBC,iBAAiB,GAAGC,gBAAI;IACxBC,kBAAkB,GAAGD,gBAAI;IACzBE,mBAAmB,GAAGF,gBAAI;IAC1BG,gBAAgB,GAAGH,gBAAI;IACvBI,2BAA2B,GAAGJ,gBAAI;IAClCK,uBAAuB,GAAGC,gBAAI;IAC9BC,uBAAuB,GAAGD,gBAAI;IAC9BE,yBAAyB,GAAGF,gBAAI;IAChCG,yBAAyB,GAAGH,gBAAI;IAChCI,OAAO;IACPC,mBAAmB;IACnBC,cAAc,GAAGC,6BAAiB;IAClCC,iBAAiB;IACjBC,aAAa;IACbC,sBAAsB;IACtBC;EACF,CAAC,KAAK;IACJ,MAAM;MAAEC,aAAa;MAAEC;IAAgB,CAAC,GAAG,IAAAC,8BAAkB,EAAC,CAAC;IAC/D,MAAM;MAAEC,GAAG;MAAEC,WAAW;MAAEC,SAAS;MAAEC;IAA0B,CAAC,GAAG,IAAAC,2BAAe,EAAC,CAAC;IACpF,MAAMC,KAAK,GAAG,IAAAC,oCAAQ,EAAC,CAAC;IACxB,MAAM;MAAEC;IAAQ,CAAC,GAAG,IAAAC,2BAAe,EAAC,CAAC;IAErC,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAG,IAAAC,eAAQ,EAAC1C,UAAU,CAAC;IACxE,MAAM2C,yBAAyB,GAAG,IAAAC,kBAAW,EAAC,MAAMC,OAAO,CAAC7C,UAAU,CAAC,EAAE,EAAE,CAAC;IAE5E,MAAM,CAAC8C,kBAAkB,CAAC,GAAG,IAAAJ,eAAQ,EAAC,MAAM,IAAAK,eAAM,EAAmC,CAAC,CAAC;IACvF,MAAM,CAACC,sBAAsB,EAAEC,yBAAyB,CAAC,GAAG,IAAAP,eAAQ,EAAC,KAAK,CAAC;IAC3E,MAAMQ,yBAAyB,GAAG,IAAAC,yBAAa,EAACH,sBAAsB,CAAC;IAEvE,MAAMI,SAAS,GAAG,IAAAC,mBAAO,EAAC,MAAM;MAC9B,IAAIpB,SAAS,CAACqB,KAAK,CAACC,YAAY,CAACnC,OAAO,CAACgC,SAAS,KAAK,MAAM,EAAE;QAC7D,OAAOI,kBAAS,CAACC,IAAI;MACvB,CAAC,MAAM;QACL,OAAOD,kBAAS,CAACE,qBAAqB;MACxC;IACF,CAAC,CAAC;IAEF,MAAM,CAACC,uBAAuB,EAAEC,0BAA0B,CAAC,GAAG,IAAAlB,eAAQ,EAAC,KAAK,CAAC;IAC7E,MAAMmB,iBAAiB,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;IACvC,MAAMC,wBAAwB,GAAG,IAAAD,aAAM,EAAC,KAAK,CAAC;IAE9C,IAAAE,gBAAS,EAAC,MAAM;MAAA,IAAAC,oBAAA;MACdL,0BAA0B,CAACxC,OAAO,CAAC8C,UAAU,IAAI,EAAAD,oBAAA,GAAA7C,OAAO,CAAC+C,WAAW,cAAAF,oBAAA,uBAAnBA,oBAAA,CAAqBG,SAAS,KAAIC,MAAM,CAACC,gBAAgB,CAAC,CAAC;IAC9G,CAAC,EAAE,CAAClD,OAAO,CAACmD,GAAG,CAAC,CAAC;IAEjB,MAAMC,mBAAmB,GAAG,IAAAC,4BAAgB,EAAEC,cAAuB,IAAK;MACxEb,iBAAiB,CAACc,OAAO,GAAGD,cAAc;IAC5C,CAAC,CAAC;IAEF,MAAME,0BAA0B,GAAG,IAAAH,4BAAgB,EAAEI,qBAA8B,IAAK;MACtFd,wBAAwB,CAACY,OAAO,GAAGE,qBAAqB;IAC1D,CAAC,CAAC;IAEF,MAAMC,UAAU,GAAG,IAAAL,4BAAgB,EAAEM,QAAwB,IAAK;MAChE,IAAI9C,SAAS,CAACqB,KAAK,CAACC,YAAY,CAACnC,OAAO,CAAC4D,kBAAkB,EAAE;QAC3D,IACE,CAAChC,sBAAsB,IACvB,CAACe,wBAAwB,CAACY,OAAO,KAChCd,iBAAiB,CAACc,OAAO,IAAI,CAAChB,uBAAuB,CAAC,EACvD;UACA,IAAAsB,gCAAoB,EAACF,QAAQ,EAAE,IAAI,CAAC;QACtC;MACF,CAAC,MAAM;QACL,IAAAE,gCAAoB,EAACF,QAAQ,CAAC;MAChC;IACF,CAAC,CAAC;IAEF,MAAM;MACJG,OAAO;MACPC,QAAQ;MACRC,WAAW;MACXC,gBAAgB;MAChBC,QAAQ;MACRC,YAAY;MACZC,OAAO;MACPC,WAAW;MACXC,eAAe;MACfC,eAAe;MACfC,iBAAiB;MACjBC,iBAAiB;MACjBC,aAAa;MACbC,aAAa;MACbC;IACF,CAAC,GAAG,IAAAC,mCAAuB,EAAClE,GAAG,EAAEX,OAAO,EAAE;MACxC8E,sBAAsB,EAAEA,CAAA,KAAMhD,yBAAyB,CAACyB,OAAO;MAC/DwB,kBAAkBA,CAAChB,QAAQ,EAAE;QAC3BrC,kBAAkB,CAACsD,OAAO,CAAC;UAAEC,IAAI,EAAE,mBAAmB;UAAEC,IAAI,EAAE;YAAEnB;UAAS;QAAE,CAAC,CAAC;MAC/E,CAAC;MACDoB,iBAAiBA,CAACpB,QAAQ,EAAE;QAC1BrC,kBAAkB,CAACsD,OAAO,CAAC;UAAEC,IAAI,EAAE,kBAAkB;UAAEC,IAAI,EAAE;YAAEnB;UAAS;QAAE,CAAC,CAAC;MAC9E,CAAC;MACDqB,gBAAgBA,CAACC,CAAC,EAAEC,GAAG,EAAE;QACvB,IAAI,CAAAA,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEC,MAAM,MAAKC,qCAAuB,CAACC,kBAAkB,EAAE;UAC9D,IAAIH,GAAG,CAACI,OAAO,CAACC,QAAQ,CAAC,CAAA/E,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEgF,MAAM,KAAI,EAAE,CAAC,EAAE;YACnDlE,kBAAkB,CAACsD,OAAO,CAAC;cAAEC,IAAI,EAAE;YAAoC,CAAC,CAAC;UAC3E;QACF,CAAC,MAAM,IAAI,CAAAK,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEC,MAAM,MAAKC,qCAAuB,CAACK,oBAAoB,EAAE;UACvE,IAAIP,GAAG,CAACI,OAAO,CAACC,QAAQ,CAAC,CAAA/E,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEgF,MAAM,KAAI,EAAE,CAAC,EAAE;YACnDpD,0BAA0B,CAAC,IAAI,CAAC;YAChCd,kBAAkB,CAACsD,OAAO,CAAC;cAAEC,IAAI,EAAE;YAAsC,CAAC,CAAC;UAC7E;QACF;MACF,CAAC;MACDxF,gBAAgB;MAChBqG,mBAAmB,EAAErG,gBAAgB;MACrCc,iBAAiB,EAAEwF,oBAAoB,CAAC/F,OAAO,EAAEM,sBAAsB,EAAEC,iBAAiB,CAAC;MAC3FL,cAAc;MACdwD,UAAU,EAAEA,UAAU;MACtB1B,SAAS;MACTgE,aAAa,EAAE5E,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAE4E;IACrC,CAAC,CAAC;IAEF,MAAMC,cAAc,GAAG,MAAAA,CAAA,KAAY;MACjC,MAAMzF,aAAa,CAAC0F,KAAK,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MAC3C,MAAM1F,eAAe,CAACyF,KAAK,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,MAAMC,kBAAkB,GAAG,IAAA/C,4BAAgB,EAAC,YAAY;MACtD,MAAM4C,cAAc,CAAC,CAAC;MACtB5G,iBAAiB,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,MAAMgH,mBAAmB,GAAG,IAAAhD,4BAAgB,EAAC,YAAY;MACvD,MAAM4C,cAAc,CAAC,CAAC;MACtB1G,kBAAkB,CAAC,CAAC;IACtB,CAAC,CAAC;IACF,MAAM+G,oBAA0F,GAAG,IAAAjD,4BAAgB,EACjH,OAAOkD,OAAO,EAAE5B,aAAa,EAAE6B,GAAG,KAAK;MACrC,MAAMP,cAAc,CAAC,CAAC;MACtBzG,mBAAmB,CAAC+G,OAAO,EAAE5B,aAAa,EAAE6B,GAAG,CAAC;IAClD,CACF,CAAC;IACD,MAAMC,4BAA4B,GAAG,IAAApD,4BAAgB,EACnD,OAAOkD,OAAgC,EAAEP,aAAsB,KAAK;MAClE,MAAMC,cAAc,CAAC,CAAC;MACtBvG,2BAA2B,CAAC6G,OAAO,EAAEP,aAAa,CAAC;IACrD,CACF,CAAC;IAED,IAAApD,gBAAS,EAAC,MAAM;MACd,OAAO,MAAM;QACX9B,yBAAyB,CAAC4F,KAAK,CAAC,CAAC;QACjCT,cAAc,CAAC,CAAC;MAClB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMU,UAA6D,GAAG,IAAAtD,4BAAgB,EAAEvE,KAAK,IAAK;MAChG,MAAM8H,OAAO,GAAG1H,aAAa,GAAGA,aAAa,CAACJ,KAAK,CAAC,gBAAG3C,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACpC,4BAAA,CAAAW,OAA2B,EAAKwB,KAAQ,CAAC;MACjG,oBACE3C,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACvC,2BAAA,CAAAqK,GAAG,QACDD,OAAO,EACP9H,KAAK,CAACgI,WAAW,IAAI,CAAC1C,OAAO,CAAC,CAAC,iBAAIjI,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACpC,4BAAA,CAAAoK,iCAAiC,MAAE,CACrE,CAAC;IAEV,CAAC,CAAC;IAEF,MAAMC,qBAAqB,GAAG,IAAAC,cAAO,EACnC,OAAO;MACLC,kBAAkB,eAAE/K,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACL,kBAAkB,CAACyI,WAAW,MAAE,CAAC;MACtDC,qBAAqB,EAAE;QAAEC,QAAQ,EAAE;MAAE,CAAC;MACtC,GAAGhH;IACL,CAAC,CAAC,EACF,CAACA,aAAa,CAChB,CAAC;IAED,MAAMiH,kBAAkB,GAAG,IAAA9F,kBAAW,EAAC,YAAY;MACjD,OAAO,MAAMoD,sBAAsB,CAAC3B,MAAM,CAACsE,gBAAgB,CAAC;IAC9D,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMC,mCAAmC,GAAG,IAAAhG,kBAAW,EAAC,MAAOwE,aAAqB,IAAK;MACvF,OAAO,MAAMpB,sBAAsB,CAACoB,aAAa,CAAC;IACpD,CAAC,EAAE,EAAE,CAAC;;IAEN;IACA,MAAMyB,kBAA0E,GAAG,IAAAjG,kBAAW,EAAE5C,UAAU,IAAK;MAC7G;MACAyC,qBAAqB,CAACqG,SAAS,CAAC;MAChCrG,qBAAqB,CAACzC,UAAU,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM+I,SAAS,GAAIpB,OAAkD,IAAK;MACxE7E,kBAAkB,CAACsD,OAAO,CAAC;QAAEC,IAAI,EAAE,sBAAsB;QAAEC,IAAI,EAAE;UAAEqB;QAAQ;MAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAMqB,MAAM,GAAIrB,OAAkD,IAAK;MACrE7E,kBAAkB,CAACsD,OAAO,CAAC;QAAEC,IAAI,EAAE,sBAAsB;QAAEC,IAAI,EAAE;UAAEqB;QAAQ;MAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAMsB,sBAA4E,GAAG,IAAAxE,4BAAgB,EACnG,MAAOyE,MAAM,IAAK;MAChB,MAAMC,eAAe,GAAG,MAAMpI,uBAAuB,CAACmI,MAAM,CAAC;MAC7D,MAAMvB,OAAO,GAAG,MAAMhC,eAAe,CAACwD,eAAe,EAAEJ,SAAS,CAAC;MACjEC,MAAM,CAACrB,OAAO,CAAC;IACjB,CACF,CAAC;IACD,MAAMyB,sBAA4E,GAAG,IAAA3E,4BAAgB,EACnG,MAAOyE,MAAM,IAAK;MAAA,IAAAG,qBAAA;MAChB,MAAMF,eAAe,GAAG,MAAMlI,uBAAuB,CAACiI,MAAM,CAAC;MAC7D,MAAMI,QAAQ,GAAG,EAAAD,qBAAA,GAACF,eAAe,CAACI,IAAI,cAAAF,qBAAA,uBAArBA,qBAAA,CAAoCG,IAAI,KAAIL,eAAe,CAACG,QAAQ;MACrF,MAAMG,eAAe,GAAGxH,SAAS,CAACyH,OAAO,CAACD,eAAe;MAEzD,IAAIH,QAAQ,IAAIG,eAAe,IAAIH,QAAQ,GAAGG,eAAe,EAAE;QAC7D,MAAME,eAAe,GAAG,GAAG,IAAAC,+BAAmB,EAACH,eAAe,CAAC,EAAE;QACjErH,KAAK,CAACyH,IAAI,CAACvH,OAAO,CAACwH,KAAK,CAACC,qCAAqC,CAACJ,eAAe,CAAC,EAAE,OAAO,CAAC;QACzF;MACF,CAAC,MAAM;QACL,MAAMhC,OAAO,GAAG,MAAMjC,eAAe,CAACyD,eAAe,EAAEJ,SAAS,CAAC;QACjEC,MAAM,CAACrB,OAAO,CAAC;MACjB;IACF,CACF,CAAC;IACD,MAAMqC,wBAAgF,GAAG,IAAAvF,4BAAgB,EACvG,OAAOkD,OAAO,EAAEuB,MAAM,KAAK;MACzB,MAAMC,eAAe,GAAG,MAAMjI,yBAAyB,CAACgI,MAAM,CAAC;MAC/D,MAAMrD,iBAAiB,CAAC8B,OAAO,CAACsC,SAAS,EAAEd,eAAe,CAAC;IAC7D,CACF,CAAC;IACD,MAAMe,wBAAgF,GAAG,IAAAzF,4BAAgB,EACvG,OAAOkD,OAAO,EAAEuB,MAAM,KAAK;MACzB,MAAMC,eAAe,GAAG,MAAMhI,yBAAyB,CAAC+H,MAAM,CAAC;MAC/D,MAAMtD,iBAAiB,CAAC+B,OAAO,CAACsC,SAAS,EAAEd,eAAe,CAAC;IAC7D,CACF,CAAC;IACD,MAAMgB,wBAAwB,GAAG,IAAA1F,4BAAgB,EAAE2F,KAAc,IAAK;MACpE,IAAI,CAACA,KAAK,EAAE;QACV/E,gBAAgB,CAAC,CAAC;QAClB,IAAIpD,SAAS,CAACqB,KAAK,CAACC,YAAY,CAACnC,OAAO,CAAC4D,kBAAkB,EAAE;UAC3D,IAAI,CAACjB,wBAAwB,CAACY,OAAO,KAAKd,iBAAiB,CAACc,OAAO,IAAI,CAAChB,uBAAuB,CAAC,EAAE;YAChG,IAAAsB,gCAAoB,EAAC,CAAC7D,OAAO,CAAC,CAAC;UACjC;QACF;MACF;MACA6B,yBAAyB,CAACmH,KAAK,CAAC;IAClC,CAAC,CAAC;IAEF,oBACE7M,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACL,kBAAkB,CAACuK,QAAQ;MAC1BjJ,OAAO,EAAEA,OAAQ;MACjB0B,kBAAkB,EAAEA,kBAAmB;MACvCtC,qBAAqB,EAAEA,qBAAqB,IAAIyB,SAAS,CAACqB,KAAK,CAACC,YAAY,CAACnC,OAAO,CAACZ,qBAAsB;MAC3Ga,mBAAmB,EAAEA,mBAAoB;MACzC8D,QAAQ,EAAEA,QAAS;MACnB0D,kBAAkB,EAAEA,kBAAmB;MACvC/H,2BAA2B,EAAE+G;IAA6B,gBAE1DtK,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACL,kBAAkB,CAACwK,MAAM;MACxBC,eAAe,EAAE5H,yBAA0B;MAC3ClC,iBAAiB,EAAE+G,kBAAmB;MACtC7G,kBAAkB,EAAE8G;IAAoB,CACzC,CAAC,eACFlK,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAAChC,kBAAA,CAAAO,OAAiB;MAACwG,OAAO,EAAEA,OAAQ;MAACsF,gBAAgB,eAAEjN,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACL,kBAAkB,CAAC2K,aAAa,MAAE;IAAE,gBAC1FlN,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACL,kBAAkB,CAAC4K,WAAW;MAC7BtJ,OAAO,EAAEA,OAAQ;MACjBpB,UAAU,EAAEwC,kBAAmB;MAC/BkG,kBAAkB,EAAEA,kBAAmB;MACvCE,mCAAmC,EAAEA,mCAAoC;MACzEC,kBAAkB,EAAEA,kBAAmB;MACvCtI,qBAAqB,EAAEA,qBAAsB;MAC7CoK,aAAa,EAAE3I,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEgF,MAAO;MACnC1G,aAAa,EAAEyH,UAAW;MAC1B5C,QAAQ,EAAEA,QAAS;MACnBC,WAAW,EAAEA,WAAY;MACzBwF,YAAY,EAAErF,YAAa;MAC3BsF,eAAe,EAAEvF,QAAS;MAC1BE,OAAO,EAAEA,OAAQ;MACjBC,WAAW,EAAEA,WAAY;MACzBJ,gBAAgB,EAAEA,gBAAiB;MACnCrC,sBAAsB,EAAEA,sBAAuB;MAC/CmH,wBAAwB,EAAEA,wBAAyB;MACnD/J,uBAAuB,EAAEA,uBAAwB;MACjDC,0BAA0B,EAAEA,0BAA2B;MACvDJ,4BAA4B,EAAEA,4BAA6B;MAC3D6K,qBAAqB,EAAEhF,aAAc;MACrCiF,eAAe,EAAEhF,aAAc;MAC/BnF,mBAAmB,EAAE8G,oBAAqB;MAC1ClG,iBAAiB,EAAEA,iBAAkB;MACrCC,aAAa,EAAE2G,qBAAsB;MACrCzE,uBAAuB,EAAEA,uBAAwB;MACjDa,mBAAmB,EAAEA,mBAAoB;MACzCI,0BAA0B,EAAEA;IAA2B,CACxD,CAAC,eACFrH,MAAA,CAAAmB,OAAA,CAAAyB,aAAA,CAACL,kBAAkB,CAACkL,KAAK;MACvBC,oBAAoB,EAAEnL,kBAAkB,CAACmL,oBAAqB;MAC9DC,iBAAiB,EAAEA,iBAAiB,CAAC9J,OAAO,CAAE;MAC9C6H,sBAAsB,EAAEA,sBAAuB;MAC/CG,sBAAsB,EAAEA,sBAAuB;MAC/CY,wBAAwB,EAAEA,wBAAyB;MACnDE,wBAAwB,EAAEA;IAAyB,CACpD,CACgB,CACQ,CAAC;EAElC,CAAC;AACH,CAAC;AAED,SAASgB,iBAAiBA,CAAC9J,OAA6B,EAAE;EACxD,IAAIA,OAAO,CAAC+J,WAAW,EAAE;IACvB,OAAO/J,OAAO,CAACgK,MAAM,KAAK,UAAU;EACtC;EAEA,OAAO,IAAI;AACb;AAEA,SAASjE,oBAAoBA,CAC3B/F,OAA6B,EAC7BM,sBAAgF,EAChF2J,qBAA+C,EAC/C;EACA,IAAI,CAAC3J,sBAAsB,IAAI2J,qBAAqB,EAAE,OAAOA,qBAAqB;EAElF,OAAQC,aAAsE,IAAK;IACjF,MAAMpC,MAAM,GAAG;MAAE,GAAGoC,aAAa;MAAE,GAAG5J;IAAuB,CAAC;IAC9D,OAAON,OAAO,CAACmK,uBAAuB,CAAC;MACrC,GAAGrC,MAAM;MACTsC,MAAM,EAAE,IAAIC,2BAAa,CAACvC,MAAM;IAClC,CAAC,CAAC;EACJ,CAAC;AACH;AAAC,IAAAwC,QAAA,GAAAC,OAAA,CAAAjN,OAAA,GAEckB,0BAA0B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["StringSet.type.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMember,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdParticipant,\n SendbirdReactedUserInfo,\n SendbirdUser,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\n\n/**\n * StringSet interface\n * Do not configure over 3 depths (for overrides easy)\n * */\nexport interface StringSet {\n OPEN_CHANNEL: {\n /** OpenChannel > Header */\n HEADER_TITLE: (channel: SendbirdOpenChannel) => string;\n HEADER_SUBTITLE: (channel: SendbirdOpenChannel) => string;\n\n /** OpenChannel > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n\n /** OpenChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n };\n OPEN_CHANNEL_PARTICIPANTS: {\n /** OpenChannelParticipants > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_SETTINGS: {\n /** OpenChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** OpenChannelSettings > Info */\n INFO_URL: string;\n\n /** OpenChannelSettings > Menu */\n MENU_MODERATION: string;\n MENU_PARTICIPANTS: string;\n MENU_DELETE_CHANNEL: string;\n\n /** OpenChannelSettings > Dialog */\n DIALOG_CHANNEL_DELETE_CONFIRM_TITLE: string;\n DIALOG_CHANNEL_DELETE_CONFIRM_OK: string;\n DIALOG_CHANNEL_DELETE_CONFIRM_CANCEL: string;\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n OPEN_CHANNEL_LIST: {\n /** OpenChannelList > Header */\n HEADER_TITLE: string;\n\n /** OpenChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (channel: SendbirdOpenChannel) => string;\n };\n OPEN_CHANNEL_CREATE: {\n /** OpenChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** OpenChannelCreate > ProfileInput */\n PLACEHOLDER: string;\n\n /** OpenChannelCreate > Dialog */\n DIALOG_IMAGE_MENU_REMOVE: string;\n DIALOG_IMAGE_MENU_CAMERA: string;\n DIALOG_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n OPEN_CHANNEL_MODERATION: {\n /** OpenChannelModeration > Header */\n HEADER_TITLE: string;\n\n /** OpenChannelModeration > Menu */\n MENU_OPERATORS: string;\n MENU_MUTED_PARTICIPANTS: string;\n MENU_BANNED_USERS: string;\n };\n OPEN_CHANNEL_BANNED_USERS: {\n /** OpenChannelBannedUsers > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_MUTED_PARTICIPANTS: {\n /** OpenChannelMutedMembers > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_OPERATORS: {\n /** OpenChannelOperators > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_REGISTER_OPERATOR: {\n /** OpenChannelRegisterOperator > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: (params: { selectedUsers: Array<SendbirdParticipant> }) => string;\n };\n GROUP_CHANNEL: {\n /** GroupChannel > Header */\n HEADER_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannel > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n\n /** GroupChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n /** GroupChannel > Suggested mention list */\n MENTION_LIMITED: (mentionLimit: number) => string;\n };\n GROUP_CHANNEL_THREAD: {\n /** GroupChannelThread > Header */\n HEADER_TITLE: string;\n HEADER_SUBTITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelThread > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n\n /** GroupChannelThread > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n PARENT_MESSAGE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n REPLY_COUNT: (replyCount: number, maxReplyCount?: number) => string;\n\n /** GroupChannelThread > Suggested mention list */\n MENTION_LIMITED: (mentionLimit: number) => string;\n };\n GROUP_CHANNEL_SETTINGS: {\n /** GroupChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** GroupChannelSettings > Menu */\n MENU_MODERATION: string;\n MENU_MEMBERS: string;\n MENU_SEARCH: string;\n MENU_LEAVE_CHANNEL: string;\n MENU_NOTIFICATION: string;\n MENU_NOTIFICATION_LABEL_ON: string;\n MENU_NOTIFICATION_LABEL_OFF: string;\n MENU_NOTIFICATION_LABEL_MENTION_ONLY: string;\n\n /** GroupChannelSettings > Dialog */\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n GROUP_CHANNEL_NOTIFICATIONS: {\n /** GroupChannelNotifications > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelNotifications > Menu */\n MENU_NOTIFICATIONS: string;\n MENU_NOTIFICATIONS_DESC: string;\n MENU_NOTIFICATIONS_OPTION_ALL: string;\n MENU_NOTIFICATIONS_OPTION_MENTION_ONLY: string;\n };\n GROUP_CHANNEL_MODERATION: {\n /** GroupChannelModeration > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelModeration > Menu */\n MENU_OPERATORS: string;\n MENU_MUTED_MEMBERS: string;\n MENU_BANNED_USERS: string;\n MENU_FREEZE_CHANNEL: string;\n };\n GROUP_CHANNEL_OPERATORS: {\n /** GroupChannelOperators > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_REGISTER_OPERATOR: {\n /** GroupChannelRegisterOperator > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: (params: { selectedUsers: Array<SendbirdMember> }) => string;\n };\n GROUP_CHANNEL_MUTED_MEMBERS: {\n /** GroupChannelMutedMembers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_BANNED_USERS: {\n /** GroupChannelBannedUsers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_LIST: {\n /** GroupChannelList > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel: SendbirdGroupChannel, locale?: Locale) => string;\n CHANNEL_PREVIEW_BODY: (channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelList > TypeSelector > Header */\n TYPE_SELECTOR_HEADER_TITLE: string;\n /** GroupChannelList > TypeSelector > Type string */\n TYPE_SELECTOR_GROUP: string;\n TYPE_SELECTOR_SUPER_GROUP: string;\n TYPE_SELECTOR_BROADCAST: string;\n\n /** GroupChannelList > Dialog > Channel */\n DIALOG_CHANNEL_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_NOTIFICATION: (channel?: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_LEAVE: string;\n };\n GROUP_CHANNEL_MEMBERS: {\n /** GroupChannelMembers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_INVITE: {\n /** GroupChannelInvite > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n GROUP_CHANNEL_CREATE: {\n /** GroupChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n MESSAGE_SEARCH: {\n /** MessageSearch > Header */\n HEADER_INPUT_PLACEHOLDER: string;\n HEADER_RIGHT: string;\n\n /** MessageSearch > Search result item */\n SEARCH_RESULT_ITEM_TITLE: (message: SendbirdBaseMessage) => string;\n SEARCH_RESULT_ITEM_TITLE_CAPTION: (message: SendbirdBaseMessage, locale?: Locale) => string;\n SEARCH_RESULT_ITEM_BODY: (message: SendbirdBaseMessage) => string;\n };\n // UI\n LABELS: {\n PERMISSION_APP_NAME: string;\n PERMISSION_CAMERA: string;\n PERMISSION_DEVICE_STORAGE: string;\n PERMISSION_MICROPHONE: string;\n\n USER_NO_NAME: string;\n CHANNEL_NO_MEMBERS: string;\n TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;\n REPLY_FROM_SENDER_TO_RECEIVER: (\n replyMessage: SendbirdUserMessage | SendbirdFileMessage,\n parentMessage: SendbirdUserMessage | SendbirdFileMessage,\n currentUserId?: string,\n ) => string;\n MESSAGE_UNAVAILABLE: string;\n\n USER_BAR_ME_POSTFIX: string;\n USER_BAR_OPERATOR: string;\n\n REGISTER_AS_OPERATOR: string;\n UNREGISTER_OPERATOR: string;\n MUTE: string;\n UNMUTE: string;\n BAN: string;\n UNBAN: string;\n\n /** ChannelMessageList **/\n CHANNEL_MESSAGE_LIST_FROZEN: string;\n\n /** ChannelInput **/\n CHANNEL_INPUT_PLACEHOLDER_ACTIVE: string;\n CHANNEL_INPUT_PLACEHOLDER_DISABLED: string;\n CHANNEL_INPUT_PLACEHOLDER_MUTED: string;\n CHANNEL_INPUT_PLACEHOLDER_REPLY: string;\n CHANNEL_INPUT_PLACEHOLDER_REPLY_IN_THREAD: string;\n CHANNEL_INPUT_PLACEHOLDER_REPLY_TO_THREAD: string;\n CHANNEL_INPUT_EDIT_OK: string;\n CHANNEL_INPUT_EDIT_CANCEL: string;\n /** ChannelInput > Attachments **/\n CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO: string;\n CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO: string;\n CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY: string;\n CHANNEL_INPUT_ATTACHMENT_FILES: string;\n CHANNEL_INPUT_REPLY_PREVIEW_TITLE: (user: SendbirdUser) => string;\n CHANNEL_INPUT_REPLY_PREVIEW_BODY: (message: SendbirdUserMessage | SendbirdFileMessage) => string;\n\n /** Channel > Message **/\n CHANNEL_MESSAGE_COPY: string;\n CHANNEL_MESSAGE_EDIT: string;\n CHANNEL_MESSAGE_SAVE: string;\n CHANNEL_MESSAGE_DELETE: string;\n CHANNEL_MESSAGE_REPLY: string;\n CHANNEL_MESSAGE_THREAD: string;\n /** Channel > Message > Delete confirm **/\n CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE: string;\n CHANNEL_MESSAGE_DELETE_CONFIRM_OK: string;\n CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL: string;\n /** Channel > Message > Failed **/\n CHANNEL_MESSAGE_FAILED_RETRY: string;\n CHANNEL_MESSAGE_FAILED_REMOVE: string;\n\n /** Voice message **/\n VOICE_MESSAGE: string;\n VOICE_MESSAGE_INPUT_CANCEL: string;\n };\n REACTION: {\n MORE_USERS: (userCountDifference: number) => string;\n };\n FILE_VIEWER: {\n TITLE: (message: SendbirdFileMessage) => string;\n SUBTITLE: (message: SendbirdFileMessage) => string;\n };\n PLACEHOLDER: {\n NO_BANNED_USERS: string;\n NO_USERS: string;\n NO_CHANNELS: string;\n NO_MESSAGES: string;\n NO_MUTED_MEMBERS: string;\n NO_MUTED_PARTICIPANTS: string;\n NO_RESULTS_FOUND: string;\n ERROR: {\n MESSAGE: string;\n RETRY_LABEL: string;\n };\n };\n DIALOG: {\n ALERT_DEFAULT_OK: string;\n\n ALERT_PERMISSIONS_TITLE: string;\n ALERT_PERMISSIONS_MESSAGE: (permission: string, appName: string) => string;\n ALERT_PERMISSIONS_OK: string;\n\n PROMPT_DEFAULT_OK: string;\n PROMPT_DEFAULT_CANCEL: string;\n PROMPT_DEFAULT_PLACEHOLDER: string;\n };\n TOAST: {\n COPY_OK: string;\n DOWNLOAD_START: string;\n DOWNLOAD_OK: string;\n DOWNLOAD_ERROR: string;\n OPEN_CAMERA_ERROR: string;\n OPEN_PHOTO_LIBRARY_ERROR: string;\n OPEN_FILES_ERROR: string;\n RESEND_MSG_ERROR: string;\n DELETE_MSG_ERROR: string;\n SEND_MSG_ERROR: string;\n USER_MUTED_ERROR: string;\n CHANNEL_FROZEN_ERROR: string;\n UPDATE_MSG_ERROR: string;\n TURN_ON_NOTIFICATIONS_ERROR: string;\n TURN_OFF_NOTIFICATIONS_ERROR: string;\n LEAVE_CHANNEL_ERROR: string;\n UNKNOWN_ERROR: string;\n GET_CHANNEL_ERROR: string;\n FIND_PARENT_MSG_ERROR: string;\n THREAD_PARENT_MESSAGE_DELETED_ERROR: string;\n FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR: (uploadSizeLimit: string) => string;\n };\n PROFILE_CARD: {\n BUTTON_MESSAGE: string;\n BODY_LABEL: string;\n BODY: (user: SendbirdUser | SendbirdMember | SendbirdReactedUserInfo) => string;\n };\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["StringSet.type.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMember,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdParticipant,\n SendbirdReactedUserInfo,\n SendbirdUser,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\n\n/**\n * StringSet interface\n * Do not configure over 3 depths (for overrides easy)\n * */\nexport interface StringSet {\n OPEN_CHANNEL: {\n /** OpenChannel > Header */\n HEADER_TITLE: (channel: SendbirdOpenChannel) => string;\n HEADER_SUBTITLE: (channel: SendbirdOpenChannel) => string;\n\n /** OpenChannel > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n\n /** OpenChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n };\n OPEN_CHANNEL_PARTICIPANTS: {\n /** OpenChannelParticipants > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_SETTINGS: {\n /** OpenChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** OpenChannelSettings > Info */\n INFO_URL: string;\n\n /** OpenChannelSettings > Menu */\n MENU_MODERATION: string;\n MENU_PARTICIPANTS: string;\n MENU_DELETE_CHANNEL: string;\n\n /** OpenChannelSettings > Dialog */\n DIALOG_CHANNEL_DELETE_CONFIRM_TITLE: string;\n DIALOG_CHANNEL_DELETE_CONFIRM_OK: string;\n DIALOG_CHANNEL_DELETE_CONFIRM_CANCEL: string;\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n OPEN_CHANNEL_LIST: {\n /** OpenChannelList > Header */\n HEADER_TITLE: string;\n\n /** OpenChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (channel: SendbirdOpenChannel) => string;\n };\n OPEN_CHANNEL_CREATE: {\n /** OpenChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** OpenChannelCreate > ProfileInput */\n PLACEHOLDER: string;\n\n /** OpenChannelCreate > Dialog */\n DIALOG_IMAGE_MENU_REMOVE: string;\n DIALOG_IMAGE_MENU_CAMERA: string;\n DIALOG_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n OPEN_CHANNEL_MODERATION: {\n /** OpenChannelModeration > Header */\n HEADER_TITLE: string;\n\n /** OpenChannelModeration > Menu */\n MENU_OPERATORS: string;\n MENU_MUTED_PARTICIPANTS: string;\n MENU_BANNED_USERS: string;\n };\n OPEN_CHANNEL_BANNED_USERS: {\n /** OpenChannelBannedUsers > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_MUTED_PARTICIPANTS: {\n /** OpenChannelMutedMembers > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_OPERATORS: {\n /** OpenChannelOperators > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_REGISTER_OPERATOR: {\n /** OpenChannelRegisterOperator > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: (params: { selectedUsers: Array<SendbirdParticipant> }) => string;\n };\n GROUP_CHANNEL: {\n /** GroupChannel > Header */\n HEADER_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannel > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n LIST_FLOATING_UNREAD_MSG: (unreadMessageCount: number) => string;\n LIST_NEW_LINE: string;\n\n /** GroupChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n /** GroupChannel > Suggested mention list */\n MENTION_LIMITED: (mentionLimit: number) => string;\n };\n GROUP_CHANNEL_THREAD: {\n /** GroupChannelThread > Header */\n HEADER_TITLE: string;\n HEADER_SUBTITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelThread > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n\n /** GroupChannelThread > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n PARENT_MESSAGE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n REPLY_COUNT: (replyCount: number, maxReplyCount?: number) => string;\n\n /** GroupChannelThread > Suggested mention list */\n MENTION_LIMITED: (mentionLimit: number) => string;\n };\n GROUP_CHANNEL_SETTINGS: {\n /** GroupChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** GroupChannelSettings > Menu */\n MENU_MODERATION: string;\n MENU_MEMBERS: string;\n MENU_SEARCH: string;\n MENU_LEAVE_CHANNEL: string;\n MENU_NOTIFICATION: string;\n MENU_NOTIFICATION_LABEL_ON: string;\n MENU_NOTIFICATION_LABEL_OFF: string;\n MENU_NOTIFICATION_LABEL_MENTION_ONLY: string;\n\n /** GroupChannelSettings > Dialog */\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n GROUP_CHANNEL_NOTIFICATIONS: {\n /** GroupChannelNotifications > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelNotifications > Menu */\n MENU_NOTIFICATIONS: string;\n MENU_NOTIFICATIONS_DESC: string;\n MENU_NOTIFICATIONS_OPTION_ALL: string;\n MENU_NOTIFICATIONS_OPTION_MENTION_ONLY: string;\n };\n GROUP_CHANNEL_MODERATION: {\n /** GroupChannelModeration > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelModeration > Menu */\n MENU_OPERATORS: string;\n MENU_MUTED_MEMBERS: string;\n MENU_BANNED_USERS: string;\n MENU_FREEZE_CHANNEL: string;\n };\n GROUP_CHANNEL_OPERATORS: {\n /** GroupChannelOperators > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_REGISTER_OPERATOR: {\n /** GroupChannelRegisterOperator > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: (params: { selectedUsers: Array<SendbirdMember> }) => string;\n };\n GROUP_CHANNEL_MUTED_MEMBERS: {\n /** GroupChannelMutedMembers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_BANNED_USERS: {\n /** GroupChannelBannedUsers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_LIST: {\n /** GroupChannelList > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel: SendbirdGroupChannel, locale?: Locale) => string;\n CHANNEL_PREVIEW_BODY: (channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelList > TypeSelector > Header */\n TYPE_SELECTOR_HEADER_TITLE: string;\n /** GroupChannelList > TypeSelector > Type string */\n TYPE_SELECTOR_GROUP: string;\n TYPE_SELECTOR_SUPER_GROUP: string;\n TYPE_SELECTOR_BROADCAST: string;\n\n /** GroupChannelList > Dialog > Channel */\n DIALOG_CHANNEL_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_NOTIFICATION: (channel?: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_LEAVE: string;\n };\n GROUP_CHANNEL_MEMBERS: {\n /** GroupChannelMembers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_INVITE: {\n /** GroupChannelInvite > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n GROUP_CHANNEL_CREATE: {\n /** GroupChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n MESSAGE_SEARCH: {\n /** MessageSearch > Header */\n HEADER_INPUT_PLACEHOLDER: string;\n HEADER_RIGHT: string;\n\n /** MessageSearch > Search result item */\n SEARCH_RESULT_ITEM_TITLE: (message: SendbirdBaseMessage) => string;\n SEARCH_RESULT_ITEM_TITLE_CAPTION: (message: SendbirdBaseMessage, locale?: Locale) => string;\n SEARCH_RESULT_ITEM_BODY: (message: SendbirdBaseMessage) => string;\n };\n // UI\n LABELS: {\n PERMISSION_APP_NAME: string;\n PERMISSION_CAMERA: string;\n PERMISSION_DEVICE_STORAGE: string;\n PERMISSION_MICROPHONE: string;\n\n USER_NO_NAME: string;\n CHANNEL_NO_MEMBERS: string;\n TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;\n REPLY_FROM_SENDER_TO_RECEIVER: (\n replyMessage: SendbirdUserMessage | SendbirdFileMessage,\n parentMessage: SendbirdUserMessage | SendbirdFileMessage,\n currentUserId?: string,\n ) => string;\n MESSAGE_UNAVAILABLE: string;\n\n USER_BAR_ME_POSTFIX: string;\n USER_BAR_OPERATOR: string;\n\n REGISTER_AS_OPERATOR: string;\n UNREGISTER_OPERATOR: string;\n MUTE: string;\n UNMUTE: string;\n BAN: string;\n UNBAN: string;\n\n /** ChannelMessageList **/\n CHANNEL_MESSAGE_LIST_FROZEN: string;\n\n /** ChannelInput **/\n CHANNEL_INPUT_PLACEHOLDER_ACTIVE: string;\n CHANNEL_INPUT_PLACEHOLDER_DISABLED: string;\n CHANNEL_INPUT_PLACEHOLDER_MUTED: string;\n CHANNEL_INPUT_PLACEHOLDER_REPLY: string;\n CHANNEL_INPUT_PLACEHOLDER_REPLY_IN_THREAD: string;\n CHANNEL_INPUT_PLACEHOLDER_REPLY_TO_THREAD: string;\n CHANNEL_INPUT_EDIT_OK: string;\n CHANNEL_INPUT_EDIT_CANCEL: string;\n /** ChannelInput > Attachments **/\n CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO: string;\n CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO: string;\n CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY: string;\n CHANNEL_INPUT_ATTACHMENT_FILES: string;\n CHANNEL_INPUT_REPLY_PREVIEW_TITLE: (user: SendbirdUser) => string;\n CHANNEL_INPUT_REPLY_PREVIEW_BODY: (message: SendbirdUserMessage | SendbirdFileMessage) => string;\n\n /** Channel > Message **/\n CHANNEL_MESSAGE_COPY: string;\n CHANNEL_MESSAGE_EDIT: string;\n CHANNEL_MESSAGE_SAVE: string;\n CHANNEL_MESSAGE_DELETE: string;\n CHANNEL_MESSAGE_REPLY: string;\n CHANNEL_MESSAGE_THREAD: string;\n CHANNEL_MESSAGE_MARK_AS_UNREAD: string;\n /** Channel > Message > Delete confirm **/\n CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE: string;\n CHANNEL_MESSAGE_DELETE_CONFIRM_OK: string;\n CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL: string;\n /** Channel > Message > Failed **/\n CHANNEL_MESSAGE_FAILED_RETRY: string;\n CHANNEL_MESSAGE_FAILED_REMOVE: string;\n\n /** Voice message **/\n VOICE_MESSAGE: string;\n VOICE_MESSAGE_INPUT_CANCEL: string;\n };\n REACTION: {\n MORE_USERS: (userCountDifference: number) => string;\n };\n FILE_VIEWER: {\n TITLE: (message: SendbirdFileMessage) => string;\n SUBTITLE: (message: SendbirdFileMessage) => string;\n };\n PLACEHOLDER: {\n NO_BANNED_USERS: string;\n NO_USERS: string;\n NO_CHANNELS: string;\n NO_MESSAGES: string;\n NO_MUTED_MEMBERS: string;\n NO_MUTED_PARTICIPANTS: string;\n NO_RESULTS_FOUND: string;\n ERROR: {\n MESSAGE: string;\n RETRY_LABEL: string;\n };\n };\n DIALOG: {\n ALERT_DEFAULT_OK: string;\n\n ALERT_PERMISSIONS_TITLE: string;\n ALERT_PERMISSIONS_MESSAGE: (permission: string, appName: string) => string;\n ALERT_PERMISSIONS_OK: string;\n\n PROMPT_DEFAULT_OK: string;\n PROMPT_DEFAULT_CANCEL: string;\n PROMPT_DEFAULT_PLACEHOLDER: string;\n };\n TOAST: {\n COPY_OK: string;\n DOWNLOAD_START: string;\n DOWNLOAD_OK: string;\n DOWNLOAD_ERROR: string;\n OPEN_CAMERA_ERROR: string;\n OPEN_PHOTO_LIBRARY_ERROR: string;\n OPEN_FILES_ERROR: string;\n RESEND_MSG_ERROR: string;\n DELETE_MSG_ERROR: string;\n SEND_MSG_ERROR: string;\n USER_MUTED_ERROR: string;\n CHANNEL_FROZEN_ERROR: string;\n UPDATE_MSG_ERROR: string;\n TURN_ON_NOTIFICATIONS_ERROR: string;\n TURN_OFF_NOTIFICATIONS_ERROR: string;\n LEAVE_CHANNEL_ERROR: string;\n UNKNOWN_ERROR: string;\n GET_CHANNEL_ERROR: string;\n FIND_PARENT_MSG_ERROR: string;\n THREAD_PARENT_MESSAGE_DELETED_ERROR: string;\n FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR: (uploadSizeLimit: string) => string;\n };\n PROFILE_CARD: {\n BUTTON_MESSAGE: string;\n BODY_LABEL: string;\n BODY: (user: SendbirdUser | SendbirdMember | SendbirdReactedUserInfo) => string;\n };\n}\n"],"mappings":"","ignoreList":[]}
@@ -104,7 +104,16 @@ const createBaseStringSet = ({
104
104
  GROUP_CHANNEL: {
105
105
  HEADER_TITLE: (uid, channel) => (0, _uikitUtils.getGroupChannelTitle)(uid, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),
106
106
  LIST_DATE_SEPARATOR: (date, locale) => (0, _uikitUtils.getDateSeparatorFormat)(date, locale ?? dateLocale),
107
- LIST_BUTTON_NEW_MSG: newMessages => `${newMessages.length} new messages`,
107
+ LIST_BUTTON_NEW_MSG: newMessages => {
108
+ const count = newMessages.length;
109
+ const displayCount = count >= 100 ? '99+' : count;
110
+ return count === 1 ? `${displayCount} new message` : `${displayCount} new messages`;
111
+ },
112
+ LIST_FLOATING_UNREAD_MSG: unreadMessageCount => {
113
+ const displayCount = unreadMessageCount >= 100 ? '99+' : unreadMessageCount;
114
+ return unreadMessageCount === 1 ? `${displayCount} unread message` : `${displayCount} unread messages`;
115
+ },
116
+ LIST_NEW_LINE: 'New messages',
108
117
  MESSAGE_BUBBLE_TIME: (message, locale) => (0, _uikitUtils.getMessageTimeFormat)(new Date(message.createdAt), locale ?? dateLocale),
109
118
  MESSAGE_BUBBLE_FILE_TITLE: message => message.name,
110
119
  MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',
@@ -117,7 +126,11 @@ const createBaseStringSet = ({
117
126
  HEADER_TITLE: 'Thread',
118
127
  HEADER_SUBTITLE: (uid, channel) => (0, _uikitUtils.getGroupChannelTitle)(uid, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),
119
128
  LIST_DATE_SEPARATOR: (date, locale) => (0, _uikitUtils.getDateSeparatorFormat)(date, locale ?? dateLocale),
120
- LIST_BUTTON_NEW_MSG: newMessages => `${newMessages.length} new messages`,
129
+ LIST_BUTTON_NEW_MSG: newMessages => {
130
+ const count = newMessages.length;
131
+ const displayCount = count >= 100 ? '99+' : count;
132
+ return count === 1 ? `${displayCount} new message` : `${displayCount} new messages`;
133
+ },
121
134
  MESSAGE_BUBBLE_TIME: (message, locale) => (0, _uikitUtils.getMessageTimeFormat)(new Date(message.createdAt), locale ?? dateLocale),
122
135
  MESSAGE_BUBBLE_FILE_TITLE: message => message.name,
123
136
  MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',
@@ -284,6 +297,7 @@ const createBaseStringSet = ({
284
297
  CHANNEL_MESSAGE_DELETE: 'Delete',
285
298
  CHANNEL_MESSAGE_REPLY: 'Reply',
286
299
  CHANNEL_MESSAGE_THREAD: 'Reply in thread',
300
+ CHANNEL_MESSAGE_MARK_AS_UNREAD: 'Mark as unread',
287
301
  CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE: 'Delete message?',
288
302
  CHANNEL_MESSAGE_DELETE_CONFIRM_OK: 'Delete',
289
303
  CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL: 'Cancel',