@adminide-stack/yantra-mobile 12.0.129-alpha.0 → 12.0.129

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.
Files changed (360) hide show
  1. package/lib/compute.js +57 -1
  2. package/lib/compute.js.map +1 -1
  3. package/lib/features/agent-chat/NativeAgentChat.js +3 -2
  4. package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
  5. package/lib/features/apps/AppsCatalog.js +10 -0
  6. package/lib/features/apps/AppsCatalog.js.map +1 -1
  7. package/lib/features/apps/mobileAppCatalog.js +11 -0
  8. package/lib/features/apps/mobileAppCatalog.js.map +1 -1
  9. package/lib/features/canvas/AudioEditorExperience.js +448 -105
  10. package/lib/features/canvas/AudioEditorExperience.js.map +1 -1
  11. package/lib/features/canvas/CanvasAgentChatPane.js +33 -14
  12. package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -1
  13. package/lib/features/canvas/CanvasBoardsGrid.js +493 -41
  14. package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -1
  15. package/lib/features/canvas/CanvasChatResultCard.js.map +1 -1
  16. package/lib/features/canvas/CanvasEditToolsPanel.js +37 -1
  17. package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -1
  18. package/lib/features/canvas/CanvasExperience.js +237 -22
  19. package/lib/features/canvas/CanvasExperience.js.map +1 -1
  20. package/lib/features/canvas/CanvasGeneratePanel.js +119 -26
  21. package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -1
  22. package/lib/features/canvas/CanvasLooksPanel.js +17 -6
  23. package/lib/features/canvas/CanvasLooksPanel.js.map +1 -1
  24. package/lib/features/canvas/CanvasTasksPanel.js +18 -1
  25. package/lib/features/canvas/CanvasTasksPanel.js.map +1 -1
  26. package/lib/features/canvas/DesignCategoryGallery.js +423 -0
  27. package/lib/features/canvas/DesignCategoryGallery.js.map +1 -0
  28. package/lib/features/canvas/ImageEditorExperience.js +763 -187
  29. package/lib/features/canvas/ImageEditorExperience.js.map +1 -1
  30. package/lib/features/canvas/SetStudioExperience.js +199 -11
  31. package/lib/features/canvas/SetStudioExperience.js.map +1 -1
  32. package/lib/features/canvas/VideoEditorExperience.js +59 -40
  33. package/lib/features/canvas/VideoEditorExperience.js.map +1 -1
  34. package/lib/features/canvas/VideoGeneratorExperience.js +134 -34
  35. package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -1
  36. package/lib/features/canvas/aiEdit.js +4 -2
  37. package/lib/features/canvas/aiEdit.js.map +1 -1
  38. package/lib/features/canvas/audioEditor/AudioWaveform.js +96 -0
  39. package/lib/features/canvas/audioEditor/AudioWaveform.js.map +1 -0
  40. package/lib/features/canvas/audioEditor/audioPeaks.js +93 -0
  41. package/lib/features/canvas/audioEditor/audioPeaks.js.map +1 -0
  42. package/lib/features/canvas/canvasTaskSync.js +34 -7
  43. package/lib/features/canvas/canvasTaskSync.js.map +1 -1
  44. package/lib/features/canvas/canvasTasks.js +23 -3
  45. package/lib/features/canvas/canvasTasks.js.map +1 -1
  46. package/lib/features/canvas/canvasTheme.js +10 -24
  47. package/lib/features/canvas/canvasTheme.js.map +1 -1
  48. package/lib/features/canvas/canvasUi.js +1 -1
  49. package/lib/features/canvas/canvasUi.js.map +1 -1
  50. package/lib/features/canvas/createTiles.js +17 -9
  51. package/lib/features/canvas/createTiles.js.map +1 -1
  52. package/lib/features/canvas/deepLinks.js +35 -5
  53. package/lib/features/canvas/deepLinks.js.map +1 -1
  54. package/lib/features/canvas/designCatalog.js +165 -0
  55. package/lib/features/canvas/designCatalog.js.map +1 -0
  56. package/lib/features/canvas/designCategories.js +262 -0
  57. package/lib/features/canvas/designCategories.js.map +1 -0
  58. package/lib/features/canvas/editorControls.js +406 -0
  59. package/lib/features/canvas/editorControls.js.map +1 -0
  60. package/lib/features/canvas/generationModels.js +5 -3
  61. package/lib/features/canvas/generationModels.js.map +1 -1
  62. package/lib/features/canvas/generationTasks.js +162 -0
  63. package/lib/features/canvas/generationTasks.js.map +1 -0
  64. package/lib/features/canvas/generator/BottomSheet.js +167 -0
  65. package/lib/features/canvas/generator/BottomSheet.js.map +1 -0
  66. package/lib/features/canvas/generator/BusinessCardChatCard.js +155 -0
  67. package/lib/features/canvas/generator/BusinessCardChatCard.js.map +1 -0
  68. package/lib/features/canvas/generator/DirectorSheet.js +163 -0
  69. package/lib/features/canvas/generator/DirectorSheet.js.map +1 -0
  70. package/lib/features/canvas/generator/ReframePreview.js +122 -0
  71. package/lib/features/canvas/generator/ReframePreview.js.map +1 -0
  72. package/lib/features/canvas/generator/RunLogCard.js +119 -0
  73. package/lib/features/canvas/generator/RunLogCard.js.map +1 -0
  74. package/lib/features/canvas/generator/ShotPanel.js +261 -0
  75. package/lib/features/canvas/generator/ShotPanel.js.map +1 -0
  76. package/lib/features/canvas/generator/businessCardWidget.js +117 -0
  77. package/lib/features/canvas/generator/businessCardWidget.js.map +1 -0
  78. package/lib/features/canvas/generator/cameraVocabulary.js +142 -0
  79. package/lib/features/canvas/generator/cameraVocabulary.js.map +1 -0
  80. package/lib/features/canvas/generator/cinematicVocabulary.js +416 -0
  81. package/lib/features/canvas/generator/cinematicVocabulary.js.map +1 -0
  82. package/lib/features/canvas/generator/direction.js +41 -0
  83. package/lib/features/canvas/generator/direction.js.map +1 -0
  84. package/lib/features/canvas/generator/reframeGeometry.js +108 -0
  85. package/lib/features/canvas/generator/reframeGeometry.js.map +1 -0
  86. package/lib/features/canvas/generator/runLog.js +71 -0
  87. package/lib/features/canvas/generator/runLog.js.map +1 -0
  88. package/lib/features/canvas/generator/shot.js +133 -0
  89. package/lib/features/canvas/generator/shot.js.map +1 -0
  90. package/lib/features/canvas/generator/useShotSpec.js +87 -0
  91. package/lib/features/canvas/generator/useShotSpec.js.map +1 -0
  92. package/lib/features/canvas/home/HeroComposer.js +214 -0
  93. package/lib/features/canvas/home/HeroComposer.js.map +1 -0
  94. package/lib/features/canvas/home/HeroMonitor.js +225 -0
  95. package/lib/features/canvas/home/HeroMonitor.js.map +1 -0
  96. package/lib/features/canvas/home/LookDetail.js +185 -0
  97. package/lib/features/canvas/home/LookDetail.js.map +1 -0
  98. package/lib/features/canvas/home/LoopingVideo.js +37 -0
  99. package/lib/features/canvas/home/LoopingVideo.js.map +1 -0
  100. package/lib/features/canvas/home/TemplatesGallery.js +253 -0
  101. package/lib/features/canvas/home/TemplatesGallery.js.map +1 -0
  102. package/lib/features/canvas/home/heroShots.js +100 -0
  103. package/lib/features/canvas/home/heroShots.js.map +1 -0
  104. package/lib/features/canvas/homeWork.js +62 -3
  105. package/lib/features/canvas/homeWork.js.map +1 -1
  106. package/lib/features/canvas/imageEditor/ImageMarkup.js +195 -0
  107. package/lib/features/canvas/imageEditor/ImageMarkup.js.map +1 -0
  108. package/lib/features/canvas/imageEditor/imageEditOps.js +367 -0
  109. package/lib/features/canvas/imageEditor/imageEditOps.js.map +1 -0
  110. package/lib/features/canvas/nativeViewerRegistry.js.map +1 -1
  111. package/lib/features/canvas/rankedCatalogSearch.js +375 -0
  112. package/lib/features/canvas/rankedCatalogSearch.js.map +1 -0
  113. package/lib/features/canvas/recorder/CameraRecorderExperience.js +68 -20
  114. package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -1
  115. package/lib/features/canvas/recorder/RecordingReview.js +272 -0
  116. package/lib/features/canvas/recorder/RecordingReview.js.map +1 -0
  117. package/lib/features/canvas/recorder/RecordingsList.js +179 -0
  118. package/lib/features/canvas/recorder/RecordingsList.js.map +1 -0
  119. package/lib/features/canvas/recorder/recorderOps.js +99 -0
  120. package/lib/features/canvas/recorder/recorderOps.js.map +1 -0
  121. package/lib/features/canvas/seedanceShowcase.js +314 -0
  122. package/lib/features/canvas/seedanceShowcase.js.map +1 -0
  123. package/lib/features/canvas/serverTasks.js +149 -15
  124. package/lib/features/canvas/serverTasks.js.map +1 -1
  125. package/lib/features/canvas/sessionRenewal.js +114 -0
  126. package/lib/features/canvas/sessionRenewal.js.map +1 -0
  127. package/lib/features/canvas/set/SetViewportWebView.js +34 -1
  128. package/lib/features/canvas/set/SetViewportWebView.js.map +1 -1
  129. package/lib/features/canvas/set/agent/setTurn.js +4 -2
  130. package/lib/features/canvas/set/agent/setTurn.js.map +1 -1
  131. package/lib/features/canvas/set/setPresets.js +85 -0
  132. package/lib/features/canvas/set/setPresets.js.map +1 -0
  133. package/lib/features/canvas/set/setProject.js +4 -1
  134. package/lib/features/canvas/set/setProject.js.map +1 -1
  135. package/lib/features/canvas/studioCatalog.js +59 -4
  136. package/lib/features/canvas/studioCatalog.js.map +1 -1
  137. package/lib/features/canvas/studioLooks.js +31 -4
  138. package/lib/features/canvas/studioLooks.js.map +1 -1
  139. package/lib/features/canvas/surfaceIndex.js +1 -14
  140. package/lib/features/canvas/surfaceIndex.js.map +1 -1
  141. package/lib/features/canvas/templateSearch.js +489 -0
  142. package/lib/features/canvas/templateSearch.js.map +1 -0
  143. package/lib/features/canvas/useCanvasSession.js +28 -6
  144. package/lib/features/canvas/useCanvasSession.js.map +1 -1
  145. package/lib/features/canvas/useStudioCatalogTemplates.js +41 -5
  146. package/lib/features/canvas/useStudioCatalogTemplates.js.map +1 -1
  147. package/lib/features/canvas/videoEditor/EditorPanels.js +531 -0
  148. package/lib/features/canvas/videoEditor/EditorPanels.js.map +1 -0
  149. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +48 -4
  150. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -1
  151. package/lib/features/canvas/videoEditor/agent/agentLoop.js +2 -0
  152. package/lib/features/canvas/videoEditor/agent/agentLoop.js.map +1 -1
  153. package/lib/features/canvas/videoEditor/agent/brainClient.js +97 -27
  154. package/lib/features/canvas/videoEditor/agent/brainClient.js.map +1 -1
  155. package/lib/features/canvas/videoEditor/agent/cutTools.js +707 -3
  156. package/lib/features/canvas/videoEditor/agent/cutTools.js.map +1 -1
  157. package/lib/features/canvas/videoEditor/audioServices.js +165 -0
  158. package/lib/features/canvas/videoEditor/audioServices.js.map +1 -0
  159. package/lib/features/canvas/videoEditor/captions.js +144 -0
  160. package/lib/features/canvas/videoEditor/captions.js.map +1 -0
  161. package/lib/features/canvas/videoEditor/compileTimeline.js +24 -16
  162. package/lib/features/canvas/videoEditor/compileTimeline.js.map +1 -1
  163. package/lib/features/canvas/videoEditor/editorModel.js +12 -2
  164. package/lib/features/canvas/videoEditor/editorModel.js.map +1 -1
  165. package/lib/features/canvas/videoEditor/exportTask.js +89 -7
  166. package/lib/features/canvas/videoEditor/exportTask.js.map +1 -1
  167. package/lib/features/canvas/videoEditor/layers.js +117 -0
  168. package/lib/features/canvas/videoEditor/layers.js.map +1 -0
  169. package/lib/features/canvas/videoEditor/remoteMediaClient.js +45 -18
  170. package/lib/features/canvas/videoEditor/remoteMediaClient.js.map +1 -1
  171. package/lib/features/canvas/videoEditor/renderTimeline.js +18 -6
  172. package/lib/features/canvas/videoEditor/renderTimeline.js.map +1 -1
  173. package/lib/features/canvas/videoEditor/revoice.js +138 -0
  174. package/lib/features/canvas/videoEditor/revoice.js.map +1 -0
  175. package/lib/features/canvas/videoEditor/storageUpload.js +34 -0
  176. package/lib/features/canvas/videoEditor/storageUpload.js.map +1 -0
  177. package/lib/features/canvas/videoEditor/textMotion.js +109 -0
  178. package/lib/features/canvas/videoEditor/textMotion.js.map +1 -0
  179. package/lib/features/canvas/videoEditor/transitions.js +31 -0
  180. package/lib/features/canvas/videoEditor/transitions.js.map +1 -0
  181. package/lib/features/chat/TemplatesChatCards.js +8 -3
  182. package/lib/features/chat/TemplatesChatCards.js.map +1 -1
  183. package/lib/features/design/DesignEditorExperience.js +674 -644
  184. package/lib/features/design/DesignEditorExperience.js.map +1 -1
  185. package/lib/features/design/DesignExperience.js +285 -538
  186. package/lib/features/design/DesignExperience.js.map +1 -1
  187. package/lib/features/design/designCore.js +2 -212
  188. package/lib/features/design/designCore.js.map +1 -1
  189. package/lib/features/design/designIndex.js +1 -50
  190. package/lib/features/design/designIndex.js.map +1 -1
  191. package/lib/features/design/doc/aiDesign.js +247 -0
  192. package/lib/features/design/doc/aiDesign.js.map +1 -0
  193. package/lib/features/design/doc/artifacts.js +280 -0
  194. package/lib/features/design/doc/artifacts.js.map +1 -0
  195. package/lib/features/design/doc/chart.js +98 -0
  196. package/lib/features/design/doc/chart.js.map +1 -0
  197. package/lib/features/design/doc/crop.js +104 -0
  198. package/lib/features/design/doc/crop.js.map +1 -0
  199. package/lib/features/design/doc/curve.js +49 -0
  200. package/lib/features/design/doc/curve.js.map +1 -0
  201. package/lib/features/design/doc/docOps.js +397 -0
  202. package/lib/features/design/doc/docOps.js.map +1 -0
  203. package/lib/features/design/doc/findReplace.js +112 -0
  204. package/lib/features/design/doc/findReplace.js.map +1 -0
  205. package/lib/features/design/doc/fonts.js +79 -0
  206. package/lib/features/design/doc/fonts.js.map +1 -0
  207. package/lib/features/design/doc/frames.js +17 -0
  208. package/lib/features/design/doc/frames.js.map +1 -0
  209. package/lib/features/design/doc/geometry.js +133 -0
  210. package/lib/features/design/doc/geometry.js.map +1 -0
  211. package/lib/features/design/doc/imageAdjust.js +203 -0
  212. package/lib/features/design/doc/imageAdjust.js.map +1 -0
  213. package/lib/features/design/doc/legacyDoc.js +107 -0
  214. package/lib/features/design/doc/legacyDoc.js.map +1 -0
  215. package/lib/features/design/doc/newDoc.js +335 -0
  216. package/lib/features/design/doc/newDoc.js.map +1 -0
  217. package/lib/features/design/doc/pageRange.js +17 -0
  218. package/lib/features/design/doc/pageRange.js.map +1 -0
  219. package/lib/features/design/doc/pathScale.js +68 -0
  220. package/lib/features/design/doc/pathScale.js.map +1 -0
  221. package/lib/features/design/doc/qr.js +62 -0
  222. package/lib/features/design/doc/qr.js.map +1 -0
  223. package/lib/features/design/doc/shapes.js +366 -0
  224. package/lib/features/design/doc/shapes.js.map +1 -0
  225. package/lib/features/design/doc/sizes.js +230 -0
  226. package/lib/features/design/doc/sizes.js.map +1 -0
  227. package/lib/features/design/doc/textEffects.js +134 -0
  228. package/lib/features/design/doc/textEffects.js.map +1 -0
  229. package/lib/features/design/doc/textLayout.js +182 -0
  230. package/lib/features/design/doc/textLayout.js.map +1 -0
  231. package/lib/features/design/doc/types.js +30 -0
  232. package/lib/features/design/doc/types.js.map +1 -0
  233. package/lib/features/design/editor/AiPanel.js +194 -0
  234. package/lib/features/design/editor/AiPanel.js.map +1 -0
  235. package/lib/features/design/editor/ChartDataPanel.js +182 -0
  236. package/lib/features/design/editor/ChartDataPanel.js.map +1 -0
  237. package/lib/features/design/editor/CropOverlay.js +199 -0
  238. package/lib/features/design/editor/CropOverlay.js.map +1 -0
  239. package/lib/features/design/editor/DesignCanvas.js +363 -0
  240. package/lib/features/design/editor/DesignCanvas.js.map +1 -0
  241. package/lib/features/design/editor/ExportSheet.js +123 -0
  242. package/lib/features/design/editor/ExportSheet.js.map +1 -0
  243. package/lib/features/design/editor/FindReplacePanel.js +93 -0
  244. package/lib/features/design/editor/FindReplacePanel.js.map +1 -0
  245. package/lib/features/design/editor/ImageTools.js +188 -0
  246. package/lib/features/design/editor/ImageTools.js.map +1 -0
  247. package/lib/features/design/editor/LayerTools.js +485 -0
  248. package/lib/features/design/editor/LayerTools.js.map +1 -0
  249. package/lib/features/design/editor/PageStrip.js +203 -0
  250. package/lib/features/design/editor/PageStrip.js.map +1 -0
  251. package/lib/features/design/editor/Slideshow.js +97 -0
  252. package/lib/features/design/editor/Slideshow.js.map +1 -0
  253. package/lib/features/design/editor/ToolPanels.js +695 -0
  254. package/lib/features/design/editor/ToolPanels.js.map +1 -0
  255. package/lib/features/design/editor/controls.js +630 -0
  256. package/lib/features/design/editor/controls.js.map +1 -0
  257. package/lib/features/design/editor/useDesignSave.js +91 -0
  258. package/lib/features/design/editor/useDesignSave.js.map +1 -0
  259. package/lib/features/design/export/exportDesign.js +170 -0
  260. package/lib/features/design/export/exportDesign.js.map +1 -0
  261. package/lib/features/design/export/pdf.js +143 -0
  262. package/lib/features/design/export/pdf.js.map +1 -0
  263. package/lib/features/design/home/DesignHome.js +688 -0
  264. package/lib/features/design/home/DesignHome.js.map +1 -0
  265. package/lib/features/design/home/studioHome.js +61 -0
  266. package/lib/features/design/home/studioHome.js.map +1 -0
  267. package/lib/features/design/pickDesignImage.js +60 -0
  268. package/lib/features/design/pickDesignImage.js.map +1 -0
  269. package/lib/features/design/render/DesignPageView.js +69 -0
  270. package/lib/features/design/render/DesignPageView.js.map +1 -0
  271. package/lib/features/design/render/PageCapture.js +288 -0
  272. package/lib/features/design/render/PageCapture.js.map +1 -0
  273. package/lib/features/design/render/TextMeasure.js +115 -0
  274. package/lib/features/design/render/TextMeasure.js.map +1 -0
  275. package/lib/features/design/render/fontRegistry.js +110 -0
  276. package/lib/features/design/render/fontRegistry.js.map +1 -0
  277. package/lib/features/design/render/layers.js +392 -0
  278. package/lib/features/design/render/layers.js.map +1 -0
  279. package/lib/features/design/render/svg.js +35 -0
  280. package/lib/features/design/render/svg.js.map +1 -0
  281. package/lib/features/design/render/svgParts.js +435 -0
  282. package/lib/features/design/render/svgParts.js.map +1 -0
  283. package/lib/features/design/surface/BoardScreen.js +529 -0
  284. package/lib/features/design/surface/BoardScreen.js.map +1 -0
  285. package/lib/features/design/surface/CompareView.js +138 -0
  286. package/lib/features/design/surface/CompareView.js.map +1 -0
  287. package/lib/features/design/surface/CreationScreen.js +294 -0
  288. package/lib/features/design/surface/CreationScreen.js.map +1 -0
  289. package/lib/features/design/surface/DesignAgentChatPane.js +444 -0
  290. package/lib/features/design/surface/DesignAgentChatPane.js.map +1 -0
  291. package/lib/features/design/surface/DesignBoards.js +441 -0
  292. package/lib/features/design/surface/DesignBoards.js.map +1 -0
  293. package/lib/features/design/surface/DesignPreview.js +159 -0
  294. package/lib/features/design/surface/DesignPreview.js.map +1 -0
  295. package/lib/features/design/surface/DesignSurfaceExperience.js +80 -0
  296. package/lib/features/design/surface/DesignSurfaceExperience.js.map +1 -0
  297. package/lib/features/design/surface/FullScreenPreview.js +59 -0
  298. package/lib/features/design/surface/FullScreenPreview.js.map +1 -0
  299. package/lib/features/design/surface/NewSystemDialog.js +122 -0
  300. package/lib/features/design/surface/NewSystemDialog.js.map +1 -0
  301. package/lib/features/design/surface/PickerSheet.js +175 -0
  302. package/lib/features/design/surface/PickerSheet.js.map +1 -0
  303. package/lib/features/design/surface/TemplatesGallery.js +156 -0
  304. package/lib/features/design/surface/TemplatesGallery.js.map +1 -0
  305. package/lib/features/design/surface/WetPaint.js +140 -0
  306. package/lib/features/design/surface/WetPaint.js.map +1 -0
  307. package/lib/features/design/surface/agentTurn.js +229 -0
  308. package/lib/features/design/surface/agentTurn.js.map +1 -0
  309. package/lib/features/design/surface/designBoard.js +218 -0
  310. package/lib/features/design/surface/designBoard.js.map +1 -0
  311. package/lib/features/design/surface/designChannel.js +186 -0
  312. package/lib/features/design/surface/designChannel.js.map +1 -0
  313. package/lib/features/design/surface/designChat.js +141 -0
  314. package/lib/features/design/surface/designChat.js.map +1 -0
  315. package/lib/features/design/surface/designConnector.js +266 -0
  316. package/lib/features/design/surface/designConnector.js.map +1 -0
  317. package/lib/features/design/surface/designDocument.js +40 -0
  318. package/lib/features/design/surface/designDocument.js.map +1 -0
  319. package/lib/features/design/surface/designExport.js +55 -0
  320. package/lib/features/design/surface/designExport.js.map +1 -0
  321. package/lib/features/design/surface/designLinks.js +64 -0
  322. package/lib/features/design/surface/designLinks.js.map +1 -0
  323. package/lib/features/design/surface/designPalette.js +24 -0
  324. package/lib/features/design/surface/designPalette.js.map +1 -0
  325. package/lib/features/design/surface/designRun.js +161 -0
  326. package/lib/features/design/surface/designRun.js.map +1 -0
  327. package/lib/features/design/surface/designTheme.js +119 -0
  328. package/lib/features/design/surface/designTheme.js.map +1 -0
  329. package/lib/features/design/surface/execStream.js +206 -0
  330. package/lib/features/design/surface/execStream.js.map +1 -0
  331. package/lib/features/design/surface/metaball.js +48 -0
  332. package/lib/features/design/surface/metaball.js.map +1 -0
  333. package/lib/features/design/surface/pickReferenceFiles.js +35 -0
  334. package/lib/features/design/surface/pickReferenceFiles.js.map +1 -0
  335. package/lib/features/design/surface/useDesignSurface.js +379 -0
  336. package/lib/features/design/surface/useDesignSurface.js.map +1 -0
  337. package/lib/features/docs/DocBlockRow.js +336 -0
  338. package/lib/features/docs/DocBlockRow.js.map +1 -0
  339. package/lib/features/docs/DocsEditorExperience.js +949 -0
  340. package/lib/features/docs/DocsEditorExperience.js.map +1 -0
  341. package/lib/features/docs/DocsToolbar.js +247 -0
  342. package/lib/features/docs/DocsToolbar.js.map +1 -0
  343. package/lib/features/docs/blocks.js +560 -0
  344. package/lib/features/docs/blocks.js.map +1 -0
  345. package/lib/features/docs/docArtifacts.js +129 -0
  346. package/lib/features/docs/docArtifacts.js.map +1 -0
  347. package/lib/features/docs/docEdits.js +201 -0
  348. package/lib/features/docs/docEdits.js.map +1 -0
  349. package/lib/features/docs/docExport.js +235 -0
  350. package/lib/features/docs/docExport.js.map +1 -0
  351. package/lib/features/docs/docShare.js +62 -0
  352. package/lib/features/docs/docShare.js.map +1 -0
  353. package/lib/features/links/openInApp.js +38 -2
  354. package/lib/features/links/openInApp.js.map +1 -1
  355. package/lib/routes.json +54 -0
  356. package/lib/screens/DesignNative/index.js +35 -0
  357. package/lib/screens/DesignNative/index.js.map +1 -0
  358. package/package.json +4 -4
  359. package/lib/features/design/exportDesign.js +0 -133
  360. package/lib/features/design/exportDesign.js.map +0 -1
