@adminide-stack/yantra-mobile 12.0.129-alpha.0 → 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 +3 -3
- package/lib/features/design/exportDesign.js +0 -133
- package/lib/features/design/exportDesign.js.map +0 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import {gql}from'@apollo/client/index.js';import {catalogSearch,PUBLISHED_STATUS}from'./studioCatalog.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 = (obj2, key, value) => key in obj2 ? __defProp(obj2, key, { enumerable: true, configurable: true, writable: true, value }) : obj2[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
|
+
const DESIGN_CATALOG_GROUPS = ["canvas-flyer", "canvas-presentation", "canvas-business-card", "canvas-carousel", "canvas-logo", "canvas-banner", "canvas-brochure", "canvas-branding", "canvas-certificate", "canvas-worksheet", "canvas-proposal", "canvas-social-post", "canvas-newsletter", "canvas-menu", "canvas-infographic"];
|
|
21
|
+
const DESIGN_GROUP_LISTED_RECORD = {
|
|
22
|
+
"canvas-flyer": "yantra-flyer-templates"
|
|
23
|
+
};
|
|
24
|
+
const SINGLE_PAGE_DESIGN_GROUPS = /* @__PURE__ */ new Set(["canvas-flyer"]);
|
|
25
|
+
const DESIGN_CATALOG_QUERY = `query TemplateCatalog($filter: FormTemplateSubmissionFilter) {
|
|
26
|
+
formTemplateSubmissions(filter: $filter) { nodes { id name description category tags formData } }
|
|
27
|
+
}`;
|
|
28
|
+
const DESIGN_CATALOG_PAGE_SIZE = 24;
|
|
29
|
+
const str = (v) => typeof v === "string" ? v.trim() : "";
|
|
30
|
+
const obj = (v) => v && typeof v === "object" && !Array.isArray(v) ? v : {};
|
|
31
|
+
const isHttps = (v) => typeof v === "string" && /^https:\/\//.test(v);
|
|
32
|
+
const isPage = (p) => isHttps(p) || Boolean(p) && typeof p === "object" && Array.isArray(p.layers);
|
|
33
|
+
function designCardFromRow(row, group) {
|
|
34
|
+
let formData = obj(row == null ? void 0 : row.formData);
|
|
35
|
+
if (typeof (row == null ? void 0 : row.formData) === "string") {
|
|
36
|
+
try {
|
|
37
|
+
formData = obj(JSON.parse(row.formData));
|
|
38
|
+
} catch (e) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const details = obj(formData.generationDetails);
|
|
43
|
+
const design = obj(formData.design);
|
|
44
|
+
const pageCount = Array.isArray(design.pages) ? design.pages.filter(isPage).length : 0;
|
|
45
|
+
const pageWidth = Number(design.pageWidth);
|
|
46
|
+
const pageHeight = Number(design.pageHeight);
|
|
47
|
+
const id = str(row == null ? void 0 : row.name);
|
|
48
|
+
const coverUrl = isHttps(details.previewUrl) ? str(details.previewUrl) : "";
|
|
49
|
+
if (!id || !coverUrl || pageCount === 0 || !(pageWidth > 0) || !(pageHeight > 0)) return null;
|
|
50
|
+
return {
|
|
51
|
+
id,
|
|
52
|
+
group,
|
|
53
|
+
title: str(details.title) || id,
|
|
54
|
+
coverUrl,
|
|
55
|
+
aspectRatio: str(design.aspectRatio) || str(obj(formData.generation).aspectRatio),
|
|
56
|
+
pageWidth,
|
|
57
|
+
pageHeight,
|
|
58
|
+
pageCount,
|
|
59
|
+
tags: Array.isArray(row == null ? void 0 : row.tags) ? row.tags.filter((t) => typeof t === "string") : []
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function isListedDesignCard(card) {
|
|
63
|
+
if (!SINGLE_PAGE_DESIGN_GROUPS.has(card.group)) return true;
|
|
64
|
+
return card.pageCount === 1 && card.pageHeight >= card.pageWidth;
|
|
65
|
+
}
|
|
66
|
+
function groupOfTemplate(id) {
|
|
67
|
+
var _a;
|
|
68
|
+
return (_a = DESIGN_CATALOG_GROUPS.find((group) => id.startsWith(`${group}-`))) != null ? _a : null;
|
|
69
|
+
}
|
|
70
|
+
function designCatalogFilter(group, opts = {}) {
|
|
71
|
+
var _a, _b;
|
|
72
|
+
const templateId = opts.anyRecord ? void 0 : DESIGN_GROUP_LISTED_RECORD[group];
|
|
73
|
+
const search = catalogSearch(opts.search);
|
|
74
|
+
return __spreadProps(__spreadValues(__spreadValues({
|
|
75
|
+
group,
|
|
76
|
+
status: PUBLISHED_STATUS
|
|
77
|
+
}, templateId ? {
|
|
78
|
+
templateId
|
|
79
|
+
} : {}), search ? {
|
|
80
|
+
search
|
|
81
|
+
} : {}), {
|
|
82
|
+
limit: (_a = opts.limit) != null ? _a : DESIGN_CATALOG_PAGE_SIZE,
|
|
83
|
+
offset: (_b = opts.offset) != null ? _b : 0
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function designCatalogPageFromRows(nodes, group, opts = {}) {
|
|
87
|
+
var _a;
|
|
88
|
+
const limit = (_a = opts.limit) != null ? _a : DESIGN_CATALOG_PAGE_SIZE;
|
|
89
|
+
const cards = nodes.map((n) => designCardFromRow(n, group)).filter((c) => c !== null);
|
|
90
|
+
return {
|
|
91
|
+
cards: opts.anyRecord ? cards : cards.filter(isListedDesignCard),
|
|
92
|
+
hasMore: nodes.length === limit,
|
|
93
|
+
fetched: nodes.length
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
const CACHE_TTL_MS = 10 * 6e4;
|
|
97
|
+
const cache = /* @__PURE__ */ new Map();
|
|
98
|
+
function fetchDesignCatalog(graphqlUrl, token, group, opts = {}) {
|
|
99
|
+
const filter = designCatalogFilter(group, opts);
|
|
100
|
+
return cached(`${graphqlUrl}|${JSON.stringify(filter)}`, async () => {
|
|
101
|
+
var _a, _b, _c;
|
|
102
|
+
const res = await fetch(graphqlUrl, {
|
|
103
|
+
method: "POST",
|
|
104
|
+
headers: __spreadValues({
|
|
105
|
+
"content-type": "application/json"
|
|
106
|
+
}, token ? {
|
|
107
|
+
authorization: `Bearer ${token}`
|
|
108
|
+
} : {}),
|
|
109
|
+
body: JSON.stringify({
|
|
110
|
+
query: DESIGN_CATALOG_QUERY,
|
|
111
|
+
variables: {
|
|
112
|
+
filter
|
|
113
|
+
}
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
if (!res.ok) throw new Error(`Template catalog read failed (${res.status})`);
|
|
117
|
+
const json = await res.json().catch(() => ({}));
|
|
118
|
+
if ((_a = json.errors) == null ? void 0 : _a.length) {
|
|
119
|
+
throw new Error(json.errors.map((e) => e == null ? void 0 : e.message).filter(Boolean).join("; ") || "Template catalog read failed");
|
|
120
|
+
}
|
|
121
|
+
const nodes = (_c = (_b = json.data) == null ? void 0 : _b.formTemplateSubmissions) == null ? void 0 : _c.nodes;
|
|
122
|
+
return designCatalogPageFromRows(Array.isArray(nodes) ? nodes : [], group, opts);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const DESIGN_CATALOG_DOC = gql(DESIGN_CATALOG_QUERY);
|
|
126
|
+
function fetchDesignCatalogViaClient(client, group, opts = {}) {
|
|
127
|
+
const filter = designCatalogFilter(group, opts);
|
|
128
|
+
return cached(`apollo|${JSON.stringify(filter)}`, async () => {
|
|
129
|
+
var _a;
|
|
130
|
+
const {
|
|
131
|
+
data
|
|
132
|
+
} = await client.query({
|
|
133
|
+
query: DESIGN_CATALOG_DOC,
|
|
134
|
+
variables: {
|
|
135
|
+
filter
|
|
136
|
+
},
|
|
137
|
+
fetchPolicy: "no-cache"
|
|
138
|
+
});
|
|
139
|
+
const nodes = (_a = data == null ? void 0 : data.formTemplateSubmissions) == null ? void 0 : _a.nodes;
|
|
140
|
+
return designCatalogPageFromRows(Array.isArray(nodes) ? nodes : [], group, opts);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function cached(key, read) {
|
|
144
|
+
const hit = cache.get(key);
|
|
145
|
+
if (hit && Date.now() - hit.at < CACHE_TTL_MS) return hit.page;
|
|
146
|
+
const page = read();
|
|
147
|
+
cache.set(key, {
|
|
148
|
+
at: Date.now(),
|
|
149
|
+
page
|
|
150
|
+
});
|
|
151
|
+
page.catch(() => {
|
|
152
|
+
var _a;
|
|
153
|
+
if (((_a = cache.get(key)) == null ? void 0 : _a.page) === page) cache.delete(key);
|
|
154
|
+
});
|
|
155
|
+
return page;
|
|
156
|
+
}
|
|
157
|
+
function interleaveTemplateRows(a, b) {
|
|
158
|
+
const cards = [];
|
|
159
|
+
for (let i = 0; i < Math.max(a.length, b.length); i += 1) {
|
|
160
|
+
if (a[i]) cards.push(a[i]);
|
|
161
|
+
if (b[i]) cards.push(b[i]);
|
|
162
|
+
}
|
|
163
|
+
const midpoint = Math.ceil(cards.length / 2);
|
|
164
|
+
return [cards.slice(0, midpoint), cards.slice(midpoint)];
|
|
165
|
+
}export{DESIGN_CATALOG_GROUPS,DESIGN_CATALOG_PAGE_SIZE,DESIGN_CATALOG_QUERY,DESIGN_GROUP_LISTED_RECORD,SINGLE_PAGE_DESIGN_GROUPS,designCardFromRow,designCatalogFilter,designCatalogPageFromRows,fetchDesignCatalog,fetchDesignCatalogViaClient,groupOfTemplate,interleaveTemplateRows,isListedDesignCard};//# sourceMappingURL=designCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"designCatalog.js","sources":["../../../src/features/canvas/designCatalog.ts"],"sourcesContent":["/**\n * The canvas design catalog (flyers, presentations, business cards, ...) -\n * native twin of surface-kit `templateCatalogs/designCatalog.ts` + `catalogRead.ts`.\n *\n * Marketplace submissions on the app's own backend, one row per template,\n * stamped `canvas-<category>`. Native lists them (home's \"Templates for you\",\n * the category gallery) and the native design studio opens the picked one\n * (features/design/doc/newDoc.ts reads its full pages).\n *\n * Read with plain `fetch` against the backend GraphQL, the same lane\n * `studioLooks.listViaBackendFetch` uses for the studio catalog. Public reads:\n * the bearer only rides along when there is one.\n *\n * A dev host whose backend URL cannot be derived reads through the host's\n * Apollo client instead (`fetchDesignCatalogViaClient`).\n *\n * Pure apart from `fetch`: no RN imports, so it runs under jest as-is.\n */\nimport { gql } from '@apollo/client';\nimport { PUBLISHED_STATUS, catalogSearch } from './studioCatalog';\nimport type { StudioCatalogClient } from './useStudioCatalogTemplates';\n\n/** Every group yantra-designs publishes (surface-kit DESIGN_CATALOG_GROUPS). */\nexport const DESIGN_CATALOG_GROUPS = [\n 'canvas-flyer',\n 'canvas-presentation',\n 'canvas-business-card',\n 'canvas-carousel',\n 'canvas-logo',\n 'canvas-banner',\n 'canvas-brochure',\n 'canvas-branding',\n 'canvas-certificate',\n 'canvas-worksheet',\n 'canvas-proposal',\n 'canvas-social-post',\n 'canvas-newsletter',\n 'canvas-menu',\n 'canvas-infographic',\n] as const;\nexport type DesignCatalogGroup = (typeof DESIGN_CATALOG_GROUPS)[number];\n\n/**\n * The marketplace record a group LISTS, for a group that holds more than it\n * lists: `canvas-flyer` also holds Canva's multi-page \"flyers\" (really decks),\n * so a listing reads only Yantra's own single-page flyers. A read by id does not.\n */\nexport const DESIGN_GROUP_LISTED_RECORD: Readonly<Partial<Record<DesignCatalogGroup, string>>> = {\n 'canvas-flyer': 'yantra-flyer-templates',\n};\n\n/** Groups whose listings show one-page portrait or square designs only. */\nexport const SINGLE_PAGE_DESIGN_GROUPS: ReadonlySet<DesignCatalogGroup> = new Set<DesignCatalogGroup>(['canvas-flyer']);\n\nexport const DESIGN_CATALOG_QUERY = `query TemplateCatalog($filter: FormTemplateSubmissionFilter) {\n formTemplateSubmissions(filter: $filter) { nodes { id name description category tags formData } }\n}`;\n\n/** What native needs of a template: enough to draw its cover at its own shape and open it on the web. */\nexport interface DesignCatalogCard {\n /** Row name: the platform's stable template id (`?design=<id>`). */\n id: string;\n group: DesignCatalogGroup;\n title: string;\n coverUrl: string;\n aspectRatio: string;\n pageWidth: number;\n pageHeight: number;\n pageCount: number;\n tags: string[];\n}\n\nexport interface DesignCatalogFilter {\n group: DesignCatalogGroup;\n status: typeof PUBLISHED_STATUS;\n limit: number;\n offset: number;\n templateId?: string;\n search?: string;\n}\n\nexport interface DesignCatalogOptions {\n search?: string;\n offset?: number;\n limit?: number;\n /** Read any row of the group (a read by id), not only the rows it lists. */\n anyRecord?: boolean;\n}\n\nexport interface DesignCatalogPage {\n cards: DesignCatalogCard[];\n /** The resolver has no total: a full page means there is probably another one. */\n hasMore: boolean;\n /** Rows the server returned, cards or not: the next page starts this far on. */\n fetched: number;\n}\n\nexport const DESIGN_CATALOG_PAGE_SIZE = 24;\n\nconst str = (v: unknown): string => (typeof v === 'string' ? v.trim() : '');\nconst obj = (v: unknown): Record<string, any> =>\n v && typeof v === 'object' && !Array.isArray(v) ? (v as Record<string, any>) : {};\nconst isHttps = (v: unknown): v is string => typeof v === 'string' && /^https:\\/\\//.test(v);\nconst isPage = (p: unknown): boolean =>\n isHttps(p) || (Boolean(p) && typeof p === 'object' && Array.isArray((p as { layers?: unknown }).layers));\n\n/** One row -> one card; a row without a cover, a size or pages is not a usable template. */\nexport function designCardFromRow(row: Record<string, any>, group: DesignCatalogGroup): DesignCatalogCard | null {\n let formData: Record<string, any> = obj(row?.formData);\n if (typeof row?.formData === 'string') {\n try {\n formData = obj(JSON.parse(row.formData));\n } catch {\n return null;\n }\n }\n const details = obj(formData.generationDetails);\n const design = obj(formData.design);\n const pageCount = Array.isArray(design.pages) ? design.pages.filter(isPage).length : 0;\n const pageWidth = Number(design.pageWidth);\n const pageHeight = Number(design.pageHeight);\n const id = str(row?.name);\n const coverUrl = isHttps(details.previewUrl) ? str(details.previewUrl) : '';\n if (!id || !coverUrl || pageCount === 0 || !(pageWidth > 0) || !(pageHeight > 0)) return null;\n return {\n id,\n group,\n title: str(details.title) || id,\n coverUrl,\n aspectRatio: str(design.aspectRatio) || str(obj(formData.generation).aspectRatio),\n pageWidth,\n pageHeight,\n pageCount,\n tags: Array.isArray(row?.tags) ? row.tags.filter((t: unknown): t is string => typeof t === 'string') : [],\n };\n}\n\n/** Does a group's listing show this card? In a single-page group only a one-page portrait or square design. */\nexport function isListedDesignCard(\n card: Pick<DesignCatalogCard, 'group' | 'pageCount' | 'pageWidth' | 'pageHeight'>,\n): boolean {\n if (!SINGLE_PAGE_DESIGN_GROUPS.has(card.group)) return true;\n return card.pageCount === 1 && card.pageHeight >= card.pageWidth;\n}\n\n/** The catalog group a template id (its row name) belongs to. */\nexport function groupOfTemplate(id: string): DesignCatalogGroup | null {\n return DESIGN_CATALOG_GROUPS.find((group) => id.startsWith(`${group}-`)) ?? null;\n}\n\n/** The `formTemplateSubmissions` filter for one page of a group. */\nexport function designCatalogFilter(group: DesignCatalogGroup, opts: DesignCatalogOptions = {}): DesignCatalogFilter {\n const templateId = opts.anyRecord ? undefined : DESIGN_GROUP_LISTED_RECORD[group];\n const search = catalogSearch(opts.search);\n return {\n group,\n status: PUBLISHED_STATUS,\n ...(templateId ? { templateId } : {}),\n ...(search ? { search } : {}),\n limit: opts.limit ?? DESIGN_CATALOG_PAGE_SIZE,\n offset: opts.offset ?? 0,\n };\n}\n\n/** Rows -> the page a listing (or a read by id) shows. */\nexport function designCatalogPageFromRows(\n nodes: ReadonlyArray<Record<string, any>>,\n group: DesignCatalogGroup,\n opts: DesignCatalogOptions = {},\n): DesignCatalogPage {\n const limit = opts.limit ?? DESIGN_CATALOG_PAGE_SIZE;\n const cards = nodes.map((n) => designCardFromRow(n, group)).filter((c): c is DesignCatalogCard => c !== null);\n return {\n cards: opts.anyRecord ? cards : cards.filter(isListedDesignCard),\n hasMore: nodes.length === limit,\n fetched: nodes.length,\n };\n}\n\n/** The catalog changes when a release loads it, not while someone browses. */\nconst CACHE_TTL_MS = 10 * 60_000;\nconst cache = new Map<string, { at: number; page: Promise<DesignCatalogPage> }>();\n\nexport function clearDesignCatalogCache(): void {\n cache.clear();\n}\n\n/**\n * One page of a catalog group straight from the backend, cached in memory for\n * ten minutes per (endpoint, filter). A failed read is not cached.\n */\nexport function fetchDesignCatalog(\n graphqlUrl: string,\n token: string | null | undefined,\n group: DesignCatalogGroup,\n opts: DesignCatalogOptions = {},\n): Promise<DesignCatalogPage> {\n const filter = designCatalogFilter(group, opts);\n return cached(`${graphqlUrl}|${JSON.stringify(filter)}`, async () => {\n const res = await fetch(graphqlUrl, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n ...(token ? { authorization: `Bearer ${token}` } : {}),\n },\n body: JSON.stringify({ query: DESIGN_CATALOG_QUERY, variables: { filter } }),\n });\n if (!res.ok) throw new Error(`Template catalog read failed (${res.status})`);\n const json = (await res.json().catch(() => ({}))) as {\n data?: { formTemplateSubmissions?: { nodes?: Array<Record<string, any>> | null } };\n errors?: Array<{ message?: string }>;\n };\n if (json.errors?.length) {\n throw new Error(\n json.errors\n .map((e) => e?.message)\n .filter(Boolean)\n .join('; ') || 'Template catalog read failed',\n );\n }\n const nodes = json.data?.formTemplateSubmissions?.nodes;\n return designCatalogPageFromRows(Array.isArray(nodes) ? nodes : [], group, opts);\n });\n}\n\nconst DESIGN_CATALOG_DOC = gql(DESIGN_CATALOG_QUERY);\n\n/** The same page through the host's Apollo client (no cache write: rows are tens of KB each). */\nexport function fetchDesignCatalogViaClient(\n client: Pick<StudioCatalogClient, 'query'>,\n group: DesignCatalogGroup,\n opts: DesignCatalogOptions = {},\n): Promise<DesignCatalogPage> {\n const filter = designCatalogFilter(group, opts);\n return cached(`apollo|${JSON.stringify(filter)}`, async () => {\n const { data } = await client.query({\n query: DESIGN_CATALOG_DOC,\n variables: { filter },\n fetchPolicy: 'no-cache',\n });\n const nodes = (data as { formTemplateSubmissions?: { nodes?: Array<Record<string, any>> | null } } | null)\n ?.formTemplateSubmissions?.nodes;\n return designCatalogPageFromRows(Array.isArray(nodes) ? nodes : [], group, opts);\n });\n}\n\nfunction cached(key: string, read: () => Promise<DesignCatalogPage>): Promise<DesignCatalogPage> {\n const hit = cache.get(key);\n if (hit && Date.now() - hit.at < CACHE_TTL_MS) return hit.page;\n const page = read();\n cache.set(key, { at: Date.now(), page });\n page.catch(() => {\n if (cache.get(key)?.page === page) cache.delete(key);\n });\n return page;\n}\n\n/** Interleave two rails (flyer, slide, flyer, ...) and split them into two rows, like web TemplateRails. */\nexport function interleaveTemplateRows(\n a: readonly DesignCatalogCard[],\n b: readonly DesignCatalogCard[],\n): [DesignCatalogCard[], DesignCatalogCard[]] {\n const cards: DesignCatalogCard[] = [];\n for (let i = 0; i < Math.max(a.length, b.length); i += 1) {\n if (a[i]) cards.push(a[i]);\n if (b[i]) cards.push(b[i]);\n }\n const midpoint = Math.ceil(cards.length / 2);\n return [cards.slice(0, midpoint), cards.slice(midpoint)];\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
const FORMAT_INTRO = "Choose a size to start fresh, or make a template your own.";
|
|
2
|
+
function beingAdded(what) {
|
|
3
|
+
return `${what} templates are being added. Start from a size above for now.`;
|
|
4
|
+
}
|
|
5
|
+
const DPI = 150;
|
|
6
|
+
const px = (value, unit) => unit === "in" ? Math.round(value * DPI) : unit === "mm" ? Math.round(value / 25.4 * DPI) : Math.round(value);
|
|
7
|
+
const screen = (id, label, width, height) => ({
|
|
8
|
+
id,
|
|
9
|
+
label,
|
|
10
|
+
width,
|
|
11
|
+
height,
|
|
12
|
+
detail: `${width} \xD7 ${height}`
|
|
13
|
+
});
|
|
14
|
+
const print = (id, label, w, h, unit) => ({
|
|
15
|
+
id,
|
|
16
|
+
label,
|
|
17
|
+
width: px(w, unit),
|
|
18
|
+
height: px(h, unit),
|
|
19
|
+
detail: `${w} \xD7 ${h} ${unit}`
|
|
20
|
+
});
|
|
21
|
+
const DESIGN_CATEGORIES = [{
|
|
22
|
+
id: "social",
|
|
23
|
+
title: "Social media",
|
|
24
|
+
// Carousels are their own format: the Social media shelf lists social posts only.
|
|
25
|
+
shelves: [{
|
|
26
|
+
group: "canvas-social-post",
|
|
27
|
+
title: "Social media templates",
|
|
28
|
+
noun: "social posts"
|
|
29
|
+
}],
|
|
30
|
+
sizes: [screen("ig-post-portrait", "Instagram post (4:5)", 1080, 1350), screen("ig-post-square", "Instagram post (square)", 1080, 1080), screen("ig-story", "Instagram story", 1080, 1920), screen("fb-post", "Facebook post", 1200, 630), screen("li-post", "LinkedIn post", 1200, 627), screen("x-post", "X post", 1600, 900), screen("yt-thumb", "YouTube thumbnail", 1280, 720), screen("pin", "Pinterest pin", 1e3, 1500)]
|
|
31
|
+
}, {
|
|
32
|
+
id: "carousel",
|
|
33
|
+
title: "Carousels",
|
|
34
|
+
shelves: [{
|
|
35
|
+
group: "canvas-carousel",
|
|
36
|
+
title: "Carousel templates",
|
|
37
|
+
noun: "carousels"
|
|
38
|
+
}],
|
|
39
|
+
sizes: [screen("carousel-portrait", "Carousel (4:5)", 1080, 1350), screen("carousel-square", "Carousel (square)", 1080, 1080), screen("carousel-3-4", "Carousel (3:4)", 1080, 1440), screen("carousel-tall", "Carousel (2:3)", 1080, 1620)]
|
|
40
|
+
}, {
|
|
41
|
+
id: "presentation",
|
|
42
|
+
title: "Presentations",
|
|
43
|
+
shelves: [{
|
|
44
|
+
group: "canvas-presentation",
|
|
45
|
+
title: "Presentation templates",
|
|
46
|
+
noun: "presentations"
|
|
47
|
+
}],
|
|
48
|
+
sizes: [screen("slides-16-9", "Presentation (16:9)", 1920, 1080), screen("slides-4-3", "Presentation (4:3)", 1024, 768), screen("slides-mobile", "Presentation (mobile)", 1080, 1920)]
|
|
49
|
+
}, {
|
|
50
|
+
id: "pitch-deck",
|
|
51
|
+
title: "Pitch decks",
|
|
52
|
+
shelves: [{
|
|
53
|
+
group: "canvas-presentation",
|
|
54
|
+
title: "Pitch deck templates",
|
|
55
|
+
noun: "pitch decks",
|
|
56
|
+
tag: "pitch-deck"
|
|
57
|
+
}],
|
|
58
|
+
sizes: [screen("slides-16-9", "Presentation (16:9)", 1920, 1080)]
|
|
59
|
+
}, {
|
|
60
|
+
id: "flyer",
|
|
61
|
+
title: "Flyers",
|
|
62
|
+
shelves: [{
|
|
63
|
+
group: "canvas-flyer",
|
|
64
|
+
title: "Flyer templates",
|
|
65
|
+
noun: "flyers"
|
|
66
|
+
}],
|
|
67
|
+
sizes: [print("a4", "A4 document", 210, 297, "mm"), print("letter", "Flyer (US Letter)", 8.5, 11, "in"), print("a3", "A3 poster", 297, 420, "mm"), print("a2", "A2 poster", 420, 594, "mm"), print("poster-18-24", "Poster", 18, 24, "in"), print("invitation", "Invitation", 5, 7, "in"), print("postcard", "Postcard", 6, 4, "in")]
|
|
68
|
+
}, {
|
|
69
|
+
id: "business-card",
|
|
70
|
+
title: "Business cards",
|
|
71
|
+
shelves: [{
|
|
72
|
+
group: "canvas-business-card",
|
|
73
|
+
title: "Business card templates",
|
|
74
|
+
noun: "business cards"
|
|
75
|
+
}],
|
|
76
|
+
sizes: [print("business-card", "Business card (US)", 3.5, 2, "in"), print("business-card-eu", "Business card (EU)", 85, 55, "mm"), print("business-card-90x55", "Business card (AU / NZ)", 90, 55, "mm"), print("business-card-90x50", "Business card (wide)", 90, 50, "mm")]
|
|
77
|
+
}, {
|
|
78
|
+
id: "logo",
|
|
79
|
+
title: "Logos",
|
|
80
|
+
shelves: [{
|
|
81
|
+
group: "canvas-logo",
|
|
82
|
+
title: "Logo templates",
|
|
83
|
+
noun: "logos"
|
|
84
|
+
}],
|
|
85
|
+
sizes: [screen("logo", "Logo", 500, 500), screen("logo-large", "Logo (large)", 2e3, 2e3)]
|
|
86
|
+
}, {
|
|
87
|
+
id: "banner",
|
|
88
|
+
title: "Banners",
|
|
89
|
+
shelves: [{
|
|
90
|
+
group: "canvas-banner",
|
|
91
|
+
title: "Banner templates",
|
|
92
|
+
noun: "banners"
|
|
93
|
+
}],
|
|
94
|
+
sizes: [screen("banner-landscape", "Banner (landscape)", 4800, 2400), screen("banner-portrait", "Banner (portrait)", 2400, 4800), screen("linkedin-banner", "LinkedIn banner", 1584, 396), screen("youtube-banner", "YouTube banner", 2560, 1440), screen("x-header", "X header", 1500, 500), screen("facebook-cover", "Facebook cover", 1640, 624), screen("web-banner", "Web banner", 728, 90)]
|
|
95
|
+
}, {
|
|
96
|
+
id: "brochure",
|
|
97
|
+
title: "Brochures",
|
|
98
|
+
shelves: [{
|
|
99
|
+
group: "canvas-brochure",
|
|
100
|
+
title: "Brochure templates",
|
|
101
|
+
noun: "brochures"
|
|
102
|
+
}],
|
|
103
|
+
sizes: [print("brochure-letter", "Brochure (US Letter)", 11, 8.5, "in"), print("brochure-a4", "Brochure (A4)", 297, 210, "mm"), print("brochure-tabloid", "Brochure (tabloid)", 17, 11, "in")]
|
|
104
|
+
}, {
|
|
105
|
+
id: "branding",
|
|
106
|
+
title: "Branding",
|
|
107
|
+
shelves: [{
|
|
108
|
+
group: "canvas-branding",
|
|
109
|
+
title: "Branding templates",
|
|
110
|
+
noun: "letterheads or envelopes"
|
|
111
|
+
}],
|
|
112
|
+
sizes: [print("letterhead-a4", "Letterhead (A4)", 210, 297, "mm"), print("letterhead-letter", "Letterhead (US Letter)", 8.5, 11, "in"), print("envelope-10", "Envelope (#10)", 9.5, 4.125, "in"), print("envelope-dl", "Envelope (DL)", 220, 110, "mm")]
|
|
113
|
+
}, {
|
|
114
|
+
id: "certificate",
|
|
115
|
+
title: "Certificates",
|
|
116
|
+
shelves: [{
|
|
117
|
+
group: "canvas-certificate",
|
|
118
|
+
title: "Certificate templates",
|
|
119
|
+
noun: "certificates",
|
|
120
|
+
waiting: beingAdded("Certificate")
|
|
121
|
+
}],
|
|
122
|
+
sizes: [print("certificate-letter", "Certificate (US Letter)", 11, 8.5, "in"), print("certificate-a4", "Certificate (A4)", 297, 210, "mm"), print("certificate-portrait", "Certificate (portrait)", 210, 297, "mm")]
|
|
123
|
+
}, {
|
|
124
|
+
id: "worksheet",
|
|
125
|
+
title: "Worksheets",
|
|
126
|
+
shelves: [{
|
|
127
|
+
group: "canvas-worksheet",
|
|
128
|
+
title: "Worksheet templates",
|
|
129
|
+
noun: "worksheets",
|
|
130
|
+
waiting: beingAdded("Worksheet")
|
|
131
|
+
}],
|
|
132
|
+
sizes: [print("worksheet-letter", "Worksheet (US Letter)", 8.5, 11, "in"), print("worksheet-a4", "Worksheet (A4)", 210, 297, "mm")]
|
|
133
|
+
}, {
|
|
134
|
+
id: "proposal",
|
|
135
|
+
title: "Proposals",
|
|
136
|
+
shelves: [{
|
|
137
|
+
group: "canvas-proposal",
|
|
138
|
+
title: "Proposal templates",
|
|
139
|
+
noun: "proposals",
|
|
140
|
+
waiting: beingAdded("Proposal")
|
|
141
|
+
}],
|
|
142
|
+
sizes: [print("proposal-letter", "Proposal (US Letter)", 8.5, 11, "in"), print("proposal-a4", "Proposal (A4)", 210, 297, "mm")]
|
|
143
|
+
}, {
|
|
144
|
+
id: "newsletter",
|
|
145
|
+
title: "Newsletters",
|
|
146
|
+
shelves: [{
|
|
147
|
+
group: "canvas-newsletter",
|
|
148
|
+
title: "Newsletter templates",
|
|
149
|
+
noun: "newsletters",
|
|
150
|
+
waiting: beingAdded("Newsletter")
|
|
151
|
+
}],
|
|
152
|
+
sizes: [print("newsletter-letter", "Newsletter (US Letter)", 8.5, 11, "in"), print("newsletter-a4", "Newsletter (A4)", 210, 297, "mm")]
|
|
153
|
+
}, {
|
|
154
|
+
id: "menu",
|
|
155
|
+
title: "Menus",
|
|
156
|
+
shelves: [{
|
|
157
|
+
group: "canvas-menu",
|
|
158
|
+
title: "Menu templates",
|
|
159
|
+
noun: "menus",
|
|
160
|
+
waiting: beingAdded("Menu")
|
|
161
|
+
}],
|
|
162
|
+
sizes: [print("menu-letter", "Menu (US Letter)", 8.5, 11, "in"), print("menu-a4", "Menu (A4)", 210, 297, "mm"), print("menu-tabloid", "Menu (tabloid)", 11, 17, "in")]
|
|
163
|
+
}, {
|
|
164
|
+
id: "infographic",
|
|
165
|
+
title: "Infographics",
|
|
166
|
+
shelves: [{
|
|
167
|
+
group: "canvas-infographic",
|
|
168
|
+
title: "Infographic templates",
|
|
169
|
+
noun: "infographics",
|
|
170
|
+
waiting: beingAdded("Infographic")
|
|
171
|
+
}],
|
|
172
|
+
sizes: [screen("infographic", "Infographic", 800, 2e3)]
|
|
173
|
+
}, {
|
|
174
|
+
id: "technology",
|
|
175
|
+
title: "Technology",
|
|
176
|
+
shelves: [],
|
|
177
|
+
sizes: [],
|
|
178
|
+
topic: {
|
|
179
|
+
query: "technology",
|
|
180
|
+
intro: "Technology templates in every format: decks, social posts, flyers, logos and more."
|
|
181
|
+
}
|
|
182
|
+
}];
|
|
183
|
+
const DESIGN_FORMATS = DESIGN_CATEGORIES.filter((c) => !c.topic);
|
|
184
|
+
const DESIGN_TOPICS = DESIGN_CATEGORIES.filter((c) => c.topic);
|
|
185
|
+
const DESIGN_CATEGORY_GROUPS = [{
|
|
186
|
+
id: "formats",
|
|
187
|
+
label: "Formats",
|
|
188
|
+
items: DESIGN_FORMATS
|
|
189
|
+
}, {
|
|
190
|
+
id: "topics",
|
|
191
|
+
label: "Topics",
|
|
192
|
+
items: DESIGN_TOPICS
|
|
193
|
+
}];
|
|
194
|
+
const SEARCH_SECTIONS = [{
|
|
195
|
+
category: "flyer",
|
|
196
|
+
group: "canvas-flyer",
|
|
197
|
+
title: "Flyers"
|
|
198
|
+
}, {
|
|
199
|
+
category: "presentation",
|
|
200
|
+
group: "canvas-presentation",
|
|
201
|
+
title: "Presentations"
|
|
202
|
+
}, {
|
|
203
|
+
category: "social",
|
|
204
|
+
group: "canvas-social-post",
|
|
205
|
+
title: "Social media"
|
|
206
|
+
}, {
|
|
207
|
+
category: "carousel",
|
|
208
|
+
group: "canvas-carousel",
|
|
209
|
+
title: "Carousels"
|
|
210
|
+
}, {
|
|
211
|
+
category: "business-card",
|
|
212
|
+
group: "canvas-business-card",
|
|
213
|
+
title: "Business cards"
|
|
214
|
+
}, {
|
|
215
|
+
category: "logo",
|
|
216
|
+
group: "canvas-logo",
|
|
217
|
+
title: "Logos"
|
|
218
|
+
}, {
|
|
219
|
+
category: "banner",
|
|
220
|
+
group: "canvas-banner",
|
|
221
|
+
title: "Banners"
|
|
222
|
+
}, {
|
|
223
|
+
category: "brochure",
|
|
224
|
+
group: "canvas-brochure",
|
|
225
|
+
title: "Brochures"
|
|
226
|
+
}, {
|
|
227
|
+
category: "branding",
|
|
228
|
+
group: "canvas-branding",
|
|
229
|
+
title: "Branding"
|
|
230
|
+
}, {
|
|
231
|
+
category: "certificate",
|
|
232
|
+
group: "canvas-certificate",
|
|
233
|
+
title: "Certificates"
|
|
234
|
+
}, {
|
|
235
|
+
category: "worksheet",
|
|
236
|
+
group: "canvas-worksheet",
|
|
237
|
+
title: "Worksheets"
|
|
238
|
+
}, {
|
|
239
|
+
category: "proposal",
|
|
240
|
+
group: "canvas-proposal",
|
|
241
|
+
title: "Proposals"
|
|
242
|
+
}, {
|
|
243
|
+
category: "newsletter",
|
|
244
|
+
group: "canvas-newsletter",
|
|
245
|
+
title: "Newsletters"
|
|
246
|
+
}, {
|
|
247
|
+
category: "menu",
|
|
248
|
+
group: "canvas-menu",
|
|
249
|
+
title: "Menus"
|
|
250
|
+
}, {
|
|
251
|
+
category: "infographic",
|
|
252
|
+
group: "canvas-infographic",
|
|
253
|
+
title: "Infographics"
|
|
254
|
+
}];
|
|
255
|
+
function categoryIntro(category) {
|
|
256
|
+
var _a, _b;
|
|
257
|
+
return (_b = (_a = category.topic) == null ? void 0 : _a.intro) != null ? _b : FORMAT_INTRO;
|
|
258
|
+
}
|
|
259
|
+
function designCategoryFor(tileId) {
|
|
260
|
+
var _a;
|
|
261
|
+
return (_a = DESIGN_CATEGORIES.find((c) => c.id === tileId)) != null ? _a : null;
|
|
262
|
+
}export{DESIGN_CATEGORIES,DESIGN_CATEGORY_GROUPS,DESIGN_FORMATS,DESIGN_TOPICS,FORMAT_INTRO,SEARCH_SECTIONS,categoryIntro,designCategoryFor};//# sourceMappingURL=designCategories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"designCategories.js","sources":["../../../src/features/canvas/designCategories.ts"],"sourcesContent":["/**\n * Design categories as the category gallery shows them - native twin of\n * canvas-surface `editors/carousel-editor/components/StartPanel.tsx`\n * (CATALOG_CATEGORIES) and `utils/sizes.ts` (DESIGN_SIZES).\n *\n * A category is a Design & write tile id (`flyer`, `business-card`): its blank\n * sizes and its catalog shelves. Pure data: runs under jest as-is.\n */\nimport type { DesignCatalogGroup } from './designCatalog';\n\nexport interface DesignShelf {\n group: DesignCatalogGroup;\n title: string;\n /** \"No flyers match ...\" */\n noun: string;\n /** Only cards carrying this tag (pitch decks inside the presentation catalog). */\n tag?: string;\n /** Shown while the catalog has no templates yet. */\n waiting?: string;\n}\n\nexport interface BlankSize {\n id: string;\n label: string;\n /** Pixels (print sizes at the web's 150 DPI). */\n width: number;\n height: number;\n /** \"1080 × 1350\", \"8.5 × 11 in\" */\n detail: string;\n}\n\n/** A topic searches every format's catalog for its query; it has no sizes of its own. */\nexport interface DesignTopic {\n query: string;\n /** The line under the topic's title. */\n intro: string;\n}\n\nexport interface DesignCategory {\n id: string;\n title: string;\n shelves: DesignShelf[];\n sizes: BlankSize[];\n /** Set on a topic (Technology): previews of every format matching its query. */\n topic?: DesignTopic;\n}\n\n/** The line under a format's title (web StartPanel). */\nexport const FORMAT_INTRO = 'Choose a size to start fresh, or make a template your own.';\n\nfunction beingAdded(what: string): string {\n return `${what} templates are being added. Start from a size above for now.`;\n}\n\nconst DPI = 150;\nconst px = (value: number, unit: 'px' | 'in' | 'mm') =>\n unit === 'in' ? Math.round(value * DPI) : unit === 'mm' ? Math.round((value / 25.4) * DPI) : Math.round(value);\n\nconst screen = (id: string, label: string, width: number, height: number): BlankSize => ({\n id,\n label,\n width,\n height,\n detail: `${width} × ${height}`,\n});\n\nconst print = (id: string, label: string, w: number, h: number, unit: 'in' | 'mm'): BlankSize => ({\n id,\n label,\n width: px(w, unit),\n height: px(h, unit),\n detail: `${w} × ${h} ${unit}`,\n});\n\nexport const DESIGN_CATEGORIES: readonly DesignCategory[] = [\n {\n id: 'social',\n title: 'Social media',\n // Carousels are their own format: the Social media shelf lists social posts only.\n shelves: [{ group: 'canvas-social-post', title: 'Social media templates', noun: 'social posts' }],\n sizes: [\n screen('ig-post-portrait', 'Instagram post (4:5)', 1080, 1350),\n screen('ig-post-square', 'Instagram post (square)', 1080, 1080),\n screen('ig-story', 'Instagram story', 1080, 1920),\n screen('fb-post', 'Facebook post', 1200, 630),\n screen('li-post', 'LinkedIn post', 1200, 627),\n screen('x-post', 'X post', 1600, 900),\n screen('yt-thumb', 'YouTube thumbnail', 1280, 720),\n screen('pin', 'Pinterest pin', 1000, 1500),\n ],\n },\n {\n id: 'carousel',\n title: 'Carousels',\n shelves: [{ group: 'canvas-carousel', title: 'Carousel templates', noun: 'carousels' }],\n sizes: [\n screen('carousel-portrait', 'Carousel (4:5)', 1080, 1350),\n screen('carousel-square', 'Carousel (square)', 1080, 1080),\n screen('carousel-3-4', 'Carousel (3:4)', 1080, 1440),\n screen('carousel-tall', 'Carousel (2:3)', 1080, 1620),\n ],\n },\n {\n id: 'presentation',\n title: 'Presentations',\n shelves: [{ group: 'canvas-presentation', title: 'Presentation templates', noun: 'presentations' }],\n sizes: [\n screen('slides-16-9', 'Presentation (16:9)', 1920, 1080),\n screen('slides-4-3', 'Presentation (4:3)', 1024, 768),\n screen('slides-mobile', 'Presentation (mobile)', 1080, 1920),\n ],\n },\n {\n id: 'pitch-deck',\n title: 'Pitch decks',\n shelves: [\n { group: 'canvas-presentation', title: 'Pitch deck templates', noun: 'pitch decks', tag: 'pitch-deck' },\n ],\n sizes: [screen('slides-16-9', 'Presentation (16:9)', 1920, 1080)],\n },\n {\n id: 'flyer',\n title: 'Flyers',\n shelves: [{ group: 'canvas-flyer', title: 'Flyer templates', noun: 'flyers' }],\n sizes: [\n print('a4', 'A4 document', 210, 297, 'mm'),\n print('letter', 'Flyer (US Letter)', 8.5, 11, 'in'),\n print('a3', 'A3 poster', 297, 420, 'mm'),\n print('a2', 'A2 poster', 420, 594, 'mm'),\n print('poster-18-24', 'Poster', 18, 24, 'in'),\n print('invitation', 'Invitation', 5, 7, 'in'),\n print('postcard', 'Postcard', 6, 4, 'in'),\n ],\n },\n {\n id: 'business-card',\n title: 'Business cards',\n shelves: [{ group: 'canvas-business-card', title: 'Business card templates', noun: 'business cards' }],\n sizes: [\n print('business-card', 'Business card (US)', 3.5, 2, 'in'),\n print('business-card-eu', 'Business card (EU)', 85, 55, 'mm'),\n print('business-card-90x55', 'Business card (AU / NZ)', 90, 55, 'mm'),\n print('business-card-90x50', 'Business card (wide)', 90, 50, 'mm'),\n ],\n },\n {\n id: 'logo',\n title: 'Logos',\n shelves: [{ group: 'canvas-logo', title: 'Logo templates', noun: 'logos' }],\n sizes: [screen('logo', 'Logo', 500, 500), screen('logo-large', 'Logo (large)', 2000, 2000)],\n },\n {\n id: 'banner',\n title: 'Banners',\n shelves: [{ group: 'canvas-banner', title: 'Banner templates', noun: 'banners' }],\n sizes: [\n screen('banner-landscape', 'Banner (landscape)', 4800, 2400),\n screen('banner-portrait', 'Banner (portrait)', 2400, 4800),\n screen('linkedin-banner', 'LinkedIn banner', 1584, 396),\n screen('youtube-banner', 'YouTube banner', 2560, 1440),\n screen('x-header', 'X header', 1500, 500),\n screen('facebook-cover', 'Facebook cover', 1640, 624),\n screen('web-banner', 'Web banner', 728, 90),\n ],\n },\n {\n id: 'brochure',\n title: 'Brochures',\n shelves: [{ group: 'canvas-brochure', title: 'Brochure templates', noun: 'brochures' }],\n sizes: [\n print('brochure-letter', 'Brochure (US Letter)', 11, 8.5, 'in'),\n print('brochure-a4', 'Brochure (A4)', 297, 210, 'mm'),\n print('brochure-tabloid', 'Brochure (tabloid)', 17, 11, 'in'),\n ],\n },\n {\n id: 'branding',\n title: 'Branding',\n shelves: [{ group: 'canvas-branding', title: 'Branding templates', noun: 'letterheads or envelopes' }],\n sizes: [\n print('letterhead-a4', 'Letterhead (A4)', 210, 297, 'mm'),\n print('letterhead-letter', 'Letterhead (US Letter)', 8.5, 11, 'in'),\n print('envelope-10', 'Envelope (#10)', 9.5, 4.125, 'in'),\n print('envelope-dl', 'Envelope (DL)', 220, 110, 'mm'),\n ],\n },\n {\n id: 'certificate',\n title: 'Certificates',\n shelves: [\n {\n group: 'canvas-certificate',\n title: 'Certificate templates',\n noun: 'certificates',\n waiting: beingAdded('Certificate'),\n },\n ],\n sizes: [\n print('certificate-letter', 'Certificate (US Letter)', 11, 8.5, 'in'),\n print('certificate-a4', 'Certificate (A4)', 297, 210, 'mm'),\n print('certificate-portrait', 'Certificate (portrait)', 210, 297, 'mm'),\n ],\n },\n {\n id: 'worksheet',\n title: 'Worksheets',\n shelves: [\n {\n group: 'canvas-worksheet',\n title: 'Worksheet templates',\n noun: 'worksheets',\n waiting: beingAdded('Worksheet'),\n },\n ],\n sizes: [\n print('worksheet-letter', 'Worksheet (US Letter)', 8.5, 11, 'in'),\n print('worksheet-a4', 'Worksheet (A4)', 210, 297, 'mm'),\n ],\n },\n {\n id: 'proposal',\n title: 'Proposals',\n shelves: [\n {\n group: 'canvas-proposal',\n title: 'Proposal templates',\n noun: 'proposals',\n waiting: beingAdded('Proposal'),\n },\n ],\n sizes: [\n print('proposal-letter', 'Proposal (US Letter)', 8.5, 11, 'in'),\n print('proposal-a4', 'Proposal (A4)', 210, 297, 'mm'),\n ],\n },\n {\n id: 'newsletter',\n title: 'Newsletters',\n shelves: [\n {\n group: 'canvas-newsletter',\n title: 'Newsletter templates',\n noun: 'newsletters',\n waiting: beingAdded('Newsletter'),\n },\n ],\n sizes: [\n print('newsletter-letter', 'Newsletter (US Letter)', 8.5, 11, 'in'),\n print('newsletter-a4', 'Newsletter (A4)', 210, 297, 'mm'),\n ],\n },\n {\n id: 'menu',\n title: 'Menus',\n shelves: [{ group: 'canvas-menu', title: 'Menu templates', noun: 'menus', waiting: beingAdded('Menu') }],\n sizes: [\n print('menu-letter', 'Menu (US Letter)', 8.5, 11, 'in'),\n print('menu-a4', 'Menu (A4)', 210, 297, 'mm'),\n print('menu-tabloid', 'Menu (tabloid)', 11, 17, 'in'),\n ],\n },\n {\n id: 'infographic',\n title: 'Infographics',\n shelves: [\n {\n group: 'canvas-infographic',\n title: 'Infographic templates',\n noun: 'infographics',\n waiting: beingAdded('Infographic'),\n },\n ],\n sizes: [screen('infographic', 'Infographic', 800, 2000)],\n },\n {\n id: 'technology',\n title: 'Technology',\n shelves: [],\n sizes: [],\n topic: {\n query: 'technology',\n intro: 'Technology templates in every format: decks, social posts, flyers, logos and more.',\n },\n },\n];\n\n/** Formats: a category with sizes and its own catalog shelves. */\nexport const DESIGN_FORMATS: readonly DesignCategory[] = DESIGN_CATEGORIES.filter((c) => !c.topic);\n/** Topics: a query searched in every format's catalog (Technology). */\nexport const DESIGN_TOPICS: readonly DesignCategory[] = DESIGN_CATEGORIES.filter((c) => c.topic);\n\n/** Category navigation groups, as the web studio lists them: Formats, then Topics. */\nexport const DESIGN_CATEGORY_GROUPS: readonly {\n id: 'formats' | 'topics';\n label: string;\n items: readonly DesignCategory[];\n}[] = [\n { id: 'formats', label: 'Formats', items: DESIGN_FORMATS },\n { id: 'topics', label: 'Topics', items: DESIGN_TOPICS },\n];\n\n/** A search outside any format, and a topic: the top matches of every catalog, in this order. */\nexport const SEARCH_SECTIONS: readonly { category: string; group: DesignCatalogGroup; title: string }[] = [\n { category: 'flyer', group: 'canvas-flyer', title: 'Flyers' },\n { category: 'presentation', group: 'canvas-presentation', title: 'Presentations' },\n { category: 'social', group: 'canvas-social-post', title: 'Social media' },\n { category: 'carousel', group: 'canvas-carousel', title: 'Carousels' },\n { category: 'business-card', group: 'canvas-business-card', title: 'Business cards' },\n { category: 'logo', group: 'canvas-logo', title: 'Logos' },\n { category: 'banner', group: 'canvas-banner', title: 'Banners' },\n { category: 'brochure', group: 'canvas-brochure', title: 'Brochures' },\n { category: 'branding', group: 'canvas-branding', title: 'Branding' },\n { category: 'certificate', group: 'canvas-certificate', title: 'Certificates' },\n { category: 'worksheet', group: 'canvas-worksheet', title: 'Worksheets' },\n { category: 'proposal', group: 'canvas-proposal', title: 'Proposals' },\n { category: 'newsletter', group: 'canvas-newsletter', title: 'Newsletters' },\n { category: 'menu', group: 'canvas-menu', title: 'Menus' },\n { category: 'infographic', group: 'canvas-infographic', title: 'Infographics' },\n];\n\n/** The line under a category's title: a topic's intro, else the format line. */\nexport function categoryIntro(category: DesignCategory): string {\n return category.topic?.intro ?? FORMAT_INTRO;\n}\n\n/** The gallery for a Design & write tile id, or null (doc, custom, t-shirt open straight away). */\nexport function designCategoryFor(tileId: string): DesignCategory | null {\n return DESIGN_CATEGORIES.find((c) => c.id === tileId) ?? null;\n}\n\n/** The category \"See all\" on a template rail opens. */\nexport function categoryOfGroup(group: DesignCatalogGroup): DesignCategory | null {\n return DESIGN_CATEGORIES.find((c) => c.shelves[0]?.group === group && !c.shelves[0].tag) ?? null;\n}\n"],"names":[],"mappings":"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"}
|