@adminide-stack/yantra-mobile 12.0.69-alpha.9 → 12.0.69
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/components/GatewayConnector/GatewayConnector.js +2 -2
- package/lib/components/GatewayConnector/GatewayConnector.js.map +1 -1
- package/lib/components/KeyboardComposerDock.js +8 -1
- package/lib/components/KeyboardComposerDock.js.map +1 -1
- package/lib/components/NavigationHeader/NavigationHeader.js +2 -2
- package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
- package/lib/config/env-config.js +4 -0
- package/lib/config/env-config.js.map +1 -1
- package/lib/contexts/ChatLiveStreamContext.js +4 -1
- package/lib/contexts/ChatLiveStreamContext.js.map +1 -1
- package/lib/features/agent-chat/NativeAgentChat.js +2 -0
- package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
- package/lib/features/apps/AppsCatalog.js +2 -2
- package/lib/features/apps/AppsCatalog.js.map +1 -1
- package/lib/features/audio-input/MicErrorBoundary.js +2 -2
- package/lib/features/audio-input/MicErrorBoundary.js.map +1 -1
- package/lib/features/canvas/AudioEditorExperience.js +308 -0
- package/lib/features/canvas/AudioEditorExperience.js.map +1 -0
- package/lib/features/canvas/CanvasAgentChatPane.js +310 -0
- package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -0
- package/lib/features/canvas/CanvasBoardsGrid.js +414 -0
- package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -0
- package/lib/features/canvas/CanvasChatResultCard.js +113 -0
- package/lib/features/canvas/CanvasChatResultCard.js.map +1 -0
- package/lib/features/canvas/CanvasEditToolsPanel.js +179 -0
- package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -0
- package/lib/features/canvas/CanvasExperience.js +859 -0
- package/lib/features/canvas/CanvasExperience.js.map +1 -0
- package/lib/features/canvas/CanvasGeneratePanel.js +514 -0
- package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -0
- package/lib/features/canvas/CanvasLibrarySheet.js +355 -0
- package/lib/features/canvas/CanvasLibrarySheet.js.map +1 -0
- package/lib/features/canvas/CanvasLooksPanel.js +184 -0
- package/lib/features/canvas/CanvasLooksPanel.js.map +1 -0
- package/lib/features/canvas/CanvasTasksPanel.js +138 -0
- package/lib/features/canvas/CanvasTasksPanel.js.map +1 -0
- package/lib/features/canvas/CanvasTemplatesPanel.js +226 -0
- package/lib/features/canvas/CanvasTemplatesPanel.js.map +1 -0
- package/lib/features/canvas/CanvasToolDock.js +423 -0
- package/lib/features/canvas/CanvasToolDock.js.map +1 -0
- package/lib/features/canvas/FrameExtractorExperience.js +242 -0
- package/lib/features/canvas/FrameExtractorExperience.js.map +1 -0
- package/lib/features/canvas/ImageEditorExperience.js +491 -0
- package/lib/features/canvas/ImageEditorExperience.js.map +1 -0
- package/lib/features/canvas/InfluencerStudioExperience.js +288 -0
- package/lib/features/canvas/InfluencerStudioExperience.js.map +1 -0
- package/lib/features/canvas/MoodboardExperience.js +205 -0
- package/lib/features/canvas/MoodboardExperience.js.map +1 -0
- package/lib/features/canvas/NativeCanvasViewer.js +929 -0
- package/lib/features/canvas/NativeCanvasViewer.js.map +1 -0
- package/lib/features/canvas/PromoContextFields.js +150 -0
- package/lib/features/canvas/PromoContextFields.js.map +1 -0
- package/lib/features/canvas/SetStudioExperience.js +323 -0
- package/lib/features/canvas/SetStudioExperience.js.map +1 -0
- package/lib/features/canvas/VideoClipsExperience.js +175 -0
- package/lib/features/canvas/VideoClipsExperience.js.map +1 -0
- package/lib/features/canvas/VideoEditExperience.js +824 -0
- package/lib/features/canvas/VideoEditExperience.js.map +1 -0
- package/lib/features/canvas/VideoEditorExperience.js +3050 -0
- package/lib/features/canvas/VideoEditorExperience.js.map +1 -0
- package/lib/features/canvas/VideoGeneratorExperience.js +415 -0
- package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -0
- package/lib/features/canvas/aiEdit.js +53 -0
- package/lib/features/canvas/aiEdit.js.map +1 -0
- package/lib/features/canvas/canvasAgentChat.js +76 -0
- package/lib/features/canvas/canvasAgentChat.js.map +1 -0
- package/lib/features/canvas/canvasBoardsCatalog.js +59 -0
- package/lib/features/canvas/canvasBoardsCatalog.js.map +1 -0
- package/lib/features/canvas/canvasBoardsSnapshot.js +14 -1
- package/lib/features/canvas/canvasBoardsSnapshot.js.map +1 -1
- package/lib/features/canvas/canvasChatDisplay.js +38 -0
- package/lib/features/canvas/canvasChatDisplay.js.map +1 -0
- package/lib/features/canvas/canvasChatTemplates.js +219 -0
- package/lib/features/canvas/canvasChatTemplates.js.map +1 -0
- package/lib/features/canvas/canvasCore.js +138 -1
- package/lib/features/canvas/canvasCore.js.map +1 -1
- package/lib/features/canvas/canvasEditOps.js +224 -0
- package/lib/features/canvas/canvasEditOps.js.map +1 -0
- package/lib/features/canvas/canvasTasks.js +187 -0
- package/lib/features/canvas/canvasTasks.js.map +1 -0
- package/lib/features/canvas/designPromptTemplates.js +3084 -0
- package/lib/features/canvas/designPromptTemplates.js.map +1 -0
- package/lib/features/canvas/editTools.js +54 -0
- package/lib/features/canvas/editTools.js.map +1 -0
- package/lib/features/canvas/extendVideo.js +5 -0
- package/lib/features/canvas/extendVideo.js.map +1 -0
- package/lib/features/canvas/frameExtract.js +33 -0
- package/lib/features/canvas/frameExtract.js.map +1 -0
- package/lib/features/canvas/generationModels.js +201 -0
- package/lib/features/canvas/generationModels.js.map +1 -0
- package/lib/features/canvas/influencer/influencerPipeline.js +170 -0
- package/lib/features/canvas/influencer/influencerPipeline.js.map +1 -0
- package/lib/features/canvas/influencer/productReel.js +72 -0
- package/lib/features/canvas/influencer/productReel.js.map +1 -0
- package/lib/features/canvas/influencer/reelPlan.js +159 -0
- package/lib/features/canvas/influencer/reelPlan.js.map +1 -0
- package/lib/features/canvas/moodboardCore.js +13 -0
- package/lib/features/canvas/moodboardCore.js.map +1 -0
- package/lib/features/canvas/promoProjectImport.js +99 -0
- package/lib/features/canvas/promoProjectImport.js.map +1 -0
- package/lib/features/canvas/promoVideo.js +312 -0
- package/lib/features/canvas/promoVideo.js.map +1 -0
- package/lib/features/canvas/recorder/CameraRecorderExperience.js +109 -0
- package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -0
- package/lib/features/canvas/sessionIdentity.js +28 -1
- package/lib/features/canvas/sessionIdentity.js.map +1 -1
- package/lib/features/canvas/set/SetViewportWebView.js +133 -0
- package/lib/features/canvas/set/SetViewportWebView.js.map +1 -0
- package/lib/features/canvas/set/cameraPath.js +194 -0
- package/lib/features/canvas/set/cameraPath.js.map +1 -0
- package/lib/features/canvas/set/setProject.js +24 -0
- package/lib/features/canvas/set/setProject.js.map +1 -0
- package/lib/features/canvas/storageLibrary.js +184 -0
- package/lib/features/canvas/storageLibrary.js.map +1 -0
- package/lib/features/canvas/studioCatalog.js +129 -0
- package/lib/features/canvas/studioCatalog.js.map +1 -0
- package/lib/features/canvas/studioLooks.js +189 -0
- package/lib/features/canvas/studioLooks.js.map +1 -0
- package/lib/features/canvas/surfaceIndex.js +63 -1
- package/lib/features/canvas/surfaceIndex.js.map +1 -1
- package/lib/features/canvas/templateImport/invideoNative.js +221 -0
- package/lib/features/canvas/templateImport/invideoNative.js.map +1 -0
- package/lib/features/canvas/templateImport/loadTemplate.js +43 -0
- package/lib/features/canvas/templateImport/loadTemplate.js.map +1 -0
- package/lib/features/canvas/templateImport/renderConfig.js +93 -0
- package/lib/features/canvas/templateImport/renderConfig.js.map +1 -0
- package/lib/features/canvas/useStudioCatalogTemplates.js +134 -0
- package/lib/features/canvas/useStudioCatalogTemplates.js.map +1 -0
- package/lib/features/canvas/video3d.js +109 -0
- package/lib/features/canvas/video3d.js.map +1 -0
- package/lib/features/canvas/videoClips.js +42 -0
- package/lib/features/canvas/videoClips.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +120 -0
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/agentLoop.js +69 -0
- package/lib/features/canvas/videoEditor/agent/agentLoop.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/brainClient.js +45 -0
- package/lib/features/canvas/videoEditor/agent/brainClient.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/cutTools.js +129 -0
- package/lib/features/canvas/videoEditor/agent/cutTools.js.map +1 -0
- package/lib/features/canvas/videoEditor/editorModel.js +346 -0
- package/lib/features/canvas/videoEditor/editorModel.js.map +1 -0
- package/lib/features/canvas/videoEditor/exportRenderer.js +214 -0
- package/lib/features/canvas/videoEditor/exportRenderer.js.map +1 -0
- package/lib/features/canvas/videoEditor/filters.js +41 -0
- package/lib/features/canvas/videoEditor/filters.js.map +1 -0
- package/lib/features/canvas/videoEditor/mediaActions.js +57 -0
- package/lib/features/canvas/videoEditor/mediaActions.js.map +1 -0
- package/lib/features/canvas/videoEditor/remoteMediaClient.js +129 -0
- package/lib/features/canvas/videoEditor/remoteMediaClient.js.map +1 -0
- package/lib/features/canvas/videoEditor/solidColorPng.js +115 -0
- package/lib/features/canvas/videoEditor/solidColorPng.js.map +1 -0
- package/lib/features/canvas/videoEditor/videoEditOps.js +191 -0
- package/lib/features/canvas/videoEditor/videoEditOps.js.map +1 -0
- package/lib/features/canvas/videoEditor/videoProjectsStore.js +82 -0
- package/lib/features/canvas/videoEditor/videoProjectsStore.js.map +1 -0
- package/lib/features/canvas/videoRenderer.js +8 -0
- package/lib/features/canvas/videoRenderer.js.map +1 -0
- package/lib/features/canvas/withRemoteSafeArea.js +2 -2
- package/lib/features/canvas/withRemoteSafeArea.js.map +1 -1
- package/lib/features/characters/characterStudioProps.js +14 -0
- package/lib/features/characters/characterStudioProps.js.map +1 -0
- package/lib/features/chat/ChatCodeBlock.js +7 -3
- package/lib/features/chat/ChatCodeBlock.js.map +1 -1
- package/lib/features/chat/ChatTranscript.js +7 -3
- package/lib/features/chat/ChatTranscript.js.map +1 -1
- package/lib/features/chat/ChatWidgetCard.js +13 -0
- package/lib/features/chat/ChatWidgetCard.js.map +1 -0
- package/lib/features/chat/ConnectorConnectCard.js +164 -0
- package/lib/features/chat/ConnectorConnectCard.js.map +1 -0
- package/lib/features/chat/ConnectorConnectPrompt.js +254 -0
- package/lib/features/chat/ConnectorConnectPrompt.js.map +1 -0
- package/lib/features/chat/MessageActionBar.js.map +1 -1
- package/lib/features/chat/QueuedFollowUps.js +71 -0
- package/lib/features/chat/QueuedFollowUps.js.map +1 -0
- package/lib/features/chat/chatWidgets.js +37 -0
- package/lib/features/chat/chatWidgets.js.map +1 -0
- package/lib/features/chat/connectorConnect.js +179 -0
- package/lib/features/chat/connectorConnect.js.map +1 -0
- package/lib/features/chat/connectorConnectHandbacks.js +55 -0
- package/lib/features/chat/connectorConnectHandbacks.js.map +1 -0
- package/lib/features/design/DesignEditorExperience.js +643 -0
- package/lib/features/design/DesignEditorExperience.js.map +1 -0
- package/lib/features/design/DesignExperience.js +444 -0
- package/lib/features/design/DesignExperience.js.map +1 -0
- package/lib/features/design/designCore.js +298 -0
- package/lib/features/design/designCore.js.map +1 -0
- package/lib/features/design/designIndex.js +150 -0
- package/lib/features/design/designIndex.js.map +1 -0
- package/lib/features/design/exportDesign.js +133 -0
- package/lib/features/design/exportDesign.js.map +1 -0
- package/lib/features/job-search/ApplicationsPanel.js +907 -0
- package/lib/features/job-search/ApplicationsPanel.js.map +1 -0
- package/lib/features/job-search/ContactsPanel.js +627 -0
- package/lib/features/job-search/ContactsPanel.js.map +1 -0
- package/lib/features/job-search/InsightsPanel.js +299 -0
- package/lib/features/job-search/InsightsPanel.js.map +1 -0
- package/lib/features/job-search/InterviewPanel.js +637 -0
- package/lib/features/job-search/InterviewPanel.js.map +1 -0
- package/lib/features/job-search/JdPastePrompt.js +130 -0
- package/lib/features/job-search/JdPastePrompt.js.map +1 -0
- package/lib/features/job-search/JobCard.js +199 -0
- package/lib/features/job-search/JobCard.js.map +1 -0
- package/lib/features/job-search/JobDetailSheet.js +255 -0
- package/lib/features/job-search/JobDetailSheet.js.map +1 -0
- package/lib/features/job-search/JobSearchAgentChatPane.js +377 -0
- package/lib/features/job-search/JobSearchAgentChatPane.js.map +1 -0
- package/lib/features/job-search/JobSearchExperience.js +1324 -0
- package/lib/features/job-search/JobSearchExperience.js.map +1 -0
- package/lib/features/job-search/JobSearchLocationField.js +231 -0
- package/lib/features/job-search/JobSearchLocationField.js.map +1 -0
- package/lib/features/job-search/ProfilePanel.js +679 -0
- package/lib/features/job-search/ProfilePanel.js.map +1 -0
- package/lib/features/job-search/RepliesPanel.js +344 -0
- package/lib/features/job-search/RepliesPanel.js.map +1 -0
- package/lib/features/job-search/SavedPanel.js +297 -0
- package/lib/features/job-search/SavedPanel.js.map +1 -0
- package/lib/features/job-search/chat/widgetContent.js +29 -0
- package/lib/features/job-search/chat/widgetContent.js.map +1 -0
- package/lib/features/job-search/cvText.js +91 -0
- package/lib/features/job-search/cvText.js.map +1 -0
- package/lib/features/job-search/jobAgentSwipe.js +7 -0
- package/lib/features/job-search/jobAgentSwipe.js.map +1 -0
- package/lib/features/job-search/jobSearchClient.js +184 -0
- package/lib/features/job-search/jobSearchClient.js.map +1 -0
- package/lib/features/job-search/jobSearchExec.js +14 -0
- package/lib/features/job-search/jobSearchExec.js.map +1 -0
- package/lib/features/job-search/jobSearchRuntime.js +50 -0
- package/lib/features/job-search/jobSearchRuntime.js.map +1 -0
- package/lib/features/job-search/jobSearchTheme.js +44 -0
- package/lib/features/job-search/jobSearchTheme.js.map +1 -0
- package/lib/features/job-search/savedJobs.js +85 -0
- package/lib/features/job-search/savedJobs.js.map +1 -0
- package/lib/features/job-search/searchHistory.js +117 -0
- package/lib/features/job-search/searchHistory.js.map +1 -0
- package/lib/features/job-search/types.js +36 -0
- package/lib/features/job-search/types.js.map +1 -0
- package/lib/features/job-search/useJobSearchSession.js +558 -0
- package/lib/features/job-search/useJobSearchSession.js.map +1 -0
- package/lib/features/messaging/ChatComponents.js +529 -0
- package/lib/features/messaging/ChatComponents.js.map +1 -0
- package/lib/features/messaging/ChatInviteDeepLink.js +116 -0
- package/lib/features/messaging/ChatInviteDeepLink.js.map +1 -0
- package/lib/features/messaging/ContactsScreen.js +288 -0
- package/lib/features/messaging/ContactsScreen.js.map +1 -0
- package/lib/features/messaging/ConversationListScreen.js +147 -0
- package/lib/features/messaging/ConversationListScreen.js.map +1 -0
- package/lib/features/messaging/MessageActions.js +290 -0
- package/lib/features/messaging/MessageActions.js.map +1 -0
- package/lib/features/messaging/NativeChatExperience.js +189 -0
- package/lib/features/messaging/NativeChatExperience.js.map +1 -0
- package/lib/features/messaging/RegistrationScreen.js +11 -14
- package/lib/features/messaging/RegistrationScreen.js.map +1 -1
- package/lib/features/messaging/ThreadScreen.js +215 -0
- package/lib/features/messaging/ThreadScreen.js.map +1 -0
- package/lib/features/messaging/chatInviteLink.js +52 -0
- package/lib/features/messaging/chatInviteLink.js.map +1 -0
- package/lib/features/messaging/chatModel.js +278 -0
- package/lib/features/messaging/chatModel.js.map +1 -0
- package/lib/features/messaging/chatOperations.js +106 -1
- package/lib/features/messaging/chatOperations.js.map +1 -1
- package/lib/features/messaging/emojiCatalog.js +60 -0
- package/lib/features/messaging/emojiCatalog.js.map +1 -0
- package/lib/features/messaging/emojiKeywords.js +1592 -0
- package/lib/features/messaging/emojiKeywords.js.map +1 -0
- package/lib/features/messaging/nativeChatChannelQuery.js +27 -0
- package/lib/features/messaging/nativeChatChannelQuery.js.map +1 -0
- package/lib/features/messaging/phoneNumbers.js +52 -1
- package/lib/features/messaging/phoneNumbers.js.map +1 -1
- package/lib/features/messaging/sha256.js +68 -0
- package/lib/features/messaging/sha256.js.map +1 -0
- package/lib/features/messaging/useChatData.js +421 -0
- package/lib/features/messaging/useChatData.js.map +1 -0
- package/lib/features/messaging/useContactMatches.js +191 -0
- package/lib/features/messaging/useContactMatches.js.map +1 -0
- package/lib/features/messaging/usePhoneVerification.js +12 -12
- package/lib/features/messaging/usePhoneVerification.js.map +1 -1
- package/lib/features/messaging/yantraChatOrg.js +8 -3
- package/lib/features/messaging/yantraChatOrg.js.map +1 -1
- package/lib/features/resume/AnnotateModal.js +100 -0
- package/lib/features/resume/AnnotateModal.js.map +1 -0
- package/lib/features/resume/AnnotationBar.js +69 -0
- package/lib/features/resume/AnnotationBar.js.map +1 -0
- package/lib/features/resume/ExportSheet.js +105 -0
- package/lib/features/resume/ExportSheet.js.map +1 -0
- package/lib/features/resume/ResumeAgentChatPane.js +95 -0
- package/lib/features/resume/ResumeAgentChatPane.js.map +1 -0
- package/lib/features/resume/ResumeEditor.js +676 -0
- package/lib/features/resume/ResumeEditor.js.map +1 -0
- package/lib/features/resume/ResumeExperience.js +235 -0
- package/lib/features/resume/ResumeExperience.js.map +1 -0
- package/lib/features/resume/ResumeListPanel.js +262 -0
- package/lib/features/resume/ResumeListPanel.js.map +1 -0
- package/lib/features/resume/ResumeToolbar.js +236 -0
- package/lib/features/resume/ResumeToolbar.js.map +1 -0
- package/lib/features/resume/annotations.js +17 -0
- package/lib/features/resume/annotations.js.map +1 -0
- package/lib/features/resume/documentCss.js +52 -0
- package/lib/features/resume/documentCss.js.map +1 -0
- package/lib/features/resume/draft.js +89 -0
- package/lib/features/resume/draft.js.map +1 -0
- package/lib/features/resume/exportResume.js +43 -0
- package/lib/features/resume/exportResume.js.map +1 -0
- package/lib/features/resume/pickResumePhoto.js +22 -0
- package/lib/features/resume/pickResumePhoto.js.map +1 -0
- package/lib/features/resume/renderResume.js +121 -0
- package/lib/features/resume/renderResume.js.map +1 -0
- package/lib/features/resume/resumeClient.js +69 -0
- package/lib/features/resume/resumeClient.js.map +1 -0
- package/lib/features/resume/resumeExec.js +14 -0
- package/lib/features/resume/resumeExec.js.map +1 -0
- package/lib/features/resume/resumeIndex.js +244 -0
- package/lib/features/resume/resumeIndex.js.map +1 -0
- package/lib/features/resume/resumeRuntime.js +50 -0
- package/lib/features/resume/resumeRuntime.js.map +1 -0
- package/lib/features/resume/resumeTheme.js +34 -0
- package/lib/features/resume/resumeTheme.js.map +1 -0
- package/lib/features/resume/resumeToolbox.js +49 -0
- package/lib/features/resume/resumeToolbox.js.map +1 -0
- package/lib/features/resume/templates.js +90 -0
- package/lib/features/resume/templates.js.map +1 -0
- package/lib/features/resume/types.js +10 -0
- package/lib/features/resume/types.js.map +1 -0
- package/lib/features/resume/useResumeSession.js +183 -0
- package/lib/features/resume/useResumeSession.js.map +1 -0
- package/lib/features/shopping/DealsPanel.js +254 -0
- package/lib/features/shopping/DealsPanel.js.map +1 -0
- package/lib/features/shopping/HistoryPanel.js +147 -0
- package/lib/features/shopping/HistoryPanel.js.map +1 -0
- package/lib/features/shopping/OrdersPanel.js +157 -0
- package/lib/features/shopping/OrdersPanel.js.map +1 -0
- package/lib/features/shopping/ProductCard.js +326 -0
- package/lib/features/shopping/ProductCard.js.map +1 -0
- package/lib/features/shopping/ProductDetailSheet.js +313 -0
- package/lib/features/shopping/ProductDetailSheet.js.map +1 -0
- package/lib/features/shopping/ProductFilterBar.js +153 -0
- package/lib/features/shopping/ProductFilterBar.js.map +1 -0
- package/lib/features/shopping/ProductPhoto.js +27 -0
- package/lib/features/shopping/ProductPhoto.js.map +1 -0
- package/lib/features/shopping/SavedPanel.js +139 -0
- package/lib/features/shopping/SavedPanel.js.map +1 -0
- package/lib/features/shopping/ShoppingAgentChatPane.js +436 -0
- package/lib/features/shopping/ShoppingAgentChatPane.js.map +1 -0
- package/lib/features/shopping/ShoppingExperience.js +888 -0
- package/lib/features/shopping/ShoppingExperience.js.map +1 -0
- package/lib/features/shopping/TrendingSections.js +199 -0
- package/lib/features/shopping/TrendingSections.js.map +1 -0
- package/lib/features/shopping/WatchlistPanel.js +148 -0
- package/lib/features/shopping/WatchlistPanel.js.map +1 -0
- package/lib/features/shopping/catalog.js +238 -0
- package/lib/features/shopping/catalog.js.map +1 -0
- package/lib/features/shopping/chat/ShoppingChatResultCard.js +175 -0
- package/lib/features/shopping/chat/ShoppingChatResultCard.js.map +1 -0
- package/lib/features/shopping/chat/streamAssistantReply.js +34 -0
- package/lib/features/shopping/chat/streamAssistantReply.js.map +1 -0
- package/lib/features/shopping/chat/widgetContent.js +233 -0
- package/lib/features/shopping/chat/widgetContent.js.map +1 -0
- package/lib/features/shopping/hooks/useTrendingProducts.js +162 -0
- package/lib/features/shopping/hooks/useTrendingProducts.js.map +1 -0
- package/lib/features/shopping/productImage.js +42 -0
- package/lib/features/shopping/productImage.js.map +1 -0
- package/lib/features/shopping/savedProducts.js +84 -0
- package/lib/features/shopping/savedProducts.js.map +1 -0
- package/lib/features/shopping/services/catalogActions.js +166 -0
- package/lib/features/shopping/services/catalogActions.js.map +1 -0
- package/lib/features/shopping/services/parsePriceCheckIntent.js +58 -0
- package/lib/features/shopping/services/parsePriceCheckIntent.js.map +1 -0
- package/lib/features/shopping/services/parseShoppingIntent.js +67 -0
- package/lib/features/shopping/services/parseShoppingIntent.js.map +1 -0
- package/lib/features/shopping/services/productAvailability.js +25 -0
- package/lib/features/shopping/services/productAvailability.js.map +1 -0
- package/lib/features/shopping/services/productFilters.js +72 -0
- package/lib/features/shopping/services/productFilters.js.map +1 -0
- package/lib/features/shopping/services/retailerUrl.js +75 -0
- package/lib/features/shopping/services/retailerUrl.js.map +1 -0
- package/lib/features/shopping/services/shoppingChatReply.js +46 -0
- package/lib/features/shopping/services/shoppingChatReply.js.map +1 -0
- package/lib/features/shopping/services/shoppingProductSearch.js +336 -0
- package/lib/features/shopping/services/shoppingProductSearch.js.map +1 -0
- package/lib/features/shopping/services/shoppingSearchConnectorClient.js +41 -0
- package/lib/features/shopping/services/shoppingSearchConnectorClient.js.map +1 -0
- package/lib/features/shopping/shopAgentSwipe.js +7 -0
- package/lib/features/shopping/shopAgentSwipe.js.map +1 -0
- package/lib/features/shopping/shoppingCart.js +116 -0
- package/lib/features/shopping/shoppingCart.js.map +1 -0
- package/lib/features/shopping/shoppingExec.js +14 -0
- package/lib/features/shopping/shoppingExec.js.map +1 -0
- package/lib/features/shopping/shoppingHistoryStore.js +176 -0
- package/lib/features/shopping/shoppingHistoryStore.js.map +1 -0
- package/lib/features/shopping/shoppingRuntime.js +63 -0
- package/lib/features/shopping/shoppingRuntime.js.map +1 -0
- package/lib/features/shopping/timeAgo.js +14 -0
- package/lib/features/shopping/timeAgo.js.map +1 -0
- package/lib/features/shopping/useShoppingSearch.js +262 -0
- package/lib/features/shopping/useShoppingSearch.js.map +1 -0
- package/lib/features/travel/BookHeaderGlow.js +48 -0
- package/lib/features/travel/BookHeaderGlow.js.map +1 -0
- package/lib/features/travel/BookingsPanel.js +29 -0
- package/lib/features/travel/BookingsPanel.js.map +1 -0
- package/lib/features/travel/DiscoverPanel.js +155 -0
- package/lib/features/travel/DiscoverPanel.js.map +1 -0
- package/lib/features/travel/FlightCompareBar.js +86 -0
- package/lib/features/travel/FlightCompareBar.js.map +1 -0
- package/lib/features/travel/FlightDealsBoard.js +100 -0
- package/lib/features/travel/FlightDealsBoard.js.map +1 -0
- package/lib/features/travel/HistoryPanel.js +82 -0
- package/lib/features/travel/HistoryPanel.js.map +1 -0
- package/lib/features/travel/PopularDestinations.js +144 -0
- package/lib/features/travel/PopularDestinations.js.map +1 -0
- package/lib/features/travel/SavedPanel.js +27 -0
- package/lib/features/travel/SavedPanel.js.map +1 -0
- package/lib/features/travel/TravelAgentChatPane.js +303 -0
- package/lib/features/travel/TravelAgentChatPane.js.map +1 -0
- package/lib/features/travel/TravelBookHero.js +425 -0
- package/lib/features/travel/TravelBookHero.js.map +1 -0
- package/lib/features/travel/TravelDatesField.js +234 -0
- package/lib/features/travel/TravelDatesField.js.map +1 -0
- package/lib/features/travel/TravelDetailSheet.js +106 -0
- package/lib/features/travel/TravelDetailSheet.js.map +1 -0
- package/lib/features/travel/TravelExperience.js +624 -0
- package/lib/features/travel/TravelExperience.js.map +1 -0
- package/lib/features/travel/TravelGuestsField.js +85 -0
- package/lib/features/travel/TravelGuestsField.js.map +1 -0
- package/lib/features/travel/TravelLanding.js +318 -0
- package/lib/features/travel/TravelLanding.js.map +1 -0
- package/lib/features/travel/TravelLocationField.js +179 -0
- package/lib/features/travel/TravelLocationField.js.map +1 -0
- package/lib/features/travel/TravelPropertyCard.js +266 -0
- package/lib/features/travel/TravelPropertyCard.js.map +1 -0
- package/lib/features/travel/TravelPropertyPhoto.js +22 -0
- package/lib/features/travel/TravelPropertyPhoto.js.map +1 -0
- package/lib/features/travel/TravelRailFlyout.js +79 -0
- package/lib/features/travel/TravelRailFlyout.js.map +1 -0
- package/lib/features/travel/TravelResultsMap.js +126 -0
- package/lib/features/travel/TravelResultsMap.js.map +1 -0
- package/lib/features/travel/WorkspacePanel.js +148 -0
- package/lib/features/travel/WorkspacePanel.js.map +1 -0
- package/lib/features/travel/appNav.js +244 -0
- package/lib/features/travel/appNav.js.map +1 -0
- package/lib/features/travel/calendarDays.js +50 -0
- package/lib/features/travel/calendarDays.js.map +1 -0
- package/lib/features/travel/catalog.js +72 -0
- package/lib/features/travel/catalog.js.map +1 -0
- package/lib/features/travel/chat/TravelChatResultCard.js +107 -0
- package/lib/features/travel/chat/TravelChatResultCard.js.map +1 -0
- package/lib/features/travel/chat/widgetContent.js +107 -0
- package/lib/features/travel/chat/widgetContent.js.map +1 -0
- package/lib/features/travel/flightDeals.js +65 -0
- package/lib/features/travel/flightDeals.js.map +1 -0
- package/lib/features/travel/mapCoordinates.js +36 -0
- package/lib/features/travel/mapCoordinates.js.map +1 -0
- package/lib/features/travel/parseTravelIntent.js +303 -0
- package/lib/features/travel/parseTravelIntent.js.map +1 -0
- package/lib/features/travel/savedStays.js +66 -0
- package/lib/features/travel/savedStays.js.map +1 -0
- package/lib/features/travel/services/flightDealsBoard.js +111 -0
- package/lib/features/travel/services/flightDealsBoard.js.map +1 -0
- package/lib/features/travel/services/flightSearchConnectorClient.js +42 -0
- package/lib/features/travel/services/flightSearchConnectorClient.js.map +1 -0
- package/lib/features/travel/services/geocodeLocation.js +79 -0
- package/lib/features/travel/services/geocodeLocation.js.map +1 -0
- package/lib/features/travel/services/placePredictions.js +113 -0
- package/lib/features/travel/services/placePredictions.js.map +1 -0
- package/lib/features/travel/services/resolveOriginCity.js +27 -0
- package/lib/features/travel/services/resolveOriginCity.js.map +1 -0
- package/lib/features/travel/services/resortifiConnectorClient.js +76 -0
- package/lib/features/travel/services/resortifiConnectorClient.js.map +1 -0
- package/lib/features/travel/services/travelFlightSearch.js +289 -0
- package/lib/features/travel/services/travelFlightSearch.js.map +1 -0
- package/lib/features/travel/services/travelPropertySearch.js +377 -0
- package/lib/features/travel/services/travelPropertySearch.js.map +1 -0
- package/lib/features/travel/travelAgentSwipe.js +7 -0
- package/lib/features/travel/travelAgentSwipe.js.map +1 -0
- package/lib/features/travel/travelExec.js +14 -0
- package/lib/features/travel/travelExec.js.map +1 -0
- package/lib/features/travel/travelHistoryStore.js +108 -0
- package/lib/features/travel/travelHistoryStore.js.map +1 -0
- package/lib/features/travel/travelRuntime.js +62 -0
- package/lib/features/travel/travelRuntime.js.map +1 -0
- package/lib/features/travel/types.js +9 -0
- package/lib/features/travel/types.js.map +1 -0
- package/lib/features/travel/useTravelSearch.js +330 -0
- package/lib/features/travel/useTravelSearch.js.map +1 -0
- package/lib/features/travel/workspaceContent.js +548 -0
- package/lib/features/travel/workspaceContent.js.map +1 -0
- package/lib/hooks/useCdecliChannel.js +128 -6
- package/lib/hooks/useCdecliChannel.js.map +1 -1
- package/lib/hooks/useChatApi.js +4 -2
- package/lib/hooks/useChatApi.js.map +1 -1
- package/lib/hooks/useChatStream.js +77 -63
- package/lib/hooks/useChatStream.js.map +1 -1
- package/lib/hooks/useHostConnectorCard.js +24 -0
- package/lib/hooks/useHostConnectorCard.js.map +1 -0
- package/lib/hooks/useObtainSystemToken.js +23 -5
- package/lib/hooks/useObtainSystemToken.js.map +1 -1
- package/lib/hooks/webViewRetentionPolicy.js +1 -0
- package/lib/hooks/webViewRetentionPolicy.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/screens/Chat/index.js +51 -22
- package/lib/screens/Chat/index.js.map +1 -1
- package/lib/screens/ChatNative/index.js +13 -2
- package/lib/screens/ChatNative/index.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +3 -3
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/lib/screens/Home/components/ChatHistoryLanding.js +32 -32
- package/lib/screens/Home/components/ChatHistoryLanding.js.map +1 -1
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js +12 -6
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js.map +1 -1
- package/lib/screens/ResumeNative/useResumeHostChat.js +12 -6
- package/lib/screens/ResumeNative/useResumeHostChat.js.map +1 -1
- package/lib/screens/ShoppingNative/useShoppingHostChat.js +12 -6
- package/lib/screens/ShoppingNative/useShoppingHostChat.js.map +1 -1
- package/lib/screens/TravelNative/useTravelHostChat.js +12 -6
- package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -1
- package/lib/screens/WebBuilder/WebViewWithNavigation.js +2 -2
- package/lib/screens/WebBuilder/WebViewWithNavigation.js.map +1 -1
- package/lib/services/brainQuickReply.js +38 -1
- package/lib/services/brainQuickReply.js.map +1 -1
- package/lib/state/chatThreadMerge.js +6 -1
- package/lib/state/chatThreadMerge.js.map +1 -1
- package/package.json +6 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasExperience.js","sources":["../../../src/features/canvas/CanvasExperience.tsx"],"sourcesContent":["/**\n * The canvas experience: boards + viewer, as one federated unit.\n *\n * This lives on the REMOTE side of the microfrontend on purpose. If the host\n * owned the fetch, every change to how a canvas is read - a new field, a\n * different empty state, a fix to board ordering - would need an App Store\n * build. Here it ships with `cdecli surfaces deploy canvas`, the same way the\n * renderer does.\n *\n * The host injects only what it alone can know: the session token and the index\n * endpoint for its environment. Everything downstream of that - fetching,\n * choosing a board, loading/error/empty states - is the remote's business, and\n * this file deliberately imports nothing from the app (no Apollo, no\n * navigation, no config): only React Native, `fetch`, and its sibling modules.\n */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { ActivityIndicator, Pressable, StyleSheet, Text, View, useColorScheme } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { NativeCanvasViewer, type CanvasItemAction } from './NativeCanvasViewer';\nimport { CanvasBoardsGrid } from './CanvasBoardsGrid';\nimport { CanvasAgentChatPane } from './CanvasAgentChatPane';\nimport { VideoEditorExperience, type VideoExportSpec } from './VideoEditorExperience';\nimport { ImageEditorExperience } from './ImageEditorExperience';\nimport { AudioEditorExperience } from './AudioEditorExperience';\nimport { friendlyMediaError, type AudioRecorderSeam, type RunMediaAction } from './videoEditor/mediaActions';\nimport { createRemoteRunAction, createRemoteUploadMedia, proxiedMediaUrl } from './videoEditor/remoteMediaClient';\nimport { renderExportSpec } from './videoEditor/exportRenderer';\nimport { fetchMyCanvasBoards, pushCanvasBoard, getCachedCanvasBoards, type CanvasBoardSummary } from './surfaceIndex';\nimport { readCachedCanvasBoards, writeCachedCanvasBoards } from './canvasBoardsCatalog';\nimport { hydrateCanvasBoardsSnapshot, persistCanvasBoardsSnapshot } from './canvasBoardsSnapshot';\nimport {\n boardSignature,\n buildBoardState,\n dimsForAspect,\n emptyBoardState,\n frameForUpload,\n newBoardId,\n type CanvasItem,\n type PersistedCanvasState,\n} from './canvasCore';\nimport { promoProjectToTimeline } from './promoProjectImport';\nimport type { DesignedPromo } from './promoVideo';\nimport { loadTemplateTimeline } from './templateImport/loadTemplate';\nimport type { CanvasPromptTemplate } from './canvasChatTemplates';\nimport { CanvasToolDock, type DockStudio, type MediaPickSource } from './CanvasToolDock';\nimport { describeSession } from './sessionIdentity';\nimport { DesignExperience } from '../design/DesignExperience';\nimport type { DesignKind } from '../design/designCore';\nimport { fetchMyDesigns, type DesignDocSummary } from '../design/designIndex';\nimport { VideoGeneratorExperience, type GeneratorMode } from './VideoGeneratorExperience';\nimport { VideoEditExperience } from './VideoEditExperience';\nimport { VideoClipsExperience } from './VideoClipsExperience';\nimport { FrameExtractorExperience } from './FrameExtractorExperience';\nimport { MoodboardExperience } from './MoodboardExperience';\nimport { SetStudioExperience } from './SetStudioExperience';\nimport { InfluencerStudioExperience } from './InfluencerStudioExperience';\nimport { CameraRecorderExperience } from './recorder/CameraRecorderExperience';\nimport { listStudioLooks, type StudioLook } from './studioLooks';\n\nexport interface CanvasExperienceProps {\n /** Bearer for the surface index. Absent -> the unauthenticated notice. */\n token?: string | null;\n /** Index endpoint for this environment. */\n indexUrl: string;\n /** Open this board when it exists; otherwise the newest opens. */\n channelId?: string;\n /** Render this board and skip the network entirely (deep links, tests). */\n board?: PersistedCanvasState | null;\n /** Host-side session problem, shown instead of attempting a doomed read. */\n sessionError?: string | null;\n /** Agent-backed item actions (Edit Image, Create Video) - raised by the\n * viewer toolbar. Create Video / Edit Video / Clips are handled HERE\n * (same connectors as web canvas) and only forwarded if a host overrides. */\n onItemAction?: (action: CanvasItemAction, item: CanvasItem) => void;\n /** Hand a finished editor timeline to the host's renderer (yantra-video). */\n onExportVideo?: (spec: VideoExportSpec) => void;\n /** Device-library picker the host provides (native capability).\n * `onStatus` is the web upload toast: `Uploading IMG_0003.jpeg…`. */\n onPickLocalMedia?: (onStatus?: (message: string) => void, source?: MediaPickSource) => Promise<CanvasItem[]>;\n /** Host uploader for phone-local URIs (file:// -> store URL) so board\n * items persist as fetchable media, like the web's uploadFileToStore. */\n uploadMedia?: (localUri: string) => Promise<string>;\n /** Host microphone (expo-audio) - the Voice tab's record flows. */\n audioRecorder?: AudioRecorderSeam;\n /** Connector runner (auth + transport live host-side). Present -> the\n * native image/audio editors open for edit actions; absent -> those\n * actions forward to onItemAction like before. */\n runMediaAction?: RunMediaAction;\n /** Host Apollo client — templates gallery is cache-first against typePolicies. */\n apolloClient?: import('./useStudioCatalogTemplates').StudioCatalogClient | null;\n testID?: string;\n}\n\nfunction untitledBoard(channelId?: string): CanvasBoardSummary {\n const id = channelId?.trim() || newBoardId();\n return {\n channelId: id,\n title: '',\n savedAt: Date.now(),\n itemCount: 0,\n board: emptyBoardState(),\n };\n}\n\nconst SAVE_DEBOUNCE_MS = 600;\n\nexport function CanvasExperience({\n token,\n indexUrl,\n channelId,\n board: explicitBoard,\n sessionError,\n onItemAction,\n onExportVideo,\n onPickLocalMedia,\n uploadMedia,\n audioRecorder,\n runMediaAction,\n apolloClient,\n testID,\n}: CanvasExperienceProps) {\n const isDark = useColorScheme() === 'dark';\n // Host seams win (they can refresh auth); on binaries that predate them\n // the remote builds its own from what it already holds, so the editors\n // work OTA without an app release.\n const effectiveRunAction = useMemo<RunMediaAction | undefined>(\n () => runMediaAction ?? (token && indexUrl ? createRemoteRunAction(token, indexUrl) : undefined),\n [runMediaAction, token, indexUrl],\n );\n const effectiveUploadMedia = useMemo(\n () => uploadMedia ?? (token && indexUrl ? createRemoteUploadMedia(token, indexUrl) : undefined),\n [uploadMedia, token, indexUrl],\n );\n const cachedBoards =\n getCachedCanvasBoards(indexUrl) ?? (apolloClient ? readCachedCanvasBoards(apolloClient) : null);\n const [boards, setBoards] = useState<CanvasBoardSummary[]>(() => cachedBoards ?? []);\n const [loading, setLoading] = useState(!explicitBoard && cachedBoards == null);\n const [error, setError] = useState<string | null>(null);\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [agentOpen, setAgentOpen] = useState(false);\n const [gridAgentOpen, setGridAgentOpen] = useState(false);\n const [generation, setGeneration] = useState(0);\n const [mediaBusy, setMediaBusy] = useState(false);\n const [uploadStatus, setUploadStatus] = useState<string | null>(null);\n const lastSavedByIdRef = useRef<Record<string, string>>({});\n\n const skipFetch = Boolean(explicitBoard);\n\n useEffect(() => {\n if (skipFetch || !indexUrl) return undefined;\n let cancelled = false;\n void hydrateCanvasBoardsSnapshot(indexUrl).then((rows) => {\n if (cancelled || !rows?.length) return;\n setBoards((prev) => (prev.length > 0 ? prev : rows));\n setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [indexUrl, skipFetch]);\n\n useEffect(() => {\n if (skipFetch) return undefined;\n if (!token) {\n // The index answers unauthenticated reads as \"Missing tenantId\".\n // Wait for the host mint — but keep a cached grid on screen.\n if (getCachedCanvasBoards(indexUrl) == null) {\n setLoading(true);\n }\n setError(null);\n return undefined;\n }\n const controller = new AbortController();\n let cancelled = false;\n const hasCache = getCachedCanvasBoards(indexUrl) != null || readCachedCanvasBoards(apolloClient).length > 0;\n\n (async () => {\n // Only the first visit (no cache) blocks on the spinner. Later visits\n // show the cached grid immediately and refresh in the background.\n if (!hasCache) {\n setLoading(true);\n setError(null);\n }\n const result = await fetchMyCanvasBoards({ url: indexUrl, token, signal: controller.signal });\n if (cancelled) return;\n if (__DEV__) {\n // Board geometry at a glance - \"why does this board render\n // this way\" starts with positions, not the picture.\n // eslint-disable-next-line no-console\n console.log(\n '[CanvasExperience] boards:',\n JSON.stringify(\n result.boards.map((b) => ({\n channelId: b.channelId,\n title: b.title,\n items: b.board.items.map((i) => ({\n type: i.type,\n x: i.x,\n y: i.y,\n w: i.width,\n h: i.height,\n z: i.zIndex,\n src: `${i.src.slice(0, 96)}…`,\n })),\n })),\n ),\n );\n }\n if (result.error) {\n // Keep the cached grid; only surface an error on a true first load.\n if (!hasCache) setError(result.error);\n setLoading(false);\n return;\n }\n lastSavedByIdRef.current = Object.fromEntries(\n result.boards.map((entry) => [entry.channelId, boardSignature(entry.board)]),\n );\n setBoards(result.boards);\n writeCachedCanvasBoards(apolloClient, result.boards);\n setError(null);\n setLoading(false);\n })();\n\n return () => {\n cancelled = true;\n controller.abort();\n };\n }, [indexUrl, token, skipFetch, generation, apolloClient]);\n\n useEffect(() => {\n if (skipFetch || loading || !indexUrl) return;\n persistCanvasBoardsSnapshot(indexUrl, boards);\n }, [boards, indexUrl, loading, skipFetch]);\n\n // Honour a deep-linked board only when it actually exists in the index.\n // Otherwise stay on the grid — that is screen one on web.\n useEffect(() => {\n if (selectedId || !channelId || boards.length === 0) return;\n const match = boards.find((entry) => entry.channelId === channelId);\n if (match) setSelectedId(match.channelId);\n }, [boards, channelId, selectedId]);\n\n const selected = useMemo(\n () => (selectedId ? boards.find((entry) => entry.channelId === selectedId) : undefined),\n [boards, selectedId],\n );\n\n /** Google Veo URIs only play through the agent proxy — same wrap web uses. */\n const playableBoard = useCallback(\n (board: PersistedCanvasState): PersistedCanvasState => {\n if (!indexUrl) return board;\n return {\n ...board,\n items: board.items.map((item) =>\n item.type === 'video' || item.type === 'audio'\n ? { ...item, src: proxiedMediaUrl(indexUrl, item.src) }\n : item,\n ),\n };\n },\n [indexUrl],\n );\n\n const handleDockStudio = useCallback((studio: DockStudio) => {\n if (studio === 'video') {\n setEditorSeed({ itemId: null });\n return;\n }\n if (studio === 'agent') {\n setEditorSeed({ itemId: null, initialRailTab: 'agent' });\n return;\n }\n if (studio === 'influencer') {\n setShowInfluencer(true);\n return;\n }\n if (studio === 'set3d') {\n setShowSet3d(true);\n return;\n }\n if (studio === 'frames') {\n setShowFrames(true);\n return;\n }\n if (studio === 'moodboard') {\n setShowMoodboard(true);\n return;\n }\n // Match web studios: docs → design page, carousel → multi-slide deck,\n // flyers → postcard kit. Never collapse carousel into generic design.\n const kind = studio === 'flyers' ? 'postcard' : studio === 'carousel' ? 'carousel' : 'design';\n setDesignEntry({ kind });\n }, []);\n const reload = useCallback(() => setGeneration((n) => n + 1), []);\n const handleBoardChange = useCallback(\n (board: PersistedCanvasState) => {\n setBoards((prev) =>\n prev.map((entry) =>\n entry.channelId === selectedId\n ? {\n ...entry,\n board,\n title: board.title || entry.title,\n itemCount: board.items.length,\n savedAt: board.savedAt,\n }\n : entry,\n ),\n );\n },\n [selectedId],\n );\n\n const handleAddPhotos = useCallback(\n async (source: MediaPickSource) => {\n if (!onPickLocalMedia || mediaBusy) return;\n try {\n const picked = await onPickLocalMedia((message) => {\n setMediaBusy(true);\n setUploadStatus(message);\n }, source);\n if (!picked.length) return;\n setBoards((prev) => {\n const list = prev.length ? prev : [untitledBoard(channelId)];\n const targetId = selectedId ?? list[0].channelId;\n return list.map((entry) => {\n if (entry.channelId !== targetId) return entry;\n const startZ = entry.board.items.length;\n const items = [\n ...entry.board.items,\n ...picked.map((item, i) => ({\n ...item,\n ...frameForUpload(item.type),\n zIndex: startZ + i + 1,\n })),\n ];\n const nextState = buildBoardState(items, entry.board.zoom, entry.title);\n return {\n ...entry,\n title: nextState.title || entry.title,\n itemCount: items.length,\n board: { ...entry.board, items, savedAt: Date.now(), title: nextState.title },\n };\n });\n });\n } catch (err) {\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.warn('[CanvasExperience] add photos failed:', err);\n }\n } finally {\n setMediaBusy(false);\n setUploadStatus(null);\n }\n },\n [onPickLocalMedia, selectedId, channelId, mediaBusy],\n );\n\n const handleNewCanvas = useCallback(() => {\n const entry = untitledBoard();\n lastSavedByIdRef.current[entry.channelId] = boardSignature(entry.board);\n setBoards((prev) => [entry, ...prev]);\n setSelectedId(entry.channelId);\n }, []);\n\n const handleAskAgentFromGrid = useCallback(() => {\n setGridAgentOpen(true);\n }, []);\n\n const closeBoard = useCallback(() => {\n setAgentOpen(false);\n setGridAgentOpen(false);\n setBoardSelectedItem(null);\n setSelectedId(null);\n // Web's grid hides empty rows. Drop a New canvas that never got media\n // so it does not sit next to real boards as \"0 items\".\n setBoards((prev) => prev.filter((entry) => entry.itemCount > 0));\n }, []);\n\n // Twin of canvas-surface's 600ms auto-save: item add/remove/src change ->\n // registerSurfaceChannel. Drags and zoom are not a reason to write.\n useEffect(() => {\n if (skipFetch || loading || !token || !indexUrl || !selected) return undefined;\n const state = buildBoardState(selected.board.items, selected.board.zoom, selected.title);\n if (state.items.length === 0) return undefined;\n const sig = boardSignature(state);\n if (lastSavedByIdRef.current[selected.channelId] === sig) return undefined;\n const timer = setTimeout(() => {\n void pushCanvasBoard({\n url: indexUrl,\n token,\n channelId: selected.channelId,\n state,\n }).then((ok) => {\n if (ok) lastSavedByIdRef.current[selected.channelId] = sig;\n });\n }, SAVE_DEBOUNCE_MS);\n return () => clearTimeout(timer);\n }, [selected, token, indexUrl, loading, skipFetch]);\n\n /** null = canvas; otherwise the editor is open, optionally seeded. */\n const [editorSeed, setEditorSeed] = useState<{\n itemId: string | null;\n initialTimeline?: import('./videoEditor/editorModel').EditorTimeline;\n projectTitle?: string;\n logoSrc?: string | null;\n initialRailTab?: string | null;\n } | null>(null);\n /** Item being edited in the native image/audio editor. */\n const [mediaEdit, setMediaEdit] = useState<{\n kind: 'image' | 'audio';\n item: CanvasItem;\n initialTab?: 'aiedit';\n } | null>(null);\n /** Web-parity generator (dock Image/Video/Audio + toolbar Create Video). */\n const [generator, setGenerator] = useState<{\n mode: GeneratorMode;\n item?: CanvasItem | null;\n restyle?: boolean;\n initialPrompt?: string;\n } | null>(null);\n const [videoEdit, setVideoEdit] = useState<CanvasItem | null>(null);\n const [videoClips, setVideoClips] = useState<CanvasItem | 'url' | null>(null);\n const [showFrames, setShowFrames] = useState(false);\n const [showMoodboard, setShowMoodboard] = useState(false);\n const [showSet3d, setShowSet3d] = useState(false);\n const [showInfluencer, setShowInfluencer] = useState(false);\n const [showRecorder, setShowRecorder] = useState(false);\n /** Board selection for generate seed + edit tools. */\n const [boardSelectedItem, setBoardSelectedItem] = useState<CanvasItem | null>(null);\n /** Remote-side render in flight (stage label) or its failure. */\n const [exporting, setExporting] = useState<{ stage: string; error?: string } | null>(null);\n /** Design studio screen (opened from the grid); null = canvas screens. */\n const [designEntry, setDesignEntry] = useState<{ kind: DesignKind } | { channelId: string } | null>(null);\n const [designs, setDesigns] = useState<DesignDocSummary[]>([]);\n const [featuredLooks, setFeaturedLooks] = useState<StudioLook[]>([]);\n\n // The grid also lists the user's designs - fetched from the same index\n // under its `design` surface. Refreshes when the studio closes.\n useEffect(() => {\n if (skipFetch || !token || !indexUrl || designEntry) return undefined;\n const controller = new AbortController();\n void fetchMyDesigns({ url: indexUrl, token, signal: controller.signal }).then((result) => {\n setDesigns(result.designs);\n });\n return () => controller.abort();\n }, [token, indexUrl, skipFetch, designEntry, generation]);\n\n useEffect(() => {\n if (!token && !effectiveRunAction && !apolloClient) {\n setFeaturedLooks([]);\n return;\n }\n let cancelled = false;\n void listStudioLooks(effectiveRunAction, { limit: 12 }, { client: apolloClient, token, indexUrl })\n .then((page) => {\n if (!cancelled) setFeaturedLooks(page.looks);\n })\n .catch(() => {\n if (!cancelled) setFeaturedLooks([]);\n });\n return () => {\n cancelled = true;\n };\n }, [apolloClient, effectiveRunAction, indexUrl, token]);\n\n /** Place generated/uploaded media on the open board — same as web addGeneratedItem. */\n const addBoardItem = useCallback(\n (type: CanvasItem['type'], url: string, opts?: { name?: string; aspect?: string }): CanvasItem => {\n const maxEdge = type === 'video' ? 640 : 600;\n const frame = opts?.aspect\n ? { x: 100, y: 100, ...dimsForAspect(opts.aspect, maxEdge) }\n : frameForUpload(type);\n const src = indexUrl ? proxiedMediaUrl(indexUrl, url) : url;\n const item: CanvasItem = {\n id: newBoardId(),\n type,\n src,\n generatedAssetName: opts?.name ?? (type === 'video' ? 'Edited video' : type),\n zIndex: 1,\n ...frame,\n };\n setBoards((prev) => {\n const list = prev.length ? prev : [untitledBoard(channelId)];\n const targetId = selectedId ?? list[0].channelId;\n return list.map((entry) => {\n if (entry.channelId !== targetId) return entry;\n const items = [...entry.board.items, { ...item, zIndex: entry.board.items.length + 1 }];\n const nextState = buildBoardState(items, entry.board.zoom, entry.title);\n return {\n ...entry,\n title: nextState.title || entry.title,\n itemCount: items.length,\n board: { ...entry.board, items, savedAt: Date.now(), title: nextState.title },\n };\n });\n });\n return item;\n },\n [selectedId, channelId, indexUrl],\n );\n\n /** Gallery AI Chat: first generate opens a new board; closing with no media stays on the grid. */\n const openFreshBoardWithItem = useCallback(\n (type: CanvasItem['type'], url: string, opts?: { name?: string; aspect?: string }): CanvasItem => {\n const maxEdge = type === 'video' ? 640 : 600;\n const frame = opts?.aspect\n ? { x: 100, y: 100, ...dimsForAspect(opts.aspect, maxEdge) }\n : frameForUpload(type);\n const src = indexUrl ? proxiedMediaUrl(indexUrl, url) : url;\n const item: CanvasItem = {\n id: newBoardId(),\n type,\n src,\n generatedAssetName: opts?.name ?? (type === 'video' ? 'Edited video' : type),\n zIndex: 1,\n ...frame,\n };\n const entry = untitledBoard();\n const items = [{ ...item, zIndex: 1 }];\n const nextState = buildBoardState(items, entry.board.zoom, entry.title);\n const next: CanvasBoardSummary = {\n ...entry,\n title: nextState.title || entry.title,\n itemCount: items.length,\n board: { ...entry.board, items, savedAt: Date.now(), title: nextState.title },\n };\n lastSavedByIdRef.current[entry.channelId] = boardSignature(next.board);\n setBoards((prev) => [next, ...prev]);\n setSelectedId(entry.channelId);\n setGridAgentOpen(false);\n return item;\n },\n [indexUrl],\n );\n\n const addRenderedVideo = useCallback(\n (url: string, opts?: { name?: string; aspect?: string }) => addBoardItem('video', url, opts),\n [addBoardItem],\n );\n\n const patchItemSrc = useCallback(\n (itemId: string, url: string, type?: CanvasItem['type']) => {\n const src = indexUrl ? proxiedMediaUrl(indexUrl, url) : url;\n setBoards((prev) =>\n prev.map((entry) => {\n if (entry.channelId !== selectedId) return entry;\n const items = entry.board.items.map((item) =>\n item.id === itemId ? { ...item, src, ...(type ? { type } : {}) } : item,\n );\n const nextState = buildBoardState(items, entry.board.zoom, entry.title);\n return {\n ...entry,\n board: { ...entry.board, items, savedAt: Date.now(), title: nextState.title },\n };\n }),\n );\n },\n [selectedId, indexUrl],\n );\n\n // Same fallback rule as the connector seams: a host renderer wins, and\n // without one the remote drives the connector chain itself, so the\n // editor's checkmark produces a real video on old binaries too.\n const exportBusyRef = useRef(false);\n const effectiveOnExport = useMemo(() => {\n // The REMOTE renderer is preferred when it can run at all: it ships\n // with surface deploys, so every binary - old or new - exports with\n // the newest chain (soundtrack, future transitions) without an app\n // release. The host seam is only the last resort without a runner.\n if (!effectiveRunAction) return onExportVideo;\n const runAction = effectiveRunAction;\n const upload = effectiveUploadMedia;\n return (spec: VideoExportSpec) => {\n if (exportBusyRef.current) return;\n exportBusyRef.current = true;\n setExporting({ stage: 'Starting render' });\n void renderExportSpec(spec, runAction, upload, (p) => setExporting(p))\n .then((url) => {\n addRenderedVideo(url);\n setEditorSeed(null);\n setExporting(null);\n })\n .catch((err: unknown) => {\n setExporting({ stage: '', error: friendlyMediaError(err, 'video export') });\n })\n .finally(() => {\n exportBusyRef.current = false;\n });\n };\n }, [onExportVideo, effectiveRunAction, effectiveUploadMedia, addRenderedVideo]);\n\n const handleItemAction = useCallback(\n (action: CanvasItemAction, item: CanvasItem) => {\n // Match web canvas toolbar:\n // Create Video → generator (yantra-video-generation), image/video as reference\n // Promo → marketing produce submit/poll\n // Edit Video → yantra-video-editing ops (trim/speed/mute/…)\n // Clips → yantra-video-clip\n if (action === 'create-video') {\n setGenerator({ mode: 'video', item });\n return;\n }\n if (action === 'restyle-video') {\n setGenerator({ mode: 'video', item, restyle: true });\n return;\n }\n if (action === 'promo-video') {\n setGenerator({ mode: 'promo', item });\n return;\n }\n if (action === 'edit-video') {\n setVideoEdit(item);\n return;\n }\n if (action === 'trim-video') {\n setVideoClips(item);\n return;\n }\n if ((action === 'edit-image' || action === 'mark-edit') && effectiveRunAction) {\n setMediaEdit({\n kind: 'image',\n item,\n ...(action === 'mark-edit' ? { initialTab: 'aiedit' as const } : {}),\n });\n return;\n }\n if (action === 'edit-audio' && effectiveRunAction) {\n setMediaEdit({ kind: 'audio', item });\n return;\n }\n onItemAction?.(action, item);\n },\n [onItemAction, effectiveRunAction],\n );\n\n const handleUseTemplate = useCallback(async (template: CanvasPromptTemplate) => {\n try {\n const imported = await loadTemplateTimeline(template);\n setEditorSeed({\n itemId: null,\n initialTimeline: imported.timeline,\n projectTitle: imported.title,\n logoSrc: imported.logoSrc,\n });\n } catch {\n // Agent / editor surfaces their own notices when Use fails in-editor.\n }\n }, []);\n\n if (generator) {\n return (\n <VideoGeneratorExperience\n mode={generator.mode}\n item={generator.item}\n restyle={generator.restyle}\n initialPrompt={generator.initialPrompt}\n runAction={effectiveRunAction}\n onClose={() => setGenerator(null)}\n onGenerated={(url, meta) => {\n const kind = meta.mode === 'audio' ? 'audio' : meta.mode === 'image' ? 'image' : 'video';\n addBoardItem(kind, url, {\n name: `${kind === 'image' ? 'Image' : kind === 'audio' ? 'Audio' : meta.mode === 'promo' ? 'Promo' : 'Video'} · ${meta.prompt.slice(0, 28)}`,\n aspect: meta.aspect,\n });\n setGenerator(null);\n }}\n onPromoDesigned={(designed) => {\n const imported = promoProjectToTimeline(designed.project, designed.title);\n setGenerator(null);\n setEditorSeed({\n itemId: null,\n initialTimeline: imported.timeline,\n projectTitle: imported.title,\n logoSrc: imported.logoSrc,\n });\n }}\n />\n );\n }\n\n if (showFrames) {\n return (\n <FrameExtractorExperience\n boardItems={selected?.board.items ?? []}\n seedVideo={boardSelectedItem?.type === 'video' ? boardSelectedItem : null}\n runAction={effectiveRunAction}\n onClose={() => setShowFrames(false)}\n onPlace={(urls) => {\n urls.forEach((url, i) => addBoardItem('image', url, { name: `Frame ${i + 1}` }));\n setShowFrames(false);\n }}\n />\n );\n }\n\n if (showMoodboard) {\n return (\n <MoodboardExperience\n boardItems={selected?.board.items ?? []}\n onClose={() => setShowMoodboard(false)}\n onUseBrief={(brief) => {\n setShowMoodboard(false);\n setGenerator({ mode: 'image', initialPrompt: brief });\n }}\n />\n );\n }\n\n if (showSet3d) {\n return (\n <SetStudioExperience\n boardItems={selected?.board.items ?? []}\n runAction={effectiveRunAction}\n uploadMedia={effectiveUploadMedia}\n onClose={() => setShowSet3d(false)}\n onPlace={(kind, url, name) => {\n addBoardItem(kind, url, { name });\n }}\n />\n );\n }\n\n if (showRecorder) {\n return (\n <CameraRecorderExperience\n onClose={() => setShowRecorder(false)}\n onPick={async (source) => {\n if (!onPickLocalMedia) return [];\n return onPickLocalMedia(undefined, source);\n }}\n onPlaced={(items) => {\n for (const item of items) {\n addBoardItem(item.type === 'video' ? 'video' : 'image', item.src, {\n name: item.generatedAssetName,\n aspect: item.aspect,\n });\n }\n }}\n />\n );\n }\n\n if (showInfluencer) {\n return (\n <InfluencerStudioExperience\n boardItems={selected?.board.items ?? []}\n runAction={effectiveRunAction}\n onClose={() => setShowInfluencer(false)}\n onPlace={(url, name) => {\n addBoardItem('video', url, { name, aspect: '9:16' });\n setShowInfluencer(false);\n }}\n />\n );\n }\n\n if (videoEdit) {\n return (\n <VideoEditExperience\n src={videoEdit.src}\n name={videoEdit.generatedAssetName}\n items={selected?.board.items ?? []}\n runAction={effectiveRunAction}\n onClose={() => setVideoEdit(null)}\n onApplied={(url, kind) => {\n if (kind === 'audio') {\n addBoardItem('audio', url, { name: 'Extracted audio' });\n } else {\n patchItemSrc(videoEdit.id, url, kind === 'image' ? 'image' : 'video');\n }\n setVideoEdit(null);\n }}\n />\n );\n }\n\n if (videoClips) {\n return (\n <VideoClipsExperience\n item={videoClips === 'url' ? null : videoClips}\n runAction={effectiveRunAction}\n onClose={() => setVideoClips(null)}\n onClips={(urls, aspect) => {\n urls.forEach((url, i) => addRenderedVideo(url, { name: `Clip ${i + 1}`, aspect }));\n setVideoClips(null);\n }}\n />\n );\n }\n\n if (explicitBoard) {\n return (\n <NativeCanvasViewer\n board={playableBoard(explicitBoard)}\n controls\n onItemAction={handleItemAction}\n testID={testID}\n />\n );\n }\n\n if (sessionError) {\n return <Notice isDark={isDark} title=\"Couldn’t open your canvases\" detail={sessionError} />;\n }\n\n if (error && boards.length === 0) {\n return (\n <Notice\n isDark={isDark}\n title=\"Couldn’t load your canvases\"\n detail={error}\n fine={describeSession(token, indexUrl)}\n onRetry={reload}\n />\n );\n }\n\n // Grid is screen one (web CanvasBoards). Opening a board is screen two.\n\n if (mediaEdit) {\n const shared = {\n src: mediaEdit.item.src,\n name: mediaEdit.item.generatedAssetName,\n runAction: effectiveRunAction,\n onClose: () => setMediaEdit(null),\n onSave: (url: string) => {\n patchItemSrc(mediaEdit.item.id, url, mediaEdit.kind);\n setMediaEdit(null);\n },\n };\n return mediaEdit.kind === 'image' ? (\n <ImageEditorExperience {...shared} initialTab={mediaEdit.initialTab} />\n ) : (\n <AudioEditorExperience {...shared} />\n );\n }\n\n if (editorSeed) {\n return (\n <View style={styles.fill}>\n <VideoEditorExperience\n items={selected?.board.items ?? []}\n seedItemId={editorSeed.itemId}\n initialTimeline={editorSeed.initialTimeline}\n projectTitle={editorSeed.projectTitle || selected?.board.title || selected?.title}\n initialLogoSrc={editorSeed.logoSrc}\n onClose={() => setEditorSeed(null)}\n onExport={effectiveOnExport}\n onPickLocalMedia={onPickLocalMedia}\n runAction={effectiveRunAction}\n uploadMedia={effectiveUploadMedia}\n audioRecorder={audioRecorder}\n apolloClient={apolloClient}\n token={token}\n indexUrl={indexUrl}\n initialRailTab={editorSeed.initialRailTab}\n />\n {exporting ? (\n <View style={styles.exportOverlay}>\n <View style={styles.exportCard}>\n {exporting.error ? (\n <>\n <Text style={styles.exportError}>Export failed</Text>\n <Text style={styles.exportStage} numberOfLines={4}>\n {exporting.error}\n </Text>\n <Pressable\n onPress={() => setExporting(null)}\n style={styles.exportDismiss}\n accessibilityRole=\"button\"\n >\n <Text style={styles.exportDismissLabel}>Dismiss</Text>\n </Pressable>\n </>\n ) : (\n <>\n <ActivityIndicator color=\"#F7F7FA\" />\n <Text style={styles.exportStage}>{exporting.stage}</Text>\n </>\n )}\n </View>\n </View>\n ) : null}\n </View>\n );\n }\n\n if (designEntry) {\n return (\n <View style={styles.fill} testID={testID}>\n <DesignExperience\n token={token}\n indexUrl={indexUrl}\n entry={designEntry}\n onClose={() => setDesignEntry(null)}\n onPickLocalMedia={onPickLocalMedia}\n uploadMedia={effectiveUploadMedia}\n runMediaAction={effectiveRunAction}\n />\n </View>\n );\n }\n\n if (!selected) {\n return (\n <View style={styles.fill} testID={testID}>\n {loading && boards.length === 0 ? (\n <View style={styles.gridLoading} pointerEvents=\"none\">\n <ActivityIndicator size=\"small\" />\n </View>\n ) : null}\n <CanvasBoardsGrid\n boards={boards.filter((entry) => entry.itemCount > 0)}\n onOpen={setSelectedId}\n onNewCanvas={handleNewCanvas}\n designs={designs}\n onOpenDesign={(channelId) => setDesignEntry({ channelId })}\n onNewDesign={(kind) => setDesignEntry({ kind })}\n onAskAgent={handleAskAgentFromGrid}\n onComposeGenerate={({ mode, prompt }) => {\n setGenerator({ mode, initialPrompt: prompt });\n }}\n featuredLooks={featuredLooks}\n onRecreateLook={(look) => {\n setGenerator({\n mode: 'video',\n initialPrompt: look.prompt,\n });\n }}\n />\n <CanvasAgentChatPane\n visible={gridAgentOpen}\n onClose={() => setGridAgentOpen(false)}\n runAction={effectiveRunAction}\n boardItems={[]}\n onGenerated={(url, meta) => {\n const kind = meta.mode === 'audio' ? 'audio' : meta.mode === 'image' ? 'image' : 'video';\n return openFreshBoardWithItem(kind, url, {\n name: `${kind === 'image' ? 'Image' : kind === 'audio' ? 'Audio' : 'Video'} · ${(meta.title || meta.prompt).slice(0, 28)}`,\n aspect: meta.aspect,\n });\n }}\n onUseTemplate={(template) => void handleUseTemplate(template)}\n />\n </View>\n );\n }\n\n return (\n <View style={styles.fill} testID={testID}>\n <CanvasToolDock\n busy={mediaBusy}\n boards={boards}\n boardId={selectedId}\n runAction={effectiveRunAction}\n apolloClient={apolloClient}\n token={token}\n indexUrl={indexUrl}\n seedItem={boardSelectedItem}\n dockHidden={agentOpen}\n onUpload={(source) => void handleAddPhotos(source)}\n onPlace={(item) =>\n addBoardItem(item.type, item.src, {\n name: item.generatedAssetName,\n })\n }\n onPickStorage={(kind, url, name) => addBoardItem(kind, url, { name })}\n onStudio={handleDockStudio}\n onSlides={() => setDesignEntry({ kind: 'design' })}\n onGenerated={(url, meta) => {\n const kind = meta.mode === 'audio' ? 'audio' : meta.mode === 'image' ? 'image' : 'video';\n addBoardItem(kind, url, {\n name: `${kind === 'image' ? 'Image' : kind === 'audio' ? 'Audio' : meta.mode === 'promo' ? 'Promo' : meta.mode === 'clips' ? 'Clip' : 'Video'} · ${meta.prompt.slice(0, 28)}`,\n aspect: meta.aspect,\n });\n }}\n onPromoDesigned={(designed: DesignedPromo) => {\n const imported = promoProjectToTimeline(designed.project, designed.title);\n setEditorSeed({\n itemId: null,\n initialTimeline: imported.timeline,\n projectTitle: imported.title,\n logoSrc: imported.logoSrc,\n });\n }}\n onEditReplaced={(itemId, url) => patchItemSrc(itemId, url)}\n onEditVideo={(item) => setVideoEdit(item)}\n onRecord={() => setShowRecorder(true)}\n >\n <NativeCanvasViewer\n board={playableBoard(selected.board)}\n controls\n onBoardsPress={closeBoard}\n onItemAction={handleItemAction}\n onBoardChange={handleBoardChange}\n onAgentOpenChange={setAgentOpen}\n onSelectionChange={setBoardSelectedItem}\n runAction={effectiveRunAction}\n onAgentGenerated={(url, meta) => {\n const kind = meta.mode === 'audio' ? 'audio' : meta.mode === 'image' ? 'image' : 'video';\n return addBoardItem(kind, url, {\n name: `${kind === 'image' ? 'Image' : kind === 'audio' ? 'Audio' : 'Video'} · ${(meta.title || meta.prompt).slice(0, 28)}`,\n aspect: meta.aspect,\n });\n }}\n onAgentReplace={(itemId, url) => patchItemSrc(itemId, url)}\n onUseTemplate={(template) => void handleUseTemplate(template)}\n />\n </CanvasToolDock>\n {uploadStatus ? (\n <View pointerEvents=\"none\" style={styles.uploadToast}>\n {mediaBusy ? <ActivityIndicator size=\"small\" color=\"#2563eb\" /> : null}\n <Text style={styles.uploadToastText} numberOfLines={2}>\n {uploadStatus}\n </Text>\n </View>\n ) : null}\n </View>\n );\n}\n\nfunction Notice({\n isDark,\n title,\n detail,\n fine,\n primaryLabel,\n onPrimary,\n onRetry,\n retryLabel = 'Try again',\n}: {\n isDark: boolean;\n title: string;\n detail: string;\n /** Session/context fine print - the who-and-where behind the state. */\n fine?: string;\n primaryLabel?: string;\n onPrimary?: () => void;\n onRetry?: () => void;\n retryLabel?: string;\n}) {\n return (\n <View style={styles.center}>\n <Text style={[styles.title, isDark && styles.textLight]}>{title}</Text>\n <Text style={[styles.detail, isDark && styles.textMuted]}>{detail}</Text>\n {fine ? <Text style={styles.fine}>{fine}</Text> : null}\n {onPrimary ? (\n <Pressable onPress={onPrimary} style={styles.primaryCta} accessibilityRole=\"button\">\n <Text style={styles.primaryCtaLabel}>{primaryLabel ?? 'Create'}</Text>\n </Pressable>\n ) : null}\n {onRetry ? (\n <Pressable onPress={onRetry} style={styles.retry} accessibilityRole=\"button\">\n <Text style={styles.retryLabel}>{retryLabel}</Text>\n </Pressable>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n primaryCta: {\n marginTop: 16,\n paddingHorizontal: 22,\n paddingVertical: 11,\n borderRadius: 11,\n backgroundColor: '#2563eb',\n },\n primaryCtaLabel: { color: '#ffffff', fontSize: 14, fontWeight: '600' },\n fill: { flex: 1 },\n gridLoading: {\n position: 'absolute',\n top: 12,\n right: 16,\n zIndex: 4,\n },\n center: { flex: 1, alignItems: 'center', justifyContent: 'center', padding: 24 },\n title: { fontSize: 15, fontWeight: '600', color: '#0f172a', marginBottom: 6 },\n detail: { fontSize: 13, color: '#64748b', textAlign: 'center' },\n fine: { marginTop: 10, fontSize: 11, color: '#94a3b8', textAlign: 'center', paddingHorizontal: 20, lineHeight: 15 },\n spaced: { marginTop: 10 },\n textLight: { color: '#f8fafc' },\n textMuted: { color: '#94a3b8' },\n retry: { marginTop: 16, paddingHorizontal: 18, paddingVertical: 10, borderRadius: 10, backgroundColor: '#2563eb' },\n retryLabel: { color: '#ffffff', fontSize: 13, fontWeight: '600' },\n backPill: {\n position: 'absolute',\n top: 12,\n left: 12,\n zIndex: 40,\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n maxWidth: 220,\n paddingHorizontal: 14,\n paddingVertical: 10,\n borderRadius: 12,\n backgroundColor: '#ffffff',\n borderWidth: 1,\n borderColor: 'rgba(15,23,42,0.08)',\n shadowColor: '#0f172a',\n shadowOpacity: 0.08,\n shadowRadius: 8,\n shadowOffset: { width: 0, height: 2 },\n elevation: 2,\n },\n backLabel: { fontSize: 15, fontWeight: '600', color: '#475569' },\n uploadToast: {\n position: 'absolute',\n top: 56,\n left: 16,\n right: 16,\n zIndex: 60,\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n paddingHorizontal: 14,\n paddingVertical: 12,\n borderRadius: 14,\n backgroundColor: '#ffffff',\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: 'rgba(15,23,42,0.08)',\n shadowColor: '#0f172a',\n shadowOpacity: 0.12,\n shadowRadius: 16,\n shadowOffset: { width: 0, height: 4 },\n elevation: 6,\n },\n uploadToastText: { flex: 1, fontSize: 14, fontWeight: '600', color: '#0f172a' },\n exportOverlay: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'rgba(0,0,0,0.65)',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 32,\n },\n exportCard: {\n minWidth: 220,\n maxWidth: 320,\n alignItems: 'center',\n gap: 10,\n backgroundColor: '#17171C',\n borderRadius: 16,\n paddingVertical: 20,\n paddingHorizontal: 24,\n },\n exportStage: { fontSize: 13, color: '#CBD5E1', textAlign: 'center' },\n exportError: { fontSize: 15, fontWeight: '600', color: '#F87171' },\n exportDismiss: {\n marginTop: 4,\n backgroundColor: '#26262E',\n borderRadius: 16,\n paddingHorizontal: 14,\n paddingVertical: 8,\n },\n exportDismissLabel: { fontSize: 13, fontWeight: '600', color: '#F7F7FA' },\n});\n\nexport default CanvasExperience;\n"],"names":["_a","channelId"],"mappings":"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"}
|