stream-chat-react 6.13.0 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/browser.full-bundle.js +1990 -759
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +5 -5
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Attachment/Attachment.d.ts +8 -8
- package/dist/components/Attachment/Attachment.d.ts.map +1 -1
- package/dist/components/Attachment/AttachmentActions.d.ts +3 -4
- package/dist/components/Attachment/AttachmentActions.d.ts.map +1 -1
- package/dist/components/Attachment/Audio.d.ts +4 -5
- package/dist/components/Attachment/Audio.d.ts.map +1 -1
- package/dist/components/Attachment/Card.d.ts +2 -0
- package/dist/components/Attachment/Card.d.ts.map +1 -1
- package/dist/components/Attachment/Card.js +22 -2
- package/dist/components/Attachment/FileAttachment.d.ts +4 -5
- package/dist/components/Attachment/FileAttachment.d.ts.map +1 -1
- package/dist/components/Attachment/utils.d.ts +22 -22
- package/dist/components/Attachment/utils.d.ts.map +1 -1
- package/dist/components/Attachment/utils.js +3 -1
- package/dist/components/AutoCompleteTextarea/Item.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Item.js +2 -1
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +1 -2
- package/dist/components/Avatar/Avatar.d.ts +4 -4
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Channel/Channel.d.ts +47 -45
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +104 -26
- package/dist/components/Channel/channelState.d.ts +32 -15
- package/dist/components/Channel/channelState.d.ts.map +1 -1
- package/dist/components/Channel/channelState.js +24 -2
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +3 -3
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +8 -1
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts +2 -2
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useEditMessageHandler.d.ts +3 -3
- package/dist/components/Channel/hooks/useEditMessageHandler.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useIsMounted.d.ts +0 -1
- package/dist/components/Channel/hooks/useIsMounted.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useMentionsHandlers.d.ts +3 -3
- package/dist/components/Channel/hooks/useMentionsHandlers.d.ts.map +1 -1
- package/dist/components/Channel/utils.d.ts +5 -0
- package/dist/components/Channel/utils.d.ts.map +1 -0
- package/dist/components/Channel/utils.js +19 -0
- package/dist/components/ChannelHeader/ChannelHeader.d.ts +4 -2
- package/dist/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
- package/dist/components/ChannelHeader/ChannelHeader.js +5 -6
- package/dist/components/ChannelHeader/icons.d.ts +4 -0
- package/dist/components/ChannelHeader/icons.d.ts.map +1 -0
- package/dist/components/ChannelHeader/icons.js +9 -0
- package/dist/components/ChannelList/ChannelList.d.ts +19 -20
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +1 -0
- package/dist/components/ChannelList/ChannelListMessenger.d.ts +5 -5
- package/dist/components/ChannelList/ChannelListMessenger.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +2 -2
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +4 -5
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts +2 -3
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/utils.d.ts +6 -6
- package/dist/components/ChannelList/utils.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +9 -9
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +6 -10
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +2 -3
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts +2 -2
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -1
- package/dist/components/ChannelPreview/utils.d.ts +4 -5
- package/dist/components/ChannelPreview/utils.d.ts.map +1 -1
- package/dist/components/ChannelSearch/ChannelSearch.d.ts +16 -14
- package/dist/components/ChannelSearch/ChannelSearch.d.ts.map +1 -1
- package/dist/components/ChannelSearch/ChannelSearch.js +3 -3
- package/dist/components/ChannelSearch/SearchInput.d.ts +9 -7
- package/dist/components/ChannelSearch/SearchInput.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchInput.js +2 -2
- package/dist/components/ChannelSearch/SearchResults.d.ts +14 -14
- package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
- package/dist/components/ChannelSearch/utils.d.ts +3 -3
- package/dist/components/ChannelSearch/utils.d.ts.map +1 -1
- package/dist/components/ChannelSearch/utils.js +1 -3
- package/dist/components/Chat/Chat.d.ts +4 -4
- package/dist/components/Chat/Chat.d.ts.map +1 -1
- package/dist/components/Chat/Chat.js +2 -1
- package/dist/components/Chat/hooks/useChat.d.ts +9 -9
- package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useChat.js +14 -9
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts +2 -2
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.js +2 -1
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +15 -13
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
- package/dist/components/ChatAutoComplete/ChatAutoComplete.js +1 -1
- package/dist/components/DateSeparator/DateSeparator.d.ts +0 -1
- package/dist/components/DateSeparator/DateSeparator.d.ts.map +1 -1
- package/dist/components/EventComponent/EventComponent.d.ts +4 -4
- package/dist/components/EventComponent/EventComponent.d.ts.map +1 -1
- package/dist/components/Gallery/Gallery.d.ts +4 -5
- package/dist/components/Gallery/Gallery.d.ts.map +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +2 -2
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +16 -45
- package/dist/components/InfiniteScrollPaginator/index.d.ts +0 -2
- package/dist/components/InfiniteScrollPaginator/index.d.ts.map +1 -1
- package/dist/components/InfiniteScrollPaginator/index.js +0 -2
- package/dist/components/Message/FixedHeightMessage.d.ts +4 -5
- package/dist/components/Message/FixedHeightMessage.d.ts.map +1 -1
- package/dist/components/Message/Message.d.ts +2 -3
- package/dist/components/Message/Message.d.ts.map +1 -1
- package/dist/components/Message/Message.js +8 -7
- package/dist/components/Message/MessageCommerce.d.ts +2 -3
- package/dist/components/Message/MessageCommerce.d.ts.map +1 -1
- package/dist/components/Message/MessageDeleted.d.ts +4 -5
- package/dist/components/Message/MessageDeleted.d.ts.map +1 -1
- package/dist/components/Message/MessageLivestream.d.ts +2 -2
- package/dist/components/Message/MessageLivestream.d.ts.map +1 -1
- package/dist/components/Message/MessageOptions.d.ts +3 -3
- package/dist/components/Message/MessageOptions.d.ts.map +1 -1
- package/dist/components/Message/MessageOptions.js +1 -1
- package/dist/components/Message/MessageRepliesCountButton.d.ts.map +1 -1
- package/dist/components/Message/MessageRepliesCountButton.js +10 -24
- package/dist/components/Message/MessageSimple.d.ts +2 -3
- package/dist/components/Message/MessageSimple.d.ts.map +1 -1
- package/dist/components/Message/MessageSimple.js +4 -5
- package/dist/components/Message/MessageStatus.d.ts +2 -2
- package/dist/components/Message/MessageStatus.d.ts.map +1 -1
- package/dist/components/Message/MessageTeam.d.ts +2 -3
- package/dist/components/Message/MessageTeam.d.ts.map +1 -1
- package/dist/components/Message/MessageText.d.ts +4 -5
- package/dist/components/Message/MessageText.d.ts.map +1 -1
- package/dist/components/Message/MessageTimestamp.d.ts +4 -5
- package/dist/components/Message/MessageTimestamp.d.ts.map +1 -1
- package/dist/components/Message/QuotedMessage.d.ts +2 -3
- package/dist/components/Message/QuotedMessage.d.ts.map +1 -1
- package/dist/components/Message/QuotedMessage.js +3 -1
- package/dist/components/Message/hooks/useActionHandler.d.ts +2 -2
- package/dist/components/Message/hooks/useActionHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useDeleteHandler.d.ts +4 -4
- package/dist/components/Message/hooks/useDeleteHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useEditHandler.d.ts +0 -1
- package/dist/components/Message/hooks/useEditHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useFlagHandler.d.ts +5 -5
- package/dist/components/Message/hooks/useFlagHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useMentionsHandler.d.ts +6 -6
- package/dist/components/Message/hooks/useMentionsHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useMuteHandler.d.ts +5 -5
- package/dist/components/Message/hooks/useMuteHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useOpenThreadHandler.d.ts +2 -2
- package/dist/components/Message/hooks/useOpenThreadHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/usePinHandler.d.ts +4 -4
- package/dist/components/Message/hooks/usePinHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useReactionHandler.d.ts +3 -3
- package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useRetryHandler.d.ts +2 -2
- package/dist/components/Message/hooks/useRetryHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useUserHandler.d.ts +5 -6
- package/dist/components/Message/hooks/useUserHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useUserRole.d.ts +2 -2
- package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
- package/dist/components/Message/icons.d.ts +2 -3
- package/dist/components/Message/icons.d.ts.map +1 -1
- package/dist/components/Message/types.d.ts +25 -24
- package/dist/components/Message/types.d.ts.map +1 -1
- package/dist/components/Message/utils.d.ts +14 -14
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +9 -1
- package/dist/components/MessageActions/MessageActions.d.ts +3 -3
- package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActions.js +14 -8
- package/dist/components/MessageActions/MessageActionsBox.d.ts +6 -7
- package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +7 -7
- package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
- package/dist/components/MessageInput/DropzoneProvider.d.ts +2 -2
- package/dist/components/MessageInput/DropzoneProvider.d.ts.map +1 -1
- package/dist/components/MessageInput/EditMessageForm.d.ts +2 -3
- package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
- package/dist/components/MessageInput/EmojiPicker.d.ts +2 -3
- package/dist/components/MessageInput/EmojiPicker.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInput.d.ts +10 -10
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.d.ts +2 -3
- package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.js +27 -5
- package/dist/components/MessageInput/MessageInputSmall.d.ts +2 -3
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +27 -5
- package/dist/components/MessageInput/QuotedMessagePreview.d.ts +4 -5
- package/dist/components/MessageInput/QuotedMessagePreview.d.ts.map +1 -1
- package/dist/components/MessageInput/UploadsPreview.d.ts +2 -3
- package/dist/components/MessageInput/UploadsPreview.d.ts.map +1 -1
- package/dist/components/MessageInput/UploadsPreview.js +2 -16
- package/dist/components/MessageInput/hooks/useAttachments.d.ts +2 -3
- package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts +2 -2
- package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCommandTrigger.js +3 -1
- package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +2 -2
- package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCooldownTimer.js +19 -28
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts +2 -2
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +2 -3
- package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useFileUploads.d.ts +2 -3
- package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useImageUploads.d.ts +2 -2
- package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +11 -11
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.d.ts +2 -3
- package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts +3 -4
- package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +5 -5
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/utils.d.ts +8 -8
- package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -1
- package/dist/components/MessageInput/icons.d.ts +4 -4
- package/dist/components/MessageInput/icons.d.ts.map +1 -1
- package/dist/components/MessageList/ConnectionStatus.d.ts.map +1 -1
- package/dist/components/MessageList/GiphyPreviewMessage.d.ts +4 -5
- package/dist/components/MessageList/GiphyPreviewMessage.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.d.ts +13 -8
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +90 -24
- package/dist/components/MessageList/MessageListNotifications.d.ts +1 -0
- package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
- package/dist/components/MessageList/MessageListNotifications.js +2 -2
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +18 -8
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +152 -22
- package/dist/components/MessageList/hooks/index.d.ts +0 -1
- package/dist/components/MessageList/hooks/index.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/index.js +0 -1
- package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts +6 -7
- package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useEnrichedMessages.js +4 -4
- package/dist/components/MessageList/hooks/useGiphyPreview.d.ts +4 -5
- package/dist/components/MessageList/hooks/useGiphyPreview.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useLastReadData.d.ts +5 -5
- package/dist/components/MessageList/hooks/useLastReadData.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useMessageListElements.d.ts +6 -6
- package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useMessageListElements.js +1 -1
- package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts +4 -4
- package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts +2 -3
- package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useNewMessageNotification.js +6 -2
- package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts +2 -2
- package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/usePrependMessagesCount.js +2 -0
- package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts +6 -4
- package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/useScrollLocationLogic.js +9 -5
- package/dist/components/MessageList/hooks/useShouldForceScrollToBottom.d.ts +2 -2
- package/dist/components/MessageList/hooks/useShouldForceScrollToBottom.d.ts.map +1 -1
- package/dist/components/MessageList/utils.d.ts +35 -17
- package/dist/components/MessageList/utils.d.ts.map +1 -1
- package/dist/components/MessageList/utils.js +31 -23
- package/dist/components/Reactions/ReactionSelector.d.ts +4 -4
- package/dist/components/Reactions/ReactionSelector.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionsList.d.ts +4 -5
- package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/SimpleReactionsList.d.ts +4 -4
- package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/utils/utils.d.ts +0 -1
- package/dist/components/Reactions/utils/utils.d.ts.map +1 -1
- package/dist/components/Thread/Thread.d.ts +12 -10
- package/dist/components/Thread/Thread.d.ts.map +1 -1
- package/dist/components/Thread/Thread.js +6 -10
- package/dist/components/TypingIndicator/TypingIndicator.d.ts +4 -4
- package/dist/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
- package/dist/components/Window/Window.d.ts +4 -4
- package/dist/components/Window/Window.d.ts.map +1 -1
- package/dist/context/ChannelActionContext.d.ts +26 -26
- package/dist/context/ChannelActionContext.d.ts.map +1 -1
- package/dist/context/ChannelStateContext.d.ts +26 -21
- package/dist/context/ChannelStateContext.d.ts.map +1 -1
- package/dist/context/ChatContext.d.ts +15 -12
- package/dist/context/ChatContext.d.ts.map +1 -1
- package/dist/context/ComponentContext.d.ts +27 -27
- package/dist/context/ComponentContext.d.ts.map +1 -1
- package/dist/context/MessageContext.d.ts +18 -16
- package/dist/context/MessageContext.d.ts.map +1 -1
- package/dist/context/MessageInputContext.d.ts +7 -7
- package/dist/context/MessageInputContext.d.ts.map +1 -1
- package/dist/context/TypingContext.d.ts +8 -8
- package/dist/context/TypingContext.d.ts.map +1 -1
- package/dist/context/utils/getDisplayName.d.ts +0 -1
- package/dist/context/utils/getDisplayName.d.ts.map +1 -1
- package/dist/css/index.css +1 -1
- package/dist/i18n/Streami18n.d.ts +6 -4
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/Streami18n.js +5 -5
- package/dist/i18n/de.json +29 -27
- package/dist/i18n/en.json +4 -2
- package/dist/i18n/es.json +5 -2
- package/dist/i18n/fr.json +5 -2
- package/dist/i18n/hi.json +4 -2
- package/dist/i18n/it.json +5 -2
- package/dist/i18n/ja.json +4 -2
- package/dist/i18n/ko.json +4 -2
- package/dist/i18n/nl.json +4 -2
- package/dist/i18n/pt.json +22 -19
- package/dist/i18n/ru.json +6 -2
- package/dist/i18n/tr.json +4 -2
- package/dist/index.cjs.js +621 -364
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/Attachment.scss +6 -1
- package/dist/scss/Avatar.scss +1 -1
- package/dist/scss/ChannelHeader.scss +8 -13
- package/dist/scss/Gallery.scss +19 -0
- package/dist/scss/Message.scss +24 -13
- package/dist/scss/MessageInputFlat.scss +20 -0
- package/dist/scss/MessageList.scss +7 -0
- package/dist/scss/ReactionList.scss +2 -1
- package/dist/scss/ReactionSelector.scss +2 -1
- package/dist/scss/SimpleReactionsList.scss +2 -1
- package/dist/scss/SmallMessageInput.scss +34 -0
- package/dist/scss/Thread.scss +5 -1
- package/dist/scss/VirtualMessage.scss +6 -0
- package/dist/scss/_variables.scss +4 -5
- package/dist/stories/connected-user.stories.d.ts +4 -0
- package/dist/stories/connected-user.stories.d.ts.map +1 -0
- package/dist/stories/connected-user.stories.js +81 -0
- package/dist/stories/hello.stories.d.ts +3 -0
- package/dist/stories/hello.stories.d.ts.map +1 -0
- package/dist/stories/hello.stories.js +47 -0
- package/dist/stories/jump-to-message.stories.d.ts +4 -0
- package/dist/stories/jump-to-message.stories.d.ts.map +1 -0
- package/dist/stories/jump-to-message.stories.js +111 -0
- package/dist/stories/utils.d.ts +19 -0
- package/dist/stories/utils.d.ts.map +1 -0
- package/dist/stories/utils.js +5 -0
- package/dist/types/types.d.ts +30 -9
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils.d.ts +5 -5
- package/dist/utils.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +22 -14
- package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +0 -18
- package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts.map +0 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.js +0 -8
- package/dist/components/InfiniteScrollPaginator/ReverseInfiniteScroll.d.ts +0 -4
- package/dist/components/InfiniteScrollPaginator/ReverseInfiniteScroll.d.ts.map +0 -1
- package/dist/components/InfiniteScrollPaginator/ReverseInfiniteScroll.js +0 -14
- package/dist/components/MessageList/hooks/useCallLoadMore.d.ts +0 -3
- package/dist/components/MessageList/hooks/useCallLoadMore.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useCallLoadMore.js +0 -8
package/dist/index.cjs.js
CHANGED
|
@@ -30,7 +30,6 @@ var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
|
|
|
30
30
|
var PropTypes = require('prop-types');
|
|
31
31
|
var Textarea = require('react-textarea-autosize');
|
|
32
32
|
var getCaretCoordinates = require('textarea-caret');
|
|
33
|
-
var CustomEvent = require('custom-event');
|
|
34
33
|
var reactIs = require('react-is');
|
|
35
34
|
var debounce = require('lodash.debounce');
|
|
36
35
|
var throttle = require('lodash.throttle');
|
|
@@ -104,7 +103,6 @@ var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeO
|
|
|
104
103
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
105
104
|
var Textarea__default = /*#__PURE__*/_interopDefaultLegacy(Textarea);
|
|
106
105
|
var getCaretCoordinates__default = /*#__PURE__*/_interopDefaultLegacy(getCaretCoordinates);
|
|
107
|
-
var CustomEvent__default = /*#__PURE__*/_interopDefaultLegacy(CustomEvent);
|
|
108
106
|
var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
|
|
109
107
|
var throttle__default = /*#__PURE__*/_interopDefaultLegacy(throttle);
|
|
110
108
|
var deepequal__default = /*#__PURE__*/_interopDefaultLegacy(deepequal);
|
|
@@ -323,10 +321,47 @@ var withTranslationContext = function (Component) {
|
|
|
323
321
|
return WithTranslationContextComponent;
|
|
324
322
|
};
|
|
325
323
|
|
|
324
|
+
var ChannelStateContext = React__default['default'].createContext(undefined);
|
|
325
|
+
var ChannelStateProvider = function (_a) {
|
|
326
|
+
var children = _a.children, value = _a.value;
|
|
327
|
+
return (React__default['default'].createElement(ChannelStateContext.Provider, { value: value }, children));
|
|
328
|
+
};
|
|
329
|
+
var useChannelStateContext = function (componentName) {
|
|
330
|
+
var contextValue = React.useContext(ChannelStateContext);
|
|
331
|
+
if (!contextValue) {
|
|
332
|
+
console.warn("The useChannelStateContext hook was called outside of the ChannelStateContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the " + componentName + " component.");
|
|
333
|
+
return {};
|
|
334
|
+
}
|
|
335
|
+
return contextValue;
|
|
336
|
+
};
|
|
337
|
+
/**
|
|
338
|
+
* Typescript currently does not support partial inference, so if ChannelStateContext
|
|
339
|
+
* typing is desired while using the HOC withChannelStateContext, the Props for the
|
|
340
|
+
* wrapped component must be provided as the first generic.
|
|
341
|
+
*/
|
|
342
|
+
var withChannelStateContext = function (Component) {
|
|
343
|
+
var WithChannelStateContextComponent = function (props) {
|
|
344
|
+
var channelStateContext = useChannelStateContext();
|
|
345
|
+
return React__default['default'].createElement(Component, __assign({}, props, channelStateContext));
|
|
346
|
+
};
|
|
347
|
+
WithChannelStateContextComponent.displayName = (Component.displayName ||
|
|
348
|
+
Component.name ||
|
|
349
|
+
'Component').replace('Base', '');
|
|
350
|
+
return WithChannelStateContextComponent;
|
|
351
|
+
};
|
|
352
|
+
|
|
326
353
|
var UnMemoizedCard = function (props) {
|
|
327
|
-
var image_url = props.image_url, og_scrape_url = props.og_scrape_url, text = props.text, thumb_url = props.thumb_url, title = props.title, title_link = props.title_link, type = props.type;
|
|
354
|
+
var giphy = props.giphy, image_url = props.image_url, og_scrape_url = props.og_scrape_url, text = props.text, thumb_url = props.thumb_url, title = props.title, title_link = props.title_link, type = props.type;
|
|
328
355
|
var t = useTranslationContext('Card').t;
|
|
356
|
+
var giphyVersionName = useChannelStateContext('Card').giphyVersion;
|
|
329
357
|
var image = thumb_url || image_url;
|
|
358
|
+
var dimensions = {};
|
|
359
|
+
if (type === 'giphy' && typeof giphy !== 'undefined') {
|
|
360
|
+
var giphyVersion = giphy[giphyVersionName];
|
|
361
|
+
image = giphyVersion.url;
|
|
362
|
+
dimensions.height = giphyVersion.height;
|
|
363
|
+
dimensions.width = giphyVersion.width;
|
|
364
|
+
}
|
|
330
365
|
var trimUrl = function (url) {
|
|
331
366
|
if (url !== undefined && url !== null) {
|
|
332
367
|
var trimmedUrl = url.replace(/^(?:https?:\/\/)?(?:www\.)?/i, '').split('/')[0];
|
|
@@ -344,7 +379,7 @@ var UnMemoizedCard = function (props) {
|
|
|
344
379
|
}
|
|
345
380
|
return (React__default['default'].createElement("div", { className: "str-chat__message-attachment-card str-chat__message-attachment-card--" + type },
|
|
346
381
|
image && (React__default['default'].createElement("div", { className: 'str-chat__message-attachment-card--header' },
|
|
347
|
-
React__default['default'].createElement("img", { alt: image, src: image }))),
|
|
382
|
+
React__default['default'].createElement("img", __assign({ alt: image, src: image }, dimensions)))),
|
|
348
383
|
React__default['default'].createElement("div", { className: 'str-chat__message-attachment-card--content' },
|
|
349
384
|
React__default['default'].createElement("div", { className: 'str-chat__message-attachment-card--flex' },
|
|
350
385
|
title && React__default['default'].createElement("div", { className: 'str-chat__message-attachment-card--title' }, title),
|
|
@@ -463,7 +498,9 @@ var ImageComponent = function (props) {
|
|
|
463
498
|
};
|
|
464
499
|
|
|
465
500
|
var SUPPORTED_VIDEO_FORMATS = ['video/mp4', 'video/ogg', 'video/webm', 'video/quicktime'];
|
|
466
|
-
var isGalleryAttachmentType = function (output) {
|
|
501
|
+
var isGalleryAttachmentType = function (output) {
|
|
502
|
+
return output.images != null;
|
|
503
|
+
};
|
|
467
504
|
var isAudioAttachment = function (attachment) { return attachment.type === 'audio'; };
|
|
468
505
|
var isFileAttachment = function (attachment) {
|
|
469
506
|
return attachment.type === 'file' ||
|
|
@@ -637,10 +674,12 @@ var Item = /*#__PURE__*/React__default['default'].forwardRef(function Item(props
|
|
|
637
674
|
onFocus: selectItem,
|
|
638
675
|
onMouseEnter: selectItem,
|
|
639
676
|
ref: innerRef
|
|
677
|
+
}, /*#__PURE__*/React__default['default'].createElement("div", {
|
|
678
|
+
tabIndex: -1
|
|
640
679
|
}, /*#__PURE__*/React__default['default'].createElement(Component, {
|
|
641
680
|
entity: item,
|
|
642
681
|
selected: selected
|
|
643
|
-
})));
|
|
682
|
+
}))));
|
|
644
683
|
});
|
|
645
684
|
|
|
646
685
|
var ComponentContext = React__default['default'].createContext(undefined);
|
|
@@ -1372,7 +1411,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1372
1411
|
value: newText
|
|
1373
1412
|
}, function () {
|
|
1374
1413
|
// fire onChange event after successful selection
|
|
1375
|
-
var e = new
|
|
1414
|
+
var e = new CustomEvent('change', {
|
|
1376
1415
|
bubbles: true
|
|
1377
1416
|
});
|
|
1378
1417
|
|
|
@@ -1427,7 +1466,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1427
1466
|
value: valueToReplace
|
|
1428
1467
|
}, function () {
|
|
1429
1468
|
// fire onChange event after successful selection
|
|
1430
|
-
var e = new
|
|
1469
|
+
var e = new CustomEvent('change', {
|
|
1431
1470
|
bubbles: true
|
|
1432
1471
|
});
|
|
1433
1472
|
|
|
@@ -1914,7 +1953,9 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1914
1953
|
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
1915
1954
|
className: "rta ".concat(dataLoading === true ? 'rta--loading' : '', " ").concat(containerClassName || ''),
|
|
1916
1955
|
style: containerStyle
|
|
1917
|
-
}, this.renderSuggestionListContainer(), /*#__PURE__*/React__default['default'].createElement(Textarea__default['default'], _extends__default['default']({
|
|
1956
|
+
}, this.renderSuggestionListContainer(), /*#__PURE__*/React__default['default'].createElement(Textarea__default['default'], _extends__default['default']({
|
|
1957
|
+
"data-testid": "message-input"
|
|
1958
|
+
}, this._cleanUpProps(), {
|
|
1918
1959
|
className: "rta__textarea ".concat(className || ''),
|
|
1919
1960
|
maxRows: maxRows,
|
|
1920
1961
|
onBlur: this._onClickAndBlurHandler,
|
|
@@ -2000,7 +2041,9 @@ var channelReducer = function (state, action) {
|
|
|
2000
2041
|
}
|
|
2001
2042
|
case 'copyMessagesFromChannel': {
|
|
2002
2043
|
var channel = action.channel, parentId = action.parentId;
|
|
2003
|
-
return __assign(__assign({}, state), { messages: __spreadArray([], channel.state.messages), pinnedMessages: __spreadArray([], channel.state.pinnedMessages),
|
|
2044
|
+
return __assign(__assign({}, state), { messages: __spreadArray([], channel.state.messages), pinnedMessages: __spreadArray([], channel.state.pinnedMessages),
|
|
2045
|
+
// copying messages from channel happens with new message - this resets the suppressAutoscroll
|
|
2046
|
+
suppressAutoscroll: false, threadMessages: parentId
|
|
2004
2047
|
? __assign({}, channel.state.threads)[parentId] || []
|
|
2005
2048
|
: state.threadMessages });
|
|
2006
2049
|
}
|
|
@@ -2012,10 +2055,23 @@ var channelReducer = function (state, action) {
|
|
|
2012
2055
|
var channel = action.channel;
|
|
2013
2056
|
return __assign(__assign({}, state), { loading: false, members: __assign({}, channel.state.members), messages: __spreadArray([], channel.state.messages), pinnedMessages: __spreadArray([], channel.state.pinnedMessages), read: __assign({}, channel.state.read), watcherCount: channel.state.watcher_count, watchers: __assign({}, channel.state.watchers) });
|
|
2014
2057
|
}
|
|
2058
|
+
case 'jumpToLatestMessage': {
|
|
2059
|
+
return __assign(__assign({}, state), { hasMoreNewer: false, highlightedMessageId: undefined, loading: false, suppressAutoscroll: false });
|
|
2060
|
+
}
|
|
2061
|
+
case 'jumpToMessageFinished': {
|
|
2062
|
+
return __assign(__assign({}, state), { hasMoreNewer: action.hasMoreNewer, highlightedMessageId: action.highlightedMessageId });
|
|
2063
|
+
}
|
|
2064
|
+
case 'clearHighlightedMessage': {
|
|
2065
|
+
return __assign(__assign({}, state), { highlightedMessageId: undefined });
|
|
2066
|
+
}
|
|
2015
2067
|
case 'loadMoreFinished': {
|
|
2016
2068
|
var hasMore = action.hasMore, messages = action.messages;
|
|
2017
2069
|
return __assign(__assign({}, state), { hasMore: hasMore, loadingMore: false, messages: messages });
|
|
2018
2070
|
}
|
|
2071
|
+
case 'loadMoreNewerFinished': {
|
|
2072
|
+
var hasMoreNewer = action.hasMoreNewer, messages = action.messages;
|
|
2073
|
+
return __assign(__assign({}, state), { hasMoreNewer: hasMoreNewer, loadingMoreNewer: false, messages: messages });
|
|
2074
|
+
}
|
|
2019
2075
|
case 'loadMoreThreadFinished': {
|
|
2020
2076
|
var threadHasMore = action.threadHasMore, threadMessages = action.threadMessages;
|
|
2021
2077
|
return __assign(__assign({}, state), { threadHasMore: threadHasMore, threadLoadingMore: false, threadMessages: threadMessages });
|
|
@@ -2030,7 +2086,12 @@ var channelReducer = function (state, action) {
|
|
|
2030
2086
|
}
|
|
2031
2087
|
case 'setLoadingMore': {
|
|
2032
2088
|
var loadingMore = action.loadingMore;
|
|
2033
|
-
|
|
2089
|
+
// supporess the autoscroll behavior
|
|
2090
|
+
return __assign(__assign({}, state), { loadingMore: loadingMore, suppressAutoscroll: true });
|
|
2091
|
+
}
|
|
2092
|
+
case 'setLoadingMoreNewer': {
|
|
2093
|
+
var loadingMoreNewer = action.loadingMoreNewer;
|
|
2094
|
+
return __assign(__assign({}, state), { loadingMoreNewer: loadingMoreNewer });
|
|
2034
2095
|
}
|
|
2035
2096
|
case 'setThread': {
|
|
2036
2097
|
var message = action.message;
|
|
@@ -2056,12 +2117,14 @@ var channelReducer = function (state, action) {
|
|
|
2056
2117
|
var initialState = {
|
|
2057
2118
|
error: null,
|
|
2058
2119
|
hasMore: true,
|
|
2120
|
+
hasMoreNewer: false,
|
|
2059
2121
|
loading: true,
|
|
2060
2122
|
loadingMore: false,
|
|
2061
2123
|
members: {},
|
|
2062
2124
|
messages: [],
|
|
2063
2125
|
pinnedMessages: [],
|
|
2064
2126
|
read: {},
|
|
2127
|
+
suppressAutoscroll: false,
|
|
2065
2128
|
thread: null,
|
|
2066
2129
|
threadHasMore: true,
|
|
2067
2130
|
threadLoadingMore: false,
|
|
@@ -2096,7 +2159,7 @@ var getStrippedEmojiData = function (data) { return (__assign(__assign({}, data)
|
|
|
2096
2159
|
|
|
2097
2160
|
var useCreateChannelStateContext = function (value) {
|
|
2098
2161
|
var _a;
|
|
2099
|
-
var acceptedFiles = value.acceptedFiles, channel = value.channel, _b = value.channelCapabilitiesArray, channelCapabilitiesArray = _b === void 0 ? [] : _b, channelConfig = value.channelConfig, dragAndDropWindow = value.dragAndDropWindow, error = value.error, hasMore = value.hasMore, loading = value.loading, loadingMore = value.loadingMore, maxNumberOfFiles = value.maxNumberOfFiles, members = value.members, _c = value.messages, messages = _c === void 0 ? [] : _c, multipleUploads = value.multipleUploads, mutes = value.mutes, notifications = value.notifications, pinnedMessages = value.pinnedMessages, quotedMessage = value.quotedMessage, _d = value.read, read = _d === void 0 ? {} : _d, skipMessageDataMemoization = value.skipMessageDataMemoization, thread = value.thread, threadHasMore = value.threadHasMore, threadLoadingMore = value.threadLoadingMore, _e = value.threadMessages, threadMessages = _e === void 0 ? [] : _e, watcherCount = value.watcherCount, watcher_count = value.watcher_count, watchers = value.watchers;
|
|
2162
|
+
var acceptedFiles = value.acceptedFiles, channel = value.channel, _b = value.channelCapabilitiesArray, channelCapabilitiesArray = _b === void 0 ? [] : _b, channelConfig = value.channelConfig, dragAndDropWindow = value.dragAndDropWindow, giphyVersion = value.giphyVersion, error = value.error, hasMore = value.hasMore, hasMoreNewer = value.hasMoreNewer, suppressAutoscroll = value.suppressAutoscroll, highlightedMessageId = value.highlightedMessageId, loading = value.loading, loadingMore = value.loadingMore, maxNumberOfFiles = value.maxNumberOfFiles, members = value.members, _c = value.messages, messages = _c === void 0 ? [] : _c, multipleUploads = value.multipleUploads, mutes = value.mutes, notifications = value.notifications, pinnedMessages = value.pinnedMessages, quotedMessage = value.quotedMessage, _d = value.read, read = _d === void 0 ? {} : _d, skipMessageDataMemoization = value.skipMessageDataMemoization, thread = value.thread, threadHasMore = value.threadHasMore, threadLoadingMore = value.threadLoadingMore, _e = value.threadMessages, threadMessages = _e === void 0 ? [] : _e, watcherCount = value.watcherCount, watcher_count = value.watcher_count, watchers = value.watchers;
|
|
2100
2163
|
var channelId = channel.cid;
|
|
2101
2164
|
var lastRead = channel.initialized && ((_a = channel.lastRead()) === null || _a === void 0 ? void 0 : _a.getTime());
|
|
2102
2165
|
var membersLength = Object.keys(members || []).length;
|
|
@@ -2143,7 +2206,10 @@ var useCreateChannelStateContext = function (value) {
|
|
|
2143
2206
|
channelConfig: channelConfig,
|
|
2144
2207
|
dragAndDropWindow: dragAndDropWindow,
|
|
2145
2208
|
error: error,
|
|
2209
|
+
giphyVersion: giphyVersion,
|
|
2146
2210
|
hasMore: hasMore,
|
|
2211
|
+
hasMoreNewer: hasMoreNewer,
|
|
2212
|
+
highlightedMessageId: highlightedMessageId,
|
|
2147
2213
|
loading: loading,
|
|
2148
2214
|
loadingMore: loadingMore,
|
|
2149
2215
|
maxNumberOfFiles: maxNumberOfFiles,
|
|
@@ -2155,6 +2221,7 @@ var useCreateChannelStateContext = function (value) {
|
|
|
2155
2221
|
pinnedMessages: pinnedMessages,
|
|
2156
2222
|
quotedMessage: quotedMessage,
|
|
2157
2223
|
read: read,
|
|
2224
|
+
suppressAutoscroll: suppressAutoscroll,
|
|
2158
2225
|
thread: thread,
|
|
2159
2226
|
threadHasMore: threadHasMore,
|
|
2160
2227
|
threadLoadingMore: threadLoadingMore,
|
|
@@ -2166,6 +2233,8 @@ var useCreateChannelStateContext = function (value) {
|
|
|
2166
2233
|
channelId,
|
|
2167
2234
|
error,
|
|
2168
2235
|
hasMore,
|
|
2236
|
+
hasMoreNewer,
|
|
2237
|
+
highlightedMessageId,
|
|
2169
2238
|
lastRead,
|
|
2170
2239
|
loading,
|
|
2171
2240
|
loadingMore,
|
|
@@ -2177,6 +2246,7 @@ var useCreateChannelStateContext = function (value) {
|
|
|
2177
2246
|
readUsersLength,
|
|
2178
2247
|
readUsersLastReads,
|
|
2179
2248
|
skipMessageDataMemoization,
|
|
2249
|
+
suppressAutoscroll,
|
|
2180
2250
|
thread,
|
|
2181
2251
|
threadHasMore,
|
|
2182
2252
|
threadLoadingMore,
|
|
@@ -2308,35 +2378,6 @@ var LoadingIndicator = React__default['default'].memo(UnMemoizedLoadingIndicator
|
|
|
2308
2378
|
return prevProps.color === nextProps.color && prevProps.size === nextProps.size;
|
|
2309
2379
|
});
|
|
2310
2380
|
|
|
2311
|
-
var ChannelStateContext = React__default['default'].createContext(undefined);
|
|
2312
|
-
var ChannelStateProvider = function (_a) {
|
|
2313
|
-
var children = _a.children, value = _a.value;
|
|
2314
|
-
return (React__default['default'].createElement(ChannelStateContext.Provider, { value: value }, children));
|
|
2315
|
-
};
|
|
2316
|
-
var useChannelStateContext = function (componentName) {
|
|
2317
|
-
var contextValue = React.useContext(ChannelStateContext);
|
|
2318
|
-
if (!contextValue) {
|
|
2319
|
-
console.warn("The useChannelStateContext hook was called outside of the ChannelStateContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the " + componentName + " component.");
|
|
2320
|
-
return {};
|
|
2321
|
-
}
|
|
2322
|
-
return contextValue;
|
|
2323
|
-
};
|
|
2324
|
-
/**
|
|
2325
|
-
* Typescript currently does not support partial inference, so if ChannelStateContext
|
|
2326
|
-
* typing is desired while using the HOC withChannelStateContext, the Props for the
|
|
2327
|
-
* wrapped component must be provided as the first generic.
|
|
2328
|
-
*/
|
|
2329
|
-
var withChannelStateContext = function (Component) {
|
|
2330
|
-
var WithChannelStateContextComponent = function (props) {
|
|
2331
|
-
var channelStateContext = useChannelStateContext();
|
|
2332
|
-
return React__default['default'].createElement(Component, __assign({}, props, channelStateContext));
|
|
2333
|
-
};
|
|
2334
|
-
WithChannelStateContextComponent.displayName = (Component.displayName ||
|
|
2335
|
-
Component.name ||
|
|
2336
|
-
'Component').replace('Base', '');
|
|
2337
|
-
return WithChannelStateContextComponent;
|
|
2338
|
-
};
|
|
2339
|
-
|
|
2340
2381
|
var useUserRole = function (message, onlySenderCanEdit, disableQuotedMessages) {
|
|
2341
2382
|
var _a, _b, _c;
|
|
2342
2383
|
var _d = useChannelStateContext('useUserRole'), channel = _d.channel, _e = _d.channelCapabilities, channelCapabilities = _e === void 0 ? {} : _e, channelConfig = _d.channelConfig;
|
|
@@ -2550,10 +2591,15 @@ var getMessageActions = function (actions, _a) {
|
|
|
2550
2591
|
}
|
|
2551
2592
|
return messageActionsAfterPermission;
|
|
2552
2593
|
};
|
|
2553
|
-
var
|
|
2594
|
+
var ACTIONS_NOT_WORKING_IN_THREAD = ['pin', 'react', 'reply'];
|
|
2595
|
+
var showMessageActionsBox = function (actions, inThread) {
|
|
2554
2596
|
if (actions.length === 0) {
|
|
2555
2597
|
return false;
|
|
2556
2598
|
}
|
|
2599
|
+
if (inThread &&
|
|
2600
|
+
actions.filter(function (action) { return !ACTIONS_NOT_WORKING_IN_THREAD.includes(action); }).length === 0) {
|
|
2601
|
+
return false;
|
|
2602
|
+
}
|
|
2557
2603
|
if (actions.length === 1 && (actions.includes('react') || actions.includes('reply'))) {
|
|
2558
2604
|
return false;
|
|
2559
2605
|
}
|
|
@@ -2587,6 +2633,7 @@ var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
|
2587
2633
|
if (!messagesAreEqual)
|
|
2588
2634
|
return false;
|
|
2589
2635
|
var deepEqualProps = deepequal__default['default'](nextProps.readBy, prevProps.readBy) &&
|
|
2636
|
+
deepequal__default['default'](nextProps.highlighted, prevProps.highlighted) &&
|
|
2590
2637
|
deepequal__default['default'](nextProps.groupStyles, prevProps.groupStyles) && // last 3 messages can have different group styles
|
|
2591
2638
|
deepequal__default['default'](nextProps.mutes, prevProps.mutes) &&
|
|
2592
2639
|
deepequal__default['default'](nextProps.lastReceivedId, prevProps.lastReceivedId);
|
|
@@ -2601,6 +2648,8 @@ var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
|
2601
2648
|
var nextLastReceivedId = nextProps.lastReceivedId, nextMessage = nextProps.message;
|
|
2602
2649
|
if (prevProps.editing !== nextProps.editing)
|
|
2603
2650
|
return false;
|
|
2651
|
+
if (prevProps.highlighted !== nextProps.highlighted)
|
|
2652
|
+
return false;
|
|
2604
2653
|
if (prevProps.endOfGroup !== nextProps.endOfGroup)
|
|
2605
2654
|
return false;
|
|
2606
2655
|
if (((_a = prevProps.mutes) === null || _a === void 0 ? void 0 : _a.length) !== ((_b = nextProps.mutes) === null || _b === void 0 ? void 0 : _b.length))
|
|
@@ -2811,7 +2860,12 @@ var MessageActions = function (props) {
|
|
|
2811
2860
|
var message = propMessage || contextMessage;
|
|
2812
2861
|
var _d = React.useState(false), actionsBoxOpen = _d[0], setActionsBoxOpen = _d[1];
|
|
2813
2862
|
var isMuted = React.useCallback(function () { return isUserMuted(message, mutes); }, [message, mutes]);
|
|
2814
|
-
var hideOptions = React.useCallback(function () {
|
|
2863
|
+
var hideOptions = React.useCallback(function (event) {
|
|
2864
|
+
if (event instanceof KeyboardEvent && event.key !== 'Escape') {
|
|
2865
|
+
return;
|
|
2866
|
+
}
|
|
2867
|
+
setActionsBoxOpen(false);
|
|
2868
|
+
}, []);
|
|
2815
2869
|
var messageActions = getMessageActions();
|
|
2816
2870
|
var messageDeletedAt = !!(message === null || message === void 0 ? void 0 : message.deleted_at);
|
|
2817
2871
|
React.useEffect(function () {
|
|
@@ -2825,13 +2879,14 @@ var MessageActions = function (props) {
|
|
|
2825
2879
|
}
|
|
2826
2880
|
}, [hideOptions, messageDeletedAt]);
|
|
2827
2881
|
React.useEffect(function () {
|
|
2828
|
-
if (actionsBoxOpen)
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2882
|
+
if (!actionsBoxOpen)
|
|
2883
|
+
return;
|
|
2884
|
+
document.addEventListener('click', hideOptions);
|
|
2885
|
+
document.addEventListener('keyup', hideOptions);
|
|
2886
|
+
return function () {
|
|
2832
2887
|
document.removeEventListener('click', hideOptions);
|
|
2833
|
-
|
|
2834
|
-
|
|
2888
|
+
document.removeEventListener('keyup', hideOptions);
|
|
2889
|
+
};
|
|
2835
2890
|
}, [actionsBoxOpen, hideOptions]);
|
|
2836
2891
|
if (!messageActions.length && !customMessageActions)
|
|
2837
2892
|
return null;
|
|
@@ -2846,7 +2901,7 @@ var MessageActionsWrapper = function (props) {
|
|
|
2846
2901
|
var wrapperClass = customWrapperClass || defaultWrapperClass;
|
|
2847
2902
|
var onClickOptionsAction = function (event) {
|
|
2848
2903
|
event.stopPropagation();
|
|
2849
|
-
setActionsBoxOpen(
|
|
2904
|
+
setActionsBoxOpen(function (prev) { return !prev; });
|
|
2850
2905
|
};
|
|
2851
2906
|
var wrapperProps = {
|
|
2852
2907
|
className: wrapperClass,
|
|
@@ -2863,7 +2918,7 @@ var UnMemoizedMessageOptions = function (props) {
|
|
|
2863
2918
|
var _g = useMessageContext('MessageOptions'), customMessageActions = _g.customMessageActions, getMessageActions = _g.getMessageActions, contextHandleOpenThread = _g.handleOpenThread, initialMessage = _g.initialMessage, isMyMessage = _g.isMyMessage, message = _g.message, onReactionListClick = _g.onReactionListClick, threadList = _g.threadList;
|
|
2864
2919
|
var handleOpenThread = propHandleOpenThread || contextHandleOpenThread;
|
|
2865
2920
|
var messageActions = getMessageActions();
|
|
2866
|
-
var showActionsBox = showMessageActionsBox(messageActions) || !!customMessageActions;
|
|
2921
|
+
var showActionsBox = showMessageActionsBox(messageActions, threadList) || !!customMessageActions;
|
|
2867
2922
|
var shouldShowReactions = messageActions.indexOf(MESSAGE_ACTIONS.react) > -1;
|
|
2868
2923
|
var shouldShowReplies = messageActions.indexOf(MESSAGE_ACTIONS.reply) > -1 && displayReplies && !threadList;
|
|
2869
2924
|
if (!message.type ||
|
|
@@ -2895,32 +2950,18 @@ var MessageOptions = React__default['default'].memo(UnMemoizedMessageOptions);
|
|
|
2895
2950
|
var UnMemoizedMessageRepliesCountButton = function (props) {
|
|
2896
2951
|
var labelPlural = props.labelPlural, labelSingle = props.labelSingle, onClick = props.onClick, _a = props.reply_count, reply_count = _a === void 0 ? 0 : _a;
|
|
2897
2952
|
var t = useTranslationContext('MessageRepliesCountButton').t;
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
}
|
|
2904
|
-
else {
|
|
2905
|
-
singleReplyText = t('1 reply');
|
|
2906
|
-
}
|
|
2907
|
-
}
|
|
2908
|
-
if (reply_count && reply_count > 1) {
|
|
2909
|
-
if (labelPlural) {
|
|
2910
|
-
pluralReplyText = reply_count + " " + labelPlural;
|
|
2911
|
-
}
|
|
2912
|
-
else {
|
|
2913
|
-
pluralReplyText = t('{{ replyCount }} replies', {
|
|
2914
|
-
replyCount: reply_count,
|
|
2915
|
-
});
|
|
2916
|
-
}
|
|
2953
|
+
if (!reply_count)
|
|
2954
|
+
return null;
|
|
2955
|
+
var replyCountText = t('replyCount', { count: reply_count });
|
|
2956
|
+
if (labelPlural && reply_count > 1) {
|
|
2957
|
+
replyCountText = reply_count + " " + labelPlural;
|
|
2917
2958
|
}
|
|
2918
|
-
if (
|
|
2919
|
-
|
|
2920
|
-
React__default['default'].createElement(ReplyIcon, null),
|
|
2921
|
-
reply_count === 1 ? singleReplyText : pluralReplyText));
|
|
2959
|
+
else if (labelSingle) {
|
|
2960
|
+
replyCountText = "1 " + labelSingle;
|
|
2922
2961
|
}
|
|
2923
|
-
return
|
|
2962
|
+
return (React__default['default'].createElement("button", { className: 'str-chat__message-replies-count-button', "data-testid": 'replies-count-button', onClick: onClick },
|
|
2963
|
+
React__default['default'].createElement(ReplyIcon, null),
|
|
2964
|
+
replyCountText));
|
|
2924
2965
|
};
|
|
2925
2966
|
var MessageRepliesCountButton = React__default['default'].memo(UnMemoizedMessageRepliesCountButton);
|
|
2926
2967
|
|
|
@@ -3528,6 +3569,7 @@ var QuotedMessage = function () {
|
|
|
3528
3569
|
var _c = useComponentContext('QuotedMessage'), Attachment = _c.Attachment, ContextAvatar = _c.Avatar;
|
|
3529
3570
|
var _d = useMessageContext('QuotedMessage'), isMyMessage = _d.isMyMessage, message = _d.message;
|
|
3530
3571
|
var userLanguage = useTranslationContext('QuotedMessage').userLanguage;
|
|
3572
|
+
var jumpToMessage = useChannelActionContext('QuotedMessage').jumpToMessage;
|
|
3531
3573
|
var Avatar$1 = ContextAvatar || Avatar;
|
|
3532
3574
|
var quoted_message = message.quoted_message;
|
|
3533
3575
|
if (!quoted_message)
|
|
@@ -3542,7 +3584,7 @@ var QuotedMessage = function () {
|
|
|
3542
3584
|
if (!quotedMessageText && !quotedMessageAttachment)
|
|
3543
3585
|
return null;
|
|
3544
3586
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
3545
|
-
React__default['default'].createElement("div", { className: "" + (isMyMessage() ? 'quoted-message mine' : 'quoted-message') },
|
|
3587
|
+
React__default['default'].createElement("div", { className: "" + (isMyMessage() ? 'quoted-message mine' : 'quoted-message'), onClick: function () { return jumpToMessage(quoted_message.id); } },
|
|
3546
3588
|
quoted_message.user && (React__default['default'].createElement(Avatar$1, { image: quoted_message.user.image, name: quoted_message.user.name || quoted_message.user.id, size: 20, user: quoted_message.user })),
|
|
3547
3589
|
React__default['default'].createElement("div", { className: 'quoted-message-inner' },
|
|
3548
3590
|
quotedMessageAttachment && React__default['default'].createElement(Attachment, { attachments: [quotedMessageAttachment] }),
|
|
@@ -3659,7 +3701,9 @@ var useCommandTrigger = function () {
|
|
|
3659
3701
|
});
|
|
3660
3702
|
var result = selectedCommands.slice(0, 10);
|
|
3661
3703
|
if (onReady)
|
|
3662
|
-
onReady(result.filter(function (result) {
|
|
3704
|
+
onReady(result.filter(function (result) {
|
|
3705
|
+
return result.name !== undefined;
|
|
3706
|
+
}), query);
|
|
3663
3707
|
return result;
|
|
3664
3708
|
},
|
|
3665
3709
|
output: function (entity) { return ({
|
|
@@ -4137,22 +4181,9 @@ var SendButton = function (_a) {
|
|
|
4137
4181
|
var UploadsPreview = function () {
|
|
4138
4182
|
var _a = useChannelStateContext('UploadsPreview'), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
|
|
4139
4183
|
var messageInput = useMessageInputContext('UploadsPreview');
|
|
4140
|
-
var fileOrder = messageInput.fileOrder, fileUploads = messageInput.fileUploads, imageOrder = messageInput.imageOrder, imageUploads = messageInput.imageUploads, numberOfUploads = messageInput.numberOfUploads, removeFile = messageInput.removeFile, removeImage = messageInput.removeImage,
|
|
4184
|
+
var fileOrder = messageInput.fileOrder, fileUploads = messageInput.fileUploads, imageOrder = messageInput.imageOrder, imageUploads = messageInput.imageUploads, numberOfUploads = messageInput.numberOfUploads, removeFile = messageInput.removeFile, removeImage = messageInput.removeImage, uploadFile = messageInput.uploadFile, uploadImage = messageInput.uploadImage, uploadNewFiles = messageInput.uploadNewFiles;
|
|
4141
4185
|
var imagesToPreview = imageOrder.map(function (id) { return imageUploads[id]; });
|
|
4142
4186
|
var filesToPreview = fileOrder.map(function (id) { return fileUploads[id]; });
|
|
4143
|
-
var device = useBreakpoint().device;
|
|
4144
|
-
React.useEffect(function () {
|
|
4145
|
-
var elements = document.getElementsByClassName('str-chat__send-button');
|
|
4146
|
-
var sendButton = elements.item(0);
|
|
4147
|
-
if (sendButton instanceof HTMLButtonElement) {
|
|
4148
|
-
if ((numberOfUploads && !text) || device !== 'full') {
|
|
4149
|
-
sendButton.style.display = 'block';
|
|
4150
|
-
}
|
|
4151
|
-
else {
|
|
4152
|
-
sendButton.style.display = 'none';
|
|
4153
|
-
}
|
|
4154
|
-
}
|
|
4155
|
-
}, [device, numberOfUploads, text]);
|
|
4156
4187
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
4157
4188
|
imageOrder.length > 0 && (React__default['default'].createElement(reactFileUtils.ImagePreviewer, { disabled: !multipleUploads ||
|
|
4158
4189
|
(maxNumberOfFiles !== undefined && numberOfUploads >= maxNumberOfFiles), handleFiles: uploadNewFiles, handleRemove: removeImage, handleRetry: uploadImage, imageUploads: imagesToPreview, multiple: multipleUploads })),
|
|
@@ -4185,7 +4216,7 @@ var UnMemoizedChatAutoComplete = function (props) {
|
|
|
4185
4216
|
innerRef.current = ref;
|
|
4186
4217
|
}
|
|
4187
4218
|
}, [innerRef]);
|
|
4188
|
-
return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', keycodeSubmitKeys: messageInput.keycodeSubmitKeys, listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
|
|
4219
|
+
return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', keycodeSubmitKeys: messageInput.keycodeSubmitKeys, listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onBlur: props.onBlur, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
|
|
4189
4220
|
};
|
|
4190
4221
|
var ChatAutoComplete = React__default['default'].memo(UnMemoizedChatAutoComplete);
|
|
4191
4222
|
|
|
@@ -4244,37 +4275,28 @@ var CooldownTimer = function (props) {
|
|
|
4244
4275
|
});
|
|
4245
4276
|
return React__default['default'].createElement("div", null, seconds === 0 ? null : seconds);
|
|
4246
4277
|
};
|
|
4247
|
-
var rolesToSkip = {
|
|
4248
|
-
admin: true,
|
|
4249
|
-
channel_moderator: true,
|
|
4250
|
-
moderator: true,
|
|
4251
|
-
};
|
|
4252
|
-
var checkUserRoles = function (globalRole, channelRole) {
|
|
4253
|
-
var skipGlobal = !!rolesToSkip[globalRole];
|
|
4254
|
-
var skipChannel = !!rolesToSkip[channelRole];
|
|
4255
|
-
return skipGlobal || skipChannel;
|
|
4256
|
-
};
|
|
4257
4278
|
var useCooldownTimer = function () {
|
|
4258
|
-
var
|
|
4259
|
-
var client = useChatContext('useCooldownTimer').client;
|
|
4279
|
+
var latestMessageDatesByChannels = useChatContext('useCooldownTimer').latestMessageDatesByChannels;
|
|
4260
4280
|
var channel = useChannelStateContext('useCooldownTimer').channel;
|
|
4261
|
-
var
|
|
4262
|
-
|
|
4263
|
-
var
|
|
4264
|
-
var
|
|
4265
|
-
var skipCooldown = checkUserRoles(globalRole, channelRole);
|
|
4281
|
+
var _a = (channel.data ||
|
|
4282
|
+
{}), cooldownInterval = _a.cooldown, own_capabilities = _a.own_capabilities;
|
|
4283
|
+
var _b = React.useState(), cooldownRemaining = _b[0], setCooldownRemaining = _b[1];
|
|
4284
|
+
var skipCooldown = !(own_capabilities === null || own_capabilities === void 0 ? void 0 : own_capabilities.includes('slow-mode'));
|
|
4266
4285
|
React.useEffect(function () {
|
|
4267
|
-
var
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4286
|
+
var latestMessageDate = latestMessageDatesByChannels[channel.cid];
|
|
4287
|
+
if (!cooldownInterval || !latestMessageDate) {
|
|
4288
|
+
return;
|
|
4289
|
+
}
|
|
4290
|
+
var remainingCooldown = Math.round(cooldownInterval - (new Date().getTime() - latestMessageDate.getTime()) / 1000);
|
|
4291
|
+
if (remainingCooldown > 0 && !skipCooldown) {
|
|
4292
|
+
setCooldownRemaining(remainingCooldown);
|
|
4293
|
+
}
|
|
4294
|
+
}, [channel.id, cooldownInterval, latestMessageDatesByChannels[channel.cid]]);
|
|
4295
|
+
return {
|
|
4296
|
+
cooldownInterval: cooldownInterval || 0,
|
|
4297
|
+
cooldownRemaining: cooldownRemaining,
|
|
4298
|
+
setCooldownRemaining: setCooldownRemaining,
|
|
4299
|
+
};
|
|
4278
4300
|
};
|
|
4279
4301
|
|
|
4280
4302
|
var useEmojiIndex = function () {
|
|
@@ -5071,19 +5093,39 @@ var QuotedMessagePreview = function (props) {
|
|
|
5071
5093
|
|
|
5072
5094
|
var MessageInputFlat = function () {
|
|
5073
5095
|
var _a = useChannelStateContext('MessageInputFlat'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
5096
|
+
var setQuotedMessage = useChannelActionContext('MessageInputFlat').setQuotedMessage;
|
|
5074
5097
|
var t = useTranslationContext('MessageInputFlat').t;
|
|
5075
|
-
var
|
|
5098
|
+
var channel = useChatContext('MessageInputFlat').channel;
|
|
5099
|
+
var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
5076
5100
|
var _c = useComponentContext('MessageInputFlat'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconLarge : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _g === void 0 ? QuotedMessagePreview : _g, _h = _c.SendButton, SendButton$1 = _h === void 0 ? SendButton : _h;
|
|
5077
|
-
|
|
5101
|
+
React.useEffect(function () {
|
|
5102
|
+
var handleQuotedMessageUpdate = function (e) {
|
|
5103
|
+
var _a;
|
|
5104
|
+
if (((_a = e.message) === null || _a === void 0 ? void 0 : _a.id) !== (quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.id))
|
|
5105
|
+
return;
|
|
5106
|
+
if (e.type === 'message.deleted') {
|
|
5107
|
+
setQuotedMessage(undefined);
|
|
5108
|
+
return;
|
|
5109
|
+
}
|
|
5110
|
+
setQuotedMessage(e.message);
|
|
5111
|
+
};
|
|
5112
|
+
channel === null || channel === void 0 ? void 0 : channel.on('message.deleted', handleQuotedMessageUpdate);
|
|
5113
|
+
channel === null || channel === void 0 ? void 0 : channel.on('message.updated', handleQuotedMessageUpdate);
|
|
5114
|
+
return function () {
|
|
5115
|
+
channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
|
|
5116
|
+
channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
|
|
5117
|
+
};
|
|
5118
|
+
}, [channel, quotedMessage]);
|
|
5119
|
+
return (React__default['default'].createElement("div", { className: "str-chat__input-flat " + (SendButton$1 ? 'str-chat__input-flat--send-button-active' : '') + " " + (quotedMessage && !quotedMessage.parent_id ? 'str-chat__input-flat-quoted' : '') + "\n " + (numberOfUploads ? 'str-chat__input-flat-has-attachments' : '') + "\n " },
|
|
5078
5120
|
React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
|
|
5079
5121
|
quotedMessage && !quotedMessage.parent_id && (React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage })),
|
|
5080
5122
|
React__default['default'].createElement("div", { className: 'str-chat__input-flat-wrapper' },
|
|
5123
|
+
isUploadEnabled && React__default['default'].createElement(UploadsPreview, null),
|
|
5081
5124
|
React__default['default'].createElement("div", { className: 'str-chat__input-flat--textarea-wrapper' },
|
|
5082
|
-
isUploadEnabled && React__default['default'].createElement(UploadsPreview, null),
|
|
5083
5125
|
React__default['default'].createElement("div", { className: 'str-chat__emojiselect-wrapper' },
|
|
5084
5126
|
React__default['default'].createElement(Tooltip, null, emojiPickerIsOpen ? t('Close emoji picker') : t('Open emoji picker')),
|
|
5085
5127
|
React__default['default'].createElement("button", { "aria-label": 'Emoji picker', className: 'str-chat__input-flat-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker }, cooldownRemaining ? (React__default['default'].createElement("div", { className: 'str-chat__input-flat-cooldown' },
|
|
5086
|
-
React__default['default'].createElement(CooldownTimer$1, { cooldownInterval:
|
|
5128
|
+
React__default['default'].createElement(CooldownTimer$1, { cooldownInterval: cooldownRemaining, setCooldownRemaining: setCooldownRemaining }))) : (React__default['default'].createElement(EmojiIcon, null)))),
|
|
5087
5129
|
React__default['default'].createElement(EmojiPicker, null),
|
|
5088
5130
|
React__default['default'].createElement(ChatAutoComplete, null),
|
|
5089
5131
|
isUploadEnabled && !cooldownRemaining && (React__default['default'].createElement("div", { className: 'str-chat__fileupload-wrapper', "data-testid": 'fileinput' },
|
|
@@ -5219,18 +5261,38 @@ var MessageInput = React__default['default'].memo(UnMemoizedMessageInput);
|
|
|
5219
5261
|
|
|
5220
5262
|
var MessageInputSmall = function () {
|
|
5221
5263
|
var _a = useChannelStateContext('MessageInputSmall'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
5264
|
+
var setQuotedMessage = useChannelActionContext('MessageInputSmall').setQuotedMessage;
|
|
5222
5265
|
var t = useTranslationContext('MessageInputSmall').t;
|
|
5223
|
-
var
|
|
5266
|
+
var channel = useChatContext('MessageInputSmall').channel;
|
|
5267
|
+
var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
5224
5268
|
var _c = useComponentContext('MessageInputSmall'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconSmall : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.SendButton, SendButton$1 = _g === void 0 ? SendButton : _g, _h = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _h === void 0 ? QuotedMessagePreview : _h;
|
|
5269
|
+
React.useEffect(function () {
|
|
5270
|
+
var handleQuotedMessageUpdate = function (e) {
|
|
5271
|
+
var _a;
|
|
5272
|
+
if (!(quotedMessage && ((_a = e.message) === null || _a === void 0 ? void 0 : _a.id) === quotedMessage.id))
|
|
5273
|
+
return;
|
|
5274
|
+
if (e.type === 'message.deleted') {
|
|
5275
|
+
setQuotedMessage(undefined);
|
|
5276
|
+
return;
|
|
5277
|
+
}
|
|
5278
|
+
setQuotedMessage(e.message);
|
|
5279
|
+
};
|
|
5280
|
+
channel === null || channel === void 0 ? void 0 : channel.on('message.deleted', handleQuotedMessageUpdate);
|
|
5281
|
+
channel === null || channel === void 0 ? void 0 : channel.on('message.updated', handleQuotedMessageUpdate);
|
|
5282
|
+
return function () {
|
|
5283
|
+
channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
|
|
5284
|
+
channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
|
|
5285
|
+
};
|
|
5286
|
+
}, [channel, quotedMessage]);
|
|
5225
5287
|
return (React__default['default'].createElement("div", { className: 'str-chat__small-message-input__wrapper' },
|
|
5226
5288
|
React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
|
|
5227
|
-
React__default['default'].createElement("div", { className: "str-chat__small-message-input " + (SendButton$1 ? 'str-chat__small-message-input--send-button-active' :
|
|
5289
|
+
React__default['default'].createElement("div", { className: "str-chat__small-message-input " + (SendButton$1 ? 'str-chat__small-message-input--send-button-active' : '') + " " + (quotedMessage && quotedMessage.parent_id ? 'str-chat__input-flat-quoted' : '') + " " + (numberOfUploads ? 'str-chat__small-message-input-has-attachments' : '') + " " },
|
|
5228
5290
|
quotedMessage && quotedMessage.parent_id && (React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage })),
|
|
5291
|
+
isUploadEnabled && React__default['default'].createElement(UploadsPreview, null),
|
|
5229
5292
|
React__default['default'].createElement("div", { className: 'str-chat__small-message-input--textarea-wrapper' },
|
|
5230
|
-
isUploadEnabled && React__default['default'].createElement(UploadsPreview, null),
|
|
5231
5293
|
React__default['default'].createElement(ChatAutoComplete, null),
|
|
5232
5294
|
cooldownRemaining ? (React__default['default'].createElement("div", { className: 'str-chat__input-small-cooldown' },
|
|
5233
|
-
React__default['default'].createElement(CooldownTimer$1, { cooldownInterval:
|
|
5295
|
+
React__default['default'].createElement(CooldownTimer$1, { cooldownInterval: cooldownRemaining, setCooldownRemaining: setCooldownRemaining }))) : (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
5234
5296
|
isUploadEnabled && (React__default['default'].createElement("div", { className: 'str-chat__fileupload-wrapper', "data-testid": 'fileinput' },
|
|
5235
5297
|
React__default['default'].createElement(Tooltip, null, maxFilesLeft
|
|
5236
5298
|
? t('Attach files')
|
|
@@ -5492,9 +5554,8 @@ var SimpleReactionsList = React__default['default'].memo(UnMemoizedSimpleReactio
|
|
|
5492
5554
|
|
|
5493
5555
|
var MessageSimpleWithContext = function (props) {
|
|
5494
5556
|
var _a;
|
|
5495
|
-
var additionalMessageInputProps = props.additionalMessageInputProps, clearEditingState = props.clearEditingState, editing = props.editing, endOfGroup = props.endOfGroup, firstOfGroup = props.firstOfGroup, groupedByUser = props.groupedByUser, handleAction = props.handleAction, handleOpenThread = props.handleOpenThread, handleRetry = props.handleRetry, isMyMessage = props.isMyMessage, isReactionEnabled = props.isReactionEnabled, message = props.message, onUserClick = props.onUserClick, onUserHover = props.onUserHover, reactionSelectorRef = props.reactionSelectorRef, showDetailedReactions = props.showDetailedReactions, threadList = props.threadList;
|
|
5557
|
+
var additionalMessageInputProps = props.additionalMessageInputProps, clearEditingState = props.clearEditingState, editing = props.editing, endOfGroup = props.endOfGroup, firstOfGroup = props.firstOfGroup, groupedByUser = props.groupedByUser, handleAction = props.handleAction, handleOpenThread = props.handleOpenThread, handleRetry = props.handleRetry, highlighted = props.highlighted, isMyMessage = props.isMyMessage, isReactionEnabled = props.isReactionEnabled, message = props.message, onUserClick = props.onUserClick, onUserHover = props.onUserHover, reactionSelectorRef = props.reactionSelectorRef, showDetailedReactions = props.showDetailedReactions, threadList = props.threadList;
|
|
5496
5558
|
var _b = useComponentContext('MessageSimple'), Attachment = _b.Attachment, _c = _b.Avatar, Avatar$1 = _c === void 0 ? Avatar : _c, _d = _b.EditMessageInput, EditMessageInput = _d === void 0 ? EditMessageForm : _d, _e = _b.MessageDeleted, MessageDeleted$1 = _e === void 0 ? MessageDeleted : _e, _f = _b.MessageOptions, MessageOptions$1 = _f === void 0 ? MessageOptions : _f, _g = _b.MessageRepliesCountButton, MessageRepliesCountButton$1 = _g === void 0 ? MessageRepliesCountButton : _g, _h = _b.MessageStatus, MessageStatus$1 = _h === void 0 ? MessageStatus : _h, _j = _b.MessageTimestamp, MessageTimestamp$1 = _j === void 0 ? MessageTimestamp : _j, _k = _b.ReactionSelector, ReactionSelector$1 = _k === void 0 ? ReactionSelector : _k, _l = _b.ReactionsList, ReactionsList$1 = _l === void 0 ? ReactionsList : _l;
|
|
5497
|
-
var messageWrapperRef = React.useRef(null);
|
|
5498
5559
|
var hasAttachment = messageHasAttachments(message);
|
|
5499
5560
|
var hasReactions = messageHasReactions(message);
|
|
5500
5561
|
var messageClasses = isMyMessage()
|
|
@@ -5509,7 +5570,7 @@ var MessageSimpleWithContext = function (props) {
|
|
|
5509
5570
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
5510
5571
|
editing && (React__default['default'].createElement(Modal, { onClose: clearEditingState, open: editing },
|
|
5511
5572
|
React__default['default'].createElement(MessageInput, __assign({ clearEditingState: clearEditingState, Input: EditMessageInput, message: message }, additionalMessageInputProps)))),
|
|
5512
|
-
React__default['default'].createElement("div", { className: ("\n\t\t\t\t\t\t" + messageClasses + "\n\t\t\t\t\t\tstr-chat__message--" + message.type + "\n\t\t\t\t\t\tstr-chat__message--" + message.status + "\n\t\t\t\t\t\t" + (message.text ? 'str-chat__message--has-text' : 'has-no-text') + "\n\t\t\t\t\t\t" + (hasAttachment ? 'str-chat__message--has-attachment' : '') + "\n " + (hasReactions && isReactionEnabled ? 'str-chat__message--with-reactions' : '') + "\n " + (message.pinned ? 'pinned-message' : '') + "\n " + (groupedByUser ? 'str-chat__virtual-message__wrapper--group' : '') + "\n " + (firstOfGroup ? 'str-chat__virtual-message__wrapper--first' : '') + "\n " + (endOfGroup ? 'str-chat__virtual-message__wrapper--end' : '') + "\n\t\t\t\t\t").trim(), key: message.id
|
|
5573
|
+
React__default['default'].createElement("div", { className: ("\n\t\t\t\t\t\t" + messageClasses + "\n\t\t\t\t\t\tstr-chat__message--" + message.type + "\n\t\t\t\t\t\tstr-chat__message--" + message.status + "\n\t\t\t\t\t\t" + (message.text ? 'str-chat__message--has-text' : 'has-no-text') + "\n\t\t\t\t\t\t" + (hasAttachment ? 'str-chat__message--has-attachment' : '') + "\n " + (hasReactions && isReactionEnabled ? 'str-chat__message--with-reactions' : '') + "\n " + (highlighted ? 'str-chat__message--highlighted' : '') + "\n " + (message.pinned ? 'pinned-message' : '') + "\n " + (groupedByUser ? 'str-chat__virtual-message__wrapper--group' : '') + "\n " + (firstOfGroup ? 'str-chat__virtual-message__wrapper--first' : '') + "\n " + (endOfGroup ? 'str-chat__virtual-message__wrapper--end' : '') + "\n\t\t\t\t\t").trim(), key: message.id },
|
|
5513
5574
|
React__default['default'].createElement(MessageStatus$1, null),
|
|
5514
5575
|
message.user && (React__default['default'].createElement(Avatar$1, { image: message.user.image, name: message.user.name || message.user.id, onClick: onUserClick, onMouseOver: onUserHover, user: message.user })),
|
|
5515
5576
|
React__default['default'].createElement("div", { className: 'str-chat__message-inner', "data-testid": 'message-inner', onClick: message.status === 'failed' && message.errorStatusCode !== 403
|
|
@@ -5518,7 +5579,7 @@ var MessageSimpleWithContext = function (props) {
|
|
|
5518
5579
|
? function () { return handleRetry(message); }
|
|
5519
5580
|
: undefined },
|
|
5520
5581
|
React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
5521
|
-
React__default['default'].createElement(MessageOptions$1,
|
|
5582
|
+
React__default['default'].createElement(MessageOptions$1, null),
|
|
5522
5583
|
hasReactions && !showDetailedReactions && isReactionEnabled && (React__default['default'].createElement(ReactionsList$1, { reverse: true })),
|
|
5523
5584
|
showDetailedReactions && isReactionEnabled && (React__default['default'].createElement(ReactionSelector$1, { ref: reactionSelectorRef }))),
|
|
5524
5585
|
((_a = message.attachments) === null || _a === void 0 ? void 0 : _a.length) && !message.quoted_message ? (React__default['default'].createElement(Attachment, { actionHandler: handleAction, attachments: message.attachments })) : null,
|
|
@@ -5584,6 +5645,21 @@ var withTypingContext = function (Component) {
|
|
|
5584
5645
|
|
|
5585
5646
|
var compressed=true;var categories=[{id:"people",name:"Smileys & People",emojis:["grinning","smiley","smile","grin","laughing","sweat_smile","rolling_on_the_floor_laughing","joy","slightly_smiling_face","upside_down_face","wink","blush","innocent","smiling_face_with_3_hearts","heart_eyes","star-struck","kissing_heart","kissing","relaxed","kissing_closed_eyes","kissing_smiling_eyes","yum","stuck_out_tongue","stuck_out_tongue_winking_eye","zany_face","stuck_out_tongue_closed_eyes","money_mouth_face","hugging_face","face_with_hand_over_mouth","shushing_face","thinking_face","zipper_mouth_face","face_with_raised_eyebrow","neutral_face","expressionless","no_mouth","smirk","unamused","face_with_rolling_eyes","grimacing","lying_face","relieved","pensive","sleepy","drooling_face","sleeping","mask","face_with_thermometer","face_with_head_bandage","nauseated_face","face_vomiting","sneezing_face","hot_face","cold_face","woozy_face","dizzy_face","exploding_head","face_with_cowboy_hat","partying_face","sunglasses","nerd_face","face_with_monocle","confused","worried","slightly_frowning_face","white_frowning_face","open_mouth","hushed","astonished","flushed","pleading_face","frowning","anguished","fearful","cold_sweat","disappointed_relieved","cry","sob","scream","confounded","persevere","disappointed","sweat","weary","tired_face","yawning_face","triumph","rage","angry","face_with_symbols_on_mouth","smiling_imp","imp","skull","skull_and_crossbones","hankey","clown_face","japanese_ogre","japanese_goblin","ghost","alien","space_invader","robot_face","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","see_no_evil","hear_no_evil","speak_no_evil","wave","raised_back_of_hand","raised_hand_with_fingers_splayed","hand","spock-hand","ok_hand","pinching_hand","v","crossed_fingers","i_love_you_hand_sign","the_horns","call_me_hand","point_left","point_right","point_up_2","middle_finger","point_down","point_up","+1","-1","fist","facepunch","left-facing_fist","right-facing_fist","clap","raised_hands","open_hands","palms_up_together","handshake","pray","writing_hand","nail_care","selfie","muscle","mechanical_arm","mechanical_leg","leg","foot","ear","ear_with_hearing_aid","nose","brain","tooth","bone","eyes","eye","tongue","lips","baby","child","boy","girl","adult","man","bearded_person","red_haired_man","curly_haired_man","white_haired_man","bald_man","woman","red_haired_woman","curly_haired_woman","white_haired_woman","bald_woman","blond-haired-woman","blond-haired-man","older_adult","older_man","older_woman","man-frowning","woman-frowning","man-pouting","woman-pouting","man-gesturing-no","woman-gesturing-no","man-gesturing-ok","woman-gesturing-ok","man-tipping-hand","woman-tipping-hand","man-raising-hand","woman-raising-hand","deaf_person","deaf_man","deaf_woman","man-bowing","woman-bowing","man-facepalming","woman-facepalming","man-shrugging","woman-shrugging","male-doctor","female-doctor","male-student","female-student","male-teacher","female-teacher","male-judge","female-judge","male-farmer","female-farmer","male-cook","female-cook","male-mechanic","female-mechanic","male-factory-worker","female-factory-worker","male-office-worker","female-office-worker","male-scientist","female-scientist","male-technologist","female-technologist","male-singer","female-singer","male-artist","female-artist","male-pilot","female-pilot","male-astronaut","female-astronaut","male-firefighter","female-firefighter","male-police-officer","female-police-officer","male-guard","female-guard","male-construction-worker","female-construction-worker","prince","princess","man-wearing-turban","woman-wearing-turban","man_with_gua_pi_mao","person_with_headscarf","man_in_tuxedo","bride_with_veil","pregnant_woman","breast-feeding","angel","santa","mrs_claus","superhero","male_superhero","female_superhero","supervillain","male_supervillain","female_supervillain","mage","male_mage","female_mage","fairy","male_fairy","female_fairy","vampire","male_vampire","female_vampire","merperson","merman","mermaid","elf","male_elf","female_elf","genie","male_genie","female_genie","zombie","male_zombie","female_zombie","man-getting-massage","woman-getting-massage","man-getting-haircut","woman-getting-haircut","man-walking","woman-walking","standing_person","man_standing","woman_standing","kneeling_person","man_kneeling","woman_kneeling","man_with_probing_cane","woman_with_probing_cane","man_in_motorized_wheelchair","woman_in_motorized_wheelchair","man_in_manual_wheelchair","woman_in_manual_wheelchair","man-running","woman-running","dancer","man_dancing","man_in_business_suit_levitating","dancers","man-with-bunny-ears-partying","woman-with-bunny-ears-partying","person_in_steamy_room","man_in_steamy_room","woman_in_steamy_room","person_climbing","man_climbing","woman_climbing","fencer","horse_racing","skier","snowboarder","man-surfing","woman-surfing","man-rowing-boat","woman-rowing-boat","man-swimming","woman-swimming","man-biking","woman-biking","man-mountain-biking","woman-mountain-biking","man-cartwheeling","woman-cartwheeling","wrestlers","man-wrestling","woman-wrestling","man-playing-water-polo","woman-playing-water-polo","man-playing-handball","woman-playing-handball","juggling","man-juggling","woman-juggling","person_in_lotus_position","man_in_lotus_position","woman_in_lotus_position","bath","sleeping_accommodation","people_holding_hands","two_women_holding_hands","couple","two_men_holding_hands","couplekiss","woman-kiss-man","man-kiss-man","woman-kiss-woman","couple_with_heart","woman-heart-man","man-heart-man","woman-heart-woman","family","man-woman-boy","man-woman-girl","man-woman-girl-boy","man-woman-boy-boy","man-woman-girl-girl","man-man-boy","man-man-girl","man-man-girl-boy","man-man-boy-boy","man-man-girl-girl","woman-woman-boy","woman-woman-girl","woman-woman-girl-boy","woman-woman-boy-boy","woman-woman-girl-girl","man-boy","man-boy-boy","man-girl","man-girl-boy","man-girl-girl","woman-boy","woman-boy-boy","woman-girl","woman-girl-boy","woman-girl-girl","speaking_head_in_silhouette","bust_in_silhouette","busts_in_silhouette","footprints","kiss","love_letter","cupid","gift_heart","sparkling_heart","heartpulse","heartbeat","revolving_hearts","two_hearts","heart_decoration","heavy_heart_exclamation_mark_ornament","broken_heart","heart","orange_heart","yellow_heart","green_heart","blue_heart","purple_heart","brown_heart","black_heart","white_heart","100","anger","boom","dizzy","sweat_drops","dash","hole","bomb","speech_balloon","left_speech_bubble","right_anger_bubble","thought_balloon","zzz"]},{id:"nature",name:"Animals & Nature",emojis:["monkey_face","monkey","gorilla","orangutan","dog","dog2","guide_dog","service_dog","poodle","wolf","fox_face","raccoon","cat","cat2","lion_face","tiger","tiger2","leopard","horse","racehorse","unicorn_face","zebra_face","deer","cow","ox","water_buffalo","cow2","pig","pig2","boar","pig_nose","ram","sheep","goat","dromedary_camel","camel","llama","giraffe_face","elephant","rhinoceros","hippopotamus","mouse","mouse2","rat","hamster","rabbit","rabbit2","chipmunk","hedgehog","bat","bear","koala","panda_face","sloth","otter","skunk","kangaroo","badger","feet","turkey","chicken","rooster","hatching_chick","baby_chick","hatched_chick","bird","penguin","dove_of_peace","eagle","duck","swan","owl","flamingo","peacock","parrot","frog","crocodile","turtle","lizard","snake","dragon_face","dragon","sauropod","t-rex","whale","whale2","dolphin","fish","tropical_fish","blowfish","shark","octopus","shell","snail","butterfly","bug","ant","bee","beetle","cricket","spider","spider_web","scorpion","mosquito","microbe","bouquet","cherry_blossom","white_flower","rosette","rose","wilted_flower","hibiscus","sunflower","blossom","tulip","seedling","evergreen_tree","deciduous_tree","palm_tree","cactus","ear_of_rice","herb","shamrock","four_leaf_clover","maple_leaf","fallen_leaf","leaves"]},{id:"foods",name:"Food & Drink",emojis:["grapes","melon","watermelon","tangerine","lemon","banana","pineapple","mango","apple","green_apple","pear","peach","cherries","strawberry","kiwifruit","tomato","coconut","avocado","eggplant","potato","carrot","corn","hot_pepper","cucumber","leafy_green","broccoli","garlic","onion","mushroom","peanuts","chestnut","bread","croissant","baguette_bread","pretzel","bagel","pancakes","waffle","cheese_wedge","meat_on_bone","poultry_leg","cut_of_meat","bacon","hamburger","fries","pizza","hotdog","sandwich","taco","burrito","stuffed_flatbread","falafel","egg","fried_egg","shallow_pan_of_food","stew","bowl_with_spoon","green_salad","popcorn","butter","salt","canned_food","bento","rice_cracker","rice_ball","rice","curry","ramen","spaghetti","sweet_potato","oden","sushi","fried_shrimp","fish_cake","moon_cake","dango","dumpling","fortune_cookie","takeout_box","crab","lobster","shrimp","squid","oyster","icecream","shaved_ice","ice_cream","doughnut","cookie","birthday","cake","cupcake","pie","chocolate_bar","candy","lollipop","custard","honey_pot","baby_bottle","glass_of_milk","coffee","tea","sake","champagne","wine_glass","cocktail","tropical_drink","beer","beers","clinking_glasses","tumbler_glass","cup_with_straw","beverage_box","mate_drink","ice_cube","chopsticks","knife_fork_plate","fork_and_knife","spoon","hocho","amphora"]},{id:"activity",name:"Activities",emojis:["jack_o_lantern","christmas_tree","fireworks","sparkler","firecracker","sparkles","balloon","tada","confetti_ball","tanabata_tree","bamboo","dolls","flags","wind_chime","rice_scene","red_envelope","ribbon","gift","reminder_ribbon","admission_tickets","ticket","medal","trophy","sports_medal","first_place_medal","second_place_medal","third_place_medal","soccer","baseball","softball","basketball","volleyball","football","rugby_football","tennis","flying_disc","bowling","cricket_bat_and_ball","field_hockey_stick_and_ball","ice_hockey_stick_and_puck","lacrosse","table_tennis_paddle_and_ball","badminton_racquet_and_shuttlecock","boxing_glove","martial_arts_uniform","goal_net","golf","ice_skate","fishing_pole_and_fish","diving_mask","running_shirt_with_sash","ski","sled","curling_stone","dart","yo-yo","kite","8ball","crystal_ball","nazar_amulet","video_game","joystick","slot_machine","game_die","jigsaw","teddy_bear","spades","hearts","diamonds","clubs","chess_pawn","black_joker","mahjong","flower_playing_cards","performing_arts","frame_with_picture","art","thread","yarn"]},{id:"places",name:"Travel & Places",emojis:["earth_africa","earth_americas","earth_asia","globe_with_meridians","world_map","japan","compass","snow_capped_mountain","mountain","volcano","mount_fuji","camping","beach_with_umbrella","desert","desert_island","national_park","stadium","classical_building","building_construction","bricks","house_buildings","derelict_house_building","house","house_with_garden","office","post_office","european_post_office","hospital","bank","hotel","love_hotel","convenience_store","school","department_store","factory","japanese_castle","european_castle","wedding","tokyo_tower","statue_of_liberty","church","mosque","hindu_temple","synagogue","shinto_shrine","kaaba","fountain","tent","foggy","night_with_stars","cityscape","sunrise_over_mountains","sunrise","city_sunset","city_sunrise","bridge_at_night","hotsprings","carousel_horse","ferris_wheel","roller_coaster","barber","circus_tent","steam_locomotive","railway_car","bullettrain_side","bullettrain_front","train2","metro","light_rail","station","tram","monorail","mountain_railway","train","bus","oncoming_bus","trolleybus","minibus","ambulance","fire_engine","police_car","oncoming_police_car","taxi","oncoming_taxi","car","oncoming_automobile","blue_car","truck","articulated_lorry","tractor","racing_car","racing_motorcycle","motor_scooter","manual_wheelchair","motorized_wheelchair","auto_rickshaw","bike","scooter","skateboard","busstop","motorway","railway_track","oil_drum","fuelpump","rotating_light","traffic_light","vertical_traffic_light","octagonal_sign","construction","anchor","boat","canoe","speedboat","passenger_ship","ferry","motor_boat","ship","airplane","small_airplane","airplane_departure","airplane_arriving","parachute","seat","helicopter","suspension_railway","mountain_cableway","aerial_tramway","satellite","rocket","flying_saucer","bellhop_bell","luggage","hourglass","hourglass_flowing_sand","watch","alarm_clock","stopwatch","timer_clock","mantelpiece_clock","clock12","clock1230","clock1","clock130","clock2","clock230","clock3","clock330","clock4","clock430","clock5","clock530","clock6","clock630","clock7","clock730","clock8","clock830","clock9","clock930","clock10","clock1030","clock11","clock1130","new_moon","waxing_crescent_moon","first_quarter_moon","moon","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","crescent_moon","new_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","thermometer","sunny","full_moon_with_face","sun_with_face","ringed_planet","star","star2","stars","milky_way","cloud","partly_sunny","thunder_cloud_and_rain","mostly_sunny","barely_sunny","partly_sunny_rain","rain_cloud","snow_cloud","lightning","tornado","fog","wind_blowing_face","cyclone","rainbow","closed_umbrella","umbrella","umbrella_with_rain_drops","umbrella_on_ground","zap","snowflake","snowman","snowman_without_snow","comet","fire","droplet","ocean"]},{id:"objects",name:"Objects",emojis:["eyeglasses","dark_sunglasses","goggles","lab_coat","safety_vest","necktie","shirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","one-piece_swimsuit","briefs","shorts","bikini","womans_clothes","purse","handbag","pouch","shopping_bags","school_satchel","mans_shoe","athletic_shoe","hiking_boot","womans_flat_shoe","high_heel","sandal","ballet_shoes","boot","crown","womans_hat","tophat","mortar_board","billed_cap","helmet_with_white_cross","prayer_beads","lipstick","ring","gem","mute","speaker","sound","loud_sound","loudspeaker","mega","postal_horn","bell","no_bell","musical_score","musical_note","notes","studio_microphone","level_slider","control_knobs","microphone","headphones","radio","saxophone","guitar","musical_keyboard","trumpet","violin","banjo","drum_with_drumsticks","iphone","calling","phone","telephone_receiver","pager","fax","battery","electric_plug","computer","desktop_computer","printer","keyboard","three_button_mouse","trackball","minidisc","floppy_disk","cd","dvd","abacus","movie_camera","film_frames","film_projector","clapper","tv","camera","camera_with_flash","video_camera","vhs","mag","mag_right","candle","bulb","flashlight","izakaya_lantern","diya_lamp","notebook_with_decorative_cover","closed_book","book","green_book","blue_book","orange_book","books","notebook","ledger","page_with_curl","scroll","page_facing_up","newspaper","rolled_up_newspaper","bookmark_tabs","bookmark","label","moneybag","yen","dollar","euro","pound","money_with_wings","credit_card","receipt","chart","currency_exchange","heavy_dollar_sign","email","e-mail","incoming_envelope","envelope_with_arrow","outbox_tray","inbox_tray","package","mailbox","mailbox_closed","mailbox_with_mail","mailbox_with_no_mail","postbox","ballot_box_with_ballot","pencil2","black_nib","lower_left_fountain_pen","lower_left_ballpoint_pen","lower_left_paintbrush","lower_left_crayon","memo","briefcase","file_folder","open_file_folder","card_index_dividers","date","calendar","spiral_note_pad","spiral_calendar_pad","card_index","chart_with_upwards_trend","chart_with_downwards_trend","bar_chart","clipboard","pushpin","round_pushpin","paperclip","linked_paperclips","straight_ruler","triangular_ruler","scissors","card_file_box","file_cabinet","wastebasket","lock","unlock","lock_with_ink_pen","closed_lock_with_key","key","old_key","hammer","axe","pick","hammer_and_pick","hammer_and_wrench","dagger_knife","crossed_swords","gun","bow_and_arrow","shield","wrench","nut_and_bolt","gear","compression","scales","probing_cane","link","chains","toolbox","magnet","alembic","test_tube","petri_dish","dna","microscope","telescope","satellite_antenna","syringe","drop_of_blood","pill","adhesive_bandage","stethoscope","door","bed","couch_and_lamp","chair","toilet","shower","bathtub","razor","lotion_bottle","safety_pin","broom","basket","roll_of_paper","soap","sponge","fire_extinguisher","shopping_trolley","smoking","coffin","funeral_urn","moyai"]},{id:"symbols",name:"Symbols",emojis:["atm","put_litter_in_its_place","potable_water","wheelchair","mens","womens","restroom","baby_symbol","wc","passport_control","customs","baggage_claim","left_luggage","warning","children_crossing","no_entry","no_entry_sign","no_bicycles","no_smoking","do_not_litter","non-potable_water","no_pedestrians","no_mobile_phones","underage","radioactive_sign","biohazard_sign","arrow_up","arrow_upper_right","arrow_right","arrow_lower_right","arrow_down","arrow_lower_left","arrow_left","arrow_upper_left","arrow_up_down","left_right_arrow","leftwards_arrow_with_hook","arrow_right_hook","arrow_heading_up","arrow_heading_down","arrows_clockwise","arrows_counterclockwise","back","end","on","soon","top","place_of_worship","atom_symbol","om_symbol","star_of_david","wheel_of_dharma","yin_yang","latin_cross","orthodox_cross","star_and_crescent","peace_symbol","menorah_with_nine_branches","six_pointed_star","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","ophiuchus","twisted_rightwards_arrows","repeat","repeat_one","arrow_forward","fast_forward","black_right_pointing_double_triangle_with_vertical_bar","black_right_pointing_triangle_with_double_vertical_bar","arrow_backward","rewind","black_left_pointing_double_triangle_with_vertical_bar","arrow_up_small","arrow_double_up","arrow_down_small","arrow_double_down","double_vertical_bar","black_square_for_stop","black_circle_for_record","eject","cinema","low_brightness","high_brightness","signal_strength","vibration_mode","mobile_phone_off","female_sign","male_sign","medical_symbol","infinity","recycle","fleur_de_lis","trident","name_badge","beginner","o","white_check_mark","ballot_box_with_check","heavy_check_mark","heavy_multiplication_x","x","negative_squared_cross_mark","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","curly_loop","loop","part_alternation_mark","eight_spoked_asterisk","eight_pointed_black_star","sparkle","bangbang","interrobang","question","grey_question","grey_exclamation","exclamation","wavy_dash","tm","keycap_ten","capital_abcd","abcd","1234","symbols","abc","a","ab","b","cl","cool","free","information_source","id","m","new","ng","o2","ok","parking","sos","up","vs","koko","sa","u6708","u6709","u6307","ideograph_advantage","u5272","u7121","u7981","accept","u7533","u5408","u7a7a","congratulations","secret","u55b6","u6e80","red_circle","large_orange_circle","large_yellow_circle","large_green_circle","large_blue_circle","large_purple_circle","large_brown_circle","black_circle","white_circle","large_red_square","large_orange_square","large_yellow_square","large_green_square","large_blue_square","large_purple_square","large_brown_square","black_large_square","white_large_square","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_small_square","white_small_square","large_orange_diamond","large_blue_diamond","small_orange_diamond","small_blue_diamond","small_red_triangle","small_red_triangle_down","diamond_shape_with_a_dot_inside","radio_button","white_square_button","black_square_button"]},{id:"flags",name:"Flags",emojis:["checkered_flag","cn","crossed_flags","de","es","flag-ac","flag-ad","flag-ae","flag-af","flag-ag","flag-ai","flag-al","flag-am","flag-ao","flag-aq","flag-ar","flag-as","flag-at","flag-au","flag-aw","flag-ax","flag-az","flag-ba","flag-bb","flag-bd","flag-be","flag-bf","flag-bg","flag-bh","flag-bi","flag-bj","flag-bl","flag-bm","flag-bn","flag-bo","flag-bq","flag-br","flag-bs","flag-bt","flag-bv","flag-bw","flag-by","flag-bz","flag-ca","flag-cc","flag-cd","flag-cf","flag-cg","flag-ch","flag-ci","flag-ck","flag-cl","flag-cm","flag-co","flag-cp","flag-cr","flag-cu","flag-cv","flag-cw","flag-cx","flag-cy","flag-cz","flag-dg","flag-dj","flag-dk","flag-dm","flag-do","flag-dz","flag-ea","flag-ec","flag-ee","flag-eg","flag-eh","flag-england","flag-er","flag-et","flag-eu","flag-fi","flag-fj","flag-fk","flag-fm","flag-fo","flag-ga","flag-gd","flag-ge","flag-gf","flag-gg","flag-gh","flag-gi","flag-gl","flag-gm","flag-gn","flag-gp","flag-gq","flag-gr","flag-gs","flag-gt","flag-gu","flag-gw","flag-gy","flag-hk","flag-hm","flag-hn","flag-hr","flag-ht","flag-hu","flag-ic","flag-id","flag-ie","flag-il","flag-im","flag-in","flag-io","flag-iq","flag-ir","flag-is","flag-je","flag-jm","flag-jo","flag-ke","flag-kg","flag-kh","flag-ki","flag-km","flag-kn","flag-kp","flag-kw","flag-ky","flag-kz","flag-la","flag-lb","flag-lc","flag-li","flag-lk","flag-lr","flag-ls","flag-lt","flag-lu","flag-lv","flag-ly","flag-ma","flag-mc","flag-md","flag-me","flag-mf","flag-mg","flag-mh","flag-mk","flag-ml","flag-mm","flag-mn","flag-mo","flag-mp","flag-mq","flag-mr","flag-ms","flag-mt","flag-mu","flag-mv","flag-mw","flag-mx","flag-my","flag-mz","flag-na","flag-nc","flag-ne","flag-nf","flag-ng","flag-ni","flag-nl","flag-no","flag-np","flag-nr","flag-nu","flag-nz","flag-om","flag-pa","flag-pe","flag-pf","flag-pg","flag-ph","flag-pk","flag-pl","flag-pm","flag-pn","flag-pr","flag-ps","flag-pt","flag-pw","flag-py","flag-qa","flag-re","flag-ro","flag-rs","flag-rw","flag-sa","flag-sb","flag-sc","flag-scotland","flag-sd","flag-se","flag-sg","flag-sh","flag-si","flag-sj","flag-sk","flag-sl","flag-sm","flag-sn","flag-so","flag-sr","flag-ss","flag-st","flag-sv","flag-sx","flag-sy","flag-sz","flag-ta","flag-tc","flag-td","flag-tf","flag-tg","flag-th","flag-tj","flag-tk","flag-tl","flag-tm","flag-tn","flag-to","flag-tr","flag-tt","flag-tv","flag-tw","flag-tz","flag-ua","flag-ug","flag-um","flag-uy","flag-uz","flag-va","flag-vc","flag-ve","flag-vg","flag-vi","flag-vn","flag-vu","flag-wales","flag-wf","flag-ws","flag-xk","flag-ye","flag-yt","flag-za","flag-zm","flag-zw","fr","gb","it","jp","kr","pirate_flag","rainbow-flag","ru","triangular_flag_on_post","us","waving_black_flag","waving_white_flag"]}];var emojis={"100":{a:"Hundred Points Symbol",b:"1F4AF",j:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],k:[26,5],o:2},"1234":{a:"Input Symbol for Numbers",b:"1F522",j:["numbers","blue-square"],k:[28,5],o:2},grinning:{a:"Grinning Face",b:"1F600",j:["face","smile","happy","joy",":D","grin"],k:[30,35],m:":D",o:2},monkey_face:{a:"Monkey Face",b:"1F435",j:["animal","nature","circus"],k:[12,25],l:[":o)"],o:2},grapes:{a:"Grapes",b:"1F347",j:["fruit","food","wine"],k:[6,31],o:2},eyeglasses:{a:"Eyeglasses",b:"1F453",j:["fashion","accessories","eyesight","nerdy","dork","geek"],k:[14,7],o:2},checkered_flag:{a:"Chequered Flag",b:"1F3C1",j:["contest","finishline","race","gokart"],k:[8,39],o:2},jack_o_lantern:{a:"Jack-O-Lantern",b:"1F383",j:["halloween","light","pumpkin","creepy","fall"],k:[7,34],o:2},wave:{a:"Waving Hand Sign",b:"1F44B",j:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],k:[13,26],o:2},earth_africa:{a:"Earth Globe Europe-Africa",b:"1F30D",j:["globe","world","international"],k:[5,32],o:2},atm:{a:"Automated Teller Machine",b:"1F3E7",j:["money","sales","cash","blue-square","payment","bank"],k:[11,1],o:2},melon:{a:"Melon",b:"1F348",j:["fruit","nature","food"],k:[6,32],o:2},triangular_flag_on_post:{a:"Triangular Flag on Post",b:"1F6A9",j:["mark","milestone","place"],k:[35,0],o:2},put_litter_in_its_place:{a:"Put Litter in Its Place Symbol",b:"1F6AE",j:["blue-square","sign","human","info"],k:[35,5],o:2},christmas_tree:{a:"Christmas Tree",b:"1F384",j:["festival","vacation","december","xmas","celebration"],k:[7,35],o:2},monkey:{a:"Monkey",b:"1F412",j:["animal","nature","banana","circus"],k:[11,46],o:2},earth_americas:{a:"Earth Globe Americas",b:"1F30E",j:["globe","world","USA","international"],k:[5,33],o:2},dark_sunglasses:{a:"Dark Sunglasses",b:"1F576-FE0F",c:"1F576",j:["face","cool","accessories"],k:[29,33],o:2},raised_back_of_hand:{a:"Raised Back of Hand",b:"1F91A",j:["fingers","raised","backhand"],k:[37,43],o:4},smiley:{a:"Smiling Face with Open Mouth",b:"1F603",j:["face","happy","joy","haha",":D",":)","smile","funny"],k:[30,38],l:["=)","=-)"],m:":)",o:2},earth_asia:{a:"Earth Globe Asia-Australia",b:"1F30F",j:["globe","world","east","international"],k:[5,34],o:2},crossed_flags:{a:"Crossed Flags",b:"1F38C",j:["japanese","nation","country","border"],k:[7,48],o:2},watermelon:{a:"Watermelon",b:"1F349",j:["fruit","food","picnic","summer"],k:[6,33],o:2},goggles:{a:"Goggles",b:"1F97D",k:[42,15],o:11},raised_hand_with_fingers_splayed:{a:"Raised Hand with Fingers Splayed",b:"1F590-FE0F",c:"1F590",j:["hand","fingers","palm"],k:[29,48],o:2},smile:{a:"Smiling Face with Open Mouth and Smiling Eyes",b:"1F604",j:["face","happy","joy","funny","haha","laugh","like",":D",":)"],k:[30,39],l:["C:","c:",":D",":-D"],m:":)",o:2},potable_water:{a:"Potable Water Symbol",b:"1F6B0",j:["blue-square","liquid","restroom","cleaning","faucet"],k:[35,7],o:2},fireworks:{a:"Fireworks",b:"1F386",j:["photo","festival","carnival","congratulations"],k:[7,42],o:2},gorilla:{a:"Gorilla",b:"1F98D",j:["animal","nature","circus"],k:[42,31],o:4},lab_coat:{a:"Lab Coat",b:"1F97C",k:[42,14],o:11},tangerine:{a:"Tangerine",b:"1F34A",j:["food","fruit","nature","orange"],k:[6,34],o:2},wheelchair:{a:"Wheelchair Symbol",b:"267F",j:["blue-square","disabled","a11y","accessibility"],k:[53,40],o:2},waving_black_flag:{a:"Waving Black Flag",b:"1F3F4",k:[11,17],o:2},orangutan:{a:"Orangutan",b:"1F9A7",k:[42,55],o:12},sparkler:{a:"Firework Sparkler",b:"1F387",j:["stars","night","shine"],k:[7,43],o:2},globe_with_meridians:{a:"Globe with Meridians",b:"1F310",j:["earth","international","world","internet","interweb","i18n"],k:[5,35],o:2},grin:{a:"Grinning Face with Smiling Eyes",b:"1F601",j:["face","happy","smile","joy","kawaii"],k:[30,36],o:2},hand:{a:"Raised Hand",b:"270B",k:[54,49],n:["raised_hand"],o:2},firecracker:{a:"Firecracker",b:"1F9E8",k:[51,27],o:11},lemon:{a:"Lemon",b:"1F34B",j:["fruit","nature"],k:[6,35],o:2},dog:{a:"Dog Face",b:"1F436",j:["animal","friend","nature","woof","puppy","pet","faithful"],k:[12,26],o:2},mens:{a:"Mens Symbol",b:"1F6B9",j:["toilet","restroom","wc","blue-square","gender","male"],k:[36,10],o:2},"spock-hand":{a:"Raised Hand with Part Between Middle and Ring Fingers",b:"1F596",k:[30,3],o:2},world_map:{a:"World Map",b:"1F5FA-FE0F",c:"1F5FA",j:["location","direction"],k:[30,29],o:2},laughing:{a:"Smiling Face with Open Mouth and Tightly-Closed Eyes",b:"1F606",j:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],k:[30,41],l:[":>",":->"],n:["satisfied"],o:2},waving_white_flag:{a:"Waving White Flag",b:"1F3F3-FE0F",c:"1F3F3",k:[11,12],o:2},safety_vest:{a:"Safety Vest",b:"1F9BA",k:[43,54],o:12},sweat_smile:{a:"Smiling Face with Open Mouth and Cold Sweat",b:"1F605",j:["face","hot","happy","laugh","sweat","smile","relief"],k:[30,40],o:2},sparkles:{a:"Sparkles",b:"2728",j:["stars","shine","shiny","cool","awesome","good","magic"],k:[55,16],o:2},banana:{a:"Banana",b:"1F34C",j:["fruit","food","monkey"],k:[6,36],o:2},"rainbow-flag":{a:"Rainbow Flag",b:"1F3F3-FE0F-200D-1F308",c:"1F3F3-200D-1F308",k:[11,11],o:4},ok_hand:{a:"Ok Hand Sign",b:"1F44C",j:["fingers","limbs","perfect","ok","okay"],k:[13,32],o:2},japan:{a:"Silhouette of Japan",b:"1F5FE",j:["nation","country","japanese","asia"],k:[30,33],o:2},dog2:{a:"Dog",b:"1F415",j:["animal","nature","friend","doge","pet","faithful"],k:[11,50],o:2},womens:{a:"Womens Symbol",b:"1F6BA",j:["purple-square","woman","female","toilet","loo","restroom","gender"],k:[36,11],o:2},necktie:{a:"Necktie",b:"1F454",j:["shirt","suitup","formal","fashion","cloth","business"],k:[14,8],o:2},pirate_flag:{a:"Pirate Flag",b:"1F3F4-200D-2620-FE0F",c:"1F3F4-200D-2620",k:[11,13],o:11},guide_dog:{a:"Guide Dog",b:"1F9AE",k:[43,2],o:12},restroom:{a:"Restroom",b:"1F6BB",j:["blue-square","toilet","refresh","wc","gender"],k:[36,12],o:2},compass:{a:"Compass",b:"1F9ED",k:[51,32],o:11},rolling_on_the_floor_laughing:{a:"Rolling on the Floor Laughing",b:"1F923",k:[38,20],o:4},balloon:{a:"Balloon",b:"1F388",j:["party","celebration","birthday","circus"],k:[7,44],o:2},pinching_hand:{a:"Pinching Hand",b:"1F90F",k:[37,17],o:12},pineapple:{a:"Pineapple",b:"1F34D",j:["fruit","nature","food"],k:[6,37],o:2},shirt:{a:"T-Shirt",b:"1F455",k:[14,9],n:["tshirt"],o:2},service_dog:{a:"Service Dog",b:"1F415-200D-1F9BA",k:[11,49],o:12},baby_symbol:{a:"Baby Symbol",b:"1F6BC",j:["orange-square","child"],k:[36,13],o:2},joy:{a:"Face with Tears of Joy",b:"1F602",j:["face","cry","tears","weep","happy","happytears","haha"],k:[30,37],o:2},tada:{a:"Party Popper",b:"1F389",j:["party","congratulations","birthday","magic","circus","celebration"],k:[7,45],o:2},mango:{a:"Mango",b:"1F96D",k:[42,3],o:11},v:{a:"Victory Hand",b:"270C-FE0F",c:"270C",j:["fingers","ohyeah","hand","peace","victory","two"],k:[54,55],o:2},snow_capped_mountain:{a:"Snow Capped Mountain",b:"1F3D4-FE0F",c:"1F3D4",k:[10,39],o:2},"flag-ac":{a:"Ascension Island Flag",b:"1F1E6-1F1E8",k:[0,31],o:2},jeans:{a:"Jeans",b:"1F456",j:["fashion","shopping"],k:[14,10],o:2},poodle:{a:"Poodle",b:"1F429",j:["dog","animal","101","nature","pet"],k:[12,13],o:2},crossed_fingers:{a:"Hand with Index and Middle Fingers Crossed",b:"1F91E",j:["good","lucky"],k:[38,5],n:["hand_with_index_and_middle_fingers_crossed"],o:4},"flag-ad":{a:"Andorra Flag",b:"1F1E6-1F1E9",k:[0,32],o:2},slightly_smiling_face:{a:"Slightly Smiling Face",b:"1F642",j:["face","smile"],k:[31,44],l:[":)","(:",":-)"],o:2},apple:{a:"Red Apple",b:"1F34E",j:["fruit","mac","school"],k:[6,38],o:2},wc:{a:"Water Closet",b:"1F6BE",j:["toilet","restroom","blue-square"],k:[36,15],o:2},scarf:{a:"Scarf",b:"1F9E3",k:[51,22],o:5},mountain:{a:"Mountain",b:"26F0-FE0F",c:"26F0",j:["photo","nature","environment"],k:[54,11],o:2},confetti_ball:{a:"Confetti Ball",b:"1F38A",j:["festival","party","birthday","circus"],k:[7,46],o:2},i_love_you_hand_sign:{a:"I Love You Hand Sign",b:"1F91F",k:[38,11],o:5},wolf:{a:"Wolf Face",b:"1F43A",j:["animal","nature","wild"],k:[12,30],o:2},gloves:{a:"Gloves",b:"1F9E4",k:[51,23],o:5},"flag-ae":{a:"United Arab Emirates Flag",b:"1F1E6-1F1EA",k:[0,33],o:2},upside_down_face:{a:"Upside-Down Face",b:"1F643",j:["face","flipped","silly","smile"],k:[31,45],o:2},green_apple:{a:"Green Apple",b:"1F34F",j:["fruit","nature"],k:[6,39],o:2},passport_control:{a:"Passport Control",b:"1F6C2",j:["custom","blue-square"],k:[36,24],o:2},volcano:{a:"Volcano",b:"1F30B",j:["photo","nature","disaster"],k:[5,30],o:2},tanabata_tree:{a:"Tanabata Tree",b:"1F38B",j:["plant","nature","branch","summer"],k:[7,47],o:2},customs:{a:"Customs",b:"1F6C3",j:["passport","border","blue-square"],k:[36,25],o:2},coat:{a:"Coat",b:"1F9E5",k:[51,24],o:5},wink:{a:"Winking Face",b:"1F609",j:["face","happy","mischievous","secret",";)","smile","eye"],k:[30,44],l:[";)",";-)"],m:";)",o:2},bamboo:{a:"Pine Decoration",b:"1F38D",j:["plant","nature","vegetable","panda","pine_decoration"],k:[7,49],o:2},"flag-af":{a:"Afghanistan Flag",b:"1F1E6-1F1EB",k:[0,34],o:2},fox_face:{a:"Fox Face",b:"1F98A",j:["animal","nature","face"],k:[42,28],o:4},pear:{a:"Pear",b:"1F350",j:["fruit","nature","food"],k:[6,40],o:2},mount_fuji:{a:"Mount Fuji",b:"1F5FB",j:["photo","mountain","nature","japanese"],k:[30,30],o:2},the_horns:{a:"Sign of the Horns",b:"1F918",k:[37,31],n:["sign_of_the_horns"],o:2},call_me_hand:{a:"Call Me Hand",b:"1F919",j:["hands","gesture"],k:[37,37],o:4},"flag-ag":{a:"Antigua & Barbuda Flag",b:"1F1E6-1F1EC",k:[0,35],o:2},raccoon:{a:"Raccoon",b:"1F99D",k:[42,47],o:11},dolls:{a:"Japanese Dolls",b:"1F38E",j:["japanese","toy","kimono"],k:[7,50],o:2},blush:{a:"Smiling Face with Smiling Eyes",b:"1F60A",j:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],k:[30,45],m:":)",o:2},peach:{a:"Peach",b:"1F351",j:["fruit","nature","food"],k:[6,41],o:2},baggage_claim:{a:"Baggage Claim",b:"1F6C4",j:["blue-square","airport","transport"],k:[36,26],o:2},socks:{a:"Socks",b:"1F9E6",k:[51,25],o:5},camping:{a:"Camping",b:"1F3D5-FE0F",c:"1F3D5",j:["photo","outdoors","tent"],k:[10,40],o:2},dress:{a:"Dress",b:"1F457",j:["clothes","fashion","shopping"],k:[14,11],o:2},beach_with_umbrella:{a:"Beach with Umbrella",b:"1F3D6-FE0F",c:"1F3D6",k:[10,41],o:2},cherries:{a:"Cherries",b:"1F352",j:["food","fruit"],k:[6,42],o:2},cat:{a:"Cat Face",b:"1F431",j:["animal","meow","nature","pet","kitten"],k:[12,21],o:2},point_left:{a:"White Left Pointing Backhand Index",b:"1F448",j:["direction","fingers","hand","left"],k:[13,8],o:2},left_luggage:{a:"Left Luggage",b:"1F6C5",j:["blue-square","travel"],k:[36,27],o:2},"flag-ai":{a:"Anguilla Flag",b:"1F1E6-1F1EE",k:[0,36],o:2},innocent:{a:"Smiling Face with Halo",b:"1F607",j:["face","angel","heaven","halo"],k:[30,42],o:2},flags:{a:"Carp Streamer",b:"1F38F",j:["fish","japanese","koinobori","carp","banner"],k:[7,51],o:2},warning:{a:"Warning Sign",b:"26A0-FE0F",c:"26A0",j:["exclamation","wip","alert","error","problem","issue"],k:[53,50],o:2},strawberry:{a:"Strawberry",b:"1F353",j:["fruit","food","nature"],k:[6,43],o:2},point_right:{a:"White Right Pointing Backhand Index",b:"1F449",j:["fingers","hand","direction","right"],k:[13,14],o:2},desert:{a:"Desert",b:"1F3DC-FE0F",c:"1F3DC",j:["photo","warm","saharah"],k:[10,47],o:2},kimono:{a:"Kimono",b:"1F458",j:["dress","fashion","women","female","japanese"],k:[14,12],o:2},"flag-al":{a:"Albania Flag",b:"1F1E6-1F1F1",k:[0,37],o:2},wind_chime:{a:"Wind Chime",b:"1F390",j:["nature","ding","spring","bell"],k:[7,52],o:2},smiling_face_with_3_hearts:{a:"Smiling Face with Smiling Eyes and Three Hearts",b:"1F970",k:[42,6],o:11},cat2:{a:"Cat",b:"1F408",j:["animal","meow","pet","cats"],k:[11,36],o:2},rice_scene:{a:"Moon Viewing Ceremony",b:"1F391",j:["photo","japan","asia","tsukimi"],k:[7,53],o:2},heart_eyes:{a:"Smiling Face with Heart-Shaped Eyes",b:"1F60D",j:["face","love","like","affection","valentines","infatuation","crush","heart"],k:[30,48],o:2},sari:{a:"Sari",b:"1F97B",k:[42,13],o:12},"flag-am":{a:"Armenia Flag",b:"1F1E6-1F1F2",k:[0,38],o:2},lion_face:{a:"Lion Face",b:"1F981",k:[42,19],o:2},desert_island:{a:"Desert Island",b:"1F3DD-FE0F",c:"1F3DD",j:["photo","tropical","mojito"],k:[10,48],o:2},point_up_2:{a:"White Up Pointing Backhand Index",b:"1F446",j:["fingers","hand","direction","up"],k:[12,53],o:2},kiwifruit:{a:"Kiwifruit",b:"1F95D",k:[41,44],o:4},children_crossing:{a:"Children Crossing",b:"1F6B8",j:["school","warning","danger","sign","driving","yellow-diamond"],k:[36,9],o:2},national_park:{a:"National Park",b:"1F3DE-FE0F",c:"1F3DE",j:["photo","environment","nature"],k:[10,49],o:2},no_entry:{a:"No Entry",b:"26D4",j:["limit","security","privacy","bad","denied","stop","circle"],k:[54,8],o:2},"one-piece_swimsuit":{a:"One-Piece Swimsuit",b:"1FA71",k:[51,52],o:12},tiger:{a:"Tiger Face",b:"1F42F",j:["animal","cat","danger","wild","nature","roar"],k:[12,19],o:2},red_envelope:{a:"Red Gift Envelope",b:"1F9E7",k:[51,26],o:11},"star-struck":{a:"Grinning Face with Star Eyes",b:"1F929",k:[38,43],n:["grinning_face_with_star_eyes"],o:5},middle_finger:{a:"Reversed Hand with Middle Finger Extended",b:"1F595",k:[29,54],n:["reversed_hand_with_middle_finger_extended"],o:2},"flag-ao":{a:"Angola Flag",b:"1F1E6-1F1F4",k:[0,39],o:2},tomato:{a:"Tomato",b:"1F345",j:["fruit","vegetable","nature","food"],k:[6,29],o:2},coconut:{a:"Coconut",b:"1F965",k:[41,52],o:5},ribbon:{a:"Ribbon",b:"1F380",j:["decoration","pink","girl","bowtie"],k:[7,31],o:2},no_entry_sign:{a:"No Entry Sign",b:"1F6AB",j:["forbid","stop","limit","denied","disallow","circle"],k:[35,2],o:2},point_down:{a:"White Down Pointing Backhand Index",b:"1F447",j:["fingers","hand","direction","down"],k:[13,2],o:2},"flag-aq":{a:"Antarctica Flag",b:"1F1E6-1F1F6",k:[0,40],o:2},briefs:{a:"Briefs",b:"1FA72",k:[51,53],o:12},kissing_heart:{a:"Face Throwing a Kiss",b:"1F618",j:["face","love","like","affection","valentines","infatuation","kiss"],k:[31,2],l:[":*",":-*"],o:2},tiger2:{a:"Tiger",b:"1F405",j:["animal","nature","roar"],k:[11,33],o:2},stadium:{a:"Stadium",b:"1F3DF-FE0F",c:"1F3DF",j:["photo","place","sports","concert","venue"],k:[10,50],o:2},leopard:{a:"Leopard",b:"1F406",j:["animal","nature"],k:[11,34],o:2},no_bicycles:{a:"No Bicycles",b:"1F6B3",j:["cyclist","prohibited","circle"],k:[35,10],o:2},kissing:{a:"Kissing Face",b:"1F617",j:["love","like","face","3","valentines","infatuation","kiss"],k:[31,1],o:2},"flag-ar":{a:"Argentina Flag",b:"1F1E6-1F1F7",k:[0,41],o:2},avocado:{a:"Avocado",b:"1F951",j:["fruit","food"],k:[41,32],o:4},point_up:{a:"White Up Pointing Index",b:"261D-FE0F",c:"261D",j:["hand","fingers","direction","up"],k:[53,2],o:2},gift:{a:"Wrapped Present",b:"1F381",j:["present","birthday","christmas","xmas"],k:[7,32],o:2},classical_building:{a:"Classical Building",b:"1F3DB-FE0F",c:"1F3DB",j:["art","culture","history"],k:[10,46],o:2},shorts:{a:"Shorts",b:"1FA73",k:[51,54],o:12},"+1":{a:"Thumbs Up Sign",b:"1F44D",j:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],k:[13,38],n:["thumbsup"],o:2},horse:{a:"Horse Face",b:"1F434",j:["animal","brown","nature"],k:[12,24],o:2},bikini:{a:"Bikini",b:"1F459",j:["swimming","female","woman","girl","fashion","beach","summer"],k:[14,13],o:2},no_smoking:{a:"No Smoking Symbol",b:"1F6AD",j:["cigarette","blue-square","smell","smoke"],k:[35,4],o:2},eggplant:{a:"Aubergine",b:"1F346",j:["vegetable","nature","food","aubergine"],k:[6,30],o:2},"flag-as":{a:"American Samoa Flag",b:"1F1E6-1F1F8",k:[0,42],o:2},reminder_ribbon:{a:"Reminder Ribbon",b:"1F397-FE0F",c:"1F397",j:["sports","cause","support","awareness"],k:[8,0],o:2},building_construction:{a:"Building Construction",b:"1F3D7-FE0F",c:"1F3D7",j:["wip","working","progress"],k:[10,42],o:2},relaxed:{a:"White Smiling Face",b:"263A-FE0F",c:"263A",j:["face","blush","massage","happiness"],k:[53,17],o:2},kissing_closed_eyes:{a:"Kissing Face with Closed Eyes",b:"1F61A",j:["face","love","like","affection","valentines","infatuation","kiss"],k:[31,4],o:2},"-1":{a:"Thumbs Down Sign",b:"1F44E",j:["thumbsdown","no","dislike","hand"],k:[13,44],n:["thumbsdown"],o:2},admission_tickets:{a:"Admission Tickets",b:"1F39F-FE0F",c:"1F39F",k:[8,5],o:2},"flag-at":{a:"Austria Flag",b:"1F1E6-1F1F9",k:[0,43],o:2},womans_clothes:{a:"Womans Clothes",b:"1F45A",j:["fashion","shopping_bags","female"],k:[14,14],o:2},do_not_litter:{a:"Do Not Litter Symbol",b:"1F6AF",j:["trash","bin","garbage","circle"],k:[35,6],o:2},potato:{a:"Potato",b:"1F954",j:["food","tuber","vegatable","starch"],k:[41,35],o:4},racehorse:{a:"Horse",b:"1F40E",j:["animal","gamble","luck"],k:[11,42],o:2},bricks:{a:"Brick",b:"1F9F1",k:[51,36],o:11},fist:{a:"Raised Fist",b:"270A",j:["fingers","hand","grasp"],k:[54,43],o:2},house_buildings:{a:"House Buildings",b:"1F3D8-FE0F",c:"1F3D8",k:[10,43],o:2},carrot:{a:"Carrot",b:"1F955",j:["vegetable","food","orange"],k:[41,36],o:4},ticket:{a:"Ticket",b:"1F3AB",j:["event","concert","pass"],k:[8,17],o:2},"flag-au":{a:"Australia Flag",b:"1F1E6-1F1FA",k:[0,44],o:2},"non-potable_water":{a:"Non-Potable Water Symbol",b:"1F6B1",j:["drink","faucet","tap","circle"],k:[35,8],o:2},purse:{a:"Purse",b:"1F45B",j:["fashion","accessories","money","sales","shopping"],k:[14,15],o:2},unicorn_face:{a:"Unicorn Face",b:"1F984",k:[42,22],o:2},kissing_smiling_eyes:{a:"Kissing Face with Smiling Eyes",b:"1F619",j:["face","affection","valentines","infatuation","kiss"],k:[31,3],o:2},facepunch:{a:"Fisted Hand Sign",b:"1F44A",j:["angry","violence","fist","hit","attack","hand"],k:[13,20],n:["punch"],o:2},medal:{a:"Medal",b:"1F396-FE0F",c:"1F396",k:[7,56],o:2},zebra_face:{a:"Zebra Face",b:"1F993",k:[42,37],o:5},handbag:{a:"Handbag",b:"1F45C",j:["fashion","accessory","accessories","shopping"],k:[14,16],o:2},derelict_house_building:{a:"Derelict House Building",b:"1F3DA-FE0F",c:"1F3DA",k:[10,45],o:2},yum:{a:"Face Savouring Delicious Food",b:"1F60B",j:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],k:[30,46],o:2},corn:{a:"Ear of Maize",b:"1F33D",j:["food","vegetable","plant"],k:[6,21],o:2},"flag-aw":{a:"Aruba Flag",b:"1F1E6-1F1FC",k:[0,45],o:2},no_pedestrians:{a:"No Pedestrians",b:"1F6B7",j:["rules","crossing","walking","circle"],k:[36,8],o:2},house:{a:"House Building",b:"1F3E0",j:["building","home"],k:[10,51],o:2},hot_pepper:{a:"Hot Pepper",b:"1F336-FE0F",c:"1F336",j:["food","spicy","chilli","chili"],k:[6,14],o:2},"flag-ax":{a:"Åland Islands Flag",b:"1F1E6-1F1FD",k:[0,46],o:2},trophy:{a:"Trophy",b:"1F3C6",j:["win","award","contest","place","ftw","ceremony"],k:[9,26],o:2},deer:{a:"Deer",b:"1F98C",j:["animal","nature","horns","venison"],k:[42,30],o:4},"left-facing_fist":{a:"Left-Facing Fist",b:"1F91B",k:[37,49],o:4},stuck_out_tongue:{a:"Face with Stuck-out Tongue",b:"1F61B",j:["face","prank","childish","playful","mischievous","smile","tongue"],k:[31,5],l:[":p",":-p",":P",":-P",":b",":-b"],m:":p",o:2},pouch:{a:"Pouch",b:"1F45D",j:["bag","accessories","shopping"],k:[14,17],o:2},no_mobile_phones:{a:"No Mobile Phones",b:"1F4F5",j:["iphone","mute","circle"],k:[27,18],o:2},stuck_out_tongue_winking_eye:{a:"Face with Stuck-out Tongue and Winking Eye",b:"1F61C",j:["face","prank","childish","playful","mischievous","smile","wink","tongue"],k:[31,6],l:[";p",";-p",";b",";-b",";P",";-P"],m:";p",o:2},sports_medal:{a:"Sports Medal",b:"1F3C5",k:[9,25],o:2},cucumber:{a:"Cucumber",b:"1F952",j:["fruit","food","pickle"],k:[41,33],o:4},cow:{a:"Cow Face",b:"1F42E",j:["beef","ox","animal","nature","moo","milk"],k:[12,18],o:2},underage:{a:"No One Under Eighteen Symbol",b:"1F51E",j:["18","drink","pub","night","minor","circle"],k:[28,1],o:2},"flag-az":{a:"Azerbaijan Flag",b:"1F1E6-1F1FF",k:[0,47],o:2},shopping_bags:{a:"Shopping Bags",b:"1F6CD-FE0F",c:"1F6CD",k:[36,35],o:2},"right-facing_fist":{a:"Right-Facing Fist",b:"1F91C",k:[37,55],o:4},house_with_garden:{a:"House with Garden",b:"1F3E1",j:["home","plant","nature"],k:[10,52],o:2},clap:{a:"Clapping Hands Sign",b:"1F44F",j:["hands","praise","applause","congrats","yay"],k:[13,50],o:2},leafy_green:{a:"Leafy Green",b:"1F96C",k:[42,2],o:11},office:{a:"Office Building",b:"1F3E2",j:["building","bureau","work"],k:[10,53],o:2},"flag-ba":{a:"Bosnia & Herzegovina Flag",b:"1F1E7-1F1E6",k:[0,48],o:2},zany_face:{a:"Grinning Face with One Large and One Small Eye",b:"1F92A",k:[38,44],n:["grinning_face_with_one_large_and_one_small_eye"],o:5},first_place_medal:{a:"First Place Medal",b:"1F947",k:[41,22],o:4},ox:{a:"Ox",b:"1F402",j:["animal","cow","beef"],k:[11,30],o:2},school_satchel:{a:"School Satchel",b:"1F392",j:["student","education","bag","backpack"],k:[7,54],o:2},radioactive_sign:{a:"Radioactive Sign",b:"2622-FE0F",c:"2622",k:[53,9],o:2},second_place_medal:{a:"Second Place Medal",b:"1F948",k:[41,23],o:4},stuck_out_tongue_closed_eyes:{a:"Face with Stuck-out Tongue and Tightly-Closed Eyes",b:"1F61D",j:["face","prank","playful","mischievous","smile","tongue"],k:[31,7],o:2},broccoli:{a:"Broccoli",b:"1F966",k:[41,53],o:5},biohazard_sign:{a:"Biohazard Sign",b:"2623-FE0F",c:"2623",k:[53,10],o:2},mans_shoe:{a:"Mans Shoe",b:"1F45E",j:["fashion","male"],k:[14,18],n:["shoe"],o:2},raised_hands:{a:"Person Raising Both Hands in Celebration",b:"1F64C",j:["gesture","hooray","yea","celebration","hands"],k:[33,8],o:2},post_office:{a:"Japanese Post Office",b:"1F3E3",j:["building","envelope","communication"],k:[10,54],o:2},"flag-bb":{a:"Barbados Flag",b:"1F1E7-1F1E7",k:[0,49],o:2},water_buffalo:{a:"Water Buffalo",b:"1F403",j:["animal","nature","ox","cow"],k:[11,31],o:2},third_place_medal:{a:"Third Place Medal",b:"1F949",k:[41,24],o:4},european_post_office:{a:"European Post Office",b:"1F3E4",j:["building","email"],k:[10,55],o:2},athletic_shoe:{a:"Athletic Shoe",b:"1F45F",j:["shoes","sports","sneakers"],k:[14,19],o:2},arrow_up:{a:"Upwards Black Arrow",b:"2B06-FE0F",c:"2B06",j:["blue-square","continue","top","direction"],k:[55,38],o:2},cow2:{a:"Cow",b:"1F404",j:["beef","ox","animal","nature","moo","milk"],k:[11,32],o:2},open_hands:{a:"Open Hands Sign",b:"1F450",j:["fingers","butterfly","hands","open"],k:[13,56],o:2},garlic:{a:"Garlic",b:"1F9C4",k:[44,12],o:12},money_mouth_face:{a:"Money-Mouth Face",b:"1F911",j:["face","rich","dollar","money"],k:[37,24],o:2},"flag-bd":{a:"Bangladesh Flag",b:"1F1E7-1F1E9",k:[0,50],o:2},soccer:{a:"Soccer Ball",b:"26BD",j:["sports","football"],k:[53,56],o:2},hugging_face:{a:"Hugging Face",b:"1F917",k:[37,30],o:2},onion:{a:"Onion",b:"1F9C5",k:[44,13],o:12},arrow_upper_right:{a:"North East Arrow",b:"2197-FE0F",c:"2197",j:["blue-square","point","direction","diagonal","northeast"],k:[52,17],o:2},palms_up_together:{a:"Palms Up Together",b:"1F932",k:[39,5],o:5},pig:{a:"Pig Face",b:"1F437",j:["animal","oink","nature"],k:[12,27],o:2},hospital:{a:"Hospital",b:"1F3E5",j:["building","health","surgery","doctor"],k:[10,56],o:2},hiking_boot:{a:"Hiking Boot",b:"1F97E",k:[42,16],o:11},"flag-be":{a:"Belgium Flag",b:"1F1E7-1F1EA",k:[0,51],o:2},"flag-bf":{a:"Burkina Faso Flag",b:"1F1E7-1F1EB",k:[0,52],o:2},mushroom:{a:"Mushroom",b:"1F344",j:["plant","vegetable"],k:[6,28],o:2},pig2:{a:"Pig",b:"1F416",j:["animal","nature"],k:[11,51],o:2},baseball:{a:"Baseball",b:"26BE",j:["sports","balls"],k:[54,0],o:2},face_with_hand_over_mouth:{a:"Smiling Face with Smiling Eyes and Hand Covering Mouth",b:"1F92D",k:[38,47],n:["smiling_face_with_smiling_eyes_and_hand_covering_mouth"],o:5},handshake:{a:"Handshake",b:"1F91D",j:["agreement","shake"],k:[38,4],o:4},womans_flat_shoe:{a:"Flat Shoe",b:"1F97F",k:[42,17],o:11},bank:{a:"Bank",b:"1F3E6",j:["building","money","sales","cash","business","enterprise"],k:[11,0],o:2},arrow_right:{a:"Black Rightwards Arrow",b:"27A1-FE0F",c:"27A1",j:["blue-square","next"],k:[55,32],o:2},peanuts:{a:"Peanuts",b:"1F95C",j:["food","nut"],k:[41,43],o:4},shushing_face:{a:"Face with Finger Covering Closed Lips",b:"1F92B",k:[38,45],n:["face_with_finger_covering_closed_lips"],o:5},pray:{a:"Person with Folded Hands",b:"1F64F",j:["please","hope","wish","namaste","highfive"],k:[33,50],o:2},softball:{a:"Softball",b:"1F94E",k:[41,29],o:11},high_heel:{a:"High-Heeled Shoe",b:"1F460",j:["fashion","shoes","female","pumps","stiletto"],k:[14,20],o:2},"flag-bg":{a:"Bulgaria Flag",b:"1F1E7-1F1EC",k:[0,53],o:2},arrow_lower_right:{a:"South East Arrow",b:"2198-FE0F",c:"2198",j:["blue-square","direction","diagonal","southeast"],k:[52,18],o:2},hotel:{a:"Hotel",b:"1F3E8",j:["building","accomodation","checkin"],k:[11,2],o:2},boar:{a:"Boar",b:"1F417",j:["animal","nature"],k:[11,52],o:2},sandal:{a:"Womans Sandal",b:"1F461",j:["shoes","fashion","flip flops"],k:[14,21],o:2},"flag-bh":{a:"Bahrain Flag",b:"1F1E7-1F1ED",k:[0,54],o:2},arrow_down:{a:"Downwards Black Arrow",b:"2B07-FE0F",c:"2B07",j:["blue-square","direction","bottom"],k:[55,39],o:2},thinking_face:{a:"Thinking Face",b:"1F914",k:[37,27],o:2},writing_hand:{a:"Writing Hand",b:"270D-FE0F",c:"270D",j:["lower_left_ballpoint_pen","stationery","write","compose"],k:[55,4],o:2},chestnut:{a:"Chestnut",b:"1F330",j:["food","squirrel"],k:[6,8],o:2},basketball:{a:"Basketball and Hoop",b:"1F3C0",j:["sports","balls","NBA"],k:[8,38],o:2},pig_nose:{a:"Pig Nose",b:"1F43D",j:["animal","oink"],k:[12,33],o:2},love_hotel:{a:"Love Hotel",b:"1F3E9",j:["like","affection","dating"],k:[11,3],o:2},nail_care:{a:"Nail Polish",b:"1F485",j:["beauty","manicure","finger","fashion","nail"],k:[24,33],o:2},volleyball:{a:"Volleyball",b:"1F3D0",j:["sports","balls"],k:[10,35],o:2},"flag-bi":{a:"Burundi Flag",b:"1F1E7-1F1EE",k:[0,55],o:2},arrow_lower_left:{a:"South West Arrow",b:"2199-FE0F",c:"2199",j:["blue-square","direction","diagonal","southwest"],k:[52,19],o:2},ram:{a:"Ram",b:"1F40F",j:["animal","sheep","nature"],k:[11,43],o:2},ballet_shoes:{a:"Ballet Shoes",b:"1FA70",k:[51,51],o:12},zipper_mouth_face:{a:"Zipper-Mouth Face",b:"1F910",j:["face","sealed","zipper","secret"],k:[37,23],o:2},bread:{a:"Bread",b:"1F35E",j:["food","wheat","breakfast","toast"],k:[6,54],o:2},convenience_store:{a:"Convenience Store",b:"1F3EA",j:["building","shopping","groceries"],k:[11,4],o:2},boot:{a:"Womans Boots",b:"1F462",j:["shoes","fashion"],k:[14,22],o:2},sheep:{a:"Sheep",b:"1F411",j:["animal","nature","wool","shipit"],k:[11,45],o:2},face_with_raised_eyebrow:{a:"Face with One Eyebrow Raised",b:"1F928",k:[38,42],n:["face_with_one_eyebrow_raised"],o:5},"flag-bj":{a:"Benin Flag",b:"1F1E7-1F1EF",k:[0,56],o:2},arrow_left:{a:"Leftwards Black Arrow",b:"2B05-FE0F",c:"2B05",j:["blue-square","previous","back"],k:[55,37],o:2},selfie:{a:"Selfie",b:"1F933",j:["camera","phone"],k:[39,11],o:4},croissant:{a:"Croissant",b:"1F950",j:["food","bread","french"],k:[41,31],o:4},school:{a:"School",b:"1F3EB",j:["building","student","education","learn","teach"],k:[11,5],o:2},football:{a:"American Football",b:"1F3C8",j:["sports","balls","NFL"],k:[9,33],o:2},goat:{a:"Goat",b:"1F410",j:["animal","nature"],k:[11,44],o:2},department_store:{a:"Department Store",b:"1F3EC",j:["building","shopping","mall"],k:[11,6],o:2},"flag-bl":{a:"St. Barthélemy Flag",b:"1F1E7-1F1F1",k:[1,0],o:2},crown:{a:"Crown",b:"1F451",j:["king","kod","leader","royalty","lord"],k:[14,5],o:2},arrow_upper_left:{a:"North West Arrow",b:"2196-FE0F",c:"2196",j:["blue-square","point","direction","diagonal","northwest"],k:[52,16],o:2},neutral_face:{a:"Neutral Face",b:"1F610",j:["indifference","meh",":|","neutral"],k:[30,51],l:[":|",":-|"],o:2},rugby_football:{a:"Rugby Football",b:"1F3C9",j:["sports","team"],k:[9,34],o:2},muscle:{a:"Flexed Biceps",b:"1F4AA",j:["arm","flex","hand","summer","strong","biceps"],k:[25,52],o:2},baguette_bread:{a:"Baguette Bread",b:"1F956",j:["food","bread","french"],k:[41,37],o:4},expressionless:{a:"Expressionless Face",b:"1F611",j:["face","indifferent","-_-","meh","deadpan"],k:[30,52],o:2},womans_hat:{a:"Womans Hat",b:"1F452",j:["fashion","accessories","female","lady","spring"],k:[14,6],o:2},pretzel:{a:"Pretzel",b:"1F968",k:[41,55],o:5},mechanical_arm:{a:"Mechanical Arm",b:"1F9BE",k:[44,6],o:12},arrow_up_down:{a:"Up Down Arrow",b:"2195-FE0F",c:"2195",j:["blue-square","direction","way","vertical"],k:[52,15],o:2},dromedary_camel:{a:"Dromedary Camel",b:"1F42A",j:["animal","hot","desert","hump"],k:[12,14],o:2},tennis:{a:"Tennis Racquet and Ball",b:"1F3BE",j:["sports","balls","green"],k:[8,36],o:2},"flag-bm":{a:"Bermuda Flag",b:"1F1E7-1F1F2",k:[1,1],o:2},factory:{a:"Factory",b:"1F3ED",j:["building","industry","pollution","smoke"],k:[11,7],o:2},japanese_castle:{a:"Japanese Castle",b:"1F3EF",j:["photo","building"],k:[11,9],o:2},no_mouth:{a:"Face Without Mouth",b:"1F636",j:["face","hellokitty"],k:[31,32],o:2},mechanical_leg:{a:"Mechanical Leg",b:"1F9BF",k:[44,7],o:12},bagel:{a:"Bagel",b:"1F96F",k:[42,5],o:11},camel:{a:"Bactrian Camel",b:"1F42B",j:["animal","nature","hot","desert","hump"],k:[12,15],o:2},tophat:{a:"Top Hat",b:"1F3A9",j:["magic","gentleman","classy","circus"],k:[8,15],o:2},left_right_arrow:{a:"Left Right Arrow",b:"2194-FE0F",c:"2194",j:["shape","direction","horizontal","sideways"],k:[52,14],o:2},"flag-bn":{a:"Brunei Flag",b:"1F1E7-1F1F3",k:[1,2],o:2},flying_disc:{a:"Flying Disc",b:"1F94F",k:[41,30],o:11},smirk:{a:"Smirking Face",b:"1F60F",j:["face","smile","mean","prank","smug","sarcasm"],k:[30,50],o:2},mortar_board:{a:"Graduation Cap",b:"1F393",j:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],k:[7,55],o:2},european_castle:{a:"European Castle",b:"1F3F0",j:["building","royalty","history"],k:[11,10],o:2},leg:{a:"Leg",b:"1F9B5",k:[43,5],o:11},pancakes:{a:"Pancakes",b:"1F95E",j:["food","breakfast","flapjacks","hotcakes"],k:[41,45],o:4},leftwards_arrow_with_hook:{a:"Leftwards Arrow with Hook",b:"21A9-FE0F",c:"21A9",j:["back","return","blue-square","undo","enter"],k:[52,20],o:2},"flag-bo":{a:"Bolivia Flag",b:"1F1E7-1F1F4",k:[1,3],o:2},bowling:{a:"Bowling",b:"1F3B3",j:["sports","fun","play"],k:[8,25],o:2},llama:{a:"Llama",b:"1F999",k:[42,43],o:11},arrow_right_hook:{a:"Rightwards Arrow with Hook",b:"21AA-FE0F",c:"21AA",j:["blue-square","return","rotate","direction"],k:[52,21],o:2},wedding:{a:"Wedding",b:"1F492",j:["love","like","affection","couple","marriage","bride","groom"],k:[25,28],o:2},"flag-bq":{a:"Caribbean Netherlands Flag",b:"1F1E7-1F1F6",k:[1,4],o:2},foot:{a:"Foot",b:"1F9B6",k:[43,11],o:11},giraffe_face:{a:"Giraffe Face",b:"1F992",k:[42,36],o:5},unamused:{a:"Unamused Face",b:"1F612",j:["indifference","bored","straight face","serious","sarcasm"],k:[30,53],m:":(",o:2},billed_cap:{a:"Billed Cap",b:"1F9E2",k:[51,21],o:5},waffle:{a:"Waffle",b:"1F9C7",k:[44,15],o:12},cricket_bat_and_ball:{a:"Cricket Bat and Ball",b:"1F3CF",k:[10,34],o:2},helmet_with_white_cross:{a:"Helmet with White Cross",b:"26D1-FE0F",c:"26D1",k:[54,6],o:2},ear:{a:"Ear",b:"1F442",j:["face","hear","sound","listen"],k:[12,39],o:2},elephant:{a:"Elephant",b:"1F418",j:["animal","nature","nose","th","circus"],k:[11,53],o:2},cheese_wedge:{a:"Cheese Wedge",b:"1F9C0",k:[44,8],o:2},tokyo_tower:{a:"Tokyo Tower",b:"1F5FC",j:["photo","japanese"],k:[30,31],o:2},arrow_heading_up:{a:"Arrow Pointing Rightwards Then Curving Upwards",b:"2934-FE0F",c:"2934",j:["blue-square","direction","top"],k:[55,35],o:2},field_hockey_stick_and_ball:{a:"Field Hockey Stick and Ball",b:"1F3D1",k:[10,36],o:2},"flag-br":{a:"Brazil Flag",b:"1F1E7-1F1F7",k:[1,5],o:2},face_with_rolling_eyes:{a:"Face with Rolling Eyes",b:"1F644",k:[31,46],o:2},ear_with_hearing_aid:{a:"Ear with Hearing Aid",b:"1F9BB",k:[43,55],o:12},arrow_heading_down:{a:"Arrow Pointing Rightwards Then Curving Downwards",b:"2935-FE0F",c:"2935",j:["blue-square","direction","bottom"],k:[55,36],o:2},ice_hockey_stick_and_puck:{a:"Ice Hockey Stick and Puck",b:"1F3D2",k:[10,37],o:2},meat_on_bone:{a:"Meat on Bone",b:"1F356",j:["good","food","drumstick"],k:[6,46],o:2},prayer_beads:{a:"Prayer Beads",b:"1F4FF",j:["dhikr","religious"],k:[27,27],o:2},statue_of_liberty:{a:"Statue of Liberty",b:"1F5FD",j:["american","newyork"],k:[30,32],o:2},grimacing:{a:"Grimacing Face",b:"1F62C",j:["face","grimace","teeth"],k:[31,22],o:2},"flag-bs":{a:"Bahamas Flag",b:"1F1E7-1F1F8",k:[1,6],o:2},rhinoceros:{a:"Rhinoceros",b:"1F98F",j:["animal","nature","horn"],k:[42,33],o:4},lacrosse:{a:"Lacrosse Stick and Ball",b:"1F94D",k:[41,28],o:11},poultry_leg:{a:"Poultry Leg",b:"1F357",j:["food","meat","drumstick","bird","chicken","turkey"],k:[6,47],o:2},hippopotamus:{a:"Hippopotamus",b:"1F99B",k:[42,45],o:11},nose:{a:"Nose",b:"1F443",j:["smell","sniff"],k:[12,45],o:2},arrows_clockwise:{a:"Clockwise Downwards and Upwards Open Circle Arrows",b:"1F503",j:["sync","cycle","round","repeat"],k:[27,31],o:2},"flag-bt":{a:"Bhutan Flag",b:"1F1E7-1F1F9",k:[1,7],o:2},church:{a:"Church",b:"26EA",j:["building","religion","christ"],k:[54,10],o:2},lipstick:{a:"Lipstick",b:"1F484",j:["female","girl","fashion","woman"],k:[24,32],o:2},lying_face:{a:"Lying Face",b:"1F925",j:["face","lie","pinocchio"],k:[38,22],o:4},arrows_counterclockwise:{a:"Anticlockwise Downwards and Upwards Open Circle Arrows",b:"1F504",j:["blue-square","sync","cycle"],k:[27,32],o:2},"flag-bv":{a:"Bouvet Island Flag",b:"1F1E7-1F1FB",k:[1,8],o:2},cut_of_meat:{a:"Cut of Meat",b:"1F969",k:[41,56],o:5},mosque:{a:"Mosque",b:"1F54C",j:["islam","worship","minaret"],k:[28,36],o:2},ring:{a:"Ring",b:"1F48D",j:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],k:[25,23],o:2},brain:{a:"Brain",b:"1F9E0",k:[51,19],o:5},table_tennis_paddle_and_ball:{a:"Table Tennis Paddle and Ball",b:"1F3D3",k:[10,38],o:2},relieved:{a:"Relieved Face",b:"1F60C",j:["face","relaxed","phew","massage","happiness"],k:[30,47],o:2},mouse:{a:"Mouse Face",b:"1F42D",j:["animal","nature","cheese_wedge","rodent"],k:[12,17],o:2},hindu_temple:{a:"Hindu Temple",b:"1F6D5",k:[36,41],o:12},back:{a:"Back with Leftwards Arrow Above",b:"1F519",j:["arrow","words","return"],k:[27,53],o:2},gem:{a:"Gem Stone",b:"1F48E",j:["blue","ruby","diamond","jewelry"],k:[25,24],o:2},pensive:{a:"Pensive Face",b:"1F614",j:["face","sad","depressed","upset"],k:[30,55],o:2},"flag-bw":{a:"Botswana Flag",b:"1F1E7-1F1FC",k:[1,9],o:2},mouse2:{a:"Mouse",b:"1F401",j:["animal","nature","rodent"],k:[11,29],o:2},bacon:{a:"Bacon",b:"1F953",j:["food","breakfast","pork","pig","meat"],k:[41,34],o:4},tooth:{a:"Tooth",b:"1F9B7",k:[43,17],o:11},badminton_racquet_and_shuttlecock:{a:"Badminton Racquet and Shuttlecock",b:"1F3F8",k:[11,20],o:2},rat:{a:"Rat",b:"1F400",j:["animal","mouse","rodent"],k:[11,28],o:2},synagogue:{a:"Synagogue",b:"1F54D",j:["judaism","worship","temple","jewish"],k:[28,37],o:2},end:{a:"End with Leftwards Arrow Above",b:"1F51A",j:["words","arrow"],k:[27,54],o:2},bone:{a:"Bone",b:"1F9B4",k:[43,4],o:11},boxing_glove:{a:"Boxing Glove",b:"1F94A",j:["sports","fighting"],k:[41,25],o:4},mute:{a:"Speaker with Cancellation Stroke",b:"1F507",j:["sound","volume","silence","quiet"],k:[27,35],o:2},hamburger:{a:"Hamburger",b:"1F354",j:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],k:[6,44],o:2},"flag-by":{a:"Belarus Flag",b:"1F1E7-1F1FE",k:[1,10],o:2},sleepy:{a:"Sleepy Face",b:"1F62A",j:["face","tired","rest","nap"],k:[31,20],o:2},on:{a:"On with Exclamation Mark with Left Right Arrow Above",b:"1F51B",j:["arrow","words"],k:[27,55],o:2},martial_arts_uniform:{a:"Martial Arts Uniform",b:"1F94B",j:["judo","karate","taekwondo"],k:[41,26],o:4},speaker:{a:"Speaker",b:"1F508",j:["sound","volume","silence","broadcast"],k:[27,36],o:2},drooling_face:{a:"Drooling Face",b:"1F924",j:["face"],k:[38,21],o:4},eyes:{a:"Eyes",b:"1F440",j:["look","watch","stalk","peek","see"],k:[12,36],o:2},"flag-bz":{a:"Belize Flag",b:"1F1E7-1F1FF",k:[1,11],o:2},hamster:{a:"Hamster Face",b:"1F439",j:["animal","nature"],k:[12,29],o:2},shinto_shrine:{a:"Shinto Shrine",b:"26E9-FE0F",c:"26E9",j:["temple","japan","kyoto"],k:[54,9],o:2},fries:{a:"French Fries",b:"1F35F",j:["chips","snack","fast food"],k:[6,55],o:2},goal_net:{a:"Goal Net",b:"1F945",j:["sports"],k:[41,21],o:4},kaaba:{a:"Kaaba",b:"1F54B",j:["mecca","mosque","islam"],k:[28,35],o:2},soon:{a:"Soon with Rightwards Arrow Above",b:"1F51C",j:["arrow","words"],k:[27,56],o:2},"flag-ca":{a:"Canada Flag",b:"1F1E8-1F1E6",k:[1,12],o:2},rabbit:{a:"Rabbit Face",b:"1F430",j:["animal","nature","pet","spring","magic","bunny"],k:[12,20],o:2},eye:{a:"Eye",b:"1F441-FE0F",c:"1F441",j:["face","look","see","watch","stare"],k:[12,38],o:2},sleeping:{a:"Sleeping Face",b:"1F634",j:["face","tired","sleepy","night","zzz"],k:[31,30],o:2},pizza:{a:"Slice of Pizza",b:"1F355",j:["food","party"],k:[6,45],o:2},sound:{a:"Speaker with One Sound Wave",b:"1F509",j:["volume","speaker","broadcast"],k:[27,37],o:2},rabbit2:{a:"Rabbit",b:"1F407",j:["animal","nature","pet","magic","spring"],k:[11,35],o:2},fountain:{a:"Fountain",b:"26F2",j:["photo","summer","water","fresh"],k:[54,13],o:2},golf:{a:"Flag in Hole",b:"26F3",j:["sports","business","flag","hole","summer"],k:[54,14],o:2},top:{a:"Top with Upwards Arrow Above",b:"1F51D",j:["words","blue-square"],k:[28,0],o:2},mask:{a:"Face with Medical Mask",b:"1F637",j:["face","sick","ill","disease"],k:[31,33],o:2},"flag-cc":{a:"Cocos (keeling) Islands Flag",b:"1F1E8-1F1E8",k:[1,13],o:2},hotdog:{a:"Hot Dog",b:"1F32D",j:["food","frankfurter"],k:[6,5],o:2},loud_sound:{a:"Speaker with Three Sound Waves",b:"1F50A",j:["volume","noise","noisy","speaker","broadcast"],k:[27,38],o:2},tongue:{a:"Tongue",b:"1F445",j:["mouth","playful"],k:[12,52],o:2},place_of_worship:{a:"Place of Worship",b:"1F6D0",j:["religion","church","temple","prayer"],k:[36,38],o:2},ice_skate:{a:"Ice Skate",b:"26F8-FE0F",c:"26F8",j:["sports"],k:[54,18],o:2},sandwich:{a:"Sandwich",b:"1F96A",k:[42,0],o:5},chipmunk:{a:"Chipmunk",b:"1F43F-FE0F",c:"1F43F",j:["animal","nature","rodent","squirrel"],k:[12,35],o:2},loudspeaker:{a:"Public Address Loudspeaker",b:"1F4E2",j:["volume","sound"],k:[26,56],o:2},lips:{a:"Mouth",b:"1F444",j:["mouth","kiss"],k:[12,51],o:2},"flag-cd":{a:"Congo - Kinshasa Flag",b:"1F1E8-1F1E9",k:[1,14],o:2},tent:{a:"Tent",b:"26FA",j:["photo","camping","outdoors"],k:[54,37],o:2},face_with_thermometer:{a:"Face with Thermometer",b:"1F912",j:["sick","temperature","thermometer","cold","fever"],k:[37,25],o:2},taco:{a:"Taco",b:"1F32E",j:["food","mexican"],k:[6,6],o:2},foggy:{a:"Foggy",b:"1F301",j:["photo","mountain"],k:[5,20],o:2},"flag-cf":{a:"Central African Republic Flag",b:"1F1E8-1F1EB",k:[1,15],o:2},baby:{a:"Baby",b:"1F476",j:["child","boy","girl","toddler"],k:[23,4],o:2},atom_symbol:{a:"Atom Symbol",b:"269B-FE0F",c:"269B",j:["science","physics","chemistry"],k:[53,48],o:2},fishing_pole_and_fish:{a:"Fishing Pole and Fish",b:"1F3A3",j:["food","hobby","summer"],k:[8,9],o:2},hedgehog:{a:"Hedgehog",b:"1F994",k:[42,38],o:5},face_with_head_bandage:{a:"Face with Head-Bandage",b:"1F915",j:["injured","clumsy","bandage","hurt"],k:[37,28],o:2},mega:{a:"Cheering Megaphone",b:"1F4E3",j:["sound","speaker","volume"],k:[27,0],o:2},nauseated_face:{a:"Nauseated Face",b:"1F922",j:["face","vomit","gross","green","sick","throw up","ill"],k:[38,19],o:4},child:{a:"Child",b:"1F9D2",k:[48,16],o:5},"flag-cg":{a:"Congo - Brazzaville Flag",b:"1F1E8-1F1EC",k:[1,16],o:2},bat:{a:"Bat",b:"1F987",j:["animal","nature","blind","vampire"],k:[42,25],o:4},diving_mask:{a:"Diving Mask",b:"1F93F",k:[41,15],o:12},burrito:{a:"Burrito",b:"1F32F",j:["food","mexican"],k:[6,7],o:2},postal_horn:{a:"Postal Horn",b:"1F4EF",j:["instrument","music"],k:[27,12],o:2},night_with_stars:{a:"Night with Stars",b:"1F303",j:["evening","city","downtown"],k:[5,22],o:2},om_symbol:{a:"Om Symbol",b:"1F549-FE0F",c:"1F549",k:[28,33],o:2},star_of_david:{a:"Star of David",b:"2721-FE0F",c:"2721",j:["judaism"],k:[55,15],o:2},boy:{a:"Boy",b:"1F466",j:["man","male","guy","teenager"],k:[14,26],o:2},bell:{a:"Bell",b:"1F514",j:["sound","notification","christmas","xmas","chime"],k:[27,48],o:2},"flag-ch":{a:"Switzerland Flag",b:"1F1E8-1F1ED",k:[1,17],o:2},running_shirt_with_sash:{a:"Running Shirt with Sash",b:"1F3BD",j:["play","pageant"],k:[8,35],o:2},stuffed_flatbread:{a:"Stuffed Flatbread",b:"1F959",j:["food","flatbread","stuffed","gyro"],k:[41,40],o:4},bear:{a:"Bear Face",b:"1F43B",j:["animal","nature","wild"],k:[12,31],o:2},cityscape:{a:"Cityscape",b:"1F3D9-FE0F",c:"1F3D9",j:["photo","night life","urban"],k:[10,44],o:2},face_vomiting:{a:"Face with Open Mouth Vomiting",b:"1F92E",k:[38,48],n:["face_with_open_mouth_vomiting"],o:5},wheel_of_dharma:{a:"Wheel of Dharma",b:"2638-FE0F",c:"2638",j:["hinduism","buddhism","sikhism","jainism"],k:[53,15],o:2},ski:{a:"Ski and Ski Boot",b:"1F3BF",j:["sports","winter","cold","snow"],k:[8,37],o:2},girl:{a:"Girl",b:"1F467",j:["female","woman","teenager"],k:[14,32],o:2},falafel:{a:"Falafel",b:"1F9C6",k:[44,14],o:12},sneezing_face:{a:"Sneezing Face",b:"1F927",j:["face","gesundheit","sneeze","sick","allergy"],k:[38,41],o:4},no_bell:{a:"Bell with Cancellation Stroke",b:"1F515",j:["sound","volume","mute","quiet","silent"],k:[27,49],o:2},koala:{a:"Koala",b:"1F428",j:["animal","nature"],k:[12,12],o:2},sunrise_over_mountains:{a:"Sunrise over Mountains",b:"1F304",j:["view","vacation","photo"],k:[5,23],o:2},"flag-ci":{a:"Côte D’ivoire Flag",b:"1F1E8-1F1EE",k:[1,18],o:2},sunrise:{a:"Sunrise",b:"1F305",j:["morning","view","vacation","photo"],k:[5,24],o:2},yin_yang:{a:"Yin Yang",b:"262F-FE0F",c:"262F",j:["balance"],k:[53,14],o:2},adult:{a:"Adult",b:"1F9D1",k:[48,10],o:5},hot_face:{a:"Overheated Face",b:"1F975",k:[42,10],o:11},musical_score:{a:"Musical Score",b:"1F3BC",j:["treble","clef","compose"],k:[8,34],o:2},sled:{a:"Sled",b:"1F6F7",k:[36,56],o:5},egg:{a:"Egg",b:"1F95A",j:["food","chicken","breakfast"],k:[41,41],o:4},panda_face:{a:"Panda Face",b:"1F43C",j:["animal","nature","panda"],k:[12,32],o:2},"flag-ck":{a:"Cook Islands Flag",b:"1F1E8-1F1F0",k:[1,19],o:2},"flag-cl":{a:"Chile Flag",b:"1F1E8-1F1F1",k:[1,20],o:2},sloth:{a:"Sloth",b:"1F9A5",k:[42,53],o:12},latin_cross:{a:"Latin Cross",b:"271D-FE0F",c:"271D",j:["christianity"],k:[55,14],o:2},curling_stone:{a:"Curling Stone",b:"1F94C",k:[41,27],o:5},cold_face:{a:"Freezing Face",b:"1F976",k:[42,11],o:11},fried_egg:{a:"Cooking",b:"1F373",j:["food","breakfast","kitchen","egg"],k:[7,18],n:["cooking"],o:2},city_sunset:{a:"Cityscape at Dusk",b:"1F306",j:["photo","evening","sky","buildings"],k:[5,25],o:2},musical_note:{a:"Musical Note",b:"1F3B5",j:["score","tone","sound"],k:[8,27],o:2},"flag-cm":{a:"Cameroon Flag",b:"1F1E8-1F1F2",k:[1,21],o:2},notes:{a:"Multiple Musical Notes",b:"1F3B6",j:["music","score"],k:[8,28],o:2},woozy_face:{a:"Face with Uneven Eyes and Wavy Mouth",b:"1F974",k:[42,9],o:11},dart:{a:"Direct Hit",b:"1F3AF",j:["game","play","bar"],k:[8,21],o:2},orthodox_cross:{a:"Orthodox Cross",b:"2626-FE0F",c:"2626",j:["suppedaneum","religion"],k:[53,11],o:2},shallow_pan_of_food:{a:"Shallow Pan of Food",b:"1F958",j:["food","cooking","casserole","paella"],k:[41,39],o:4},otter:{a:"Otter",b:"1F9A6",k:[42,54],o:12},man:{a:"Man",b:"1F468",j:["mustache","father","dad","guy","classy","sir","moustache"],k:[17,22],o:2},city_sunrise:{a:"Sunset over Buildings",b:"1F307",j:["photo","good morning","dawn"],k:[5,26],o:2},bearded_person:{a:"Bearded Person",b:"1F9D4",k:[48,28],o:5},skunk:{a:"Skunk",b:"1F9A8",k:[42,56],o:12},stew:{a:"Pot of Food",b:"1F372",j:["food","meat","soup"],k:[7,17],o:2},cn:{a:"China Flag",b:"1F1E8-1F1F3",j:["china","chinese","prc","flag","country","nation","banner"],k:[1,22],n:["flag-cn"],o:2},studio_microphone:{a:"Studio Microphone",b:"1F399-FE0F",c:"1F399",j:["sing","recording","artist","talkshow"],k:[8,1],o:2},star_and_crescent:{a:"Star and Crescent",b:"262A-FE0F",c:"262A",j:["islam"],k:[53,12],o:2},"yo-yo":{a:"Yo-Yo",b:"1FA80",k:[52,1],o:12},bridge_at_night:{a:"Bridge at Night",b:"1F309",j:["photo","sanfrancisco"],k:[5,28],o:2},dizzy_face:{a:"Dizzy Face",b:"1F635",j:["spent","unconscious","xox","dizzy"],k:[31,31],o:2},red_haired_man:{a:"Red Haired Man",b:"1F468-200D-1F9B0",k:[16,23],o:11},kite:{a:"Kite",b:"1FA81",k:[52,2],o:12},bowl_with_spoon:{a:"Bowl with Spoon",b:"1F963",k:[41,50],o:5},"flag-co":{a:"Colombia Flag",b:"1F1E8-1F1F4",k:[1,23],o:2},peace_symbol:{a:"Peace Symbol",b:"262E-FE0F",c:"262E",j:["hippie"],k:[53,13],o:2},kangaroo:{a:"Kangaroo",b:"1F998",k:[42,42],o:11},hotsprings:{a:"Hot Springs",b:"2668-FE0F",c:"2668",j:["bath","warm","relax"],k:[53,37],o:2},exploding_head:{a:"Shocked Face with Exploding Head",b:"1F92F",k:[38,49],n:["shocked_face_with_exploding_head"],o:5},level_slider:{a:"Level Slider",b:"1F39A-FE0F",c:"1F39A",j:["scale"],k:[8,2],o:2},badger:{a:"Badger",b:"1F9A1",k:[42,51],o:11},"8ball":{a:"Billiards",b:"1F3B1",j:["pool","hobby","game","luck","magic"],k:[8,23],o:2},curly_haired_man:{a:"Curly Haired Man",b:"1F468-200D-1F9B1",k:[16,29],o:11},"flag-cp":{a:"Clipperton Island Flag",b:"1F1E8-1F1F5",k:[1,24],o:2},carousel_horse:{a:"Carousel Horse",b:"1F3A0",j:["photo","carnival"],k:[8,6],o:2},face_with_cowboy_hat:{a:"Face with Cowboy Hat",b:"1F920",k:[38,17],o:4},menorah_with_nine_branches:{a:"Menorah with Nine Branches",b:"1F54E",k:[28,38],o:2},green_salad:{a:"Green Salad",b:"1F957",j:["food","healthy","lettuce"],k:[41,38],o:4},control_knobs:{a:"Control Knobs",b:"1F39B-FE0F",c:"1F39B",j:["dial"],k:[8,3],o:2},popcorn:{a:"Popcorn",b:"1F37F",j:["food","movie theater","films","snack"],k:[7,30],o:2},six_pointed_star:{a:"Six Pointed Star with Middle Dot",b:"1F52F",j:["purple-square","religion","jewish","hexagram"],k:[28,18],o:2},feet:{a:"Paw Prints",b:"1F43E",k:[12,34],n:["paw_prints"],o:2},ferris_wheel:{a:"Ferris Wheel",b:"1F3A1",j:["photo","carnival","londoneye"],k:[8,7],o:2},microphone:{a:"Microphone",b:"1F3A4",j:["sound","music","PA","sing","talkshow"],k:[8,10],o:2},crystal_ball:{a:"Crystal Ball",b:"1F52E",j:["disco","party","magic","circus","fortune_teller"],k:[28,17],o:2},partying_face:{a:"Face with Party Horn and Party Hat",b:"1F973",k:[42,8],o:11},"flag-cr":{a:"Costa Rica Flag",b:"1F1E8-1F1F7",k:[1,25],o:2},white_haired_man:{a:"White Haired Man",b:"1F468-200D-1F9B3",k:[16,41],o:11},headphones:{a:"Headphone",b:"1F3A7",j:["music","score","gadgets"],k:[8,13],o:2},bald_man:{a:"Bald Man",b:"1F468-200D-1F9B2",k:[16,35],o:11},sunglasses:{a:"Smiling Face with Sunglasses",b:"1F60E",j:["face","cool","smile","summer","beach","sunglass"],k:[30,49],l:["8)"],o:2},butter:{a:"Butter",b:"1F9C8",k:[44,16],o:12},roller_coaster:{a:"Roller Coaster",b:"1F3A2",j:["carnival","playground","photo","fun"],k:[8,8],o:2},turkey:{a:"Turkey",b:"1F983",j:["animal","bird"],k:[42,21],o:2},nazar_amulet:{a:"Nazar Amulet",b:"1F9FF",k:[51,50],o:11},"flag-cu":{a:"Cuba Flag",b:"1F1E8-1F1FA",k:[1,26],o:2},aries:{a:"Aries",b:"2648",j:["sign","purple-square","zodiac","astrology"],k:[53,20],o:2},"flag-cv":{a:"Cape Verde Flag",b:"1F1E8-1F1FB",k:[1,27],o:2},barber:{a:"Barber Pole",b:"1F488",j:["hair","salon","style"],k:[25,18],o:2},taurus:{a:"Taurus",b:"2649",j:["purple-square","sign","zodiac","astrology"],k:[53,21],o:2},salt:{a:"Salt Shaker",b:"1F9C2",k:[44,10],o:11},woman:{a:"Woman",b:"1F469",j:["female","girls","lady"],k:[20,9],o:2},video_game:{a:"Video Game",b:"1F3AE",j:["play","console","PS4","controller"],k:[8,20],o:2},chicken:{a:"Chicken",b:"1F414",j:["animal","cluck","nature","bird"],k:[11,48],o:2},radio:{a:"Radio",b:"1F4FB",j:["communication","music","podcast","program"],k:[27,24],o:2},nerd_face:{a:"Nerd Face",b:"1F913",j:["face","nerdy","geek","dork"],k:[37,26],o:2},red_haired_woman:{a:"Red Haired Woman",b:"1F469-200D-1F9B0",k:[19,8],o:11},circus_tent:{a:"Circus Tent",b:"1F3AA",j:["festival","carnival","party"],k:[8,16],o:2},face_with_monocle:{a:"Face with Monocle",b:"1F9D0",k:[45,16],o:5},canned_food:{a:"Canned Food",b:"1F96B",k:[42,1],o:5},"flag-cw":{a:"Curaçao Flag",b:"1F1E8-1F1FC",k:[1,28],o:2},gemini:{a:"Gemini",b:"264A",j:["sign","zodiac","purple-square","astrology"],k:[53,22],o:2},saxophone:{a:"Saxophone",b:"1F3B7",j:["music","instrument","jazz","blues"],k:[8,29],o:2},rooster:{a:"Rooster",b:"1F413",j:["animal","nature","chicken"],k:[11,47],o:2},joystick:{a:"Joystick",b:"1F579-FE0F",c:"1F579",j:["game","play"],k:[29,36],o:2},guitar:{a:"Guitar",b:"1F3B8",j:["music","instrument"],k:[8,30],o:2},slot_machine:{a:"Slot Machine",b:"1F3B0",j:["bet","gamble","vegas","fruit machine","luck","casino"],k:[8,22],o:2},bento:{a:"Bento Box",b:"1F371",j:["food","japanese","box"],k:[7,16],o:2},steam_locomotive:{a:"Steam Locomotive",b:"1F682",j:["transportation","vehicle","train"],k:[34,1],o:2},confused:{a:"Confused Face",b:"1F615",j:["face","indifference","huh","weird","hmmm",":/"],k:[30,56],l:[":\\",":-\\",":/",":-/"],o:2},"flag-cx":{a:"Christmas Island Flag",b:"1F1E8-1F1FD",k:[1,29],o:2},hatching_chick:{a:"Hatching Chick",b:"1F423",j:["animal","chicken","egg","born","baby","bird"],k:[12,7],o:2},cancer:{a:"Cancer",b:"264B",j:["sign","zodiac","purple-square","astrology"],k:[53,23],o:2},"flag-cy":{a:"Cyprus Flag",b:"1F1E8-1F1FE",k:[1,30],o:2},worried:{a:"Worried Face",b:"1F61F",j:["face","concern","nervous",":("],k:[31,9],o:2},railway_car:{a:"Railway Car",b:"1F683",j:["transportation","vehicle"],k:[34,2],o:2},leo:{a:"Leo",b:"264C",j:["sign","purple-square","zodiac","astrology"],k:[53,24],o:2},curly_haired_woman:{a:"Curly Haired Woman",b:"1F469-200D-1F9B1",k:[19,14],o:11},baby_chick:{a:"Baby Chick",b:"1F424",j:["animal","chicken","bird"],k:[12,8],o:2},musical_keyboard:{a:"Musical Keyboard",b:"1F3B9",j:["piano","instrument","compose"],k:[8,31],o:2},game_die:{a:"Game Die",b:"1F3B2",j:["dice","random","tabletop","play","luck"],k:[8,24],o:2},rice_cracker:{a:"Rice Cracker",b:"1F358",j:["food","japanese"],k:[6,48],o:2},virgo:{a:"Virgo",b:"264D",j:["sign","zodiac","purple-square","astrology"],k:[53,25],o:2},"flag-cz":{a:"Czechia Flag",b:"1F1E8-1F1FF",k:[1,31],o:2},rice_ball:{a:"Rice Ball",b:"1F359",j:["food","japanese"],k:[6,49],o:2},hatched_chick:{a:"Front-Facing Baby Chick",b:"1F425",j:["animal","chicken","baby","bird"],k:[12,9],o:2},jigsaw:{a:"Jigsaw Puzzle Piece",b:"1F9E9",k:[51,28],o:11},trumpet:{a:"Trumpet",b:"1F3BA",j:["music","brass"],k:[8,32],o:2},slightly_frowning_face:{a:"Slightly Frowning Face",b:"1F641",j:["face","frowning","disappointed","sad","upset"],k:[31,43],o:2},bullettrain_side:{a:"High-Speed Train",b:"1F684",j:["transportation","vehicle"],k:[34,3],o:2},libra:{a:"Libra",b:"264E",j:["sign","purple-square","zodiac","astrology"],k:[53,26],o:2},de:{a:"Germany Flag",b:"1F1E9-1F1EA",j:["german","nation","flag","country","banner"],k:[1,32],n:["flag-de"],o:2},rice:{a:"Cooked Rice",b:"1F35A",j:["food","china","asian"],k:[6,50],o:2},violin:{a:"Violin",b:"1F3BB",j:["music","instrument","orchestra","symphony"],k:[8,33],o:2},white_haired_woman:{a:"White Haired Woman",b:"1F469-200D-1F9B3",k:[19,26],o:11},bird:{a:"Bird",b:"1F426",j:["animal","nature","fly","tweet","spring"],k:[12,10],o:2},white_frowning_face:{a:"White Frowning Face",b:"2639-FE0F",c:"2639",k:[53,16],o:2},bullettrain_front:{a:"High-Speed Train with Bullet Nose",b:"1F685",j:["transportation","vehicle","speed","fast","public","travel"],k:[34,4],o:2},teddy_bear:{a:"Teddy Bear",b:"1F9F8",k:[51,43],o:11},spades:{a:"Black Spade Suit",b:"2660-FE0F",c:"2660",j:["poker","cards","suits","magic"],k:[53,33],o:2},banjo:{a:"Banjo",b:"1FA95",k:[52,9],o:12},train2:{a:"Train",b:"1F686",j:["transportation","vehicle"],k:[34,5],o:2},scorpius:{a:"Scorpius",b:"264F",j:["sign","zodiac","purple-square","astrology","scorpio"],k:[53,27],o:2},curry:{a:"Curry and Rice",b:"1F35B",j:["food","spicy","hot","indian"],k:[6,51],o:2},open_mouth:{a:"Face with Open Mouth",b:"1F62E",j:["face","surprise","impressed","wow","whoa",":O"],k:[31,24],l:[":o",":-o",":O",":-O"],o:2},"flag-dg":{a:"Diego Garcia Flag",b:"1F1E9-1F1EC",k:[1,33],o:2},penguin:{a:"Penguin",b:"1F427",j:["animal","nature"],k:[12,11],o:2},hearts:{a:"Black Heart Suit",b:"2665-FE0F",c:"2665",j:["poker","cards","magic","suits"],k:[53,35],o:2},ramen:{a:"Steaming Bowl",b:"1F35C",j:["food","japanese","noodle","chopsticks"],k:[6,52],o:2},sagittarius:{a:"Sagittarius",b:"2650",j:["sign","zodiac","purple-square","astrology"],k:[53,28],o:2},bald_woman:{a:"Bald Woman",b:"1F469-200D-1F9B2",k:[19,20],o:11},dove_of_peace:{a:"Dove of Peace",b:"1F54A-FE0F",c:"1F54A",k:[28,34],o:2},hushed:{a:"Hushed Face",b:"1F62F",j:["face","woo","shh"],k:[31,25],o:2},metro:{a:"Metro",b:"1F687",j:["transportation","blue-square","mrt","underground","tube"],k:[34,6],o:2},"flag-dj":{a:"Djibouti Flag",b:"1F1E9-1F1EF",k:[1,34],o:2},drum_with_drumsticks:{a:"Drum with Drumsticks",b:"1F941",k:[41,17],o:4},spaghetti:{a:"Spaghetti",b:"1F35D",j:["food","italian","noodle"],k:[6,53],o:2},eagle:{a:"Eagle",b:"1F985",j:["animal","nature","bird"],k:[42,23],o:4},astonished:{a:"Astonished Face",b:"1F632",j:["face","xox","surprised","poisoned"],k:[31,28],o:2},capricorn:{a:"Capricorn",b:"2651",j:["sign","zodiac","purple-square","astrology"],k:[53,29],o:2},light_rail:{a:"Light Rail",b:"1F688",j:["transportation","vehicle"],k:[34,7],o:2},"flag-dk":{a:"Denmark Flag",b:"1F1E9-1F1F0",k:[1,35],o:2},iphone:{a:"Mobile Phone",b:"1F4F1",j:["technology","apple","gadgets","dial"],k:[27,14],o:2},diamonds:{a:"Black Diamond Suit",b:"2666-FE0F",c:"2666",j:["poker","cards","magic","suits"],k:[53,36],o:2},clubs:{a:"Black Club Suit",b:"2663-FE0F",c:"2663",j:["poker","cards","magic","suits"],k:[53,34],o:2},aquarius:{a:"Aquarius",b:"2652",j:["sign","purple-square","zodiac","astrology"],k:[53,30],o:2},sweet_potato:{a:"Roasted Sweet Potato",b:"1F360",j:["food","nature"],k:[6,56],o:2},"flag-dm":{a:"Dominica Flag",b:"1F1E9-1F1F2",k:[1,36],o:2},duck:{a:"Duck",b:"1F986",j:["animal","nature","bird","mallard"],k:[42,24],o:4},calling:{a:"Mobile Phone with Rightwards Arrow at Left",b:"1F4F2",j:["iphone","incoming"],k:[27,15],o:2},station:{a:"Station",b:"1F689",j:["transportation","vehicle","public"],k:[34,8],o:2},"blond-haired-woman":{a:"Blond Haired Woman",b:"1F471-200D-2640-FE0F",c:"1F471-200D-2640",k:[22,7],o:4},flushed:{a:"Flushed Face",b:"1F633",j:["face","blush","shy","flattered"],k:[31,29],o:2},pisces:{a:"Pisces",b:"2653",j:["purple-square","sign","zodiac","astrology"],k:[53,31],o:2},chess_pawn:{a:"Chess Pawn",b:"265F-FE0F",c:"265F",k:[53,32],o:11},"blond-haired-man":{obsoletes:"1F471",a:"Blond Haired Man",b:"1F471-200D-2642-FE0F",c:"1F471-200D-2642",k:[22,13],o:4},phone:{a:"Black Telephone",b:"260E-FE0F",c:"260E",j:["technology","communication","dial","telephone"],k:[52,54],n:["telephone"],o:2},oden:{a:"Oden",b:"1F362",j:["food","japanese"],k:[7,1],o:2},"flag-do":{a:"Dominican Republic Flag",b:"1F1E9-1F1F4",k:[1,37],o:2},tram:{a:"Tram",b:"1F68A",j:["transportation","vehicle"],k:[34,9],o:2},swan:{a:"Swan",b:"1F9A2",k:[42,52],o:11},pleading_face:{a:"Face with Pleading Eyes",b:"1F97A",k:[42,12],o:11},"flag-dz":{a:"Algeria Flag",b:"1F1E9-1F1FF",k:[1,38],o:2},monorail:{a:"Monorail",b:"1F69D",j:["transportation","vehicle"],k:[34,28],o:2},owl:{a:"Owl",b:"1F989",j:["animal","nature","bird","hoot"],k:[42,27],o:4},sushi:{a:"Sushi",b:"1F363",j:["food","fish","japanese","rice"],k:[7,2],o:2},telephone_receiver:{a:"Telephone Receiver",b:"1F4DE",j:["technology","communication","dial"],k:[26,52],o:2},black_joker:{a:"Playing Card Black Joker",b:"1F0CF",j:["poker","cards","game","play","magic"],k:[0,15],o:2},ophiuchus:{a:"Ophiuchus",b:"26CE",j:["sign","purple-square","constellation","astrology"],k:[54,4],o:2},frowning:{a:"Frowning Face with Open Mouth",b:"1F626",j:["face","aw","what"],k:[31,16],o:2},older_adult:{a:"Older Adult",b:"1F9D3",k:[48,22],o:5},"flag-ea":{a:"Ceuta & Melilla Flag",b:"1F1EA-1F1E6",k:[1,39],o:2},flamingo:{a:"Flamingo",b:"1F9A9",k:[43,0],o:12},pager:{a:"Pager",b:"1F4DF",j:["bbcall","oldschool","90s"],k:[26,53],o:2},mountain_railway:{a:"Mountain Railway",b:"1F69E",j:["transportation","vehicle"],k:[34,29],o:2},mahjong:{a:"Mahjong Tile Red Dragon",b:"1F004",j:["game","play","chinese","kanji"],k:[0,14],o:2},older_man:{a:"Older Man",b:"1F474",j:["human","male","men","old","elder","senior"],k:[22,49],o:2},twisted_rightwards_arrows:{a:"Twisted Rightwards Arrows",b:"1F500",j:["blue-square","shuffle","music","random"],k:[27,28],o:2},fried_shrimp:{a:"Fried Shrimp",b:"1F364",j:["food","animal","appetizer","summer"],k:[7,3],o:2},anguished:{a:"Anguished Face",b:"1F627",j:["face","stunned","nervous"],k:[31,17],l:["D:"],o:2},repeat:{a:"Clockwise Rightwards and Leftwards Open Circle Arrows",b:"1F501",j:["loop","record"],k:[27,29],o:2},fish_cake:{a:"Fish Cake with Swirl Design",b:"1F365",j:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],k:[7,4],o:2},fax:{a:"Fax Machine",b:"1F4E0",j:["communication","technology"],k:[26,54],o:2},older_woman:{a:"Older Woman",b:"1F475",j:["human","female","women","lady","old","elder","senior"],k:[22,55],o:2},"flag-ec":{a:"Ecuador Flag",b:"1F1EA-1F1E8",k:[1,40],o:2},peacock:{a:"Peacock",b:"1F99A",k:[42,44],o:11},fearful:{a:"Fearful Face",b:"1F628",j:["face","scared","terrified","nervous","oops","huh"],k:[31,18],o:2},train:{a:"Tram Car",b:"1F68B",j:["transportation","vehicle","carriage","public","travel"],k:[34,10],o:2},flower_playing_cards:{a:"Flower Playing Cards",b:"1F3B4",j:["game","sunset","red"],k:[8,26],o:2},repeat_one:{a:"Clockwise Rightwards and Leftwards Open Circle Arrows with Circled One Overlay",b:"1F502",j:["blue-square","loop"],k:[27,30],o:2},moon_cake:{a:"Moon Cake",b:"1F96E",k:[42,4],o:11},performing_arts:{a:"Performing Arts",b:"1F3AD",j:["acting","theater","drama"],k:[8,19],o:2},cold_sweat:{a:"Face with Open Mouth and Cold Sweat",b:"1F630",j:["face","nervous","sweat"],k:[31,26],o:2},"flag-ee":{a:"Estonia Flag",b:"1F1EA-1F1EA",k:[1,41],o:2},battery:{a:"Battery",b:"1F50B",j:["power","energy","sustain"],k:[27,39],o:2},parrot:{a:"Parrot",b:"1F99C",k:[42,46],o:11},bus:{a:"Bus",b:"1F68C",j:["car","vehicle","transportation"],k:[34,11],o:2},"flag-eg":{a:"Egypt Flag",b:"1F1EA-1F1EC",k:[1,42],o:2},arrow_forward:{a:"Black Right-Pointing Triangle",b:"25B6-FE0F",c:"25B6",j:["blue-square","right","direction","play"],k:[52,43],o:2},"man-frowning":{a:"Man Frowning",b:"1F64D-200D-2642-FE0F",c:"1F64D-200D-2642",k:[33,20],o:4},disappointed_relieved:{a:"Disappointed but Relieved Face",b:"1F625",j:["face","phew","sweat","nervous"],k:[31,15],o:2},electric_plug:{a:"Electric Plug",b:"1F50C",j:["charger","power"],k:[27,40],o:2},frame_with_picture:{a:"Frame with Picture",b:"1F5BC-FE0F",c:"1F5BC",k:[30,14],o:2},oncoming_bus:{a:"Oncoming Bus",b:"1F68D",j:["vehicle","transportation"],k:[34,12],o:2},dango:{a:"Dango",b:"1F361",j:["food","dessert","sweet","japanese","barbecue","meat"],k:[7,0],o:2},frog:{a:"Frog Face",b:"1F438",j:["animal","nature","croak","toad"],k:[12,28],o:2},computer:{a:"Personal Computer",b:"1F4BB",j:["technology","laptop","screen","display","monitor"],k:[26,17],o:2},art:{a:"Artist Palette",b:"1F3A8",j:["design","paint","draw","colors"],k:[8,14],o:2},"flag-eh":{a:"Western Sahara Flag",b:"1F1EA-1F1ED",k:[1,43],o:2},fast_forward:{a:"Black Right-Pointing Double Triangle",b:"23E9",j:["blue-square","play","speed","continue"],k:[52,26],o:2},cry:{a:"Crying Face",b:"1F622",j:["face","tears","sad","depressed","upset",":'("],k:[31,12],l:[":'("],m:":'(",o:2},"woman-frowning":{obsoletes:"1F64D",a:"Woman Frowning",b:"1F64D-200D-2640-FE0F",c:"1F64D-200D-2640",k:[33,14],o:4},trolleybus:{a:"Trolleybus",b:"1F68E",j:["bart","transportation","vehicle"],k:[34,13],o:2},crocodile:{a:"Crocodile",b:"1F40A",j:["animal","nature","reptile","lizard","alligator"],k:[11,38],o:2},dumpling:{a:"Dumpling",b:"1F95F",k:[41,46],o:5},black_right_pointing_double_triangle_with_vertical_bar:{a:"Black Right Pointing Double Triangle with Vertical Bar",b:"23ED-FE0F",c:"23ED",k:[52,30],o:2},desktop_computer:{a:"Desktop Computer",b:"1F5A5-FE0F",c:"1F5A5",j:["technology","computing","screen"],k:[30,10],o:2},turtle:{a:"Turtle",b:"1F422",j:["animal","slow","nature","tortoise"],k:[12,6],o:2},sob:{a:"Loudly Crying Face",b:"1F62D",j:["face","cry","tears","sad","upset","depressed"],k:[31,23],m:":'(",o:2},"flag-er":{a:"Eritrea Flag",b:"1F1EA-1F1F7",k:[1,44],o:2},thread:{a:"Spool of Thread",b:"1F9F5",k:[51,40],o:11},minibus:{a:"Minibus",b:"1F690",j:["vehicle","car","transportation"],k:[34,15],o:2},fortune_cookie:{a:"Fortune Cookie",b:"1F960",k:[41,47],o:5},yarn:{a:"Ball of Yarn",b:"1F9F6",k:[51,41],o:11},takeout_box:{a:"Takeout Box",b:"1F961",k:[41,48],o:5},"man-pouting":{a:"Man Pouting",b:"1F64E-200D-2642-FE0F",c:"1F64E-200D-2642",k:[33,38],o:4},printer:{a:"Printer",b:"1F5A8-FE0F",c:"1F5A8",j:["paper","ink"],k:[30,11],o:2},scream:{a:"Face Screaming in Fear",b:"1F631",j:["face","munch","scared","omg"],k:[31,27],o:2},es:{a:"Spain Flag",b:"1F1EA-1F1F8",j:["spain","flag","nation","country","banner"],k:[1,45],n:["flag-es"],o:2},ambulance:{a:"Ambulance",b:"1F691",j:["health","911","hospital"],k:[34,16],o:2},black_right_pointing_triangle_with_double_vertical_bar:{a:"Black Right Pointing Triangle with Double Vertical Bar",b:"23EF-FE0F",c:"23EF",k:[52,32],o:2},lizard:{a:"Lizard",b:"1F98E",j:["animal","nature","reptile"],k:[42,32],o:4},"flag-et":{a:"Ethiopia Flag",b:"1F1EA-1F1F9",k:[1,46],o:2},keyboard:{a:"Keyboard",b:"2328-FE0F",c:"2328",j:["technology","computer","type","input","text"],k:[52,24],o:2},crab:{a:"Crab",b:"1F980",j:["animal","crustacean"],k:[42,18],o:2},confounded:{a:"Confounded Face",b:"1F616",j:["face","confused","sick","unwell","oops",":S"],k:[31,0],o:2},snake:{a:"Snake",b:"1F40D",j:["animal","evil","nature","hiss","python"],k:[11,41],o:2},"woman-pouting":{obsoletes:"1F64E",a:"Woman Pouting",b:"1F64E-200D-2640-FE0F",c:"1F64E-200D-2640",k:[33,32],o:4},arrow_backward:{a:"Black Left-Pointing Triangle",b:"25C0-FE0F",c:"25C0",j:["blue-square","left","direction"],k:[52,44],o:2},fire_engine:{a:"Fire Engine",b:"1F692",j:["transportation","cars","vehicle"],k:[34,17],o:2},rewind:{a:"Black Left-Pointing Double Triangle",b:"23EA",j:["play","blue-square"],k:[52,27],o:2},three_button_mouse:{a:"Three Button Mouse",b:"1F5B1-FE0F",c:"1F5B1",k:[30,12],o:2},police_car:{a:"Police Car",b:"1F693",j:["vehicle","cars","transportation","law","legal","enforcement"],k:[34,18],o:2},dragon_face:{a:"Dragon Face",b:"1F432",j:["animal","myth","nature","chinese","green"],k:[12,22],o:2},persevere:{a:"Persevering Face",b:"1F623",j:["face","sick","no","upset","oops"],k:[31,13],o:2},lobster:{a:"Lobster",b:"1F99E",k:[42,48],o:11},"flag-eu":{a:"European Union Flag",b:"1F1EA-1F1FA",k:[1,47],o:2},disappointed:{a:"Disappointed Face",b:"1F61E",j:["face","sad","upset","depressed",":("],k:[31,8],l:["):",":(",":-("],m:":(",o:2},shrimp:{a:"Shrimp",b:"1F990",j:["animal","ocean","nature","seafood"],k:[42,34],o:4},dragon:{a:"Dragon",b:"1F409",j:["animal","myth","nature","chinese","green"],k:[11,37],o:2},"man-gesturing-no":{a:"Man Gesturing No",b:"1F645-200D-2642-FE0F",c:"1F645-200D-2642",k:[31,53],o:4},"flag-fi":{a:"Finland Flag",b:"1F1EB-1F1EE",k:[1,48],o:2},trackball:{a:"Trackball",b:"1F5B2-FE0F",c:"1F5B2",j:["technology","trackpad"],k:[30,13],o:2},black_left_pointing_double_triangle_with_vertical_bar:{a:"Black Left Pointing Double Triangle with Vertical Bar",b:"23EE-FE0F",c:"23EE",k:[52,31],o:2},oncoming_police_car:{a:"Oncoming Police Car",b:"1F694",j:["vehicle","law","legal","enforcement","911"],k:[34,19],o:2},minidisc:{a:"Minidisc",b:"1F4BD",j:["technology","record","data","disk","90s"],k:[26,19],o:2},sweat:{a:"Face with Cold Sweat",b:"1F613",j:["face","hot","sad","tired","exercise"],k:[30,54],o:2},squid:{a:"Squid",b:"1F991",j:["animal","nature","ocean","sea"],k:[42,35],o:4},sauropod:{a:"Sauropod",b:"1F995",k:[42,39],o:5},arrow_up_small:{a:"Up-Pointing Small Red Triangle",b:"1F53C",j:["blue-square","triangle","direction","point","forward","top"],k:[28,31],o:2},"flag-fj":{a:"Fiji Flag",b:"1F1EB-1F1EF",k:[1,49],o:2},"woman-gesturing-no":{obsoletes:"1F645",a:"Woman Gesturing No",b:"1F645-200D-2640-FE0F",c:"1F645-200D-2640",k:[31,47],o:4},taxi:{a:"Taxi",b:"1F695",j:["uber","vehicle","cars","transportation"],k:[34,20],o:2},"flag-fk":{a:"Falkland Islands Flag",b:"1F1EB-1F1F0",k:[1,50],o:2},floppy_disk:{a:"Floppy Disk",b:"1F4BE",j:["oldschool","technology","save","90s","80s"],k:[26,20],o:2},"t-rex":{a:"T-Rex",b:"1F996",k:[42,40],o:5},oyster:{a:"Oyster",b:"1F9AA",k:[43,1],o:12},arrow_double_up:{a:"Black Up-Pointing Double Triangle",b:"23EB",j:["blue-square","direction","top"],k:[52,28],o:2},oncoming_taxi:{a:"Oncoming Taxi",b:"1F696",j:["vehicle","cars","uber"],k:[34,21],o:2},weary:{a:"Weary Face",b:"1F629",j:["face","tired","sleepy","sad","frustrated","upset"],k:[31,19],o:2},"man-gesturing-ok":{a:"Man Gesturing Ok",b:"1F646-200D-2642-FE0F",c:"1F646-200D-2642",k:[32,14],o:4},arrow_down_small:{a:"Down-Pointing Small Red Triangle",b:"1F53D",j:["blue-square","direction","bottom"],k:[28,32],o:2},tired_face:{a:"Tired Face",b:"1F62B",j:["sick","whine","upset","frustrated"],k:[31,21],o:2},car:{a:"Automobile",b:"1F697",k:[34,22],n:["red_car"],o:2},icecream:{a:"Soft Ice Cream",b:"1F366",j:["food","hot","dessert","summer"],k:[7,5],o:2},cd:{a:"Optical Disc",b:"1F4BF",j:["technology","dvd","disk","disc","90s"],k:[26,21],o:2},whale:{a:"Spouting Whale",b:"1F433",j:["animal","nature","sea","ocean"],k:[12,23],o:2},"flag-fm":{a:"Micronesia Flag",b:"1F1EB-1F1F2",k:[1,51],o:2},oncoming_automobile:{a:"Oncoming Automobile",b:"1F698",j:["car","vehicle","transportation"],k:[34,23],o:2},arrow_double_down:{a:"Black Down-Pointing Double Triangle",b:"23EC",j:["blue-square","direction","bottom"],k:[52,29],o:2},"woman-gesturing-ok":{obsoletes:"1F646",a:"Woman Gesturing Ok",b:"1F646-200D-2640-FE0F",c:"1F646-200D-2640",k:[32,8],o:4},yawning_face:{a:"Yawning Face",b:"1F971",k:[42,7],o:12},dvd:{a:"Dvd",b:"1F4C0",j:["cd","disk","disc"],k:[26,22],o:2},whale2:{a:"Whale",b:"1F40B",j:["animal","nature","sea","ocean"],k:[11,39],o:2},"flag-fo":{a:"Faroe Islands Flag",b:"1F1EB-1F1F4",k:[1,52],o:2},shaved_ice:{a:"Shaved Ice",b:"1F367",j:["hot","dessert","summer"],k:[7,6],o:2},double_vertical_bar:{a:"Double Vertical Bar",b:"23F8-FE0F",c:"23F8",k:[52,37],o:2},dolphin:{a:"Dolphin",b:"1F42C",j:["animal","nature","fish","sea","ocean","flipper","fins","beach"],k:[12,16],n:["flipper"],o:2},blue_car:{a:"Recreational Vehicle",b:"1F699",j:["transportation","vehicle"],k:[34,24],o:2},ice_cream:{a:"Ice Cream",b:"1F368",j:["food","hot","dessert"],k:[7,7],o:2},fr:{a:"France Flag",b:"1F1EB-1F1F7",j:["banner","flag","nation","france","french","country"],k:[1,53],n:["flag-fr"],o:2},triumph:{a:"Face with Look of Triumph",b:"1F624",j:["face","gas","phew","proud","pride"],k:[31,14],o:2},abacus:{a:"Abacus",b:"1F9EE",k:[51,33],o:11},"man-tipping-hand":{a:"Man Tipping Hand",b:"1F481-200D-2642-FE0F",c:"1F481-200D-2642",k:[23,53],o:4},doughnut:{a:"Doughnut",b:"1F369",j:["food","dessert","snack","sweet","donut"],k:[7,8],o:2},fish:{a:"Fish",b:"1F41F",j:["animal","food","nature"],k:[12,3],o:2},truck:{a:"Delivery Truck",b:"1F69A",j:["cars","transportation"],k:[34,25],o:2},movie_camera:{a:"Movie Camera",b:"1F3A5",j:["film","record"],k:[8,11],o:2},"flag-ga":{a:"Gabon Flag",b:"1F1EC-1F1E6",k:[1,54],o:2},rage:{a:"Pouting Face",b:"1F621",j:["angry","mad","hate","despise"],k:[31,11],o:2},black_square_for_stop:{a:"Black Square for Stop",b:"23F9-FE0F",c:"23F9",k:[52,38],o:2},articulated_lorry:{a:"Articulated Lorry",b:"1F69B",j:["vehicle","cars","transportation","express"],k:[34,26],o:2},angry:{a:"Angry Face",b:"1F620",j:["mad","face","annoyed","frustrated"],k:[31,10],l:[">:(",">:-("],o:2},cookie:{a:"Cookie",b:"1F36A",j:["food","snack","oreo","chocolate","sweet","dessert"],k:[7,9],o:2},gb:{a:"United Kingdom Flag",b:"1F1EC-1F1E7",k:[1,55],n:["uk","flag-gb"],o:2},tropical_fish:{a:"Tropical Fish",b:"1F420",j:["animal","swim","ocean","beach","nemo"],k:[12,4],o:2},"woman-tipping-hand":{obsoletes:"1F481",a:"Woman Tipping Hand",b:"1F481-200D-2640-FE0F",c:"1F481-200D-2640",k:[23,47],o:4},black_circle_for_record:{a:"Black Circle for Record",b:"23FA-FE0F",c:"23FA",k:[52,39],o:2},film_frames:{a:"Film Frames",b:"1F39E-FE0F",c:"1F39E",k:[8,4],o:2},film_projector:{a:"Film Projector",b:"1F4FD-FE0F",c:"1F4FD",j:["video","tape","record","movie"],k:[27,26],o:2},"flag-gd":{a:"Grenada Flag",b:"1F1EC-1F1E9",k:[1,56],o:2},blowfish:{a:"Blowfish",b:"1F421",j:["animal","nature","food","sea","ocean"],k:[12,5],o:2},face_with_symbols_on_mouth:{a:"Serious Face with Symbols Covering Mouth",b:"1F92C",k:[38,46],n:["serious_face_with_symbols_covering_mouth"],o:5},birthday:{a:"Birthday Cake",b:"1F382",j:["food","dessert","cake"],k:[7,33],o:2},eject:{a:"Eject",b:"23CF-FE0F",c:"23CF",k:[52,25],o:2},tractor:{a:"Tractor",b:"1F69C",j:["vehicle","car","farming","agriculture"],k:[34,27],o:2},"flag-ge":{a:"Georgia Flag",b:"1F1EC-1F1EA",k:[2,0],o:2},smiling_imp:{a:"Smiling Face with Horns",b:"1F608",j:["devil","horns"],k:[30,43],o:2},racing_car:{a:"Racing Car",b:"1F3CE-FE0F",c:"1F3CE",j:["sports","race","fast","formula","f1"],k:[10,33],o:2},cinema:{a:"Cinema",b:"1F3A6",j:["blue-square","record","film","movie","curtain","stage","theater"],k:[8,12],o:2},clapper:{a:"Clapper Board",b:"1F3AC",j:["movie","film","record"],k:[8,18],o:2},shark:{a:"Shark",b:"1F988",j:["animal","nature","fish","sea","ocean","jaws","fins","beach"],k:[42,26],o:4},cake:{a:"Shortcake",b:"1F370",j:["food","dessert"],k:[7,15],o:2},"man-raising-hand":{a:"Man Raising Hand",b:"1F64B-200D-2642-FE0F",c:"1F64B-200D-2642",k:[32,53],o:4},octopus:{a:"Octopus",b:"1F419",j:["animal","creature","ocean","sea","nature","beach"],k:[11,54],o:2},"woman-raising-hand":{obsoletes:"1F64B",a:"Woman Raising Hand",b:"1F64B-200D-2640-FE0F",c:"1F64B-200D-2640",k:[32,47],o:4},"flag-gf":{a:"French Guiana Flag",b:"1F1EC-1F1EB",k:[2,1],o:2},tv:{a:"Television",b:"1F4FA",j:["technology","program","oldschool","show","television"],k:[27,23],o:2},imp:{a:"Imp",b:"1F47F",j:["devil","angry","horns"],k:[23,45],o:2},cupcake:{a:"Cupcake",b:"1F9C1",k:[44,9],o:11},racing_motorcycle:{a:"Racing Motorcycle",b:"1F3CD-FE0F",c:"1F3CD",k:[10,32],o:2},low_brightness:{a:"Low Brightness Symbol",b:"1F505",j:["sun","afternoon","warm","summer"],k:[27,33],o:2},shell:{a:"Spiral Shell",b:"1F41A",j:["nature","sea","beach"],k:[11,55],o:2},"flag-gg":{a:"Guernsey Flag",b:"1F1EC-1F1EC",k:[2,2],o:2},high_brightness:{a:"High Brightness Symbol",b:"1F506",j:["sun","light"],k:[27,34],o:2},deaf_person:{a:"Deaf Person",b:"1F9CF",k:[45,10],o:12},skull:{a:"Skull",b:"1F480",j:["dead","skeleton","creepy","death"],k:[23,46],o:2},motor_scooter:{a:"Motor Scooter",b:"1F6F5",j:["vehicle","vespa","sasha"],k:[36,54],o:4},camera:{a:"Camera",b:"1F4F7",j:["gadgets","photography"],k:[27,20],o:2},pie:{a:"Pie",b:"1F967",k:[41,54],o:5},"flag-gh":{a:"Ghana Flag",b:"1F1EC-1F1ED",k:[2,3],o:2},deaf_man:{a:"Deaf Man",b:"1F9CF-200D-2642-FE0F",c:"1F9CF-200D-2642",k:[45,4],o:12},skull_and_crossbones:{a:"Skull and Crossbones",b:"2620-FE0F",c:"2620",j:["poison","danger","deadly","scary","death","pirate","evil"],k:[53,8],o:2},camera_with_flash:{a:"Camera with Flash",b:"1F4F8",k:[27,21],o:2},signal_strength:{a:"Antenna with Bars",b:"1F4F6",j:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],k:[27,19],o:2},chocolate_bar:{a:"Chocolate Bar",b:"1F36B",j:["food","snack","dessert","sweet"],k:[7,10],o:2},manual_wheelchair:{a:"Manual Wheelchair",b:"1F9BD",k:[44,5],o:12},snail:{a:"Snail",b:"1F40C",j:["slow","animal","shell"],k:[11,40],o:2},motorized_wheelchair:{a:"Motorized Wheelchair",b:"1F9BC",k:[44,4],o:12},"flag-gi":{a:"Gibraltar Flag",b:"1F1EC-1F1EE",k:[2,4],o:2},hankey:{a:"Pile of Poo",b:"1F4A9",k:[25,51],n:["poop","shit"],o:2},vibration_mode:{a:"Vibration Mode",b:"1F4F3",j:["orange-square","phone"],k:[27,16],o:2},deaf_woman:{a:"Deaf Woman",b:"1F9CF-200D-2640-FE0F",c:"1F9CF-200D-2640",k:[44,55],o:12},butterfly:{a:"Butterfly",b:"1F98B",j:["animal","insect","nature","caterpillar"],k:[42,29],o:4},video_camera:{a:"Video Camera",b:"1F4F9",j:["film","record"],k:[27,22],o:2},candy:{a:"Candy",b:"1F36C",j:["snack","dessert","sweet","lolly"],k:[7,11],o:2},auto_rickshaw:{a:"Auto Rickshaw",b:"1F6FA",k:[37,2],o:12},mobile_phone_off:{a:"Mobile Phone off",b:"1F4F4",j:["mute","orange-square","silence","quiet"],k:[27,17],o:2},clown_face:{a:"Clown Face",b:"1F921",j:["face"],k:[38,18],o:4},lollipop:{a:"Lollipop",b:"1F36D",j:["food","snack","candy","sweet"],k:[7,12],o:2},"flag-gl":{a:"Greenland Flag",b:"1F1EC-1F1F1",k:[2,5],o:2},vhs:{a:"Videocassette",b:"1F4FC",j:["record","video","oldschool","90s","80s"],k:[27,25],o:2},bug:{a:"Bug",b:"1F41B",j:["animal","insect","nature","worm"],k:[11,56],o:2},bike:{a:"Bicycle",b:"1F6B2",j:["sports","bicycle","exercise","hipster"],k:[35,9],o:2},"man-bowing":{obsoletes:"1F647",a:"Man Bowing",b:"1F647-200D-2642-FE0F",c:"1F647-200D-2642",k:[32,32],o:4},female_sign:{a:"Female Sign",b:"2640-FE0F",c:"2640",k:[53,18],o:4},japanese_ogre:{a:"Japanese Ogre",b:"1F479",j:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],k:[23,34],o:2},custard:{a:"Custard",b:"1F36E",j:["dessert","food"],k:[7,13],o:2},ant:{a:"Ant",b:"1F41C",j:["animal","insect","nature","bug"],k:[12,0],o:2},mag:{a:"Left-Pointing Magnifying Glass",b:"1F50D",j:["search","zoom","find","detective"],k:[27,41],o:2},"flag-gm":{a:"Gambia Flag",b:"1F1EC-1F1F2",k:[2,6],o:2},honey_pot:{a:"Honey Pot",b:"1F36F",j:["bees","sweet","kitchen"],k:[7,14],o:2},"woman-bowing":{a:"Woman Bowing",b:"1F647-200D-2640-FE0F",c:"1F647-200D-2640",k:[32,26],o:4},male_sign:{a:"Male Sign",b:"2642-FE0F",c:"2642",k:[53,19],o:4},mag_right:{a:"Right-Pointing Magnifying Glass",b:"1F50E",j:["search","zoom","find","detective"],k:[27,42],o:2},japanese_goblin:{a:"Japanese Goblin",b:"1F47A",j:["red","evil","mask","monster","scary","creepy","japanese","goblin"],k:[23,35],o:2},scooter:{a:"Scooter",b:"1F6F4",k:[36,53],o:4},bee:{a:"Honeybee",b:"1F41D",k:[12,1],n:["honeybee"],o:2},"flag-gn":{a:"Guinea Flag",b:"1F1EC-1F1F3",k:[2,7],o:2},candle:{a:"Candle",b:"1F56F-FE0F",c:"1F56F",j:["fire","wax"],k:[29,6],o:2},skateboard:{a:"Skateboard",b:"1F6F9",k:[37,1],o:11},medical_symbol:{a:"Medical Symbol",b:"2695-FE0F",c:"2695",k:[53,44],n:["staff_of_aesculapius"],o:4},ghost:{a:"Ghost",b:"1F47B",j:["halloween","spooky","scary"],k:[23,36],o:2},beetle:{a:"Lady Beetle",b:"1F41E",j:["animal","insect","nature","ladybug"],k:[12,2],o:2},"flag-gp":{a:"Guadeloupe Flag",b:"1F1EC-1F1F5",k:[2,8],o:2},baby_bottle:{a:"Baby Bottle",b:"1F37C",j:["food","container","milk"],k:[7,27],o:2},infinity:{a:"Infinity",b:"267E-FE0F",c:"267E",k:[53,39],o:11},glass_of_milk:{a:"Glass of Milk",b:"1F95B",k:[41,42],o:4},"man-facepalming":{a:"Man Facepalming",b:"1F926-200D-2642-FE0F",c:"1F926-200D-2642",k:[38,29],o:4},cricket:{a:"Cricket",b:"1F997",j:["sports"],k:[42,41],o:5},busstop:{a:"Bus Stop",b:"1F68F",j:["transportation","wait"],k:[34,14],o:2},"flag-gq":{a:"Equatorial Guinea Flag",b:"1F1EC-1F1F6",k:[2,9],o:2},alien:{a:"Extraterrestrial Alien",b:"1F47D",j:["UFO","paul","weird","outer_space"],k:[23,43],o:2},bulb:{a:"Electric Light Bulb",b:"1F4A1",j:["light","electricity","idea"],k:[25,43],o:2},"woman-facepalming":{a:"Woman Facepalming",b:"1F926-200D-2640-FE0F",c:"1F926-200D-2640",k:[38,23],o:4},spider:{a:"Spider",b:"1F577-FE0F",c:"1F577",j:["animal","arachnid"],k:[29,34],o:2},space_invader:{a:"Alien Monster",b:"1F47E",j:["game","arcade","play"],k:[23,44],o:2},motorway:{a:"Motorway",b:"1F6E3-FE0F",c:"1F6E3",j:["road","cupertino","interstate","highway"],k:[36,45],o:2},"flag-gr":{a:"Greece Flag",b:"1F1EC-1F1F7",k:[2,10],o:2},recycle:{a:"Black Universal Recycling Symbol",b:"267B-FE0F",c:"267B",j:["arrow","environment","garbage","trash"],k:[53,38],o:2},coffee:{a:"Hot Beverage",b:"2615",j:["beverage","caffeine","latte","espresso"],k:[53,0],o:2},flashlight:{a:"Electric Torch",b:"1F526",j:["dark","camping","sight","night"],k:[28,9],o:2},spider_web:{a:"Spider Web",b:"1F578-FE0F",c:"1F578",j:["animal","insect","arachnid","silk"],k:[29,35],o:2},izakaya_lantern:{a:"Izakaya Lantern",b:"1F3EE",j:["light","paper","halloween","spooky"],k:[11,8],n:["lantern"],o:2},"flag-gs":{a:"South Georgia & South Sandwich Islands Flag",b:"1F1EC-1F1F8",k:[2,11],o:2},fleur_de_lis:{a:"Fleur De Lis",b:"269C-FE0F",c:"269C",j:["decorative","scout"],k:[53,49],o:2},robot_face:{a:"Robot Face",b:"1F916",k:[37,29],o:2},railway_track:{a:"Railway Track",b:"1F6E4-FE0F",c:"1F6E4",j:["train","transportation"],k:[36,46],o:2},tea:{a:"Teacup Without Handle",b:"1F375",j:["drink","bowl","breakfast","green","british"],k:[7,20],o:2},"flag-gt":{a:"Guatemala Flag",b:"1F1EC-1F1F9",k:[2,12],o:2},oil_drum:{a:"Oil Drum",b:"1F6E2-FE0F",c:"1F6E2",j:["barrell"],k:[36,44],o:2},diya_lamp:{a:"Diya Lamp",b:"1FA94",k:[52,8],o:12},sake:{a:"Sake Bottle and Cup",b:"1F376",j:["wine","drink","drunk","beverage","japanese","alcohol","booze"],k:[7,21],o:2},trident:{a:"Trident Emblem",b:"1F531",j:["weapon","spear"],k:[28,20],o:2},"man-shrugging":{a:"Man Shrugging",b:"1F937-200D-2642-FE0F",c:"1F937-200D-2642",k:[39,41],o:4},smiley_cat:{a:"Smiling Cat Face with Open Mouth",b:"1F63A",j:["animal","cats","happy","smile"],k:[31,36],o:2},scorpion:{a:"Scorpion",b:"1F982",j:["animal","arachnid"],k:[42,20],o:2},"woman-shrugging":{a:"Woman Shrugging",b:"1F937-200D-2640-FE0F",c:"1F937-200D-2640",k:[39,35],o:4},notebook_with_decorative_cover:{a:"Notebook with Decorative Cover",b:"1F4D4",j:["classroom","notes","record","paper","study"],k:[26,42],o:2},fuelpump:{a:"Fuel Pump",b:"26FD",j:["gas station","petroleum"],k:[54,38],o:2},name_badge:{a:"Name Badge",b:"1F4DB",j:["fire","forbid"],k:[26,49],o:2},mosquito:{a:"Mosquito",b:"1F99F",k:[42,49],o:11},"flag-gu":{a:"Guam Flag",b:"1F1EC-1F1FA",k:[2,13],o:2},smile_cat:{a:"Grinning Cat Face with Smiling Eyes",b:"1F638",j:["animal","cats","smile"],k:[31,34],o:2},champagne:{a:"Bottle with Popping Cork",b:"1F37E",j:["drink","wine","bottle","celebration"],k:[7,29],o:2},joy_cat:{a:"Cat Face with Tears of Joy",b:"1F639",j:["animal","cats","haha","happy","tears"],k:[31,35],o:2},closed_book:{a:"Closed Book",b:"1F4D5",j:["read","library","knowledge","textbook","learn"],k:[26,43],o:2},rotating_light:{a:"Police Cars Revolving Light",b:"1F6A8",j:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],k:[34,56],o:2},microbe:{a:"Microbe",b:"1F9A0",k:[42,50],o:11},"flag-gw":{a:"Guinea-Bissau Flag",b:"1F1EC-1F1FC",k:[2,14],o:2},wine_glass:{a:"Wine Glass",b:"1F377",j:["drink","beverage","drunk","alcohol","booze"],k:[7,22],o:2},beginner:{a:"Japanese Symbol for Beginner",b:"1F530",j:["badge","shield"],k:[28,19],o:2},bouquet:{a:"Bouquet",b:"1F490",j:["flowers","nature","spring"],k:[25,26],o:2},heart_eyes_cat:{a:"Smiling Cat Face with Heart-Shaped Eyes",b:"1F63B",j:["animal","love","like","affection","cats","valentines","heart"],k:[31,37],o:2},"male-doctor":{a:"Male Doctor",b:"1F468-200D-2695-FE0F",c:"1F468-200D-2695",k:[17,2],o:4},book:{a:"Open Book",b:"1F4D6",k:[26,44],n:["open_book"],o:2},traffic_light:{a:"Horizontal Traffic Light",b:"1F6A5",j:["transportation","signal"],k:[34,53],o:2},cocktail:{a:"Cocktail Glass",b:"1F378",j:["drink","drunk","alcohol","beverage","booze","mojito"],k:[7,23],o:2},o:{a:"Heavy Large Circle",b:"2B55",j:["circle","round"],k:[55,43],o:2},"flag-gy":{a:"Guyana Flag",b:"1F1EC-1F1FE",k:[2,15],o:2},"female-doctor":{a:"Female Doctor",b:"1F469-200D-2695-FE0F",c:"1F469-200D-2695",k:[19,44],o:4},smirk_cat:{a:"Cat Face with Wry Smile",b:"1F63C",j:["animal","cats","smirk"],k:[31,38],o:2},green_book:{a:"Green Book",b:"1F4D7",j:["read","library","knowledge","study"],k:[26,45],o:2},cherry_blossom:{a:"Cherry Blossom",b:"1F338",j:["nature","plant","spring","flower"],k:[6,16],o:2},"flag-hk":{a:"Hong Kong Sar China Flag",b:"1F1ED-1F1F0",k:[2,16],o:2},vertical_traffic_light:{a:"Vertical Traffic Light",b:"1F6A6",j:["transportation","driving"],k:[34,54],o:2},white_check_mark:{a:"White Heavy Check Mark",b:"2705",j:["green-square","ok","agree","vote","election","answer","tick"],k:[54,40],o:2},tropical_drink:{a:"Tropical Drink",b:"1F379",j:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],k:[7,24],o:2},kissing_cat:{a:"Kissing Cat Face with Closed Eyes",b:"1F63D",j:["animal","cats","kiss"],k:[31,39],o:2},"flag-hm":{a:"Heard & Mcdonald Islands Flag",b:"1F1ED-1F1F2",k:[2,17],o:2},octagonal_sign:{a:"Octagonal Sign",b:"1F6D1",k:[36,39],o:4},white_flower:{a:"White Flower",b:"1F4AE",j:["japanese","spring"],k:[26,4],o:2},ballot_box_with_check:{a:"Ballot Box with Check",b:"2611-FE0F",c:"2611",j:["ok","agree","confirm","black-square","vote","election","yes","tick"],k:[52,55],o:2},blue_book:{a:"Blue Book",b:"1F4D8",j:["read","library","knowledge","learn","study"],k:[26,46],o:2},beer:{a:"Beer Mug",b:"1F37A",j:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],k:[7,25],o:2},construction:{a:"Construction Sign",b:"1F6A7",j:["wip","progress","caution","warning"],k:[34,55],o:2},rosette:{a:"Rosette",b:"1F3F5-FE0F",c:"1F3F5",j:["flower","decoration","military"],k:[11,18],o:2},heavy_check_mark:{a:"Heavy Check Mark",b:"2714-FE0F",c:"2714",j:["ok","nike","answer","yes","tick"],k:[55,12],o:2},scream_cat:{a:"Weary Cat Face",b:"1F640",j:["animal","cats","munch","scared","scream"],k:[31,42],o:2},orange_book:{a:"Orange Book",b:"1F4D9",j:["read","library","knowledge","textbook","study"],k:[26,47],o:2},beers:{a:"Clinking Beer Mugs",b:"1F37B",j:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],k:[7,26],o:2},"male-student":{a:"Male Student",b:"1F468-200D-1F393",k:[14,50],o:4},"flag-hn":{a:"Honduras Flag",b:"1F1ED-1F1F3",k:[2,18],o:2},crying_cat_face:{a:"Crying Cat Face",b:"1F63F",j:["animal","tears","weep","sad","cats","upset","cry"],k:[31,41],o:2},anchor:{a:"Anchor",b:"2693",j:["ship","ferry","sea","boat"],k:[53,42],o:2},"flag-hr":{a:"Croatia Flag",b:"1F1ED-1F1F7",k:[2,19],o:2},heavy_multiplication_x:{a:"Heavy Multiplication X",b:"2716-FE0F",c:"2716",j:["math","calculation"],k:[55,13],o:2},"female-student":{a:"Female Student",b:"1F469-200D-1F393",k:[17,40],o:4},rose:{a:"Rose",b:"1F339",j:["flowers","valentines","love","spring"],k:[6,17],o:2},books:{a:"Books",b:"1F4DA",j:["literature","library","study"],k:[26,48],o:2},clinking_glasses:{a:"Clinking Glasses",b:"1F942",j:["beverage","drink","party","alcohol","celebrate","cheers"],k:[41,18],o:4},x:{a:"Cross Mark",b:"274C",j:["no","delete","remove","cancel"],k:[55,21],o:2},pouting_cat:{a:"Pouting Cat Face",b:"1F63E",j:["animal","cats"],k:[31,40],o:2},wilted_flower:{a:"Wilted Flower",b:"1F940",j:["plant","nature","flower"],k:[41,16],o:4},boat:{a:"Sailboat",b:"26F5",k:[54,16],n:["sailboat"],o:2},"flag-ht":{a:"Haiti Flag",b:"1F1ED-1F1F9",k:[2,20],o:2},tumbler_glass:{a:"Tumbler Glass",b:"1F943",j:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],k:[41,19],o:4},notebook:{a:"Notebook",b:"1F4D3",j:["stationery","record","notes","paper","study"],k:[26,41],o:2},"male-teacher":{a:"Male Teacher",b:"1F468-200D-1F3EB",k:[15,11],o:4},ledger:{a:"Ledger",b:"1F4D2",j:["notes","paper"],k:[26,40],o:2},"flag-hu":{a:"Hungary Flag",b:"1F1ED-1F1FA",k:[2,21],o:2},cup_with_straw:{a:"Cup with Straw",b:"1F964",k:[41,51],o:5},hibiscus:{a:"Hibiscus",b:"1F33A",j:["plant","vegetable","flowers","beach"],k:[6,18],o:2},see_no_evil:{a:"See-No-Evil Monkey",b:"1F648",j:["monkey","animal","nature","haha"],k:[32,44],o:2},canoe:{a:"Canoe",b:"1F6F6",j:["boat","paddle","water","ship"],k:[36,55],o:4},negative_squared_cross_mark:{a:"Negative Squared Cross Mark",b:"274E",j:["x","green-square","no","deny"],k:[55,22],o:2},"flag-ic":{a:"Canary Islands Flag",b:"1F1EE-1F1E8",k:[2,22],o:2},beverage_box:{a:"Beverage Box",b:"1F9C3",k:[44,11],o:12},speedboat:{a:"Speedboat",b:"1F6A4",j:["ship","transportation","vehicle","summer"],k:[34,52],o:2},heavy_plus_sign:{a:"Heavy Plus Sign",b:"2795",j:["math","calculation","addition","more","increase"],k:[55,29],o:2},sunflower:{a:"Sunflower",b:"1F33B",j:["nature","plant","fall"],k:[6,19],o:2},page_with_curl:{a:"Page with Curl",b:"1F4C3",j:["documents","office","paper"],k:[26,25],o:2},"female-teacher":{a:"Female Teacher",b:"1F469-200D-1F3EB",k:[18,1],o:4},hear_no_evil:{a:"Hear-No-Evil Monkey",b:"1F649",j:["animal","monkey","nature"],k:[32,45],o:2},mate_drink:{a:"Mate Drink",b:"1F9C9",k:[44,17],o:12},passenger_ship:{a:"Passenger Ship",b:"1F6F3-FE0F",c:"1F6F3",j:["yacht","cruise","ferry"],k:[36,52],o:2},scroll:{a:"Scroll",b:"1F4DC",j:["documents","ancient","history","paper"],k:[26,50],o:2},blossom:{a:"Blossom",b:"1F33C",j:["nature","flowers","yellow"],k:[6,20],o:2},"flag-id":{a:"Indonesia Flag",b:"1F1EE-1F1E9",k:[2,23],o:2},speak_no_evil:{a:"Speak-No-Evil Monkey",b:"1F64A",j:["monkey","animal","nature","omg"],k:[32,46],o:2},heavy_minus_sign:{a:"Heavy Minus Sign",b:"2796",j:["math","calculation","subtract","less"],k:[55,30],o:2},"flag-ie":{a:"Ireland Flag",b:"1F1EE-1F1EA",k:[2,24],o:2},ice_cube:{a:"Ice Cube",b:"1F9CA",k:[44,18],o:12},page_facing_up:{a:"Page Facing Up",b:"1F4C4",j:["documents","office","paper","information"],k:[26,26],o:2},"male-judge":{a:"Male Judge",b:"1F468-200D-2696-FE0F",c:"1F468-200D-2696",k:[17,8],o:4},tulip:{a:"Tulip",b:"1F337",j:["flowers","plant","nature","summer","spring"],k:[6,15],o:2},ferry:{a:"Ferry",b:"26F4-FE0F",c:"26F4",j:["boat","ship","yacht"],k:[54,15],o:2},kiss:{a:"Kiss Mark",b:"1F48B",j:["face","lips","love","like","affection","valentines"],k:[25,21],o:2},heavy_division_sign:{a:"Heavy Division Sign",b:"2797",j:["divide","math","calculation"],k:[55,31],o:2},newspaper:{a:"Newspaper",b:"1F4F0",j:["press","headline"],k:[27,13],o:2},"female-judge":{a:"Female Judge",b:"1F469-200D-2696-FE0F",c:"1F469-200D-2696",k:[19,50],o:4},seedling:{a:"Seedling",b:"1F331",j:["plant","nature","grass","lawn","spring"],k:[6,9],o:2},love_letter:{a:"Love Letter",b:"1F48C",j:["email","like","affection","envelope","valentines"],k:[25,22],o:2},chopsticks:{a:"Chopsticks",b:"1F962",k:[41,49],o:5},motor_boat:{a:"Motor Boat",b:"1F6E5-FE0F",c:"1F6E5",j:["ship"],k:[36,47],o:2},"flag-il":{a:"Israel Flag",b:"1F1EE-1F1F1",k:[2,25],o:2},curly_loop:{a:"Curly Loop",b:"27B0",j:["scribble","draw","shape","squiggle"],k:[55,33],o:2},"flag-im":{a:"Isle of Man Flag",b:"1F1EE-1F1F2",k:[2,26],o:2},evergreen_tree:{a:"Evergreen Tree",b:"1F332",j:["plant","nature"],k:[6,10],o:2},cupid:{a:"Heart with Arrow",b:"1F498",j:["love","like","heart","affection","valentines"],k:[25,34],o:2},loop:{a:"Double Curly Loop",b:"27BF",j:["tape","cassette"],k:[55,34],o:2},ship:{a:"Ship",b:"1F6A2",j:["transportation","titanic","deploy"],k:[34,33],o:2},rolled_up_newspaper:{a:"Rolled Up Newspaper",b:"1F5DE-FE0F",c:"1F5DE",k:[30,23],o:2},knife_fork_plate:{a:"Knife Fork Plate",b:"1F37D-FE0F",c:"1F37D",k:[7,28],o:2},fork_and_knife:{a:"Fork and Knife",b:"1F374",j:["cutlery","kitchen"],k:[7,19],o:2},"male-farmer":{a:"Male Farmer",b:"1F468-200D-1F33E",k:[14,38],o:4},bookmark_tabs:{a:"Bookmark Tabs",b:"1F4D1",j:["favorite","save","order","tidy"],k:[26,39],o:2},part_alternation_mark:{a:"Part Alternation Mark",b:"303D-FE0F",c:"303D",j:["graph","presentation","stats","business","economics","bad"],k:[55,45],o:2},"flag-in":{a:"India Flag",b:"1F1EE-1F1F3",k:[2,27],o:2},gift_heart:{a:"Heart with Ribbon",b:"1F49D",j:["love","valentines"],k:[25,39],o:2},airplane:{a:"Airplane",b:"2708-FE0F",c:"2708",j:["vehicle","transportation","flight","fly"],k:[54,41],o:2},deciduous_tree:{a:"Deciduous Tree",b:"1F333",j:["plant","nature"],k:[6,11],o:2},spoon:{a:"Spoon",b:"1F944",j:["cutlery","kitchen","tableware"],k:[41,20],o:4},"flag-io":{a:"British Indian Ocean Territory Flag",b:"1F1EE-1F1F4",k:[2,28],o:2},palm_tree:{a:"Palm Tree",b:"1F334",j:["plant","vegetable","nature","summer","beach","mojito","tropical"],k:[6,12],o:2},sparkling_heart:{a:"Sparkling Heart",b:"1F496",j:["love","like","affection","valentines"],k:[25,32],o:2},"female-farmer":{a:"Female Farmer",b:"1F469-200D-1F33E",k:[17,28],o:4},eight_spoked_asterisk:{a:"Eight Spoked Asterisk",b:"2733-FE0F",c:"2733",j:["star","sparkle","green-square"],k:[55,17],o:2},small_airplane:{a:"Small Airplane",b:"1F6E9-FE0F",c:"1F6E9",j:["flight","transportation","fly","vehicle"],k:[36,48],o:2},bookmark:{a:"Bookmark",b:"1F516",j:["favorite","label","save"],k:[27,50],o:2},eight_pointed_black_star:{a:"Eight Pointed Black Star",b:"2734-FE0F",c:"2734",j:["orange-square","shape","polygon"],k:[55,18],o:2},heartpulse:{a:"Growing Heart",b:"1F497",j:["like","love","affection","valentines","pink"],k:[25,33],o:2},label:{a:"Label",b:"1F3F7-FE0F",c:"1F3F7",j:["sale","tag"],k:[11,19],o:2},"flag-iq":{a:"Iraq Flag",b:"1F1EE-1F1F6",k:[2,29],o:2},hocho:{a:"Hocho",b:"1F52A",j:["knife","blade","cutlery","kitchen","weapon"],k:[28,13],n:["knife"],o:2},cactus:{a:"Cactus",b:"1F335",j:["vegetable","plant","nature"],k:[6,13],o:2},airplane_departure:{a:"Airplane Departure",b:"1F6EB",k:[36,49],o:2},airplane_arriving:{a:"Airplane Arriving",b:"1F6EC",k:[36,50],o:2},ear_of_rice:{a:"Ear of Rice",b:"1F33E",j:["nature","plant"],k:[6,22],o:2},"flag-ir":{a:"Iran Flag",b:"1F1EE-1F1F7",k:[2,30],o:2},moneybag:{a:"Money Bag",b:"1F4B0",j:["dollar","payment","coins","sale"],k:[26,6],o:2},"male-cook":{a:"Male Cook",b:"1F468-200D-1F373",k:[14,44],o:4},heartbeat:{a:"Beating Heart",b:"1F493",j:["love","like","affection","valentines","pink","heart"],k:[25,29],o:2},sparkle:{a:"Sparkle",b:"2747-FE0F",c:"2747",j:["stars","green-square","awesome","good","fireworks"],k:[55,20],o:2},amphora:{a:"Amphora",b:"1F3FA",j:["vase","jar"],k:[11,22],o:2},yen:{a:"Banknote with Yen Sign",b:"1F4B4",j:["money","sales","japanese","dollar","currency"],k:[26,10],o:2},revolving_hearts:{a:"Revolving Hearts",b:"1F49E",j:["love","like","affection","valentines"],k:[25,40],o:2},bangbang:{a:"Double Exclamation Mark",b:"203C-FE0F",c:"203C",j:["exclamation","surprise"],k:[52,10],o:2},parachute:{a:"Parachute",b:"1FA82",k:[52,3],o:12},herb:{a:"Herb",b:"1F33F",j:["vegetable","plant","medicine","weed","grass","lawn"],k:[6,23],o:2},"flag-is":{a:"Iceland Flag",b:"1F1EE-1F1F8",k:[2,31],o:2},"female-cook":{a:"Female Cook",b:"1F469-200D-1F373",k:[17,34],o:4},interrobang:{a:"Exclamation Question Mark",b:"2049-FE0F",c:"2049",j:["wat","punctuation","surprise"],k:[52,11],o:2},seat:{a:"Seat",b:"1F4BA",j:["sit","airplane","transport","bus","flight","fly"],k:[26,16],o:2},dollar:{a:"Banknote with Dollar Sign",b:"1F4B5",j:["money","sales","bill","currency"],k:[26,11],o:2},two_hearts:{a:"Two Hearts",b:"1F495",j:["love","like","affection","valentines","heart"],k:[25,31],o:2},it:{a:"Italy Flag",b:"1F1EE-1F1F9",j:["italy","flag","nation","country","banner"],k:[2,32],n:["flag-it"],o:2},shamrock:{a:"Shamrock",b:"2618-FE0F",c:"2618",j:["vegetable","plant","nature","irish","clover"],k:[53,1],o:2},four_leaf_clover:{a:"Four Leaf Clover",b:"1F340",j:["vegetable","plant","nature","lucky","irish"],k:[6,24],o:2},euro:{a:"Banknote with Euro Sign",b:"1F4B6",j:["money","sales","dollar","currency"],k:[26,12],o:2},question:{a:"Black Question Mark Ornament",b:"2753",j:["doubt","confused"],k:[55,23],o:2},helicopter:{a:"Helicopter",b:"1F681",j:["transportation","vehicle","fly"],k:[34,0],o:2},heart_decoration:{a:"Heart Decoration",b:"1F49F",j:["purple-square","love","like"],k:[25,41],o:2},"flag-je":{a:"Jersey Flag",b:"1F1EF-1F1EA",k:[2,33],o:2},"male-mechanic":{a:"Male Mechanic",b:"1F468-200D-1F527",k:[15,50],o:4},suspension_railway:{a:"Suspension Railway",b:"1F69F",j:["vehicle","transportation"],k:[34,30],o:2},heavy_heart_exclamation_mark_ornament:{a:"Heavy Heart Exclamation Mark Ornament",b:"2763-FE0F",c:"2763",k:[55,27],o:2},"female-mechanic":{a:"Female Mechanic",b:"1F469-200D-1F527",k:[18,35],o:4},"flag-jm":{a:"Jamaica Flag",b:"1F1EF-1F1F2",k:[2,34],o:2},grey_question:{a:"White Question Mark Ornament",b:"2754",j:["doubts","gray","huh","confused"],k:[55,24],o:2},maple_leaf:{a:"Maple Leaf",b:"1F341",j:["nature","plant","vegetable","ca","fall"],k:[6,25],o:2},pound:{a:"Banknote with Pound Sign",b:"1F4B7",j:["british","sterling","money","sales","bills","uk","england","currency"],k:[26,13],o:2},money_with_wings:{a:"Money with Wings",b:"1F4B8",j:["dollar","bills","payment","sale"],k:[26,14],o:2},"flag-jo":{a:"Jordan Flag",b:"1F1EF-1F1F4",k:[2,35],o:2},fallen_leaf:{a:"Fallen Leaf",b:"1F342",j:["nature","plant","vegetable","leaves"],k:[6,26],o:2},broken_heart:{a:"Broken Heart",b:"1F494",j:["sad","sorry","break","heart","heartbreak"],k:[25,30],l:["</3"],m:"</3",o:2},grey_exclamation:{a:"White Exclamation Mark Ornament",b:"2755",j:["surprise","punctuation","gray","wow","warning"],k:[55,25],o:2},mountain_cableway:{a:"Mountain Cableway",b:"1F6A0",j:["transportation","vehicle","ski"],k:[34,31],o:2},exclamation:{a:"Heavy Exclamation Mark Symbol",b:"2757",j:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],k:[55,26],n:["heavy_exclamation_mark"],o:2},leaves:{a:"Leaf Fluttering in Wind",b:"1F343",j:["nature","plant","tree","vegetable","grass","lawn","spring"],k:[6,27],o:2},heart:{a:"Heavy Black Heart",b:"2764-FE0F",c:"2764",j:["love","like","valentines"],k:[55,28],l:["<3"],m:"<3",o:2},jp:{a:"Japan Flag",b:"1F1EF-1F1F5",j:["japanese","nation","flag","country","banner"],k:[2,36],n:["flag-jp"],o:2},"male-factory-worker":{a:"Male Factory Worker",b:"1F468-200D-1F3ED",k:[15,17],o:4},credit_card:{a:"Credit Card",b:"1F4B3",j:["money","sales","dollar","bill","payment","shopping"],k:[26,9],o:2},aerial_tramway:{a:"Aerial Tramway",b:"1F6A1",j:["transportation","vehicle","ski"],k:[34,32],o:2},"female-factory-worker":{a:"Female Factory Worker",b:"1F469-200D-1F3ED",k:[18,7],o:4},receipt:{a:"Receipt",b:"1F9FE",k:[51,49],o:11},wavy_dash:{a:"Wavy Dash",b:"3030-FE0F",c:"3030",j:["draw","line","moustache","mustache","squiggle","scribble"],k:[55,44],o:2},"flag-ke":{a:"Kenya Flag",b:"1F1F0-1F1EA",k:[2,37],o:2},satellite:{a:"Satellite",b:"1F6F0-FE0F",c:"1F6F0",j:["communication","future","radio","space"],k:[36,51],o:2},orange_heart:{a:"Orange Heart",b:"1F9E1",k:[51,20],o:5},yellow_heart:{a:"Yellow Heart",b:"1F49B",j:["love","like","affection","valentines"],k:[25,37],m:"<3",o:2},rocket:{a:"Rocket",b:"1F680",j:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],k:[33,56],o:2},chart:{a:"Chart with Upwards Trend and Yen Sign",b:"1F4B9",j:["green-square","graph","presentation","stats"],k:[26,15],o:2},"flag-kg":{a:"Kyrgyzstan Flag",b:"1F1F0-1F1EC",k:[2,38],o:2},currency_exchange:{a:"Currency Exchange",b:"1F4B1",j:["money","sales","dollar","travel"],k:[26,7],o:2},green_heart:{a:"Green Heart",b:"1F49A",j:["love","like","affection","valentines"],k:[25,36],m:"<3",o:2},flying_saucer:{a:"Flying Saucer",b:"1F6F8",k:[37,0],o:5},"flag-kh":{a:"Cambodia Flag",b:"1F1F0-1F1ED",k:[2,39],o:2},"male-office-worker":{a:"Male Office Worker",b:"1F468-200D-1F4BC",k:[15,44],o:4},tm:{a:"Trade Mark Sign",b:"2122-FE0F",c:"2122",j:["trademark","brand","law","legal"],k:[52,12],o:2},bellhop_bell:{a:"Bellhop Bell",b:"1F6CE-FE0F",c:"1F6CE",j:["service"],k:[36,36],o:2},blue_heart:{a:"Blue Heart",b:"1F499",j:["love","like","affection","valentines"],k:[25,35],m:"<3",o:2},"flag-ki":{a:"Kiribati Flag",b:"1F1F0-1F1EE",k:[2,40],o:2},heavy_dollar_sign:{a:"Heavy Dollar Sign",b:"1F4B2",j:["money","sales","payment","currency","buck"],k:[26,8],o:2},"female-office-worker":{a:"Female Office Worker",b:"1F469-200D-1F4BC",k:[18,29],o:4},purple_heart:{a:"Purple Heart",b:"1F49C",j:["love","like","affection","valentines"],k:[25,38],m:"<3",o:2},luggage:{a:"Luggage",b:"1F9F3",k:[51,38],o:11},"flag-km":{a:"Comoros Flag",b:"1F1F0-1F1F2",k:[2,41],o:2},email:{a:"Envelope",b:"2709-FE0F",c:"2709",j:["letter","postal","inbox","communication"],k:[54,42],n:["envelope"],o:2},"e-mail":{a:"E-Mail Symbol",b:"1F4E7",j:["communication","inbox"],k:[27,4],o:2},"flag-kn":{a:"St. Kitts & Nevis Flag",b:"1F1F0-1F1F3",k:[2,42],o:2},hourglass:{a:"Hourglass",b:"231B",j:["time","clock","oldschool","limit","exam","quiz","test"],k:[52,23],o:2},brown_heart:{a:"Brown Heart",b:"1F90E",k:[37,16],o:12},"male-scientist":{a:"Male Scientist",b:"1F468-200D-1F52C",k:[15,56],o:4},hourglass_flowing_sand:{a:"Hourglass with Flowing Sand",b:"23F3",j:["oldschool","time","countdown"],k:[52,36],o:2},black_heart:{a:"Black Heart",b:"1F5A4",j:["evil"],k:[30,9],o:4},incoming_envelope:{a:"Incoming Envelope",b:"1F4E8",j:["email","inbox"],k:[27,5],o:2},"flag-kp":{a:"North Korea Flag",b:"1F1F0-1F1F5",k:[2,43],o:2},"female-scientist":{a:"Female Scientist",b:"1F469-200D-1F52C",k:[18,41],o:4},watch:{a:"Watch",b:"231A",j:["time","accessories"],k:[52,22],o:2},white_heart:{a:"White Heart",b:"1F90D",k:[37,15],o:12},kr:{a:"South Korea Flag",b:"1F1F0-1F1F7",j:["south","korea","nation","flag","country","banner"],k:[2,44],n:["flag-kr"],o:2},envelope_with_arrow:{a:"Envelope with Downwards Arrow Above",b:"1F4E9",j:["email","communication"],k:[27,6],o:2},outbox_tray:{a:"Outbox Tray",b:"1F4E4",j:["inbox","email"],k:[27,1],o:2},"male-technologist":{a:"Male Technologist",b:"1F468-200D-1F4BB",k:[15,38],o:4},alarm_clock:{a:"Alarm Clock",b:"23F0",j:["time","wake"],k:[52,33],o:2},"flag-kw":{a:"Kuwait Flag",b:"1F1F0-1F1FC",k:[2,45],o:2},anger:{a:"Anger Symbol",b:"1F4A2",j:["angry","mad"],k:[25,44],o:2},inbox_tray:{a:"Inbox Tray",b:"1F4E5",j:["email","documents"],k:[27,2],o:2},"flag-ky":{a:"Cayman Islands Flag",b:"1F1F0-1F1FE",k:[2,46],o:2},stopwatch:{a:"Stopwatch",b:"23F1-FE0F",c:"23F1",j:["time","deadline"],k:[52,34],o:2},"female-technologist":{a:"Female Technologist",b:"1F469-200D-1F4BB",k:[18,23],o:4},boom:{a:"Collision Symbol",b:"1F4A5",j:["bomb","explode","explosion","collision","blown"],k:[25,47],n:["collision"],o:2},"flag-kz":{a:"Kazakhstan Flag",b:"1F1F0-1F1FF",k:[2,47],o:2},timer_clock:{a:"Timer Clock",b:"23F2-FE0F",c:"23F2",j:["alarm"],k:[52,35],o:2},"package":{a:"Package",b:"1F4E6",j:["mail","gift","cardboard","box","moving"],k:[27,3],o:2},mailbox:{a:"Closed Mailbox with Raised Flag",b:"1F4EB",j:["email","inbox","communication"],k:[27,8],o:2},"flag-la":{a:"Laos Flag",b:"1F1F1-1F1E6",k:[2,48],o:2},dizzy:{a:"Dizzy Symbol",b:"1F4AB",j:["star","sparkle","shoot","magic"],k:[26,1],o:2},"male-singer":{a:"Male Singer",b:"1F468-200D-1F3A4",k:[14,56],o:4},mantelpiece_clock:{a:"Mantelpiece Clock",b:"1F570-FE0F",c:"1F570",j:["time"],k:[29,7],o:2},"female-singer":{a:"Female Singer",b:"1F469-200D-1F3A4",k:[17,46],o:4},"flag-lb":{a:"Lebanon Flag",b:"1F1F1-1F1E7",k:[2,49],o:2},mailbox_closed:{a:"Closed Mailbox with Lowered Flag",b:"1F4EA",j:["email","communication","inbox"],k:[27,7],o:2},sweat_drops:{a:"Splashing Sweat Symbol",b:"1F4A6",j:["water","drip","oops"],k:[25,48],o:2},clock12:{a:"Clock Face Twelve Oclock",b:"1F55B",j:["time","noon","midnight","midday","late","early","schedule"],k:[28,50],o:2},mailbox_with_mail:{a:"Open Mailbox with Raised Flag",b:"1F4EC",j:["email","inbox","communication"],k:[27,9],o:2},clock1230:{a:"Clock Face Twelve-Thirty",b:"1F567",j:["time","late","early","schedule"],k:[29,5],o:2},dash:{a:"Dash Symbol",b:"1F4A8",j:["wind","air","fast","shoo","fart","smoke","puff"],k:[25,50],o:2},"flag-lc":{a:"St. Lucia Flag",b:"1F1F1-1F1E8",k:[2,50],o:2},hole:{a:"Hole",b:"1F573-FE0F",c:"1F573",j:["embarrassing"],k:[29,8],o:2},"male-artist":{a:"Male Artist",b:"1F468-200D-1F3A8",k:[15,5],o:4},clock1:{a:"Clock Face One Oclock",b:"1F550",j:["time","late","early","schedule"],k:[28,39],o:2},mailbox_with_no_mail:{a:"Open Mailbox with Lowered Flag",b:"1F4ED",j:["email","inbox"],k:[27,10],o:2},"flag-li":{a:"Liechtenstein Flag",b:"1F1F1-1F1EE",k:[2,51],o:2},bomb:{a:"Bomb",b:"1F4A3",j:["boom","explode","explosion","terrorism"],k:[25,45],o:2},postbox:{a:"Postbox",b:"1F4EE",j:["email","letter","envelope"],k:[27,11],o:2},"female-artist":{a:"Female Artist",b:"1F469-200D-1F3A8",k:[17,52],o:4},clock130:{a:"Clock Face One-Thirty",b:"1F55C",j:["time","late","early","schedule"],k:[28,51],o:2},"flag-lk":{a:"Sri Lanka Flag",b:"1F1F1-1F1F0",k:[2,52],o:2},ballot_box_with_ballot:{a:"Ballot Box with Ballot",b:"1F5F3-FE0F",c:"1F5F3",k:[30,28],o:2},keycap_ten:{a:"Keycap Ten",b:"1F51F",j:["numbers","10","blue-square"],k:[28,2],o:2},clock2:{a:"Clock Face Two Oclock",b:"1F551",j:["time","late","early","schedule"],k:[28,40],o:2},"flag-lr":{a:"Liberia Flag",b:"1F1F1-1F1F7",k:[2,53],o:2},speech_balloon:{a:"Speech Balloon",b:"1F4AC",j:["bubble","words","message","talk","chatting"],k:[26,2],o:2},"flag-ls":{a:"Lesotho Flag",b:"1F1F1-1F1F8",k:[2,54],o:2},clock230:{a:"Clock Face Two-Thirty",b:"1F55D",j:["time","late","early","schedule"],k:[28,52],o:2},"male-pilot":{a:"Male Pilot",b:"1F468-200D-2708-FE0F",c:"1F468-200D-2708",k:[17,14],o:4},capital_abcd:{a:"Input Symbol for Latin Capital Letters",b:"1F520",j:["alphabet","words","blue-square"],k:[28,3],o:2},pencil2:{a:"Pencil",b:"270F-FE0F",c:"270F",j:["stationery","write","paper","writing","school","study"],k:[55,10],o:2},"female-pilot":{a:"Female Pilot",b:"1F469-200D-2708-FE0F",c:"1F469-200D-2708",k:[19,56],o:4},black_nib:{a:"Black Nib",b:"2712-FE0F",c:"2712",j:["pen","stationery","writing","write"],k:[55,11],o:2},left_speech_bubble:{a:"Left Speech Bubble",b:"1F5E8-FE0F",c:"1F5E8",j:["words","message","talk","chatting"],k:[30,26],o:2},clock3:{a:"Clock Face Three Oclock",b:"1F552",j:["time","late","early","schedule"],k:[28,41],o:2},abcd:{a:"Input Symbol for Latin Small Letters",b:"1F521",j:["blue-square","alphabet"],k:[28,4],o:2},"flag-lt":{a:"Lithuania Flag",b:"1F1F1-1F1F9",k:[2,55],o:2},clock330:{a:"Clock Face Three-Thirty",b:"1F55E",j:["time","late","early","schedule"],k:[28,53],o:2},"flag-lu":{a:"Luxembourg Flag",b:"1F1F1-1F1FA",k:[2,56],o:2},right_anger_bubble:{a:"Right Anger Bubble",b:"1F5EF-FE0F",c:"1F5EF",j:["caption","speech","thinking","mad"],k:[30,27],o:2},lower_left_fountain_pen:{a:"Lower Left Fountain Pen",b:"1F58B-FE0F",c:"1F58B",k:[29,45],o:2},"male-astronaut":{a:"Male Astronaut",b:"1F468-200D-1F680",k:[16,5],o:4},thought_balloon:{a:"Thought Balloon",b:"1F4AD",j:["bubble","cloud","speech","thinking","dream"],k:[26,3],o:2},symbols:{a:"Input Symbol for Symbols",b:"1F523",j:["blue-square","music","note","ampersand","percent","glyphs","characters"],k:[28,6],o:2},clock4:{a:"Clock Face Four Oclock",b:"1F553",j:["time","late","early","schedule"],k:[28,42],o:2},"flag-lv":{a:"Latvia Flag",b:"1F1F1-1F1FB",k:[3,0],o:2},lower_left_ballpoint_pen:{a:"Lower Left Ballpoint Pen",b:"1F58A-FE0F",c:"1F58A",k:[29,44],o:2},abc:{a:"Input Symbol for Latin Letters",b:"1F524",j:["blue-square","alphabet"],k:[28,7],o:2},zzz:{a:"Sleeping Symbol",b:"1F4A4",j:["sleepy","tired","dream"],k:[25,46],o:2},lower_left_paintbrush:{a:"Lower Left Paintbrush",b:"1F58C-FE0F",c:"1F58C",k:[29,46],o:2},"female-astronaut":{a:"Female Astronaut",b:"1F469-200D-1F680",k:[18,47],o:4},"flag-ly":{a:"Libya Flag",b:"1F1F1-1F1FE",k:[3,1],o:2},clock430:{a:"Clock Face Four-Thirty",b:"1F55F",j:["time","late","early","schedule"],k:[28,54],o:2},"flag-ma":{a:"Morocco Flag",b:"1F1F2-1F1E6",k:[3,2],o:2},a:{a:"Negative Squared Latin Capital Letter a",b:"1F170-FE0F",c:"1F170",j:["red-square","alphabet","letter"],k:[0,16],o:2},clock5:{a:"Clock Face Five Oclock",b:"1F554",j:["time","late","early","schedule"],k:[28,43],o:2},lower_left_crayon:{a:"Lower Left Crayon",b:"1F58D-FE0F",c:"1F58D",k:[29,47],o:2},"male-firefighter":{a:"Male Firefighter",b:"1F468-200D-1F692",k:[16,11],o:4},memo:{a:"Memo",b:"1F4DD",j:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],k:[26,51],n:["pencil"],o:2},ab:{a:"Negative Squared Ab",b:"1F18E",j:["red-square","alphabet"],k:[0,20],o:2},"flag-mc":{a:"Monaco Flag",b:"1F1F2-1F1E8",k:[3,3],o:2},clock530:{a:"Clock Face Five-Thirty",b:"1F560",j:["time","late","early","schedule"],k:[28,55],o:2},briefcase:{a:"Briefcase",b:"1F4BC",j:["business","documents","work","law","legal","job","career"],k:[26,18],o:2},"female-firefighter":{a:"Female Firefighter",b:"1F469-200D-1F692",k:[18,53],o:4},clock6:{a:"Clock Face Six Oclock",b:"1F555",j:["time","late","early","schedule","dawn","dusk"],k:[28,44],o:2},b:{a:"Negative Squared Latin Capital Letter B",b:"1F171-FE0F",c:"1F171",j:["red-square","alphabet","letter"],k:[0,17],o:2},"flag-md":{a:"Moldova Flag",b:"1F1F2-1F1E9",k:[3,4],o:2},clock630:{a:"Clock Face Six-Thirty",b:"1F561",j:["time","late","early","schedule"],k:[28,56],o:2},cl:{a:"Squared Cl",b:"1F191",j:["alphabet","words","red-square"],k:[0,21],o:2},"flag-me":{a:"Montenegro Flag",b:"1F1F2-1F1EA",k:[3,5],o:2},file_folder:{a:"File Folder",b:"1F4C1",j:["documents","business","office"],k:[26,23],o:2},"male-police-officer":{obsoletes:"1F46E",a:"Male Police Officer",b:"1F46E-200D-2642-FE0F",c:"1F46E-200D-2642",k:[21,43],o:4},cool:{a:"Squared Cool",b:"1F192",j:["words","blue-square"],k:[0,22],o:2},clock7:{a:"Clock Face Seven Oclock",b:"1F556",j:["time","late","early","schedule"],k:[28,45],o:2},"flag-mf":{a:"St. Martin Flag",b:"1F1F2-1F1EB",k:[3,6],o:2},open_file_folder:{a:"Open File Folder",b:"1F4C2",j:["documents","load"],k:[26,24],o:2},card_index_dividers:{a:"Card Index Dividers",b:"1F5C2-FE0F",c:"1F5C2",j:["organizing","business","stationery"],k:[30,15],o:2},"flag-mg":{a:"Madagascar Flag",b:"1F1F2-1F1EC",k:[3,7],o:2},free:{a:"Squared Free",b:"1F193",j:["blue-square","words"],k:[0,23],o:2},"female-police-officer":{a:"Female Police Officer",b:"1F46E-200D-2640-FE0F",c:"1F46E-200D-2640",k:[21,37],o:4},clock730:{a:"Clock Face Seven-Thirty",b:"1F562",j:["time","late","early","schedule"],k:[29,0],o:2},date:{a:"Calendar",b:"1F4C5",j:["calendar","schedule"],k:[26,27],o:2},clock8:{a:"Clock Face Eight Oclock",b:"1F557",j:["time","late","early","schedule"],k:[28,46],o:2},information_source:{a:"Information Source",b:"2139-FE0F",c:"2139",j:["blue-square","alphabet","letter"],k:[52,13],o:2},"flag-mh":{a:"Marshall Islands Flag",b:"1F1F2-1F1ED",k:[3,8],o:2},clock830:{a:"Clock Face Eight-Thirty",b:"1F563",j:["time","late","early","schedule"],k:[29,1],o:2},calendar:{a:"Tear-off Calendar",b:"1F4C6",j:["schedule","date","planning"],k:[26,28],o:2},"flag-mk":{a:"North Macedonia Flag",b:"1F1F2-1F1F0",k:[3,9],o:2},id:{a:"Squared Id",b:"1F194",j:["purple-square","words"],k:[0,24],o:2},spiral_note_pad:{a:"Spiral Note Pad",b:"1F5D2-FE0F",c:"1F5D2",k:[30,19],o:2},clock9:{a:"Clock Face Nine Oclock",b:"1F558",j:["time","late","early","schedule"],k:[28,47],o:2},"flag-ml":{a:"Mali Flag",b:"1F1F2-1F1F1",k:[3,10],o:2},m:{a:"Circled Latin Capital Letter M",b:"24C2-FE0F",c:"24C2",j:["alphabet","blue-circle","letter"],k:[52,40],o:2},"flag-mm":{a:"Myanmar (burma) Flag",b:"1F1F2-1F1F2",k:[3,11],o:2},clock930:{a:"Clock Face Nine-Thirty",b:"1F564",j:["time","late","early","schedule"],k:[29,2],o:2},"new":{a:"Squared New",b:"1F195",j:["blue-square","words","start"],k:[0,25],o:2},spiral_calendar_pad:{a:"Spiral Calendar Pad",b:"1F5D3-FE0F",c:"1F5D3",k:[30,20],o:2},ng:{a:"Squared Ng",b:"1F196",j:["blue-square","words","shape","icon"],k:[0,26],o:2},card_index:{a:"Card Index",b:"1F4C7",j:["business","stationery"],k:[26,29],o:2},clock10:{a:"Clock Face Ten Oclock",b:"1F559",j:["time","late","early","schedule"],k:[28,48],o:2},"flag-mn":{a:"Mongolia Flag",b:"1F1F2-1F1F3",k:[3,12],o:2},"male-guard":{obsoletes:"1F482",a:"Male Guard",b:"1F482-200D-2642-FE0F",c:"1F482-200D-2642",k:[24,14],o:4},"flag-mo":{a:"Macao Sar China Flag",b:"1F1F2-1F1F4",k:[3,13],o:2},clock1030:{a:"Clock Face Ten-Thirty",b:"1F565",j:["time","late","early","schedule"],k:[29,3],o:2},chart_with_upwards_trend:{a:"Chart with Upwards Trend",b:"1F4C8",j:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],k:[26,30],o:2},o2:{a:"Negative Squared Latin Capital Letter O",b:"1F17E-FE0F",c:"1F17E",j:["alphabet","red-square","letter"],k:[0,18],o:2},"female-guard":{a:"Female Guard",b:"1F482-200D-2640-FE0F",c:"1F482-200D-2640",k:[24,8],o:4},chart_with_downwards_trend:{a:"Chart with Downwards Trend",b:"1F4C9",j:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],k:[26,31],o:2},"flag-mp":{a:"Northern Mariana Islands Flag",b:"1F1F2-1F1F5",k:[3,14],o:2},ok:{a:"Squared Ok",b:"1F197",j:["good","agree","yes","blue-square"],k:[0,27],o:2},clock11:{a:"Clock Face Eleven Oclock",b:"1F55A",j:["time","late","early","schedule"],k:[28,49],o:2},"male-construction-worker":{obsoletes:"1F477",a:"Male Construction Worker",b:"1F477-200D-2642-FE0F",c:"1F477-200D-2642",k:[23,16],o:4},clock1130:{a:"Clock Face Eleven-Thirty",b:"1F566",j:["time","late","early","schedule"],k:[29,4],o:2},"flag-mq":{a:"Martinique Flag",b:"1F1F2-1F1F6",k:[3,15],o:2},bar_chart:{a:"Bar Chart",b:"1F4CA",j:["graph","presentation","stats"],k:[26,32],o:2},parking:{a:"Negative Squared Latin Capital Letter P",b:"1F17F-FE0F",c:"1F17F",j:["cars","blue-square","alphabet","letter"],k:[0,19],o:2},new_moon:{a:"New Moon Symbol",b:"1F311",j:["nature","twilight","planet","space","night","evening","sleep"],k:[5,36],o:2},"female-construction-worker":{a:"Female Construction Worker",b:"1F477-200D-2640-FE0F",c:"1F477-200D-2640",k:[23,10],o:4},sos:{a:"Squared Sos",b:"1F198",j:["help","red-square","words","emergency","911"],k:[0,28],o:2},clipboard:{a:"Clipboard",b:"1F4CB",j:["stationery","documents"],k:[26,33],o:2},"flag-mr":{a:"Mauritania Flag",b:"1F1F2-1F1F7",k:[3,16],o:2},prince:{a:"Prince",b:"1F934",j:["boy","man","male","crown","royal","king"],k:[39,17],o:4},waxing_crescent_moon:{a:"Waxing Crescent Moon Symbol",b:"1F312",j:["nature","twilight","planet","space","night","evening","sleep"],k:[5,37],o:2},"flag-ms":{a:"Montserrat Flag",b:"1F1F2-1F1F8",k:[3,17],o:2},pushpin:{a:"Pushpin",b:"1F4CC",j:["stationery","mark","here"],k:[26,34],o:2},up:{a:"Squared Up with Exclamation Mark",b:"1F199",j:["blue-square","above","high"],k:[0,29],o:2},"flag-mt":{a:"Malta Flag",b:"1F1F2-1F1F9",k:[3,18],o:2},princess:{a:"Princess",b:"1F478",j:["girl","woman","female","blond","crown","royal","queen"],k:[23,28],o:2},round_pushpin:{a:"Round Pushpin",b:"1F4CD",j:["stationery","location","map","here"],k:[26,35],o:2},first_quarter_moon:{a:"First Quarter Moon Symbol",b:"1F313",j:["nature","twilight","planet","space","night","evening","sleep"],k:[5,38],o:2},vs:{a:"Squared Vs",b:"1F19A",j:["words","orange-square"],k:[0,30],o:2},"flag-mu":{a:"Mauritius Flag",b:"1F1F2-1F1FA",k:[3,19],o:2},koko:{a:"Squared Katakana Koko",b:"1F201",j:["blue-square","here","katakana","japanese","destination"],k:[5,4],o:2},moon:{a:"Waxing Gibbous Moon Symbol",b:"1F314",k:[5,39],n:["waxing_gibbous_moon"],o:2},paperclip:{a:"Paperclip",b:"1F4CE",j:["documents","stationery"],k:[26,36],o:2},linked_paperclips:{a:"Linked Paperclips",b:"1F587-FE0F",c:"1F587",k:[29,43],o:2},"man-wearing-turban":{obsoletes:"1F473",a:"Man Wearing Turban",b:"1F473-200D-2642-FE0F",c:"1F473-200D-2642",k:[22,37],o:4},sa:{a:"Squared Katakana Sa",b:"1F202-FE0F",c:"1F202",j:["japanese","blue-square","katakana"],k:[5,5],o:2},full_moon:{a:"Full Moon Symbol",b:"1F315",j:["nature","yellow","twilight","planet","space","night","evening","sleep"],k:[5,40],o:2},"flag-mv":{a:"Maldives Flag",b:"1F1F2-1F1FB",k:[3,20],o:2},"flag-mw":{a:"Malawi Flag",b:"1F1F2-1F1FC",k:[3,21],o:2},waning_gibbous_moon:{a:"Waning Gibbous Moon Symbol",b:"1F316",j:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],k:[5,41],o:2},"woman-wearing-turban":{a:"Woman Wearing Turban",b:"1F473-200D-2640-FE0F",c:"1F473-200D-2640",k:[22,31],o:4},u6708:{a:"Squared Cjk Unified Ideograph-6708",b:"1F237-FE0F",c:"1F237",j:["chinese","month","moon","japanese","orange-square","kanji"],k:[5,13],o:2},straight_ruler:{a:"Straight Ruler",b:"1F4CF",j:["stationery","calculate","length","math","school","drawing","architect","sketch"],k:[26,37],o:2},u6709:{a:"Squared Cjk Unified Ideograph-6709",b:"1F236",j:["orange-square","chinese","have","kanji"],k:[5,12],o:2},triangular_ruler:{a:"Triangular Ruler",b:"1F4D0",j:["stationery","math","architect","sketch"],k:[26,38],o:2},man_with_gua_pi_mao:{a:"Man with Gua Pi Mao",b:"1F472",j:["male","boy","chinese"],k:[22,25],o:2},"flag-mx":{a:"Mexico Flag",b:"1F1F2-1F1FD",k:[3,22],o:2},last_quarter_moon:{a:"Last Quarter Moon Symbol",b:"1F317",j:["nature","twilight","planet","space","night","evening","sleep"],k:[5,42],o:2},person_with_headscarf:{a:"Person with Headscarf",b:"1F9D5",k:[48,34],o:5},waning_crescent_moon:{a:"Waning Crescent Moon Symbol",b:"1F318",j:["nature","twilight","planet","space","night","evening","sleep"],k:[5,43],o:2},u6307:{a:"Squared Cjk Unified Ideograph-6307",b:"1F22F",j:["chinese","point","green-square","kanji"],k:[5,7],o:2},scissors:{a:"Black Scissors",b:"2702-FE0F",c:"2702",j:["stationery","cut"],k:[54,39],o:2},"flag-my":{a:"Malaysia Flag",b:"1F1F2-1F1FE",k:[3,23],o:2},ideograph_advantage:{a:"Circled Ideograph Advantage",b:"1F250",j:["chinese","kanji","obtain","get","circle"],k:[5,17],o:2},man_in_tuxedo:{a:"Man in Tuxedo",b:"1F935",j:["couple","marriage","wedding","groom"],k:[39,23],o:4},"flag-mz":{a:"Mozambique Flag",b:"1F1F2-1F1FF",k:[3,24],o:2},card_file_box:{a:"Card File Box",b:"1F5C3-FE0F",c:"1F5C3",j:["business","stationery"],k:[30,16],o:2},crescent_moon:{a:"Crescent Moon",b:"1F319",j:["night","sleep","sky","evening","magic"],k:[5,44],o:2},"flag-na":{a:"Namibia Flag",b:"1F1F3-1F1E6",k:[3,25],o:2},bride_with_veil:{a:"Bride with Veil",b:"1F470",j:["couple","marriage","wedding","woman","bride"],k:[22,1],o:2},new_moon_with_face:{a:"New Moon with Face",b:"1F31A",j:["nature","twilight","planet","space","night","evening","sleep"],k:[5,45],o:2},file_cabinet:{a:"File Cabinet",b:"1F5C4-FE0F",c:"1F5C4",j:["filing","organizing"],k:[30,17],o:2},u5272:{a:"Squared Cjk Unified Ideograph-5272",b:"1F239",j:["cut","divide","chinese","kanji","pink-square"],k:[5,15],o:2},wastebasket:{a:"Wastebasket",b:"1F5D1-FE0F",c:"1F5D1",j:["bin","trash","rubbish","garbage","toss"],k:[30,18],o:2},pregnant_woman:{a:"Pregnant Woman",b:"1F930",j:["baby"],k:[38,50],o:4},first_quarter_moon_with_face:{a:"First Quarter Moon with Face",b:"1F31B",j:["nature","twilight","planet","space","night","evening","sleep"],k:[5,46],o:2},"flag-nc":{a:"New Caledonia Flag",b:"1F1F3-1F1E8",k:[3,26],o:2},u7121:{a:"Squared Cjk Unified Ideograph-7121",b:"1F21A",j:["nothing","chinese","kanji","japanese","orange-square"],k:[5,6],o:2},lock:{a:"Lock",b:"1F512",j:["security","password","padlock"],k:[27,46],o:2},"flag-ne":{a:"Niger Flag",b:"1F1F3-1F1EA",k:[3,27],o:2},last_quarter_moon_with_face:{a:"Last Quarter Moon with Face",b:"1F31C",j:["nature","twilight","planet","space","night","evening","sleep"],k:[5,47],o:2},"breast-feeding":{a:"Breast-Feeding",b:"1F931",k:[38,56],o:5},u7981:{a:"Squared Cjk Unified Ideograph-7981",b:"1F232",j:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],k:[5,8],o:2},accept:{a:"Circled Ideograph Accept",b:"1F251",j:["ok","good","chinese","kanji","agree","yes","orange-circle"],k:[5,18],o:2},angel:{a:"Baby Angel",b:"1F47C",j:["heaven","wings","halo"],k:[23,37],o:2},unlock:{a:"Open Lock",b:"1F513",j:["privacy","security"],k:[27,47],o:2},"flag-nf":{a:"Norfolk Island Flag",b:"1F1F3-1F1EB",k:[3,28],o:2},thermometer:{a:"Thermometer",b:"1F321-FE0F",c:"1F321",j:["weather","temperature","hot","cold"],k:[5,52],o:2},"flag-ng":{a:"Nigeria Flag",b:"1F1F3-1F1EC",k:[3,29],o:2},u7533:{a:"Squared Cjk Unified Ideograph-7533",b:"1F238",j:["chinese","japanese","kanji","orange-square"],k:[5,14],o:2},sunny:{a:"Black Sun with Rays",b:"2600-FE0F",c:"2600",j:["weather","nature","brightness","summer","beach","spring"],k:[52,49],o:2},lock_with_ink_pen:{a:"Lock with Ink Pen",b:"1F50F",j:["security","secret"],k:[27,43],o:2},santa:{a:"Father Christmas",b:"1F385",j:["festival","man","male","xmas","father christmas"],k:[7,36],o:2},closed_lock_with_key:{a:"Closed Lock with Key",b:"1F510",j:["security","privacy"],k:[27,44],o:2},u5408:{a:"Squared Cjk Unified Ideograph-5408",b:"1F234",j:["japanese","chinese","join","kanji","red-square"],k:[5,10],o:2},"flag-ni":{a:"Nicaragua Flag",b:"1F1F3-1F1EE",k:[3,30],o:2},mrs_claus:{a:"Mother Christmas",b:"1F936",j:["woman","female","xmas","mother christmas"],k:[39,29],n:["mother_christmas"],o:4},full_moon_with_face:{a:"Full Moon with Face",b:"1F31D",j:["nature","twilight","planet","space","night","evening","sleep"],k:[5,48],o:2},key:{a:"Key",b:"1F511",j:["lock","door","password"],k:[27,45],o:2},superhero:{a:"Superhero",b:"1F9B8",k:[43,30],o:11},"flag-nl":{a:"Netherlands Flag",b:"1F1F3-1F1F1",k:[3,31],o:2},u7a7a:{a:"Squared Cjk Unified Ideograph-7a7a",b:"1F233",j:["kanji","japanese","chinese","empty","sky","blue-square"],k:[5,9],o:2},sun_with_face:{a:"Sun with Face",b:"1F31E",j:["nature","morning","sky"],k:[5,49],o:2},male_superhero:{a:"Male Superhero",b:"1F9B8-200D-2642-FE0F",c:"1F9B8-200D-2642",k:[43,24],o:11},ringed_planet:{a:"Ringed Planet",b:"1FA90",k:[52,4],o:12},old_key:{a:"Old Key",b:"1F5DD-FE0F",c:"1F5DD",j:["lock","door","password"],k:[30,22],o:2},congratulations:{a:"Circled Ideograph Congratulation",b:"3297-FE0F",c:"3297",j:["chinese","kanji","japanese","red-circle"],k:[55,46],o:2},"flag-no":{a:"Norway Flag",b:"1F1F3-1F1F4",k:[3,32],o:2},star:{a:"White Medium Star",b:"2B50",j:["night","yellow"],k:[55,42],o:2},secret:{a:"Circled Ideograph Secret",b:"3299-FE0F",c:"3299",j:["privacy","chinese","sshh","kanji","red-circle"],k:[55,47],o:2},"flag-np":{a:"Nepal Flag",b:"1F1F3-1F1F5",k:[3,33],o:2},female_superhero:{a:"Female Superhero",b:"1F9B8-200D-2640-FE0F",c:"1F9B8-200D-2640",k:[43,18],o:11},hammer:{a:"Hammer",b:"1F528",j:["tools","build","create"],k:[28,11],o:2},star2:{a:"Glowing Star",b:"1F31F",j:["night","sparkle","awesome","good","magic"],k:[5,50],o:2},"flag-nr":{a:"Nauru Flag",b:"1F1F3-1F1F7",k:[3,34],o:2},axe:{a:"Axe",b:"1FA93",k:[52,7],o:12},u55b6:{a:"Squared Cjk Unified Ideograph-55b6",b:"1F23A",j:["japanese","opening hours","orange-square"],k:[5,16],o:2},supervillain:{a:"Supervillain",b:"1F9B9",k:[43,48],o:11},stars:{a:"Shooting Star",b:"1F320",j:["night","photo"],k:[5,51],o:2},u6e80:{a:"Squared Cjk Unified Ideograph-6e80",b:"1F235",j:["full","chinese","japanese","red-square","kanji"],k:[5,11],o:2},"flag-nu":{a:"Niue Flag",b:"1F1F3-1F1FA",k:[3,35],o:2},pick:{a:"Pick",b:"26CF-FE0F",c:"26CF",j:["tools","dig"],k:[54,5],o:2},male_supervillain:{a:"Male Supervillain",b:"1F9B9-200D-2642-FE0F",c:"1F9B9-200D-2642",k:[43,42],o:11},female_supervillain:{a:"Female Supervillain",b:"1F9B9-200D-2640-FE0F",c:"1F9B9-200D-2640",k:[43,36],o:11},hammer_and_pick:{a:"Hammer and Pick",b:"2692-FE0F",c:"2692",j:["tools","build","create"],k:[53,41],o:2},milky_way:{a:"Milky Way",b:"1F30C",j:["photo","space","stars"],k:[5,31],o:2},red_circle:{a:"Large Red Circle",b:"1F534",j:["shape","error","danger"],k:[28,23],o:2},"flag-nz":{a:"New Zealand Flag",b:"1F1F3-1F1FF",k:[3,36],o:2},large_orange_circle:{a:"Large Orange Circle",b:"1F7E0",k:[37,3],o:12},hammer_and_wrench:{a:"Hammer and Wrench",b:"1F6E0-FE0F",c:"1F6E0",j:["tools","build","create"],k:[36,42],o:2},"flag-om":{a:"Oman Flag",b:"1F1F4-1F1F2",k:[3,37],o:2},cloud:{a:"Cloud",b:"2601-FE0F",c:"2601",j:["weather","sky"],k:[52,50],o:2},mage:{obsoleted_by:"1F9D9-200D-2640-FE0F",a:"Mage",b:"1F9D9",k:[49,49],o:5},dagger_knife:{a:"Dagger Knife",b:"1F5E1-FE0F",c:"1F5E1",k:[30,24],o:2},partly_sunny:{a:"Sun Behind Cloud",b:"26C5",j:["weather","nature","cloudy","morning","fall","spring"],k:[54,2],o:2},large_yellow_circle:{a:"Large Yellow Circle",b:"1F7E1",k:[37,4],o:12},male_mage:{a:"Male Mage",b:"1F9D9-200D-2642-FE0F",c:"1F9D9-200D-2642",k:[49,43],o:5},"flag-pa":{a:"Panama Flag",b:"1F1F5-1F1E6",k:[3,38],o:2},thunder_cloud_and_rain:{a:"Thunder Cloud and Rain",b:"26C8-FE0F",c:"26C8",k:[54,3],o:2},large_green_circle:{a:"Large Green Circle",b:"1F7E2",k:[37,5],o:12},female_mage:{obsoletes:"1F9D9",a:"Female Mage",b:"1F9D9-200D-2640-FE0F",c:"1F9D9-200D-2640",k:[49,37],o:5},crossed_swords:{a:"Crossed Swords",b:"2694-FE0F",c:"2694",j:["weapon"],k:[53,43],o:2},"flag-pe":{a:"Peru Flag",b:"1F1F5-1F1EA",k:[3,39],o:2},gun:{a:"Pistol",b:"1F52B",j:["violence","weapon","pistol","revolver"],k:[28,14],o:2},mostly_sunny:{a:"Mostly Sunny",b:"1F324-FE0F",c:"1F324",k:[5,53],n:["sun_small_cloud"],o:2},fairy:{obsoleted_by:"1F9DA-200D-2640-FE0F",a:"Fairy",b:"1F9DA",k:[50,10],o:5},"flag-pf":{a:"French Polynesia Flag",b:"1F1F5-1F1EB",k:[3,40],o:2},large_blue_circle:{a:"Large Blue Circle",b:"1F535",j:["shape","icon","button"],k:[28,24],o:2},large_purple_circle:{a:"Large Purple Circle",b:"1F7E3",k:[37,6],o:12},bow_and_arrow:{a:"Bow and Arrow",b:"1F3F9",j:["sports"],k:[11,21],o:2},male_fairy:{a:"Male Fairy",b:"1F9DA-200D-2642-FE0F",c:"1F9DA-200D-2642",k:[50,4],o:5},barely_sunny:{a:"Barely Sunny",b:"1F325-FE0F",c:"1F325",k:[5,54],n:["sun_behind_cloud"],o:2},"flag-pg":{a:"Papua New Guinea Flag",b:"1F1F5-1F1EC",k:[3,41],o:2},shield:{a:"Shield",b:"1F6E1-FE0F",c:"1F6E1",j:["protection","security"],k:[36,43],o:2},partly_sunny_rain:{a:"Partly Sunny Rain",b:"1F326-FE0F",c:"1F326",k:[5,55],n:["sun_behind_rain_cloud"],o:2},large_brown_circle:{a:"Large Brown Circle",b:"1F7E4",k:[37,7],o:12},female_fairy:{obsoletes:"1F9DA",a:"Female Fairy",b:"1F9DA-200D-2640-FE0F",c:"1F9DA-200D-2640",k:[49,55],o:5},"flag-ph":{a:"Philippines Flag",b:"1F1F5-1F1ED",k:[3,42],o:2},"flag-pk":{a:"Pakistan Flag",b:"1F1F5-1F1F0",k:[3,43],o:2},black_circle:{a:"Medium Black Circle",b:"26AB",j:["shape","button","round"],k:[53,53],o:2},wrench:{a:"Wrench",b:"1F527",j:["tools","diy","ikea","fix","maintainer"],k:[28,10],o:2},vampire:{obsoleted_by:"1F9DB-200D-2640-FE0F",a:"Vampire",b:"1F9DB",k:[50,28],o:5},rain_cloud:{a:"Rain Cloud",b:"1F327-FE0F",c:"1F327",k:[5,56],o:2},snow_cloud:{a:"Snow Cloud",b:"1F328-FE0F",c:"1F328",k:[6,0],o:2},"flag-pl":{a:"Poland Flag",b:"1F1F5-1F1F1",k:[3,44],o:2},male_vampire:{a:"Male Vampire",b:"1F9DB-200D-2642-FE0F",c:"1F9DB-200D-2642",k:[50,22],o:5},nut_and_bolt:{a:"Nut and Bolt",b:"1F529",j:["handy","tools","fix"],k:[28,12],o:2},white_circle:{a:"Medium White Circle",b:"26AA",j:["shape","round"],k:[53,52],o:2},female_vampire:{obsoletes:"1F9DB",a:"Female Vampire",b:"1F9DB-200D-2640-FE0F",c:"1F9DB-200D-2640",k:[50,16],o:5},"flag-pm":{a:"St. Pierre & Miquelon Flag",b:"1F1F5-1F1F2",k:[3,45],o:2},large_red_square:{a:"Large Red Square",b:"1F7E5",k:[37,8],o:12},lightning:{a:"Lightning",b:"1F329-FE0F",c:"1F329",k:[6,1],n:["lightning_cloud"],o:2},gear:{a:"Gear",b:"2699-FE0F",c:"2699",j:["cog"],k:[53,47],o:2},merperson:{obsoleted_by:"1F9DC-200D-2642-FE0F",a:"Merperson",b:"1F9DC",k:[50,46],o:5},tornado:{a:"Tornado",b:"1F32A-FE0F",c:"1F32A",j:["weather","cyclone","twister"],k:[6,2],n:["tornado_cloud"],o:2},large_orange_square:{a:"Large Orange Square",b:"1F7E7",k:[37,10],o:12},"flag-pn":{a:"Pitcairn Islands Flag",b:"1F1F5-1F1F3",k:[3,46],o:2},compression:{a:"Compression",b:"1F5DC-FE0F",c:"1F5DC",k:[30,21],o:2},merman:{obsoletes:"1F9DC",a:"Merman",b:"1F9DC-200D-2642-FE0F",c:"1F9DC-200D-2642",k:[50,40],o:5},large_yellow_square:{a:"Large Yellow Square",b:"1F7E8",k:[37,11],o:12},fog:{a:"Fog",b:"1F32B-FE0F",c:"1F32B",j:["weather"],k:[6,3],o:2},scales:{a:"Scales",b:"2696-FE0F",c:"2696",k:[53,45],o:2},"flag-pr":{a:"Puerto Rico Flag",b:"1F1F5-1F1F7",k:[3,47],o:2},wind_blowing_face:{a:"Wind Blowing Face",b:"1F32C-FE0F",c:"1F32C",k:[6,4],o:2},"flag-ps":{a:"Palestinian Territories Flag",b:"1F1F5-1F1F8",k:[3,48],o:2},mermaid:{a:"Mermaid",b:"1F9DC-200D-2640-FE0F",c:"1F9DC-200D-2640",k:[50,34],o:5},probing_cane:{a:"Probing Cane",b:"1F9AF",k:[43,3],o:12},large_green_square:{a:"Large Green Square",b:"1F7E9",k:[37,12],o:12},"flag-pt":{a:"Portugal Flag",b:"1F1F5-1F1F9",k:[3,49],o:2},link:{a:"Link Symbol",b:"1F517",j:["rings","url"],k:[27,51],o:2},large_blue_square:{a:"Large Blue Square",b:"1F7E6",k:[37,9],o:12},elf:{obsoleted_by:"1F9DD-200D-2642-FE0F",a:"Elf",b:"1F9DD",k:[51,7],o:5},cyclone:{a:"Cyclone",b:"1F300",j:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],k:[5,19],o:2},rainbow:{a:"Rainbow",b:"1F308",j:["nature","happy","unicorn_face","photo","sky","spring"],k:[5,27],o:2},male_elf:{obsoletes:"1F9DD",a:"Male Elf",b:"1F9DD-200D-2642-FE0F",c:"1F9DD-200D-2642",k:[51,1],o:5},"flag-pw":{a:"Palau Flag",b:"1F1F5-1F1FC",k:[3,50],o:2},chains:{a:"Chains",b:"26D3-FE0F",c:"26D3",j:["lock","arrest"],k:[54,7],o:2},large_purple_square:{a:"Large Purple Square",b:"1F7EA",k:[37,13],o:12},female_elf:{a:"Female Elf",b:"1F9DD-200D-2640-FE0F",c:"1F9DD-200D-2640",k:[50,52],o:5},"flag-py":{a:"Paraguay Flag",b:"1F1F5-1F1FE",k:[3,51],o:2},closed_umbrella:{a:"Closed Umbrella",b:"1F302",j:["weather","rain","drizzle"],k:[5,21],o:2},toolbox:{a:"Toolbox",b:"1F9F0",k:[51,35],o:11},large_brown_square:{a:"Large Brown Square",b:"1F7EB",k:[37,14],o:12},magnet:{a:"Magnet",b:"1F9F2",k:[51,37],o:11},genie:{obsoleted_by:"1F9DE-200D-2642-FE0F",a:"Genie",b:"1F9DE",k:[51,15],o:5},"flag-qa":{a:"Qatar Flag",b:"1F1F6-1F1E6",k:[3,52],o:2},umbrella:{a:"Umbrella",b:"2602-FE0F",c:"2602",j:["rainy","weather","spring"],k:[52,51],o:2},black_large_square:{a:"Black Large Square",b:"2B1B",j:["shape","icon","button"],k:[55,40],o:2},male_genie:{obsoletes:"1F9DE",a:"Male Genie",b:"1F9DE-200D-2642-FE0F",c:"1F9DE-200D-2642",k:[51,14],o:5},umbrella_with_rain_drops:{a:"Umbrella with Rain Drops",b:"2614",k:[52,56],o:2},"flag-re":{a:"Réunion Flag",b:"1F1F7-1F1EA",k:[3,53],o:2},white_large_square:{a:"White Large Square",b:"2B1C",j:["shape","icon","stone","button"],k:[55,41],o:2},alembic:{a:"Alembic",b:"2697-FE0F",c:"2697",j:["distilling","science","experiment","chemistry"],k:[53,46],o:2},black_medium_square:{a:"Black Medium Square",b:"25FC-FE0F",c:"25FC",j:["shape","button","icon"],k:[52,46],o:2},test_tube:{a:"Test Tube",b:"1F9EA",k:[51,29],o:11},"flag-ro":{a:"Romania Flag",b:"1F1F7-1F1F4",k:[3,54],o:2},female_genie:{a:"Female Genie",b:"1F9DE-200D-2640-FE0F",c:"1F9DE-200D-2640",k:[51,13],o:5},umbrella_on_ground:{a:"Umbrella on Ground",b:"26F1-FE0F",c:"26F1",k:[54,12],o:2},zombie:{obsoleted_by:"1F9DF-200D-2642-FE0F",a:"Zombie",b:"1F9DF",k:[51,18],o:5},zap:{a:"High Voltage Sign",b:"26A1",j:["thunder","weather","lightning bolt","fast"],k:[53,51],o:2},white_medium_square:{a:"White Medium Square",b:"25FB-FE0F",c:"25FB",j:["shape","stone","icon"],k:[52,45],o:2},"flag-rs":{a:"Serbia Flag",b:"1F1F7-1F1F8",k:[3,55],o:2},petri_dish:{a:"Petri Dish",b:"1F9EB",k:[51,30],o:11},snowflake:{a:"Snowflake",b:"2744-FE0F",c:"2744",j:["winter","season","cold","weather","christmas","xmas"],k:[55,19],o:2},dna:{a:"Dna Double Helix",b:"1F9EC",k:[51,31],o:11},male_zombie:{obsoletes:"1F9DF",a:"Male Zombie",b:"1F9DF-200D-2642-FE0F",c:"1F9DF-200D-2642",k:[51,17],o:5},black_medium_small_square:{a:"Black Medium Small Square",b:"25FE",j:["icon","shape","button"],k:[52,48],o:2},ru:{a:"Russia Flag",b:"1F1F7-1F1FA",j:["russian","federation","flag","nation","country","banner"],k:[3,56],n:["flag-ru"],o:2},female_zombie:{a:"Female Zombie",b:"1F9DF-200D-2640-FE0F",c:"1F9DF-200D-2640",k:[51,16],o:5},"flag-rw":{a:"Rwanda Flag",b:"1F1F7-1F1FC",k:[4,0],o:2},snowman:{a:"Snowman",b:"2603-FE0F",c:"2603",j:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],k:[52,52],o:2},white_medium_small_square:{a:"White Medium Small Square",b:"25FD",j:["shape","stone","icon","button"],k:[52,47],o:2},microscope:{a:"Microscope",b:"1F52C",j:["laboratory","experiment","zoomin","science","study"],k:[28,15],o:2},snowman_without_snow:{a:"Snowman Without Snow",b:"26C4",k:[54,1],o:2},telescope:{a:"Telescope",b:"1F52D",j:["stars","space","zoom","science","astronomy"],k:[28,16],o:2},black_small_square:{a:"Black Small Square",b:"25AA-FE0F",c:"25AA",j:["shape","icon"],k:[52,41],o:2},"flag-sa":{a:"Saudi Arabia Flag",b:"1F1F8-1F1E6",k:[4,1],o:2},"man-getting-massage":{a:"Man Getting Massage",b:"1F486-200D-2642-FE0F",c:"1F486-200D-2642",k:[24,45],o:4},comet:{a:"Comet",b:"2604-FE0F",c:"2604",j:["space"],k:[52,53],o:2},white_small_square:{a:"White Small Square",b:"25AB-FE0F",c:"25AB",j:["shape","icon"],k:[52,42],o:2},"flag-sb":{a:"Solomon Islands Flag",b:"1F1F8-1F1E7",k:[4,2],o:2},satellite_antenna:{a:"Satellite Antenna",b:"1F4E1",k:[26,55],o:2},large_orange_diamond:{a:"Large Orange Diamond",b:"1F536",j:["shape","jewel","gem"],k:[28,25],o:2},"woman-getting-massage":{obsoletes:"1F486",a:"Woman Getting Massage",b:"1F486-200D-2640-FE0F",c:"1F486-200D-2640",k:[24,39],o:4},fire:{a:"Fire",b:"1F525",j:["hot","cook","flame"],k:[28,8],o:2},syringe:{a:"Syringe",b:"1F489",j:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],k:[25,19],o:2},"flag-sc":{a:"Seychelles Flag",b:"1F1F8-1F1E8",k:[4,3],o:2},large_blue_diamond:{a:"Large Blue Diamond",b:"1F537",j:["shape","jewel","gem"],k:[28,26],o:2},"flag-sd":{a:"Sudan Flag",b:"1F1F8-1F1E9",k:[4,4],o:2},droplet:{a:"Droplet",b:"1F4A7",j:["water","drip","faucet","spring"],k:[25,49],o:2},drop_of_blood:{a:"Drop of Blood",b:"1FA78",k:[51,55],o:12},ocean:{a:"Water Wave",b:"1F30A",j:["sea","water","wave","nature","tsunami","disaster"],k:[5,29],o:2},"flag-se":{a:"Sweden Flag",b:"1F1F8-1F1EA",k:[4,5],o:2},"man-getting-haircut":{a:"Man Getting Haircut",b:"1F487-200D-2642-FE0F",c:"1F487-200D-2642",k:[25,6],o:4},small_orange_diamond:{a:"Small Orange Diamond",b:"1F538",j:["shape","jewel","gem"],k:[28,27],o:2},pill:{a:"Pill",b:"1F48A",j:["health","medicine","doctor","pharmacy","drug"],k:[25,20],o:2},"woman-getting-haircut":{obsoletes:"1F487",a:"Woman Getting Haircut",b:"1F487-200D-2640-FE0F",c:"1F487-200D-2640",k:[25,0],o:4},small_blue_diamond:{a:"Small Blue Diamond",b:"1F539",j:["shape","jewel","gem"],k:[28,28],o:2},"flag-sg":{a:"Singapore Flag",b:"1F1F8-1F1EC",k:[4,6],o:2},adhesive_bandage:{a:"Adhesive Bandage",b:"1FA79",k:[51,56],o:12},small_red_triangle:{a:"Up-Pointing Red Triangle",b:"1F53A",j:["shape","direction","up","top"],k:[28,29],o:2},"flag-sh":{a:"St. Helena Flag",b:"1F1F8-1F1ED",k:[4,7],o:2},stethoscope:{a:"Stethoscope",b:"1FA7A",k:[52,0],o:12},"man-walking":{obsoletes:"1F6B6",a:"Man Walking",b:"1F6B6-200D-2642-FE0F",c:"1F6B6-200D-2642",k:[35,53],o:4},"flag-si":{a:"Slovenia Flag",b:"1F1F8-1F1EE",k:[4,8],o:2},door:{a:"Door",b:"1F6AA",j:["house","entry","exit"],k:[35,1],o:2},small_red_triangle_down:{a:"Down-Pointing Red Triangle",b:"1F53B",j:["shape","direction","bottom"],k:[28,30],o:2},"flag-sj":{a:"Svalbard & Jan Mayen Flag",b:"1F1F8-1F1EF",k:[4,9],o:2},diamond_shape_with_a_dot_inside:{a:"Diamond Shape with a Dot Inside",b:"1F4A0",j:["jewel","blue","gem","crystal","fancy"],k:[25,42],o:2},"woman-walking":{a:"Woman Walking",b:"1F6B6-200D-2640-FE0F",c:"1F6B6-200D-2640",k:[35,47],o:4},bed:{a:"Bed",b:"1F6CF-FE0F",c:"1F6CF",j:["sleep","rest"],k:[36,37],o:2},radio_button:{a:"Radio Button",b:"1F518",j:["input","old","music","circle"],k:[27,52],o:2},"flag-sk":{a:"Slovakia Flag",b:"1F1F8-1F1F0",k:[4,10],o:2},standing_person:{a:"Standing Person",b:"1F9CD",k:[44,31],o:12},couch_and_lamp:{a:"Couch and Lamp",b:"1F6CB-FE0F",c:"1F6CB",j:["read","chill"],k:[36,28],o:2},man_standing:{a:"Man Standing",b:"1F9CD-200D-2642-FE0F",c:"1F9CD-200D-2642",k:[44,25],o:12},white_square_button:{a:"White Square Button",b:"1F533",j:["shape","input"],k:[28,22],o:2},"flag-sl":{a:"Sierra Leone Flag",b:"1F1F8-1F1F1",k:[4,11],o:2},chair:{a:"Chair",b:"1FA91",k:[52,5],o:12},toilet:{a:"Toilet",b:"1F6BD",j:["restroom","wc","washroom","bathroom","potty"],k:[36,14],o:2},black_square_button:{a:"Black Square Button",b:"1F532",j:["shape","input","frame"],k:[28,21],o:2},"flag-sm":{a:"San Marino Flag",b:"1F1F8-1F1F2",k:[4,12],o:2},woman_standing:{a:"Woman Standing",b:"1F9CD-200D-2640-FE0F",c:"1F9CD-200D-2640",k:[44,19],o:12},kneeling_person:{a:"Kneeling Person",b:"1F9CE",k:[44,49],o:12},shower:{a:"Shower",b:"1F6BF",j:["clean","water","bathroom"],k:[36,16],o:2},"flag-sn":{a:"Senegal Flag",b:"1F1F8-1F1F3",k:[4,13],o:2},bathtub:{a:"Bathtub",b:"1F6C1",j:["clean","shower","bathroom"],k:[36,23],o:2},"flag-so":{a:"Somalia Flag",b:"1F1F8-1F1F4",k:[4,14],o:2},man_kneeling:{a:"Man Kneeling",b:"1F9CE-200D-2642-FE0F",c:"1F9CE-200D-2642",k:[44,43],o:12},"flag-sr":{a:"Suriname Flag",b:"1F1F8-1F1F7",k:[4,15],o:2},woman_kneeling:{a:"Woman Kneeling",b:"1F9CE-200D-2640-FE0F",c:"1F9CE-200D-2640",k:[44,37],o:12},razor:{a:"Razor",b:"1FA92",k:[52,6],o:12},"flag-ss":{a:"South Sudan Flag",b:"1F1F8-1F1F8",k:[4,16],o:2},lotion_bottle:{a:"Lotion Bottle",b:"1F9F4",k:[51,39],o:11},"flag-st":{a:"São Tomé & Príncipe Flag",b:"1F1F8-1F1F9",k:[4,17],o:2},safety_pin:{a:"Safety Pin",b:"1F9F7",k:[51,42],o:11},man_with_probing_cane:{a:"Man with Probing Cane",b:"1F468-200D-1F9AF",k:[16,17],o:12},broom:{a:"Broom",b:"1F9F9",k:[51,44],o:11},woman_with_probing_cane:{a:"Woman with Probing Cane",b:"1F469-200D-1F9AF",k:[19,2],o:12},"flag-sv":{a:"El Salvador Flag",b:"1F1F8-1F1FB",k:[4,18],o:2},"flag-sx":{a:"Sint Maarten Flag",b:"1F1F8-1F1FD",k:[4,19],o:2},basket:{a:"Basket",b:"1F9FA",k:[51,45],o:11},man_in_motorized_wheelchair:{a:"Man in Motorized Wheelchair",b:"1F468-200D-1F9BC",k:[16,47],o:12},"flag-sy":{a:"Syria Flag",b:"1F1F8-1F1FE",k:[4,20],o:2},roll_of_paper:{a:"Roll of Paper",b:"1F9FB",k:[51,46],o:11},woman_in_motorized_wheelchair:{a:"Woman in Motorized Wheelchair",b:"1F469-200D-1F9BC",k:[19,32],o:12},"flag-sz":{a:"Eswatini Flag",b:"1F1F8-1F1FF",k:[4,21],o:2},soap:{a:"Bar of Soap",b:"1F9FC",k:[51,47],o:11},"flag-ta":{a:"Tristan Da Cunha Flag",b:"1F1F9-1F1E6",k:[4,22],o:2},sponge:{a:"Sponge",b:"1F9FD",k:[51,48],o:11},fire_extinguisher:{a:"Fire Extinguisher",b:"1F9EF",k:[51,34],o:11},man_in_manual_wheelchair:{a:"Man in Manual Wheelchair",b:"1F468-200D-1F9BD",k:[16,53],o:12},"flag-tc":{a:"Turks & Caicos Islands Flag",b:"1F1F9-1F1E8",k:[4,23],o:2},woman_in_manual_wheelchair:{a:"Woman in Manual Wheelchair",b:"1F469-200D-1F9BD",k:[19,38],o:12},"flag-td":{a:"Chad Flag",b:"1F1F9-1F1E9",k:[4,24],o:2},shopping_trolley:{a:"Shopping Trolley",b:"1F6D2",k:[36,40],o:4},"flag-tf":{a:"French Southern Territories Flag",b:"1F1F9-1F1EB",k:[4,25],o:2},smoking:{a:"Smoking Symbol",b:"1F6AC",j:["kills","tobacco","cigarette","joint","smoke"],k:[35,3],o:2},coffin:{a:"Coffin",b:"26B0-FE0F",c:"26B0",j:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],k:[53,54],o:2},"man-running":{obsoletes:"1F3C3",a:"Man Running",b:"1F3C3-200D-2642-FE0F",c:"1F3C3-200D-2642",k:[8,52],o:4},"flag-tg":{a:"Togo Flag",b:"1F1F9-1F1EC",k:[4,26],o:2},"woman-running":{a:"Woman Running",b:"1F3C3-200D-2640-FE0F",c:"1F3C3-200D-2640",k:[8,46],o:4},funeral_urn:{a:"Funeral Urn",b:"26B1-FE0F",c:"26B1",j:["dead","die","death","rip","ashes"],k:[53,55],o:2},"flag-th":{a:"Thailand Flag",b:"1F1F9-1F1ED",k:[4,27],o:2},moyai:{a:"Moyai",b:"1F5FF",j:["rock","easter island","moai"],k:[30,34],o:2},"flag-tj":{a:"Tajikistan Flag",b:"1F1F9-1F1EF",k:[4,28],o:2},dancer:{a:"Dancer",b:"1F483",j:["female","girl","woman","fun"],k:[24,26],o:2},"flag-tk":{a:"Tokelau Flag",b:"1F1F9-1F1F0",k:[4,29],o:2},man_dancing:{a:"Man Dancing",b:"1F57A",j:["male","boy","fun","dancer"],k:[29,37],o:4},"flag-tl":{a:"Timor-Leste Flag",b:"1F1F9-1F1F1",k:[4,30],o:2},man_in_business_suit_levitating:{a:"Man in Business Suit Levitating",b:"1F574-FE0F",c:"1F574",k:[29,9],o:2},"flag-tm":{a:"Turkmenistan Flag",b:"1F1F9-1F1F2",k:[4,31],o:2},dancers:{obsoleted_by:"1F46F-200D-2640-FE0F",a:"Woman with Bunny Ears",b:"1F46F",k:[22,0],o:2},"man-with-bunny-ears-partying":{a:"Man with Bunny Ears Partying",b:"1F46F-200D-2642-FE0F",c:"1F46F-200D-2642",k:[21,56],o:4},"flag-tn":{a:"Tunisia Flag",b:"1F1F9-1F1F3",k:[4,32],o:2},"flag-to":{a:"Tonga Flag",b:"1F1F9-1F1F4",k:[4,33],o:2},"woman-with-bunny-ears-partying":{obsoletes:"1F46F",a:"Woman with Bunny Ears Partying",b:"1F46F-200D-2640-FE0F",c:"1F46F-200D-2640",k:[21,55],o:4},"flag-tr":{a:"Turkey Flag",b:"1F1F9-1F1F7",k:[4,34],o:2},person_in_steamy_room:{obsoleted_by:"1F9D6-200D-2642-FE0F",a:"Person in Steamy Room",b:"1F9D6",k:[48,52],o:5},man_in_steamy_room:{obsoletes:"1F9D6",a:"Man in Steamy Room",b:"1F9D6-200D-2642-FE0F",c:"1F9D6-200D-2642",k:[48,46],o:5},"flag-tt":{a:"Trinidad & Tobago Flag",b:"1F1F9-1F1F9",k:[4,35],o:2},woman_in_steamy_room:{a:"Woman in Steamy Room",b:"1F9D6-200D-2640-FE0F",c:"1F9D6-200D-2640",k:[48,40],o:5},"flag-tv":{a:"Tuvalu Flag",b:"1F1F9-1F1FB",k:[4,36],o:2},"flag-tw":{a:"Taiwan Flag",b:"1F1F9-1F1FC",k:[4,37],o:2},person_climbing:{obsoleted_by:"1F9D7-200D-2640-FE0F",a:"Person Climbing",b:"1F9D7",k:[49,13],o:5},man_climbing:{a:"Man Climbing",b:"1F9D7-200D-2642-FE0F",c:"1F9D7-200D-2642",k:[49,7],o:5},"flag-tz":{a:"Tanzania Flag",b:"1F1F9-1F1FF",k:[4,38],o:2},"flag-ua":{a:"Ukraine Flag",b:"1F1FA-1F1E6",k:[4,39],o:2},woman_climbing:{obsoletes:"1F9D7",a:"Woman Climbing",b:"1F9D7-200D-2640-FE0F",c:"1F9D7-200D-2640",k:[49,1],o:5},"flag-ug":{a:"Uganda Flag",b:"1F1FA-1F1EC",k:[4,40],o:2},fencer:{a:"Fencer",b:"1F93A",k:[40,32],o:4},"flag-um":{a:"U.s. Outlying Islands Flag",b:"1F1FA-1F1F2",k:[4,41],o:2},horse_racing:{a:"Horse Racing",b:"1F3C7",j:["animal","betting","competition","gambling","luck"],k:[9,27],o:2},skier:{a:"Skier",b:"26F7-FE0F",c:"26F7",j:["sports","winter","snow"],k:[54,17],o:2},"flag-un":{a:"United Nations Flag",b:"1F1FA-1F1F3",k:[4,42],o:4},us:{a:"United States Flag",b:"1F1FA-1F1F8",j:["united","states","america","flag","nation","country","banner"],k:[4,43],n:["flag-us"],o:2},snowboarder:{a:"Snowboarder",b:"1F3C2",j:["sports","winter"],k:[8,40],o:2},"flag-uy":{a:"Uruguay Flag",b:"1F1FA-1F1FE",k:[4,44],o:2},"flag-uz":{a:"Uzbekistan Flag",b:"1F1FA-1F1FF",k:[4,45],o:2},"flag-va":{a:"Vatican City Flag",b:"1F1FB-1F1E6",k:[4,46],o:2},"flag-vc":{a:"St. Vincent & Grenadines Flag",b:"1F1FB-1F1E8",k:[4,47],o:2},"man-surfing":{obsoletes:"1F3C4",a:"Man Surfing",b:"1F3C4-200D-2642-FE0F",c:"1F3C4-200D-2642",k:[9,13],o:4},"flag-ve":{a:"Venezuela Flag",b:"1F1FB-1F1EA",k:[4,48],o:2},"flag-vg":{a:"British Virgin Islands Flag",b:"1F1FB-1F1EC",k:[4,49],o:2},"woman-surfing":{a:"Woman Surfing",b:"1F3C4-200D-2640-FE0F",c:"1F3C4-200D-2640",k:[9,7],o:4},"flag-vi":{a:"U.s. Virgin Islands Flag",b:"1F1FB-1F1EE",k:[4,50],o:2},"man-rowing-boat":{obsoletes:"1F6A3",a:"Man Rowing Boat",b:"1F6A3-200D-2642-FE0F",c:"1F6A3-200D-2642",k:[34,40],o:4},"flag-vn":{a:"Vietnam Flag",b:"1F1FB-1F1F3",k:[4,51],o:2},"flag-vu":{a:"Vanuatu Flag",b:"1F1FB-1F1FA",k:[4,52],o:2},"woman-rowing-boat":{a:"Woman Rowing Boat",b:"1F6A3-200D-2640-FE0F",c:"1F6A3-200D-2640",k:[34,34],o:4},"flag-wf":{a:"Wallis & Futuna Flag",b:"1F1FC-1F1EB",k:[4,53],o:2},"man-swimming":{obsoletes:"1F3CA",a:"Man Swimming",b:"1F3CA-200D-2642-FE0F",c:"1F3CA-200D-2642",k:[9,41],o:4},"flag-ws":{a:"Samoa Flag",b:"1F1FC-1F1F8",k:[4,54],o:2},"woman-swimming":{a:"Woman Swimming",b:"1F3CA-200D-2640-FE0F",c:"1F3CA-200D-2640",k:[9,35],o:4},"flag-xk":{a:"Kosovo Flag",b:"1F1FD-1F1F0",k:[4,55],o:2},"flag-ye":{a:"Yemen Flag",b:"1F1FE-1F1EA",k:[4,56],o:2},"flag-yt":{a:"Mayotte Flag",b:"1F1FE-1F1F9",k:[5,0],o:2},"flag-za":{a:"South Africa Flag",b:"1F1FF-1F1E6",k:[5,1],o:2},"flag-zm":{a:"Zambia Flag",b:"1F1FF-1F1F2",k:[5,2],o:2},"flag-zw":{a:"Zimbabwe Flag",b:"1F1FF-1F1FC",k:[5,3],o:2},"flag-england":{a:"England Flag",b:"1F3F4-E0067-E0062-E0065-E006E-E0067-E007F",k:[11,14],o:5},"flag-scotland":{a:"Scotland Flag",b:"1F3F4-E0067-E0062-E0073-E0063-E0074-E007F",k:[11,15],o:5},"flag-wales":{a:"Wales Flag",b:"1F3F4-E0067-E0062-E0077-E006C-E0073-E007F",k:[11,16],o:5},"man-biking":{obsoletes:"1F6B4",a:"Man Biking",b:"1F6B4-200D-2642-FE0F",c:"1F6B4-200D-2642",k:[35,17],o:4},"woman-biking":{a:"Woman Biking",b:"1F6B4-200D-2640-FE0F",c:"1F6B4-200D-2640",k:[35,11],o:4},"man-mountain-biking":{obsoletes:"1F6B5",a:"Man Mountain Biking",b:"1F6B5-200D-2642-FE0F",c:"1F6B5-200D-2642",k:[35,35],o:4},"woman-mountain-biking":{a:"Woman Mountain Biking",b:"1F6B5-200D-2640-FE0F",c:"1F6B5-200D-2640",k:[35,29],o:4},"man-cartwheeling":{a:"Man Cartwheeling",b:"1F938-200D-2642-FE0F",c:"1F938-200D-2642",k:[40,2],o:4},"woman-cartwheeling":{a:"Woman Cartwheeling",b:"1F938-200D-2640-FE0F",c:"1F938-200D-2640",k:[39,53],o:4},wrestlers:{a:"Wrestlers",b:"1F93C",k:[40,35],o:4},"man-wrestling":{a:"Man Wrestling",b:"1F93C-200D-2642-FE0F",c:"1F93C-200D-2642",k:[40,34],o:4},"woman-wrestling":{a:"Woman Wrestling",b:"1F93C-200D-2640-FE0F",c:"1F93C-200D-2640",k:[40,33],o:4},"man-playing-water-polo":{a:"Man Playing Water Polo",b:"1F93D-200D-2642-FE0F",c:"1F93D-200D-2642",k:[40,42],o:4},"woman-playing-water-polo":{a:"Woman Playing Water Polo",b:"1F93D-200D-2640-FE0F",c:"1F93D-200D-2640",k:[40,36],o:4},"man-playing-handball":{a:"Man Playing Handball",b:"1F93E-200D-2642-FE0F",c:"1F93E-200D-2642",k:[41,3],o:4},"woman-playing-handball":{a:"Woman Playing Handball",b:"1F93E-200D-2640-FE0F",c:"1F93E-200D-2640",k:[40,54],o:4},juggling:{a:"Juggling",b:"1F939",k:[40,26],o:4},"man-juggling":{a:"Man Juggling",b:"1F939-200D-2642-FE0F",c:"1F939-200D-2642",k:[40,20],o:4},"woman-juggling":{a:"Woman Juggling",b:"1F939-200D-2640-FE0F",c:"1F939-200D-2640",k:[40,14],o:4},person_in_lotus_position:{obsoleted_by:"1F9D8-200D-2640-FE0F",a:"Person in Lotus Position",b:"1F9D8",k:[49,31],o:5},man_in_lotus_position:{a:"Man in Lotus Position",b:"1F9D8-200D-2642-FE0F",c:"1F9D8-200D-2642",k:[49,25],o:5},woman_in_lotus_position:{obsoletes:"1F9D8",a:"Woman in Lotus Position",b:"1F9D8-200D-2640-FE0F",c:"1F9D8-200D-2640",k:[49,19],o:5},bath:{a:"Bath",b:"1F6C0",j:["clean","shower","bathroom"],k:[36,17],o:2},sleeping_accommodation:{a:"Sleeping Accommodation",b:"1F6CC",k:[36,29],o:2},people_holding_hands:{a:"People Holding Hands",b:"1F9D1-200D-1F91D-200D-1F9D1",k:[46,38],o:12},two_women_holding_hands:{a:"Two Women Holding Hands",b:"1F46D",j:["pair","friendship","couple","love","like","female","people","human"],k:[21,11],n:["women_holding_hands"],o:2},couple:{a:"Man and Woman Holding Hands",b:"1F46B",j:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],k:[20,16],n:["man_and_woman_holding_hands","woman_and_man_holding_hands"],o:2},two_men_holding_hands:{a:"Two Men Holding Hands",b:"1F46C",j:["pair","couple","love","like","bromance","friendship","people","human"],k:[20,42],n:["men_holding_hands"],o:2},couplekiss:{obsoleted_by:"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468",a:"Kiss",b:"1F48F",k:[25,25],o:2},"woman-kiss-man":{obsoletes:"1F48F",a:"Woman Kiss Man",b:"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468",c:"1F469-200D-2764-200D-1F48B-200D-1F468",k:[20,7],o:2},"man-kiss-man":{a:"Man Kiss Man",b:"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468",c:"1F468-200D-2764-200D-1F48B-200D-1F468",k:[17,21],o:2},"woman-kiss-woman":{a:"Woman Kiss Woman",b:"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469",c:"1F469-200D-2764-200D-1F48B-200D-1F469",k:[20,8],o:2},couple_with_heart:{obsoleted_by:"1F469-200D-2764-FE0F-200D-1F468",a:"Couple with Heart",b:"1F491",k:[25,27],o:2},"woman-heart-man":{obsoletes:"1F491",a:"Woman Heart Man",b:"1F469-200D-2764-FE0F-200D-1F468",c:"1F469-200D-2764-200D-1F468",k:[20,5],o:2},"man-heart-man":{a:"Man Heart Man",b:"1F468-200D-2764-FE0F-200D-1F468",c:"1F468-200D-2764-200D-1F468",k:[17,20],o:2},"woman-heart-woman":{a:"Woman Heart Woman",b:"1F469-200D-2764-FE0F-200D-1F469",c:"1F469-200D-2764-200D-1F469",k:[20,6],o:2},family:{obsoleted_by:"1F468-200D-1F469-200D-1F466",a:"Family",b:"1F46A",k:[20,15],n:["man-woman-boy"],o:2},"man-woman-boy":{obsoletes:"1F46A",a:"Man Woman Boy",b:"1F468-200D-1F469-200D-1F466",k:[15,33],n:["family"],o:2},"man-woman-girl":{a:"Man Woman Girl",b:"1F468-200D-1F469-200D-1F467",k:[15,35],o:2},"man-woman-girl-boy":{a:"Man Woman Girl Boy",b:"1F468-200D-1F469-200D-1F467-200D-1F466",k:[15,36],o:2},"man-woman-boy-boy":{a:"Man Woman Boy Boy",b:"1F468-200D-1F469-200D-1F466-200D-1F466",k:[15,34],o:2},"man-woman-girl-girl":{a:"Man Woman Girl Girl",b:"1F468-200D-1F469-200D-1F467-200D-1F467",k:[15,37],o:2},"man-man-boy":{a:"Man Man Boy",b:"1F468-200D-1F468-200D-1F466",k:[15,28],o:2},"man-man-girl":{a:"Man Man Girl",b:"1F468-200D-1F468-200D-1F467",k:[15,30],o:2},"man-man-girl-boy":{a:"Man Man Girl Boy",b:"1F468-200D-1F468-200D-1F467-200D-1F466",k:[15,31],o:2},"man-man-boy-boy":{a:"Man Man Boy Boy",b:"1F468-200D-1F468-200D-1F466-200D-1F466",k:[15,29],o:2},"man-man-girl-girl":{a:"Man Man Girl Girl",b:"1F468-200D-1F468-200D-1F467-200D-1F467",k:[15,32],o:2},"woman-woman-boy":{a:"Woman Woman Boy",b:"1F469-200D-1F469-200D-1F466",k:[18,18],o:2},"woman-woman-girl":{a:"Woman Woman Girl",b:"1F469-200D-1F469-200D-1F467",k:[18,20],o:2},"woman-woman-girl-boy":{a:"Woman Woman Girl Boy",b:"1F469-200D-1F469-200D-1F467-200D-1F466",k:[18,21],o:2},"woman-woman-boy-boy":{a:"Woman Woman Boy Boy",b:"1F469-200D-1F469-200D-1F466-200D-1F466",k:[18,19],o:2},"woman-woman-girl-girl":{a:"Woman Woman Girl Girl",b:"1F469-200D-1F469-200D-1F467-200D-1F467",k:[18,22],o:2},"man-boy":{a:"Man Boy",b:"1F468-200D-1F466",k:[15,24],o:4},"man-boy-boy":{a:"Man Boy Boy",b:"1F468-200D-1F466-200D-1F466",k:[15,23],o:4},"man-girl":{a:"Man Girl",b:"1F468-200D-1F467",k:[15,27],o:4},"man-girl-boy":{a:"Man Girl Boy",b:"1F468-200D-1F467-200D-1F466",k:[15,25],o:4},"man-girl-girl":{a:"Man Girl Girl",b:"1F468-200D-1F467-200D-1F467",k:[15,26],o:4},"woman-boy":{a:"Woman Boy",b:"1F469-200D-1F466",k:[18,14],o:4},"woman-boy-boy":{a:"Woman Boy Boy",b:"1F469-200D-1F466-200D-1F466",k:[18,13],o:4},"woman-girl":{a:"Woman Girl",b:"1F469-200D-1F467",k:[18,17],o:4},"woman-girl-boy":{a:"Woman Girl Boy",b:"1F469-200D-1F467-200D-1F466",k:[18,15],o:4},"woman-girl-girl":{a:"Woman Girl Girl",b:"1F469-200D-1F467-200D-1F467",k:[18,16],o:4},speaking_head_in_silhouette:{a:"Speaking Head in Silhouette",b:"1F5E3-FE0F",c:"1F5E3",k:[30,25],o:2},bust_in_silhouette:{a:"Bust in Silhouette",b:"1F464",j:["user","person","human"],k:[14,24],o:2},busts_in_silhouette:{a:"Busts in Silhouette",b:"1F465",j:["user","person","human","group","team"],k:[14,25],o:2},footprints:{a:"Footprints",b:"1F463",j:["feet","tracking","walking","beach"],k:[14,23],o:2}};var aliases={raised_hand:"hand",satisfied:"laughing",tshirt:"shirt",hand_with_index_and_middle_fingers_crossed:"crossed_fingers",sign_of_the_horns:"the_horns",grinning_face_with_star_eyes:"star-struck",reversed_hand_with_middle_finger_extended:"middle_finger",thumbsup:"+1",thumbsdown:"-1",punch:"facepunch",grinning_face_with_one_large_and_one_small_eye:"zany_face",shoe:"mans_shoe",smiling_face_with_smiling_eyes_and_hand_covering_mouth:"face_with_hand_over_mouth",face_with_finger_covering_closed_lips:"shushing_face",face_with_one_eyebrow_raised:"face_with_raised_eyebrow",face_with_open_mouth_vomiting:"face_vomiting",cooking:"fried_egg","flag-cn":"cn",shocked_face_with_exploding_head:"exploding_head",paw_prints:"feet","flag-de":"de",telephone:"phone","flag-es":"es",red_car:"car",flipper:"dolphin","flag-fr":"fr",uk:"gb","flag-gb":"gb",serious_face_with_symbols_covering_mouth:"face_with_symbols_on_mouth",poop:"hankey",shit:"hankey",honeybee:"bee",staff_of_aesculapius:"medical_symbol",lantern:"izakaya_lantern",open_book:"book",sailboat:"boat",knife:"hocho","flag-it":"it",heavy_exclamation_mark:"exclamation","flag-jp":"jp",envelope:"email","flag-kr":"kr",collision:"boom",pencil:"memo",waxing_gibbous_moon:"moon",mother_christmas:"mrs_claus",sun_small_cloud:"mostly_sunny",sun_behind_cloud:"barely_sunny",sun_behind_rain_cloud:"partly_sunny_rain",lightning_cloud:"lightning",tornado_cloud:"tornado","flag-ru":"ru","flag-us":"us",women_holding_hands:"two_women_holding_hands",man_and_woman_holding_hands:"couple",woman_and_man_holding_hands:"couple",men_holding_hands:"two_men_holding_hands","man-woman-boy":"family",family:"man-woman-boy"};var defaultEmojiData = {compressed:compressed,categories:categories,emojis:emojis,aliases:aliases};
|
|
5586
5647
|
|
|
5648
|
+
var makeAddNotifications = function (setNotifications, notificationTimeouts) { return function (text, type) {
|
|
5649
|
+
if (typeof text !== 'string' || (type !== 'success' && type !== 'error')) {
|
|
5650
|
+
return;
|
|
5651
|
+
}
|
|
5652
|
+
var id = uuid.v4();
|
|
5653
|
+
setNotifications(function (prevNotifications) { return __spreadArray(__spreadArray([], prevNotifications), [{ id: id, text: text, type: type }]); });
|
|
5654
|
+
var timeout = setTimeout(function () {
|
|
5655
|
+
return setNotifications(function (prevNotifications) {
|
|
5656
|
+
return prevNotifications.filter(function (notification) { return notification.id !== id; });
|
|
5657
|
+
});
|
|
5658
|
+
}, 5000);
|
|
5659
|
+
notificationTimeouts.push(timeout);
|
|
5660
|
+
}; };
|
|
5661
|
+
|
|
5662
|
+
var JUMP_MESSAGE_PAGE_SIZE = 25;
|
|
5587
5663
|
var UnMemoizedChannel = function (props) {
|
|
5588
5664
|
var propsChannel = props.channel, _a = props.EmptyPlaceholder, EmptyPlaceholder = _a === void 0 ? null : _a;
|
|
5589
5665
|
var contextChannel = useChatContext('Channel').channel;
|
|
@@ -5595,7 +5671,7 @@ var UnMemoizedChannel = function (props) {
|
|
|
5595
5671
|
var ChannelInner = function (props) {
|
|
5596
5672
|
var _a;
|
|
5597
5673
|
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, children = props.children, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _b = props.dragAndDropWindow, dragAndDropWindow = _b === void 0 ? false : _b, _c = props.emojiData, emojiData = _c === void 0 ? defaultEmojiData : _c, _d = props.LoadingErrorIndicator, LoadingErrorIndicator$1 = _d === void 0 ? LoadingErrorIndicator : _d, _e = props.LoadingIndicator, LoadingIndicator$1 = _e === void 0 ? LoadingIndicator : _e, maxNumberOfFiles = props.maxNumberOfFiles, _f = props.multipleUploads, multipleUploads = _f === void 0 ? true : _f, onMentionsClick = props.onMentionsClick, onMentionsHover = props.onMentionsHover, _g = props.optionalMessageInputProps, optionalMessageInputProps = _g === void 0 ? {} : _g, skipMessageDataMemoization = props.skipMessageDataMemoization;
|
|
5598
|
-
var _h = useChatContext('Channel'), client = _h.client, customClasses = _h.customClasses, mutes = _h.mutes, theme = _h.theme, useImageFlagEmojisOnWindows = _h.useImageFlagEmojisOnWindows;
|
|
5674
|
+
var _h = useChatContext('Channel'), client = _h.client, customClasses = _h.customClasses, latestMessageDatesByChannels = _h.latestMessageDatesByChannels, mutes = _h.mutes, theme = _h.theme, useImageFlagEmojisOnWindows = _h.useImageFlagEmojisOnWindows;
|
|
5599
5675
|
var t = useTranslationContext('Channel').t;
|
|
5600
5676
|
var _j = React.useState(channel.getConfig()), channelConfig = _j[0], setChannelConfig = _j[1];
|
|
5601
5677
|
var _k = React.useState([]), notifications = _k[0], setNotifications = _k[1];
|
|
@@ -5637,7 +5713,7 @@ var ChannelInner = function (props) {
|
|
|
5637
5713
|
};
|
|
5638
5714
|
var markReadThrottled = throttle__default['default'](markRead, 500, { leading: true, trailing: true });
|
|
5639
5715
|
var handleEvent = function (event) {
|
|
5640
|
-
var _a, _b, _c, _d;
|
|
5716
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
5641
5717
|
if (event.message) {
|
|
5642
5718
|
dispatch({
|
|
5643
5719
|
channel: channel,
|
|
@@ -5672,6 +5748,16 @@ var ChannelInner = function (props) {
|
|
|
5672
5748
|
}
|
|
5673
5749
|
}
|
|
5674
5750
|
}
|
|
5751
|
+
if (((_f = (_e = event.message) === null || _e === void 0 ? void 0 : _e.user) === null || _f === void 0 ? void 0 : _f.id) === client.userID &&
|
|
5752
|
+
((_g = event === null || event === void 0 ? void 0 : event.message) === null || _g === void 0 ? void 0 : _g.created_at) &&
|
|
5753
|
+
((_h = event === null || event === void 0 ? void 0 : event.message) === null || _h === void 0 ? void 0 : _h.cid)) {
|
|
5754
|
+
var messageDate = new Date(event.message.created_at);
|
|
5755
|
+
var cid = event.message.cid;
|
|
5756
|
+
if (!latestMessageDatesByChannels[cid] ||
|
|
5757
|
+
latestMessageDatesByChannels[cid].getTime() < messageDate.getTime()) {
|
|
5758
|
+
latestMessageDatesByChannels[cid] = messageDate;
|
|
5759
|
+
}
|
|
5760
|
+
}
|
|
5675
5761
|
}
|
|
5676
5762
|
throttledCopyStateFromChannel();
|
|
5677
5763
|
};
|
|
@@ -5733,7 +5819,7 @@ var ChannelInner = function (props) {
|
|
|
5733
5819
|
client.off('user.deleted', handleEvent);
|
|
5734
5820
|
notificationTimeouts.forEach(clearTimeout);
|
|
5735
5821
|
};
|
|
5736
|
-
}, [channel.cid]);
|
|
5822
|
+
}, [channel.cid, doMarkReadRequest]);
|
|
5737
5823
|
React.useEffect(function () {
|
|
5738
5824
|
var _a;
|
|
5739
5825
|
if (state.thread && ((_a = state.messages) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
@@ -5747,19 +5833,7 @@ var ChannelInner = function (props) {
|
|
|
5747
5833
|
}, [state.messages, state.thread]);
|
|
5748
5834
|
/** MESSAGE */
|
|
5749
5835
|
// Adds a temporary notification to message list, will be removed after 5 seconds
|
|
5750
|
-
var addNotification =
|
|
5751
|
-
if (typeof text !== 'string' || (type !== 'success' && type !== 'error')) {
|
|
5752
|
-
return;
|
|
5753
|
-
}
|
|
5754
|
-
var id = uuid.v4();
|
|
5755
|
-
setNotifications(function (prevNotifications) { return __spreadArray(__spreadArray([], prevNotifications), [{ id: id, text: text, type: type }]); });
|
|
5756
|
-
var timeout = setTimeout(function () {
|
|
5757
|
-
return setNotifications(function (prevNotifications) {
|
|
5758
|
-
return prevNotifications.filter(function (notification) { return notification.id !== id; });
|
|
5759
|
-
});
|
|
5760
|
-
}, 5000);
|
|
5761
|
-
notificationTimeouts.push(timeout);
|
|
5762
|
-
};
|
|
5836
|
+
var addNotification = makeAddNotifications(setNotifications, notificationTimeouts);
|
|
5763
5837
|
var loadMoreFinished = debounce__default['default'](function (hasMore, messages) {
|
|
5764
5838
|
if (!isMounted.current)
|
|
5765
5839
|
return;
|
|
@@ -5779,8 +5853,9 @@ var ChannelInner = function (props) {
|
|
|
5779
5853
|
if (!online.current || !window.navigator.onLine)
|
|
5780
5854
|
return [2 /*return*/, 0];
|
|
5781
5855
|
oldestMessage = (_a = state === null || state === void 0 ? void 0 : state.messages) === null || _a === void 0 ? void 0 : _a[0];
|
|
5782
|
-
if (state.loadingMore || (oldestMessage === null || oldestMessage === void 0 ? void 0 : oldestMessage.status) !== 'received')
|
|
5856
|
+
if (state.loadingMore || state.loadingMoreNewer || (oldestMessage === null || oldestMessage === void 0 ? void 0 : oldestMessage.status) !== 'received') {
|
|
5783
5857
|
return [2 /*return*/, 0];
|
|
5858
|
+
}
|
|
5784
5859
|
// initial state loads with up to 25 messages, so if less than 25 no need for additional query
|
|
5785
5860
|
if (channel.state.messages.length < 25) {
|
|
5786
5861
|
loadMoreFinished(false, channel.state.messages);
|
|
@@ -5812,6 +5887,85 @@ var ChannelInner = function (props) {
|
|
|
5812
5887
|
});
|
|
5813
5888
|
});
|
|
5814
5889
|
};
|
|
5890
|
+
var loadMoreNewer = function (limit) {
|
|
5891
|
+
if (limit === void 0) { limit = 100; }
|
|
5892
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
5893
|
+
var newestMessage, newestId, perPage, queryResponse, e_3, hasMoreNewer;
|
|
5894
|
+
var _a, _b;
|
|
5895
|
+
return __generator(this, function (_c) {
|
|
5896
|
+
switch (_c.label) {
|
|
5897
|
+
case 0:
|
|
5898
|
+
if (!online.current || !window.navigator.onLine)
|
|
5899
|
+
return [2 /*return*/, 0];
|
|
5900
|
+
newestMessage = (_a = state === null || state === void 0 ? void 0 : state.messages) === null || _a === void 0 ? void 0 : _a[((_b = state === null || state === void 0 ? void 0 : state.messages) === null || _b === void 0 ? void 0 : _b.length) - 1];
|
|
5901
|
+
if (state.loadingMore || state.loadingMoreNewer)
|
|
5902
|
+
return [2 /*return*/, 0];
|
|
5903
|
+
dispatch({ loadingMoreNewer: true, type: 'setLoadingMoreNewer' });
|
|
5904
|
+
newestId = newestMessage === null || newestMessage === void 0 ? void 0 : newestMessage.id;
|
|
5905
|
+
perPage = limit;
|
|
5906
|
+
_c.label = 1;
|
|
5907
|
+
case 1:
|
|
5908
|
+
_c.trys.push([1, 3, , 4]);
|
|
5909
|
+
return [4 /*yield*/, channel.query({
|
|
5910
|
+
messages: { id_gt: newestId, limit: perPage },
|
|
5911
|
+
watchers: { limit: perPage },
|
|
5912
|
+
})];
|
|
5913
|
+
case 2:
|
|
5914
|
+
queryResponse = _c.sent();
|
|
5915
|
+
return [3 /*break*/, 4];
|
|
5916
|
+
case 3:
|
|
5917
|
+
e_3 = _c.sent();
|
|
5918
|
+
console.warn('message pagination request failed with error', e_3);
|
|
5919
|
+
dispatch({ loadingMoreNewer: false, type: 'setLoadingMoreNewer' });
|
|
5920
|
+
return [2 /*return*/, 0];
|
|
5921
|
+
case 4:
|
|
5922
|
+
hasMoreNewer = channel.state.messages !== channel.state.latestMessages;
|
|
5923
|
+
dispatch({ hasMoreNewer: hasMoreNewer, messages: channel.state.messages, type: 'loadMoreNewerFinished' });
|
|
5924
|
+
return [2 /*return*/, queryResponse.messages.length];
|
|
5925
|
+
}
|
|
5926
|
+
});
|
|
5927
|
+
});
|
|
5928
|
+
};
|
|
5929
|
+
var jumpToMessage = function (messageId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
5930
|
+
var indexOfMessage, hasMoreMessages;
|
|
5931
|
+
return __generator(this, function (_a) {
|
|
5932
|
+
switch (_a.label) {
|
|
5933
|
+
case 0:
|
|
5934
|
+
dispatch({ loadingMore: true, type: 'setLoadingMore' });
|
|
5935
|
+
return [4 /*yield*/, channel.state.loadMessageIntoState(messageId)];
|
|
5936
|
+
case 1:
|
|
5937
|
+
_a.sent();
|
|
5938
|
+
indexOfMessage = channel.state.messages.findIndex(function (message) { return message.id === messageId; });
|
|
5939
|
+
hasMoreMessages = indexOfMessage >= Math.floor(JUMP_MESSAGE_PAGE_SIZE / 2);
|
|
5940
|
+
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
5941
|
+
dispatch({
|
|
5942
|
+
hasMoreNewer: channel.state.messages !== channel.state.latestMessages,
|
|
5943
|
+
highlightedMessageId: messageId,
|
|
5944
|
+
type: 'jumpToMessageFinished',
|
|
5945
|
+
});
|
|
5946
|
+
setTimeout(function () {
|
|
5947
|
+
dispatch({ type: 'clearHighlightedMessage' });
|
|
5948
|
+
}, 500);
|
|
5949
|
+
return [2 /*return*/];
|
|
5950
|
+
}
|
|
5951
|
+
});
|
|
5952
|
+
}); };
|
|
5953
|
+
var jumpToLatestMessage = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
5954
|
+
var hasMoreOlder;
|
|
5955
|
+
return __generator(this, function (_a) {
|
|
5956
|
+
switch (_a.label) {
|
|
5957
|
+
case 0: return [4 /*yield*/, channel.state.loadMessageIntoState('latest')];
|
|
5958
|
+
case 1:
|
|
5959
|
+
_a.sent();
|
|
5960
|
+
hasMoreOlder = channel.state.messages.length >= 25;
|
|
5961
|
+
loadMoreFinished(hasMoreOlder, channel.state.messages);
|
|
5962
|
+
dispatch({
|
|
5963
|
+
type: 'jumpToLatestMessage',
|
|
5964
|
+
});
|
|
5965
|
+
return [2 /*return*/];
|
|
5966
|
+
}
|
|
5967
|
+
});
|
|
5968
|
+
}); };
|
|
5815
5969
|
var updateMessage = function (updatedMessage) {
|
|
5816
5970
|
// add the message to the local channel state
|
|
5817
5971
|
channel.state.addMessageSorted(updatedMessage, true);
|
|
@@ -5973,13 +6127,16 @@ var ChannelInner = function (props) {
|
|
|
5973
6127
|
var onMentionsHoverOrClick = useMentionsHandlers(onMentionsHover, onMentionsClick);
|
|
5974
6128
|
var editMessage = useEditMessageHandler(doUpdateMessageRequest);
|
|
5975
6129
|
var typing = state.typing, restState = __rest(state, ["typing"]);
|
|
5976
|
-
var channelStateContextValue = useCreateChannelStateContext(__assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelCapabilitiesArray: channelCapabilitiesArray, channelConfig: channelConfig, dragAndDropWindow: dragAndDropWindow, maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, quotedMessage: quotedMessage, watcher_count: state.watcherCount }));
|
|
6130
|
+
var channelStateContextValue = useCreateChannelStateContext(__assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelCapabilitiesArray: channelCapabilitiesArray, channelConfig: channelConfig, dragAndDropWindow: dragAndDropWindow, giphyVersion: props.giphyVersion || 'fixed_height', maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, quotedMessage: quotedMessage, watcher_count: state.watcherCount }));
|
|
5977
6131
|
var channelActionContextValue = React.useMemo(function () { return ({
|
|
5978
6132
|
addNotification: addNotification,
|
|
5979
6133
|
closeThread: closeThread,
|
|
5980
6134
|
dispatch: dispatch,
|
|
5981
6135
|
editMessage: editMessage,
|
|
6136
|
+
jumpToLatestMessage: jumpToLatestMessage,
|
|
6137
|
+
jumpToMessage: jumpToMessage,
|
|
5982
6138
|
loadMore: loadMore,
|
|
6139
|
+
loadMoreNewer: loadMoreNewer,
|
|
5983
6140
|
loadMoreThread: loadMoreThread,
|
|
5984
6141
|
onMentionsClick: onMentionsHoverOrClick,
|
|
5985
6142
|
onMentionsHover: onMentionsHoverOrClick,
|
|
@@ -5990,7 +6147,7 @@ var ChannelInner = function (props) {
|
|
|
5990
6147
|
setQuotedMessage: setQuotedMessage,
|
|
5991
6148
|
skipMessageDataMemoization: skipMessageDataMemoization,
|
|
5992
6149
|
updateMessage: updateMessage,
|
|
5993
|
-
}); }, [channel.cid, loadMore, quotedMessage]);
|
|
6150
|
+
}); }, [channel.cid, loadMore, loadMoreNewer, quotedMessage, jumpToMessage, jumpToLatestMessage]);
|
|
5994
6151
|
var componentContextValue = React.useMemo(function () { return ({
|
|
5995
6152
|
Attachment: props.Attachment || Attachment,
|
|
5996
6153
|
AutocompleteSuggestionHeader: props.AutocompleteSuggestionHeader,
|
|
@@ -6080,18 +6237,24 @@ var ChannelInner = function (props) {
|
|
|
6080
6237
|
*/
|
|
6081
6238
|
var Channel = React__default['default'].memo(UnMemoizedChannel);
|
|
6082
6239
|
|
|
6240
|
+
var MenuIcon = function (_a) {
|
|
6241
|
+
var title = _a.title;
|
|
6242
|
+
var t = useTranslationContext('MenuIcon').t;
|
|
6243
|
+
return (React__default['default'].createElement("svg", { "data-testid": 'menu-icon', viewBox: '0 0 448 512', xmlns: 'http://www.w3.org/2000/svg' },
|
|
6244
|
+
React__default['default'].createElement("title", null, title !== null && title !== void 0 ? title : t('Menu')),
|
|
6245
|
+
React__default['default'].createElement("path", { d: 'M0 88C0 74.75 10.75 64 24 64H424C437.3 64 448 74.75 448 88C448 101.3 437.3 112 424 112H24C10.75 112 0 101.3 0 88zM0 248C0 234.7 10.75 224 24 224H424C437.3 224 448 234.7 448 248C448 261.3 437.3 272 424 272H24C10.75 272 0 261.3 0 248zM424 432H24C10.75 432 0 421.3 0 408C0 394.7 10.75 384 24 384H424C437.3 384 448 394.7 448 408C448 421.3 437.3 432 424 432z', fill: 'currentColor' })));
|
|
6246
|
+
};
|
|
6247
|
+
|
|
6083
6248
|
var UnMemoizedChannelHeader = function (props) {
|
|
6084
|
-
var _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, propImage = props.image, live = props.live, title = props.title;
|
|
6085
|
-
var
|
|
6249
|
+
var _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, _b = props.MenuIcon, MenuIcon$1 = _b === void 0 ? MenuIcon : _b, propImage = props.image, live = props.live, title = props.title;
|
|
6250
|
+
var _c = useChannelStateContext('ChannelHeader'), channel = _c.channel, watcher_count = _c.watcher_count;
|
|
6086
6251
|
var openMobileNav = useChatContext('ChannelHeader').openMobileNav;
|
|
6087
6252
|
var t = useTranslationContext('ChannelHeader').t;
|
|
6088
|
-
var
|
|
6253
|
+
var _d = (channel === null || channel === void 0 ? void 0 : channel.data) || {}, channelImage = _d.image, member_count = _d.member_count, name = _d.name, subtitle = _d.subtitle;
|
|
6089
6254
|
var image = propImage || channelImage;
|
|
6090
6255
|
return (React__default['default'].createElement("div", { className: 'str-chat__header-livestream' },
|
|
6091
6256
|
React__default['default'].createElement("button", { "aria-label": 'Menu', className: 'str-chat__header-hamburger', onClick: openMobileNav },
|
|
6092
|
-
React__default['default'].createElement(
|
|
6093
|
-
React__default['default'].createElement("span", { className: 'str-chat__header-hamburger--line' }),
|
|
6094
|
-
React__default['default'].createElement("span", { className: 'str-chat__header-hamburger--line' })),
|
|
6257
|
+
React__default['default'].createElement(MenuIcon$1, null)),
|
|
6095
6258
|
image && (React__default['default'].createElement(Avatar$1, { image: image, shape: 'rounded', size: (channel === null || channel === void 0 ? void 0 : channel.type) === 'commerce' ? 60 : 40 })),
|
|
6096
6259
|
React__default['default'].createElement("div", { className: 'str-chat__header-livestream-left' },
|
|
6097
6260
|
React__default['default'].createElement("p", { className: 'str-chat__header-livestream-left--title' },
|
|
@@ -6614,7 +6777,7 @@ var getDisplayImage = function (channel, currentUser) {
|
|
|
6614
6777
|
};
|
|
6615
6778
|
|
|
6616
6779
|
var ChannelPreview = function (props) {
|
|
6617
|
-
var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a;
|
|
6780
|
+
var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
|
|
6618
6781
|
var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
|
|
6619
6782
|
var _c = useTranslationContext('ChannelPreview'), t = _c.t, userLanguage = _c.userLanguage;
|
|
6620
6783
|
var _d = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _d[0], setLastMessage = _d[1];
|
|
@@ -6631,7 +6794,7 @@ var ChannelPreview = function (props) {
|
|
|
6631
6794
|
client.on('notification.mark_read', handleEvent);
|
|
6632
6795
|
return function () { return client.off('notification.mark_read', handleEvent); };
|
|
6633
6796
|
}, []);
|
|
6634
|
-
React.
|
|
6797
|
+
var refreshUnreadCount = React.useCallback(function () {
|
|
6635
6798
|
if (isActive || muted) {
|
|
6636
6799
|
setUnread(0);
|
|
6637
6800
|
}
|
|
@@ -6640,15 +6803,11 @@ var ChannelPreview = function (props) {
|
|
|
6640
6803
|
}
|
|
6641
6804
|
}, [channel, isActive, muted]);
|
|
6642
6805
|
React.useEffect(function () {
|
|
6806
|
+
refreshUnreadCount();
|
|
6643
6807
|
var handleEvent = function (event) {
|
|
6644
6808
|
if (event.message)
|
|
6645
6809
|
setLastMessage(event.message);
|
|
6646
|
-
|
|
6647
|
-
setUnread(channel.countUnread());
|
|
6648
|
-
}
|
|
6649
|
-
else {
|
|
6650
|
-
setUnread(0);
|
|
6651
|
-
}
|
|
6810
|
+
refreshUnreadCount();
|
|
6652
6811
|
};
|
|
6653
6812
|
channel.on('message.new', handleEvent);
|
|
6654
6813
|
channel.on('message.updated', handleEvent);
|
|
@@ -6658,7 +6817,7 @@ var ChannelPreview = function (props) {
|
|
|
6658
6817
|
channel.off('message.updated', handleEvent);
|
|
6659
6818
|
channel.off('message.deleted', handleEvent);
|
|
6660
6819
|
};
|
|
6661
|
-
}, [
|
|
6820
|
+
}, [refreshUnreadCount, channelUpdateCount]);
|
|
6662
6821
|
if (!Preview)
|
|
6663
6822
|
return null;
|
|
6664
6823
|
var displayImage = getDisplayImage(channel, client.user);
|
|
@@ -6668,16 +6827,14 @@ var ChannelPreview = function (props) {
|
|
|
6668
6827
|
};
|
|
6669
6828
|
|
|
6670
6829
|
var SearchInput = function (props) {
|
|
6671
|
-
var channelSearchParams = props.channelSearchParams, inputRef = props.inputRef, onSearch = props.onSearch, query = props.query, searchFunction = props.searchFunction;
|
|
6830
|
+
var channelSearchParams = props.channelSearchParams, inputRef = props.inputRef, onSearch = props.onSearch, placeholder = props.placeholder, query = props.query, searchFunction = props.searchFunction;
|
|
6672
6831
|
var t = useTranslationContext('SearchInput').t;
|
|
6673
6832
|
return (React__default['default'].createElement("input", { className: 'str-chat__channel-search-input', onChange: function (event) {
|
|
6674
6833
|
return searchFunction ? searchFunction(channelSearchParams, event) : onSearch(event);
|
|
6675
|
-
}, placeholder: t('Search'), ref: inputRef, type: 'text', value: query }));
|
|
6834
|
+
}, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : t('Search'), ref: inputRef, type: 'text', value: query }));
|
|
6676
6835
|
};
|
|
6677
6836
|
|
|
6678
|
-
var isChannel = function (output) {
|
|
6679
|
-
return output.cid != null;
|
|
6680
|
-
};
|
|
6837
|
+
var isChannel = function (output) { return output.cid != null; };
|
|
6681
6838
|
|
|
6682
6839
|
var DefaultDropdownContainer = function (props) {
|
|
6683
6840
|
var focusedUser = props.focusedUser, results = props.results, _a = props.SearchResultItem, SearchResultItem = _a === void 0 ? DefaultSearchResultItem : _a, selectResult = props.selectResult;
|
|
@@ -6748,7 +6905,7 @@ var SearchResults = function (props) {
|
|
|
6748
6905
|
};
|
|
6749
6906
|
|
|
6750
6907
|
var UnMemoizedChannelSearch = function (props) {
|
|
6751
|
-
var _a = props.channelType, channelType = _a === void 0 ? 'messaging' : _a, DropdownContainer = props.DropdownContainer, onSelectResult = props.onSelectResult, _b = props.popupResults, popupResults = _b === void 0 ? false : _b, SearchEmpty = props.SearchEmpty, _c = props.searchForChannels, searchForChannels = _c === void 0 ? false : _c, searchFunction = props.searchFunction, _d = props.SearchInput, SearchInput$1 = _d === void 0 ? SearchInput : _d, SearchLoading = props.SearchLoading, searchQueryParams = props.searchQueryParams, SearchResultItem = props.SearchResultItem, SearchResultsHeader = props.SearchResultsHeader;
|
|
6908
|
+
var _a = props.channelType, channelType = _a === void 0 ? 'messaging' : _a, DropdownContainer = props.DropdownContainer, onSelectResult = props.onSelectResult, placeholder = props.placeholder, _b = props.popupResults, popupResults = _b === void 0 ? false : _b, SearchEmpty = props.SearchEmpty, _c = props.searchForChannels, searchForChannels = _c === void 0 ? false : _c, searchFunction = props.searchFunction, _d = props.SearchInput, SearchInput$1 = _d === void 0 ? SearchInput : _d, SearchLoading = props.SearchLoading, searchQueryParams = props.searchQueryParams, SearchResultItem = props.SearchResultItem, SearchResultsHeader = props.SearchResultsHeader;
|
|
6752
6909
|
var _e = useChatContext('ChannelSearch'), client = _e.client, setActiveChannel = _e.setActiveChannel;
|
|
6753
6910
|
var _f = React.useState(''), query = _f[0], setQuery = _f[1];
|
|
6754
6911
|
var _g = React.useState([]), results = _g[0], setResults = _g[1];
|
|
@@ -6850,8 +7007,8 @@ var UnMemoizedChannelSearch = function (props) {
|
|
|
6850
7007
|
setResultsOpen: setResultsOpen,
|
|
6851
7008
|
setSearching: setSearching,
|
|
6852
7009
|
};
|
|
6853
|
-
return (React__default['default'].createElement("div", { className: 'str-chat__channel-search' },
|
|
6854
|
-
React__default['default'].createElement(SearchInput$1, { channelSearchParams: channelSearchParams, inputRef: inputRef, onSearch: onSearch, query: query, searchFunction: searchFunction }),
|
|
7010
|
+
return (React__default['default'].createElement("div", { className: 'str-chat__channel-search', "data-testid": 'channel-search' },
|
|
7011
|
+
React__default['default'].createElement(SearchInput$1, { channelSearchParams: channelSearchParams, inputRef: inputRef, onSearch: onSearch, placeholder: placeholder, query: query, searchFunction: searchFunction }),
|
|
6855
7012
|
query && (React__default['default'].createElement(SearchResults, { DropdownContainer: DropdownContainer, popupResults: popupResults, results: results, SearchEmpty: SearchEmpty, searching: searching, SearchLoading: SearchLoading, SearchResultItem: SearchResultItem, SearchResultsHeader: SearchResultsHeader, selectResult: onSelectResult || selectResult }))));
|
|
6856
7013
|
};
|
|
6857
7014
|
/**
|
|
@@ -6972,6 +7129,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
6972
7129
|
activeChannel: channel,
|
|
6973
7130
|
Avatar: Avatar$1,
|
|
6974
7131
|
channel: item,
|
|
7132
|
+
// forces the update of preview component on channel update
|
|
6975
7133
|
channelUpdateCount: channelUpdateCount,
|
|
6976
7134
|
key: item.id,
|
|
6977
7135
|
Preview: Preview,
|
|
@@ -6996,29 +7154,29 @@ var UnMemoizedChannelList = function (props) {
|
|
|
6996
7154
|
*/
|
|
6997
7155
|
var ChannelList = React__default['default'].memo(UnMemoizedChannelList);
|
|
6998
7156
|
|
|
6999
|
-
var Cancel$b="Stornieren";var Close$b="Schließen";var Delete$b="Löschen";var Delivered$b="
|
|
7157
|
+
var Cancel$b="Stornieren";var Close$b="Schließen";var Delete$b="Löschen";var Delivered$b="Zugestellt";var Flag$b="Meldung";var Menu$b="Menü";var Mute$b="Stumm schalten";var New$b="Neu";var Pin$b="Pin";var Reply$b="Antworten";var Search$b="Suche";var Send$b="Senden";var Thread$c="Thread";var Unmute$b="Stummschaltung aufheben";var Unpin$b="Pin entfernen";var live$b="live";var replyCount_one$b="1 Antwort";var replyCount_other$b="{{ count }} Antworten";var deTranslations = {"Attach files":"Dateien anhängen",Cancel:Cancel$b,"Channel Missing":"Kanal fehlt",Close:Close$b,"Close emoji picker":"Emoji-Picker schließen","Commands matching":"Übereinstimmende Befehle","Connection failure, reconnecting now...":"Verbindungsfehler, Wiederherstellung der Verbindung...",Delete:Delete$b,Delivered:Delivered$b,"Edit Message":"Nachricht bearbeiten","Edit message request failed":"Anfrage zum Bearbeiten der Nachricht fehlgeschlagen","Emoji matching":"Emoji passend","Empty message...":"Leere Nachricht...","Error adding flag":"Fehler beim Hinzufügen des Flags","Error connecting to chat, refresh the page to try again.":"Verbindungsfehler zum Chat, Aktualisiere die Seite um es erneut zu versuchen.","Error deleting message":"Fehler beim Löschen der Nachricht","Error muting a user ...":"Fehler beim Stummschalten eines Nutzers.","Error pinning message":"Fehler beim Pinnen der Nachricht","Error removing message pin":"Fehler beim Entfernen der gepinnten Nachricht","Error unmuting a user ...":"Stummschaltung des Nutzers fehlgeschlagen ...","Error uploading file":"Fehler beim Hochladen der Datei","Error uploading image":"Hochladen des Bildes fehlgeschlagen","Error · Unsent":"Fehler nicht gesendet","Error: {{ errorMessage }}":"Fehler: {{ errorMessage }}",Flag:Flag$b,"Latest Messages":"Neueste Nachrichten",Menu:Menu$b,"Message Failed · Click to try again":"Nachricht fehlgeschlagen · Klicken, um es erneut zu versuchen","Message Failed · Unauthorized":"Nachricht fehlgeschlagen · Nicht autorisiert","Message deleted":"Nachricht gelöscht","Message has been successfully flagged":"Nachricht wurde erfolgreich gemeldet","Message pinned":"Nachricht gepinnt",Mute:Mute$b,New:New$b,"New Messages!":"Neue Nachrichten!","No results found":"keine Ergebnisse gefunden","Nothing yet...":"Noch nichts...","Only visible to you":"Nur für Sie sichtbar","Open emoji picker":"Emoji-Picker öffnen","People matching":"Passende Personen","Pick your emoji":"Emoji wählen",Pin:Pin$b,"Pinned by":"Gepinnt von",Reply:Reply$b,"Reply to Message":"Auf Nachricht antworten",Search:Search$b,"Searching...":"Suchen...",Send:Send$b,"Send message request failed":"Senden der Nachrichtenanfrage fehlgeschlagen","Sending...":"Senden...","Slow Mode ON":"Slow-Mode EIN","Start of a new thread":"Einen neuen Thread beginnen","This message was deleted...":"Diese Nachricht wurde gelöscht...",Thread:Thread$c,"Type your message":"Nachricht eingeben",Unmute:Unmute$b,Unpin:Unpin$b,"Upload type: \"{{ type }}\" is not allowed":"Upload-Typ: \"{{ type }}\" ist nicht erlaubt","Wait until all attachments have uploaded":"Bitte warten, bis alle Anhänge hochgeladen wurden","You have no channels currently":"Du hast momentan noch keinen Channels","You've reached the maximum number of files":"Die maximale Dateianzahl ist erreicht",live:live$b,replyCount_one:replyCount_one$b,replyCount_other:replyCount_other$b,"this content could not be displayed":"Dieser Inhalt konnte nicht angezeigt werden","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} und {{moreCount}} Mehr","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} und {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} und {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mehr","{{ memberCount }} members":"{{ memberCount }} Mitglieder","{{ user }} has been muted":"{{ user }} wurde stummgeschaltet","{{ user }} has been unmuted":"{{ user }} wurde nicht stummgeschaltet","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Anhang..."};
|
|
7000
7158
|
|
|
7001
|
-
var Cancel$a="Cancel";var Close$a="Close";var Delete$a="Delete";var Delivered$a="Delivered";var Flag$a="Flag";var Mute$a="Mute";var New$a="New";var Pin$a="Pin";var Reply$a="Reply";var Search$a="Search";var Send$a="Send";var Thread$b="Thread";var Unmute$a="Unmute";var Unpin$a="Unpin";var live$a="live";var
|
|
7159
|
+
var Cancel$a="Cancel";var Close$a="Close";var Delete$a="Delete";var Delivered$a="Delivered";var Flag$a="Flag";var Menu$a="Menu";var Mute$a="Mute";var New$a="New";var Pin$a="Pin";var Reply$a="Reply";var Search$a="Search";var Send$a="Send";var Thread$b="Thread";var Unmute$a="Unmute";var Unpin$a="Unpin";var live$a="live";var replyCount_one$a="1 reply";var replyCount_other$a="{{ count }} replies";var enTranslations = {"Attach files":"Attach files",Cancel:Cancel$a,"Channel Missing":"Channel Missing",Close:Close$a,"Close emoji picker":"Close emoji picker","Commands matching":"Commands matching","Connection failure, reconnecting now...":"Connection failure, reconnecting now...",Delete:Delete$a,Delivered:Delivered$a,"Edit Message":"Edit Message","Edit message request failed":"Edit message request failed","Emoji matching":"Emoji matching","Empty message...":"Empty message...","Error adding flag":"Error adding flag","Error connecting to chat, refresh the page to try again.":"Error connecting to chat, refresh the page to try again.","Error deleting message":"Error deleting message","Error muting a user ...":"Error muting a user ...","Error pinning message":"Error pinning message","Error removing message pin":"Error removing message pin","Error unmuting a user ...":"Error unmuting a user ...","Error uploading file":"Error uploading file","Error uploading image":"Error uploading image","Error · Unsent":"Error · Unsent","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$a,"Latest Messages":"Latest Messages",Menu:Menu$a,"Message Failed · Click to try again":"Message Failed · Click to try again","Message Failed · Unauthorized":"Message Failed · Unauthorized","Message deleted":"Message deleted","Message has been successfully flagged":"Message has been successfully flagged","Message pinned":"Message pinned",Mute:Mute$a,New:New$a,"New Messages!":"New Messages!","No results found":"No results found","Nothing yet...":"Nothing yet...","Only visible to you":"Only visible to you","Open emoji picker":"Open emoji picker","People matching":"People matching","Pick your emoji":"Pick your emoji",Pin:Pin$a,"Pinned by":"Pinned by",Reply:Reply$a,"Reply to Message":"Reply to Message",Search:Search$a,"Searching...":"Searching...",Send:Send$a,"Send message request failed":"Send message request failed","Sending...":"Sending...","Slow Mode ON":"Slow Mode ON","Start of a new thread":"Start of a new thread","This message was deleted...":"This message was deleted...",Thread:Thread$b,"Type your message":"Type your message",Unmute:Unmute$a,Unpin:Unpin$a,"Upload type: \"{{ type }}\" is not allowed":"Upload type: \"{{ type }}\" is not allowed","Wait until all attachments have uploaded":"Wait until all attachments have uploaded","You have no channels currently":"You have no channels currently","You've reached the maximum number of files":"You've reached the maximum number of files",live:live$a,replyCount_one:replyCount_one$a,replyCount_other:replyCount_other$a,"this content could not be displayed":"this content could not be displayed","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} and {{ moreCount }} more","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, and {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} and {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} more","{{ memberCount }} members":"{{ memberCount }} members","{{ user }} has been muted":"{{ user }} has been muted","{{ user }} has been unmuted":"{{ user }} has been unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Attachment..."};
|
|
7002
7160
|
|
|
7003
|
-
var Cancel$9="Cancelar";var Close$9="Cerca";var Delete$9="Borrar";var Delivered$9="Entregado";var Flag$9="Bandera";var Mute$9="Mudo";var New$9="Nuevo";var Pin$9="Alfiler";var Reply$9="Respuesta";var Search$9="Buscar";var Send$9="Enviar";var Thread$a="Hilo";var Unmute$9="Activar sonido";var Unpin$9="Desprender";var live$9="En Vivo";var
|
|
7161
|
+
var Cancel$9="Cancelar";var Close$9="Cerca";var Delete$9="Borrar";var Delivered$9="Entregado";var Flag$9="Bandera";var Menu$9="Menú";var Mute$9="Mudo";var New$9="Nuevo";var Pin$9="Alfiler";var Reply$9="Respuesta";var Search$9="Buscar";var Send$9="Enviar";var Thread$a="Hilo";var Unmute$9="Activar sonido";var Unpin$9="Desprender";var live$9="En Vivo";var replyCount_many$4="{{ count }} respuestas";var replyCount_one$9="1 respuesta";var replyCount_other$9="{{ count }} respuestas";var esTranslations = {"Attach files":"Adjuntar archivos",Cancel:Cancel$9,"Channel Missing":"Falta canal",Close:Close$9,"Close emoji picker":"Cerrar el selector de emojis","Commands matching":"Coincidencia de comandos","Connection failure, reconnecting now...":"Fallo de conexión, reconectando ahora ...",Delete:Delete$9,Delivered:Delivered$9,"Edit Message":"Editar mensaje","Edit message request failed":"Error al editar la solicitud de mensaje","Emoji matching":"Coincidencia de emoji","Empty message...":"Mensaje vacío ...","Error adding flag":"Error al agregar la bandera","Error connecting to chat, refresh the page to try again.":"Error al conectarse al chat, actualice la página para volver a intentarlo.","Error deleting message":"Error al eliminar el mensaje","Error muting a user ...":"Error al silenciar a un usuario ...","Error pinning message":"Mensaje de error al fijar","Error removing message pin":"Error al quitar el pin del mensaje","Error unmuting a user ...":"Error al activar el silencio de un usuario ...","Error uploading file":"Error al cargar el archivo","Error uploading image":"Error subiendo imagen","Error · Unsent":"Error · No enviado","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$9,"Latest Messages":"Últimos mensajes",Menu:Menu$9,"Message Failed · Click to try again":"Mensaje fallido · Haga clic para volver a intentarlo","Message Failed · Unauthorized":"Mensaje fallido · No autorizado","Message deleted":"Mensaje borrado","Message has been successfully flagged":"El mensaje se marcó correctamente","Message pinned":"Mensaje fijado",Mute:Mute$9,New:New$9,"New Messages!":"¡Nuevos mensajes!","No results found":"No se han encontrado resultados","Nothing yet...":"Nada aún...","Only visible to you":"Solo visible para ti","Open emoji picker":"Selector de emoji abierto","People matching":"Personas que coinciden","Pick your emoji":"Elige tu emoji",Pin:Pin$9,"Pinned by":"Fijado por",Reply:Reply$9,"Reply to Message":"Responder al mensaje",Search:Search$9,"Searching...":"Buscando...",Send:Send$9,"Send message request failed":"Error al enviar la solicitud de mensaje","Sending...":"Enviando...","Slow Mode ON":"Modo lento activado","Start of a new thread":"Inicio de un nuevo hilo","This message was deleted...":"Este mensaje fue eliminado ...",Thread:Thread$a,"Type your message":"Escribe tu mensaje",Unmute:Unmute$9,Unpin:Unpin$9,"Upload type: \"{{ type }}\" is not allowed":"Tipo de carga: \"{{ type }}\" no está permitido","Wait until all attachments have uploaded":"Espere hasta que se hayan cargado todos los archivos adjuntos","You have no channels currently":"Actualmente no tienes canales","You've reached the maximum number of files":"Has alcanzado el número máximo de archivos",live:live$9,replyCount_many:replyCount_many$4,replyCount_one:replyCount_one$9,replyCount_other:replyCount_other$9,"this content could not be displayed":"este contenido no se pudo mostrar","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} y {{ moreCount }} más","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} y {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} y {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} más","{{ memberCount }} members":"{{ memberCount }} miembros","{{ user }} has been muted":"{{ user }} ha sido silenciado","{{ user }} has been unmuted":"{{ user }} se ha desactivado","{{ watcherCount }} online":"{{ watcherCount }} en línea","🏙 Attachment...":"🏙 Adjunto..."};
|
|
7004
7162
|
|
|
7005
|
-
var Cancel$8="Annuler";var Close$8="Fermer";var Delete$8="Supprimer";var Delivered$8="Publié";var Flag$8="Signaler";var Mute$8="Muet";var New$8="Nouveaux";var Pin$8="Épingle";var Reply$8="Réponse";var Search$8="Rechercher";var Send$8="Envoyer";var Thread$9="Fil de discussion";var Unmute$8="Désactiver muet";var Unpin$8="Détacher";var live$8="en direct";var
|
|
7163
|
+
var Cancel$8="Annuler";var Close$8="Fermer";var Delete$8="Supprimer";var Delivered$8="Publié";var Flag$8="Signaler";var Menu$8="Menu";var Mute$8="Muet";var New$8="Nouveaux";var Pin$8="Épingle";var Reply$8="Réponse";var Search$8="Rechercher";var Send$8="Envoyer";var Thread$9="Fil de discussion";var Unmute$8="Désactiver muet";var Unpin$8="Détacher";var live$8="en direct";var replyCount_many$3="{{ count }} réponses";var replyCount_one$8="1 réponse";var replyCount_other$8="{{ count }} réponses";var frTranslations = {"Attach files":"Pièces jointes",Cancel:Cancel$8,"Channel Missing":"Canal Manquant",Close:Close$8,"Close emoji picker":"Fermer le sélecteur d'emojis","Commands matching":"Correspondance des commandes","Connection failure, reconnecting now...":"Échec de la connexion, reconnexion en cours...",Delete:Delete$8,Delivered:Delivered$8,"Edit Message":"Éditer un message","Edit message request failed":"Échec de la demande de modification du message","Emoji matching":"Correspondance emoji","Empty message...":"Message vide...","Error adding flag":"Erreur lors de l'ajout du drapeau","Error connecting to chat, refresh the page to try again.":"Erreur de connexion au chat, rafraîchissez la page pour réessayer.","Error deleting message":"Erreur lors de la suppression du message","Error muting a user ...":"Erreur de mise en sourdine d'un utilisateur ...","Error pinning message":"Erreur d'épinglage du message","Error removing message pin":"Erreur lors de la suppression du code PIN du message","Error unmuting a user ...":"Erreur de désactivation de la fonction sourdine pour un utilisateur ...","Error uploading file":"Erreur lors du téléchargement du fichier","Error uploading image":"Erreur lors de l'envoi de l'image","Error · Unsent":"Erreur - Non envoyé","Error: {{ errorMessage }}":"Erreur : {{ errorMessage }}",Flag:Flag$8,"Latest Messages":"Derniers messages",Menu:Menu$8,"Message Failed · Click to try again":"Échec de l'envoi du message - Cliquez pour réessayer","Message Failed · Unauthorized":"Échec de l'envoi du message - Non autorisé","Message deleted":"Message supprimé","Message has been successfully flagged":"Le message a été signalé avec succès","Message pinned":"Message épinglé",Mute:Mute$8,New:New$8,"New Messages!":"Nouveaux Messages!","No results found":"Aucun résultat trouvé","Nothing yet...":"Aucun message...","Only visible to you":"Visible uniquement pour vous","Open emoji picker":"Ouvrez le sélecteur d'emoji","People matching":"Correspondance de personnes","Pick your emoji":"Choisissez votre emoji",Pin:Pin$8,"Pinned by":"Épinglé par",Reply:Reply$8,"Reply to Message":"Répondre au message",Search:Search$8,"Searching...":"Recherche...",Send:Send$8,"Send message request failed":"Échec de la demande d'envoi de message","Sending...":"Envoi en cours...","Slow Mode ON":"Mode lent activé","Start of a new thread":"Début d'un nouveau fil de discussion","This message was deleted...":"Ce message a été supprimé...",Thread:Thread$9,"Type your message":"Saisissez votre message",Unmute:Unmute$8,Unpin:Unpin$8,"Upload type: \"{{ type }}\" is not allowed":"Le type de téléchargement: \"{{ type }}\" n'est pas autorisé","Wait until all attachments have uploaded":"Attendez que toutes les pièces jointes soient téléchargées","You have no channels currently":"Vous n'avez actuellement aucun canal","You've reached the maximum number of files":"Vous avez atteint le nombre maximum de fichiers",live:live$8,replyCount_many:replyCount_many$3,replyCount_one:replyCount_one$8,replyCount_other:replyCount_other$8,"this content could not be displayed":"ce contenu n'a pu être affiché","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} et {{ moreCount }} autres","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} et {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} et {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} supplémentaires","{{ memberCount }} members":"{{ memberCount }} membres","{{ user }} has been muted":"{{ user }} a été mis en sourdine","{{ user }} has been unmuted":"{{ user }} n'est plus en sourdine","{{ watcherCount }} online":"{{ watcherCount }} en ligne","🏙 Attachment...":"🏙 Pièce jointe..."};
|
|
7006
7164
|
|
|
7007
|
-
var Cancel$7="रद्द करें";var Close$7="बंद करे";var Delete$7="डिलीट";var Delivered$7="पहुंच गया";var Flag$7="फ्लैग करे";var Mute$7="म्यूट करे";var New$7="नए";var Pin$7="पिन";var Reply$7="जवाब दे दो";var Search$7="खोज";var Send$7="भेजे";var Thread$8="रिप्लाई थ्रेड";var Unmute$7="अनम्यूट";var Unpin$7="अनपिन";var live$7="लाइव";var
|
|
7165
|
+
var Cancel$7="रद्द करें";var Close$7="बंद करे";var Delete$7="डिलीट";var Delivered$7="पहुंच गया";var Flag$7="फ्लैग करे";var Menu$7="मेन्यू";var Mute$7="म्यूट करे";var New$7="नए";var Pin$7="पिन";var Reply$7="जवाब दे दो";var Search$7="खोज";var Send$7="भेजे";var Thread$8="रिप्लाई थ्रेड";var Unmute$7="अनम्यूट";var Unpin$7="अनपिन";var live$7="लाइव";var replyCount_one$7="1 रिप्लाई";var replyCount_other$7="{{ count }} रिप्लाई";var hiTranslations = {"Attach files":"फाइल्स अटैच करे",Cancel:Cancel$7,"Channel Missing":"चैनल उपलब्ध नहीं है",Close:Close$7,"Close emoji picker":"इमोजी पिकर बंद करें","Commands matching":"मेल खाती है","Connection failure, reconnecting now...":"कनेक्शन विफल रहा, अब पुनः कनेक्ट हो रहा है ...",Delete:Delete$7,Delivered:Delivered$7,"Edit Message":"मैसेज में बदलाव करे","Edit message request failed":"संदेश संपादित करने का अनुरोध विफल रहा","Emoji matching":"इमोजी मिलान","Empty message...":"खाली संदेश ...","Error adding flag":"ध्वज जोड़ने में त्रुटि","Error connecting to chat, refresh the page to try again.":"चैट से कनेक्ट करने में त्रुटि, पेज को रिफ्रेश करें","Error deleting message":"संदेश हटाने में त्रुटि","Error muting a user ...":"यूजर को म्यूट करने का प्रयास फेल हुआ","Error pinning message":"संदेश को पिन करने में त्रुटि","Error removing message pin":"संदेश पिन निकालने में त्रुटि","Error unmuting a user ...":"यूजर को अनम्यूट करने का प्रयास फेल हुआ","Error uploading file":"फ़ाइल अपलोड करने में त्रुटि","Error uploading image":"छवि अपलोड करने में त्रुटि","Error · Unsent":"फेल","Error: {{ errorMessage }}":"फेल: {{ errorMessage }}",Flag:Flag$7,"Latest Messages":"नवीनतम संदेश",Menu:Menu$7,"Message Failed · Click to try again":"मैसेज फ़ैल - पुनः कोशिश करें","Message Failed · Unauthorized":"मैसेज फ़ैल - अनधिकृत","Message deleted":"मैसेज हटा दिया गया","Message has been successfully flagged":"मैसेज को फ्लैग कर दिया गया है","Message pinned":"संदेश पिन किया गया",Mute:Mute$7,New:New$7,"New Messages!":"नए मैसेज!","No results found":"कोई परिणाम नहीं मिला","Nothing yet...":"कोई मैसेज नहीं है","Only visible to you":"सिर्फ आपको दिखाई दे रहा है","Open emoji picker":"इमोजी पिकर खोलिये","People matching":"मेल खाते लोग","Pick your emoji":"इमोजी चूस करे",Pin:Pin$7,"Pinned by":"द्वारा पिन किया गया",Reply:Reply$7,"Reply to Message":"संदेश का जवाब दें",Search:Search$7,"Searching...":"खोज कर...",Send:Send$7,"Send message request failed":"संदेश भेजने का अनुरोध विफल रहा","Sending...":"भेजा जा रहा है","Slow Mode ON":"स्लो मोड ऑन","Start of a new thread":"एक नए थ्रेड की शुरुआत","This message was deleted...":"मैसेज हटा दिया गया",Thread:Thread$8,"Type your message":"अपना मैसेज लिखे",Unmute:Unmute$7,Unpin:Unpin$7,"Upload type: \"{{ type }}\" is not allowed":"अपलोड प्रकार: \"{{ type }}\" की अनुमति नहीं है","Wait until all attachments have uploaded":"सभी अटैचमेंट अपलोड होने तक प्रतीक्षा करें","You have no channels currently":"आपके पास कोई चैनल नहीं है","You've reached the maximum number of files":"आप अधिकतम फ़ाइलों तक पहुँच गए हैं",live:live$7,replyCount_one:replyCount_one$7,replyCount_other:replyCount_other$7,"this content could not be displayed":"यह कॉन्टेंट लोड नहीं हो पाया","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} और {{ moreCount }} और","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} और {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} और {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} और","{{ memberCount }} members":"{{ memberCount }} मेंबर्स","{{ user }} has been muted":"{{ user }} को म्यूट कर दिया गया है","{{ user }} has been unmuted":"{{ user }} को अनम्यूट कर दिया गया है","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 अटैचमेंट"};
|
|
7008
7166
|
|
|
7009
|
-
var Cancel$6="Annulla";var Close$6="Chiudi";var Delete$6="Cancella";var Delivered$6="Consegnato";var Flag$6="Segnala";var Mute$6="Silenzia";var New$6="Nuovo";var Pin$6="Pin";var Reply$6="Rispondere";var Search$6="Ricerca";var Send$6="Invia";var Thread$7="Thread";var Unmute$6="Riattiva le notifiche";var Unpin$6="Sblocca";var live$6="live";var
|
|
7167
|
+
var Cancel$6="Annulla";var Close$6="Chiudi";var Delete$6="Cancella";var Delivered$6="Consegnato";var Flag$6="Segnala";var Menu$6="Menù";var Mute$6="Silenzia";var New$6="Nuovo";var Pin$6="Pin";var Reply$6="Rispondere";var Search$6="Ricerca";var Send$6="Invia";var Thread$7="Thread";var Unmute$6="Riattiva le notifiche";var Unpin$6="Sblocca";var live$6="live";var replyCount_many$2="{{ count }} risposte";var replyCount_one$6="Una risposta";var replyCount_other$6="{{ count }} risposte";var itTranslations = {"Attach files":"Allega file",Cancel:Cancel$6,"Channel Missing":"Il canale non esiste",Close:Close$6,"Close emoji picker":"Chiudi il selettore di emoji","Commands matching":"Comandi corrispondenti","Connection failure, reconnecting now...":"Connessione fallitta, riconnessione in corso...",Delete:Delete$6,Delivered:Delivered$6,"Edit Message":"Modifica messaggio","Edit message request failed":"Richiesta di modifica del messaggio non riuscita","Emoji matching":"Abbinamento emoji","Empty message...":"Message vuoto...","Error adding flag":"Errore durante l'aggiunta del flag","Error connecting to chat, refresh the page to try again.":"Errore di connessione alla chat, aggiorna la pagina per riprovare","Error deleting message":"Errore durante l'eliminazione del messaggio","Error muting a user ...":"Errore silenziando un utente ...","Error pinning message":"Errore durante il blocco del messaggio","Error removing message pin":"Errore durante la rimozione del PIN del messaggio","Error unmuting a user ...":"Errore riattivando le notifiche per l'utente ...","Error uploading file":"Errore durante il caricamento del file","Error uploading image":"Errore durante il caricamento dell'immagine","Error · Unsent":"Errore · Non inviato","Error: {{ errorMessage }}":"Errore: {{ errorMessage }}",Flag:Flag$6,"Latest Messages":"Ultimi messaggi",Menu:Menu$6,"Message Failed · Click to try again":"Invio messaggio fallito · Clicca per riprovare","Message Failed · Unauthorized":"Invio messaggio fallito · Non autorizzato","Message deleted":"Messaggio cancellato","Message has been successfully flagged":"Il messaggio é stato segnalato con successo","Message pinned":"Messaggio bloccato",Mute:Mute$6,New:New$6,"New Messages!":"Nuovo messaggio!","No results found":"Nessun risultato trovato","Nothing yet...":"Ancora niente...","Only visible to you":"Visibile soltanto da te","Open emoji picker":"Apri il selettore dellle emoji","People matching":"Persone che corrispondono","Pick your emoji":"Scegli la tua emoji",Pin:Pin$6,"Pinned by":"Appuntato da",Reply:Reply$6,"Reply to Message":"Rispondi al messaggio",Search:Search$6,"Searching...":"Ricerca in corso ...",Send:Send$6,"Send message request failed":"Invia messaggio di richiesta non riuscito","Sending...":"Invio in corso...","Slow Mode ON":"Modalità lenta attivata","Start of a new thread":"Inizia un nuovo thread","This message was deleted...":"Questo messaggio é stato cancellato",Thread:Thread$7,"Type your message":"Scrivi il tuo messaggio",Unmute:Unmute$6,Unpin:Unpin$6,"Upload type: \"{{ type }}\" is not allowed":"Tipo di caricamento: \"{{ type }}\" non è consentito","Wait until all attachments have uploaded":"Attendi il caricamento di tutti gli allegati","You have no channels currently":"Al momento non sono presenti canali","You've reached the maximum number of files":"Hai raggiunto il numero massimo di file",live:live$6,replyCount_many:replyCount_many$2,replyCount_one:replyCount_one$6,replyCount_other:replyCount_other$6,"this content could not be displayed":"questo contenuto non puó essere mostrato","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e altri {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"+ {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} membri","{{ user }} has been muted":"{{ user }} é stato silenziato","{{ user }} has been unmuted":"Notifiche riattivate per {{ user }}","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Allegato..."};
|
|
7010
7168
|
|
|
7011
|
-
var Cancel$5="キャンセル";var Close$5="閉める";var Delete$5="消去";var Delivered$5="配信しました";var Flag$5="フラグ";var Mute$5="無音";var New$5="新しい";var Pin$5="ピン";var Reply$5="返事";var Search$5="探す";var Send$5="送信";var Thread$6="スレッド";var Unmute$5="無音を解除する";var Unpin$5="ピンを解除する";var live$5="ライブ";var
|
|
7169
|
+
var Cancel$5="キャンセル";var Close$5="閉める";var Delete$5="消去";var Delivered$5="配信しました";var Flag$5="フラグ";var Menu$5="メニュー";var Mute$5="無音";var New$5="新しい";var Pin$5="ピン";var Reply$5="返事";var Search$5="探す";var Send$5="送信";var Thread$6="スレッド";var Unmute$5="無音を解除する";var Unpin$5="ピンを解除する";var live$5="ライブ";var replyCount_one$5="1件の返信";var replyCount_other$5="{{ count }} 返信";var jaTranslations = {"Attach files":"ファイルを添付する",Cancel:Cancel$5,"Channel Missing":"チャネルがありません",Close:Close$5,"Close emoji picker":"絵文字ピッカーを閉める","Commands matching":"一致するコマンド","Connection failure, reconnecting now...":"接続が失敗しました。再接続中...",Delete:Delete$5,Delivered:Delivered$5,"Edit Message":"メッセージを編集","Edit message request failed":"メッセージの編集要求が失敗しました","Emoji matching":"絵文字マッチング","Empty message...":"空のメッセージ...","Error adding flag":"フラグを追加のエラーが発生しました","Error connecting to chat, refresh the page to try again.":"チャットへの接続ができませんでした。ページを更新してください。","Error deleting message":"メッセージを削除するエラーが発生しました","Error muting a user ...":"ユーザーを無音するエラーが発生しました...","Error pinning message":"メッセージをピンのエラーが発生しました","Error removing message pin":"メッセージのピンを削除のエラーが発生しました","Error unmuting a user ...":"ユーザーの無音解除のエラーが発生しました...","Error uploading file":"ファイルをアップロードのエラーが発生しました","Error uploading image":"画像をアップロードのエラーが発生しました","Error · Unsent":"エラー・未送信","Error: {{ errorMessage }}":"エラー: {{ errorMessage }}",Flag:Flag$5,"Latest Messages":"最新のメッセージ",Menu:Menu$5,"Message Failed · Click to try again":"メッセージが失敗しました · クリックして再試行してください","Message Failed · Unauthorized":"メッセージが失敗しました · 許可されていません","Message deleted":"メッセージが削除されました","Message has been successfully flagged":"メッセージに正常にフラグが付けられました","Message pinned":"メッセージにピンが付けられました",Mute:Mute$5,New:New$5,"New Messages!":"新しいメッセージ!","No results found":"結果が見つかりません","Nothing yet...":"まだ何もありません...","Only visible to you":"あなただけに見える","Open emoji picker":"絵文字ピッカーを開く","People matching":"一致する人","Pick your emoji":"絵文字を選んでください",Pin:Pin$5,"Pinned by":"ピンした方",Reply:Reply$5,"Reply to Message":"メッセージに返信",Search:Search$5,"Searching...":"検索中...",Send:Send$5,"Send message request failed":"メッセージ送信リクエストが失敗しました","Sending...":"送信中...","Slow Mode ON":"スローモードオン","Start of a new thread":"新しいスレッドの開始","This message was deleted...":"このメッセージは削除されました...",Thread:Thread$6,"Type your message":"メッセージを入力してください",Unmute:Unmute$5,Unpin:Unpin$5,"Upload type: \"{{ type }}\" is not allowed":"アップロードタイプ:\"{{ type }}\"は許可されていません","Wait until all attachments have uploaded":"すべての添付ファイルがアップロードされるまでお待ちください","You have no channels currently":"現在チャンネルはありません","You've reached the maximum number of files":"ファイルの最大数に達しました",live:live$5,replyCount_one:replyCount_one$5,replyCount_other:replyCount_other$5,"this content could not be displayed":"このコンテンツは表示できませんでした","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} と {{ moreCount }} 他人","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} と {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} と {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} イメージ","{{ memberCount }} members":"{{ memberCount }} メンバー","{{ user }} has been muted":"{{ user }} 無音されています","{{ user }} has been unmuted":"{{ user }} 無音されていません","{{ watcherCount }} online":"{{ watcherCount }} オンライン","🏙 Attachment...":"🏙 アタッチメント..."};
|
|
7012
7170
|
|
|
7013
|
-
var Cancel$4="취소";var Close$4="닫기";var Delete$4="삭제";var Delivered$4="배달됨";var Flag$4="플래그";var Mute$4="무음";var New$4="새로운";var Pin$4="핀";var Reply$4="답장";var Search$4="찾다";var Send$4="보내다";var Thread$5="스레드";var Unmute$4="음소거 해제";var Unpin$4="핀 해제";var live$4="라이브";var
|
|
7171
|
+
var Cancel$4="취소";var Close$4="닫기";var Delete$4="삭제";var Delivered$4="배달됨";var Flag$4="플래그";var Menu$4="메뉴";var Mute$4="무음";var New$4="새로운";var Pin$4="핀";var Reply$4="답장";var Search$4="찾다";var Send$4="보내다";var Thread$5="스레드";var Unmute$4="음소거 해제";var Unpin$4="핀 해제";var live$4="라이브";var replyCount_one$4="답장 1개";var replyCount_other$4="{{ count }} 답장";var koTranslations = {"Attach files":"파일 첨부",Cancel:Cancel$4,"Channel Missing":"채널 누락",Close:Close$4,"Close emoji picker":"이모티콘 선택기 닫기","Commands matching":"일치하는 명령","Connection failure, reconnecting now...":"연결 실패, 지금 다시 연결 중...",Delete:Delete$4,Delivered:Delivered$4,"Edit Message":"메시지 수정","Edit message request failed":"메시지 수정 요청 실패","Emoji matching":"이모티콘 매칭","Empty message...":"빈 메시지...","Error adding flag":"플래그를 추가하는 동안 오류가 발생했습니다.","Error connecting to chat, refresh the page to try again.":"채팅에 연결하는 동안 오류가 발생했습니다. 페이지를 새로고침하여 다시 시도하세요.","Error deleting message":"메시지를 삭제하는 중에 오류가 발생했습니다.","Error muting a user ...":"사용자를 음소거하는 중에 오류가 발생했습니다...","Error pinning message":"메시지를 핀하는 중에 오류가 발생했습니다.","Error removing message pin":"메시지 핀을 제거하는 중에 오류가 발생했습니다.","Error unmuting a user ...":"사용자 음소거 해제 중 오류 발생...","Error uploading file":"파일 업로드 오류","Error uploading image":"이미지를 업로드하는 동안 오류가 발생했습니다.","Error · Unsent":"오류 · 전송되지 않음","Error: {{ errorMessage }}":"오류: {{ errorMessage }}",Flag:Flag$4,"Latest Messages":"최신 메시지",Menu:Menu$4,"Message Failed · Click to try again":"메시지 실패 · 다시 시도하려면 클릭하세요.","Message Failed · Unauthorized":"메시지 실패 · 승인되지 않음","Message deleted":"메시지가 삭제되었습니다.","Message has been successfully flagged":"메시지에 플래그가 지정되었습니다.","Message pinned":"메시지 핀했습니다",Mute:Mute$4,New:New$4,"New Messages!":"새 메시지!","No results found":"검색 결과가 없습니다","Nothing yet...":"아직 아무것도...","Only visible to you":"당신만 볼 수 있습니다","Open emoji picker":"이모티콘 선택기 열기","People matching":"일치하는 사람","Pick your emoji":"이모티콘 선택",Pin:Pin$4,"Pinned by":"핀했던 분:",Reply:Reply$4,"Reply to Message":"메시지에 답장",Search:Search$4,"Searching...":"수색...",Send:Send$4,"Send message request failed":"메시지 보내기 요청 실패","Sending...":"배상중...","Slow Mode ON":"슬로우 모드 켜짐","Start of a new thread":"새 스레드의 시작","This message was deleted...":"이 메시지는 삭제되었습니다...",Thread:Thread$5,"Type your message":"메시지 입력",Unmute:Unmute$4,Unpin:Unpin$4,"Upload type: \"{{ type }}\" is not allowed":"업로드 유형: \"{{ type }}\"은(는) 허용되지 않습니다.","Wait until all attachments have uploaded":"모든 첨부 파일이 업로드될 때까지 기다립니다.","You have no channels currently":"현재 채널이 없습니다.","You've reached the maximum number of files":"최대 파일 수에 도달했습니다.",live:live$4,replyCount_one:replyCount_one$4,replyCount_other:replyCount_other$4,"this content could not be displayed":"이 콘텐츠를 표시할 수 없습니다","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} 그리고 {{ moreCount }}명 더","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} 그리고 {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} 그리고 {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }}개 더","{{ memberCount }} members":"{{ memberCount }}명","{{ user }} has been muted":"{{ user }} 음소거되었습니다","{{ user }} has been unmuted":"{{ user }} 음소거가 해제되었습니다","{{ watcherCount }} online":"{{ watcherCount }} 온라인","🏙 Attachment...":"🏙 부착..."};
|
|
7014
7172
|
|
|
7015
|
-
var Cancel$3="Annuleer";var Close$3="Sluit";var Delete$3="Verwijder";var Delivered$3="Afgeleverd";var Flag$3="Markeer";var Mute$3="Mute";var New$3="Nieuwe";var Pin$3="Pin";var Reply$3="Antwoord";var Search$3="Zoeken";var Send$3="Verstuur";var Thread$4="Draadje";var Unmute$3="Unmute";var Unpin$3="Losmaken";var live$3="live";var
|
|
7173
|
+
var Cancel$3="Annuleer";var Close$3="Sluit";var Delete$3="Verwijder";var Delivered$3="Afgeleverd";var Flag$3="Markeer";var Menu$3="Menu";var Mute$3="Mute";var New$3="Nieuwe";var Pin$3="Pin";var Reply$3="Antwoord";var Search$3="Zoeken";var Send$3="Verstuur";var Thread$4="Draadje";var Unmute$3="Unmute";var Unpin$3="Losmaken";var live$3="live";var replyCount_one$3="1 antwoord";var replyCount_other$3="{{ count }} antwoorden";var nlTranslations = {"Attach files":"Bijlage toevoegen",Cancel:Cancel$3,"Channel Missing":"Kanaal niet gevonden",Close:Close$3,"Close emoji picker":"Sluit de emoji-kiezer","Commands matching":"Bijpassende opdrachten","Connection failure, reconnecting now...":"Probleem met de verbinding, opnieuw verbinding maken...",Delete:Delete$3,Delivered:Delivered$3,"Edit Message":"Pas bericht aan","Edit message request failed":"Verzoek om bericht bewerken mislukt","Emoji matching":"Emoji-overeenkomsten","Empty message...":"Leeg bericht...","Error adding flag":"Fout bij toevoegen van vlag","Error connecting to chat, refresh the page to try again.":"Fout bij het verbinden, ververs de pagina om nogmaals te proberen","Error deleting message":"Fout bij verwijderen van bericht","Error muting a user ...":"Fout bij het muten van de gebruiker","Error pinning message":"Fout bij vastzetten van bericht","Error removing message pin":"Fout bij verwijderen van berichtpin","Error unmuting a user ...":"Fout bij het unmuten van de gebruiker","Error uploading file":"Fout bij uploaden bestand","Error uploading image":"Fout bij uploaden afbeelding","Error · Unsent":"Error: · niet verzonden","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$3,"Latest Messages":"Laatste berichten",Menu:Menu$3,"Message Failed · Click to try again":"Bericht mislukt, klik om het nogmaals te proberen","Message Failed · Unauthorized":"Bericht mislukt, ongeautoriseerd","Message deleted":"Bericht verwijderd","Message has been successfully flagged":"Bericht is succesvol gemarkeerd","Message pinned":"Bericht vastgezet",Mute:Mute$3,New:New$3,"New Messages!":"Nieuwe Berichten!","No results found":"Geen resultaten gevonden","Nothing yet...":"Nog niets ...","Only visible to you":"Alleen zichtbaar voor jou","Open emoji picker":"Open emojipicker","People matching":"Mensen die matchen","Pick your emoji":"Kies je emoji",Pin:Pin$3,"Pinned by":"Vastgemaakt door",Reply:Reply$3,"Reply to Message":"Antwoord op bericht",Search:Search$3,"Searching...":"Zoeken...",Send:Send$3,"Send message request failed":"Verzoek om bericht te verzenden mislukt","Sending...":"Aan het verzenden...","Slow Mode ON":"Langzame modus aan","Start of a new thread":"Begin van een nieuwe draadje","This message was deleted...":"Dit bericht was verwijderd",Thread:Thread$4,"Type your message":"Type je bericht",Unmute:Unmute$3,Unpin:Unpin$3,"Upload type: \"{{ type }}\" is not allowed":"Uploadtype: \"{{ type }}\" is niet toegestaan","Wait until all attachments have uploaded":"Wacht tot alle bijlagen zijn geüpload","You have no channels currently":"Er zijn geen chats beschikbaar","You've reached the maximum number of files":"Je hebt het maximale aantal bestanden bereikt",live:live$3,replyCount_one:replyCount_one$3,replyCount_other:replyCount_other$3,"this content could not be displayed":"Deze inhoud kan niet weergegeven worden","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} en {{ moreCount }} meer","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} en {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} en {{ secondUser }}","{{ imageCount }} more":"+{{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} deelnemers","{{ user }} has been muted":"{{ user }} is muted","{{ user }} has been unmuted":"{{ user }} is unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Bijlage..."};
|
|
7016
7174
|
|
|
7017
|
-
var Cancel$2="Cancelar";var Close$2="
|
|
7175
|
+
var Cancel$2="Cancelar";var Close$2="Fechar";var Delete$2="Excluir";var Delivered$2="Entregue";var Flag$2="Reportar";var Menu$2="Menu";var Mute$2="Mudo";var New$2="Novo";var Pin$2="Fixar";var Reply$2="Responder";var Search$2="Procurar";var Send$2="Enviar";var Thread$3="Fio";var Unmute$2="Ativar som";var Unpin$2="Liberar";var live$2="ao vivo";var replyCount_many$1="{{ count }} respostas";var replyCount_one$2="1 resposta";var replyCount_other$2="{{ count }} respostas";var ptTranslations = {"Attach files":"Anexar arquivos",Cancel:Cancel$2,"Channel Missing":"Canal ausente",Close:Close$2,"Close emoji picker":"Fechar seletor de emoji","Commands matching":"Comandos correspondentes","Connection failure, reconnecting now...":"Falha de conexão, reconectando agora...",Delete:Delete$2,Delivered:Delivered$2,"Edit Message":"Editar Mensagem","Edit message request failed":"O pedido de edição da mensagem falhou","Emoji matching":"Emoji correspondente","Empty message...":"Mensagem vazia...","Error adding flag":"Erro ao reportar","Error connecting to chat, refresh the page to try again.":"Erro ao conectar ao bate-papo, atualize a página para tentar novamente.","Error deleting message":"Erro ao deletar mensagem","Error muting a user ...":"Erro ao silenciar um usuário...","Error pinning message":"Erro ao fixar mensagem","Error removing message pin":"Erro ao remover o PIN da mensagem","Error unmuting a user ...":"Erro ao ativar o som de um usuário...","Error uploading file":"Erro ao enviar arquivo","Error uploading image":"Erro ao carregar a imagem","Error · Unsent":"Erro · Não enviado","Error: {{ errorMessage }}":"Erro: {{ errorMessage }}",Flag:Flag$2,"Latest Messages":"Mensagens mais recentes",Menu:Menu$2,"Message Failed · Click to try again":"A mensagem falhou · Clique para tentar novamente","Message Failed · Unauthorized":"A mensagem falhou · não autorizado","Message deleted":"Mensagem apagada","Message has been successfully flagged":"A mensagem foi reportada com sucesso","Message pinned":"Mensagem fixada",Mute:Mute$2,New:New$2,"New Messages!":"Novas mensagens!","No results found":"Nenhum resultado encontrado","Nothing yet...":"Nada ainda...","Only visible to you":"Visível apenas para você","Open emoji picker":"Abrir seletor de emoji","People matching":"Pessoas correspondentes","Pick your emoji":"Escolha o seu emoji",Pin:Pin$2,"Pinned by":"Fixado por",Reply:Reply$2,"Reply to Message":"Responder a mensagem",Search:Search$2,"Searching...":"Procurando...",Send:Send$2,"Send message request failed":"O pedido de envio de mensagem falhou","Sending...":"Enviando...","Slow Mode ON":"Modo lento LIGADO","Start of a new thread":"Início de um novo tópico","This message was deleted...":"Esta mensagem foi excluída...",Thread:Thread$3,"Type your message":"Digite sua mensagem",Unmute:Unmute$2,Unpin:Unpin$2,"Upload type: \"{{ type }}\" is not allowed":"Tipo de upload: \"{{ type }}\" não é permitido","Wait until all attachments have uploaded":"Espere até que todos os anexos tenham sido carregados","You have no channels currently":"Você não tem canais atualmente","You've reached the maximum number of files":"Você atingiu o número máximo de arquivos",live:live$2,replyCount_many:replyCount_many$1,replyCount_one:replyCount_one$2,replyCount_other:replyCount_other$2,"this content could not be displayed":"este conteúdo não pôde ser exibido","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e mais {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mais","{{ memberCount }} members":"{{ memberCount }} membros","{{ user }} has been muted":"{{ user }} foi silenciado","{{ user }} has been unmuted":"{{ user }} foi reativado","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Anexo..."};
|
|
7018
7176
|
|
|
7019
|
-
var Cancel$1="Отмена";var Close$1="Закрыть";var Delete$1="Удалить";var Delivered$1="Отправлено";var Flag$1="Пожаловаться";var Mute$1="Отключить уведомления";var New$1="Новые";var Pin$1="Штырь";var Reply$1="Отвечать";var Search$1="Поиск";var Send$1="Отправить";var Thread$2="Ветка";var Unmute$1="Включить уведомления";var Unpin$1="Открепить";var live$1="В прямом эфире";var
|
|
7177
|
+
var Cancel$1="Отмена";var Close$1="Закрыть";var Delete$1="Удалить";var Delivered$1="Отправлено";var Flag$1="Пожаловаться";var Menu$1="Меню";var Mute$1="Отключить уведомления";var New$1="Новые";var Pin$1="Штырь";var Reply$1="Отвечать";var Search$1="Поиск";var Send$1="Отправить";var Thread$2="Ветка";var Unmute$1="Включить уведомления";var Unpin$1="Открепить";var live$1="В прямом эфире";var replyCount_few="{{ count }} ответов";var replyCount_many="{{ count }} ответов";var replyCount_one$1="1 ответ";var replyCount_other$1="{{ count }} ответов";var ruTranslations = {"Attach files":"Прикрепить файлы",Cancel:Cancel$1,"Channel Missing":"Канал не найден",Close:Close$1,"Close emoji picker":"Закрыть окно выбора смайлов","Commands matching":"Соответствие команд","Connection failure, reconnecting now...":"Ошибка соединения, переподключение...",Delete:Delete$1,Delivered:Delivered$1,"Edit Message":"Редактировать сообщение","Edit message request failed":"Не удалось изменить запрос сообщения","Emoji matching":"Соответствие эмодзи","Empty message...":"Пустое сообщение...","Error adding flag":"Ошибка добавления флага","Error connecting to chat, refresh the page to try again.":"Ошибка подключения к чату, обновите страницу чтобы попробовать снова.","Error deleting message":"Ошибка при удалении сообщения","Error muting a user ...":"Ошибка отключения уведомлений от пользователя...","Error pinning message":"Сообщение об ошибке при закреплении","Error removing message pin":"Ошибка при удалении булавки сообщения","Error unmuting a user ...":"Ошибка включения уведомлений...","Error uploading file":"Ошибка при загрузке файла","Error uploading image":"Ошибка загрузки изображения","Error · Unsent":"Ошибка · Не отправлено","Error: {{ errorMessage }}":"Ошибка: {{ errorMessage }}",Flag:Flag$1,"Latest Messages":"Последние сообщения",Menu:Menu$1,"Message Failed · Click to try again":"Ошибка отправки сообщения · Нажмите чтобы повторить","Message Failed · Unauthorized":"Ошибка отправки сообщения · Неавторизованный","Message deleted":"Сообщение удалено","Message has been successfully flagged":"Жалоба на сообщение была принята","Message pinned":"Сообщение закреплено",Mute:Mute$1,New:New$1,"New Messages!":"Новые сообщения!","No results found":"результаты не найдены","Nothing yet...":"Пока ничего нет...","Only visible to you":"Только видно для вас","Open emoji picker":"Выбрать emoji","People matching":"Соответствующие люди","Pick your emoji":"Выберите свой emoji",Pin:Pin$1,"Pinned by":"Закреплено",Reply:Reply$1,"Reply to Message":"Ответить на сообщение",Search:Search$1,"Searching...":"Ищем...",Send:Send$1,"Send message request failed":"Не удалось отправить запрос на отправку сообщения","Sending...":"Отправка...","Slow Mode ON":"Медленный режим включен","Start of a new thread":"Начало новой ветки","This message was deleted...":"Сообщение было удалено...",Thread:Thread$2,"Type your message":"Ваше сообщение",Unmute:Unmute$1,Unpin:Unpin$1,"Upload type: \"{{ type }}\" is not allowed":"Тип загрузки: \"{{ type }}\" не разрешен","Wait until all attachments have uploaded":"Подождите, пока все вложения загрузятся","You have no channels currently":"У вас нет каналов в данный момент","You've reached the maximum number of files":"Вы достигли максимального количества файлов",live:live$1,replyCount_few:replyCount_few,replyCount_many:replyCount_many,replyCount_one:replyCount_one$1,replyCount_other:replyCount_other$1,"this content could not be displayed":"Этот контент не может быть отображен в данный момент","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} и {{ moreCount }} еще","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} и {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} и {{ secondUser }}","{{ imageCount }} more":"Ещё {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} члены","{{ user }} has been muted":"Вы отписались от уведомлений от {{ user }}","{{ user }} has been unmuted":"Уведомления от {{ user }} были включены","{{ watcherCount }} online":"{{ watcherCount }} в сети","🏙 Attachment...":"🏙 Вложение..."};
|
|
7020
7178
|
|
|
7021
|
-
var Cancel="İptal";var Close="Kapat";var Delete="Sil";var Delivered="İletildi";var Flag="Bayrak";var Mute="Sessiz";var New="Yeni";var Pin="Toplu iğne";var Reply="Cevapla";var Search="Arama";var Send="Gönder";var Thread$1="Konu";var Unmute="Sesini aç";var Unpin="Sabitlemeyi kaldır";var live="canlı";var
|
|
7179
|
+
var Cancel="İptal";var Close="Kapat";var Delete="Sil";var Delivered="İletildi";var Flag="Bayrak";var Menu="Menü";var Mute="Sessiz";var New="Yeni";var Pin="Toplu iğne";var Reply="Cevapla";var Search="Arama";var Send="Gönder";var Thread$1="Konu";var Unmute="Sesini aç";var Unpin="Sabitlemeyi kaldır";var live="canlı";var replyCount_one="1 cevap";var replyCount_other="{{ count }} cevaplar";var trTranslations = {"Attach files":"Dosya ekle",Cancel:Cancel,"Channel Missing":"Kanal bulunamıyor",Close:Close,"Close emoji picker":"Emoji seçiciyi kapat","Commands matching":"Eşleşen komutlar","Connection failure, reconnecting now...":"Bağlantı hatası, tekrar bağlanılıyor...",Delete:Delete,Delivered:Delivered,"Edit Message":"Mesajı Düzenle","Edit message request failed":"Mesaj düzenleme isteği başarısız oldu","Emoji matching":"Emoji eşleştirme","Empty message...":"Boş mesaj...","Error adding flag":"Bayrak eklenirken hata oluştu","Error connecting to chat, refresh the page to try again.":"Bağlantı hatası, sayfayı yenileyip tekrar deneyin.","Error deleting message":"Mesaj silinirken hata oluştu","Error muting a user ...":"Kullanıcıyı sessize alırken hata oluştu ...","Error pinning message":"Mesaj sabitlenirken hata oluştu","Error removing message pin":"Mesaj PIN'i kaldırılırken hata oluştu","Error unmuting a user ...":"Kullanıcının sesini açarken hata oluştu ...","Error uploading file":"Dosya yüklenirken hata oluştu","Error uploading image":"Resmi yüklerken hata","Error · Unsent":"Hata · Gönderilemedi","Error: {{ errorMessage }}":"Hata: {{ errorMessage }}",Flag:Flag,"Latest Messages":"Son Mesajlar",Menu:Menu,"Message Failed · Click to try again":"Mesaj Başarısız · Tekrar denemek için tıklayın","Message Failed · Unauthorized":"Mesaj Başarısız · Yetkisiz","Message deleted":"Mesaj silindi","Message has been successfully flagged":"Mesaj başarıyla bayraklandı","Message pinned":"Mesaj sabitlendi",Mute:Mute,New:New,"New Messages!":"Yeni Mesajlar!","No results found":"Sonuç bulunamadı","Nothing yet...":"Şimdilik hiçbir şey...","Only visible to you":"Sadece size görünür","Open emoji picker":"Emoji klavyesini aç","People matching":"Eşleşen kişiler","Pick your emoji":"Emoji seçin",Pin:Pin,"Pinned by":"Sabitleyen",Reply:Reply,"Reply to Message":"Mesajı Cevapla",Search:Search,"Searching...":"Aranıyor...",Send:Send,"Send message request failed":"Mesaj gönderme isteği başarısız oldu","Sending...":"Gönderiliyor...","Slow Mode ON":"Yavaş Mod Açık","Start of a new thread":"Yeni konunun başı","This message was deleted...":"Bu mesaj silindi",Thread:Thread$1,"Type your message":"Mesajınızı yazın",Unmute:Unmute,Unpin:Unpin,"Upload type: \"{{ type }}\" is not allowed":"Yükleme türü: \"{{ type }}\" izin verilmez","Wait until all attachments have uploaded":"Tüm ekler yüklenene kadar bekleyin","You have no channels currently":"Henüz kanalınız yok","You've reached the maximum number of files":"Maksimum dosya sayısına ulaştınız",live:live,replyCount_one:replyCount_one,replyCount_other:replyCount_other,"this content could not be displayed":"bu içerik gösterilemiyor","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} ve {{ moreCount }} daha","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, ve {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} ve {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} adet daha","{{ memberCount }} members":"{{ memberCount }} üyeler","{{ user }} has been muted":"{{ user }} sessize alındı","{{ user }} has been unmuted":"{{ user }} sesi açıldı","{{ watcherCount }} online":"{{ watcherCount }} çevrimiçi","🏙 Attachment...":"🏙 Ek..."};
|
|
7022
7180
|
|
|
7023
7181
|
var defaultNS = 'translation';
|
|
7024
7182
|
var defaultLng = 'en';
|
|
@@ -7026,9 +7184,9 @@ Dayjs__default['default'].extend(updateLocale__default['default']);
|
|
|
7026
7184
|
Dayjs__default['default'].updateLocale('de', {
|
|
7027
7185
|
calendar: {
|
|
7028
7186
|
lastDay: '[gestern um] LT',
|
|
7029
|
-
lastWeek: '[letzten] dddd [
|
|
7030
|
-
nextDay: '[morgen
|
|
7031
|
-
nextWeek: 'dddd [
|
|
7187
|
+
lastWeek: '[letzten] dddd [um] LT',
|
|
7188
|
+
nextDay: '[morgen um] LT',
|
|
7189
|
+
nextWeek: 'dddd [um] LT',
|
|
7032
7190
|
sameDay: '[heute um] LT',
|
|
7033
7191
|
sameElse: 'L',
|
|
7034
7192
|
},
|
|
@@ -7144,9 +7302,9 @@ Dayjs__default['default'].updateLocale('nl', {
|
|
|
7144
7302
|
Dayjs__default['default'].updateLocale('pt', {
|
|
7145
7303
|
calendar: {
|
|
7146
7304
|
lastDay: '[ontem às] LT',
|
|
7147
|
-
lastWeek: '
|
|
7305
|
+
lastWeek: 'dddd [passada às] LT',
|
|
7148
7306
|
nextDay: '[amanhã às] LT',
|
|
7149
|
-
nextWeek: 'dddd [
|
|
7307
|
+
nextWeek: 'dddd [às] LT',
|
|
7150
7308
|
sameDay: '[hoje às] LT',
|
|
7151
7309
|
sameElse: 'L',
|
|
7152
7310
|
},
|
|
@@ -7619,20 +7777,21 @@ var Streami18n = /** @class */ (function () {
|
|
|
7619
7777
|
return Streami18n;
|
|
7620
7778
|
}());
|
|
7621
7779
|
|
|
7622
|
-
var version = '
|
|
7780
|
+
var version = '8.1.0';
|
|
7623
7781
|
|
|
7624
7782
|
var useChat = function (_a) {
|
|
7625
|
-
var _b;
|
|
7626
|
-
var client = _a.client,
|
|
7627
|
-
var
|
|
7783
|
+
var _b, _c;
|
|
7784
|
+
var client = _a.client, _d = _a.defaultLanguage, defaultLanguage = _d === void 0 ? 'en' : _d, i18nInstance = _a.i18nInstance, initialNavOpen = _a.initialNavOpen;
|
|
7785
|
+
var _e = React.useState({
|
|
7628
7786
|
t: function (key) { return key; },
|
|
7629
7787
|
tDateTimeParser: function (input) { return Dayjs__default['default'](input); },
|
|
7630
7788
|
userLanguage: 'en',
|
|
7631
|
-
}), translators =
|
|
7632
|
-
var
|
|
7633
|
-
var
|
|
7634
|
-
var
|
|
7635
|
-
var
|
|
7789
|
+
}), translators = _e[0], setTranslators = _e[1];
|
|
7790
|
+
var _f = React.useState(), channel = _f[0], setChannel = _f[1];
|
|
7791
|
+
var _g = React.useState([]), mutes = _g[0], setMutes = _g[1];
|
|
7792
|
+
var _h = React.useState(initialNavOpen), navOpen = _h[0], setNavOpen = _h[1];
|
|
7793
|
+
var _j = React.useState({}), latestMessageDatesByChannels = _j[0], setLatestMessageDatesByChannels = _j[1];
|
|
7794
|
+
var clientMutes = ((_b = client.user) === null || _b === void 0 ? void 0 : _b.mutes) || [];
|
|
7636
7795
|
var closeMobileNav = function () { return setNavOpen(false); };
|
|
7637
7796
|
var openMobileNav = function () { return setTimeout(function () { return setNavOpen(true); }, 100); };
|
|
7638
7797
|
var appSettings = React.useRef(null);
|
|
@@ -7653,7 +7812,7 @@ var useChat = function (_a) {
|
|
|
7653
7812
|
}
|
|
7654
7813
|
}, [client]);
|
|
7655
7814
|
React.useEffect(function () {
|
|
7656
|
-
setMutes(clientMutes
|
|
7815
|
+
setMutes(clientMutes);
|
|
7657
7816
|
var handleEvent = function (event) {
|
|
7658
7817
|
var _a;
|
|
7659
7818
|
setMutes(((_a = event.me) === null || _a === void 0 ? void 0 : _a.mutes) || []);
|
|
@@ -7697,10 +7856,14 @@ var useChat = function (_a) {
|
|
|
7697
7856
|
});
|
|
7698
7857
|
});
|
|
7699
7858
|
}, []);
|
|
7859
|
+
React.useEffect(function () {
|
|
7860
|
+
setLatestMessageDatesByChannels({});
|
|
7861
|
+
}, [(_c = client.user) === null || _c === void 0 ? void 0 : _c.id]);
|
|
7700
7862
|
return {
|
|
7701
7863
|
channel: channel,
|
|
7702
7864
|
closeMobileNav: closeMobileNav,
|
|
7703
7865
|
getAppSettings: getAppSettings,
|
|
7866
|
+
latestMessageDatesByChannels: latestMessageDatesByChannels,
|
|
7704
7867
|
mutes: mutes,
|
|
7705
7868
|
navOpen: navOpen,
|
|
7706
7869
|
openMobileNav: openMobileNav,
|
|
@@ -7711,7 +7874,7 @@ var useChat = function (_a) {
|
|
|
7711
7874
|
|
|
7712
7875
|
var useCreateChatContext = function (value) {
|
|
7713
7876
|
var _a;
|
|
7714
|
-
var channel = value.channel, client = value.client, closeMobileNav = value.closeMobileNav, customClasses = value.customClasses, getAppSettings = value.getAppSettings, mutes = value.mutes, navOpen = value.navOpen, openMobileNav = value.openMobileNav, setActiveChannel = value.setActiveChannel, theme = value.theme, useImageFlagEmojisOnWindows = value.useImageFlagEmojisOnWindows;
|
|
7877
|
+
var channel = value.channel, client = value.client, closeMobileNav = value.closeMobileNav, customClasses = value.customClasses, getAppSettings = value.getAppSettings, latestMessageDatesByChannels = value.latestMessageDatesByChannels, mutes = value.mutes, navOpen = value.navOpen, openMobileNav = value.openMobileNav, setActiveChannel = value.setActiveChannel, theme = value.theme, useImageFlagEmojisOnWindows = value.useImageFlagEmojisOnWindows;
|
|
7715
7878
|
var channelCid = channel === null || channel === void 0 ? void 0 : channel.cid;
|
|
7716
7879
|
var clientValues = "" + client.clientID + Object.keys(client.activeChannels).length + Object.keys(client.listeners).length + client.mutedChannels.length + "\n " + ((_a = client.user) === null || _a === void 0 ? void 0 : _a.id);
|
|
7717
7880
|
var mutedUsersLength = mutes.length;
|
|
@@ -7721,6 +7884,7 @@ var useCreateChatContext = function (value) {
|
|
|
7721
7884
|
closeMobileNav: closeMobileNav,
|
|
7722
7885
|
customClasses: customClasses,
|
|
7723
7886
|
getAppSettings: getAppSettings,
|
|
7887
|
+
latestMessageDatesByChannels: latestMessageDatesByChannels,
|
|
7724
7888
|
mutes: mutes,
|
|
7725
7889
|
navOpen: navOpen,
|
|
7726
7890
|
openMobileNav: openMobileNav,
|
|
@@ -7767,7 +7931,7 @@ var useCustomStyles = function (customStyles) {
|
|
|
7767
7931
|
*/
|
|
7768
7932
|
var Chat = function (props) {
|
|
7769
7933
|
var children = props.children, client = props.client, customClasses = props.customClasses, customStyles = props.customStyles, _a = props.darkMode, darkMode = _a === void 0 ? false : _a, defaultLanguage = props.defaultLanguage, i18nInstance = props.i18nInstance, _b = props.initialNavOpen, initialNavOpen = _b === void 0 ? true : _b, _c = props.theme, theme = _c === void 0 ? 'messaging light' : _c, _d = props.useImageFlagEmojisOnWindows, useImageFlagEmojisOnWindows = _d === void 0 ? false : _d;
|
|
7770
|
-
var _e = useChat({ client: client, defaultLanguage: defaultLanguage, i18nInstance: i18nInstance, initialNavOpen: initialNavOpen }), channel = _e.channel, closeMobileNav = _e.closeMobileNav, getAppSettings = _e.getAppSettings, mutes = _e.mutes, navOpen = _e.navOpen, openMobileNav = _e.openMobileNav, setActiveChannel = _e.setActiveChannel, translators = _e.translators;
|
|
7934
|
+
var _e = useChat({ client: client, defaultLanguage: defaultLanguage, i18nInstance: i18nInstance, initialNavOpen: initialNavOpen }), channel = _e.channel, closeMobileNav = _e.closeMobileNav, getAppSettings = _e.getAppSettings, latestMessageDatesByChannels = _e.latestMessageDatesByChannels, mutes = _e.mutes, navOpen = _e.navOpen, openMobileNav = _e.openMobileNav, setActiveChannel = _e.setActiveChannel, translators = _e.translators;
|
|
7771
7935
|
useCustomStyles(darkMode ? darkModeTheme : customStyles);
|
|
7772
7936
|
var chatContextValue = useCreateChatContext({
|
|
7773
7937
|
channel: channel,
|
|
@@ -7775,6 +7939,7 @@ var Chat = function (props) {
|
|
|
7775
7939
|
closeMobileNav: closeMobileNav,
|
|
7776
7940
|
customClasses: customClasses,
|
|
7777
7941
|
getAppSettings: getAppSettings,
|
|
7942
|
+
latestMessageDatesByChannels: latestMessageDatesByChannels,
|
|
7778
7943
|
mutes: mutes,
|
|
7779
7944
|
navOpen: navOpen,
|
|
7780
7945
|
openMobileNav: openMobileNav,
|
|
@@ -7856,55 +8021,31 @@ var mousewheelListener = function (event) {
|
|
|
7856
8021
|
event.preventDefault();
|
|
7857
8022
|
}
|
|
7858
8023
|
};
|
|
7859
|
-
var calculateTopPosition = function (element) {
|
|
7860
|
-
if (element instanceof HTMLElement) {
|
|
7861
|
-
return element.offsetTop + calculateTopPosition(element.offsetParent);
|
|
7862
|
-
}
|
|
7863
|
-
return 0;
|
|
7864
|
-
};
|
|
7865
|
-
/**
|
|
7866
|
-
* Computes by recursively summing offsetTop until an element without offsetParent is reached
|
|
7867
|
-
*/
|
|
7868
|
-
var calculateOffset = function (element, scrollTop) {
|
|
7869
|
-
if (!element) {
|
|
7870
|
-
return 0;
|
|
7871
|
-
}
|
|
7872
|
-
return calculateTopPosition(element) + (element.offsetHeight - scrollTop - window.innerHeight);
|
|
7873
|
-
};
|
|
7874
8024
|
var InfiniteScroll = function (props) {
|
|
7875
|
-
var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, _b = props.hasMore, hasMore = _b === void 0 ? false : _b, _c = props.
|
|
8025
|
+
var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, _b = props.hasMore, hasMore = _b === void 0 ? false : _b, _c = props.hasMoreNewer, hasMoreNewer = _c === void 0 ? false : _c, _d = props.initialLoad, initialLoad = _d === void 0 ? true : _d, _e = props.isLoading, isLoading = _e === void 0 ? false : _e, listenToScroll = props.listenToScroll, loader = props.loader, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, _f = props.threshold, threshold = _f === void 0 ? 250 : _f, _g = props.useCapture, useCapture = _g === void 0 ? false : _g, elementProps = __rest(props, ["children", "element", "hasMore", "hasMoreNewer", "initialLoad", "isLoading", "listenToScroll", "loader", "loadMore", "loadMoreNewer", "threshold", "useCapture"]);
|
|
7876
8026
|
var scrollComponent = React.useRef();
|
|
7877
8027
|
var scrollListener = React.useCallback(function () {
|
|
7878
8028
|
var element = scrollComponent.current;
|
|
7879
|
-
if (!element)
|
|
8029
|
+
if (!element || element.offsetParent === null) {
|
|
7880
8030
|
return;
|
|
7881
|
-
var parentElement = element.parentElement;
|
|
7882
|
-
var offset = 0;
|
|
7883
|
-
var reverseOffset = 0;
|
|
7884
|
-
if (useWindow) {
|
|
7885
|
-
var doc = document.documentElement || document.body.parentNode || document.body;
|
|
7886
|
-
var scrollTop = window.pageYOffset !== undefined ? window.pageYOffset : doc.scrollTop;
|
|
7887
|
-
offset = calculateOffset(element, scrollTop);
|
|
7888
|
-
reverseOffset = scrollTop;
|
|
7889
|
-
}
|
|
7890
|
-
else if (parentElement) {
|
|
7891
|
-
offset = element.scrollHeight - parentElement.scrollTop - parentElement.clientHeight;
|
|
7892
|
-
reverseOffset = parentElement.scrollTop;
|
|
7893
8031
|
}
|
|
8032
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
8033
|
+
var parentElement = element.parentElement;
|
|
8034
|
+
var offset = element.scrollHeight - parentElement.scrollTop - parentElement.clientHeight;
|
|
8035
|
+
var reverseOffset = parentElement.scrollTop;
|
|
7894
8036
|
if (listenToScroll) {
|
|
7895
8037
|
listenToScroll(offset, reverseOffset, threshold);
|
|
7896
8038
|
}
|
|
7897
|
-
|
|
7898
|
-
if ((isReverse ? reverseOffset : offset) < Number(threshold) &&
|
|
7899
|
-
element.offsetParent !== null &&
|
|
7900
|
-
typeof loadMore === 'function' &&
|
|
7901
|
-
hasMore) {
|
|
8039
|
+
if (reverseOffset < Number(threshold) && typeof loadMore === 'function' && hasMore) {
|
|
7902
8040
|
loadMore();
|
|
7903
8041
|
}
|
|
7904
|
-
|
|
8042
|
+
if (offset < Number(threshold) && typeof loadMoreNewer === 'function' && hasMoreNewer) {
|
|
8043
|
+
loadMoreNewer();
|
|
8044
|
+
}
|
|
8045
|
+
}, [hasMore, hasMoreNewer, threshold, listenToScroll, loadMore, loadMoreNewer]);
|
|
7905
8046
|
React.useEffect(function () {
|
|
7906
8047
|
var _a;
|
|
7907
|
-
var scrollElement =
|
|
8048
|
+
var scrollElement = (_a = scrollComponent.current) === null || _a === void 0 ? void 0 : _a.parentNode;
|
|
7908
8049
|
if (isLoading || !scrollElement) {
|
|
7909
8050
|
return function () { return undefined; };
|
|
7910
8051
|
}
|
|
@@ -7917,10 +8058,10 @@ var InfiniteScroll = function (props) {
|
|
|
7917
8058
|
scrollElement.removeEventListener('scroll', scrollListener, useCapture);
|
|
7918
8059
|
scrollElement.removeEventListener('resize', scrollListener, useCapture);
|
|
7919
8060
|
};
|
|
7920
|
-
}, [initialLoad, isLoading, scrollListener, useCapture
|
|
8061
|
+
}, [initialLoad, isLoading, scrollListener, useCapture]);
|
|
7921
8062
|
React.useEffect(function () {
|
|
7922
8063
|
var _a;
|
|
7923
|
-
var scrollElement =
|
|
8064
|
+
var scrollElement = (_a = scrollComponent.current) === null || _a === void 0 ? void 0 : _a.parentNode;
|
|
7924
8065
|
if (scrollElement) {
|
|
7925
8066
|
scrollElement.addEventListener('wheel', mousewheelListener, { passive: false });
|
|
7926
8067
|
}
|
|
@@ -7929,30 +8070,17 @@ var InfiniteScroll = function (props) {
|
|
|
7929
8070
|
scrollElement.removeEventListener('wheel', mousewheelListener, useCapture);
|
|
7930
8071
|
}
|
|
7931
8072
|
};
|
|
7932
|
-
}, [useCapture
|
|
8073
|
+
}, [useCapture]);
|
|
7933
8074
|
var attributes = __assign(__assign({}, elementProps), { ref: function (element) {
|
|
7934
8075
|
scrollComponent.current = element;
|
|
7935
8076
|
} });
|
|
7936
8077
|
var childrenArray = [children];
|
|
7937
8078
|
if (isLoading && loader) {
|
|
7938
|
-
|
|
7939
|
-
childrenArray.unshift(loader);
|
|
7940
|
-
}
|
|
7941
|
-
else {
|
|
7942
|
-
childrenArray.push(loader);
|
|
7943
|
-
}
|
|
8079
|
+
childrenArray.unshift(loader);
|
|
7944
8080
|
}
|
|
7945
8081
|
return React__default['default'].createElement(element, attributes, childrenArray);
|
|
7946
8082
|
};
|
|
7947
8083
|
|
|
7948
|
-
var InfiniteScrollPaginator = function (props) {
|
|
7949
|
-
var children = props.children, hasNextPage = props.hasNextPage, _a = props.LoadingIndicator, LoadingIndicator = _a === void 0 ? reactFileUtils.LoadingIndicator : _a, loadNextPage = props.loadNextPage, refreshing = props.refreshing, reverse = props.reverse, threshold = props.threshold;
|
|
7950
|
-
return (React__default['default'].createElement(InfiniteScroll, { hasMore: hasNextPage, isLoading: refreshing, isReverse: reverse, loader: React__default['default'].createElement("div", { className: 'str-chat__infinite-scroll-paginator', key: 'loadingindicator' },
|
|
7951
|
-
React__default['default'].createElement(LoadingIndicator, null)), loadMore: loadNextPage, threshold: threshold, useWindow: false }, children));
|
|
7952
|
-
};
|
|
7953
|
-
|
|
7954
|
-
var ReverseInfiniteScroll = function (props) { return (React__default['default'].createElement(InfiniteScroll, __assign({}, props, { isReverse: true }))); };
|
|
7955
|
-
|
|
7956
8084
|
var selectColor = function (number, dark) {
|
|
7957
8085
|
var hue = number * 137.508; // use golden angle approximation
|
|
7958
8086
|
return "hsl(" + hue + "," + (dark ? '50%' : '85%') + ", " + (dark ? '75%' : '55%') + ")";
|
|
@@ -8057,7 +8185,7 @@ var MemoizedMessage = React__default['default'].memo(MessageWithContext, areMess
|
|
|
8057
8185
|
var Message = function (props) {
|
|
8058
8186
|
var closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, disableQuotedMessages = props.disableQuotedMessages, getDeleteMessageErrorNotification = props.getDeleteMessageErrorNotification, getFlagMessageErrorNotification = props.getFlagMessageErrorNotification, getFlagMessageSuccessNotification = props.getFlagMessageSuccessNotification, getMuteUserErrorNotification = props.getMuteUserErrorNotification, getMuteUserSuccessNotification = props.getMuteUserSuccessNotification, getPinMessageErrorNotification = props.getPinMessageErrorNotification, message = props.message, _a = props.onlySenderCanEdit, onlySenderCanEdit = _a === void 0 ? false : _a, propOnMentionsClick = props.onMentionsClick, propOnMentionsHover = props.onMentionsHover, propOpenThread = props.openThread, pinPermissions = props.pinPermissions, propRetrySendMessage = props.retrySendMessage;
|
|
8059
8187
|
var addNotification = useChannelActionContext('Message').addNotification;
|
|
8060
|
-
var
|
|
8188
|
+
var _b = useChannelStateContext('Message'), highlightedMessageId = _b.highlightedMessageId, mutes = _b.mutes;
|
|
8061
8189
|
var reactionSelectorRef = React.useRef(null);
|
|
8062
8190
|
var handleAction = useActionHandler(message);
|
|
8063
8191
|
var handleOpenThread = useOpenThreadHandler(message, propOpenThread);
|
|
@@ -8078,16 +8206,17 @@ var Message = function (props) {
|
|
|
8078
8206
|
getSuccessNotification: getMuteUserSuccessNotification,
|
|
8079
8207
|
notify: addNotification,
|
|
8080
8208
|
});
|
|
8081
|
-
var
|
|
8209
|
+
var _c = useMentionsHandler(message, {
|
|
8082
8210
|
onMentionsClick: propOnMentionsClick,
|
|
8083
8211
|
onMentionsHover: propOnMentionsHover,
|
|
8084
|
-
}), onMentionsClick =
|
|
8085
|
-
var
|
|
8212
|
+
}), onMentionsClick = _c.onMentionsClick, onMentionsHover = _c.onMentionsHover;
|
|
8213
|
+
var _d = usePinHandler(message, pinPermissions, {
|
|
8086
8214
|
getErrorNotification: getPinMessageErrorNotification,
|
|
8087
8215
|
notify: addNotification,
|
|
8088
|
-
}), canPin =
|
|
8089
|
-
var
|
|
8090
|
-
|
|
8216
|
+
}), canPin = _d.canPin, handlePin = _d.handlePin;
|
|
8217
|
+
var _e = useReactionClick(message, reactionSelectorRef, undefined, closeReactionSelectorOnClick), isReactionEnabled = _e.isReactionEnabled, onReactionListClick = _e.onReactionListClick, showDetailedReactions = _e.showDetailedReactions;
|
|
8218
|
+
var highlighted = highlightedMessageId === message.id;
|
|
8219
|
+
return (React__default['default'].createElement(MemoizedMessage, { additionalMessageInputProps: props.additionalMessageInputProps, canPin: canPin, customMessageActions: props.customMessageActions, disableQuotedMessages: props.disableQuotedMessages, endOfGroup: props.endOfGroup, firstOfGroup: props.firstOfGroup, formatDate: props.formatDate, groupedByUser: props.groupedByUser, groupStyles: props.groupStyles, handleAction: handleAction, handleDelete: handleDelete, handleFlag: handleFlag, handleMute: handleMute, handleOpenThread: handleOpenThread, handlePin: handlePin, handleReaction: handleReaction, handleRetry: handleRetry, highlighted: highlighted, initialMessage: props.initialMessage, isReactionEnabled: isReactionEnabled, lastReceivedId: props.lastReceivedId, message: message, Message: props.Message, messageActions: props.messageActions, messageListRect: props.messageListRect, mutes: mutes, onMentionsClickMessage: onMentionsClick, onMentionsHoverMessage: onMentionsHover, onReactionListClick: onReactionListClick, onUserClick: props.onUserClick, onUserHover: props.onUserHover, pinPermissions: props.pinPermissions, reactionSelectorRef: reactionSelectorRef, readBy: props.readBy, renderText: props.renderText, showDetailedReactions: showDetailedReactions, threadList: props.threadList, unsafeHTML: props.unsafeHTML, userRoles: userRoles }));
|
|
8091
8220
|
};
|
|
8092
8221
|
|
|
8093
8222
|
var MessageCommerceWithContext = function (props) {
|
|
@@ -8382,18 +8511,26 @@ var GiphyPreviewMessage = function (props) {
|
|
|
8382
8511
|
React__default['default'].createElement(Message, { message: message })));
|
|
8383
8512
|
};
|
|
8384
8513
|
|
|
8385
|
-
var useCallLoadMore = function (loadMore, limit) {
|
|
8386
|
-
return React.useCallback(function () {
|
|
8387
|
-
if (loadMore) {
|
|
8388
|
-
loadMore(limit);
|
|
8389
|
-
}
|
|
8390
|
-
}, [limit, loadMore]);
|
|
8391
|
-
};
|
|
8392
|
-
|
|
8393
8514
|
/* eslint-disable no-continue */
|
|
8515
|
+
/**
|
|
8516
|
+
* processMessages - Transform the input message list according to config parameters
|
|
8517
|
+
*
|
|
8518
|
+
* Inserts date separators btw. messages created on different dates or before unread incoming messages. By default:
|
|
8519
|
+
* - enabled in main message list
|
|
8520
|
+
* - disabled in virtualized message list
|
|
8521
|
+
* - disabled in thread
|
|
8522
|
+
*
|
|
8523
|
+
* Allows to filter out deleted messages, contolled by hideDeletedMessages param. This is disabled by default.
|
|
8524
|
+
*
|
|
8525
|
+
* Sets Giphy preview message for VirtualizedMessageList
|
|
8526
|
+
*
|
|
8527
|
+
* The only required params are messages and userId, the rest are config params:
|
|
8528
|
+
*
|
|
8529
|
+
* @return {StreamMessage<StreamChatGenerics>[]} Transformed list of messages
|
|
8530
|
+
*/
|
|
8394
8531
|
var processMessages = function (params) {
|
|
8395
|
-
var _a, _b
|
|
8396
|
-
var
|
|
8532
|
+
var _a, _b;
|
|
8533
|
+
var enableDateSeparator = params.enableDateSeparator, hideDeletedMessages = params.hideDeletedMessages, hideNewMessageSeparator = params.hideNewMessageSeparator, lastRead = params.lastRead, messages = params.messages, setGiphyPreviewMessage = params.setGiphyPreviewMessage, userId = params.userId;
|
|
8397
8534
|
var unread = false;
|
|
8398
8535
|
var ephemeralMessagePresent = false;
|
|
8399
8536
|
var lastDateSeparator;
|
|
@@ -8403,28 +8540,21 @@ var processMessages = function (params) {
|
|
|
8403
8540
|
if (hideDeletedMessages && message.type === 'deleted') {
|
|
8404
8541
|
continue;
|
|
8405
8542
|
}
|
|
8406
|
-
if (
|
|
8407
|
-
setGiphyPreviewMessage &&
|
|
8408
|
-
message.type === 'ephemeral' &&
|
|
8409
|
-
message.command === 'giphy') {
|
|
8543
|
+
if (setGiphyPreviewMessage && message.type === 'ephemeral' && message.command === 'giphy') {
|
|
8410
8544
|
ephemeralMessagePresent = true;
|
|
8411
8545
|
setGiphyPreviewMessage(message);
|
|
8412
8546
|
continue;
|
|
8413
8547
|
}
|
|
8414
8548
|
var messageDate = (message.created_at && isDate(message.created_at) && message.created_at.toDateString()) || '';
|
|
8415
|
-
var prevMessageDate = messageDate;
|
|
8416
8549
|
var previousMessage = messages[i - 1];
|
|
8417
|
-
|
|
8418
|
-
|
|
8419
|
-
!threadList &&
|
|
8420
|
-
previousMessage.created_at &&
|
|
8421
|
-
isDate(previousMessage.created_at)) {
|
|
8550
|
+
var prevMessageDate = messageDate;
|
|
8551
|
+
if (enableDateSeparator && (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.created_at) && isDate(previousMessage.created_at)) {
|
|
8422
8552
|
prevMessageDate = previousMessage.created_at.toDateString();
|
|
8423
8553
|
}
|
|
8424
|
-
if (!unread && !hideNewMessageSeparator
|
|
8554
|
+
if (!unread && !hideNewMessageSeparator) {
|
|
8425
8555
|
unread = (lastRead && message.created_at && new Date(lastRead) < message.created_at) || false;
|
|
8426
8556
|
// do not show date separator for current user's messages
|
|
8427
|
-
if (
|
|
8557
|
+
if (enableDateSeparator && unread && ((_a = message.user) === null || _a === void 0 ? void 0 : _a.id) !== userId) {
|
|
8428
8558
|
newMessages.push({
|
|
8429
8559
|
customType: 'message.date',
|
|
8430
8560
|
date: message.created_at,
|
|
@@ -8433,14 +8563,14 @@ var processMessages = function (params) {
|
|
|
8433
8563
|
});
|
|
8434
8564
|
}
|
|
8435
8565
|
}
|
|
8436
|
-
if (
|
|
8437
|
-
|
|
8438
|
-
|
|
8439
|
-
|
|
8566
|
+
if (enableDateSeparator &&
|
|
8567
|
+
(i === 0 || // always put date separator before the first message
|
|
8568
|
+
messageDate !== prevMessageDate || // add date separator btw. 2 messages created on different date
|
|
8569
|
+
// if hiding deleted messages replace the previous deleted message(s) with A separator if the last rendered message was created on different date
|
|
8440
8570
|
(hideDeletedMessages &&
|
|
8441
|
-
(
|
|
8571
|
+
(previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.type) === 'deleted' &&
|
|
8442
8572
|
lastDateSeparator !== messageDate)) &&
|
|
8443
|
-
((
|
|
8573
|
+
((_b = newMessages === null || newMessages === void 0 ? void 0 : newMessages[newMessages.length - 1]) === null || _b === void 0 ? void 0 : _b.customType) !== 'message.date' // do not show two date separators in a row)
|
|
8444
8574
|
) {
|
|
8445
8575
|
lastDateSeparator = messageDate;
|
|
8446
8576
|
newMessages.push({
|
|
@@ -8454,8 +8584,8 @@ var processMessages = function (params) {
|
|
|
8454
8584
|
}
|
|
8455
8585
|
}
|
|
8456
8586
|
// clean up the giphy preview component state after a Cancel action
|
|
8457
|
-
if (
|
|
8458
|
-
setGiphyPreviewMessage
|
|
8587
|
+
if (setGiphyPreviewMessage && !ephemeralMessagePresent) {
|
|
8588
|
+
setGiphyPreviewMessage(undefined);
|
|
8459
8589
|
}
|
|
8460
8590
|
return newMessages;
|
|
8461
8591
|
};
|
|
@@ -8530,7 +8660,6 @@ var insertIntro = function (messages, headerPosition) {
|
|
|
8530
8660
|
newMessages.push(intro);
|
|
8531
8661
|
return newMessages;
|
|
8532
8662
|
}
|
|
8533
|
-
continue;
|
|
8534
8663
|
}
|
|
8535
8664
|
else {
|
|
8536
8665
|
newMessages.splice(i + 1, 0, intro);
|
|
@@ -8580,19 +8709,19 @@ var getGroupStyles = function (message, previousMessage, nextMessage, noGroupByU
|
|
|
8580
8709
|
};
|
|
8581
8710
|
|
|
8582
8711
|
var useEnrichedMessages = function (args) {
|
|
8583
|
-
var channel = args.channel, disableDateSeparator = args.disableDateSeparator, groupStyles = args.groupStyles, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, messages = args.messages, noGroupByUser = args.noGroupByUser
|
|
8712
|
+
var channel = args.channel, disableDateSeparator = args.disableDateSeparator, groupStyles = args.groupStyles, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, messages = args.messages, noGroupByUser = args.noGroupByUser;
|
|
8584
8713
|
var client = useChatContext('useEnrichedMessages').client;
|
|
8585
8714
|
var HeaderComponent = useComponentContext('useEnrichedMessages').HeaderComponent;
|
|
8586
8715
|
var lastRead = React.useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
|
|
8587
|
-
var
|
|
8716
|
+
var enableDateSeparator = !disableDateSeparator;
|
|
8717
|
+
var messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator
|
|
8588
8718
|
? messages
|
|
8589
8719
|
: processMessages({
|
|
8590
|
-
|
|
8720
|
+
enableDateSeparator: enableDateSeparator,
|
|
8591
8721
|
hideDeletedMessages: hideDeletedMessages,
|
|
8592
8722
|
hideNewMessageSeparator: hideNewMessageSeparator,
|
|
8593
8723
|
lastRead: lastRead,
|
|
8594
8724
|
messages: messages,
|
|
8595
|
-
threadList: threadList,
|
|
8596
8725
|
userId: client.userID || '',
|
|
8597
8726
|
});
|
|
8598
8727
|
if (HeaderComponent) {
|
|
@@ -8651,7 +8780,7 @@ var useMessageListElements = function (props) {
|
|
|
8651
8780
|
}
|
|
8652
8781
|
var groupStyles = messageGroupStyles[message.id] || '';
|
|
8653
8782
|
var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--" + groupStyles;
|
|
8654
|
-
return (React__default['default'].createElement("li", { className: messageClass, "data-testid": messageClass, key: message.id || message.created_at, onLoadCapture: onMessageLoadCaptured },
|
|
8783
|
+
return (React__default['default'].createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass, key: message.id || message.created_at, onLoadCapture: onMessageLoadCaptured },
|
|
8655
8784
|
React__default['default'].createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [], threadList: threadList }, internalMessageProps))));
|
|
8656
8785
|
});
|
|
8657
8786
|
}, [
|
|
@@ -8723,7 +8852,7 @@ function useMessageListScrollManager(params) {
|
|
|
8723
8852
|
}
|
|
8724
8853
|
|
|
8725
8854
|
var useScrollLocationLogic = function (params) {
|
|
8726
|
-
var _a = params.messages, messages = _a === void 0 ? [] : _a, _b = params.scrolledUpThreshold, scrolledUpThreshold = _b === void 0 ? 200 : _b;
|
|
8855
|
+
var _a = params.messages, messages = _a === void 0 ? [] : _a, _b = params.scrolledUpThreshold, scrolledUpThreshold = _b === void 0 ? 200 : _b, hasMoreNewer = params.hasMoreNewer, suppressAutoscroll = params.suppressAutoscroll;
|
|
8727
8856
|
var _c = React.useState(false), hasNewMessages = _c[0], setHasNewMessages = _c[1];
|
|
8728
8857
|
var _d = React.useState(), wrapperRect = _d[0], setWrapperRect = _d[1];
|
|
8729
8858
|
var closeToBottom = React.useRef(false);
|
|
@@ -8731,8 +8860,9 @@ var useScrollLocationLogic = function (params) {
|
|
|
8731
8860
|
var listRef = React.useRef(null);
|
|
8732
8861
|
var scrollToBottom = React.useCallback(function () {
|
|
8733
8862
|
var _a, _b;
|
|
8734
|
-
if (!((_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo))
|
|
8863
|
+
if (!((_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo) || hasMoreNewer || suppressAutoscroll) {
|
|
8735
8864
|
return;
|
|
8865
|
+
}
|
|
8736
8866
|
(_b = listRef.current) === null || _b === void 0 ? void 0 : _b.scrollTo({
|
|
8737
8867
|
top: listRef.current.scrollHeight,
|
|
8738
8868
|
});
|
|
@@ -8744,16 +8874,19 @@ var useScrollLocationLogic = function (params) {
|
|
|
8744
8874
|
top: listRef.current.scrollHeight,
|
|
8745
8875
|
});
|
|
8746
8876
|
}, 200);
|
|
8747
|
-
}, [listRef]);
|
|
8877
|
+
}, [listRef, hasMoreNewer, suppressAutoscroll]);
|
|
8748
8878
|
React.useLayoutEffect(function () {
|
|
8749
8879
|
if (listRef === null || listRef === void 0 ? void 0 : listRef.current) {
|
|
8750
8880
|
setWrapperRect(listRef.current.getBoundingClientRect());
|
|
8751
8881
|
scrollToBottom();
|
|
8752
8882
|
}
|
|
8753
|
-
}, [listRef]);
|
|
8883
|
+
}, [listRef, hasMoreNewer]);
|
|
8754
8884
|
var updateScrollTop = useMessageListScrollManager({
|
|
8755
8885
|
messages: messages,
|
|
8756
|
-
onScrollBy: function (scrollBy) {
|
|
8886
|
+
onScrollBy: function (scrollBy) {
|
|
8887
|
+
var _a;
|
|
8888
|
+
(_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollBy({ top: scrollBy });
|
|
8889
|
+
},
|
|
8757
8890
|
scrollContainerMeasures: function () {
|
|
8758
8891
|
var _a, _b;
|
|
8759
8892
|
return ({
|
|
@@ -8811,12 +8944,12 @@ var UnMemoizedMessageNotification = function (props) {
|
|
|
8811
8944
|
var MessageNotification = React__default['default'].memo(UnMemoizedMessageNotification);
|
|
8812
8945
|
|
|
8813
8946
|
var MessageListNotifications = function (props) {
|
|
8814
|
-
var hasNewMessages = props.hasNewMessages, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
|
|
8947
|
+
var hasNewMessages = props.hasNewMessages, isNotAtLatestMessageSet = props.isNotAtLatestMessageSet, MessageNotification = props.MessageNotification, notifications = props.notifications, scrollToBottom = props.scrollToBottom;
|
|
8815
8948
|
var t = useTranslationContext('MessageListNotifications').t;
|
|
8816
8949
|
return (React__default['default'].createElement("div", { className: 'str-chat__list-notifications' },
|
|
8817
8950
|
notifications.map(function (notification) { return (React__default['default'].createElement(CustomNotification, { active: true, key: notification.id, type: notification.type }, notification.text)); }),
|
|
8818
8951
|
React__default['default'].createElement(ConnectionStatus, null),
|
|
8819
|
-
React__default['default'].createElement(MessageNotification, { onClick: scrollToBottom, showNotification: hasNewMessages }, t('New Messages!'))));
|
|
8952
|
+
React__default['default'].createElement(MessageNotification, { onClick: scrollToBottom, showNotification: hasNewMessages || isNotAtLatestMessageSet }, isNotAtLatestMessageSet ? t('Latest Messages') : t('New Messages!'))));
|
|
8820
8953
|
};
|
|
8821
8954
|
|
|
8822
8955
|
/**
|
|
@@ -8860,22 +8993,19 @@ var UnMemoizedTypingIndicator = function (props) {
|
|
|
8860
8993
|
};
|
|
8861
8994
|
var TypingIndicator = React__default['default'].memo(UnMemoizedTypingIndicator);
|
|
8862
8995
|
|
|
8863
|
-
var useInternalInfiniteScrollProps = function (props) {
|
|
8864
|
-
var _a = useComponentContext('useInternalInfiniteScrollProps').LoadingIndicator, LoadingIndicator$1 = _a === void 0 ? LoadingIndicator : _a;
|
|
8865
|
-
return __assign({ hasMore: props.hasMore, isLoading: props.loadingMore, loader: (React__default['default'].createElement(Center, { key: 'loadingindicator' },
|
|
8866
|
-
React__default['default'].createElement(LoadingIndicator$1, { size: 20 }))), loadMore: useCallLoadMore(props.loadMore, props.messageLimit || 100) }, props.internalInfiniteScrollProps);
|
|
8867
|
-
};
|
|
8868
8996
|
var MessageListWithContext = function (props) {
|
|
8869
8997
|
var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, groupStyles = props.groupStyles, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
8870
8998
|
_h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
8871
|
-
returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read;
|
|
8999
|
+
returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read, _l = props.messageLimit, messageLimit = _l === void 0 ? 100 : _l, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _m = props.hasMoreNewer, hasMoreNewer = _m === void 0 ? false : _m, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _o = props.jumpToLatestMessage, jumpToLatestMessage = _o === void 0 ? function () { return Promise.resolve(); } : _o;
|
|
8872
9000
|
var customClasses = useChatContext('MessageList').customClasses;
|
|
8873
|
-
var
|
|
8874
|
-
var
|
|
9001
|
+
var _p = useComponentContext('MessageList'), _q = _p.EmptyStateIndicator, EmptyStateIndicator$1 = _q === void 0 ? EmptyStateIndicator : _q, _r = _p.MessageListNotifications, MessageListNotifications$1 = _r === void 0 ? MessageListNotifications : _r, _s = _p.MessageNotification, MessageNotification$1 = _s === void 0 ? MessageNotification : _s, _t = _p.TypingIndicator, TypingIndicator$1 = _t === void 0 ? TypingIndicator : _t;
|
|
9002
|
+
var _u = useScrollLocationLogic({
|
|
9003
|
+
hasMoreNewer: hasMoreNewer,
|
|
8875
9004
|
messages: messages,
|
|
8876
9005
|
scrolledUpThreshold: props.scrolledUpThreshold,
|
|
8877
|
-
|
|
8878
|
-
|
|
9006
|
+
suppressAutoscroll: suppressAutoscroll,
|
|
9007
|
+
}), hasNewMessages = _u.hasNewMessages, listRef = _u.listRef, onMessageLoadCaptured = _u.onMessageLoadCaptured, onScroll = _u.onScroll, scrollToBottom = _u.scrollToBottom, wrapperRect = _u.wrapperRect;
|
|
9008
|
+
var _v = useEnrichedMessages({
|
|
8879
9009
|
channel: channel,
|
|
8880
9010
|
disableDateSeparator: disableDateSeparator,
|
|
8881
9011
|
groupStyles: groupStyles,
|
|
@@ -8884,8 +9014,7 @@ var MessageListWithContext = function (props) {
|
|
|
8884
9014
|
hideNewMessageSeparator: hideNewMessageSeparator,
|
|
8885
9015
|
messages: messages,
|
|
8886
9016
|
noGroupByUser: noGroupByUser,
|
|
8887
|
-
|
|
8888
|
-
}), messageGroupStyles = _s.messageGroupStyles, enrichedMessages = _s.messages;
|
|
9017
|
+
}), messageGroupStyles = _v.messageGroupStyles, enrichedMessages = _v.messages;
|
|
8889
9018
|
var elements = useMessageListElements({
|
|
8890
9019
|
enrichedMessages: enrichedMessages,
|
|
8891
9020
|
internalMessageProps: {
|
|
@@ -8920,15 +9049,50 @@ var MessageListWithContext = function (props) {
|
|
|
8920
9049
|
returnAllReadData: returnAllReadData,
|
|
8921
9050
|
threadList: threadList,
|
|
8922
9051
|
});
|
|
8923
|
-
var
|
|
9052
|
+
var _w = useComponentContext('useInternalInfiniteScrollProps').LoadingIndicator, LoadingIndicator$1 = _w === void 0 ? LoadingIndicator : _w;
|
|
8924
9053
|
var messageListClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.messageList) || 'str-chat__list';
|
|
8925
9054
|
var threadListClass = threadList ? (customClasses === null || customClasses === void 0 ? void 0 : customClasses.threadList) || 'str-chat__list--thread' : '';
|
|
9055
|
+
var loadMore = React__default['default'].useCallback(function () {
|
|
9056
|
+
if (loadMoreCallback) {
|
|
9057
|
+
loadMoreCallback(messageLimit);
|
|
9058
|
+
}
|
|
9059
|
+
}, [loadMoreCallback, messageLimit]);
|
|
9060
|
+
var loadMoreNewer = React__default['default'].useCallback(function () {
|
|
9061
|
+
if (loadMoreNewerCallback) {
|
|
9062
|
+
loadMoreNewerCallback(messageLimit);
|
|
9063
|
+
}
|
|
9064
|
+
}, [loadMoreNewerCallback, messageLimit]);
|
|
9065
|
+
var scrollToBottomFromNotification = React__default['default'].useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
9066
|
+
return __generator(this, function (_a) {
|
|
9067
|
+
switch (_a.label) {
|
|
9068
|
+
case 0:
|
|
9069
|
+
if (!hasMoreNewer) return [3 /*break*/, 2];
|
|
9070
|
+
return [4 /*yield*/, jumpToLatestMessage()];
|
|
9071
|
+
case 1:
|
|
9072
|
+
_a.sent();
|
|
9073
|
+
return [3 /*break*/, 3];
|
|
9074
|
+
case 2:
|
|
9075
|
+
scrollToBottom();
|
|
9076
|
+
_a.label = 3;
|
|
9077
|
+
case 3: return [2 /*return*/];
|
|
9078
|
+
}
|
|
9079
|
+
});
|
|
9080
|
+
}); }, [scrollToBottom, hasMoreNewer]);
|
|
9081
|
+
var ulRef = React__default['default'].useRef(null);
|
|
9082
|
+
React__default['default'].useLayoutEffect(function () {
|
|
9083
|
+
var _a;
|
|
9084
|
+
if (highlightedMessageId) {
|
|
9085
|
+
var element = (_a = ulRef.current) === null || _a === void 0 ? void 0 : _a.querySelector("[data-message-id='" + highlightedMessageId + "']");
|
|
9086
|
+
element === null || element === void 0 ? void 0 : element.scrollIntoView({ block: 'center' });
|
|
9087
|
+
}
|
|
9088
|
+
}, [highlightedMessageId]);
|
|
8926
9089
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
8927
|
-
React__default['default'].createElement("div", { className: messageListClass + " " + threadListClass, onScroll: onScroll, ref: listRef }, !elements.length ? (React__default['default'].createElement(EmptyStateIndicator$1, { listType: 'message' })) : (React__default['default'].createElement(InfiniteScroll, __assign({ className: 'str-chat__reverse-infinite-scroll', "data-testid": 'reverse-infinite-scroll',
|
|
8928
|
-
|
|
9090
|
+
React__default['default'].createElement("div", { className: messageListClass + " " + threadListClass, onScroll: onScroll, ref: listRef }, !elements.length ? (React__default['default'].createElement(EmptyStateIndicator$1, { listType: 'message' })) : (React__default['default'].createElement(InfiniteScroll, __assign({ className: 'str-chat__reverse-infinite-scroll', "data-testid": 'reverse-infinite-scroll', hasMore: props.hasMore, hasMoreNewer: props.hasMoreNewer, isLoading: props.loadingMore, loader: React__default['default'].createElement(Center, { key: 'loadingindicator' },
|
|
9091
|
+
React__default['default'].createElement(LoadingIndicator$1, { size: 20 })), loadMore: loadMore, loadMoreNewer: loadMoreNewer }, props.internalInfiniteScrollProps),
|
|
9092
|
+
React__default['default'].createElement("ul", { className: 'str-chat__ul', ref: ulRef }, elements),
|
|
8929
9093
|
React__default['default'].createElement(TypingIndicator$1, { threadList: threadList }),
|
|
8930
9094
|
React__default['default'].createElement("div", { key: 'bottom' })))),
|
|
8931
|
-
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: hasNewMessages, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom:
|
|
9095
|
+
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: hasNewMessages, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottomFromNotification })));
|
|
8932
9096
|
};
|
|
8933
9097
|
/**
|
|
8934
9098
|
* The MessageList component renders a list of Messages.
|
|
@@ -8939,12 +9103,12 @@ var MessageListWithContext = function (props) {
|
|
|
8939
9103
|
* - [TypingContext](https://getstream.io/chat/docs/sdk/react/contexts/typing_context/)
|
|
8940
9104
|
*/
|
|
8941
9105
|
var MessageList = function (props) {
|
|
8942
|
-
var
|
|
8943
|
-
var
|
|
8944
|
-
|
|
8945
|
-
|
|
8946
|
-
var restChannelStateContext = __rest(
|
|
8947
|
-
return (React__default['default'].createElement(MessageListWithContext, __assign({ loadMore: loadMore }, restChannelStateContext, props)));
|
|
9106
|
+
var _a = useChannelActionContext('MessageList'), jumpToLatestMessage = _a.jumpToLatestMessage, loadMore = _a.loadMore, loadMoreNewer = _a.loadMoreNewer;
|
|
9107
|
+
var _b = useChannelStateContext('MessageList'); _b.members; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
9108
|
+
_b.mutes; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
9109
|
+
_b.watchers; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
9110
|
+
var restChannelStateContext = __rest(_b, ["members", "mutes", "watchers"]);
|
|
9111
|
+
return (React__default['default'].createElement(MessageListWithContext, __assign({ jumpToLatestMessage: jumpToLatestMessage, loadMore: loadMore, loadMoreNewer: loadMoreNewer }, restChannelStateContext, props)));
|
|
8948
9112
|
};
|
|
8949
9113
|
|
|
8950
9114
|
var useGiphyPreview = function (separateGiphyPreview) {
|
|
@@ -8964,7 +9128,7 @@ var useGiphyPreview = function (separateGiphyPreview) {
|
|
|
8964
9128
|
return { giphyPreviewMessage: giphyPreviewMessage, setGiphyPreviewMessage: setGiphyPreviewMessage };
|
|
8965
9129
|
};
|
|
8966
9130
|
|
|
8967
|
-
function useNewMessageNotification(messages, currentUserId) {
|
|
9131
|
+
function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
|
|
8968
9132
|
var _a = React.useState(false), newMessagesNotification = _a[0], setNewMessagesNotification = _a[1];
|
|
8969
9133
|
/**
|
|
8970
9134
|
* use the flag to avoid the initial "new messages" quick blink
|
|
@@ -8974,6 +9138,10 @@ function useNewMessageNotification(messages, currentUserId) {
|
|
|
8974
9138
|
var atBottom = React.useRef(false);
|
|
8975
9139
|
React.useEffect(function () {
|
|
8976
9140
|
var _a;
|
|
9141
|
+
if (hasMoreNewer) {
|
|
9142
|
+
setNewMessagesNotification(true);
|
|
9143
|
+
return;
|
|
9144
|
+
}
|
|
8977
9145
|
/* handle scrolling behavior for new messages */
|
|
8978
9146
|
if (!(messages === null || messages === void 0 ? void 0 : messages.length))
|
|
8979
9147
|
return;
|
|
@@ -8992,7 +9160,7 @@ function useNewMessageNotification(messages, currentUserId) {
|
|
|
8992
9160
|
setNewMessagesNotification(true);
|
|
8993
9161
|
}
|
|
8994
9162
|
didMount.current = true;
|
|
8995
|
-
}, [currentUserId, messages]);
|
|
9163
|
+
}, [currentUserId, messages, hasMoreNewer]);
|
|
8996
9164
|
return { atBottom: atBottom, newMessagesNotification: newMessagesNotification, setNewMessagesNotification: setNewMessagesNotification };
|
|
8997
9165
|
}
|
|
8998
9166
|
|
|
@@ -9022,6 +9190,8 @@ function usePrependedMessagesCount(messages) {
|
|
|
9022
9190
|
return i;
|
|
9023
9191
|
}
|
|
9024
9192
|
}
|
|
9193
|
+
// if no match has found, we have jumped
|
|
9194
|
+
firstMessageId.current = currentFirstMessageId;
|
|
9025
9195
|
return 0;
|
|
9026
9196
|
// TODO: there's a bug here, the messages prop is the same array instance (something mutates it)
|
|
9027
9197
|
// that's why the second dependency is necessary
|
|
@@ -9054,10 +9224,44 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
|
|
|
9054
9224
|
}
|
|
9055
9225
|
|
|
9056
9226
|
var PREPEND_OFFSET = Math.pow(10, 7);
|
|
9227
|
+
function captureResizeObserverExceededError(e) {
|
|
9228
|
+
if (e.message === 'ResizeObserver loop completed with undelivered notifications.' ||
|
|
9229
|
+
e.message === 'ResizeObserver loop limit exceeded') {
|
|
9230
|
+
e.stopImmediatePropagation();
|
|
9231
|
+
}
|
|
9232
|
+
}
|
|
9233
|
+
function useCaptureResizeObserverExceededError() {
|
|
9234
|
+
React.useEffect(function () {
|
|
9235
|
+
window.addEventListener('error', captureResizeObserverExceededError);
|
|
9236
|
+
return function () {
|
|
9237
|
+
window.removeEventListener('error', captureResizeObserverExceededError);
|
|
9238
|
+
};
|
|
9239
|
+
}, []);
|
|
9240
|
+
}
|
|
9241
|
+
function fractionalItemSize(element) {
|
|
9242
|
+
return element.getBoundingClientRect().height;
|
|
9243
|
+
}
|
|
9244
|
+
function findMessageIndex(messages, id) {
|
|
9245
|
+
return messages.findIndex(function (message) { return message.id === id; });
|
|
9246
|
+
}
|
|
9247
|
+
function calculateInitialTopMostItemIndex(messages, highlightedMessageId) {
|
|
9248
|
+
if (highlightedMessageId) {
|
|
9249
|
+
var index = findMessageIndex(messages, highlightedMessageId);
|
|
9250
|
+
if (index !== -1) {
|
|
9251
|
+
return { align: 'center', index: index };
|
|
9252
|
+
}
|
|
9253
|
+
}
|
|
9254
|
+
return messages.length - 1;
|
|
9255
|
+
}
|
|
9057
9256
|
var VirtualizedMessageListWithContext = function (props) {
|
|
9058
|
-
var additionalVirtuosoProps = props.additionalVirtuosoProps, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? true : _a, hasMore = props.hasMore, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, loadingMore = props.loadingMore, loadMore = props.loadMore, propMessage = props.Message, _d = props.messageLimit, messageLimit = _d === void 0 ? 100 : _d, messages = props.messages, notifications = props.notifications,
|
|
9257
|
+
var additionalVirtuosoProps = props.additionalVirtuosoProps, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? true : _a, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, propMessage = props.Message, _d = props.messageLimit, messageLimit = _d === void 0 ? 100 : _d, messages = props.messages, notifications = props.notifications,
|
|
9258
|
+
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
9259
|
+
_e = props.overscan,
|
|
9059
9260
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
9060
|
-
scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _f = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _f === void 0 ? false : _f, _g = props.separateGiphyPreview, separateGiphyPreview = _g === void 0 ? false : _g, _h = props.shouldGroupByUser, shouldGroupByUser = _h === void 0 ? false : _h, _j = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _j === void 0 ? 'smooth' : _j;
|
|
9261
|
+
overscan = _e === void 0 ? 0 : _e, scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _f = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _f === void 0 ? false : _f, _g = props.separateGiphyPreview, separateGiphyPreview = _g === void 0 ? false : _g, _h = props.shouldGroupByUser, shouldGroupByUser = _h === void 0 ? false : _h, _j = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _j === void 0 ? 'smooth' : _j, suppressAutoscroll = props.suppressAutoscroll;
|
|
9262
|
+
// Stops errors generated from react-virtuoso to bubble up
|
|
9263
|
+
// to Sentry or other tracking tools.
|
|
9264
|
+
useCaptureResizeObserverExceededError();
|
|
9061
9265
|
var _k = useComponentContext('VirtualizedMessageList'), _l = _k.DateSeparator, DateSeparator$1 = _l === void 0 ? DateSeparator : _l, _m = _k.EmptyStateIndicator, EmptyStateIndicator$1 = _m === void 0 ? EmptyStateIndicator : _m, _o = _k.GiphyPreviewMessage, GiphyPreviewMessage$1 = _o === void 0 ? GiphyPreviewMessage : _o, _p = _k.LoadingIndicator, LoadingIndicator$1 = _p === void 0 ? LoadingIndicator : _p, _q = _k.MessageListNotifications, MessageListNotifications$1 = _q === void 0 ? MessageListNotifications : _q, _r = _k.MessageNotification, MessageNotification$1 = _r === void 0 ? MessageNotification : _r, _s = _k.MessageSystem, MessageSystem = _s === void 0 ? EventComponent : _s, _t = _k.TypingIndicator, TypingIndicator = _t === void 0 ? null : _t, _u = _k.VirtualMessage, contextMessage = _u === void 0 ? MessageSimple : _u;
|
|
9062
9266
|
var _v = useChatContext('VirtualizedMessageList'), client = _v.client, customClasses = _v.customClasses;
|
|
9063
9267
|
var lastRead = React.useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
|
|
@@ -9074,12 +9278,11 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9074
9278
|
return messages;
|
|
9075
9279
|
}
|
|
9076
9280
|
return processMessages({
|
|
9077
|
-
|
|
9281
|
+
enableDateSeparator: !disableDateSeparator,
|
|
9078
9282
|
hideDeletedMessages: hideDeletedMessages,
|
|
9079
9283
|
hideNewMessageSeparator: hideNewMessageSeparator,
|
|
9080
9284
|
lastRead: lastRead,
|
|
9081
9285
|
messages: messages,
|
|
9082
|
-
separateGiphyPreview: separateGiphyPreview,
|
|
9083
9286
|
setGiphyPreviewMessage: setGiphyPreviewMessage,
|
|
9084
9287
|
userId: client.userID || '',
|
|
9085
9288
|
});
|
|
@@ -9093,27 +9296,75 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9093
9296
|
client.userID,
|
|
9094
9297
|
]);
|
|
9095
9298
|
var virtuoso = React.useRef(null);
|
|
9096
|
-
var _x = useNewMessageNotification(processedMessages, client.userID), atBottom = _x.atBottom, newMessagesNotification = _x.newMessagesNotification, setNewMessagesNotification = _x.setNewMessagesNotification;
|
|
9097
|
-
var scrollToBottom = React.useCallback(function () {
|
|
9098
|
-
|
|
9099
|
-
|
|
9100
|
-
|
|
9101
|
-
|
|
9102
|
-
|
|
9299
|
+
var _x = useNewMessageNotification(processedMessages, client.userID, hasMoreNewer), atBottom = _x.atBottom, newMessagesNotification = _x.newMessagesNotification, setNewMessagesNotification = _x.setNewMessagesNotification;
|
|
9300
|
+
var scrollToBottom = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
9301
|
+
return __generator(this, function (_a) {
|
|
9302
|
+
switch (_a.label) {
|
|
9303
|
+
case 0:
|
|
9304
|
+
if (!hasMoreNewer) return [3 /*break*/, 2];
|
|
9305
|
+
return [4 /*yield*/, jumpToLatestMessage()];
|
|
9306
|
+
case 1:
|
|
9307
|
+
_a.sent();
|
|
9308
|
+
return [2 /*return*/];
|
|
9309
|
+
case 2:
|
|
9310
|
+
if (virtuoso.current) {
|
|
9311
|
+
virtuoso.current.scrollToIndex(processedMessages.length - 1);
|
|
9312
|
+
}
|
|
9313
|
+
setNewMessagesNotification(false);
|
|
9314
|
+
return [2 /*return*/];
|
|
9315
|
+
}
|
|
9316
|
+
});
|
|
9317
|
+
}); }, [
|
|
9318
|
+
virtuoso,
|
|
9319
|
+
processedMessages,
|
|
9320
|
+
setNewMessagesNotification,
|
|
9321
|
+
processedMessages.length,
|
|
9322
|
+
hasMoreNewer,
|
|
9323
|
+
jumpToLatestMessage,
|
|
9324
|
+
]);
|
|
9325
|
+
var _y = React__default['default'].useState(false), newMessagesReceivedInBackground = _y[0], setNewMessagesReceivedInBackground = _y[1];
|
|
9326
|
+
var resetNewMessagesReceivedInBackground = React.useCallback(function () {
|
|
9327
|
+
setNewMessagesReceivedInBackground(false);
|
|
9328
|
+
}, []);
|
|
9329
|
+
React.useEffect(function () {
|
|
9330
|
+
setNewMessagesReceivedInBackground(true);
|
|
9331
|
+
}, [messages]);
|
|
9103
9332
|
var scrollToBottomIfConfigured = React.useCallback(function (event) {
|
|
9104
9333
|
if (scrollToLatestMessageOnFocus && event.target === window) {
|
|
9105
|
-
|
|
9334
|
+
if (newMessagesReceivedInBackground) {
|
|
9335
|
+
setTimeout(scrollToBottom, 100);
|
|
9336
|
+
}
|
|
9106
9337
|
}
|
|
9107
|
-
}, [scrollToLatestMessageOnFocus, scrollToBottom]);
|
|
9338
|
+
}, [scrollToLatestMessageOnFocus, scrollToBottom, newMessagesReceivedInBackground]);
|
|
9108
9339
|
React.useEffect(function () {
|
|
9109
9340
|
if (typeof window !== 'undefined') {
|
|
9110
9341
|
window.addEventListener('focus', scrollToBottomIfConfigured);
|
|
9342
|
+
window.addEventListener('blur', resetNewMessagesReceivedInBackground);
|
|
9111
9343
|
}
|
|
9112
|
-
return function () {
|
|
9344
|
+
return function () {
|
|
9345
|
+
window.removeEventListener('focus', scrollToBottomIfConfigured);
|
|
9346
|
+
window.removeEventListener('blur', resetNewMessagesReceivedInBackground);
|
|
9347
|
+
};
|
|
9113
9348
|
}, [scrollToBottomIfConfigured]);
|
|
9114
9349
|
var numItemsPrepended = usePrependedMessagesCount(processedMessages);
|
|
9350
|
+
/**
|
|
9351
|
+
* Logic to update the key of the virtuoso component when the list jumps to a new location.
|
|
9352
|
+
*/
|
|
9353
|
+
var _z = React.useState(+new Date()), messageSetKey = _z[0], setMessageSetKey = _z[1];
|
|
9354
|
+
var firstMessageId = React.useRef();
|
|
9355
|
+
React.useEffect(function () {
|
|
9356
|
+
var _a;
|
|
9357
|
+
var continuousSet = messages && messages.find(function (message) { return message.id === firstMessageId.current; });
|
|
9358
|
+
if (!continuousSet) {
|
|
9359
|
+
setMessageSetKey(+new Date());
|
|
9360
|
+
}
|
|
9361
|
+
firstMessageId.current = (_a = messages === null || messages === void 0 ? void 0 : messages[0]) === null || _a === void 0 ? void 0 : _a.id;
|
|
9362
|
+
}, [messages]);
|
|
9115
9363
|
var shouldForceScrollToBottom = useShouldForceScrollToBottom(processedMessages, client.userID);
|
|
9116
9364
|
var followOutput = function (isAtBottom) {
|
|
9365
|
+
if (hasMoreNewer || suppressAutoscroll) {
|
|
9366
|
+
return false;
|
|
9367
|
+
}
|
|
9117
9368
|
if (shouldForceScrollToBottom()) {
|
|
9118
9369
|
return isAtBottom ? stickToBottomScrollBehavior : 'auto';
|
|
9119
9370
|
}
|
|
@@ -9173,13 +9424,26 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9173
9424
|
loadMore(messageLimit);
|
|
9174
9425
|
}
|
|
9175
9426
|
};
|
|
9427
|
+
var endReached = function () {
|
|
9428
|
+
if (hasMoreNewer && loadMoreNewer) {
|
|
9429
|
+
loadMoreNewer(messageLimit);
|
|
9430
|
+
}
|
|
9431
|
+
};
|
|
9432
|
+
React.useEffect(function () {
|
|
9433
|
+
var _a;
|
|
9434
|
+
if (highlightedMessageId) {
|
|
9435
|
+
var index = findMessageIndex(processedMessages, highlightedMessageId);
|
|
9436
|
+
if (index !== -1) {
|
|
9437
|
+
(_a = virtuoso.current) === null || _a === void 0 ? void 0 : _a.scrollToIndex({ align: 'center', index: index });
|
|
9438
|
+
}
|
|
9439
|
+
}
|
|
9440
|
+
}, [highlightedMessageId]);
|
|
9176
9441
|
if (!processedMessages)
|
|
9177
9442
|
return null;
|
|
9178
|
-
var virtualizedMessageListClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list';
|
|
9179
9443
|
return (React__default['default'].createElement(React__default['default'].Fragment, null,
|
|
9180
|
-
React__default['default'].createElement("div", { className:
|
|
9181
|
-
React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, firstItemIndex: PREPEND_OFFSET - numItemsPrepended, followOutput: followOutput,
|
|
9182
|
-
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: newMessagesNotification, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom }),
|
|
9444
|
+
React__default['default'].createElement("div", { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list' },
|
|
9445
|
+
React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, endReached: endReached, firstItemIndex: PREPEND_OFFSET - numItemsPrepended, followOutput: followOutput, increaseViewportBy: { bottom: 200, top: 0 }, initialTopMostItemIndex: calculateInitialTopMostItemIndex(processedMessages, highlightedMessageId), itemContent: function (i) { return messageRenderer(processedMessages, i); }, itemSize: fractionalItemSize, key: messageSetKey, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, additionalVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {})))),
|
|
9446
|
+
React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: newMessagesNotification, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom }),
|
|
9183
9447
|
giphyPreviewMessage && React__default['default'].createElement(GiphyPreviewMessage$1, { message: giphyPreviewMessage })));
|
|
9184
9448
|
};
|
|
9185
9449
|
/**
|
|
@@ -9189,10 +9453,10 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
9189
9453
|
* **Note**: It works well when there are thousands of messages in a channel, it has a shortcoming though - the message UI should have a fixed height.
|
|
9190
9454
|
*/
|
|
9191
9455
|
function VirtualizedMessageList(props) {
|
|
9192
|
-
var
|
|
9193
|
-
var
|
|
9456
|
+
var _a = useChannelActionContext('VirtualizedMessageList'), jumpToLatestMessage = _a.jumpToLatestMessage, loadMore = _a.loadMore, loadMoreNewer = _a.loadMoreNewer;
|
|
9457
|
+
var _b = useChannelStateContext('VirtualizedMessageList'), channel = _b.channel, hasMore = _b.hasMore, hasMoreNewer = _b.hasMoreNewer, highlightedMessageId = _b.highlightedMessageId, loadingMore = _b.loadingMore, loadingMoreNewer = _b.loadingMoreNewer, contextMessages = _b.messages, notifications = _b.notifications, suppressAutoscroll = _b.suppressAutoscroll;
|
|
9194
9458
|
var messages = props.messages || contextMessages;
|
|
9195
|
-
return (React__default['default'].createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, hasMore: !!hasMore, loadingMore: !!loadingMore, loadMore: loadMore, messages: messages, notifications: notifications }, props)));
|
|
9459
|
+
return (React__default['default'].createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, hasMore: !!hasMore, hasMoreNewer: !!hasMoreNewer, highlightedMessageId: highlightedMessageId, jumpToLatestMessage: jumpToLatestMessage, loadingMore: !!loadingMore, loadingMoreNewer: !!loadingMoreNewer, loadMore: loadMore, loadMoreNewer: loadMoreNewer, messages: messages, notifications: notifications, suppressAutoscroll: suppressAutoscroll }, props)));
|
|
9196
9460
|
}
|
|
9197
9461
|
|
|
9198
9462
|
/**
|
|
@@ -9211,11 +9475,7 @@ var DefaultThreadHeader = function (props) {
|
|
|
9211
9475
|
var getReplyCount = function () {
|
|
9212
9476
|
if (!thread.reply_count)
|
|
9213
9477
|
return '';
|
|
9214
|
-
|
|
9215
|
-
return t('1 reply');
|
|
9216
|
-
return t('{{ replyCount }} replies', {
|
|
9217
|
-
replyCount: thread.reply_count,
|
|
9218
|
-
});
|
|
9478
|
+
return t('replyCount', { count: thread.reply_count });
|
|
9219
9479
|
};
|
|
9220
9480
|
return (React__default['default'].createElement("div", { className: 'str-chat__thread-header' },
|
|
9221
9481
|
React__default['default'].createElement("div", { className: 'str-chat__thread-header-details' },
|
|
@@ -9230,11 +9490,11 @@ var DefaultThreadStart = function () {
|
|
|
9230
9490
|
return React__default['default'].createElement("div", { className: 'str-chat__thread-start' }, t('Start of a new thread'));
|
|
9231
9491
|
};
|
|
9232
9492
|
var ThreadInner = function (props) {
|
|
9233
|
-
var additionalMessageInputProps = props.additionalMessageInputProps, additionalMessageListProps = props.additionalMessageListProps, additionalParentMessageProps = props.additionalParentMessageProps, additionalVirtualizedMessageListProps = props.additionalVirtualizedMessageListProps, _a = props.autoFocus, autoFocus = _a === void 0 ? true : _a, _b = props.
|
|
9234
|
-
var
|
|
9235
|
-
var
|
|
9493
|
+
var additionalMessageInputProps = props.additionalMessageInputProps, additionalMessageListProps = props.additionalMessageListProps, additionalParentMessageProps = props.additionalParentMessageProps, additionalVirtualizedMessageListProps = props.additionalVirtualizedMessageListProps, _a = props.autoFocus, autoFocus = _a === void 0 ? true : _a, _b = props.enableDateSeparator, enableDateSeparator = _b === void 0 ? false : _b, _c = props.fullWidth, fullWidth = _c === void 0 ? false : _c, PropInput = props.Input, PropMessage = props.Message, virtualized = props.virtualized;
|
|
9494
|
+
var _d = useChannelStateContext('Thread'), thread = _d.thread, threadHasMore = _d.threadHasMore, threadLoadingMore = _d.threadLoadingMore, threadMessages = _d.threadMessages;
|
|
9495
|
+
var _e = useChannelActionContext('Thread'), closeThread = _e.closeThread, loadMoreThread = _e.loadMoreThread;
|
|
9236
9496
|
var customClasses = useChatContext('Thread').customClasses;
|
|
9237
|
-
var
|
|
9497
|
+
var _f = useComponentContext('Thread'), ContextInput = _f.ThreadInput, ContextMessage = _f.Message, _g = _f.ThreadHeader, ThreadHeader = _g === void 0 ? DefaultThreadHeader : _g, _h = _f.ThreadStart, ThreadStart = _h === void 0 ? DefaultThreadStart : _h, _j = _f.VirtualMessage, VirtualMessage = _j === void 0 ? FixedHeightMessage : _j;
|
|
9238
9498
|
var messageList = React.useRef(null);
|
|
9239
9499
|
var ThreadInput = PropInput || (additionalMessageInputProps === null || additionalMessageInputProps === void 0 ? void 0 : additionalMessageInputProps.Input) || ContextInput || MessageInputSmall;
|
|
9240
9500
|
var ThreadMessage = PropMessage || (additionalMessageListProps === null || additionalMessageListProps === void 0 ? void 0 : additionalMessageListProps.Message);
|
|
@@ -9262,7 +9522,7 @@ var ThreadInner = function (props) {
|
|
|
9262
9522
|
React__default['default'].createElement("div", { className: 'str-chat__thread-list', ref: messageList },
|
|
9263
9523
|
React__default['default'].createElement(Message, __assign({ initialMessage: true, message: thread, Message: ThreadMessage || FallbackMessage, threadList: true }, additionalParentMessageProps)),
|
|
9264
9524
|
React__default['default'].createElement(ThreadStart, null),
|
|
9265
|
-
React__default['default'].createElement(ThreadMessageList, __assign({ hasMore: threadHasMore, loadingMore: threadLoadingMore, loadMore: loadMoreThread, Message: ThreadMessage || FallbackMessage, messages: threadMessages || [], threadList: true }, (virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps)))),
|
|
9525
|
+
React__default['default'].createElement(ThreadMessageList, __assign({ disableDateSeparator: !enableDateSeparator, hasMore: threadHasMore, loadingMore: threadLoadingMore, loadMore: loadMoreThread, Message: ThreadMessage || FallbackMessage, messages: threadMessages || [], threadList: true }, (virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps)))),
|
|
9266
9526
|
React__default['default'].createElement(MessageInput, __assign({ focus: autoFocus, Input: ThreadInput, parent: thread, publishTypingEvent: false }, additionalMessageInputProps))));
|
|
9267
9527
|
};
|
|
9268
9528
|
|
|
@@ -9328,7 +9588,6 @@ exports.Gallery = Gallery;
|
|
|
9328
9588
|
exports.GiphyPreviewMessage = GiphyPreviewMessage;
|
|
9329
9589
|
exports.ImageComponent = ImageComponent;
|
|
9330
9590
|
exports.InfiniteScroll = InfiniteScroll;
|
|
9331
|
-
exports.InfiniteScrollPaginator = InfiniteScrollPaginator;
|
|
9332
9591
|
exports.KEY_CODES = KEY_CODES;
|
|
9333
9592
|
exports.LoadMoreButton = LoadMoreButton;
|
|
9334
9593
|
exports.LoadMorePaginator = LoadMorePaginator;
|
|
@@ -9369,7 +9628,6 @@ exports.ReactionIcon = ReactionIcon;
|
|
|
9369
9628
|
exports.ReactionSelector = ReactionSelector;
|
|
9370
9629
|
exports.ReactionsList = ReactionsList;
|
|
9371
9630
|
exports.ReplyIcon = ReplyIcon;
|
|
9372
|
-
exports.ReverseInfiniteScroll = ReverseInfiniteScroll;
|
|
9373
9631
|
exports.SUPPORTED_VIDEO_FORMATS = SUPPORTED_VIDEO_FORMATS;
|
|
9374
9632
|
exports.SafeAnchor = SafeAnchor;
|
|
9375
9633
|
exports.SearchInput = SearchInput;
|
|
@@ -9464,7 +9722,6 @@ exports.showMessageActionsBox = showMessageActionsBox;
|
|
|
9464
9722
|
exports.trTranslations = trTranslations;
|
|
9465
9723
|
exports.useActionHandler = useActionHandler;
|
|
9466
9724
|
exports.useBreakpoint = useBreakpoint;
|
|
9467
|
-
exports.useCallLoadMore = useCallLoadMore;
|
|
9468
9725
|
exports.useChannelActionContext = useChannelActionContext;
|
|
9469
9726
|
exports.useChannelDeletedListener = useChannelDeletedListener;
|
|
9470
9727
|
exports.useChannelEditMessageHandler = useEditMessageHandler;
|