@@ -0,0 +1,366 @@
1
+ const SHAPE_CATEGORIES = [{
2
+ id: "basic",
3
+ label: "Basic shapes"
4
+ }, {
5
+ id: "polygon",
6
+ label: "Polygons"
7
+ }, {
8
+ id: "star",
9
+ label: "Stars"
10
+ }, {
11
+ id: "arrow",
12
+ label: "Arrows"
13
+ }, {
14
+ id: "flow",
15
+ label: "Flowchart shapes"
16
+ }, {
17
+ id: "bubble",
18
+ label: "Speech bubbles"
19
+ }, {
20
+ id: "cloud",
21
+ label: "Clouds"
22
+ }];
23
+ const f = (n) => Number(n.toFixed(4));
24
+ const polyD = (pts) => `M${pts.map(([x, y]) => `${f(x)} ${f(y)}`).join("L")}Z`;
25
+ function ngonD(n, rot = -Math.PI / 2) {
26
+ return polyD(Array.from({
27
+ length: n
28
+ }, (_, i) => {
29
+ const a = rot + i * 2 * Math.PI / n;
30
+ return [0.5 + Math.cos(a) * 0.5, 0.5 + Math.sin(a) * 0.5];
31
+ }));
32
+ }
33
+ function starD(points, inner) {
34
+ const step = Math.PI / points;
35
+ return polyD(Array.from({
36
+ length: points * 2
37
+ }, (_, i) => {
38
+ const r = i % 2 === 0 ? 0.5 : 0.5 * inner;
39
+ const a = -Math.PI / 2 + i * step;
40
+ return [0.5 + Math.cos(a) * r, 0.5 + Math.sin(a) * r];
41
+ }));
42
+ }
43
+ const circleD = (cx, cy, r) => `M${f(cx - r)} ${f(cy)}A${f(r)} ${f(r)} 0 1 1 ${f(cx + r)} ${f(cy)}A${f(r)} ${f(r)} 0 1 1 ${f(cx - r)} ${f(cy)}Z`;
44
+ const boxD = (x, y, w, h) => `M${f(x)} ${f(y)}H${f(x + w)}V${f(y + h)}H${f(x)}Z`;
45
+ const SHAPES = {
46
+ // ── Basic ────────────────────────────────────────────────────────────────
47
+ rect: {
48
+ label: "Square",
49
+ cat: "basic",
50
+ d: "M0 0H1V1H0Z"
51
+ },
52
+ ellipse: {
53
+ label: "Circle",
54
+ cat: "basic",
55
+ d: "M0 .5A.5 .5 0 1 1 1 .5A.5 .5 0 1 1 0 .5Z"
56
+ },
57
+ triangle: {
58
+ label: "Triangle",
59
+ cat: "basic",
60
+ d: "M.5 0L1 1H0Z"
61
+ },
62
+ "triangle-right": {
63
+ label: "Right triangle",
64
+ cat: "basic",
65
+ d: "M0 0V1H1Z"
66
+ },
67
+ "triangle-down": {
68
+ label: "Triangle down",
69
+ cat: "basic",
70
+ d: "M0 0H1L.5 1Z"
71
+ },
72
+ diamond: {
73
+ label: "Diamond",
74
+ cat: "basic",
75
+ d: "M.5 0L1 .5L.5 1L0 .5Z"
76
+ },
77
+ parallelogram: {
78
+ label: "Parallelogram",
79
+ cat: "basic",
80
+ d: "M.25 0H1L.75 1H0Z"
81
+ },
82
+ trapezoid: {
83
+ label: "Trapezoid",
84
+ cat: "basic",
85
+ d: "M.25 0H.75L1 1H0Z"
86
+ },
87
+ pill: {
88
+ label: "Pill",
89
+ cat: "basic",
90
+ d: "M.25 0H.75A.25 .5 0 0 1 .75 1H.25A.25 .5 0 0 1 .25 0Z"
91
+ },
92
+ semicircle: {
93
+ label: "Semicircle",
94
+ cat: "basic",
95
+ d: "M0 1A.5 .5 0 0 1 1 1Z"
96
+ },
97
+ arch: {
98
+ label: "Arch",
99
+ cat: "basic",
100
+ d: "M0 1V.5A.5 .5 0 0 1 1 .5V1Z"
101
+ },
102
+ "quarter-circle": {
103
+ label: "Quarter circle",
104
+ cat: "basic",
105
+ d: "M0 1V0A1 1 0 0 1 1 1Z"
106
+ },
107
+ cross: {
108
+ label: "Cross",
109
+ cat: "basic",
110
+ d: "M.35 0H.65V.35H1V.65H.65V1H.35V.65H0V.35H.35Z"
111
+ },
112
+ heart: {
113
+ label: "Heart",
114
+ cat: "basic",
115
+ d: "M.5 .96C.13 .68 0 .46 0 .29C0 .12 .13 .02 .28 .02C.38 .02 .45 .07 .5 .15C.55 .07 .62 .02 .72 .02C.87 .02 1 .12 1 .29C1 .46 .87 .68 .5 .96Z"
116
+ },
117
+ line: {
118
+ label: "Line",
119
+ cat: "basic",
120
+ d: "M0 .45H1V.55H0Z",
121
+ stroke: true
122
+ },
123
+ arrow: {
124
+ label: "Line arrow",
125
+ cat: "basic",
126
+ d: "M0 .42H.62V.24L1 .5L.62 .76V.58H0Z",
127
+ stroke: true
128
+ },
129
+ // ── Polygons ─────────────────────────────────────────────────────────────
130
+ pentagon: {
131
+ label: "Pentagon",
132
+ cat: "polygon",
133
+ d: ngonD(5)
134
+ },
135
+ hexagon: {
136
+ label: "Hexagon",
137
+ cat: "polygon",
138
+ d: ngonD(6)
139
+ },
140
+ "hexagon-flat": {
141
+ label: "Hexagon (flat top)",
142
+ cat: "polygon",
143
+ d: ngonD(6, 0)
144
+ },
145
+ heptagon: {
146
+ label: "Heptagon",
147
+ cat: "polygon",
148
+ d: ngonD(7)
149
+ },
150
+ octagon: {
151
+ label: "Octagon",
152
+ cat: "polygon",
153
+ d: ngonD(8)
154
+ },
155
+ nonagon: {
156
+ label: "Nonagon",
157
+ cat: "polygon",
158
+ d: ngonD(9)
159
+ },
160
+ decagon: {
161
+ label: "Decagon",
162
+ cat: "polygon",
163
+ d: ngonD(10)
164
+ },
165
+ // ── Stars ────────────────────────────────────────────────────────────────
166
+ star: {
167
+ label: "Star",
168
+ cat: "star",
169
+ d: starD(5, 0.44)
170
+ },
171
+ "star-4": {
172
+ label: "4-point star",
173
+ cat: "star",
174
+ d: starD(4, 0.38)
175
+ },
176
+ "star-6": {
177
+ label: "6-point star",
178
+ cat: "star",
179
+ d: starD(6, 0.5)
180
+ },
181
+ "star-8": {
182
+ label: "8-point star",
183
+ cat: "star",
184
+ d: starD(8, 0.55)
185
+ },
186
+ "star-12": {
187
+ label: "12-point star",
188
+ cat: "star",
189
+ d: starD(12, 0.72)
190
+ },
191
+ sparkle: {
192
+ label: "Sparkle",
193
+ cat: "star",
194
+ d: starD(4, 0.16)
195
+ },
196
+ burst: {
197
+ label: "Burst",
198
+ cat: "star",
199
+ d: starD(16, 0.78)
200
+ },
201
+ // ── Arrows ───────────────────────────────────────────────────────────────
202
+ "arrow-right": {
203
+ label: "Arrow right",
204
+ cat: "arrow",
205
+ d: "M0 .3H.6V0L1 .5L.6 1V.7H0Z"
206
+ },
207
+ "arrow-left": {
208
+ label: "Arrow left",
209
+ cat: "arrow",
210
+ d: "M1 .3H.4V0L0 .5L.4 1V.7H1Z"
211
+ },
212
+ "arrow-up": {
213
+ label: "Arrow up",
214
+ cat: "arrow",
215
+ d: "M.3 1V.4H0L.5 0L1 .4H.7V1Z"
216
+ },
217
+ "arrow-down": {
218
+ label: "Arrow down",
219
+ cat: "arrow",
220
+ d: "M.3 0V.6H0L.5 1L1 .6H.7V0Z"
221
+ },
222
+ "arrow-double-h": {
223
+ label: "Double arrow",
224
+ cat: "arrow",
225
+ d: "M0 .5L.25 0V.3H.75V0L1 .5L.75 1V.7H.25V1Z"
226
+ },
227
+ "arrow-double-v": {
228
+ label: "Double arrow up",
229
+ cat: "arrow",
230
+ d: "M.5 0L1 .25H.7V.75H1L.5 1L0 .75H.3V.25H0Z"
231
+ },
232
+ chevron: {
233
+ label: "Chevron",
234
+ cat: "arrow",
235
+ d: "M0 0H.5L1 .5L.5 1H0L.5 .5Z"
236
+ },
237
+ "arrow-banner": {
238
+ label: "Banner arrow",
239
+ cat: "arrow",
240
+ d: "M0 0H.7L1 .5L.7 1H0Z"
241
+ },
242
+ "arrow-bent": {
243
+ label: "Bent arrow",
244
+ cat: "arrow",
245
+ d: "M0 .72H.55V.42H.38L.7 0L1 .42H.85V1H0Z"
246
+ },
247
+ // ── Flowchart ────────────────────────────────────────────────────────────
248
+ "flow-process": {
249
+ label: "Process",
250
+ cat: "flow",
251
+ d: "M0 0H1V1H0Z"
252
+ },
253
+ "flow-terminator": {
254
+ label: "Terminator",
255
+ cat: "flow",
256
+ d: "M.2 0H.8A.2 .5 0 0 1 .8 1H.2A.2 .5 0 0 1 .2 0Z"
257
+ },
258
+ "flow-decision": {
259
+ label: "Decision",
260
+ cat: "flow",
261
+ d: "M.5 0L1 .5L.5 1L0 .5Z"
262
+ },
263
+ "flow-data": {
264
+ label: "Data",
265
+ cat: "flow",
266
+ d: "M.25 0H1L.75 1H0Z"
267
+ },
268
+ "flow-document": {
269
+ label: "Document",
270
+ cat: "flow",
271
+ d: "M0 0H1V.82C.75 1 .25 .64 0 .82Z"
272
+ },
273
+ "flow-database": {
274
+ label: "Database",
275
+ cat: "flow",
276
+ d: "M0 .12C0 .05 .22 0 .5 0S1 .05 1 .12V.88C1 .95 .78 1 .5 1S0 .95 0 .88Z"
277
+ },
278
+ "flow-manual-input": {
279
+ label: "Manual input",
280
+ cat: "flow",
281
+ d: "M0 .22L1 0V1H0Z"
282
+ },
283
+ "flow-preparation": {
284
+ label: "Preparation",
285
+ cat: "flow",
286
+ d: "M.2 0H.8L1 .5L.8 1H.2L0 .5Z"
287
+ },
288
+ "flow-off-page": {
289
+ label: "Off-page",
290
+ cat: "flow",
291
+ d: "M0 0H1V.7L.5 1L0 .7Z"
292
+ },
293
+ "flow-display": {
294
+ label: "Display",
295
+ cat: "flow",
296
+ d: "M.15 0H.85L1 .5L.85 1H.15C.05 .8 .05 .2 .15 0Z"
297
+ },
298
+ // ── Speech bubbles ───────────────────────────────────────────────────────
299
+ "bubble-rect": {
300
+ label: "Square bubble",
301
+ cat: "bubble",
302
+ d: "M0 0H1V.75H.35L.15 1V.75H0Z"
303
+ },
304
+ "bubble-round": {
305
+ label: "Rounded bubble",
306
+ cat: "bubble",
307
+ d: "M.1 0H.9A.1 .12 0 0 1 1 .12V.62A.1 .12 0 0 1 .9 .74H.4L.16 1L.24 .74H.1A.1 .12 0 0 1 0 .62V.12A.1 .12 0 0 1 .1 0Z"
308
+ },
309
+ "bubble-oval": {
310
+ label: "Oval bubble",
311
+ cat: "bubble",
312
+ d: "M.5 0C.78 0 1 .17 1 .37C1 .58 .78 .74 .5 .74H.42L.16 1L.24 .73C.09 .67 0 .53 0 .37C0 .17 .22 0 .5 0Z"
313
+ },
314
+ "bubble-thought": {
315
+ label: "Thought bubble",
316
+ cat: "bubble",
317
+ d: circleD(0.3, 0.3, 0.2) + circleD(0.55, 0.22, 0.22) + circleD(0.75, 0.34, 0.18) + circleD(0.5, 0.42, 0.2) + circleD(0.22, 0.72, 0.09) + circleD(0.1, 0.9, 0.06)
318
+ },
319
+ "bubble-burst": {
320
+ label: "Burst bubble",
321
+ cat: "bubble",
322
+ d: starD(12, 0.74)
323
+ },
324
+ // ── Clouds ───────────────────────────────────────────────────────────────
325
+ cloud: {
326
+ label: "Cloud",
327
+ cat: "cloud",
328
+ d: circleD(0.24, 0.62, 0.18) + circleD(0.42, 0.44, 0.24) + circleD(0.66, 0.46, 0.22) + circleD(0.82, 0.64, 0.16) + boxD(0.24, 0.6, 0.58, 0.2)
329
+ },
330
+ "cloud-round": {
331
+ label: "Puffy cloud",
332
+ cat: "cloud",
333
+ d: circleD(0.28, 0.6, 0.22) + circleD(0.5, 0.38, 0.28) + circleD(0.75, 0.58, 0.24) + circleD(0.5, 0.68, 0.26)
334
+ },
335
+ "cloud-wide": {
336
+ label: "Wide cloud",
337
+ cat: "cloud",
338
+ d: circleD(0.15, 0.65, 0.15) + circleD(0.35, 0.5, 0.22) + circleD(0.6, 0.48, 0.24) + circleD(0.85, 0.66, 0.14) + boxD(0.15, 0.62, 0.7, 0.18)
339
+ }
340
+ };
341
+ const SHAPE_KINDS = Object.keys(SHAPES);
342
+ function shapesInCategory(cat) {
343
+ return SHAPE_KINDS.filter((k) => SHAPES[k].cat === cat);
344
+ }
345
+ function isStrokeShape(shape) {
346
+ var _a;
347
+ return ((_a = SHAPES[shape]) == null ? void 0 : _a.stroke) === true;
348
+ }
349
+ function shapeSpec(shape) {
350
+ var _a;
351
+ return (_a = SHAPES[shape]) != null ? _a : SHAPES.rect;
352
+ }
353
+ function gradientLine(x, y, w, h, angle) {
354
+ const t = angle * Math.PI / 180;
355
+ const dx = Math.sin(t);
356
+ const dy = -Math.cos(t);
357
+ const half = Math.abs(w / 2 * dx) + Math.abs(h / 2 * dy);
358
+ const cx = x + w / 2;
359
+ const cy = y + h / 2;
360
+ return [cx - dx * half, cy - dy * half, cx + dx * half, cy + dy * half];
361
+ }
362
+ function roundRectD(w, h, radiusFrac) {
363
+ const r = Math.max(0, Math.min(Math.min(w, h) / 2, Math.min(w, h) * Math.min(0.5, Math.max(0, radiusFrac))));
364
+ if (r === 0) return `M0 0H${f(w)}V${f(h)}H0Z`;
365
+ return `M${f(r)} 0H${f(w - r)}A${f(r)} ${f(r)} 0 0 1 ${f(w)} ${f(r)}V${f(h - r)}A${f(r)} ${f(r)} 0 0 1 ${f(w - r)} ${f(h)}H${f(r)}A${f(r)} ${f(r)} 0 0 1 0 ${f(h - r)}V${f(r)}A${f(r)} ${f(r)} 0 0 1 ${f(r)} 0Z`;
366
+ }export{SHAPES,SHAPE_CATEGORIES,SHAPE_KINDS,gradientLine,isStrokeShape,roundRectD,shapeSpec,shapesInCategory};//# sourceMappingURL=shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapes.js","sources":["../../../../src/features/design/doc/shapes.ts"],"sourcesContent":["/**\n * Shape geometry - native twin of canvas-surface `editors/shared/shapes.ts`.\n *\n * The catalog (keys, labels, families, unit-box outlines) is copied verbatim:\n * saved designs and catalog templates reference the keys, and the outlines are\n * what the web draws, so a heart here is the web's heart. The Canvas2D drawing\n * half stays on the web; native draws the same `d` through react-native-svg\n * (render/ShapeLayerView.tsx).\n *\n * Pure: runs under jest as-is.\n */\n\n// ============= Shape Catalog =============\n\n/** Shape families, in the order the Elements panel lists them. */\nexport const SHAPE_CATEGORIES = [\n { id: 'basic', label: 'Basic shapes' },\n { id: 'polygon', label: 'Polygons' },\n { id: 'star', label: 'Stars' },\n { id: 'arrow', label: 'Arrows' },\n { id: 'flow', label: 'Flowchart shapes' },\n { id: 'bubble', label: 'Speech bubbles' },\n { id: 'cloud', label: 'Clouds' },\n] as const;\n\nexport type ShapeCategory = (typeof SHAPE_CATEGORIES)[number]['id'];\n\nexport interface ShapeSpec {\n label: string;\n cat: ShapeCategory;\n /** Outline in a 0..1 unit box, scaled into the layer's box at draw time. */\n d: string;\n /** Drawn as a stroked run along the box's long axis instead of a filled path. */\n stroke?: true;\n}\n\nconst f = (n: number) => Number(n.toFixed(4));\n\nconst polyD = (pts: [number, number][]) => `M${pts.map(([x, y]) => `${f(x)} ${f(y)}`).join('L')}Z`;\n\n/** Regular n-gon inscribed in the unit box; `rot` turns it (radians, 0 = flat-left vertex). */\nfunction ngonD(n: number, rot = -Math.PI / 2): string {\n return polyD(\n Array.from({ length: n }, (_, i) => {\n const a = rot + (i * 2 * Math.PI) / n;\n return [0.5 + Math.cos(a) * 0.5, 0.5 + Math.sin(a) * 0.5] as [number, number];\n }),\n );\n}\n\n/** `points`-pointed star; `inner` is the valley radius as a fraction of the outer. */\nfunction starD(points: number, inner: number): string {\n const step = Math.PI / points;\n return polyD(\n Array.from({ length: points * 2 }, (_, i) => {\n const r = i % 2 === 0 ? 0.5 : 0.5 * inner;\n const a = -Math.PI / 2 + i * step;\n return [0.5 + Math.cos(a) * r, 0.5 + Math.sin(a) * r] as [number, number];\n }),\n );\n}\n\n/** A full circle as one subpath. Overlapping circles union under nonzero fill — how the clouds are built. */\nconst circleD = (cx: number, cy: number, r: number) =>\n `M${f(cx - r)} ${f(cy)}A${f(r)} ${f(r)} 0 1 1 ${f(cx + r)} ${f(cy)}A${f(r)} ${f(r)} 0 1 1 ${f(cx - r)} ${f(cy)}Z`;\n\nconst boxD = (x: number, y: number, w: number, h: number) => `M${f(x)} ${f(y)}H${f(x + w)}V${f(y + h)}H${f(x)}Z`;\n\n/**\n * Every shape the Elements panel offers, keyed by the value persisted on a layer.\n * The first nine keys are the original set and must keep their names — saved decks\n * and `carouselRpc` payloads reference them.\n */\nexport const SHAPES = {\n // ── Basic ────────────────────────────────────────────────────────────────\n rect: { label: 'Square', cat: 'basic', d: 'M0 0H1V1H0Z' },\n ellipse: { label: 'Circle', cat: 'basic', d: 'M0 .5A.5 .5 0 1 1 1 .5A.5 .5 0 1 1 0 .5Z' },\n triangle: { label: 'Triangle', cat: 'basic', d: 'M.5 0L1 1H0Z' },\n 'triangle-right': { label: 'Right triangle', cat: 'basic', d: 'M0 0V1H1Z' },\n 'triangle-down': { label: 'Triangle down', cat: 'basic', d: 'M0 0H1L.5 1Z' },\n diamond: { label: 'Diamond', cat: 'basic', d: 'M.5 0L1 .5L.5 1L0 .5Z' },\n parallelogram: { label: 'Parallelogram', cat: 'basic', d: 'M.25 0H1L.75 1H0Z' },\n trapezoid: { label: 'Trapezoid', cat: 'basic', d: 'M.25 0H.75L1 1H0Z' },\n pill: { label: 'Pill', cat: 'basic', d: 'M.25 0H.75A.25 .5 0 0 1 .75 1H.25A.25 .5 0 0 1 .25 0Z' },\n semicircle: { label: 'Semicircle', cat: 'basic', d: 'M0 1A.5 .5 0 0 1 1 1Z' },\n arch: { label: 'Arch', cat: 'basic', d: 'M0 1V.5A.5 .5 0 0 1 1 .5V1Z' },\n 'quarter-circle': { label: 'Quarter circle', cat: 'basic', d: 'M0 1V0A1 1 0 0 1 1 1Z' },\n cross: { label: 'Cross', cat: 'basic', d: 'M.35 0H.65V.35H1V.65H.65V1H.35V.65H0V.35H.35Z' },\n heart: {\n label: 'Heart',\n cat: 'basic',\n d: 'M.5 .96C.13 .68 0 .46 0 .29C0 .12 .13 .02 .28 .02C.38 .02 .45 .07 .5 .15C.55 .07 .62 .02 .72 .02C.87 .02 1 .12 1 .29C1 .46 .87 .68 .5 .96Z',\n },\n line: { label: 'Line', cat: 'basic', d: 'M0 .45H1V.55H0Z', stroke: true },\n arrow: { label: 'Line arrow', cat: 'basic', d: 'M0 .42H.62V.24L1 .5L.62 .76V.58H0Z', stroke: true },\n\n // ── Polygons ─────────────────────────────────────────────────────────────\n pentagon: { label: 'Pentagon', cat: 'polygon', d: ngonD(5) },\n hexagon: { label: 'Hexagon', cat: 'polygon', d: ngonD(6) },\n 'hexagon-flat': { label: 'Hexagon (flat top)', cat: 'polygon', d: ngonD(6, 0) },\n heptagon: { label: 'Heptagon', cat: 'polygon', d: ngonD(7) },\n octagon: { label: 'Octagon', cat: 'polygon', d: ngonD(8) },\n nonagon: { label: 'Nonagon', cat: 'polygon', d: ngonD(9) },\n decagon: { label: 'Decagon', cat: 'polygon', d: ngonD(10) },\n\n // ── Stars ────────────────────────────────────────────────────────────────\n star: { label: 'Star', cat: 'star', d: starD(5, 0.44) },\n 'star-4': { label: '4-point star', cat: 'star', d: starD(4, 0.38) },\n 'star-6': { label: '6-point star', cat: 'star', d: starD(6, 0.5) },\n 'star-8': { label: '8-point star', cat: 'star', d: starD(8, 0.55) },\n 'star-12': { label: '12-point star', cat: 'star', d: starD(12, 0.72) },\n sparkle: { label: 'Sparkle', cat: 'star', d: starD(4, 0.16) },\n burst: { label: 'Burst', cat: 'star', d: starD(16, 0.78) },\n\n // ── Arrows ───────────────────────────────────────────────────────────────\n 'arrow-right': { label: 'Arrow right', cat: 'arrow', d: 'M0 .3H.6V0L1 .5L.6 1V.7H0Z' },\n 'arrow-left': { label: 'Arrow left', cat: 'arrow', d: 'M1 .3H.4V0L0 .5L.4 1V.7H1Z' },\n 'arrow-up': { label: 'Arrow up', cat: 'arrow', d: 'M.3 1V.4H0L.5 0L1 .4H.7V1Z' },\n 'arrow-down': { label: 'Arrow down', cat: 'arrow', d: 'M.3 0V.6H0L.5 1L1 .6H.7V0Z' },\n 'arrow-double-h': { label: 'Double arrow', cat: 'arrow', d: 'M0 .5L.25 0V.3H.75V0L1 .5L.75 1V.7H.25V1Z' },\n 'arrow-double-v': { label: 'Double arrow up', cat: 'arrow', d: 'M.5 0L1 .25H.7V.75H1L.5 1L0 .75H.3V.25H0Z' },\n chevron: { label: 'Chevron', cat: 'arrow', d: 'M0 0H.5L1 .5L.5 1H0L.5 .5Z' },\n 'arrow-banner': { label: 'Banner arrow', cat: 'arrow', d: 'M0 0H.7L1 .5L.7 1H0Z' },\n 'arrow-bent': { label: 'Bent arrow', cat: 'arrow', d: 'M0 .72H.55V.42H.38L.7 0L1 .42H.85V1H0Z' },\n\n // ── Flowchart ────────────────────────────────────────────────────────────\n 'flow-process': { label: 'Process', cat: 'flow', d: 'M0 0H1V1H0Z' },\n 'flow-terminator': { label: 'Terminator', cat: 'flow', d: 'M.2 0H.8A.2 .5 0 0 1 .8 1H.2A.2 .5 0 0 1 .2 0Z' },\n 'flow-decision': { label: 'Decision', cat: 'flow', d: 'M.5 0L1 .5L.5 1L0 .5Z' },\n 'flow-data': { label: 'Data', cat: 'flow', d: 'M.25 0H1L.75 1H0Z' },\n 'flow-document': { label: 'Document', cat: 'flow', d: 'M0 0H1V.82C.75 1 .25 .64 0 .82Z' },\n 'flow-database': {\n label: 'Database',\n cat: 'flow',\n d: 'M0 .12C0 .05 .22 0 .5 0S1 .05 1 .12V.88C1 .95 .78 1 .5 1S0 .95 0 .88Z',\n },\n 'flow-manual-input': { label: 'Manual input', cat: 'flow', d: 'M0 .22L1 0V1H0Z' },\n 'flow-preparation': { label: 'Preparation', cat: 'flow', d: 'M.2 0H.8L1 .5L.8 1H.2L0 .5Z' },\n 'flow-off-page': { label: 'Off-page', cat: 'flow', d: 'M0 0H1V.7L.5 1L0 .7Z' },\n 'flow-display': { label: 'Display', cat: 'flow', d: 'M.15 0H.85L1 .5L.85 1H.15C.05 .8 .05 .2 .15 0Z' },\n\n // ── Speech bubbles ───────────────────────────────────────────────────────\n 'bubble-rect': { label: 'Square bubble', cat: 'bubble', d: 'M0 0H1V.75H.35L.15 1V.75H0Z' },\n 'bubble-round': {\n label: 'Rounded bubble',\n cat: 'bubble',\n d: 'M.1 0H.9A.1 .12 0 0 1 1 .12V.62A.1 .12 0 0 1 .9 .74H.4L.16 1L.24 .74H.1A.1 .12 0 0 1 0 .62V.12A.1 .12 0 0 1 .1 0Z',\n },\n 'bubble-oval': {\n label: 'Oval bubble',\n cat: 'bubble',\n d: 'M.5 0C.78 0 1 .17 1 .37C1 .58 .78 .74 .5 .74H.42L.16 1L.24 .73C.09 .67 0 .53 0 .37C0 .17 .22 0 .5 0Z',\n },\n 'bubble-thought': {\n label: 'Thought bubble',\n cat: 'bubble',\n d:\n circleD(0.3, 0.3, 0.2) +\n circleD(0.55, 0.22, 0.22) +\n circleD(0.75, 0.34, 0.18) +\n circleD(0.5, 0.42, 0.2) +\n circleD(0.22, 0.72, 0.09) +\n circleD(0.1, 0.9, 0.06),\n },\n 'bubble-burst': { label: 'Burst bubble', cat: 'bubble', d: starD(12, 0.74) },\n\n // ── Clouds ───────────────────────────────────────────────────────────────\n cloud: {\n label: 'Cloud',\n cat: 'cloud',\n d:\n circleD(0.24, 0.62, 0.18) +\n circleD(0.42, 0.44, 0.24) +\n circleD(0.66, 0.46, 0.22) +\n circleD(0.82, 0.64, 0.16) +\n boxD(0.24, 0.6, 0.58, 0.2),\n },\n 'cloud-round': {\n label: 'Puffy cloud',\n cat: 'cloud',\n d: circleD(0.28, 0.6, 0.22) + circleD(0.5, 0.38, 0.28) + circleD(0.75, 0.58, 0.24) + circleD(0.5, 0.68, 0.26),\n },\n 'cloud-wide': {\n label: 'Wide cloud',\n cat: 'cloud',\n d:\n circleD(0.15, 0.65, 0.15) +\n circleD(0.35, 0.5, 0.22) +\n circleD(0.6, 0.48, 0.24) +\n circleD(0.85, 0.66, 0.14) +\n boxD(0.15, 0.62, 0.7, 0.18),\n },\n} satisfies Record<string, ShapeSpec>;\n\n/** Shape kinds available in the Elements panel - the value persisted on a layer. */\nexport type ShapeKind = keyof typeof SHAPES;\n\nexport const SHAPE_KINDS = Object.keys(SHAPES) as ShapeKind[];\n\n/** The kinds in one family, in catalog order. */\nexport function shapesInCategory(cat: ShapeCategory): ShapeKind[] {\n return SHAPE_KINDS.filter((k) => SHAPES[k].cat === cat);\n}\n\n/** Shapes whose geometry is a stroked line rather than a filled region. */\nexport function isStrokeShape(shape: ShapeKind): boolean {\n return (SHAPES[shape] as ShapeSpec | undefined)?.stroke === true;\n}\n\n/** Look up a shape, falling back to the square for a key this build does not know (a newer web's). */\nexport function shapeSpec(shape: string): ShapeSpec {\n return (SHAPES as Record<string, ShapeSpec>)[shape] ?? SHAPES.rect;\n}\n\n/** CSS's linear-gradient line for a box: through the centre, long enough that the corners hit 0 and 1. */\nexport function gradientLine(\n x: number,\n y: number,\n w: number,\n h: number,\n angle: number,\n): [number, number, number, number] {\n const t = (angle * Math.PI) / 180;\n const dx = Math.sin(t);\n const dy = -Math.cos(t);\n const half = Math.abs((w / 2) * dx) + Math.abs((h / 2) * dy);\n const cx = x + w / 2;\n const cy = y + h / 2;\n return [cx - dx * half, cy - dy * half, cx + dx * half, cy + dy * half];\n}\n\n/** A rounded rect as a path in px - the square, whose corner radius is a live control (`radiusFrac` of the short side). */\nexport function roundRectD(w: number, h: number, radiusFrac: number): string {\n const r = Math.max(0, Math.min(Math.min(w, h) / 2, Math.min(w, h) * Math.min(0.5, Math.max(0, radiusFrac))));\n if (r === 0) return `M0 0H${f(w)}V${f(h)}H0Z`;\n return (\n `M${f(r)} 0H${f(w - r)}A${f(r)} ${f(r)} 0 0 1 ${f(w)} ${f(r)}V${f(h - r)}` +\n `A${f(r)} ${f(r)} 0 0 1 ${f(w - r)} ${f(h)}H${f(r)}A${f(r)} ${f(r)} 0 0 1 0 ${f(h - r)}` +\n `V${f(r)}A${f(r)} ${f(r)} 0 0 1 ${f(r)} 0Z`\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ 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
+ const PRINT_CATEGORIES = ["flyer", "business-card", "brochure", "branding", "certificate", "worksheet", "proposal", "newsletter", "menu"];
21
+ function isPrintCategory(category) {
22
+ return PRINT_CATEGORIES.includes(category);
23
+ }
24
+ const PRINT_PLATFORM = {
25
+ flyer: "Print",
26
+ "business-card": "Print",
27
+ brochure: "Brochure",
28
+ branding: "Stationery",
29
+ certificate: "Certificate",
30
+ worksheet: "Worksheet",
31
+ proposal: "Proposal",
32
+ newsletter: "Newsletter",
33
+ menu: "Menu"
34
+ };
35
+ const PRINT_DPI = 150;
36
+ const MIN_PX = 40;
37
+ const MAX_PX = 5e3;
38
+ function toPx(value, unit) {
39
+ if (unit === "in") return Math.round(value * PRINT_DPI);
40
+ if (unit === "mm") return Math.round(value / 25.4 * PRINT_DPI);
41
+ return Math.round(value);
42
+ }
43
+ function fromPx(px, unit) {
44
+ return String(Math.round(px / PRINT_DPI * 100) / 100);
45
+ }
46
+ function inRange(px) {
47
+ return Number.isFinite(px) && px >= MIN_PX && px <= MAX_PX;
48
+ }
49
+ function social(id, label, width, height, platform, keywords) {
50
+ return {
51
+ id,
52
+ label,
53
+ category: "social",
54
+ width,
55
+ height,
56
+ kind: "deck",
57
+ platform,
58
+ keywords
59
+ };
60
+ }
61
+ function carousel(id, label, width, height, keywords) {
62
+ return {
63
+ id,
64
+ label,
65
+ category: "carousel",
66
+ width,
67
+ height,
68
+ kind: "deck",
69
+ platform: "Instagram",
70
+ keywords
71
+ };
72
+ }
73
+ function slides(id, label, width, height, keywords) {
74
+ return {
75
+ id,
76
+ label,
77
+ category: "presentation",
78
+ width,
79
+ height,
80
+ kind: "deck",
81
+ platform: "Presentation",
82
+ keywords
83
+ };
84
+ }
85
+ function logo(id, label, side, keywords) {
86
+ return {
87
+ id,
88
+ label,
89
+ category: "logo",
90
+ width: side,
91
+ height: side,
92
+ kind: "deck",
93
+ platform: "Logo",
94
+ keywords
95
+ };
96
+ }
97
+ function banner(id, label, width, height, keywords, platform = "Banner") {
98
+ return {
99
+ id,
100
+ label,
101
+ category: "banner",
102
+ width,
103
+ height,
104
+ kind: "deck",
105
+ platform,
106
+ keywords
107
+ };
108
+ }
109
+ const MM_PER_UNIT = {
110
+ px: 25.4 / PRINT_DPI,
111
+ in: 25.4,
112
+ mm: 1
113
+ };
114
+ function toMm(value, unit) {
115
+ return Math.round(value * MM_PER_UNIT[unit] * 100) / 100;
116
+ }
117
+ function print(id, label, w, h, unit, keywords, category = "flyer") {
118
+ return {
119
+ id,
120
+ label,
121
+ category,
122
+ width: toPx(w, unit),
123
+ height: toPx(h, unit),
124
+ kind: "flyer",
125
+ platform: PRINT_PLATFORM[category],
126
+ keywords,
127
+ trimMm: {
128
+ w: toMm(w, unit),
129
+ h: toMm(h, unit)
130
+ },
131
+ physical: `${w} \xD7 ${h} ${unit}`
132
+ };
133
+ }
134
+ function card(id, label, w, h, unit, keywords) {
135
+ return __spreadProps(__spreadValues({}, print(id, label, w, h, unit, `card visiting double-sided ${w}x${h} ${keywords}`, "business-card")), {
136
+ pageNames: ["Front", "Back"]
137
+ });
138
+ }
139
+ function brochure(id, label, w, h, unit, keywords) {
140
+ return __spreadProps(__spreadValues({}, print(id, label, w, h, unit, `leaflet pamphlet trifold tri-fold bifold folded ${keywords}`, "brochure")), {
141
+ pageNames: ["Outside", "Inside"]
142
+ });
143
+ }
144
+ const stationery = (id, label, w, h, unit, keywords) => print(id, label, w, h, unit, `branding stationery brand ${keywords}`, "branding");
145
+ const DESIGN_SIZES = [
146
+ social("ig-post-portrait", "Instagram Post (4:5)", 1080, 1350, "Instagram", "carousel portrait"),
147
+ social("ig-post-square", "Instagram Post (Square)", 1080, 1080, "Instagram", "square"),
148
+ social("ig-story", "Instagram Story", 1080, 1920, "Instagram", "reel whatsapp status tiktok vertical"),
149
+ social("fb-post", "Facebook Post", 1200, 630, "Facebook", "landscape"),
150
+ social("li-post", "LinkedIn Post", 1200, 627, "LinkedIn", "landscape"),
151
+ social("x-post", "X Post", 1600, 900, "X", "twitter landscape"),
152
+ social("yt-thumb", "YouTube Thumbnail", 1280, 720, "YouTube", "video cover"),
153
+ social("pin", "Pinterest Pin", 1e3, 1500, "Pinterest", "tall"),
154
+ carousel("carousel-portrait", "Carousel (4:5)", 1080, 1350, "instagram linkedin swipe swipeable portrait"),
155
+ carousel("carousel-square", "Carousel (Square)", 1080, 1080, "instagram linkedin swipe swipeable"),
156
+ carousel("carousel-3-4", "Carousel (3:4)", 1080, 1440, "instagram swipe swipeable portrait"),
157
+ carousel("carousel-tall", "Carousel (2:3)", 1080, 1620, "instagram swipe swipeable tall portrait"),
158
+ slides("slides-16-9", "Presentation (16:9)", 1920, 1080, "slides deck pitch widescreen"),
159
+ slides("slides-4-3", "Presentation (4:3)", 1024, 768, "slides deck pitch"),
160
+ slides("slides-mobile", "Presentation (Mobile)", 1080, 1920, "slides deck vertical"),
161
+ print("a4", "A4 Document", 210, 297, "mm", "paper document flyer"),
162
+ print("letter", "Flyer (US Letter)", 8.5, 11, "in", "paper document"),
163
+ print("a3", "A3 Poster", 297, 420, "mm", "paper"),
164
+ print("a2", "A2 Poster", 420, 594, "mm", "paper large"),
165
+ print("poster-18-24", "Poster", 18, 24, "in", "large"),
166
+ print("invitation", "Invitation", 5, 7, "in", "card wedding party"),
167
+ print("postcard", "Postcard", 6, 4, "in", "card landscape"),
168
+ card("business-card", "Business Card (US)", 3.5, 2, "in", "us standard"),
169
+ card("business-card-eu", "Business Card (EU)", 85, 55, "mm", "eu europe standard"),
170
+ card("business-card-90x55", "Business Card (AU / NZ)", 90, 55, "mm", "australia new zealand"),
171
+ card("business-card-90x50", "Business Card (Wide)", 90, 50, "mm", "wide slim"),
172
+ // The catalog's logos are 500 px squares (Canva's Logo), some 2000 px.
173
+ logo("logo", "Logo", 500, "brand mark icon emblem square"),
174
+ logo("logo-large", "Logo (Large)", 2e3, "brand mark icon emblem square high resolution"),
175
+ banner("banner-landscape", "Banner (Landscape)", 4800, 2400, "vinyl printed 72x36 6x3 ft event party wedding"),
176
+ banner("banner-portrait", "Banner (Portrait)", 2400, 4800, "vinyl printed 36x72 3x6 ft vertical"),
177
+ banner("linkedin-banner", "LinkedIn Banner", 1584, 396, "background cover header profile", "LinkedIn"),
178
+ banner("youtube-banner", "YouTube Banner", 2560, 1440, "channel art cover", "YouTube"),
179
+ banner("x-header", "X Header", 1500, 500, "twitter banner cover", "X"),
180
+ banner("facebook-cover", "Facebook Cover", 1640, 624, "banner header", "Facebook"),
181
+ banner("web-banner", "Web Banner", 728, 90, "ad display leaderboard", "Web"),
182
+ // Canva's brochures: Letter and A4 landscape, a few tabloid, each an Outside and an Inside.
183
+ brochure("brochure-letter", "Brochure (US Letter)", 11, 8.5, "in", "us landscape"),
184
+ brochure("brochure-a4", "Brochure (A4)", 297, 210, "mm", "a4 landscape"),
185
+ brochure("brochure-tabloid", "Brochure (Tabloid)", 17, 11, "in", "tabloid ledger large"),
186
+ stationery("letterhead-a4", "Letterhead (A4)", 210, 297, "mm", "letter paper a4 company"),
187
+ stationery("letterhead-letter", "Letterhead (US Letter)", 8.5, 11, "in", "letter paper us company"),
188
+ stationery("envelope-10", "Envelope (#10)", 9.5, 4.125, "in", "business us mail"),
189
+ stationery("envelope-dl", "Envelope (DL)", 220, 110, "mm", "business eu mail"),
190
+ // Canva's certificates are landscape Letter or A4; a diploma may stand.
191
+ print("certificate-letter", "Certificate (US Letter)", 11, 8.5, "in", "award diploma recognition", "certificate"),
192
+ print("certificate-a4", "Certificate (A4)", 297, 210, "mm", "award diploma recognition", "certificate"),
193
+ print("certificate-portrait", "Certificate (Portrait)", 210, 297, "mm", "award diploma a4 portrait", "certificate"),
194
+ print("worksheet-letter", "Worksheet (US Letter)", 8.5, 11, "in", "classroom lesson activity school", "worksheet"),
195
+ print("worksheet-a4", "Worksheet (A4)", 210, 297, "mm", "classroom lesson activity school", "worksheet"),
196
+ print("proposal-letter", "Proposal (US Letter)", 8.5, 11, "in", "business project quote document", "proposal"),
197
+ print("proposal-a4", "Proposal (A4)", 210, 297, "mm", "business project quote document", "proposal"),
198
+ print("newsletter-letter", "Newsletter (US Letter)", 8.5, 11, "in", "bulletin school church company", "newsletter"),
199
+ print("newsletter-a4", "Newsletter (A4)", 210, 297, "mm", "bulletin school church company", "newsletter"),
200
+ print("menu-letter", "Menu (US Letter)", 8.5, 11, "in", "restaurant cafe bar food drinks", "menu"),
201
+ print("menu-a4", "Menu (A4)", 210, 297, "mm", "restaurant cafe bar food drinks", "menu"),
202
+ print("menu-tabloid", "Menu (Tabloid)", 11, 17, "in", "restaurant cafe bar large", "menu"),
203
+ // Canva's infographic is a tall screen page, 800 x 2000 px.
204
+ {
205
+ id: "infographic",
206
+ label: "Infographic",
207
+ category: "infographic",
208
+ width: 800,
209
+ height: 2e3,
210
+ kind: "deck",
211
+ platform: "Infographic",
212
+ keywords: "timeline process statistics chart data how-to"
213
+ }
214
+ ];
215
+ const POPULAR_SIZE_IDS = ["ig-post-portrait", "ig-story", "slides-16-9", "a4", "ig-post-square", "yt-thumb", "a2", "fb-post"];
216
+ function sizesIn(category) {
217
+ return POPULAR_SIZE_IDS.map((id) => DESIGN_SIZES.find((s) => s.id === id));
218
+ }
219
+ function searchSizes(query) {
220
+ const q = query.trim().toLowerCase();
221
+ if (!q) return [];
222
+ return DESIGN_SIZES.filter((s) => `${s.label} ${s.category} ${s.platform} ${s.keywords}`.toLowerCase().includes(q));
223
+ }
224
+ const CONNECTOR_ASPECTS = [["1:1", 1], ["4:5", 4 / 5], ["2:3", 2 / 3], ["16:9", 16 / 9]];
225
+ function snapAspect(width, height) {
226
+ const r = Math.log(width / height);
227
+ let best = CONNECTOR_ASPECTS[0];
228
+ for (const a of CONNECTOR_ASPECTS) if (Math.abs(r - Math.log(a[1])) < Math.abs(r - Math.log(best[1]))) best = a;
229
+ return best[0];
230
+ }export{DESIGN_SIZES,MAX_PX,MIN_PX,POPULAR_SIZE_IDS,PRINT_DPI,PRINT_PLATFORM,fromPx,inRange,isPrintCategory,searchSizes,sizesIn,snapAspect,toMm,toPx};//# sourceMappingURL=sizes.js.map