@adminide-stack/yantra-mobile 12.0.128 → 12.0.129-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/compute.js +57 -1
- package/lib/compute.js.map +1 -1
- package/lib/features/agent-chat/NativeAgentChat.js +3 -2
- package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
- package/lib/features/apps/AppsCatalog.js +10 -0
- package/lib/features/apps/AppsCatalog.js.map +1 -1
- package/lib/features/apps/mobileAppCatalog.js +11 -0
- package/lib/features/apps/mobileAppCatalog.js.map +1 -1
- package/lib/features/canvas/AudioEditorExperience.js +448 -105
- package/lib/features/canvas/AudioEditorExperience.js.map +1 -1
- package/lib/features/canvas/CanvasAgentChatPane.js +33 -14
- package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -1
- package/lib/features/canvas/CanvasBoardsGrid.js +493 -41
- package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -1
- package/lib/features/canvas/CanvasChatResultCard.js.map +1 -1
- package/lib/features/canvas/CanvasEditToolsPanel.js +37 -1
- package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -1
- package/lib/features/canvas/CanvasExperience.js +237 -22
- package/lib/features/canvas/CanvasExperience.js.map +1 -1
- package/lib/features/canvas/CanvasGeneratePanel.js +119 -26
- package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -1
- package/lib/features/canvas/CanvasLooksPanel.js +17 -6
- package/lib/features/canvas/CanvasLooksPanel.js.map +1 -1
- package/lib/features/canvas/CanvasTasksPanel.js +18 -1
- package/lib/features/canvas/CanvasTasksPanel.js.map +1 -1
- package/lib/features/canvas/DesignCategoryGallery.js +423 -0
- package/lib/features/canvas/DesignCategoryGallery.js.map +1 -0
- package/lib/features/canvas/ImageEditorExperience.js +763 -187
- package/lib/features/canvas/ImageEditorExperience.js.map +1 -1
- package/lib/features/canvas/SetStudioExperience.js +199 -11
- package/lib/features/canvas/SetStudioExperience.js.map +1 -1
- package/lib/features/canvas/VideoEditorExperience.js +59 -40
- package/lib/features/canvas/VideoEditorExperience.js.map +1 -1
- package/lib/features/canvas/VideoGeneratorExperience.js +134 -34
- package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -1
- package/lib/features/canvas/aiEdit.js +4 -2
- package/lib/features/canvas/aiEdit.js.map +1 -1
- package/lib/features/canvas/audioEditor/AudioWaveform.js +96 -0
- package/lib/features/canvas/audioEditor/AudioWaveform.js.map +1 -0
- package/lib/features/canvas/audioEditor/audioPeaks.js +93 -0
- package/lib/features/canvas/audioEditor/audioPeaks.js.map +1 -0
- package/lib/features/canvas/canvasTaskSync.js +34 -7
- package/lib/features/canvas/canvasTaskSync.js.map +1 -1
- package/lib/features/canvas/canvasTasks.js +23 -3
- package/lib/features/canvas/canvasTasks.js.map +1 -1
- package/lib/features/canvas/canvasTheme.js +10 -24
- package/lib/features/canvas/canvasTheme.js.map +1 -1
- package/lib/features/canvas/canvasUi.js +1 -1
- package/lib/features/canvas/canvasUi.js.map +1 -1
- package/lib/features/canvas/createTiles.js +17 -9
- package/lib/features/canvas/createTiles.js.map +1 -1
- package/lib/features/canvas/deepLinks.js +35 -5
- package/lib/features/canvas/deepLinks.js.map +1 -1
- package/lib/features/canvas/designCatalog.js +165 -0
- package/lib/features/canvas/designCatalog.js.map +1 -0
- package/lib/features/canvas/designCategories.js +262 -0
- package/lib/features/canvas/designCategories.js.map +1 -0
- package/lib/features/canvas/editorControls.js +406 -0
- package/lib/features/canvas/editorControls.js.map +1 -0
- package/lib/features/canvas/generationModels.js +5 -3
- package/lib/features/canvas/generationModels.js.map +1 -1
- package/lib/features/canvas/generationTasks.js +162 -0
- package/lib/features/canvas/generationTasks.js.map +1 -0
- package/lib/features/canvas/generator/BottomSheet.js +167 -0
- package/lib/features/canvas/generator/BottomSheet.js.map +1 -0
- package/lib/features/canvas/generator/BusinessCardChatCard.js +155 -0
- package/lib/features/canvas/generator/BusinessCardChatCard.js.map +1 -0
- package/lib/features/canvas/generator/DirectorSheet.js +163 -0
- package/lib/features/canvas/generator/DirectorSheet.js.map +1 -0
- package/lib/features/canvas/generator/ReframePreview.js +122 -0
- package/lib/features/canvas/generator/ReframePreview.js.map +1 -0
- package/lib/features/canvas/generator/RunLogCard.js +119 -0
- package/lib/features/canvas/generator/RunLogCard.js.map +1 -0
- package/lib/features/canvas/generator/ShotPanel.js +261 -0
- package/lib/features/canvas/generator/ShotPanel.js.map +1 -0
- package/lib/features/canvas/generator/businessCardWidget.js +117 -0
- package/lib/features/canvas/generator/businessCardWidget.js.map +1 -0
- package/lib/features/canvas/generator/cameraVocabulary.js +142 -0
- package/lib/features/canvas/generator/cameraVocabulary.js.map +1 -0
- package/lib/features/canvas/generator/cinematicVocabulary.js +416 -0
- package/lib/features/canvas/generator/cinematicVocabulary.js.map +1 -0
- package/lib/features/canvas/generator/direction.js +41 -0
- package/lib/features/canvas/generator/direction.js.map +1 -0
- package/lib/features/canvas/generator/reframeGeometry.js +108 -0
- package/lib/features/canvas/generator/reframeGeometry.js.map +1 -0
- package/lib/features/canvas/generator/runLog.js +71 -0
- package/lib/features/canvas/generator/runLog.js.map +1 -0
- package/lib/features/canvas/generator/shot.js +133 -0
- package/lib/features/canvas/generator/shot.js.map +1 -0
- package/lib/features/canvas/generator/useShotSpec.js +87 -0
- package/lib/features/canvas/generator/useShotSpec.js.map +1 -0
- package/lib/features/canvas/home/HeroComposer.js +214 -0
- package/lib/features/canvas/home/HeroComposer.js.map +1 -0
- package/lib/features/canvas/home/HeroMonitor.js +225 -0
- package/lib/features/canvas/home/HeroMonitor.js.map +1 -0
- package/lib/features/canvas/home/LookDetail.js +185 -0
- package/lib/features/canvas/home/LookDetail.js.map +1 -0
- package/lib/features/canvas/home/LoopingVideo.js +37 -0
- package/lib/features/canvas/home/LoopingVideo.js.map +1 -0
- package/lib/features/canvas/home/TemplatesGallery.js +253 -0
- package/lib/features/canvas/home/TemplatesGallery.js.map +1 -0
- package/lib/features/canvas/home/heroShots.js +100 -0
- package/lib/features/canvas/home/heroShots.js.map +1 -0
- package/lib/features/canvas/homeWork.js +62 -3
- package/lib/features/canvas/homeWork.js.map +1 -1
- package/lib/features/canvas/imageEditor/ImageMarkup.js +195 -0
- package/lib/features/canvas/imageEditor/ImageMarkup.js.map +1 -0
- package/lib/features/canvas/imageEditor/imageEditOps.js +367 -0
- package/lib/features/canvas/imageEditor/imageEditOps.js.map +1 -0
- package/lib/features/canvas/nativeViewerRegistry.js.map +1 -1
- package/lib/features/canvas/rankedCatalogSearch.js +375 -0
- package/lib/features/canvas/rankedCatalogSearch.js.map +1 -0
- package/lib/features/canvas/recorder/CameraRecorderExperience.js +68 -20
- package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -1
- package/lib/features/canvas/recorder/RecordingReview.js +272 -0
- package/lib/features/canvas/recorder/RecordingReview.js.map +1 -0
- package/lib/features/canvas/recorder/RecordingsList.js +179 -0
- package/lib/features/canvas/recorder/RecordingsList.js.map +1 -0
- package/lib/features/canvas/recorder/recorderOps.js +99 -0
- package/lib/features/canvas/recorder/recorderOps.js.map +1 -0
- package/lib/features/canvas/seedanceShowcase.js +314 -0
- package/lib/features/canvas/seedanceShowcase.js.map +1 -0
- package/lib/features/canvas/serverTasks.js +149 -15
- package/lib/features/canvas/serverTasks.js.map +1 -1
- package/lib/features/canvas/sessionRenewal.js +114 -0
- package/lib/features/canvas/sessionRenewal.js.map +1 -0
- package/lib/features/canvas/set/SetViewportWebView.js +34 -1
- package/lib/features/canvas/set/SetViewportWebView.js.map +1 -1
- package/lib/features/canvas/set/agent/setTurn.js +4 -2
- package/lib/features/canvas/set/agent/setTurn.js.map +1 -1
- package/lib/features/canvas/set/setPresets.js +85 -0
- package/lib/features/canvas/set/setPresets.js.map +1 -0
- package/lib/features/canvas/set/setProject.js +4 -1
- package/lib/features/canvas/set/setProject.js.map +1 -1
- package/lib/features/canvas/studioCatalog.js +59 -4
- package/lib/features/canvas/studioCatalog.js.map +1 -1
- package/lib/features/canvas/studioLooks.js +31 -4
- package/lib/features/canvas/studioLooks.js.map +1 -1
- package/lib/features/canvas/surfaceIndex.js +1 -14
- package/lib/features/canvas/surfaceIndex.js.map +1 -1
- package/lib/features/canvas/templateSearch.js +489 -0
- package/lib/features/canvas/templateSearch.js.map +1 -0
- package/lib/features/canvas/useCanvasSession.js +28 -6
- package/lib/features/canvas/useCanvasSession.js.map +1 -1
- package/lib/features/canvas/useStudioCatalogTemplates.js +41 -5
- package/lib/features/canvas/useStudioCatalogTemplates.js.map +1 -1
- package/lib/features/canvas/videoEditor/EditorPanels.js +531 -0
- package/lib/features/canvas/videoEditor/EditorPanels.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +48 -4
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -1
- package/lib/features/canvas/videoEditor/agent/agentLoop.js +2 -0
- package/lib/features/canvas/videoEditor/agent/agentLoop.js.map +1 -1
- package/lib/features/canvas/videoEditor/agent/brainClient.js +97 -27
- package/lib/features/canvas/videoEditor/agent/brainClient.js.map +1 -1
- package/lib/features/canvas/videoEditor/agent/cutTools.js +707 -3
- package/lib/features/canvas/videoEditor/agent/cutTools.js.map +1 -1
- package/lib/features/canvas/videoEditor/audioServices.js +165 -0
- package/lib/features/canvas/videoEditor/audioServices.js.map +1 -0
- package/lib/features/canvas/videoEditor/captions.js +144 -0
- package/lib/features/canvas/videoEditor/captions.js.map +1 -0
- package/lib/features/canvas/videoEditor/compileTimeline.js +24 -16
- package/lib/features/canvas/videoEditor/compileTimeline.js.map +1 -1
- package/lib/features/canvas/videoEditor/editorModel.js +12 -2
- package/lib/features/canvas/videoEditor/editorModel.js.map +1 -1
- package/lib/features/canvas/videoEditor/exportTask.js +89 -7
- package/lib/features/canvas/videoEditor/exportTask.js.map +1 -1
- package/lib/features/canvas/videoEditor/layers.js +117 -0
- package/lib/features/canvas/videoEditor/layers.js.map +1 -0
- package/lib/features/canvas/videoEditor/remoteMediaClient.js +45 -18
- package/lib/features/canvas/videoEditor/remoteMediaClient.js.map +1 -1
- package/lib/features/canvas/videoEditor/renderTimeline.js +18 -6
- package/lib/features/canvas/videoEditor/renderTimeline.js.map +1 -1
- package/lib/features/canvas/videoEditor/revoice.js +138 -0
- package/lib/features/canvas/videoEditor/revoice.js.map +1 -0
- package/lib/features/canvas/videoEditor/storageUpload.js +34 -0
- package/lib/features/canvas/videoEditor/storageUpload.js.map +1 -0
- package/lib/features/canvas/videoEditor/textMotion.js +109 -0
- package/lib/features/canvas/videoEditor/textMotion.js.map +1 -0
- package/lib/features/canvas/videoEditor/transitions.js +31 -0
- package/lib/features/canvas/videoEditor/transitions.js.map +1 -0
- package/lib/features/chat/TemplatesChatCards.js +8 -3
- package/lib/features/chat/TemplatesChatCards.js.map +1 -1
- package/lib/features/design/DesignEditorExperience.js +674 -644
- package/lib/features/design/DesignEditorExperience.js.map +1 -1
- package/lib/features/design/DesignExperience.js +285 -538
- package/lib/features/design/DesignExperience.js.map +1 -1
- package/lib/features/design/designCore.js +2 -212
- package/lib/features/design/designCore.js.map +1 -1
- package/lib/features/design/designIndex.js +1 -50
- package/lib/features/design/designIndex.js.map +1 -1
- package/lib/features/design/doc/aiDesign.js +247 -0
- package/lib/features/design/doc/aiDesign.js.map +1 -0
- package/lib/features/design/doc/artifacts.js +280 -0
- package/lib/features/design/doc/artifacts.js.map +1 -0
- package/lib/features/design/doc/chart.js +98 -0
- package/lib/features/design/doc/chart.js.map +1 -0
- package/lib/features/design/doc/crop.js +104 -0
- package/lib/features/design/doc/crop.js.map +1 -0
- package/lib/features/design/doc/curve.js +49 -0
- package/lib/features/design/doc/curve.js.map +1 -0
- package/lib/features/design/doc/docOps.js +397 -0
- package/lib/features/design/doc/docOps.js.map +1 -0
- package/lib/features/design/doc/findReplace.js +112 -0
- package/lib/features/design/doc/findReplace.js.map +1 -0
- package/lib/features/design/doc/fonts.js +79 -0
- package/lib/features/design/doc/fonts.js.map +1 -0
- package/lib/features/design/doc/frames.js +17 -0
- package/lib/features/design/doc/frames.js.map +1 -0
- package/lib/features/design/doc/geometry.js +133 -0
- package/lib/features/design/doc/geometry.js.map +1 -0
- package/lib/features/design/doc/imageAdjust.js +203 -0
- package/lib/features/design/doc/imageAdjust.js.map +1 -0
- package/lib/features/design/doc/legacyDoc.js +107 -0
- package/lib/features/design/doc/legacyDoc.js.map +1 -0
- package/lib/features/design/doc/newDoc.js +335 -0
- package/lib/features/design/doc/newDoc.js.map +1 -0
- package/lib/features/design/doc/pageRange.js +17 -0
- package/lib/features/design/doc/pageRange.js.map +1 -0
- package/lib/features/design/doc/pathScale.js +68 -0
- package/lib/features/design/doc/pathScale.js.map +1 -0
- package/lib/features/design/doc/qr.js +62 -0
- package/lib/features/design/doc/qr.js.map +1 -0
- package/lib/features/design/doc/shapes.js +366 -0
- package/lib/features/design/doc/shapes.js.map +1 -0
- package/lib/features/design/doc/sizes.js +230 -0
- package/lib/features/design/doc/sizes.js.map +1 -0
- package/lib/features/design/doc/textEffects.js +134 -0
- package/lib/features/design/doc/textEffects.js.map +1 -0
- package/lib/features/design/doc/textLayout.js +182 -0
- package/lib/features/design/doc/textLayout.js.map +1 -0
- package/lib/features/design/doc/types.js +30 -0
- package/lib/features/design/doc/types.js.map +1 -0
- package/lib/features/design/editor/AiPanel.js +194 -0
- package/lib/features/design/editor/AiPanel.js.map +1 -0
- package/lib/features/design/editor/ChartDataPanel.js +182 -0
- package/lib/features/design/editor/ChartDataPanel.js.map +1 -0
- package/lib/features/design/editor/CropOverlay.js +199 -0
- package/lib/features/design/editor/CropOverlay.js.map +1 -0
- package/lib/features/design/editor/DesignCanvas.js +363 -0
- package/lib/features/design/editor/DesignCanvas.js.map +1 -0
- package/lib/features/design/editor/ExportSheet.js +123 -0
- package/lib/features/design/editor/ExportSheet.js.map +1 -0
- package/lib/features/design/editor/FindReplacePanel.js +93 -0
- package/lib/features/design/editor/FindReplacePanel.js.map +1 -0
- package/lib/features/design/editor/ImageTools.js +188 -0
- package/lib/features/design/editor/ImageTools.js.map +1 -0
- package/lib/features/design/editor/LayerTools.js +485 -0
- package/lib/features/design/editor/LayerTools.js.map +1 -0
- package/lib/features/design/editor/PageStrip.js +203 -0
- package/lib/features/design/editor/PageStrip.js.map +1 -0
- package/lib/features/design/editor/Slideshow.js +97 -0
- package/lib/features/design/editor/Slideshow.js.map +1 -0
- package/lib/features/design/editor/ToolPanels.js +695 -0
- package/lib/features/design/editor/ToolPanels.js.map +1 -0
- package/lib/features/design/editor/controls.js +630 -0
- package/lib/features/design/editor/controls.js.map +1 -0
- package/lib/features/design/editor/useDesignSave.js +91 -0
- package/lib/features/design/editor/useDesignSave.js.map +1 -0
- package/lib/features/design/export/exportDesign.js +170 -0
- package/lib/features/design/export/exportDesign.js.map +1 -0
- package/lib/features/design/export/pdf.js +143 -0
- package/lib/features/design/export/pdf.js.map +1 -0
- package/lib/features/design/home/DesignHome.js +688 -0
- package/lib/features/design/home/DesignHome.js.map +1 -0
- package/lib/features/design/home/studioHome.js +61 -0
- package/lib/features/design/home/studioHome.js.map +1 -0
- package/lib/features/design/pickDesignImage.js +60 -0
- package/lib/features/design/pickDesignImage.js.map +1 -0
- package/lib/features/design/render/DesignPageView.js +69 -0
- package/lib/features/design/render/DesignPageView.js.map +1 -0
- package/lib/features/design/render/PageCapture.js +288 -0
- package/lib/features/design/render/PageCapture.js.map +1 -0
- package/lib/features/design/render/TextMeasure.js +115 -0
- package/lib/features/design/render/TextMeasure.js.map +1 -0
- package/lib/features/design/render/fontRegistry.js +110 -0
- package/lib/features/design/render/fontRegistry.js.map +1 -0
- package/lib/features/design/render/layers.js +392 -0
- package/lib/features/design/render/layers.js.map +1 -0
- package/lib/features/design/render/svg.js +35 -0
- package/lib/features/design/render/svg.js.map +1 -0
- package/lib/features/design/render/svgParts.js +435 -0
- package/lib/features/design/render/svgParts.js.map +1 -0
- package/lib/features/design/surface/BoardScreen.js +529 -0
- package/lib/features/design/surface/BoardScreen.js.map +1 -0
- package/lib/features/design/surface/CompareView.js +138 -0
- package/lib/features/design/surface/CompareView.js.map +1 -0
- package/lib/features/design/surface/CreationScreen.js +294 -0
- package/lib/features/design/surface/CreationScreen.js.map +1 -0
- package/lib/features/design/surface/DesignAgentChatPane.js +444 -0
- package/lib/features/design/surface/DesignAgentChatPane.js.map +1 -0
- package/lib/features/design/surface/DesignBoards.js +441 -0
- package/lib/features/design/surface/DesignBoards.js.map +1 -0
- package/lib/features/design/surface/DesignPreview.js +159 -0
- package/lib/features/design/surface/DesignPreview.js.map +1 -0
- package/lib/features/design/surface/DesignSurfaceExperience.js +80 -0
- package/lib/features/design/surface/DesignSurfaceExperience.js.map +1 -0
- package/lib/features/design/surface/FullScreenPreview.js +59 -0
- package/lib/features/design/surface/FullScreenPreview.js.map +1 -0
- package/lib/features/design/surface/NewSystemDialog.js +122 -0
- package/lib/features/design/surface/NewSystemDialog.js.map +1 -0
- package/lib/features/design/surface/PickerSheet.js +175 -0
- package/lib/features/design/surface/PickerSheet.js.map +1 -0
- package/lib/features/design/surface/TemplatesGallery.js +156 -0
- package/lib/features/design/surface/TemplatesGallery.js.map +1 -0
- package/lib/features/design/surface/WetPaint.js +140 -0
- package/lib/features/design/surface/WetPaint.js.map +1 -0
- package/lib/features/design/surface/agentTurn.js +229 -0
- package/lib/features/design/surface/agentTurn.js.map +1 -0
- package/lib/features/design/surface/designBoard.js +218 -0
- package/lib/features/design/surface/designBoard.js.map +1 -0
- package/lib/features/design/surface/designChannel.js +186 -0
- package/lib/features/design/surface/designChannel.js.map +1 -0
- package/lib/features/design/surface/designChat.js +141 -0
- package/lib/features/design/surface/designChat.js.map +1 -0
- package/lib/features/design/surface/designConnector.js +266 -0
- package/lib/features/design/surface/designConnector.js.map +1 -0
- package/lib/features/design/surface/designDocument.js +40 -0
- package/lib/features/design/surface/designDocument.js.map +1 -0
- package/lib/features/design/surface/designExport.js +55 -0
- package/lib/features/design/surface/designExport.js.map +1 -0
- package/lib/features/design/surface/designLinks.js +64 -0
- package/lib/features/design/surface/designLinks.js.map +1 -0
- package/lib/features/design/surface/designPalette.js +24 -0
- package/lib/features/design/surface/designPalette.js.map +1 -0
- package/lib/features/design/surface/designRun.js +161 -0
- package/lib/features/design/surface/designRun.js.map +1 -0
- package/lib/features/design/surface/designTheme.js +119 -0
- package/lib/features/design/surface/designTheme.js.map +1 -0
- package/lib/features/design/surface/execStream.js +206 -0
- package/lib/features/design/surface/execStream.js.map +1 -0
- package/lib/features/design/surface/metaball.js +48 -0
- package/lib/features/design/surface/metaball.js.map +1 -0
- package/lib/features/design/surface/pickReferenceFiles.js +35 -0
- package/lib/features/design/surface/pickReferenceFiles.js.map +1 -0
- package/lib/features/design/surface/useDesignSurface.js +379 -0
- package/lib/features/design/surface/useDesignSurface.js.map +1 -0
- package/lib/features/docs/DocBlockRow.js +336 -0
- package/lib/features/docs/DocBlockRow.js.map +1 -0
- package/lib/features/docs/DocsEditorExperience.js +949 -0
- package/lib/features/docs/DocsEditorExperience.js.map +1 -0
- package/lib/features/docs/DocsToolbar.js +247 -0
- package/lib/features/docs/DocsToolbar.js.map +1 -0
- package/lib/features/docs/blocks.js +560 -0
- package/lib/features/docs/blocks.js.map +1 -0
- package/lib/features/docs/docArtifacts.js +129 -0
- package/lib/features/docs/docArtifacts.js.map +1 -0
- package/lib/features/docs/docEdits.js +201 -0
- package/lib/features/docs/docEdits.js.map +1 -0
- package/lib/features/docs/docExport.js +235 -0
- package/lib/features/docs/docExport.js.map +1 -0
- package/lib/features/docs/docShare.js +62 -0
- package/lib/features/docs/docShare.js.map +1 -0
- package/lib/features/links/openInApp.js +38 -2
- package/lib/features/links/openInApp.js.map +1 -1
- package/lib/routes.json +54 -0
- package/lib/screens/DesignNative/index.js +35 -0
- package/lib/screens/DesignNative/index.js.map +1 -0
- package/package.json +4 -4
- package/lib/features/design/exportDesign.js +0 -133
- package/lib/features/design/exportDesign.js.map +0 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef}from'react';import {PanResponder,View,Text,StyleSheet}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {useCanvasTheme,themedStyles}from'../../canvas/canvasTheme.js';import {Segmented,SPACE,TYPE}from'../../canvas/canvasUi.js';import {DesignPreview}from'./DesignPreview.js';var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
function CompareView({
|
|
21
|
+
beforeHtml,
|
|
22
|
+
afterHtml,
|
|
23
|
+
device
|
|
24
|
+
}) {
|
|
25
|
+
const theme = useCanvasTheme();
|
|
26
|
+
const styles = makeStyles(theme);
|
|
27
|
+
const [mode, setMode] = useState("swipe");
|
|
28
|
+
const [width, setWidth] = useState(0);
|
|
29
|
+
const [split, setSplit] = useState(0.5);
|
|
30
|
+
const live = useRef({
|
|
31
|
+
width: 0,
|
|
32
|
+
start: 0.5
|
|
33
|
+
});
|
|
34
|
+
live.current.width = width;
|
|
35
|
+
const responder = useRef(PanResponder.create({
|
|
36
|
+
onStartShouldSetPanResponder: () => true,
|
|
37
|
+
onMoveShouldSetPanResponder: () => true,
|
|
38
|
+
onPanResponderTerminationRequest: () => false,
|
|
39
|
+
onPanResponderGrant: () => {
|
|
40
|
+
live.current.start = splitRef.current;
|
|
41
|
+
},
|
|
42
|
+
onPanResponderMove: (_e, g) => {
|
|
43
|
+
const w = live.current.width || 1;
|
|
44
|
+
setSplit(Math.min(1, Math.max(0, live.current.start + g.dx / w)));
|
|
45
|
+
}
|
|
46
|
+
})).current;
|
|
47
|
+
const splitRef = useRef(split);
|
|
48
|
+
splitRef.current = split;
|
|
49
|
+
return /* @__PURE__ */ jsxs(View, { style: styles.fill, children: [
|
|
50
|
+
/* @__PURE__ */ jsx(View, { style: styles.bar, children: /* @__PURE__ */ jsx(Segmented, { options: [{
|
|
51
|
+
id: "before",
|
|
52
|
+
label: "Before"
|
|
53
|
+
}, {
|
|
54
|
+
id: "swipe",
|
|
55
|
+
label: "Swipe"
|
|
56
|
+
}, {
|
|
57
|
+
id: "after",
|
|
58
|
+
label: "After"
|
|
59
|
+
}], value: mode, onChange: (id) => setMode(id) }) }),
|
|
60
|
+
mode !== "swipe" ? /* @__PURE__ */ jsx(DesignPreview, { html: mode === "before" ? beforeHtml : afterHtml, device }, mode) : /* @__PURE__ */ jsxs(View, { style: styles.fill, onLayout: (e) => setWidth(e.nativeEvent.layout.width), children: [
|
|
61
|
+
/* @__PURE__ */ jsx(DesignPreview, { html: afterHtml, device }),
|
|
62
|
+
width > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
63
|
+
/* @__PURE__ */ jsx(View, { pointerEvents: "none", style: [styles.clip, {
|
|
64
|
+
width: width * split
|
|
65
|
+
}], children: /* @__PURE__ */ jsx(View, { style: {
|
|
66
|
+
width,
|
|
67
|
+
flex: 1
|
|
68
|
+
}, children: /* @__PURE__ */ jsx(DesignPreview, { html: beforeHtml, device }) }) }),
|
|
69
|
+
/* @__PURE__ */ jsxs(View, __spreadProps(__spreadValues({ style: [styles.divider, {
|
|
70
|
+
left: width * split - 22
|
|
71
|
+
}] }, responder.panHandlers), { children: [
|
|
72
|
+
/* @__PURE__ */ jsx(View, { style: [styles.line, {
|
|
73
|
+
backgroundColor: theme.primary
|
|
74
|
+
}] }),
|
|
75
|
+
/* @__PURE__ */ jsx(View, { style: [styles.knob, {
|
|
76
|
+
backgroundColor: theme.primary
|
|
77
|
+
}], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "arrow-split-vertical", size: 16, color: theme.primaryForeground }) })
|
|
78
|
+
] })),
|
|
79
|
+
/* @__PURE__ */ jsx(Text, { pointerEvents: "none", style: [styles.tag, styles.tagLeft], children: "Before" }),
|
|
80
|
+
/* @__PURE__ */ jsx(Text, { pointerEvents: "none", style: [styles.tag, styles.tagRight], children: "After" })
|
|
81
|
+
] }) : null
|
|
82
|
+
] })
|
|
83
|
+
] });
|
|
84
|
+
}
|
|
85
|
+
const makeStyles = themedStyles((theme) => StyleSheet.create({
|
|
86
|
+
fill: {
|
|
87
|
+
flex: 1
|
|
88
|
+
},
|
|
89
|
+
bar: {
|
|
90
|
+
alignItems: "center",
|
|
91
|
+
paddingVertical: SPACE.xs,
|
|
92
|
+
backgroundColor: theme.background
|
|
93
|
+
},
|
|
94
|
+
clip: {
|
|
95
|
+
position: "absolute",
|
|
96
|
+
left: 0,
|
|
97
|
+
top: 0,
|
|
98
|
+
bottom: 0,
|
|
99
|
+
overflow: "hidden"
|
|
100
|
+
},
|
|
101
|
+
divider: {
|
|
102
|
+
position: "absolute",
|
|
103
|
+
top: 0,
|
|
104
|
+
bottom: 0,
|
|
105
|
+
width: 44,
|
|
106
|
+
alignItems: "center",
|
|
107
|
+
justifyContent: "center"
|
|
108
|
+
},
|
|
109
|
+
line: {
|
|
110
|
+
position: "absolute",
|
|
111
|
+
top: 0,
|
|
112
|
+
bottom: 0,
|
|
113
|
+
width: 2
|
|
114
|
+
},
|
|
115
|
+
knob: {
|
|
116
|
+
width: 32,
|
|
117
|
+
height: 32,
|
|
118
|
+
borderRadius: 16,
|
|
119
|
+
alignItems: "center",
|
|
120
|
+
justifyContent: "center"
|
|
121
|
+
},
|
|
122
|
+
tag: __spreadProps(__spreadValues({
|
|
123
|
+
position: "absolute",
|
|
124
|
+
top: SPACE.sm
|
|
125
|
+
}, TYPE.caption), {
|
|
126
|
+
color: "#ffffff",
|
|
127
|
+
backgroundColor: "rgba(11,18,21,0.7)",
|
|
128
|
+
paddingHorizontal: SPACE.sm,
|
|
129
|
+
paddingVertical: 2,
|
|
130
|
+
overflow: "hidden"
|
|
131
|
+
}),
|
|
132
|
+
tagLeft: {
|
|
133
|
+
left: SPACE.sm
|
|
134
|
+
},
|
|
135
|
+
tagRight: {
|
|
136
|
+
right: SPACE.sm
|
|
137
|
+
}
|
|
138
|
+
}));export{CompareView};//# sourceMappingURL=CompareView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompareView.js","sources":["../../../../src/features/design/surface/CompareView.tsx"],"sourcesContent":["/**\n * Compare - native twin of the web CreationView's compare box: the document\n * from before the last edit against the current one, in ONE frame. Before and\n * After flip the whole page; Swipe lays the two on top of each other with a\n * divider you drag, the before page on the left of it and the edit on the right.\n * Never two panes side by side: halved, each page would reflow to a different\n * layout and the comparison would be of layouts, not of the change.\n */\nimport React, { useRef, useState } from 'react';\nimport { PanResponder, StyleSheet, Text, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { themedStyles, useCanvasTheme, type CanvasPalette } from '../../canvas/canvasTheme';\nimport { SPACE, Segmented, TYPE } from '../../canvas/canvasUi';\nimport { DesignPreview, type PreviewDevice } from './DesignPreview';\n\ntype CompareMode = 'before' | 'swipe' | 'after';\n\nexport function CompareView({\n beforeHtml,\n afterHtml,\n device,\n}: {\n beforeHtml: string;\n afterHtml: string;\n device: PreviewDevice;\n}) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const [mode, setMode] = useState<CompareMode>('swipe');\n const [width, setWidth] = useState(0);\n const [split, setSplit] = useState(0.5);\n const live = useRef({ width: 0, start: 0.5 });\n live.current.width = width;\n const responder = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => true,\n onMoveShouldSetPanResponder: () => true,\n onPanResponderTerminationRequest: () => false,\n onPanResponderGrant: () => {\n live.current.start = splitRef.current;\n },\n onPanResponderMove: (_e, g) => {\n const w = live.current.width || 1;\n setSplit(Math.min(1, Math.max(0, live.current.start + g.dx / w)));\n },\n }),\n ).current;\n const splitRef = useRef(split);\n splitRef.current = split;\n\n return (\n <View style={styles.fill}>\n <View style={styles.bar}>\n <Segmented\n options={[\n { id: 'before', label: 'Before' },\n { id: 'swipe', label: 'Swipe' },\n { id: 'after', label: 'After' },\n ]}\n value={mode}\n onChange={(id) => setMode(id as CompareMode)}\n />\n </View>\n {mode !== 'swipe' ? (\n <DesignPreview key={mode} html={mode === 'before' ? beforeHtml : afterHtml} device={device} />\n ) : (\n <View style={styles.fill} onLayout={(e) => setWidth(e.nativeEvent.layout.width)}>\n <DesignPreview html={afterHtml} device={device} />\n {width > 0 ? (\n <>\n {/* The before page at full width, shown only left of the divider. */}\n <View pointerEvents=\"none\" style={[styles.clip, { width: width * split }]}>\n <View style={{ width, flex: 1 }}>\n <DesignPreview html={beforeHtml} device={device} />\n </View>\n </View>\n <View style={[styles.divider, { left: width * split - 22 }]} {...responder.panHandlers}>\n <View style={[styles.line, { backgroundColor: theme.primary }]} />\n <View style={[styles.knob, { backgroundColor: theme.primary }]}>\n <MaterialCommunityIcons\n name=\"arrow-split-vertical\"\n size={16}\n color={theme.primaryForeground}\n />\n </View>\n </View>\n <Text pointerEvents=\"none\" style={[styles.tag, styles.tagLeft]}>\n Before\n </Text>\n <Text pointerEvents=\"none\" style={[styles.tag, styles.tagRight]}>\n After\n </Text>\n </>\n ) : null}\n </View>\n )}\n </View>\n );\n}\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n fill: { flex: 1 },\n bar: { alignItems: 'center', paddingVertical: SPACE.xs, backgroundColor: theme.background },\n clip: { position: 'absolute', left: 0, top: 0, bottom: 0, overflow: 'hidden' },\n divider: { position: 'absolute', top: 0, bottom: 0, width: 44, alignItems: 'center', justifyContent: 'center' },\n line: { position: 'absolute', top: 0, bottom: 0, width: 2 },\n knob: { width: 32, height: 32, borderRadius: 16, alignItems: 'center', justifyContent: 'center' },\n tag: {\n position: 'absolute',\n top: SPACE.sm,\n ...TYPE.caption,\n color: '#ffffff',\n backgroundColor: 'rgba(11,18,21,0.7)',\n paddingHorizontal: SPACE.sm,\n paddingVertical: 2,\n overflow: 'hidden',\n },\n tagLeft: { left: SPACE.sm },\n tagRight: { right: SPACE.sm },\n }),\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef}from'react';import {View,Text,ActivityIndicator,ScrollView,Modal,TextInput,StyleSheet,Share,Alert}from'react-native';import {MaterialCommunityIcons}from'@expo/vector-icons';import {useCanvasTheme,themedStyles,CanvasThemeToggle}from'../../canvas/canvasTheme.js';import {IconButton,Segmented,Pressable,ActionButton,SPACE,RADIUS,TYPE}from'../../canvas/canvasUi.js';import {DESIGN_RADIUS}from'./designTheme.js';import {selectionLabel}from'./designChat.js';import {PREVIEW_DEVICES,DesignPreview}from'./DesignPreview.js';import {downloadDesign}from'./designExport.js';import {CompareView}from'./CompareView.js';var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
function CreationScreen({
|
|
21
|
+
creation,
|
|
22
|
+
streaming,
|
|
23
|
+
prior,
|
|
24
|
+
onBack,
|
|
25
|
+
onRevert,
|
|
26
|
+
annotate,
|
|
27
|
+
onToggleAnnotate,
|
|
28
|
+
onAddPick,
|
|
29
|
+
pickCount,
|
|
30
|
+
composer,
|
|
31
|
+
onPublish,
|
|
32
|
+
onOpenFull
|
|
33
|
+
}) {
|
|
34
|
+
const theme = useCanvasTheme();
|
|
35
|
+
const styles = makeStyles(theme);
|
|
36
|
+
const [tab, setTab] = useState("preview");
|
|
37
|
+
const [device, setDevice] = useState("desktop");
|
|
38
|
+
const [publishing, setPublishing] = useState(false);
|
|
39
|
+
const [pending, setPending] = useState(null);
|
|
40
|
+
const [comment, setComment] = useState("");
|
|
41
|
+
const preview = useRef(null);
|
|
42
|
+
const canCompare = Boolean(prior) && !streaming;
|
|
43
|
+
const shownTab = tab === "compare" && !canCompare ? "preview" : tab;
|
|
44
|
+
const download = () => {
|
|
45
|
+
void downloadDesign(creation).catch((err) => Alert.alert("Could not save the page", err instanceof Error ? err.message : "Try again."));
|
|
46
|
+
};
|
|
47
|
+
const useInCode = async () => {
|
|
48
|
+
if (!onPublish || publishing) return;
|
|
49
|
+
setPublishing(true);
|
|
50
|
+
try {
|
|
51
|
+
const url = await onPublish(creation);
|
|
52
|
+
await Share.share({
|
|
53
|
+
message: url,
|
|
54
|
+
title: creation.title
|
|
55
|
+
});
|
|
56
|
+
} catch (err) {
|
|
57
|
+
Alert.alert("Could not publish the page", err instanceof Error ? err.message : "Try again.");
|
|
58
|
+
} finally {
|
|
59
|
+
setPublishing(false);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
return /* @__PURE__ */ jsxs(View, { style: styles.fill, children: [
|
|
63
|
+
/* @__PURE__ */ jsxs(View, { style: styles.header, children: [
|
|
64
|
+
/* @__PURE__ */ jsx(IconButton, { icon: "chevron-left", label: "Back to the board", onPress: onBack }),
|
|
65
|
+
/* @__PURE__ */ jsxs(View, { style: styles.titleWrap, children: [
|
|
66
|
+
/* @__PURE__ */ jsx(Text, { style: styles.title, numberOfLines: 1, children: streaming ? "Generating\u2026" : creation.title }),
|
|
67
|
+
creation.partial && !streaming ? /* @__PURE__ */ jsx(Text, { style: styles.partial, children: "Cut off before it finished" }) : null
|
|
68
|
+
] }),
|
|
69
|
+
!streaming ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
70
|
+
/* @__PURE__ */ jsx(IconButton, { icon: "refresh", label: "Refresh preview", onPress: () => {
|
|
71
|
+
var _a;
|
|
72
|
+
return (_a = preview.current) == null ? void 0 : _a.reload();
|
|
73
|
+
}, size: 36 }),
|
|
74
|
+
/* @__PURE__ */ jsx(CanvasThemeToggle, { style: styles.toggle })
|
|
75
|
+
] }) : null
|
|
76
|
+
] }),
|
|
77
|
+
/* @__PURE__ */ jsxs(View, { style: styles.toolbar, children: [
|
|
78
|
+
/* @__PURE__ */ jsx(Segmented, { options: [{
|
|
79
|
+
id: "preview",
|
|
80
|
+
label: "Preview"
|
|
81
|
+
}, {
|
|
82
|
+
id: "code",
|
|
83
|
+
label: "Code"
|
|
84
|
+
}, ...canCompare ? [{
|
|
85
|
+
id: "compare",
|
|
86
|
+
label: "Compare"
|
|
87
|
+
}] : []], value: shownTab, onChange: (id) => setTab(id) }),
|
|
88
|
+
/* @__PURE__ */ jsx(View, { style: styles.devices, children: PREVIEW_DEVICES.map((d) => /* @__PURE__ */ jsx(Pressable, { onPress: () => setDevice(d.key), style: [styles.device, device === d.key && styles.deviceOn], accessibilityRole: "button", accessibilityLabel: d.label, accessibilityState: {
|
|
89
|
+
selected: device === d.key
|
|
90
|
+
}, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: d.icon, size: 17, color: device === d.key ? theme.foreground : theme.mutedForeground }) }, d.key)) })
|
|
91
|
+
] }),
|
|
92
|
+
!streaming ? /* @__PURE__ */ jsxs(View, { style: styles.actions, children: [
|
|
93
|
+
/* @__PURE__ */ jsxs(Pressable, { onPress: onToggleAnnotate, style: [styles.action, annotate && styles.actionOn], accessibilityRole: "button", accessibilityState: {
|
|
94
|
+
selected: annotate
|
|
95
|
+
}, children: [
|
|
96
|
+
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "map-marker-plus-outline", size: 15, color: annotate ? theme.primaryText : theme.mutedForeground }),
|
|
97
|
+
/* @__PURE__ */ jsxs(Text, { style: [styles.actionLabel, annotate && {
|
|
98
|
+
color: theme.foreground
|
|
99
|
+
}], children: [
|
|
100
|
+
annotate ? "Tap the page to pin" : "Annotate",
|
|
101
|
+
pickCount ? ` \xB7 ${pickCount}` : ""
|
|
102
|
+
] })
|
|
103
|
+
] }),
|
|
104
|
+
prior && onRevert ? /* @__PURE__ */ jsxs(Pressable, { onPress: onRevert, style: styles.action, accessibilityRole: "button", children: [
|
|
105
|
+
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: prior.reverted ? "redo" : "undo", size: 15, color: theme.mutedForeground }),
|
|
106
|
+
/* @__PURE__ */ jsx(Text, { style: styles.actionLabel, children: prior.reverted ? "Restore edit" : "Revert" })
|
|
107
|
+
] }) : null,
|
|
108
|
+
onOpenFull ? /* @__PURE__ */ jsxs(Pressable, { onPress: onOpenFull, style: styles.action, accessibilityRole: "button", children: [
|
|
109
|
+
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "arrow-expand-all", size: 15, color: theme.mutedForeground }),
|
|
110
|
+
/* @__PURE__ */ jsx(Text, { style: styles.actionLabel, children: "Open" })
|
|
111
|
+
] }) : null,
|
|
112
|
+
onPublish ? /* @__PURE__ */ jsxs(Pressable, { onPress: () => void useInCode(), disabled: publishing, style: styles.action, accessibilityRole: "button", children: [
|
|
113
|
+
publishing ? /* @__PURE__ */ jsx(ActivityIndicator, { size: "small", color: theme.mutedForeground }) : /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "code-braces", size: 15, color: theme.mutedForeground }),
|
|
114
|
+
/* @__PURE__ */ jsx(Text, { style: styles.actionLabel, children: publishing ? "Publishing\u2026" : "Use in code" })
|
|
115
|
+
] }) : null,
|
|
116
|
+
/* @__PURE__ */ jsxs(Pressable, { onPress: download, style: styles.action, accessibilityRole: "button", children: [
|
|
117
|
+
/* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "download-outline", size: 15, color: theme.mutedForeground }),
|
|
118
|
+
/* @__PURE__ */ jsx(Text, { style: styles.actionLabel, children: "Download" })
|
|
119
|
+
] })
|
|
120
|
+
] }) : null,
|
|
121
|
+
/* @__PURE__ */ jsx(View, { style: styles.stage, children: shownTab === "code" ? /* @__PURE__ */ jsx(ScrollView, { style: styles.code, contentContainerStyle: styles.codeContent, children: /* @__PURE__ */ jsx(ScrollView, { horizontal: true, style: styles.codeRow, children: /* @__PURE__ */ jsx(Text, { selectable: true, style: styles.codeText, children: creation.html }) }) }) : shownTab === "compare" && prior ? /* @__PURE__ */ jsx(CompareView, { beforeHtml: prior.html, afterHtml: creation.html, device }) : /* @__PURE__ */ jsx(DesignPreview, { ref: preview, html: creation.html, device, annotate: annotate && !streaming, onPick: (pick) => {
|
|
122
|
+
setComment("");
|
|
123
|
+
setPending(pick);
|
|
124
|
+
} }) }),
|
|
125
|
+
composer,
|
|
126
|
+
/* @__PURE__ */ jsx(Modal, { visible: Boolean(pending), transparent: true, animationType: "fade", onRequestClose: () => setPending(null), children: /* @__PURE__ */ jsx(View, { style: styles.cardScrim, children: /* @__PURE__ */ jsxs(View, { style: styles.card, children: [
|
|
127
|
+
/* @__PURE__ */ jsxs(Text, { style: styles.cardTitle, children: [
|
|
128
|
+
"Annotate \u201C",
|
|
129
|
+
creation.title,
|
|
130
|
+
"\u201D"
|
|
131
|
+
] }),
|
|
132
|
+
(pending == null ? void 0 : pending.target) ? /* @__PURE__ */ jsxs(View, { style: styles.targetRow, children: [
|
|
133
|
+
/* @__PURE__ */ jsx(Text, { style: styles.targetTag, children: pending.target.tag || "element" }),
|
|
134
|
+
/* @__PURE__ */ jsx(Text, { style: styles.targetText, numberOfLines: 2, children: selectionLabel(pending.target) || "no text - pinned by position" })
|
|
135
|
+
] }) : null,
|
|
136
|
+
/* @__PURE__ */ jsx(TextInput, { value: comment, onChangeText: setComment, placeholder: "What should change here?", placeholderTextColor: theme.mutedForeground, autoFocus: true, multiline: true, style: styles.cardInput }),
|
|
137
|
+
/* @__PURE__ */ jsxs(View, { style: styles.cardButtons, children: [
|
|
138
|
+
/* @__PURE__ */ jsx(ActionButton, { label: "Cancel", variant: "secondary", onPress: () => setPending(null) }),
|
|
139
|
+
/* @__PURE__ */ jsx(ActionButton, { label: "Add pin", onPress: () => {
|
|
140
|
+
if (pending) onAddPick(__spreadProps(__spreadValues({}, pending), {
|
|
141
|
+
comment: comment.trim()
|
|
142
|
+
}));
|
|
143
|
+
setPending(null);
|
|
144
|
+
} })
|
|
145
|
+
] })
|
|
146
|
+
] }) }) })
|
|
147
|
+
] });
|
|
148
|
+
}
|
|
149
|
+
const makeStyles = themedStyles((theme) => StyleSheet.create({
|
|
150
|
+
fill: {
|
|
151
|
+
flex: 1
|
|
152
|
+
},
|
|
153
|
+
header: {
|
|
154
|
+
flexDirection: "row",
|
|
155
|
+
alignItems: "center",
|
|
156
|
+
gap: SPACE.xs,
|
|
157
|
+
paddingHorizontal: SPACE.sm,
|
|
158
|
+
height: 52
|
|
159
|
+
},
|
|
160
|
+
titleWrap: {
|
|
161
|
+
flex: 1
|
|
162
|
+
},
|
|
163
|
+
title: __spreadProps(__spreadValues({}, TYPE.title), {
|
|
164
|
+
color: theme.foreground
|
|
165
|
+
}),
|
|
166
|
+
partial: __spreadProps(__spreadValues({}, TYPE.caption), {
|
|
167
|
+
color: theme.warningText
|
|
168
|
+
}),
|
|
169
|
+
toolbar: {
|
|
170
|
+
flexDirection: "row",
|
|
171
|
+
alignItems: "center",
|
|
172
|
+
justifyContent: "space-between",
|
|
173
|
+
paddingHorizontal: SPACE.md,
|
|
174
|
+
gap: SPACE.sm
|
|
175
|
+
},
|
|
176
|
+
devices: {
|
|
177
|
+
flexDirection: "row",
|
|
178
|
+
padding: 3,
|
|
179
|
+
borderRadius: RADIUS.pill,
|
|
180
|
+
backgroundColor: theme.card
|
|
181
|
+
},
|
|
182
|
+
device: {
|
|
183
|
+
width: 34,
|
|
184
|
+
height: 30,
|
|
185
|
+
borderRadius: RADIUS.pill,
|
|
186
|
+
alignItems: "center",
|
|
187
|
+
justifyContent: "center"
|
|
188
|
+
},
|
|
189
|
+
deviceOn: {
|
|
190
|
+
backgroundColor: theme.isDark ? theme.secondary : theme.surface
|
|
191
|
+
},
|
|
192
|
+
actions: {
|
|
193
|
+
flexDirection: "row",
|
|
194
|
+
flexWrap: "wrap",
|
|
195
|
+
gap: SPACE.sm,
|
|
196
|
+
paddingHorizontal: SPACE.md,
|
|
197
|
+
paddingTop: SPACE.sm
|
|
198
|
+
},
|
|
199
|
+
toggle: {
|
|
200
|
+
marginLeft: SPACE.xs
|
|
201
|
+
},
|
|
202
|
+
action: {
|
|
203
|
+
flexDirection: "row",
|
|
204
|
+
alignItems: "center",
|
|
205
|
+
gap: 5,
|
|
206
|
+
height: 30,
|
|
207
|
+
paddingHorizontal: SPACE.md,
|
|
208
|
+
borderRadius: RADIUS.pill,
|
|
209
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
210
|
+
borderColor: theme.border
|
|
211
|
+
},
|
|
212
|
+
actionOn: {
|
|
213
|
+
backgroundColor: theme.card,
|
|
214
|
+
borderColor: theme.borderStrong
|
|
215
|
+
},
|
|
216
|
+
actionLabel: __spreadProps(__spreadValues({}, TYPE.caption), {
|
|
217
|
+
color: theme.mutedForeground
|
|
218
|
+
}),
|
|
219
|
+
stage: {
|
|
220
|
+
flex: 1,
|
|
221
|
+
margin: SPACE.md,
|
|
222
|
+
borderRadius: DESIGN_RADIUS,
|
|
223
|
+
overflow: "hidden",
|
|
224
|
+
backgroundColor: "#ffffff",
|
|
225
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
226
|
+
borderColor: theme.border
|
|
227
|
+
},
|
|
228
|
+
code: {
|
|
229
|
+
flex: 1,
|
|
230
|
+
backgroundColor: theme.isDark ? "#0b0b0f" : "#f8fafc"
|
|
231
|
+
},
|
|
232
|
+
codeContent: {
|
|
233
|
+
padding: SPACE.md
|
|
234
|
+
},
|
|
235
|
+
codeRow: {
|
|
236
|
+
flexGrow: 0
|
|
237
|
+
},
|
|
238
|
+
codeText: {
|
|
239
|
+
fontFamily: "Menlo",
|
|
240
|
+
fontSize: 11,
|
|
241
|
+
lineHeight: 16,
|
|
242
|
+
color: theme.foreground
|
|
243
|
+
},
|
|
244
|
+
compareBar: {
|
|
245
|
+
alignItems: "center",
|
|
246
|
+
paddingVertical: SPACE.xs,
|
|
247
|
+
backgroundColor: theme.background
|
|
248
|
+
},
|
|
249
|
+
cardScrim: {
|
|
250
|
+
flex: 1,
|
|
251
|
+
backgroundColor: "rgba(0,0,0,0.4)",
|
|
252
|
+
justifyContent: "center",
|
|
253
|
+
padding: SPACE.xl
|
|
254
|
+
},
|
|
255
|
+
card: {
|
|
256
|
+
borderRadius: DESIGN_RADIUS,
|
|
257
|
+
padding: SPACE.lg,
|
|
258
|
+
gap: SPACE.md,
|
|
259
|
+
backgroundColor: theme.background
|
|
260
|
+
},
|
|
261
|
+
cardTitle: __spreadProps(__spreadValues({}, TYPE.title), {
|
|
262
|
+
color: theme.foreground
|
|
263
|
+
}),
|
|
264
|
+
targetRow: {
|
|
265
|
+
flexDirection: "row",
|
|
266
|
+
alignItems: "center",
|
|
267
|
+
gap: SPACE.sm,
|
|
268
|
+
padding: SPACE.sm,
|
|
269
|
+
borderRadius: DESIGN_RADIUS,
|
|
270
|
+
backgroundColor: theme.card
|
|
271
|
+
},
|
|
272
|
+
targetTag: {
|
|
273
|
+
fontFamily: "Menlo",
|
|
274
|
+
fontSize: 11,
|
|
275
|
+
color: theme.primaryText
|
|
276
|
+
},
|
|
277
|
+
targetText: __spreadProps(__spreadValues({}, TYPE.caption), {
|
|
278
|
+
color: theme.foreground,
|
|
279
|
+
flex: 1
|
|
280
|
+
}),
|
|
281
|
+
cardInput: __spreadValues({
|
|
282
|
+
minHeight: 70,
|
|
283
|
+
borderRadius: DESIGN_RADIUS,
|
|
284
|
+
padding: SPACE.md,
|
|
285
|
+
backgroundColor: theme.card,
|
|
286
|
+
color: theme.foreground,
|
|
287
|
+
textAlignVertical: "top"
|
|
288
|
+
}, TYPE.body),
|
|
289
|
+
cardButtons: {
|
|
290
|
+
flexDirection: "row",
|
|
291
|
+
justifyContent: "flex-end",
|
|
292
|
+
gap: SPACE.sm
|
|
293
|
+
}
|
|
294
|
+
}));export{CreationScreen};//# sourceMappingURL=CreationScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreationScreen.js","sources":["../../../../src/features/design/surface/CreationScreen.tsx"],"sourcesContent":["/**\n * One creation, full screen - native twin of web `CreationView`:\n *\n * Preview | Code | Compare Compare holds the document from before the last\n * edit against the current one (Before / After)\n * device Mobile · Tablet · Desktop layout widths\n * Revert / Restore edit a swap, so the same button undoes itself\n * Annotate tap the page to pin a comment on what you tapped\n * Open the page alone, full screen in the app\n * Use in code publish the page; its raw url goes to the share sheet\n * Download the page as an .html file\n * theme the surface's light / dark toggle\n *\n * The Agent bar underneath edits this design in place (or makes a new one from it).\n */\nimport React, { useRef, useState } from 'react';\nimport { ActivityIndicator, Alert, Modal, ScrollView, Share, StyleSheet, Text, TextInput, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { CanvasThemeToggle, themedStyles, useCanvasTheme, type CanvasPalette } from '../../canvas/canvasTheme';\nimport { ActionButton, IconButton, Pressable, RADIUS, SPACE, Segmented, TYPE } from '../../canvas/canvasUi';\nimport type { DesignArtifact } from './designBoard';\nimport { DESIGN_RADIUS } from './designTheme';\nimport { selectionLabel, type AnnotationTarget } from './designChat';\nimport { DesignPreview, PREVIEW_DEVICES, type DesignPreviewHandle, type PreviewDevice } from './DesignPreview';\nimport type { PriorVersion } from './useDesignSurface';\nimport { downloadDesign } from './designExport';\nimport { CompareView } from './CompareView';\n\ntype Tab = 'preview' | 'code' | 'compare';\n\nexport interface PendingPick {\n xPct: number;\n yPct: number;\n target?: AnnotationTarget;\n}\n\nexport function CreationScreen({\n creation,\n streaming,\n prior,\n onBack,\n onRevert,\n annotate,\n onToggleAnnotate,\n onAddPick,\n pickCount,\n composer,\n onPublish,\n onOpenFull,\n}: {\n creation: DesignArtifact;\n /** The live generation, shown as it is written. */\n streaming?: boolean;\n prior?: PriorVersion;\n onBack: () => void;\n onRevert?: () => void;\n annotate: boolean;\n onToggleAnnotate: () => void;\n onAddPick: (pick: PendingPick & { comment: string }) => void;\n pickCount: number;\n composer: React.ReactNode;\n /** \"Use in code\": publish the page; resolves to its raw url. Absent: the action hides. */\n onPublish?: (creation: DesignArtifact) => Promise<string>;\n /** \"Open\": the page on its own, full screen in the app. */\n onOpenFull?: () => void;\n}) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const [tab, setTab] = useState<Tab>('preview');\n const [device, setDevice] = useState<PreviewDevice>('desktop');\n const [publishing, setPublishing] = useState(false);\n const [pending, setPending] = useState<PendingPick | null>(null);\n const [comment, setComment] = useState('');\n const preview = useRef<DesignPreviewHandle>(null);\n const canCompare = Boolean(prior) && !streaming;\n const shownTab: Tab = tab === 'compare' && !canCompare ? 'preview' : tab;\n\n const download = () => {\n void downloadDesign(creation).catch((err) =>\n Alert.alert('Could not save the page', err instanceof Error ? err.message : 'Try again.'),\n );\n };\n\n /** Publish, then hand the raw url on - Codezen's Design panel and a coding agent fetch that form. */\n const useInCode = async () => {\n if (!onPublish || publishing) return;\n setPublishing(true);\n try {\n const url = await onPublish(creation);\n await Share.share({ message: url, title: creation.title });\n } catch (err) {\n Alert.alert('Could not publish the page', err instanceof Error ? err.message : 'Try again.');\n } finally {\n setPublishing(false);\n }\n };\n\n return (\n <View style={styles.fill}>\n <View style={styles.header}>\n <IconButton icon=\"chevron-left\" label=\"Back to the board\" onPress={onBack} />\n <View style={styles.titleWrap}>\n <Text style={styles.title} numberOfLines={1}>\n {streaming ? 'Generating…' : creation.title}\n </Text>\n {creation.partial && !streaming ? (\n <Text style={styles.partial}>Cut off before it finished</Text>\n ) : null}\n </View>\n {!streaming ? (\n <>\n <IconButton\n icon=\"refresh\"\n label=\"Refresh preview\"\n onPress={() => preview.current?.reload()}\n size={36}\n />\n <CanvasThemeToggle style={styles.toggle} />\n </>\n ) : null}\n </View>\n <View style={styles.toolbar}>\n <Segmented\n options={[\n { id: 'preview', label: 'Preview' },\n { id: 'code', label: 'Code' },\n ...(canCompare ? [{ id: 'compare' as const, label: 'Compare' }] : []),\n ]}\n value={shownTab}\n onChange={(id) => setTab(id as Tab)}\n />\n <View style={styles.devices}>\n {PREVIEW_DEVICES.map((d) => (\n <Pressable\n key={d.key}\n onPress={() => setDevice(d.key)}\n style={[styles.device, device === d.key && styles.deviceOn]}\n accessibilityRole=\"button\"\n accessibilityLabel={d.label}\n accessibilityState={{ selected: device === d.key }}\n >\n <MaterialCommunityIcons\n name={d.icon as React.ComponentProps<typeof MaterialCommunityIcons>['name']}\n size={17}\n color={device === d.key ? theme.foreground : theme.mutedForeground}\n />\n </Pressable>\n ))}\n </View>\n </View>\n {!streaming ? (\n <View style={styles.actions}>\n <Pressable\n onPress={onToggleAnnotate}\n style={[styles.action, annotate && styles.actionOn]}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: annotate }}\n >\n <MaterialCommunityIcons\n name=\"map-marker-plus-outline\"\n size={15}\n color={annotate ? theme.primaryText : theme.mutedForeground}\n />\n <Text style={[styles.actionLabel, annotate && { color: theme.foreground }]}>\n {annotate ? 'Tap the page to pin' : 'Annotate'}\n {pickCount ? ` · ${pickCount}` : ''}\n </Text>\n </Pressable>\n {prior && onRevert ? (\n <Pressable onPress={onRevert} style={styles.action} accessibilityRole=\"button\">\n <MaterialCommunityIcons\n name={prior.reverted ? 'redo' : 'undo'}\n size={15}\n color={theme.mutedForeground}\n />\n <Text style={styles.actionLabel}>{prior.reverted ? 'Restore edit' : 'Revert'}</Text>\n </Pressable>\n ) : null}\n {onOpenFull ? (\n <Pressable onPress={onOpenFull} style={styles.action} accessibilityRole=\"button\">\n <MaterialCommunityIcons name=\"arrow-expand-all\" size={15} color={theme.mutedForeground} />\n <Text style={styles.actionLabel}>Open</Text>\n </Pressable>\n ) : null}\n {onPublish ? (\n <Pressable\n onPress={() => void useInCode()}\n disabled={publishing}\n style={styles.action}\n accessibilityRole=\"button\"\n >\n {publishing ? (\n <ActivityIndicator size=\"small\" color={theme.mutedForeground} />\n ) : (\n <MaterialCommunityIcons name=\"code-braces\" size={15} color={theme.mutedForeground} />\n )}\n <Text style={styles.actionLabel}>{publishing ? 'Publishing…' : 'Use in code'}</Text>\n </Pressable>\n ) : null}\n <Pressable onPress={download} style={styles.action} accessibilityRole=\"button\">\n <MaterialCommunityIcons name=\"download-outline\" size={15} color={theme.mutedForeground} />\n <Text style={styles.actionLabel}>Download</Text>\n </Pressable>\n </View>\n ) : null}\n\n <View style={styles.stage}>\n {shownTab === 'code' ? (\n <ScrollView style={styles.code} contentContainerStyle={styles.codeContent}>\n <ScrollView horizontal style={styles.codeRow}>\n <Text selectable style={styles.codeText}>\n {creation.html}\n </Text>\n </ScrollView>\n </ScrollView>\n ) : shownTab === 'compare' && prior ? (\n <CompareView beforeHtml={prior.html} afterHtml={creation.html} device={device} />\n ) : (\n <DesignPreview\n ref={preview}\n html={creation.html}\n device={device}\n annotate={annotate && !streaming}\n onPick={(pick) => {\n setComment('');\n setPending(pick);\n }}\n />\n )}\n </View>\n {composer}\n\n <Modal visible={Boolean(pending)} transparent animationType=\"fade\" onRequestClose={() => setPending(null)}>\n <View style={styles.cardScrim}>\n <View style={styles.card}>\n <Text style={styles.cardTitle}>Annotate “{creation.title}”</Text>\n {pending?.target ? (\n <View style={styles.targetRow}>\n <Text style={styles.targetTag}>{pending.target.tag || 'element'}</Text>\n <Text style={styles.targetText} numberOfLines={2}>\n {selectionLabel(pending.target) || 'no text - pinned by position'}\n </Text>\n </View>\n ) : null}\n <TextInput\n value={comment}\n onChangeText={setComment}\n placeholder=\"What should change here?\"\n placeholderTextColor={theme.mutedForeground}\n autoFocus\n multiline\n style={styles.cardInput}\n />\n <View style={styles.cardButtons}>\n <ActionButton label=\"Cancel\" variant=\"secondary\" onPress={() => setPending(null)} />\n <ActionButton\n label=\"Add pin\"\n onPress={() => {\n if (pending) onAddPick({ ...pending, comment: comment.trim() });\n setPending(null);\n }}\n />\n </View>\n </View>\n </View>\n </Modal>\n </View>\n );\n}\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n fill: { flex: 1 },\n header: { flexDirection: 'row', alignItems: 'center', gap: SPACE.xs, paddingHorizontal: SPACE.sm, height: 52 },\n titleWrap: { flex: 1 },\n title: { ...TYPE.title, color: theme.foreground },\n partial: { ...TYPE.caption, color: theme.warningText },\n toolbar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: SPACE.md,\n gap: SPACE.sm,\n },\n devices: { flexDirection: 'row', padding: 3, borderRadius: RADIUS.pill, backgroundColor: theme.card },\n device: { width: 34, height: 30, borderRadius: RADIUS.pill, alignItems: 'center', justifyContent: 'center' },\n deviceOn: { backgroundColor: theme.isDark ? theme.secondary : theme.surface },\n actions: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: SPACE.sm,\n paddingHorizontal: SPACE.md,\n paddingTop: SPACE.sm,\n },\n toggle: { marginLeft: SPACE.xs },\n action: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 5,\n height: 30,\n paddingHorizontal: SPACE.md,\n borderRadius: RADIUS.pill,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.border,\n },\n actionOn: { backgroundColor: theme.card, borderColor: theme.borderStrong },\n actionLabel: { ...TYPE.caption, color: theme.mutedForeground },\n stage: {\n flex: 1,\n margin: SPACE.md,\n borderRadius: DESIGN_RADIUS,\n overflow: 'hidden',\n backgroundColor: '#ffffff',\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.border,\n },\n code: { flex: 1, backgroundColor: theme.isDark ? '#0b0b0f' : '#f8fafc' },\n codeContent: { padding: SPACE.md },\n codeRow: { flexGrow: 0 },\n codeText: { fontFamily: 'Menlo', fontSize: 11, lineHeight: 16, color: theme.foreground },\n compareBar: { alignItems: 'center', paddingVertical: SPACE.xs, backgroundColor: theme.background },\n cardScrim: { flex: 1, backgroundColor: 'rgba(0,0,0,0.4)', justifyContent: 'center', padding: SPACE.xl },\n card: { borderRadius: DESIGN_RADIUS, padding: SPACE.lg, gap: SPACE.md, backgroundColor: theme.background },\n cardTitle: { ...TYPE.title, color: theme.foreground },\n targetRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.sm,\n padding: SPACE.sm,\n borderRadius: DESIGN_RADIUS,\n backgroundColor: theme.card,\n },\n targetTag: { fontFamily: 'Menlo', fontSize: 11, color: theme.primaryText },\n targetText: { ...TYPE.caption, color: theme.foreground, flex: 1 },\n cardInput: {\n minHeight: 70,\n borderRadius: DESIGN_RADIUS,\n padding: SPACE.md,\n backgroundColor: theme.card,\n color: theme.foreground,\n textAlignVertical: 'top',\n ...TYPE.body,\n },\n cardButtons: { flexDirection: 'row', justifyContent: 'flex-end', gap: SPACE.sm },\n }),\n);\n"],"names":[],"mappings":"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"}
|