@droppii-org/chat-mobile 0.2.7 → 0.2.8
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/AttachmentPreview.js +250 -0
- package/lib/module/components/AttachmentPreview.js.map +1 -0
- package/lib/module/components/MediaViewer/index.js +2 -0
- package/lib/module/components/MediaViewer/index.js.map +1 -0
- package/lib/module/components/MediaViewerModal.js +57 -0
- package/lib/module/components/MediaViewerModal.js.map +1 -0
- package/lib/module/components/MergedImageGrid.js +173 -0
- package/lib/module/components/MergedImageGrid.js.map +1 -0
- package/lib/module/components/ThreadCard/thread-card.utils.js +80 -4
- package/lib/module/components/ThreadCard/thread-card.utils.js.map +1 -1
- package/lib/module/components/messages/fileMessage/index.js +26 -0
- package/lib/module/components/messages/fileMessage/index.js.map +1 -0
- package/lib/module/components/messages/imageMessage/index.js +118 -0
- package/lib/module/components/messages/imageMessage/index.js.map +1 -0
- package/lib/module/components/messages/linkMessage/index.js +122 -0
- package/lib/module/components/messages/linkMessage/index.js.map +1 -0
- package/lib/module/components/messages/mergedMessage/index.js +37 -0
- package/lib/module/components/messages/mergedMessage/index.js.map +1 -0
- package/lib/module/components/messages/styles.js +41 -0
- package/lib/module/components/messages/styles.js.map +1 -0
- package/lib/module/components/messages/textMessage/index.js +38 -0
- package/lib/module/components/messages/textMessage/index.js.map +1 -0
- package/lib/module/components/messages/types.js +14 -0
- package/lib/module/components/messages/types.js.map +1 -0
- package/lib/module/components/messages/videoMessage/index.js +110 -0
- package/lib/module/components/messages/videoMessage/index.js.map +1 -0
- package/lib/module/config/api-endpoints.js +66 -0
- package/lib/module/config/api-endpoints.js.map +1 -0
- package/lib/module/config/attachment-priority.js +81 -0
- package/lib/module/config/attachment-priority.js.map +1 -0
- package/lib/module/config/configuration.js +50 -0
- package/lib/module/config/configuration.js.map +1 -0
- package/lib/module/config/index.js +22 -0
- package/lib/module/config/index.js.map +1 -0
- package/lib/module/core/index.js +19 -1
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/core/useChatListener.js +0 -14
- package/lib/module/core/useChatListener.js.map +1 -1
- package/lib/module/hooks/message/useSendMessage.js +10 -5
- package/lib/module/hooks/message/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useChatMessages.js +0 -3
- package/lib/module/hooks/useChatMessages.js.map +1 -1
- package/lib/module/hooks/useImageAttachment.js +263 -0
- package/lib/module/hooks/useImageAttachment.js.map +1 -0
- package/lib/module/hooks/useMediaViewer.js +24 -0
- package/lib/module/hooks/useMediaViewer.js.map +1 -0
- package/lib/module/hooks/useSendAttachment.js +182 -0
- package/lib/module/hooks/useSendAttachment.js.map +1 -0
- package/lib/module/hooks/useVideoAttachment.js +251 -0
- package/lib/module/hooks/useVideoAttachment.js.map +1 -0
- package/lib/module/index.js +13 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/screens/MediaView/VideoPlayer.js +177 -0
- package/lib/module/screens/MediaView/VideoPlayer.js.map +1 -0
- package/lib/module/screens/MediaView/index.js +264 -0
- package/lib/module/screens/MediaView/index.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatComposer.js +190 -196
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetail.js +94 -63
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +5 -13
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/components/ChatInputActions.js +51 -0
- package/lib/module/screens/chat-detail/components/ChatInputActions.js.map +1 -0
- package/lib/module/screens/chat-detail/components/ChatMessageInput.js +93 -0
- package/lib/module/screens/chat-detail/components/ChatMessageInput.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js +221 -0
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js +114 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerState.js +26 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerState.js.map +1 -0
- package/lib/module/screens/chat-detail/index.js +0 -1
- package/lib/module/screens/chat-detail/index.js.map +1 -1
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +33 -13
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
- package/lib/module/screens/chat-detail/legend/messageTypes.js +15 -0
- package/lib/module/screens/chat-detail/legend/messageTypes.js.map +1 -0
- package/lib/module/screens/inbox/MessagesTab.js.map +1 -1
- package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js +61 -0
- package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js.map +1 -0
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js +54 -0
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js.map +1 -0
- package/lib/module/services/attachmentHandlers/index.js +12 -0
- package/lib/module/services/attachmentHandlers/index.js.map +1 -0
- package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js +85 -0
- package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js.map +1 -0
- package/lib/module/services/attachmentOrchestrator.js +225 -0
- package/lib/module/services/attachmentOrchestrator.js.map +1 -0
- package/lib/module/services/auth.js +35 -0
- package/lib/module/services/auth.js.map +1 -0
- package/lib/module/services/endpoints.js +20 -1
- package/lib/module/services/endpoints.js.map +1 -1
- package/lib/module/services/imageUpload.js +126 -0
- package/lib/module/services/imageUpload.js.map +1 -0
- package/lib/module/translation/resources/i18n.js +22 -8
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/types/attachment.js +2 -0
- package/lib/module/types/attachment.js.map +1 -0
- package/lib/module/types/attachmentHandler.js +20 -0
- package/lib/module/types/attachmentHandler.js.map +1 -0
- package/lib/module/types/imageUpload.js +2 -0
- package/lib/module/types/imageUpload.js.map +1 -0
- package/lib/module/types/message.js +1 -0
- package/lib/module/types/message.js.map +1 -1
- package/lib/module/utils/chatImageDimens.js +148 -0
- package/lib/module/utils/chatImageDimens.js.map +1 -0
- package/lib/module/utils/device.js +65 -0
- package/lib/module/utils/device.js.map +1 -0
- package/lib/module/utils/imageUrlOptimizer.js +41 -0
- package/lib/module/utils/imageUrlOptimizer.js.map +1 -0
- package/lib/module/utils/imageUtils.js +69 -0
- package/lib/module/utils/imageUtils.js.map +1 -0
- package/lib/module/utils/resolveMessageType.js +3 -0
- package/lib/module/utils/resolveMessageType.js.map +1 -1
- package/lib/module/utils/ui.js +17 -0
- package/lib/module/utils/ui.js.map +1 -0
- package/lib/module/utils/url.js +1 -1
- package/lib/module/utils/url.js.map +1 -1
- package/lib/module/utils/videoThumbnail.js +62 -0
- package/lib/module/utils/videoThumbnail.js.map +1 -0
- package/lib/typescript/src/components/AttachmentPreview.d.ts +28 -0
- package/lib/typescript/src/components/AttachmentPreview.d.ts.map +1 -0
- package/lib/typescript/src/components/MediaViewer/index.d.ts +1 -0
- package/lib/typescript/src/components/MediaViewer/index.d.ts.map +1 -0
- package/lib/typescript/src/components/MediaViewerModal.d.ts +10 -0
- package/lib/typescript/src/components/MediaViewerModal.d.ts.map +1 -0
- package/lib/typescript/src/components/MergedImageGrid.d.ts +16 -0
- package/lib/typescript/src/components/MergedImageGrid.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/thread-card.utils.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/fileMessage/index.d.ts +3 -0
- package/lib/typescript/src/components/messages/fileMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/imageMessage/index.d.ts +3 -0
- package/lib/typescript/src/components/messages/imageMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/linkMessage/index.d.ts +9 -0
- package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/mergedMessage/index.d.ts +3 -0
- package/lib/typescript/src/components/messages/mergedMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/styles.d.ts +36 -0
- package/lib/typescript/src/components/messages/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/textMessage/index.d.ts +9 -0
- package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/types.d.ts +10 -0
- package/lib/typescript/src/components/messages/types.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/videoMessage/index.d.ts +3 -0
- package/lib/typescript/src/components/messages/videoMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/config/api-endpoints.d.ts +40 -0
- package/lib/typescript/src/config/api-endpoints.d.ts.map +1 -0
- package/lib/typescript/src/config/attachment-priority.d.ts +31 -0
- package/lib/typescript/src/config/attachment-priority.d.ts.map +1 -0
- package/lib/typescript/src/config/configuration.d.ts +30 -0
- package/lib/typescript/src/config/configuration.d.ts.map +1 -0
- package/lib/typescript/src/config/index.d.ts +15 -0
- package/lib/typescript/src/config/index.d.ts.map +1 -0
- package/lib/typescript/src/core/index.d.ts +13 -1
- package/lib/typescript/src/core/index.d.ts.map +1 -1
- package/lib/typescript/src/core/useChatListener.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useChatMessages.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useImageAttachment.d.ts +20 -0
- package/lib/typescript/src/hooks/useImageAttachment.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useMediaViewer.d.ts +13 -0
- package/lib/typescript/src/hooks/useMediaViewer.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useSendAttachment.d.ts +59 -0
- package/lib/typescript/src/hooks/useSendAttachment.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useVideoAttachment.d.ts +29 -0
- package/lib/typescript/src/hooks/useVideoAttachment.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +14 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts +12 -0
- package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts.map +1 -0
- package/lib/typescript/src/screens/MediaView/index.d.ts +11 -0
- package/lib/typescript/src/screens/MediaView/index.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/components/ChatInputActions.d.ts +8 -0
- package/lib/typescript/src/screens/chat-detail/components/ChatInputActions.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts +15 -0
- package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts +23 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts +15 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts +13 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/index.d.ts +0 -2
- package/lib/typescript/src/screens/chat-detail/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +3 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/legend/messageTypes.d.ts +13 -0
- package/lib/typescript/src/screens/chat-detail/legend/messageTypes.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/types.d.ts +4 -1
- package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -1
- package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts +22 -0
- package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts.map +1 -0
- package/lib/typescript/src/services/attachmentHandlers/imageAttachmentHandler.d.ts +3 -0
- package/lib/typescript/src/services/attachmentHandlers/imageAttachmentHandler.d.ts.map +1 -0
- package/lib/typescript/src/services/attachmentHandlers/index.d.ts +5 -0
- package/lib/typescript/src/services/attachmentHandlers/index.d.ts.map +1 -0
- package/lib/typescript/src/services/attachmentHandlers/videoAttachmentHandler.d.ts +31 -0
- package/lib/typescript/src/services/attachmentHandlers/videoAttachmentHandler.d.ts.map +1 -0
- package/lib/typescript/src/services/attachmentOrchestrator.d.ts +5 -0
- package/lib/typescript/src/services/attachmentOrchestrator.d.ts.map +1 -0
- package/lib/typescript/src/services/auth.d.ts +19 -0
- package/lib/typescript/src/services/auth.d.ts.map +1 -0
- package/lib/typescript/src/services/endpoints.d.ts +11 -1
- package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
- package/lib/typescript/src/services/imageUpload.d.ts +7 -0
- package/lib/typescript/src/services/imageUpload.d.ts.map +1 -0
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/attachment.d.ts +72 -0
- package/lib/typescript/src/types/attachment.d.ts.map +1 -0
- package/lib/typescript/src/types/attachmentHandler.d.ts +13 -0
- package/lib/typescript/src/types/attachmentHandler.d.ts.map +1 -0
- package/lib/typescript/src/types/imageUpload.d.ts +26 -0
- package/lib/typescript/src/types/imageUpload.d.ts.map +1 -0
- package/lib/typescript/src/types/message.d.ts +1 -0
- package/lib/typescript/src/types/message.d.ts.map +1 -1
- package/lib/typescript/src/utils/chatImageDimens.d.ts +34 -0
- package/lib/typescript/src/utils/chatImageDimens.d.ts.map +1 -0
- package/lib/typescript/src/utils/device.d.ts +7 -0
- package/lib/typescript/src/utils/device.d.ts.map +1 -0
- package/lib/typescript/src/utils/imageUrlOptimizer.d.ts +12 -0
- package/lib/typescript/src/utils/imageUrlOptimizer.d.ts.map +1 -0
- package/lib/typescript/src/utils/imageUtils.d.ts +9 -0
- package/lib/typescript/src/utils/imageUtils.d.ts.map +1 -0
- package/lib/typescript/src/utils/resolveMessageType.d.ts.map +1 -1
- package/lib/typescript/src/utils/ui.d.ts +13 -0
- package/lib/typescript/src/utils/ui.d.ts.map +1 -0
- package/lib/typescript/src/utils/videoThumbnail.d.ts +16 -0
- package/lib/typescript/src/utils/videoThumbnail.d.ts.map +1 -0
- package/package.json +15 -3
- package/src/components/AttachmentPreview.tsx +304 -0
- package/src/components/MediaViewer/index.tsx +0 -0
- package/src/components/MediaViewerModal.tsx +70 -0
- package/src/components/MergedImageGrid.tsx +238 -0
- package/src/components/ThreadCard/thread-card.utils.ts +95 -4
- package/src/components/messages/fileMessage/index.tsx +30 -0
- package/src/components/messages/imageMessage/index.tsx +137 -0
- package/src/components/messages/linkMessage/index.tsx +162 -0
- package/src/components/messages/mergedMessage/index.tsx +45 -0
- package/src/components/messages/styles.ts +39 -0
- package/src/components/messages/textMessage/index.tsx +53 -0
- package/src/components/messages/types.ts +22 -0
- package/src/components/messages/videoMessage/index.tsx +120 -0
- package/src/config/api-endpoints.ts +72 -0
- package/src/config/attachment-priority.ts +93 -0
- package/src/config/configuration.ts +50 -0
- package/src/config/index.ts +19 -0
- package/src/core/index.ts +25 -1
- package/src/core/useChatListener.ts +0 -21
- package/src/hooks/message/useSendMessage.ts +12 -5
- package/src/hooks/useChatMessages.ts +0 -4
- package/src/hooks/useImageAttachment.ts +348 -0
- package/src/hooks/useMediaViewer.ts +32 -0
- package/src/hooks/useSendAttachment.ts +295 -0
- package/src/hooks/useVideoAttachment.ts +334 -0
- package/src/index.tsx +13 -1
- package/src/screens/MediaView/VideoPlayer.tsx +211 -0
- package/src/screens/MediaView/index.tsx +327 -0
- package/src/screens/chat-detail/ChatComposer.tsx +206 -271
- package/src/screens/chat-detail/ChatDetail.tsx +142 -89
- package/src/screens/chat-detail/ChatListLegend.tsx +9 -11
- package/src/screens/chat-detail/components/ChatInputActions.tsx +71 -0
- package/src/screens/chat-detail/components/ChatMessageInput.tsx +127 -0
- package/src/screens/chat-detail/hooks/useAttachmentSendHandler.ts +291 -0
- package/src/screens/chat-detail/hooks/useChatComposerAnimation.ts +184 -0
- package/src/screens/chat-detail/hooks/useChatComposerState.ts +40 -0
- package/src/screens/chat-detail/index.ts +0 -2
- package/src/screens/chat-detail/legend/LegendChatMessage.tsx +47 -24
- package/src/screens/chat-detail/legend/messageTypes.tsx +13 -0
- package/src/screens/chat-detail/types.ts +5 -1
- package/src/screens/inbox/MessagesTab.tsx +1 -1
- package/src/services/attachmentHandlers/fileAttachmentHandler.ts +78 -0
- package/src/services/attachmentHandlers/imageAttachmentHandler.ts +54 -0
- package/src/services/attachmentHandlers/index.ts +10 -0
- package/src/services/attachmentHandlers/videoAttachmentHandler.ts +114 -0
- package/src/services/attachmentOrchestrator.ts +300 -0
- package/src/services/auth.ts +34 -0
- package/src/services/endpoints.ts +24 -1
- package/src/services/imageUpload.ts +162 -0
- package/src/translation/resources/i18n.ts +22 -8
- package/src/types/attachment.ts +85 -0
- package/src/types/attachmentHandler.ts +31 -0
- package/src/types/imageUpload.ts +28 -0
- package/src/types/message.ts +1 -0
- package/src/utils/chatImageDimens.ts +178 -0
- package/src/utils/device.ts +73 -0
- package/src/utils/imageUrlOptimizer.ts +56 -0
- package/src/utils/imageUtils.ts +76 -0
- package/src/utils/resolveMessageType.ts +2 -0
- package/src/utils/ui.ts +19 -0
- package/src/utils/url.ts +1 -1
- package/src/utils/videoThumbnail.ts +85 -0
- package/lib/module/screens/chat-detail/ChatList.js +0 -147
- package/lib/module/screens/chat-detail/ChatList.js.map +0 -1
- package/lib/module/screens/chat-detail/ChatTextBubble.js +0 -62
- package/lib/module/screens/chat-detail/ChatTextBubble.js.map +0 -1
- package/lib/module/screens/chat-detail/legend/message-types.js +0 -244
- package/lib/module/screens/chat-detail/legend/message-types.js.map +0 -1
- package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js +0 -24
- package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js.map +0 -1
- package/lib/module/screens/chat-detail/messages/types.js +0 -4
- package/lib/module/screens/chat-detail/messages/types.js.map +0 -1
- package/lib/typescript/src/screens/chat-detail/ChatList.d.ts +0 -3
- package/lib/typescript/src/screens/chat-detail/ChatList.d.ts.map +0 -1
- package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts +0 -3
- package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts.map +0 -1
- package/lib/typescript/src/screens/chat-detail/legend/message-types.d.ts +0 -13
- package/lib/typescript/src/screens/chat-detail/legend/message-types.d.ts.map +0 -1
- package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts +0 -3
- package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts.map +0 -1
- package/lib/typescript/src/screens/chat-detail/messages/types.d.ts +0 -13
- package/lib/typescript/src/screens/chat-detail/messages/types.d.ts.map +0 -1
- package/src/screens/chat-detail/ChatList.tsx +0 -190
- package/src/screens/chat-detail/ChatTextBubble.tsx +0 -73
- package/src/screens/chat-detail/legend/message-types.tsx +0 -304
- package/src/screens/chat-detail/messages/ChatMessageBubble.tsx +0 -23
- package/src/screens/chat-detail/messages/types.ts +0 -14
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { KContainer, KLabel } from '@droppii/libs';
|
|
5
|
+
import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
|
|
6
|
+
import { messageStyles } from "../styles.js";
|
|
7
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export const FileMessage = /*#__PURE__*/memo(({
|
|
9
|
+
message,
|
|
10
|
+
isOutgoing
|
|
11
|
+
}) => {
|
|
12
|
+
const fileName = message.fileElem?.fileName || message.content || '[File]';
|
|
13
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
14
|
+
style: messageStyles.wrapper,
|
|
15
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
16
|
+
style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
|
|
17
|
+
children: /*#__PURE__*/_jsxs(KLabel.Text, {
|
|
18
|
+
typo: "TextSmNormal",
|
|
19
|
+
color: CHAT_BUBBLE_COLORS.text,
|
|
20
|
+
children: ["\uD83D\uDCCE ", fileName]
|
|
21
|
+
})
|
|
22
|
+
})
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
FileMessage.displayName = 'FileMessage';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","KContainer","KLabel","CHAT_BUBBLE_COLORS","messageStyles","jsxs","_jsxs","jsx","_jsx","FileMessage","message","isOutgoing","fileName","fileElem","content","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","Text","typo","color","text","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/fileMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AAAC,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA;AAG1C,OAAO,MAAMC,WAAW,gBAAGT,IAAI,CAC7B,CAAC;EAAEU,OAAO;EAAEC;AAAmC,CAAC,KAAK;EACnD,MAAMC,QAAQ,GAAGF,OAAO,CAACG,QAAQ,EAAED,QAAQ,IAAIF,OAAO,CAACI,OAAO,IAAI,QAAQ;EAE1E,oBACEN,IAAA,CAACP,UAAU,CAACc,IAAI;IAACC,KAAK,EAAEZ,aAAa,CAACa,OAAQ;IAAAC,QAAA,eAC5CV,IAAA,CAACP,UAAU,CAACc,IAAI;MACdC,KAAK,EAAE,CACLZ,aAAa,CAACe,MAAM,EACpBR,UAAU,GACNP,aAAa,CAACgB,UAAU,GACxBhB,aAAa,CAACiB,cAAc,CAChC;MAAAH,QAAA,eAEFZ,KAAA,CAACJ,MAAM,CAACoB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,KAAK,EAAErB,kBAAkB,CAACsB,IAAK;QAAAP,QAAA,GAAC,eAC5D,EAACN,QAAQ;MAAA,CACD;IAAC,CACC;EAAC,CACH,CAAC;AAEtB,CACF,CAAC;AAEDH,WAAW,CAACiB,WAAW,GAAG,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useState, useCallback, useMemo } from 'react';
|
|
4
|
+
import { StyleSheet, Image, useWindowDimensions } from 'react-native';
|
|
5
|
+
import { KContainer, KImage } from '@droppii/libs';
|
|
6
|
+
import ChatImageDimens from "../../../utils/chatImageDimens.js";
|
|
7
|
+
import { messageStyles } from "../styles.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
export const ImageMessage = /*#__PURE__*/memo(({
|
|
10
|
+
message,
|
|
11
|
+
onMediaPress
|
|
12
|
+
}) => {
|
|
13
|
+
const windowWidth = useWindowDimensions().width;
|
|
14
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
15
|
+
const pictureElem = message.pictureElem;
|
|
16
|
+
const rawImageUrl = pictureElem?.snapshotPicture?.url || pictureElem?.bigPicture?.url || pictureElem?.sourcePicture?.url;
|
|
17
|
+
|
|
18
|
+
// Calculate dimensions respecting aspect ratio and 80% device width
|
|
19
|
+
const imageDimensions = useMemo(() => {
|
|
20
|
+
if (!rawImageUrl) return {
|
|
21
|
+
width: 250,
|
|
22
|
+
height: 250
|
|
23
|
+
};
|
|
24
|
+
const responseWidth = pictureElem?.width || pictureElem?.bigPicture?.width || pictureElem?.snapshotPicture?.width;
|
|
25
|
+
const responseHeight = pictureElem?.height || pictureElem?.bigPicture?.height || pictureElem?.snapshotPicture?.height;
|
|
26
|
+
let imgWidth = responseWidth;
|
|
27
|
+
let imgHeight = responseHeight;
|
|
28
|
+
|
|
29
|
+
// If no dimensions in response, try to resolve from image source
|
|
30
|
+
if (!imgWidth || !imgHeight) {
|
|
31
|
+
try {
|
|
32
|
+
const source = Image.resolveAssetSource({
|
|
33
|
+
uri: rawImageUrl
|
|
34
|
+
});
|
|
35
|
+
imgWidth = source?.width || 300;
|
|
36
|
+
imgHeight = source?.height || 300;
|
|
37
|
+
} catch {
|
|
38
|
+
// Fallback to default if resolution fails
|
|
39
|
+
imgWidth = 300;
|
|
40
|
+
imgHeight = 300;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const aspectRatio = imgWidth / imgHeight;
|
|
44
|
+
// Account for all margins/padding: use 75% of window width with buffer
|
|
45
|
+
const horizontalBuffer = 16; // Left and right combined buffer
|
|
46
|
+
const maxWidth = Math.floor(windowWidth * 0.75 - horizontalBuffer);
|
|
47
|
+
|
|
48
|
+
// Calculate final dimensions
|
|
49
|
+
let finalWidth = maxWidth;
|
|
50
|
+
let finalHeight = maxWidth / aspectRatio;
|
|
51
|
+
|
|
52
|
+
// Cap maximum height to avoid overly tall images
|
|
53
|
+
const maxHeight = 500;
|
|
54
|
+
if (finalHeight > maxHeight) {
|
|
55
|
+
finalHeight = maxHeight;
|
|
56
|
+
finalWidth = finalHeight * aspectRatio;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
width: Math.round(finalWidth),
|
|
60
|
+
height: Math.round(finalHeight)
|
|
61
|
+
};
|
|
62
|
+
}, [pictureElem, rawImageUrl, windowWidth]);
|
|
63
|
+
const handleLoadEnd = useCallback(() => {
|
|
64
|
+
setIsLoading(false);
|
|
65
|
+
}, []);
|
|
66
|
+
const handlePress = useCallback(() => {
|
|
67
|
+
onMediaPress?.([{
|
|
68
|
+
url: rawImageUrl
|
|
69
|
+
}], 0);
|
|
70
|
+
}, [onMediaPress, rawImageUrl]);
|
|
71
|
+
if (!rawImageUrl) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Use dynamic optimization matching calculated dimensions
|
|
76
|
+
const optimizedUrl = ChatImageDimens.getOptimizedImageUrlWithDimensions(rawImageUrl, imageDimensions.width, imageDimensions.height);
|
|
77
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
78
|
+
style: [messageStyles.wrapper, styles.wrapper],
|
|
79
|
+
children: /*#__PURE__*/_jsxs(KContainer.Touchable, {
|
|
80
|
+
onPress: handlePress,
|
|
81
|
+
style: [messageStyles.imageBubble, styles.imageContainer, {
|
|
82
|
+
width: imageDimensions.width,
|
|
83
|
+
height: imageDimensions.height
|
|
84
|
+
}],
|
|
85
|
+
children: [/*#__PURE__*/_jsx(KImage.Base, {
|
|
86
|
+
uri: optimizedUrl,
|
|
87
|
+
width: imageDimensions.width,
|
|
88
|
+
height: imageDimensions.height,
|
|
89
|
+
style: [messageStyles.imageBubble],
|
|
90
|
+
onLoadEnd: handleLoadEnd
|
|
91
|
+
}), isLoading && /*#__PURE__*/_jsx(KContainer.View, {
|
|
92
|
+
style: styles.skeleton
|
|
93
|
+
})]
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
ImageMessage.displayName = 'ImageMessage';
|
|
98
|
+
const styles = StyleSheet.create({
|
|
99
|
+
wrapper: {
|
|
100
|
+
// paddingRight: 8,
|
|
101
|
+
overflow: 'hidden'
|
|
102
|
+
},
|
|
103
|
+
skeleton: {
|
|
104
|
+
position: 'absolute',
|
|
105
|
+
top: 0,
|
|
106
|
+
left: 0,
|
|
107
|
+
right: 0,
|
|
108
|
+
bottom: 0,
|
|
109
|
+
backgroundColor: '#f0f0f0',
|
|
110
|
+
borderRadius: 8
|
|
111
|
+
},
|
|
112
|
+
imageContainer: {
|
|
113
|
+
position: 'relative',
|
|
114
|
+
overflow: 'hidden',
|
|
115
|
+
borderRadius: 8
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useState","useCallback","useMemo","StyleSheet","Image","useWindowDimensions","KContainer","KImage","ChatImageDimens","messageStyles","jsx","_jsx","jsxs","_jsxs","ImageMessage","message","onMediaPress","windowWidth","width","isLoading","setIsLoading","pictureElem","rawImageUrl","snapshotPicture","url","bigPicture","sourcePicture","imageDimensions","height","responseWidth","responseHeight","imgWidth","imgHeight","source","resolveAssetSource","uri","aspectRatio","horizontalBuffer","maxWidth","Math","floor","finalWidth","finalHeight","maxHeight","round","handleLoadEnd","handlePress","optimizedUrl","getOptimizedImageUrlWithDimensions","View","style","wrapper","styles","children","Touchable","onPress","imageBubble","imageContainer","Base","onLoadEnd","skeleton","displayName","create","overflow","position","top","left","right","bottom","backgroundColor","borderRadius"],"sourceRoot":"../../../../../src","sources":["components/messages/imageMessage/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { Linking, StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KImage, KLabel, KColors, KSpacingValue } from '@droppii/libs';
|
|
6
|
+
import { formatMessageTime } from "../types.js";
|
|
7
|
+
import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const parseUrlMetadata = ex => {
|
|
10
|
+
if (!ex) return undefined;
|
|
11
|
+
try {
|
|
12
|
+
const parsed = JSON.parse(ex);
|
|
13
|
+
// Handle nested urlMetadata structure
|
|
14
|
+
return parsed.urlMetadata || parsed;
|
|
15
|
+
} catch {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const renderTextWithLinks = (content, urls) => {
|
|
20
|
+
if (!urls.length) {
|
|
21
|
+
return /*#__PURE__*/_jsx(KLabel.Text, {
|
|
22
|
+
typo: "TextMdNormal",
|
|
23
|
+
children: content
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return /*#__PURE__*/_jsx(KLabel.Text, {
|
|
27
|
+
typo: "TextMdNormal",
|
|
28
|
+
color: CHAT_BUBBLE_COLORS.text,
|
|
29
|
+
children: content
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
export const LinkMessage = /*#__PURE__*/memo(({
|
|
33
|
+
message,
|
|
34
|
+
isOutgoing,
|
|
35
|
+
createdAtTime
|
|
36
|
+
}) => {
|
|
37
|
+
const content = message?.urlTextElem?.content;
|
|
38
|
+
const urls = message?.urlTextElem?.urls ?? [];
|
|
39
|
+
const metadata = parseUrlMetadata(message.ex);
|
|
40
|
+
const timeLabel = formatMessageTime(createdAtTime);
|
|
41
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
42
|
+
style: styles.wrapper,
|
|
43
|
+
children: [/*#__PURE__*/_jsxs(KContainer.View, {
|
|
44
|
+
style: [styles.bubble, isOutgoing ? styles.bubbleSent : styles.bubbleReceived],
|
|
45
|
+
children: [!!content?.trim() && /*#__PURE__*/_jsx(KContainer.View, {
|
|
46
|
+
style: styles.textRow,
|
|
47
|
+
children: renderTextWithLinks(content, urls)
|
|
48
|
+
}), metadata && /*#__PURE__*/_jsxs(KContainer.Touchable, {
|
|
49
|
+
style: styles.card,
|
|
50
|
+
onPress: () => metadata.url && Linking.openURL(metadata.url),
|
|
51
|
+
children: [!!metadata.image && /*#__PURE__*/_jsx(KContainer.View, {
|
|
52
|
+
style: styles.cardThumb,
|
|
53
|
+
children: /*#__PURE__*/_jsx(KImage.Base, {
|
|
54
|
+
uri: metadata.image,
|
|
55
|
+
style: StyleSheet.absoluteFill,
|
|
56
|
+
resizeMode: "cover"
|
|
57
|
+
})
|
|
58
|
+
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
59
|
+
style: styles.cardBody,
|
|
60
|
+
children: [!!metadata.title && /*#__PURE__*/_jsx(KLabel.Text, {
|
|
61
|
+
typo: "TextNmMedium",
|
|
62
|
+
color: KColors.palette.gray.w900,
|
|
63
|
+
numberOfLines: 1,
|
|
64
|
+
children: metadata.title
|
|
65
|
+
}), !!metadata.url && /*#__PURE__*/_jsx(KLabel.Text, {
|
|
66
|
+
typo: "TextXsMedium",
|
|
67
|
+
color: KColors.palette.primary.w400,
|
|
68
|
+
numberOfLines: 1,
|
|
69
|
+
children: metadata.url
|
|
70
|
+
}), !!metadata.description && /*#__PURE__*/_jsx(KLabel.Text, {
|
|
71
|
+
typo: "TextXsNormal",
|
|
72
|
+
color: KColors.gray.normal,
|
|
73
|
+
numberOfLines: 2,
|
|
74
|
+
children: metadata.description
|
|
75
|
+
})]
|
|
76
|
+
})]
|
|
77
|
+
})]
|
|
78
|
+
}), !isOutgoing && timeLabel ? /*#__PURE__*/_jsx(KLabel.Text, {
|
|
79
|
+
typo: "TextXsNormal",
|
|
80
|
+
color: CHAT_BUBBLE_COLORS.timestamp,
|
|
81
|
+
marginL: "0.25rem",
|
|
82
|
+
children: timeLabel
|
|
83
|
+
}) : null]
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
LinkMessage.displayName = 'LinkMessage';
|
|
87
|
+
const styles = StyleSheet.create({
|
|
88
|
+
wrapper: {
|
|
89
|
+
maxWidth: '80%'
|
|
90
|
+
},
|
|
91
|
+
bubble: {
|
|
92
|
+
paddingHorizontal: KSpacingValue['0.75rem'],
|
|
93
|
+
paddingVertical: KSpacingValue['0.5rem'],
|
|
94
|
+
borderRadius: KSpacingValue['1.25rem']
|
|
95
|
+
},
|
|
96
|
+
bubbleReceived: {
|
|
97
|
+
backgroundColor: CHAT_BUBBLE_COLORS.received
|
|
98
|
+
},
|
|
99
|
+
bubbleSent: {
|
|
100
|
+
backgroundColor: CHAT_BUBBLE_COLORS.sent
|
|
101
|
+
},
|
|
102
|
+
textRow: {
|
|
103
|
+
paddingHorizontal: KSpacingValue['0.25rem']
|
|
104
|
+
},
|
|
105
|
+
card: {
|
|
106
|
+
borderRadius: KSpacingValue['0.75rem'],
|
|
107
|
+
borderWidth: 1,
|
|
108
|
+
borderColor: 'rgba(57,62,64,0.1)',
|
|
109
|
+
backgroundColor: KColors.white,
|
|
110
|
+
overflow: 'hidden'
|
|
111
|
+
},
|
|
112
|
+
cardThumb: {
|
|
113
|
+
width: '100%',
|
|
114
|
+
aspectRatio: 16 / 9
|
|
115
|
+
},
|
|
116
|
+
cardBody: {
|
|
117
|
+
paddingHorizontal: KSpacingValue['0.75rem'],
|
|
118
|
+
paddingVertical: KSpacingValue['0.5rem'],
|
|
119
|
+
gap: 2
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","Linking","StyleSheet","KContainer","KImage","KLabel","KColors","KSpacingValue","formatMessageTime","CHAT_BUBBLE_COLORS","jsx","_jsx","jsxs","_jsxs","parseUrlMetadata","ex","undefined","parsed","JSON","parse","urlMetadata","renderTextWithLinks","content","urls","length","Text","typo","children","color","text","LinkMessage","message","isOutgoing","createdAtTime","urlTextElem","metadata","timeLabel","View","style","styles","wrapper","bubble","bubbleSent","bubbleReceived","trim","textRow","Touchable","card","onPress","url","openURL","image","cardThumb","Base","uri","absoluteFill","resizeMode","cardBody","title","palette","gray","w900","numberOfLines","primary","w400","description","normal","timestamp","marginL","displayName","create","maxWidth","paddingHorizontal","paddingVertical","borderRadius","backgroundColor","received","sent","borderWidth","borderColor","white","overflow","width","aspectRatio","gap"],"sourceRoot":"../../../../../src","sources":["components/messages/linkMessage/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { KContainer } from '@droppii/libs';
|
|
5
|
+
import { MergedImageGrid } from "../../MergedImageGrid.js";
|
|
6
|
+
import { messageStyles } from "../styles.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export const MergedMessage = /*#__PURE__*/memo(({
|
|
9
|
+
message,
|
|
10
|
+
isOutgoing,
|
|
11
|
+
onMediaPress
|
|
12
|
+
}) => {
|
|
13
|
+
const mergeElem = message.mergeElem;
|
|
14
|
+
if (!mergeElem?.multiMessage) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const {
|
|
18
|
+
multiMessage
|
|
19
|
+
} = mergeElem;
|
|
20
|
+
const imageMessages = multiMessage.filter(msg => msg.contentType === 102);
|
|
21
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
22
|
+
style: messageStyles.wrapper,
|
|
23
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
24
|
+
style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
|
|
25
|
+
children: imageMessages.length > 0 && /*#__PURE__*/_jsx(KContainer.View, {
|
|
26
|
+
marginB: "0.5rem",
|
|
27
|
+
children: /*#__PURE__*/_jsx(MergedImageGrid, {
|
|
28
|
+
images: imageMessages,
|
|
29
|
+
maxDisplay: 4,
|
|
30
|
+
onMediaPress: onMediaPress
|
|
31
|
+
})
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
MergedMessage.displayName = 'MergedMessage';
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","KContainer","MergedImageGrid","messageStyles","jsx","_jsx","MergedMessage","message","isOutgoing","onMediaPress","mergeElem","multiMessage","imageMessages","filter","msg","contentType","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","length","marginB","images","maxDisplay","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/mergedMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,eAAe,QAAQ,0BAAuB;AACvD,SAASC,aAAa,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG1C,OAAO,MAAMC,aAAa,gBAAGN,IAAI,CAC/B,CAAC;EAAEO,OAAO;EAAEC,UAAU;EAAEC;AAAqC,CAAC,KAAK;EACjE,MAAMC,SAAS,GAAIH,OAAO,CAASG,SAAS;EAE5C,IAAI,CAACA,SAAS,EAAEC,YAAY,EAAE;IAC5B,OAAO,IAAI;EACb;EAEA,MAAM;IAAEA;EAAa,CAAC,GAAGD,SAAS;EAClC,MAAME,aAAa,GAAGD,YAAY,CAACE,MAAM,CACtCC,GAAQ,IAAKA,GAAG,CAACC,WAAW,KAAK,GACpC,CAAC;EAED,oBACEV,IAAA,CAACJ,UAAU,CAACe,IAAI;IAACC,KAAK,EAAEd,aAAa,CAACe,OAAQ;IAAAC,QAAA,eAC5Cd,IAAA,CAACJ,UAAU,CAACe,IAAI;MACdC,KAAK,EAAE,CACLd,aAAa,CAACiB,MAAM,EACpBZ,UAAU,GACNL,aAAa,CAACkB,UAAU,GACxBlB,aAAa,CAACmB,cAAc,CAChC;MAAAH,QAAA,EAEDP,aAAa,CAACW,MAAM,GAAG,CAAC,iBACvBlB,IAAA,CAACJ,UAAU,CAACe,IAAI;QAACQ,OAAO,EAAC,QAAQ;QAAAL,QAAA,eAC/Bd,IAAA,CAACH,eAAe;UACduB,MAAM,EAAEb,aAAc;UACtBc,UAAU,EAAE,CAAE;UACdjB,YAAY,EAAEA;QAAa,CAC5B;MAAC,CACa;IAClB,CACc;EAAC,CACH,CAAC;AAEtB,CACF,CAAC;AAEDH,aAAa,CAACqB,WAAW,GAAG,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { StyleSheet } from 'react-native';
|
|
4
|
+
import { KSpacingValue } from '@droppii/libs';
|
|
5
|
+
import { CHAT_BUBBLE_COLORS } from "../../screens/chat-detail/constants.js";
|
|
6
|
+
export const messageStyles = StyleSheet.create({
|
|
7
|
+
wrapper: {
|
|
8
|
+
maxWidth: '80%'
|
|
9
|
+
},
|
|
10
|
+
bubble: {
|
|
11
|
+
paddingHorizontal: KSpacingValue['0.75rem'],
|
|
12
|
+
paddingVertical: KSpacingValue['0.5rem'],
|
|
13
|
+
borderRadius: KSpacingValue['1.25rem']
|
|
14
|
+
},
|
|
15
|
+
bubbleReceived: {
|
|
16
|
+
backgroundColor: CHAT_BUBBLE_COLORS.received
|
|
17
|
+
},
|
|
18
|
+
bubbleSent: {
|
|
19
|
+
backgroundColor: CHAT_BUBBLE_COLORS.sent
|
|
20
|
+
},
|
|
21
|
+
imageBubble: {
|
|
22
|
+
borderRadius: KSpacingValue['0.75rem']
|
|
23
|
+
},
|
|
24
|
+
videoPlaceholder: {
|
|
25
|
+
backgroundColor: CHAT_BUBBLE_COLORS.received
|
|
26
|
+
},
|
|
27
|
+
videoContainer: {
|
|
28
|
+
position: 'relative',
|
|
29
|
+
overflow: 'hidden',
|
|
30
|
+
borderRadius: KSpacingValue['0.75rem']
|
|
31
|
+
},
|
|
32
|
+
playButtonOverlay: {
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
top: 0,
|
|
35
|
+
left: 0,
|
|
36
|
+
right: 0,
|
|
37
|
+
bottom: 0,
|
|
38
|
+
backgroundColor: 'rgba(0, 0, 0, 0.3)'
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","KSpacingValue","CHAT_BUBBLE_COLORS","messageStyles","create","wrapper","maxWidth","bubble","paddingHorizontal","paddingVertical","borderRadius","bubbleReceived","backgroundColor","received","bubbleSent","sent","imageBubble","videoPlaceholder","videoContainer","position","overflow","playButtonOverlay","top","left","right","bottom"],"sourceRoot":"../../../../src","sources":["components/messages/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,aAAa,QAAQ,eAAe;AAC7C,SAASC,kBAAkB,QAAQ,wCAAqC;AAExE,OAAO,MAAMC,aAAa,GAAGH,UAAU,CAACI,MAAM,CAAC;EAC7CC,OAAO,EAAE;IACPC,QAAQ,EAAE;EACZ,CAAC;EACDC,MAAM,EAAE;IACNC,iBAAiB,EAAEP,aAAa,CAAC,SAAS,CAAC;IAC3CQ,eAAe,EAAER,aAAa,CAAC,QAAQ,CAAC;IACxCS,YAAY,EAAET,aAAa,CAAC,SAAS;EACvC,CAAC;EACDU,cAAc,EAAE;IACdC,eAAe,EAAEV,kBAAkB,CAACW;EACtC,CAAC;EACDC,UAAU,EAAE;IACVF,eAAe,EAAEV,kBAAkB,CAACa;EACtC,CAAC;EACDC,WAAW,EAAE;IACXN,YAAY,EAAET,aAAa,CAAC,SAAS;EACvC,CAAC;EACDgB,gBAAgB,EAAE;IAChBL,eAAe,EAAEV,kBAAkB,CAACW;EACtC,CAAC;EACDK,cAAc,EAAE;IACdC,QAAQ,EAAE,UAAU;IACpBC,QAAQ,EAAE,QAAQ;IAClBV,YAAY,EAAET,aAAa,CAAC,SAAS;EACvC,CAAC;EACDoB,iBAAiB,EAAE;IACjBF,QAAQ,EAAE,UAAU;IACpBG,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTb,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { KContainer, KLabel } from '@droppii/libs';
|
|
5
|
+
import { getMessageText } from "../../../utils/legendListMessage.js";
|
|
6
|
+
import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
|
|
7
|
+
import { messageStyles } from "../styles.js";
|
|
8
|
+
import { formatMessageTime } from "../types.js";
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
export const TextMessage = /*#__PURE__*/memo(({
|
|
11
|
+
message,
|
|
12
|
+
isOutgoing,
|
|
13
|
+
createdAtTime
|
|
14
|
+
}) => {
|
|
15
|
+
const messageText = getMessageText(message);
|
|
16
|
+
const timeLabel = formatMessageTime(createdAtTime);
|
|
17
|
+
if (!messageText?.trim()) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
21
|
+
style: messageStyles.wrapper,
|
|
22
|
+
children: [/*#__PURE__*/_jsx(KContainer.View, {
|
|
23
|
+
style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
|
|
24
|
+
children: /*#__PURE__*/_jsx(KLabel.Text, {
|
|
25
|
+
typo: "TextMdNormal",
|
|
26
|
+
color: CHAT_BUBBLE_COLORS.text,
|
|
27
|
+
children: messageText
|
|
28
|
+
})
|
|
29
|
+
}), !isOutgoing && timeLabel ? /*#__PURE__*/_jsx(KLabel.Text, {
|
|
30
|
+
typo: "TextXsNormal",
|
|
31
|
+
color: CHAT_BUBBLE_COLORS.timestamp,
|
|
32
|
+
marginL: '0.25rem',
|
|
33
|
+
children: timeLabel
|
|
34
|
+
}) : null]
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
TextMessage.displayName = 'TextMessage';
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","KContainer","KLabel","getMessageText","CHAT_BUBBLE_COLORS","messageStyles","formatMessageTime","jsx","_jsx","jsxs","_jsxs","TextMessage","message","isOutgoing","createdAtTime","messageText","timeLabel","trim","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","Text","typo","color","text","timestamp","marginL","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/textMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,cAAc,QAAQ,qCAAkC;AAEjE,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AACzC,SAASC,iBAAiB,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ7C,OAAO,MAAMC,WAAW,gBAAGX,IAAI,CAC7B,CAAC;EAAEY,OAAO;EAAEC,UAAU;EAAEC;AAAgC,CAAC,KAAK;EAC5D,MAAMC,WAAW,GAAGZ,cAAc,CAACS,OAAO,CAAC;EAC3C,MAAMI,SAAS,GAAGV,iBAAiB,CAACQ,aAAa,CAAC;EAElD,IAAI,CAACC,WAAW,EAAEE,IAAI,CAAC,CAAC,EAAE;IACxB,OAAO,IAAI;EACb;EAEA,oBACEP,KAAA,CAACT,UAAU,CAACiB,IAAI;IAACC,KAAK,EAAEd,aAAa,CAACe,OAAQ;IAAAC,QAAA,gBAC5Cb,IAAA,CAACP,UAAU,CAACiB,IAAI;MACdC,KAAK,EAAE,CACLd,aAAa,CAACiB,MAAM,EACpBT,UAAU,GACNR,aAAa,CAACkB,UAAU,GACxBlB,aAAa,CAACmB,cAAc,CAChC;MAAAH,QAAA,eAEFb,IAAA,CAACN,MAAM,CAACuB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,KAAK,EAAEvB,kBAAkB,CAACwB,IAAK;QAAAP,QAAA,EAC7DN;MAAW,CACD;IAAC,CACC,CAAC,EAEjB,CAACF,UAAU,IAAIG,SAAS,gBACvBR,IAAA,CAACN,MAAM,CAACuB,IAAI;MACVC,IAAI,EAAC,cAAc;MACnBC,KAAK,EAAEvB,kBAAkB,CAACyB,SAAU;MACpCC,OAAO,EAAE,SAAU;MAAAT,QAAA,EAElBL;IAAS,CACC,CAAC,GACZ,IAAI;EAAA,CACO,CAAC;AAEtB,CACF,CAAC;AAEDL,WAAW,CAACoB,WAAW,GAAG,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export const formatMessageTime = createdAt => {
|
|
4
|
+
const date = new Date(createdAt);
|
|
5
|
+
if (Number.isNaN(date.getTime())) {
|
|
6
|
+
return '';
|
|
7
|
+
}
|
|
8
|
+
return date.toLocaleTimeString('vi-VN', {
|
|
9
|
+
hour: '2-digit',
|
|
10
|
+
minute: '2-digit',
|
|
11
|
+
hour12: false
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["formatMessageTime","createdAt","date","Date","Number","isNaN","getTime","toLocaleTimeString","hour","minute","hour12"],"sourceRoot":"../../../../src","sources":["components/messages/types.ts"],"mappings":";;AAUA,OAAO,MAAMA,iBAAiB,GAAIC,SAAiB,IAAK;EACtD,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,SAAS,CAAC;EAChC,IAAIG,MAAM,CAACC,KAAK,CAACH,IAAI,CAACI,OAAO,CAAC,CAAC,CAAC,EAAE;IAChC,OAAO,EAAE;EACX;EAEA,OAAOJ,IAAI,CAACK,kBAAkB,CAAC,OAAO,EAAE;IACtCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KImage, KLabel } from '@droppii/libs';
|
|
6
|
+
import ChatImageDimens, { CHAT_IMAGE_VIEW_SOURCE } from "../../../utils/chatImageDimens.js";
|
|
7
|
+
import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
|
|
8
|
+
import { messageStyles } from "../styles.js";
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
const formatDuration = durationMs => {
|
|
11
|
+
const totalSeconds = Math.floor(durationMs / 1000);
|
|
12
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
13
|
+
const seconds = totalSeconds % 60;
|
|
14
|
+
return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
|
|
15
|
+
};
|
|
16
|
+
export const VideoMessage = /*#__PURE__*/memo(({
|
|
17
|
+
message,
|
|
18
|
+
onMediaPress
|
|
19
|
+
}) => {
|
|
20
|
+
const videoElem = message?.videoElem;
|
|
21
|
+
const videoUrl = videoElem?.videoUrl;
|
|
22
|
+
const duration = videoElem?.duration;
|
|
23
|
+
const thumbnail = videoElem?.snapshotUrl;
|
|
24
|
+
const handlePress = useCallback(() => {
|
|
25
|
+
if (videoUrl && onMediaPress) {
|
|
26
|
+
onMediaPress([{
|
|
27
|
+
url: videoUrl,
|
|
28
|
+
isVideo: true
|
|
29
|
+
}], 0);
|
|
30
|
+
}
|
|
31
|
+
}, [videoUrl, onMediaPress]);
|
|
32
|
+
if (!videoUrl) {
|
|
33
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
34
|
+
style: messageStyles.wrapper,
|
|
35
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
36
|
+
style: [messageStyles.bubble, messageStyles.videoPlaceholder],
|
|
37
|
+
children: /*#__PURE__*/_jsx(KLabel.Text, {
|
|
38
|
+
typo: "TextSmNormal",
|
|
39
|
+
color: CHAT_BUBBLE_COLORS.text,
|
|
40
|
+
children: "\uD83D\uDCF9 [Video unavailable]"
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const dimen = ChatImageDimens.getDimensions(CHAT_IMAGE_VIEW_SOURCE.MessageListThumbnail);
|
|
46
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
47
|
+
style: messageStyles.wrapper,
|
|
48
|
+
children: /*#__PURE__*/_jsxs(KContainer.Touchable, {
|
|
49
|
+
onPress: handlePress,
|
|
50
|
+
style: [styles.videoContainer, {
|
|
51
|
+
width: dimen.width,
|
|
52
|
+
height: dimen.height
|
|
53
|
+
}],
|
|
54
|
+
children: [thumbnail ? /*#__PURE__*/_jsx(KImage.Base, {
|
|
55
|
+
uri: thumbnail,
|
|
56
|
+
width: dimen.width,
|
|
57
|
+
height: dimen.height,
|
|
58
|
+
resizeMode: "cover"
|
|
59
|
+
}) : /*#__PURE__*/_jsx(KContainer.View, {
|
|
60
|
+
style: styles.videoBg
|
|
61
|
+
}), /*#__PURE__*/_jsx(KContainer.View, {
|
|
62
|
+
style: styles.playOverlay,
|
|
63
|
+
center: true,
|
|
64
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
65
|
+
name: "play-circle",
|
|
66
|
+
provider: "MaterialCommunityIcons",
|
|
67
|
+
size: 48,
|
|
68
|
+
color: "white"
|
|
69
|
+
})
|
|
70
|
+
}), duration && /*#__PURE__*/_jsx(KContainer.View, {
|
|
71
|
+
style: styles.durationBadge,
|
|
72
|
+
children: /*#__PURE__*/_jsx(KLabel.Text, {
|
|
73
|
+
typo: "TextXsNormal",
|
|
74
|
+
color: "white",
|
|
75
|
+
children: formatDuration(duration)
|
|
76
|
+
})
|
|
77
|
+
})]
|
|
78
|
+
})
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
VideoMessage.displayName = 'VideoMessage';
|
|
82
|
+
const styles = StyleSheet.create({
|
|
83
|
+
videoContainer: {
|
|
84
|
+
overflow: 'hidden',
|
|
85
|
+
borderRadius: 8,
|
|
86
|
+
backgroundColor: '#000'
|
|
87
|
+
},
|
|
88
|
+
videoBg: {
|
|
89
|
+
flex: 1,
|
|
90
|
+
backgroundColor: '#000'
|
|
91
|
+
},
|
|
92
|
+
playOverlay: {
|
|
93
|
+
position: 'absolute',
|
|
94
|
+
top: 0,
|
|
95
|
+
left: 0,
|
|
96
|
+
right: 0,
|
|
97
|
+
bottom: 0,
|
|
98
|
+
backgroundColor: 'rgba(0, 0, 0, 0.3)'
|
|
99
|
+
},
|
|
100
|
+
durationBadge: {
|
|
101
|
+
position: 'absolute',
|
|
102
|
+
bottom: 8,
|
|
103
|
+
right: 8,
|
|
104
|
+
backgroundColor: 'rgba(0, 0, 0, 0.7)',
|
|
105
|
+
paddingHorizontal: 6,
|
|
106
|
+
paddingVertical: 3,
|
|
107
|
+
borderRadius: 4
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","StyleSheet","KContainer","KImage","KLabel","ChatImageDimens","CHAT_IMAGE_VIEW_SOURCE","CHAT_BUBBLE_COLORS","messageStyles","jsx","_jsx","jsxs","_jsxs","formatDuration","durationMs","totalSeconds","Math","floor","minutes","seconds","String","padStart","VideoMessage","message","onMediaPress","videoElem","videoUrl","duration","thumbnail","snapshotUrl","handlePress","url","isVideo","View","style","wrapper","children","bubble","videoPlaceholder","Text","typo","color","text","dimen","getDimensions","MessageListThumbnail","Touchable","onPress","styles","videoContainer","width","height","Base","uri","resizeMode","videoBg","playOverlay","center","VectorIcons","name","provider","size","durationBadge","displayName","create","overflow","borderRadius","backgroundColor","flex","position","top","left","right","bottom","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../../src","sources":["components/messages/videoMessage/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* API Endpoints Configuration
|
|
5
|
+
*
|
|
6
|
+
* Centralized endpoint management for all API calls.
|
|
7
|
+
* Can be overridden per environment or feature flag.
|
|
8
|
+
*
|
|
9
|
+
* Note: imageUpload is a relative path because ReactNativeBlobUtil.fetch()
|
|
10
|
+
* is used for image uploads (not axios). The full URL is constructed
|
|
11
|
+
* in the imageUpload service using the base URL from environment/config.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const DEFAULT_ENDPOINTS = {
|
|
15
|
+
urlMetadata: '/chat-service/v1/utils/url-metadata',
|
|
16
|
+
imageUpload: '/uploader-service/v1/uploader/permanently'
|
|
17
|
+
};
|
|
18
|
+
let endpoints = {
|
|
19
|
+
...DEFAULT_ENDPOINTS
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Get a specific API endpoint
|
|
24
|
+
* @param key - Endpoint key
|
|
25
|
+
* @returns Full endpoint URL
|
|
26
|
+
*/
|
|
27
|
+
export const getApiEndpoint = key => {
|
|
28
|
+
return endpoints[key];
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Set a specific API endpoint (useful for testing/override)
|
|
33
|
+
* @param key - Endpoint key
|
|
34
|
+
* @param value - New endpoint URL
|
|
35
|
+
*/
|
|
36
|
+
export const setApiEndpoint = (key, value) => {
|
|
37
|
+
endpoints[key] = value;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Set all endpoints at once
|
|
42
|
+
* @param newEndpoints - New endpoints object
|
|
43
|
+
*/
|
|
44
|
+
export const setAllApiEndpoints = newEndpoints => {
|
|
45
|
+
endpoints = {
|
|
46
|
+
...endpoints,
|
|
47
|
+
...newEndpoints
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Reset to default endpoints
|
|
53
|
+
*/
|
|
54
|
+
export const resetApiEndpoints = () => {
|
|
55
|
+
endpoints = {
|
|
56
|
+
...DEFAULT_ENDPOINTS
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Get all endpoints (returns copy)
|
|
62
|
+
*/
|
|
63
|
+
export const getAllApiEndpoints = () => ({
|
|
64
|
+
...endpoints
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=api-endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DEFAULT_ENDPOINTS","urlMetadata","imageUpload","endpoints","getApiEndpoint","key","setApiEndpoint","value","setAllApiEndpoints","newEndpoints","resetApiEndpoints","getAllApiEndpoints"],"sourceRoot":"../../../src","sources":["config/api-endpoints.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,MAAMA,iBAA+B,GAAG;EACtCC,WAAW,EAAE,qCAAqC;EAClDC,WAAW,EAAE;AACf,CAAC;AAED,IAAIC,SAAuB,GAAG;EAAE,GAAGH;AAAkB,CAAC;;AAEtD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,cAAc,GACzBC,GAAM,IACc;EACpB,OAAOF,SAAS,CAACE,GAAG,CAAC;AACvB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAGA,CAC5BD,GAAM,EACNE,KAAsB,KACnB;EACHJ,SAAS,CAACE,GAAG,CAAC,GAAGE,KAAK;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAIC,YAAmC,IAAK;EACzEN,SAAS,GAAG;IACV,GAAGA,SAAS;IACZ,GAAGM;EACL,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EACrCP,SAAS,GAAG;IAAE,GAAGH;EAAkB,CAAC;AACtC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMW,kBAAkB,GAAGA,CAAA,MAAqB;EACrD,GAAGR;AACL,CAAC,CAAC","ignoreList":[]}
|