@droppii-org/chat-mobile 0.2.80 → 0.2.82
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/lib/module/components/ThreadCard/MentionBadge.js +24 -0
- package/lib/module/components/ThreadCard/MentionBadge.js.map +1 -0
- package/lib/module/components/ThreadCard/ThreadCard.js +5 -1
- package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -1
- package/lib/module/components/messages/linkMessage/LinkPreviewCard.js +67 -0
- package/lib/module/components/messages/linkMessage/LinkPreviewCard.js.map +1 -0
- package/lib/module/components/messages/linkMessage/index.js +21 -68
- package/lib/module/components/messages/linkMessage/index.js.map +1 -1
- package/lib/module/components/messages/quotedMessage/QuotedMessagePreviewStrip.js +152 -0
- package/lib/module/components/messages/quotedMessage/QuotedMessagePreviewStrip.js.map +1 -0
- package/lib/module/components/messages/textMessage/index.js +102 -8
- package/lib/module/components/messages/textMessage/index.js.map +1 -1
- package/lib/module/config/api-endpoints.js +2 -1
- package/lib/module/config/api-endpoints.js.map +1 -1
- package/lib/module/core/useChatListener.js +1 -1
- package/lib/module/core/useChatListener.js.map +1 -1
- package/lib/module/hooks/contacts/useSearchContacts.js +50 -0
- package/lib/module/hooks/contacts/useSearchContacts.js.map +1 -0
- package/lib/module/hooks/message/useSendMessage.js +64 -3
- package/lib/module/hooks/message/useSendMessage.js.map +1 -1
- package/lib/module/hooks/query-keys.js +8 -0
- package/lib/module/hooks/query-keys.js.map +1 -1
- package/lib/module/hooks/useChatCompose.js +3 -2
- package/lib/module/hooks/useChatCompose.js.map +1 -1
- package/lib/module/screens/SearchConversation/ContactResultItem.js +119 -0
- package/lib/module/screens/SearchConversation/ContactResultItem.js.map +1 -0
- package/lib/module/screens/SearchConversation/SearchAllResult.js +26 -20
- package/lib/module/screens/SearchConversation/SearchAllResult.js.map +1 -1
- package/lib/module/screens/SearchConversation/SearchCommunityResult.js +79 -0
- package/lib/module/screens/SearchConversation/SearchCommunityResult.js.map +1 -0
- package/lib/module/screens/SearchConversation/SearchContactsResult.js +117 -0
- package/lib/module/screens/SearchConversation/SearchContactsResult.js.map +1 -0
- package/lib/module/screens/SearchConversation/SearchEmpty.js +2 -0
- package/lib/module/screens/SearchConversation/SearchEmpty.js.map +1 -1
- package/lib/module/screens/SearchConversation/SearchMessagesResult.js +1 -8
- package/lib/module/screens/SearchConversation/SearchMessagesResult.js.map +1 -1
- package/lib/module/screens/SearchConversation/SearchResultItem.js +2 -0
- package/lib/module/screens/SearchConversation/SearchResultItem.js.map +1 -1
- package/lib/module/screens/SearchConversation/TabResult.js +24 -7
- package/lib/module/screens/SearchConversation/TabResult.js.map +1 -1
- package/lib/module/screens/SearchConversation/index.js +6 -2
- package/lib/module/screens/SearchConversation/index.js.map +1 -1
- package/lib/module/screens/SearchConversation/types.js +1 -0
- package/lib/module/screens/SearchConversation/types.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatComposer.js +170 -48
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +1 -0
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/components/ChatMessageInput.js +23 -2
- package/lib/module/screens/chat-detail/components/ChatMessageInput.js.map +1 -1
- package/lib/module/screens/chat-detail/components/MentionHighlightAdapter.js +51 -0
- package/lib/module/screens/chat-detail/components/MentionHighlightAdapter.js.map +1 -0
- package/lib/module/screens/chat-detail/components/MentionSuggestionItem.js +49 -0
- package/lib/module/screens/chat-detail/components/MentionSuggestionItem.js.map +1 -0
- package/lib/module/screens/chat-detail/components/MentionSuggestionList.js +114 -0
- package/lib/module/screens/chat-detail/components/MentionSuggestionList.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerState.js +8 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerState.js.map +1 -1
- package/lib/module/screens/chat-detail/hooks/useMentionComposer.js +251 -0
- package/lib/module/screens/chat-detail/hooks/useMentionComposer.js.map +1 -0
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +5 -1
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxWrapper.js +11 -1
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxWrapper.js.map +1 -1
- package/lib/module/services/endpoints.js +2 -1
- package/lib/module/services/endpoints.js.map +1 -1
- package/lib/module/services/mentionSearch.js +49 -0
- package/lib/module/services/mentionSearch.js.map +1 -0
- package/lib/module/services/message.js +6 -1
- package/lib/module/services/message.js.map +1 -1
- package/lib/module/translation/resources/i18n.js +11 -0
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/types/chat.js +8 -0
- package/lib/module/types/chat.js.map +1 -1
- package/lib/module/types/mention.js +2 -0
- package/lib/module/types/mention.js.map +1 -0
- package/lib/module/utils/dateTimeUtils.js +10 -0
- package/lib/module/utils/dateTimeUtils.js.map +1 -1
- package/lib/module/utils/highlightSearch.js +6 -2
- package/lib/module/utils/highlightSearch.js.map +1 -1
- package/lib/module/utils/mentionSerializer.js +113 -0
- package/lib/module/utils/mentionSerializer.js.map +1 -0
- package/lib/module/utils/mentions/index.js +7 -0
- package/lib/module/utils/mentions/index.js.map +1 -0
- package/lib/module/utils/mentions/mentionDetector.js +49 -0
- package/lib/module/utils/mentions/mentionDetector.js.map +1 -0
- package/lib/module/utils/mentions/mentionDiff.js +66 -0
- package/lib/module/utils/mentions/mentionDiff.js.map +1 -0
- package/lib/module/utils/mentions/mentionRange.js +188 -0
- package/lib/module/utils/mentions/mentionRange.js.map +1 -0
- package/lib/module/utils/mentions/mentionTokenize.js +50 -0
- package/lib/module/utils/mentions/mentionTokenize.js.map +1 -0
- package/lib/module/utils/messageUtils.js +16 -3
- package/lib/module/utils/messageUtils.js.map +1 -1
- package/lib/module/utils/url.js +33 -0
- package/lib/module/utils/url.js.map +1 -1
- package/lib/typescript/src/components/ThreadCard/MentionBadge.d.ts +7 -0
- package/lib/typescript/src/components/ThreadCard/MentionBadge.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/linkMessage/LinkPreviewCard.d.ts +16 -0
- package/lib/typescript/src/components/messages/linkMessage/LinkPreviewCard.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/quotedMessage/QuotedMessagePreviewStrip.d.ts +13 -0
- package/lib/typescript/src/components/messages/quotedMessage/QuotedMessagePreviewStrip.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/textMessage/index.d.ts +3 -1
- package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/config/api-endpoints.d.ts +1 -0
- package/lib/typescript/src/config/api-endpoints.d.ts.map +1 -1
- package/lib/typescript/src/hooks/contacts/useSearchContacts.d.ts +221 -0
- package/lib/typescript/src/hooks/contacts/useSearchContacts.d.ts.map +1 -0
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts +5 -2
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/src/hooks/query-keys.d.ts +8 -0
- package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useChatCompose.d.ts +2 -1
- package/lib/typescript/src/hooks/useChatCompose.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/ContactResultItem.d.ts +9 -0
- package/lib/typescript/src/screens/SearchConversation/ContactResultItem.d.ts.map +1 -0
- package/lib/typescript/src/screens/SearchConversation/SearchAllResult.d.ts +3 -2
- package/lib/typescript/src/screens/SearchConversation/SearchAllResult.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/SearchCommunityResult.d.ts +7 -0
- package/lib/typescript/src/screens/SearchConversation/SearchCommunityResult.d.ts.map +1 -0
- package/lib/typescript/src/screens/SearchConversation/SearchContactsResult.d.ts +8 -0
- package/lib/typescript/src/screens/SearchConversation/SearchContactsResult.d.ts.map +1 -0
- package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/SearchMessagesResult.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/TabResult.d.ts +4 -2
- package/lib/typescript/src/screens/SearchConversation/TabResult.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/index.d.ts +4 -2
- package/lib/typescript/src/screens/SearchConversation/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/types.d.ts +2 -1
- package/lib/typescript/src/screens/SearchConversation/types.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts +10 -2
- package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/components/MentionHighlightAdapter.d.ts +29 -0
- package/lib/typescript/src/screens/chat-detail/components/MentionHighlightAdapter.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/components/MentionSuggestionItem.d.ts +8 -0
- package/lib/typescript/src/screens/chat-detail/components/MentionSuggestionItem.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/components/MentionSuggestionList.d.ts +12 -0
- package/lib/typescript/src/screens/chat-detail/components/MentionSuggestionList.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/hooks/useMentionComposer.d.ts +48 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useMentionComposer.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxWrapper.d.ts.map +1 -1
- package/lib/typescript/src/services/endpoints.d.ts +1 -0
- package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
- package/lib/typescript/src/services/mentionSearch.d.ts +15 -0
- package/lib/typescript/src/services/mentionSearch.d.ts.map +1 -0
- package/lib/typescript/src/services/message.d.ts +1 -1
- package/lib/typescript/src/services/message.d.ts.map +1 -1
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/chat.d.ts +50 -0
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/types/mention.d.ts +65 -0
- package/lib/typescript/src/types/mention.d.ts.map +1 -0
- package/lib/typescript/src/utils/dateTimeUtils.d.ts +2 -0
- package/lib/typescript/src/utils/dateTimeUtils.d.ts.map +1 -1
- package/lib/typescript/src/utils/highlightSearch.d.ts.map +1 -1
- package/lib/typescript/src/utils/mentionSerializer.d.ts +78 -0
- package/lib/typescript/src/utils/mentionSerializer.d.ts.map +1 -0
- package/lib/typescript/src/utils/mentions/index.d.ts +5 -0
- package/lib/typescript/src/utils/mentions/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/mentions/mentionDetector.d.ts +18 -0
- package/lib/typescript/src/utils/mentions/mentionDetector.d.ts.map +1 -0
- package/lib/typescript/src/utils/mentions/mentionDiff.d.ts +20 -0
- package/lib/typescript/src/utils/mentions/mentionDiff.d.ts.map +1 -0
- package/lib/typescript/src/utils/mentions/mentionRange.d.ts +86 -0
- package/lib/typescript/src/utils/mentions/mentionRange.d.ts.map +1 -0
- package/lib/typescript/src/utils/mentions/mentionTokenize.d.ts +29 -0
- package/lib/typescript/src/utils/mentions/mentionTokenize.d.ts.map +1 -0
- package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
- package/lib/typescript/src/utils/url.d.ts +12 -0
- package/lib/typescript/src/utils/url.d.ts.map +1 -1
- package/package.json +3 -1
- package/src/build-ignore.d.ts +2 -0
- package/src/components/ThreadCard/MentionBadge.tsx +28 -0
- package/src/components/ThreadCard/ThreadCard.tsx +3 -0
- package/src/components/messages/linkMessage/LinkPreviewCard.tsx +92 -0
- package/src/components/messages/linkMessage/index.tsx +25 -89
- package/src/components/messages/quotedMessage/QuotedMessagePreviewStrip.tsx +168 -0
- package/src/components/messages/textMessage/index.tsx +124 -4
- package/src/config/api-endpoints.ts +2 -0
- package/src/core/useChatListener.ts +1 -1
- package/src/hooks/contacts/useSearchContacts.ts +66 -0
- package/src/hooks/message/useSendMessage.ts +60 -1
- package/src/hooks/query-keys.ts +12 -0
- package/src/hooks/useChatCompose.ts +115 -107
- package/src/screens/SearchConversation/ContactResultItem.tsx +128 -0
- package/src/screens/SearchConversation/SearchAllResult.tsx +38 -24
- package/src/screens/SearchConversation/SearchCommunityResult.tsx +96 -0
- package/src/screens/SearchConversation/SearchContactsResult.tsx +155 -0
- package/src/screens/SearchConversation/SearchEmpty.tsx +2 -0
- package/src/screens/SearchConversation/SearchMessagesResult.tsx +1 -6
- package/src/screens/SearchConversation/SearchResultItem.tsx +6 -1
- package/src/screens/SearchConversation/TabResult.tsx +40 -5
- package/src/screens/SearchConversation/index.tsx +10 -2
- package/src/screens/SearchConversation/types.tsx +1 -0
- package/src/screens/chat-detail/ChatComposer.tsx +201 -67
- package/src/screens/chat-detail/ChatListLegend.tsx +1 -0
- package/src/screens/chat-detail/components/ChatMessageInput.tsx +35 -2
- package/src/screens/chat-detail/components/MentionHighlightAdapter.tsx +57 -0
- package/src/screens/chat-detail/components/MentionSuggestionItem.tsx +53 -0
- package/src/screens/chat-detail/components/MentionSuggestionList.tsx +133 -0
- package/src/screens/chat-detail/hooks/useChatComposerState.ts +7 -1
- package/src/screens/chat-detail/hooks/useMentionComposer.ts +344 -0
- package/src/screens/chat-detail/legend/LegendChatMessage.tsx +7 -1
- package/src/screens/chat-detail/messageToolbox/MessageToolboxWrapper.tsx +22 -4
- package/src/services/endpoints.ts +1 -0
- package/src/services/mentionSearch.ts +57 -0
- package/src/services/message.ts +9 -1
- package/src/translation/resources/i18n.ts +12 -0
- package/src/types/chat.ts +52 -0
- package/src/types/mention.ts +70 -0
- package/src/utils/dateTimeUtils.ts +15 -0
- package/src/utils/highlightSearch.ts +12 -2
- package/src/utils/mentionSerializer.ts +155 -0
- package/src/utils/mentions/index.ts +16 -0
- package/src/utils/mentions/mentionDetector.ts +58 -0
- package/src/utils/mentions/mentionDiff.ts +95 -0
- package/src/utils/mentions/mentionRange.ts +207 -0
- package/src/utils/mentions/mentionTokenize.ts +53 -0
- package/src/utils/messageUtils.ts +21 -10
- package/src/utils/url.ts +30 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","memo","View","Platform","useWindowDimensions","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","messageStyles","Animated","useSafeAreaInsets","jsx","_jsx","jsxs","_jsxs","MENU_GAP","MessageToolboxWrapper","isOutgoing","rect","message","reaction","toolbox","insets","reactionHeight","toolboxHeight","topOffset","OS","top","height","windowHeight","
|
|
1
|
+
{"version":3,"names":["useCallback","memo","View","Platform","useWindowDimensions","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","messageStyles","Animated","useSafeAreaInsets","jsx","_jsx","jsxs","_jsxs","MENU_GAP","MessageToolboxWrapper","isOutgoing","rect","message","reaction","toolbox","insets","messageHeight","reactionHeight","toolboxHeight","topOffset","OS","top","height","windowHeight","onMessageCloneLayout","nativeEvent","value","layout","onToolboxLayout","onReactionLayout","translateY","menuGap","overflowBottom","Math","max","y","bottom","min","containerStyles","left","x","width","gap","transform","pointerEvents","style","messageRowRight","messageRowLeft","children","collapsable","onLayout","displayName"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/messageToolbox/MessageToolboxWrapper.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -28,7 +28,8 @@ export const ENDPOINTS = {
|
|
|
28
28
|
stickerCategories: () => getApiEndpoint('stickerCategories'),
|
|
29
29
|
stickersByCategoryId: id => `${getApiEndpoint('stickersByCategory')}/${id}/stickers`,
|
|
30
30
|
stickerHistory: () => getApiEndpoint('stickerHistory'),
|
|
31
|
-
searchMessages: () => `${getApiEndpoint('messages')}/search
|
|
31
|
+
searchMessages: () => `${getApiEndpoint('messages')}/search`,
|
|
32
|
+
searchContacts: () => `${getApiEndpoint('contacts')}/search`
|
|
32
33
|
},
|
|
33
34
|
uploaderService: {
|
|
34
35
|
get uploadImage() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getApiEndpoint","setApiEndpoint","getAllApiEndpoints","ENDPOINTS","chatService","urlMetadata","uploadFcmToken","conversationFlow","id","resetConversationFlow","runConversationFlow","getConversationByBotId","botId","conversationFlowMainMenu","closeConversationSession","getConversationStatusByBotId","getConversationTarget","conversationId","stickerCategories","stickersByCategoryId","stickerHistory","searchMessages","uploaderService","uploadImage"],"sourceRoot":"../../../src","sources":["services/endpoints.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SACEA,cAAc,EACdC,cAAc,EACdC,kBAAkB,QACb,4BAAyB;;AAEhC;AACA,OAAO,MAAMC,SAAS,GAAG;EACvBC,WAAW,EAAE;IACX,IAAIC,WAAWA,CAAA,EAAG;MAChB,OAAOL,cAAc,CAAC,aAAa,CAAC;IACtC,CAAC;IACD,IAAIM,cAAcA,CAAA,EAAG;MACnB,OAAON,cAAc,CAAC,gBAAgB,CAAC;IACzC,CAAC;IACDO,gBAAgB,EAAGC,EAAU,IAAK,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,EAAE;IAC3EC,qBAAqB,EAAGD,EAAU,IAChC,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,kBAAkB;IAC3DE,mBAAmB,EAAGF,EAAU,IAC9B,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,gBAAgB;IACzDG,sBAAsB,EAAGC,KAAa,IACpC,GAAGZ,cAAc,CAAC,KAAK,CAAC,IAAIY,KAAK,eAAe;IAClDC,wBAAwB,EAAGL,EAAU,IACnC,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,sBAAsB;IAC/DM,wBAAwB,EAAGN,EAAU,IACnC,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,gBAAgB;IACzDO,4BAA4B,EAAGH,KAAa,IAC1C,GAAGZ,cAAc,CAAC,KAAK,CAAC,IAAIY,KAAK,EAAE;IACrCI,qBAAqB,EAAGC,cAAsB,IAC5C,GAAGjB,cAAc,CAAC,cAAc,CAAC,IAAIiB,cAAc,SAAS;IAC9DC,iBAAiB,EAAEA,CAAA,KAAMlB,cAAc,CAAC,mBAAmB,CAAC;IAC5DmB,oBAAoB,EAAGX,EAAU,IAC/B,GAAGR,cAAc,CAAC,oBAAoB,CAAC,IAAIQ,EAAE,WAAW;IAC1DY,cAAc,EAAEA,CAAA,KAAMpB,cAAc,CAAC,gBAAgB,CAAC;IACtDqB,cAAc,EAAEA,CAAA,KAAM,GAAGrB,cAAc,CAAC,UAAU,CAAC;EACrD,CAAC;
|
|
1
|
+
{"version":3,"names":["getApiEndpoint","setApiEndpoint","getAllApiEndpoints","ENDPOINTS","chatService","urlMetadata","uploadFcmToken","conversationFlow","id","resetConversationFlow","runConversationFlow","getConversationByBotId","botId","conversationFlowMainMenu","closeConversationSession","getConversationStatusByBotId","getConversationTarget","conversationId","stickerCategories","stickersByCategoryId","stickerHistory","searchMessages","searchContacts","uploaderService","uploadImage"],"sourceRoot":"../../../src","sources":["services/endpoints.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SACEA,cAAc,EACdC,cAAc,EACdC,kBAAkB,QACb,4BAAyB;;AAEhC;AACA,OAAO,MAAMC,SAAS,GAAG;EACvBC,WAAW,EAAE;IACX,IAAIC,WAAWA,CAAA,EAAG;MAChB,OAAOL,cAAc,CAAC,aAAa,CAAC;IACtC,CAAC;IACD,IAAIM,cAAcA,CAAA,EAAG;MACnB,OAAON,cAAc,CAAC,gBAAgB,CAAC;IACzC,CAAC;IACDO,gBAAgB,EAAGC,EAAU,IAAK,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,EAAE;IAC3EC,qBAAqB,EAAGD,EAAU,IAChC,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,kBAAkB;IAC3DE,mBAAmB,EAAGF,EAAU,IAC9B,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,gBAAgB;IACzDG,sBAAsB,EAAGC,KAAa,IACpC,GAAGZ,cAAc,CAAC,KAAK,CAAC,IAAIY,KAAK,eAAe;IAClDC,wBAAwB,EAAGL,EAAU,IACnC,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,sBAAsB;IAC/DM,wBAAwB,EAAGN,EAAU,IACnC,GAAGR,cAAc,CAAC,cAAc,CAAC,IAAIQ,EAAE,gBAAgB;IACzDO,4BAA4B,EAAGH,KAAa,IAC1C,GAAGZ,cAAc,CAAC,KAAK,CAAC,IAAIY,KAAK,EAAE;IACrCI,qBAAqB,EAAGC,cAAsB,IAC5C,GAAGjB,cAAc,CAAC,cAAc,CAAC,IAAIiB,cAAc,SAAS;IAC9DC,iBAAiB,EAAEA,CAAA,KAAMlB,cAAc,CAAC,mBAAmB,CAAC;IAC5DmB,oBAAoB,EAAGX,EAAU,IAC/B,GAAGR,cAAc,CAAC,oBAAoB,CAAC,IAAIQ,EAAE,WAAW;IAC1DY,cAAc,EAAEA,CAAA,KAAMpB,cAAc,CAAC,gBAAgB,CAAC;IACtDqB,cAAc,EAAEA,CAAA,KAAM,GAAGrB,cAAc,CAAC,UAAU,CAAC,SAAS;IAC5DsB,cAAc,EAAEA,CAAA,KAAM,GAAGtB,cAAc,CAAC,UAAU,CAAC;EACrD,CAAC;EACDuB,eAAe,EAAE;IACf,IAAIC,WAAWA,CAAA,EAAG;MAChB,OAAOxB,cAAc,CAAC,aAAa,CAAC;IACtC;EACF;AACF,CAAC;;AAED;AACA,SAASA,cAAc,EAAEC,cAAc,EAAEC,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import OpenIMSDK, { GroupMemberFilter } from '@droppii/openim-rn-client-sdk';
|
|
4
|
+
const toSuggestion = member => ({
|
|
5
|
+
userId: member.userID,
|
|
6
|
+
displayName: member.nickname,
|
|
7
|
+
avatar: member.faceURL
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Concrete MentionSearchSource implementation for Part A's mention
|
|
12
|
+
* composer, wrapping the OpenIM SDK's group-member primitives — 0 call
|
|
13
|
+
* sites anywhere else in this repo before this feature. Empty keyword ->
|
|
14
|
+
* the full/initial member list (getGroupMemberList); non-empty keyword ->
|
|
15
|
+
* server-backed search (searchGroupMembers), purpose-built for this case.
|
|
16
|
+
*
|
|
17
|
+
* Neither SDK call returns a total count, so `hasMore` is inferred from
|
|
18
|
+
* page size (a full page *might* mean there's another one) — the same
|
|
19
|
+
* heuristic every offset/count-paginated list in this codebase already
|
|
20
|
+
* relies on, since OpenIM doesn't expose a cheaper alternative here.
|
|
21
|
+
*/
|
|
22
|
+
export function createOpenIMMentionSearchSource(groupID) {
|
|
23
|
+
return {
|
|
24
|
+
async search({
|
|
25
|
+
keyword,
|
|
26
|
+
limit,
|
|
27
|
+
offset
|
|
28
|
+
}) {
|
|
29
|
+
const members = keyword === '' ? await OpenIMSDK.getGroupMemberList({
|
|
30
|
+
groupID,
|
|
31
|
+
filter: GroupMemberFilter.All,
|
|
32
|
+
offset,
|
|
33
|
+
count: limit
|
|
34
|
+
}) : await OpenIMSDK.searchGroupMembers({
|
|
35
|
+
groupID,
|
|
36
|
+
keywordList: [keyword],
|
|
37
|
+
isSearchUserID: false,
|
|
38
|
+
isSearchMemberNickname: true,
|
|
39
|
+
offset,
|
|
40
|
+
count: limit
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
items: members.map(toSuggestion),
|
|
44
|
+
hasMore: members.length === limit
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=mentionSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OpenIMSDK","GroupMemberFilter","toSuggestion","member","userId","userID","displayName","nickname","avatar","faceURL","createOpenIMMentionSearchSource","groupID","search","keyword","limit","offset","members","getGroupMemberList","filter","All","count","searchGroupMembers","keywordList","isSearchUserID","isSearchMemberNickname","items","map","hasMore","length"],"sourceRoot":"../../../src","sources":["services/mentionSearch.ts"],"mappings":";;AAAA,OAAOA,SAAS,IACdC,iBAAiB,QAEZ,+BAA+B;AAOtC,MAAMC,YAAY,GAAIC,MAAuB,KAAyB;EACpEC,MAAM,EAAED,MAAM,CAACE,MAAM;EACrBC,WAAW,EAAEH,MAAM,CAACI,QAAQ;EAC5BC,MAAM,EAAEL,MAAM,CAACM;AACjB,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,+BAA+BA,CAC7CC,OAAe,EACM;EACrB,OAAO;IACL,MAAMC,MAAMA,CAAC;MAAEC,OAAO;MAAEC,KAAK;MAAEC;IAAO,CAAC,EAAgC;MACrE,MAAMC,OAAO,GACXH,OAAO,KAAK,EAAE,GACV,MAAMb,SAAS,CAACiB,kBAAkB,CAAC;QACjCN,OAAO;QACPO,MAAM,EAAEjB,iBAAiB,CAACkB,GAAG;QAC7BJ,MAAM;QACNK,KAAK,EAAEN;MACT,CAAC,CAAC,GACF,MAAMd,SAAS,CAACqB,kBAAkB,CAAC;QACjCV,OAAO;QACPW,WAAW,EAAE,CAACT,OAAO,CAAC;QACtBU,cAAc,EAAE,KAAK;QACrBC,sBAAsB,EAAE,IAAI;QAC5BT,MAAM;QACNK,KAAK,EAAEN;MACT,CAAC,CAAC;MAER,OAAO;QACLW,KAAK,EAAET,OAAO,CAACU,GAAG,CAACxB,YAAY,CAAC;QAChCyB,OAAO,EAAEX,OAAO,CAACY,MAAM,KAAKd;MAC9B,CAAC;IACH;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -37,7 +37,12 @@ export let ChatMessageAPI;
|
|
|
37
37
|
}
|
|
38
38
|
_ChatMessageAPI.searchLocalMessages = searchLocalMessages;
|
|
39
39
|
async function markConversationAsRead(conversationID) {
|
|
40
|
-
|
|
40
|
+
// resetConversationGroupAtType clears the "@ mention" flag
|
|
41
|
+
// (ConversationItem.groupAtType) — the core SDK never resets it on its
|
|
42
|
+
// own (confirmed: markConversationMessageAsRead only zeroes
|
|
43
|
+
// unreadCount), so it has to be requested explicitly at the same
|
|
44
|
+
// "user is caught up on this conversation" moment as the read marker.
|
|
45
|
+
return Promise.all([OpenIMSDK.markConversationMessageAsRead(conversationID), OpenIMSDK.resetConversationGroupAtType(conversationID)]);
|
|
41
46
|
}
|
|
42
47
|
_ChatMessageAPI.markConversationAsRead = markConversationAsRead;
|
|
43
48
|
async function getCurrentUserId() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OpenIMSDK","ViewType","useConversationStore","getReceiverId","DEFAULT_PAGE_SIZE","ChatMessageAPI","_ChatMessageAPI","fetchHistoryMessages","conversationID","options","getAdvancedHistoryMessageListApp","count","startClientMsgID","viewType","History","applicationType","sendTextMessage","params","currentConversation","getState","getCurrentConversation","message","createTextMessage","text","sentMessage","sendMessage","searchLocalMessages","keywordList","messageTypeList","pageIndex","markConversationAsRead","markConversationMessageAsRead","getCurrentUserId","getLoginUserID"],"sourceRoot":"../../../src","sources":["services/message.ts"],"mappings":";;AAAA,OAAOA,SAAS,IACdC,QAAQ,QAGH,+BAA+B;AACtC,SAASC,oBAAoB,QAAQ,mBAAU;AAC/C,SAASC,aAAa,QAAQ,qBAAkB;AAEhD,MAAMC,iBAAiB,GAAG,EAAE;AAAC,WAMZC,cAAc;AAAA,WAAAC,eAAA;EACtB,eAAeC,oBAAoBA,CACxCC,cAAsB,EACtBC,OAKC,EAC8B;IAC/B,OAAOT,SAAS,CAACU,gCAAgC,CAAC;MAChDF,cAAc;MACdG,KAAK,EAAEF,OAAO,EAAEE,KAAK,IAAIP,iBAAiB;MAC1CQ,gBAAgB,EAAEH,OAAO,EAAEG,gBAAgB,IAAI,EAAE;MACjDC,QAAQ,EAAEZ,QAAQ,CAACa,OAAO;MAC1BC,eAAe,EAAEN,OAAO,EAAEM,eAAe,IAAI;IAC/C,CAAC,CAAC;EACJ;EAACT,eAAA,CAAAC,oBAAA,GAAAA,oBAAA;EAEM,eAAeS,eAAeA,CAACC,MAErC,EAAwB;IACvB,MAAMC,mBAAmB,GAAGhB,oBAAoB,CAC7CiB,QAAQ,CAAC,CAAC,CACVC,sBAAsB,CAAC,CAAC;IAE3B,MAAMC,OAAO,GAAG,MAAMrB,SAAS,CAACsB,iBAAiB,CAACL,MAAM,CAACM,IAAI,CAAC;IAE9D,MAAMC,WAAW,GAAG,MAAMxB,SAAS,CAACyB,WAAW,CAAC;MAC9C,GAAGtB,aAAa,CAACe,mBAAmB,CAAC;MACrCG;IACF,CAAC,CAAC;IAEF,OAAOG,WAAW;EACpB;EAAClB,eAAA,CAAAU,eAAA,GAAAA,eAAA;EAEM,eAAeU,mBAAmBA,CACvClB,cAAsB,EACtBC,OAKC,EACD;IACA,OAAOT,SAAS,CAAC0B,mBAAmB,CAAC;MACnClB,cAAc;MACdmB,WAAW,EAAElB,OAAO,EAAEkB,WAAW,IAAI,CAAC,GAAG,CAAC;MAC1CC,eAAe,EAAEnB,OAAO,EAAEmB,eAAe;MACzCC,SAAS,EAAEpB,OAAO,EAAEoB,SAAS,IAAI,CAAC;MAClClB,KAAK,EAAEF,OAAO,EAAEE,KAAK,IAAI;IAC3B,CAAC,CAAC;EACJ;EAACL,eAAA,CAAAoB,mBAAA,GAAAA,mBAAA;EAEM,eAAeI,sBAAsBA,CAACtB,cAAsB,EAAE;IACnE,
|
|
1
|
+
{"version":3,"names":["OpenIMSDK","ViewType","useConversationStore","getReceiverId","DEFAULT_PAGE_SIZE","ChatMessageAPI","_ChatMessageAPI","fetchHistoryMessages","conversationID","options","getAdvancedHistoryMessageListApp","count","startClientMsgID","viewType","History","applicationType","sendTextMessage","params","currentConversation","getState","getCurrentConversation","message","createTextMessage","text","sentMessage","sendMessage","searchLocalMessages","keywordList","messageTypeList","pageIndex","markConversationAsRead","Promise","all","markConversationMessageAsRead","resetConversationGroupAtType","getCurrentUserId","getLoginUserID"],"sourceRoot":"../../../src","sources":["services/message.ts"],"mappings":";;AAAA,OAAOA,SAAS,IACdC,QAAQ,QAGH,+BAA+B;AACtC,SAASC,oBAAoB,QAAQ,mBAAU;AAC/C,SAASC,aAAa,QAAQ,qBAAkB;AAEhD,MAAMC,iBAAiB,GAAG,EAAE;AAAC,WAMZC,cAAc;AAAA,WAAAC,eAAA;EACtB,eAAeC,oBAAoBA,CACxCC,cAAsB,EACtBC,OAKC,EAC8B;IAC/B,OAAOT,SAAS,CAACU,gCAAgC,CAAC;MAChDF,cAAc;MACdG,KAAK,EAAEF,OAAO,EAAEE,KAAK,IAAIP,iBAAiB;MAC1CQ,gBAAgB,EAAEH,OAAO,EAAEG,gBAAgB,IAAI,EAAE;MACjDC,QAAQ,EAAEZ,QAAQ,CAACa,OAAO;MAC1BC,eAAe,EAAEN,OAAO,EAAEM,eAAe,IAAI;IAC/C,CAAC,CAAC;EACJ;EAACT,eAAA,CAAAC,oBAAA,GAAAA,oBAAA;EAEM,eAAeS,eAAeA,CAACC,MAErC,EAAwB;IACvB,MAAMC,mBAAmB,GAAGhB,oBAAoB,CAC7CiB,QAAQ,CAAC,CAAC,CACVC,sBAAsB,CAAC,CAAC;IAE3B,MAAMC,OAAO,GAAG,MAAMrB,SAAS,CAACsB,iBAAiB,CAACL,MAAM,CAACM,IAAI,CAAC;IAE9D,MAAMC,WAAW,GAAG,MAAMxB,SAAS,CAACyB,WAAW,CAAC;MAC9C,GAAGtB,aAAa,CAACe,mBAAmB,CAAC;MACrCG;IACF,CAAC,CAAC;IAEF,OAAOG,WAAW;EACpB;EAAClB,eAAA,CAAAU,eAAA,GAAAA,eAAA;EAEM,eAAeU,mBAAmBA,CACvClB,cAAsB,EACtBC,OAKC,EACD;IACA,OAAOT,SAAS,CAAC0B,mBAAmB,CAAC;MACnClB,cAAc;MACdmB,WAAW,EAAElB,OAAO,EAAEkB,WAAW,IAAI,CAAC,GAAG,CAAC;MAC1CC,eAAe,EAAEnB,OAAO,EAAEmB,eAAe;MACzCC,SAAS,EAAEpB,OAAO,EAAEoB,SAAS,IAAI,CAAC;MAClClB,KAAK,EAAEF,OAAO,EAAEE,KAAK,IAAI;IAC3B,CAAC,CAAC;EACJ;EAACL,eAAA,CAAAoB,mBAAA,GAAAA,mBAAA;EAEM,eAAeI,sBAAsBA,CAACtB,cAAsB,EAAE;IACnE;IACA;IACA;IACA;IACA;IACA,OAAOuB,OAAO,CAACC,GAAG,CAAC,CACjBhC,SAAS,CAACiC,6BAA6B,CAACzB,cAAc,CAAC,EACvDR,SAAS,CAACkC,4BAA4B,CAAC1B,cAAc,CAAC,CACvD,CAAC;EACJ;EAACF,eAAA,CAAAwB,sBAAA,GAAAA,sBAAA;EAEM,eAAeK,gBAAgBA,CAAA,EAAG;IACvC,OAAOnC,SAAS,CAACoC,cAAc,CAAC,CAAC;EACnC;EAAC9B,eAAA,CAAA6B,gBAAA,GAAAA,gBAAA;AAAA,GApEc9B,cAAc,KAAdA,cAAc","ignoreList":[]}
|
|
@@ -172,7 +172,13 @@ const i18nKey = {
|
|
|
172
172
|
'search:empty_hint': 'Bạn có thể tìm kiếm theo liên hệ hoặc nội dung tin nhắn',
|
|
173
173
|
'search_message:empty_hint': 'Bạn có thể tìm kiếm theo nội dung tin nhắn',
|
|
174
174
|
'search_conversation:empty_hint': 'Bạn có thể tìm kiếm theo liên hệ',
|
|
175
|
+
'search_community:empty_hint': 'Bạn có thể tìm kiếm theo tên nhóm cộng đồng',
|
|
175
176
|
'view_all': 'Xem tất cả',
|
|
177
|
+
'contact_type:customer': 'Khách hàng',
|
|
178
|
+
'contact_type:pdp': 'PDP',
|
|
179
|
+
'contact_type:group': 'Nhóm',
|
|
180
|
+
'contact_type:seller': 'Người bán',
|
|
181
|
+
'group:no_description': 'Chưa có mô tả nhóm',
|
|
176
182
|
'search_message:revoked_message': 'Tin nhắn đã được thu hồi',
|
|
177
183
|
'chat:no_permission': 'Bạn không có quyền này',
|
|
178
184
|
'chat:no_send_permission': 'Bạn không có quyền gửi tin nhắn',
|
|
@@ -191,6 +197,11 @@ const i18nKey = {
|
|
|
191
197
|
'group:dismiss_confirm_primary': 'Giải tán',
|
|
192
198
|
'group:dismiss_confirm_secondary': 'Quay lại',
|
|
193
199
|
'group:dismiss_toast_success': 'Đã giải tán nhóm',
|
|
200
|
+
'group:tag_title': 'Nhắc đến',
|
|
201
|
+
'group:tag_all': 'Tất cả',
|
|
202
|
+
'group:tag_all_desc': 'Nhắc đến tất cả thành viên',
|
|
203
|
+
'group:tag_no_member_found': 'Không tìm thấy thành viên nào',
|
|
204
|
+
'group:tag_limit_exceeded': 'Chỉ {{max}} người được nhắc đến đầu tiên sẽ nhận được thông báo',
|
|
194
205
|
'group:access_blocked_title': 'Không thể xem cuộc trò chuyện này',
|
|
195
206
|
'group:access_blocked_desc': 'Bạn hiện không có quyền truy cập vào cuộc trò chuyện hoặc tin nhắn này.',
|
|
196
207
|
'group:access_blocked_button': 'Đã hiểu'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["i18nKey","vi"],"sourceRoot":"../../../../src","sources":["translation/resources/i18n.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["i18nKey","vi"],"sourceRoot":"../../../../src","sources":["translation/resources/i18n.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/types/chat.js
CHANGED
|
@@ -90,4 +90,12 @@ export let DThreadResourceContentType = /*#__PURE__*/function (DThreadResourceCo
|
|
|
90
90
|
* (`{ chatLog, isRevoked, tag, displayTag }`), NOT `{ items: [...] }` — corrected
|
|
91
91
|
* after fetching a real response (initial assumption was wrong).
|
|
92
92
|
*/
|
|
93
|
+
|
|
94
|
+
export let ContactCategory = /*#__PURE__*/function (ContactCategory) {
|
|
95
|
+
ContactCategory["Customer"] = "CUSTOMER";
|
|
96
|
+
ContactCategory["Pdp"] = "PDP_BOT";
|
|
97
|
+
ContactCategory["Group"] = "GROUP";
|
|
98
|
+
ContactCategory["Seller"] = "USER";
|
|
99
|
+
return ContactCategory;
|
|
100
|
+
}({});
|
|
93
101
|
//# sourceMappingURL=chat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventProvider","ga","appsflyer","netcore","DChatApplicationType","DChatPlatform","DChatProject","DChatCategory","DMemberRole","DFlowState","DBotStatusValue","DBotType","SyncStatus","ConnectStatus","CustomMessageType","Order","Product","DThreadResourceContentType"],"sourceRoot":"../../../src","sources":["types/chat.ts"],"mappings":";;AAkBA,OAAO,MAAMA,aAAa,GAAG;EAC3BC,EAAE,EAAE,IAAI;EACRC,SAAS,EAAE,WAAW;EACtBC,OAAO,EAAE;AACX,CAAU;AAgCV,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAKhC,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAMzB,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAKxB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAQzB,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKvB,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAatB,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAK3B,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;;AAgBpB;AACA;AACA;AACA;;AASA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAMtB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;
|
|
1
|
+
{"version":3,"names":["EventProvider","ga","appsflyer","netcore","DChatApplicationType","DChatPlatform","DChatProject","DChatCategory","DMemberRole","DFlowState","DBotStatusValue","DBotType","SyncStatus","ConnectStatus","CustomMessageType","Order","Product","DThreadResourceContentType","ContactCategory"],"sourceRoot":"../../../src","sources":["types/chat.ts"],"mappings":";;AAkBA,OAAO,MAAMA,aAAa,GAAG;EAC3BC,EAAE,EAAE,IAAI;EACRC,SAAS,EAAE,WAAW;EACtBC,OAAO,EAAE;AACX,CAAU;AAgCV,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAKhC,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAMzB,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAKxB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAQzB,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKvB,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAatB,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAK3B,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;;AAgBpB;AACA;AACA;AACA;;AASA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAMtB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AA8HzB,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE;AACX,CAAU;AAeV,WAAYC,0BAA0B,0BAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAA1BA,0BAA0B,CAA1BA,0BAA0B;EAAA,OAA1BA,0BAA0B;AAAA;;AA0BtC;AACA;AACA;AACA;AACA;AACA;;AAmBA;AACA;AACA;AACA;AACA;;AAiCA,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/mention.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* Date and time formatting utilities
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import dayjs from 'dayjs';
|
|
8
|
+
import relativeTime from 'dayjs/plugin/relativeTime';
|
|
9
|
+
import 'dayjs/locale/vi';
|
|
10
|
+
dayjs.extend(relativeTime);
|
|
7
11
|
export const formatDuration = durationMs => {
|
|
8
12
|
// Convert milliseconds to seconds
|
|
9
13
|
const totalSeconds = Math.floor(durationMs / 1000);
|
|
@@ -41,4 +45,10 @@ export const formatTimestamp = ts => {
|
|
|
41
45
|
return '';
|
|
42
46
|
}
|
|
43
47
|
};
|
|
48
|
+
export const formatLastOnlineTime = ts => {
|
|
49
|
+
if (!ts) return '';
|
|
50
|
+
const date = dayjs(ts).locale('vi');
|
|
51
|
+
if (!date.isValid()) return '';
|
|
52
|
+
return date.fromNow();
|
|
53
|
+
};
|
|
44
54
|
//# sourceMappingURL=dateTimeUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["formatDuration","durationMs","totalSeconds","Math","floor","mins","secs","toString","padStart","formatTimestamp","ts","date","Date","isNaN","getTime","now","today","getFullYear","getMonth","getDate","dateOnly","h","getHours","m","getMinutes","d","mo"],"sourceRoot":"../../../src","sources":["utils/dateTimeUtils.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,OAAO,
|
|
1
|
+
{"version":3,"names":["dayjs","relativeTime","extend","formatDuration","durationMs","totalSeconds","Math","floor","mins","secs","toString","padStart","formatTimestamp","ts","date","Date","isNaN","getTime","now","today","getFullYear","getMonth","getDate","dateOnly","h","getHours","m","getMinutes","d","mo","formatLastOnlineTime","locale","isValid","fromNow"],"sourceRoot":"../../../src","sources":["utils/dateTimeUtils.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,YAAY,MAAM,2BAA2B;AACpD,OAAO,iBAAiB;AAExBD,KAAK,CAACE,MAAM,CAACD,YAAY,CAAC;AAE1B,OAAO,MAAME,cAAc,GAAIC,UAAkB,IAAa;EAC5D;EACA,MAAMC,YAAY,GAAGC,IAAI,CAACC,KAAK,CAACH,UAAU,GAAG,IAAI,CAAC;EAClD,MAAMI,IAAI,GAAGF,IAAI,CAACC,KAAK,CAACF,YAAY,GAAG,EAAE,CAAC;EAC1C,MAAMI,IAAI,GAAGJ,YAAY,GAAG,EAAE;EAC9B,OAAO,GAAGG,IAAI,IAAIC,IAAI,CAACC,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACtD,CAAC;AAED,OAAO,MAAMC,eAAe,GAAIC,EAA0B,IAAa;EACrE,IAAI,CAACA,EAAE,EAAE,OAAO,EAAE;EAElB,IAAI;IACF,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,EAAE,CAAC;IACzB,IAAIG,KAAK,CAACF,IAAI,CAACG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE;IAEpC,MAAMC,GAAG,GAAG,IAAIH,IAAI,CAAC,CAAC;IACtB,MAAMI,KAAK,GAAG,IAAIJ,IAAI,CAACG,GAAG,CAACE,WAAW,CAAC,CAAC,EAAEF,GAAG,CAACG,QAAQ,CAAC,CAAC,EAAEH,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC;IACxE;IACA,MAAMC,QAAQ,GAAG,IAAIR,IAAI,CACvBD,IAAI,CAACM,WAAW,CAAC,CAAC,EAClBN,IAAI,CAACO,QAAQ,CAAC,CAAC,EACfP,IAAI,CAACQ,OAAO,CAAC,CACf,CAAC;;IAED;IACA,IAAIC,QAAQ,CAACN,OAAO,CAAC,CAAC,KAAKE,KAAK,CAACF,OAAO,CAAC,CAAC,EAAE;MAC1C,MAAMO,CAAC,GAAGV,IAAI,CAACW,QAAQ,CAAC,CAAC,CAACf,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MACrD,MAAMe,CAAC,GAAGZ,IAAI,CAACa,UAAU,CAAC,CAAC,CAACjB,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MACvD,OAAO,GAAGa,CAAC,IAAIE,CAAC,EAAE;IACpB;;IAEA;IACA;IACA;IACA;;IAEA;IACA,MAAME,CAAC,GAAGd,IAAI,CAACQ,OAAO,CAAC,CAAC,CAACZ,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACpD,MAAMkB,EAAE,GAAG,CAACf,IAAI,CAACO,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAEX,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5D,OAAO,GAAGiB,CAAC,IAAIC,EAAE,EAAE;EACrB,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAAIjB,EAA0B,IAAa;EAC1E,IAAI,CAACA,EAAE,EAAE,OAAO,EAAE;EAElB,MAAMC,IAAI,GAAGd,KAAK,CAACa,EAAE,CAAC,CAACkB,MAAM,CAAC,IAAI,CAAC;EACnC,IAAI,CAACjB,IAAI,CAACkB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE;EAE9B,OAAOlB,IAAI,CAACmB,OAAO,CAAC,CAAC;AACvB,CAAC","ignoreList":[]}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
// Strips Vietnamese diacritics one base-character-at-a-time (NFD decomposition +
|
|
4
|
+
// combining-mark removal, plus đ/Đ which NFD doesn't decompose) so the result stays
|
|
5
|
+
// the same length and index-aligned with the input
|
|
6
|
+
const stripDiacritics = input => input.normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/đ/g, 'd').replace(/Đ/g, 'D');
|
|
3
7
|
export const highlightSearch = (text, keyword, maxLength = 30) => {
|
|
4
8
|
if (!keyword) return null;
|
|
5
|
-
const lowerText = text.toLowerCase();
|
|
6
|
-
const lowerKeyword = keyword.toLowerCase();
|
|
9
|
+
const lowerText = stripDiacritics(text.toLowerCase());
|
|
10
|
+
const lowerKeyword = stripDiacritics(keyword.toLowerCase());
|
|
7
11
|
const index = lowerText.indexOf(lowerKeyword);
|
|
8
12
|
if (index === -1) return null;
|
|
9
13
|
const before = text.slice(0, index);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["highlightSearch","text","keyword","maxLength","lowerText","toLowerCase","lowerKeyword","index","indexOf","before","slice","match","length","after","remain","left","Math","floor","right","displayedBefore","displayedAfter"],"sourceRoot":"../../../src","sources":["utils/highlightSearch.ts"],"mappings":";;AAMA,OAAO,
|
|
1
|
+
{"version":3,"names":["stripDiacritics","input","normalize","replace","highlightSearch","text","keyword","maxLength","lowerText","toLowerCase","lowerKeyword","index","indexOf","before","slice","match","length","after","remain","left","Math","floor","right","displayedBefore","displayedAfter"],"sourceRoot":"../../../src","sources":["utils/highlightSearch.ts"],"mappings":";;AAMA;AACA;AACA;AACA,MAAMA,eAAe,GAAIC,KAAa,IACpCA,KAAK,CACFC,SAAS,CAAC,KAAK,CAAC,CAChBC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAC/BA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAClBA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAEvB,OAAO,MAAMC,eAAe,GAAGA,CAC7BC,IAAY,EACZC,OAAe,EACfC,SAAS,GAAG,EAAE,KACa;EAC3B,IAAI,CAACD,OAAO,EAAE,OAAO,IAAI;EAEzB,MAAME,SAAS,GAAGR,eAAe,CAACK,IAAI,CAACI,WAAW,CAAC,CAAC,CAAC;EACrD,MAAMC,YAAY,GAAGV,eAAe,CAACM,OAAO,CAACG,WAAW,CAAC,CAAC,CAAC;EAC3D,MAAME,KAAK,GAAGH,SAAS,CAACI,OAAO,CAACF,YAAY,CAAC;EAE7C,IAAIC,KAAK,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI;EAE7B,MAAME,MAAM,GAAGR,IAAI,CAACS,KAAK,CAAC,CAAC,EAAEH,KAAK,CAAC;EACnC,MAAMI,KAAK,GAAGV,IAAI,CAACS,KAAK,CAACH,KAAK,EAAEA,KAAK,GAAGL,OAAO,CAACU,MAAM,CAAC;EACvD,MAAMC,KAAK,GAAGZ,IAAI,CAACS,KAAK,CAACH,KAAK,GAAGL,OAAO,CAACU,MAAM,CAAC;EAEhD,IAAIV,OAAO,CAACU,MAAM,IAAIT,SAAS,EAAE;IAC/B,OAAO;MAAEM,MAAM,EAAE,EAAE;MAAEE,KAAK,EAAEA,KAAK,CAACD,KAAK,CAAC,CAAC,EAAEP,SAAS,CAAC;MAAEU,KAAK,EAAE;IAAG,CAAC;EACpE;EAEA,MAAMC,MAAM,GAAGX,SAAS,GAAGQ,KAAK,CAACC,MAAM;EACvC,IAAIG,IAAI,GAAGC,IAAI,CAACC,KAAK,CAACH,MAAM,GAAG,CAAC,CAAC;EACjC,IAAII,KAAK,GAAGJ,MAAM,GAAGC,IAAI;EAEzB,IAAIN,MAAM,CAACG,MAAM,GAAGG,IAAI,EAAE;IACxBG,KAAK,IAAIH,IAAI,GAAGN,MAAM,CAACG,MAAM;IAC7BG,IAAI,GAAGN,MAAM,CAACG,MAAM;EACtB;EAEA,IAAIC,KAAK,CAACD,MAAM,GAAGM,KAAK,EAAE;IACxBH,IAAI,IAAIG,KAAK,GAAGL,KAAK,CAACD,MAAM;IAC5BM,KAAK,GAAGL,KAAK,CAACD,MAAM;EACtB;EAEA,MAAMO,eAAe,GACnBV,MAAM,CAACG,MAAM,GAAGG,IAAI,GAAG,GAAG,GAAGN,MAAM,CAACC,KAAK,CAACD,MAAM,CAACG,MAAM,GAAGG,IAAI,CAAC,GAAGN,MAAM;EAC1E,MAAMW,cAAc,GAClBP,KAAK,CAACD,MAAM,GAAGM,KAAK,GAAGL,KAAK,CAACH,KAAK,CAAC,CAAC,EAAEQ,KAAK,CAAC,GAAG,GAAG,GAAGL,KAAK;EAE5D,OAAO;IAAEJ,MAAM,EAAEU,eAAe;IAAER,KAAK;IAAEE,KAAK,EAAEO;EAAe,CAAC;AAClE,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** Composer-internal marker for the "Tất cả" suggestion row / a committed
|
|
4
|
+
* "tag everyone" Mention — never sent on the wire, see AT_ALL_TAG below. */
|
|
5
|
+
export const ALL_MEMBERS_USER_ID = 'ALL';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* OpenIM's own protocol sentinel for "everyone in the group", used inside
|
|
9
|
+
* atUserIDList in place of enumerating every member. Confirmed against
|
|
10
|
+
* openimsdk-core (pkg/constant/constant.go:242 — `AtAllString = "AtAllTag"`,
|
|
11
|
+
* exposed client-side as `GetAtAllTag()`) and openim-server's group-message
|
|
12
|
+
* send path (internal/rpc/msg/send.go's `setConversationAtInfo`), which
|
|
13
|
+
* special-cases exactly this string and does the "who is everyone right
|
|
14
|
+
* now" resolution itself, server-side.
|
|
15
|
+
*
|
|
16
|
+
* This is why "Tất cả" must serialize to this one token instead of
|
|
17
|
+
* expanding to every resolved member's userID client-side (the previous
|
|
18
|
+
* approach): the Go core's CreateTextAtMessage hard-rejects any
|
|
19
|
+
* atUserIDList longer than 10 entries regardless of group size
|
|
20
|
+
* (openimsdk-core/internal/conversation_msg/create_message.go:80-82) — a
|
|
21
|
+
* >10-member group's "Tất cả" silently failed to send at all. Sending just
|
|
22
|
+
* `[AT_ALL_TAG]` keeps atUserIDList small no matter the group size, and is
|
|
23
|
+
* also the behavior the protocol actually expects.
|
|
24
|
+
*/
|
|
25
|
+
export const AT_ALL_TAG = 'AtAllTag';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* OpenIM's Go core hard-rejects any AtMsgParams.atUserIDList longer than
|
|
29
|
+
* this (openimsdk-core/internal/conversation_msg/create_message.go:80-82,
|
|
30
|
+
* `if len(userIDList) > 10 { return nil, sdkerrs.ErrArgs }`) — not
|
|
31
|
+
* adjustable client-side. "Tất cả" no longer risks this (see AT_ALL_TAG),
|
|
32
|
+
* but tagging more than 10 *individual* members in one message still
|
|
33
|
+
* would, so serializeMentionsForSend caps atUserIDList/atUsersInfo at this
|
|
34
|
+
* count (keeping the first MAX_AT_USER_COUNT, in mention order) rather
|
|
35
|
+
* than letting the send fail outright the way "Tất cả" used to.
|
|
36
|
+
*/
|
|
37
|
+
export const MAX_AT_USER_COUNT = 10;
|
|
38
|
+
/**
|
|
39
|
+
* Translates the composer's Mention[] (client-side ranges) into OpenIM's
|
|
40
|
+
* wire shapes for createTextAtMessage, plus our own ex.mentions channel. No
|
|
41
|
+
* group-member resolution needed here (or by the caller) any more — see
|
|
42
|
+
* AT_ALL_TAG's doc comment for why a "Tất cả" mention maps to that single
|
|
43
|
+
* sentinel rather than a per-member list.
|
|
44
|
+
*/
|
|
45
|
+
export function serializeMentionsForSend(mentions) {
|
|
46
|
+
const wireUserId = m => m.userId === ALL_MEMBERS_USER_ID ? AT_ALL_TAG : m.userId;
|
|
47
|
+
const exMentions = mentions.map(m => ({
|
|
48
|
+
userID: wireUserId(m),
|
|
49
|
+
offset: m.start,
|
|
50
|
+
length: m.end - m.start
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
// Map dedupes by userID — e.g. "Tất cả" and an individually-tagged member
|
|
54
|
+
// both present in the same message only produce one atUserIDList entry
|
|
55
|
+
// each, not duplicates. Insertion order == mention order, which is what
|
|
56
|
+
// makes "keep the first MAX_AT_USER_COUNT" below well-defined.
|
|
57
|
+
const nicknameByUserId = new Map();
|
|
58
|
+
for (const m of mentions) {
|
|
59
|
+
nicknameByUserId.set(wireUserId(m), m.displayName);
|
|
60
|
+
}
|
|
61
|
+
const allEntries = [...nicknameByUserId.entries()];
|
|
62
|
+
const truncated = allEntries.length > MAX_AT_USER_COUNT;
|
|
63
|
+
const cappedEntries = truncated ? allEntries.slice(0, MAX_AT_USER_COUNT) : allEntries;
|
|
64
|
+
return {
|
|
65
|
+
atUserIDList: cappedEntries.map(([atUserID]) => atUserID),
|
|
66
|
+
atUsersInfo: cappedEntries.map(([atUserID, groupNickname]) => ({
|
|
67
|
+
atUserID,
|
|
68
|
+
groupNickname
|
|
69
|
+
})),
|
|
70
|
+
exMentions,
|
|
71
|
+
truncated
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Reverse of serializeMentionsForSend, for rendering a received/sent
|
|
76
|
+
* AtTextMessage (Phase B3). Prefers `exMentions` (exact, our own channel);
|
|
77
|
+
* falls back to searching `atTextElem.text` for "@{groupNickname}" per
|
|
78
|
+
* atUsersInfo entry when ex is absent — an interop safety net, not the
|
|
79
|
+
* primary path. The fallback is inherently ambiguous if a member's
|
|
80
|
+
* nickname coincidentally appears elsewhere in the message as plain text;
|
|
81
|
+
* accepted as a known, documented limitation (see the mention plan's
|
|
82
|
+
* finding #3) rather than something client code can fully resolve without
|
|
83
|
+
* position data from the protocol.
|
|
84
|
+
*/
|
|
85
|
+
export function deserializeMentionRanges(atTextElem, exMentions) {
|
|
86
|
+
if (exMentions && exMentions.length > 0) {
|
|
87
|
+
return exMentions.map((e, index) => ({
|
|
88
|
+
id: `${e.userID}-${e.offset}-${index}`,
|
|
89
|
+
userId: e.userID,
|
|
90
|
+
displayName: atTextElem.text.slice(e.offset, e.offset + e.length).replace(/^@/, ''),
|
|
91
|
+
start: e.offset,
|
|
92
|
+
end: e.offset + e.length
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
const nicknameByUserId = new Map((atTextElem.atUsersInfo ?? []).map(i => [i.atUserID, i.groupNickname]));
|
|
96
|
+
const mentions = [];
|
|
97
|
+
for (const userId of atTextElem.atUserList) {
|
|
98
|
+
const nickname = nicknameByUserId.get(userId);
|
|
99
|
+
if (!nickname) continue;
|
|
100
|
+
const needle = `@${nickname}`;
|
|
101
|
+
const start = atTextElem.text.indexOf(needle);
|
|
102
|
+
if (start === -1) continue;
|
|
103
|
+
mentions.push({
|
|
104
|
+
id: `${userId}-${start}`,
|
|
105
|
+
userId,
|
|
106
|
+
displayName: nickname,
|
|
107
|
+
start,
|
|
108
|
+
end: start + needle.length
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return mentions;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=mentionSerializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ALL_MEMBERS_USER_ID","AT_ALL_TAG","MAX_AT_USER_COUNT","serializeMentionsForSend","mentions","wireUserId","m","userId","exMentions","map","userID","offset","start","length","end","nicknameByUserId","Map","set","displayName","allEntries","entries","truncated","cappedEntries","slice","atUserIDList","atUserID","atUsersInfo","groupNickname","deserializeMentionRanges","atTextElem","e","index","id","text","replace","i","atUserList","nickname","get","needle","indexOf","push"],"sourceRoot":"../../../src","sources":["utils/mentionSerializer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export { findActiveMention } from "./mentionDetector.js";
|
|
4
|
+
export { diffTextChange, snapBoundary } from "./mentionDiff.js";
|
|
5
|
+
export { insertMention, reconcileMentions, normalizeDeleteRange, applyTextChange } from "./mentionRange.js";
|
|
6
|
+
export { tokenize } from "./mentionTokenize.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["findActiveMention","diffTextChange","snapBoundary","insertMention","reconcileMentions","normalizeDeleteRange","applyTextChange","tokenize"],"sourceRoot":"../../../../src","sources":["utils/mentions/index.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,sBAAmB;AACrD,SACEC,cAAc,EACdC,YAAY,QAEP,kBAAe;AACtB,SACEC,aAAa,EACbC,iBAAiB,EACjBC,oBAAoB,EACpBC,eAAe,QAIV,mBAAgB;AACvB,SAASC,QAAQ,QAAsB,sBAAmB","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// No realistic @query is longer than this — caps the backward scan so the
|
|
4
|
+
// common case (cursor nowhere near an '@') bails in O(word length), not
|
|
5
|
+
// O(text length).
|
|
6
|
+
const MAX_ACTIVE_MENTION_SCAN = 64;
|
|
7
|
+
const isBoundaryChar = ch => /\s/.test(ch);
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Scans backward from `cursor` for an unclosed "@query" — the in-progress
|
|
11
|
+
* trigger that drives the suggestion list, not a committed mention.
|
|
12
|
+
*
|
|
13
|
+
* Only called for a collapsed cursor (selection.start === selection.end);
|
|
14
|
+
* the caller must resolve a range selection to `null` before calling this —
|
|
15
|
+
* a live "@query" only makes sense at a single insertion point.
|
|
16
|
+
*
|
|
17
|
+
* "@" itself counts as a boundary: the scan stops there whether or not it's
|
|
18
|
+
* a valid trigger, which is what prevents re-scanning back through an
|
|
19
|
+
* already-committed mention's "@Name " when the user starts typing a second
|
|
20
|
+
* "@" right after it (insertMention always appends a trailing space, a
|
|
21
|
+
* boundary char, so the previous mention's "@" is never reachable from the
|
|
22
|
+
* new query).
|
|
23
|
+
*/
|
|
24
|
+
export function findActiveMention(text, cursor) {
|
|
25
|
+
if (cursor <= 0 || cursor > text.length) return null;
|
|
26
|
+
let i = cursor;
|
|
27
|
+
let scanned = 0;
|
|
28
|
+
while (i > 0 && scanned < MAX_ACTIVE_MENTION_SCAN) {
|
|
29
|
+
const ch = text[i - 1];
|
|
30
|
+
if (ch === '@') {
|
|
31
|
+
const before = i - 2 >= 0 ? text[i - 2] : undefined;
|
|
32
|
+
if (before === undefined || isBoundaryChar(before)) {
|
|
33
|
+
return {
|
|
34
|
+
trigger: '@',
|
|
35
|
+
start: i - 1,
|
|
36
|
+
end: cursor,
|
|
37
|
+
keyword: text.slice(i, cursor)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// '@' present but not at a valid boundary (e.g. "user@domain") — not a trigger.
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
if (isBoundaryChar(ch)) return null;
|
|
44
|
+
i--;
|
|
45
|
+
scanned++;
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=mentionDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MAX_ACTIVE_MENTION_SCAN","isBoundaryChar","ch","test","findActiveMention","text","cursor","length","i","scanned","before","undefined","trigger","start","end","keyword","slice"],"sourceRoot":"../../../../src","sources":["utils/mentions/mentionDetector.ts"],"mappings":";;AAEA;AACA;AACA;AACA,MAAMA,uBAAuB,GAAG,EAAE;AAElC,MAAMC,cAAc,GAAIC,EAAU,IAAK,IAAI,CAACC,IAAI,CAACD,EAAE,CAAC;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,iBAAiBA,CAC/BC,IAAY,EACZC,MAAc,EACQ;EACtB,IAAIA,MAAM,IAAI,CAAC,IAAIA,MAAM,GAAGD,IAAI,CAACE,MAAM,EAAE,OAAO,IAAI;EAEpD,IAAIC,CAAC,GAAGF,MAAM;EACd,IAAIG,OAAO,GAAG,CAAC;EAEf,OAAOD,CAAC,GAAG,CAAC,IAAIC,OAAO,GAAGT,uBAAuB,EAAE;IACjD,MAAME,EAAE,GAAGG,IAAI,CAACG,CAAC,GAAG,CAAC,CAAW;IAEhC,IAAIN,EAAE,KAAK,GAAG,EAAE;MACd,MAAMQ,MAAM,GAAGF,CAAC,GAAG,CAAC,IAAI,CAAC,GAAGH,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGG,SAAS;MACnD,IAAID,MAAM,KAAKC,SAAS,IAAIV,cAAc,CAACS,MAAM,CAAC,EAAE;QAClD,OAAO;UACLE,OAAO,EAAE,GAAG;UACZC,KAAK,EAAEL,CAAC,GAAG,CAAC;UACZM,GAAG,EAAER,MAAM;UACXS,OAAO,EAAEV,IAAI,CAACW,KAAK,CAACR,CAAC,EAAEF,MAAM;QAC/B,CAAC;MACH;MACA;MACA,OAAO,IAAI;IACb;IAEA,IAAIL,cAAc,CAACC,EAAE,CAAC,EAAE,OAAO,IAAI;IAEnCM,CAAC,EAAE;IACHC,OAAO,EAAE;EACX;EAEA,OAAO,IAAI;AACb","ignoreList":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// RN's onChangeText hands over only the new full string — no delta, no
|
|
4
|
+
// info about what was inserted/deleted/replaced. A common-prefix +
|
|
5
|
+
// common-suffix scan is the only viable way to localize the changed region,
|
|
6
|
+
// and it's IME-safe for free: a Vietnamese diacritic recomposition (e.g.
|
|
7
|
+
// "tie" + accent key -> "tiế") is just "two different strings" to this
|
|
8
|
+
// algorithm, not a keystroke sequence it has to track.
|
|
9
|
+
//
|
|
10
|
+
// Assumes exactly one contiguous edit happened between the two strings —
|
|
11
|
+
// true for every realistic single-field mutation (typing, backspace,
|
|
12
|
+
// paste, autocorrect, IME composition). If that assumption is ever wrong
|
|
13
|
+
// (some exotic keyboard rewriting two disjoint spans in one event), the
|
|
14
|
+
// failure mode is safe-by-default: the computed region is a superset of
|
|
15
|
+
// the true edits, so callers may over-invalidate mention ranges but never
|
|
16
|
+
// corrupt them.
|
|
17
|
+
|
|
18
|
+
const isHighSurrogate = code => code >= 0xd800 && code <= 0xdbff;
|
|
19
|
+
const isLowSurrogate = code => code >= 0xdc00 && code <= 0xdfff;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Snaps `index` so it never sits between a surrogate pair in `str` —
|
|
23
|
+
* without this, diffing e.g. "😀" vs "😁" (which differ only in their low
|
|
24
|
+
* surrogate) would compute a boundary that bisects the emoji. Snapping
|
|
25
|
+
* always shrinks the "common" region (treats one more code point as
|
|
26
|
+
* "changed"), which is always safe: being more conservative about what
|
|
27
|
+
* counts as touched only ever produces more mention-invalidation upstream,
|
|
28
|
+
* never corruption.
|
|
29
|
+
*/
|
|
30
|
+
export function snapBoundary(str, index, direction) {
|
|
31
|
+
if (index > 0 && index < str.length && isHighSurrogate(str.charCodeAt(index - 1)) && isLowSurrogate(str.charCodeAt(index))) {
|
|
32
|
+
return index + direction;
|
|
33
|
+
}
|
|
34
|
+
return index;
|
|
35
|
+
}
|
|
36
|
+
export function diffTextChange(previousText, nextText) {
|
|
37
|
+
const prevLen = previousText.length;
|
|
38
|
+
const nextLen = nextText.length;
|
|
39
|
+
const maxCommon = Math.min(prevLen, nextLen);
|
|
40
|
+
let prefixLen = 0;
|
|
41
|
+
while (prefixLen < maxCommon && previousText.charCodeAt(prefixLen) === nextText.charCodeAt(prefixLen)) {
|
|
42
|
+
prefixLen++;
|
|
43
|
+
}
|
|
44
|
+
prefixLen = snapBoundary(previousText, prefixLen, -1);
|
|
45
|
+
|
|
46
|
+
// Clamp the suffix scan budget against what's left after the prefix —
|
|
47
|
+
// without this, a naive independent prefix+suffix scan can overlap on
|
|
48
|
+
// repeated-character edits (e.g. "aaa" -> "aaaa") and produce a
|
|
49
|
+
// negative-length "changed" region.
|
|
50
|
+
const maxSuffix = maxCommon - prefixLen;
|
|
51
|
+
let suffixLen = 0;
|
|
52
|
+
while (suffixLen < maxSuffix && previousText.charCodeAt(prevLen - 1 - suffixLen) === nextText.charCodeAt(nextLen - 1 - suffixLen)) {
|
|
53
|
+
suffixLen++;
|
|
54
|
+
}
|
|
55
|
+
let removedEnd = prevLen - suffixLen;
|
|
56
|
+
let insertedEnd = nextLen - suffixLen;
|
|
57
|
+
removedEnd = snapBoundary(previousText, removedEnd, 1);
|
|
58
|
+
insertedEnd = snapBoundary(nextText, insertedEnd, 1);
|
|
59
|
+
return {
|
|
60
|
+
removedStart: prefixLen,
|
|
61
|
+
removedEnd,
|
|
62
|
+
insertedStart: prefixLen,
|
|
63
|
+
insertedEnd
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=mentionDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isHighSurrogate","code","isLowSurrogate","snapBoundary","str","index","direction","length","charCodeAt","diffTextChange","previousText","nextText","prevLen","nextLen","maxCommon","Math","min","prefixLen","maxSuffix","suffixLen","removedEnd","insertedEnd","removedStart","insertedStart"],"sourceRoot":"../../../../src","sources":["utils/mentions/mentionDiff.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,eAAe,GAAIC,IAAY,IAAKA,IAAI,IAAI,MAAM,IAAIA,IAAI,IAAI,MAAM;AAC1E,MAAMC,cAAc,GAAID,IAAY,IAAKA,IAAI,IAAI,MAAM,IAAIA,IAAI,IAAI,MAAM;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,YAAYA,CAC1BC,GAAW,EACXC,KAAa,EACbC,SAAiB,EACT;EACR,IACED,KAAK,GAAG,CAAC,IACTA,KAAK,GAAGD,GAAG,CAACG,MAAM,IAClBP,eAAe,CAACI,GAAG,CAACI,UAAU,CAACH,KAAK,GAAG,CAAC,CAAC,CAAC,IAC1CH,cAAc,CAACE,GAAG,CAACI,UAAU,CAACH,KAAK,CAAC,CAAC,EACrC;IACA,OAAOA,KAAK,GAAGC,SAAS;EAC1B;EACA,OAAOD,KAAK;AACd;AAWA,OAAO,SAASI,cAAcA,CAC5BC,YAAoB,EACpBC,QAAgB,EACA;EAChB,MAAMC,OAAO,GAAGF,YAAY,CAACH,MAAM;EACnC,MAAMM,OAAO,GAAGF,QAAQ,CAACJ,MAAM;EAC/B,MAAMO,SAAS,GAAGC,IAAI,CAACC,GAAG,CAACJ,OAAO,EAAEC,OAAO,CAAC;EAE5C,IAAII,SAAS,GAAG,CAAC;EACjB,OACEA,SAAS,GAAGH,SAAS,IACrBJ,YAAY,CAACF,UAAU,CAACS,SAAS,CAAC,KAAKN,QAAQ,CAACH,UAAU,CAACS,SAAS,CAAC,EACrE;IACAA,SAAS,EAAE;EACb;EACAA,SAAS,GAAGd,YAAY,CAACO,YAAY,EAAEO,SAAS,EAAE,CAAC,CAAC,CAAC;;EAErD;EACA;EACA;EACA;EACA,MAAMC,SAAS,GAAGJ,SAAS,GAAGG,SAAS;EACvC,IAAIE,SAAS,GAAG,CAAC;EACjB,OACEA,SAAS,GAAGD,SAAS,IACrBR,YAAY,CAACF,UAAU,CAACI,OAAO,GAAG,CAAC,GAAGO,SAAS,CAAC,KAC9CR,QAAQ,CAACH,UAAU,CAACK,OAAO,GAAG,CAAC,GAAGM,SAAS,CAAC,EAC9C;IACAA,SAAS,EAAE;EACb;EAEA,IAAIC,UAAU,GAAGR,OAAO,GAAGO,SAAS;EACpC,IAAIE,WAAW,GAAGR,OAAO,GAAGM,SAAS;EACrCC,UAAU,GAAGjB,YAAY,CAACO,YAAY,EAAEU,UAAU,EAAE,CAAC,CAAC;EACtDC,WAAW,GAAGlB,YAAY,CAACQ,QAAQ,EAAEU,WAAW,EAAE,CAAC,CAAC;EAEpD,OAAO;IACLC,YAAY,EAAEL,SAAS;IACvBG,UAAU;IACVG,aAAa,EAAEN,SAAS;IACxBI;EACF,CAAC;AACH","ignoreList":[]}
|