@adminide-stack/yantra-mobile 12.0.128 → 12.0.129-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,93 @@
1
+ import {jsxs,jsx}from'react/jsx-runtime';import {useState,useMemo}from'react';import {View,TextInput,Text,StyleSheet}from'react-native';import {useCanvasTheme,themedStyles}from'../../canvas/canvasTheme.js';import {SPACE,TYPE,RADIUS}from'../../canvas/canvasUi.js';import {findMatches,replacementEdits,applyReplacements}from'../doc/findReplace.js';import {ToggleRow,ToolChip,PrimaryButton}from'./controls.js';var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ function FindReplacePanel({
21
+ doc,
22
+ onReveal,
23
+ onReplace
24
+ }) {
25
+ const theme = useCanvasTheme();
26
+ const styles = makeStyles(theme);
27
+ const [query, setQuery] = useState("");
28
+ const [replacement, setReplacement] = useState("");
29
+ const [matchCase, setMatchCase] = useState(false);
30
+ const [wholeWord, setWholeWord] = useState(false);
31
+ const [at, setAt] = useState(0);
32
+ const matches = useMemo(() => findMatches(doc, query, {
33
+ matchCase,
34
+ wholeWord
35
+ }), [doc, query, matchCase, wholeWord]);
36
+ const current = matches.length ? matches[Math.min(at, matches.length - 1)] : null;
37
+ const step = (dir) => {
38
+ if (!matches.length) return;
39
+ const next = (Math.min(at, matches.length - 1) + dir + matches.length) % matches.length;
40
+ setAt(next);
41
+ onReveal(matches[next].pageId, matches[next].layerId);
42
+ };
43
+ const replace = (all) => {
44
+ const picked = all ? matches : current ? [current] : [];
45
+ const edits = replacementEdits(doc, picked, replacement);
46
+ if (!edits.length) return;
47
+ const changed = all ? picked.filter((m) => edits.some((e) => e.layerId === m.layerId)).length : 1;
48
+ onReplace(applyReplacements(doc, edits), changed);
49
+ };
50
+ const pageNo = current ? doc.pages.findIndex((p) => p.id === current.pageId) + 1 : 0;
51
+ return /* @__PURE__ */ jsxs(View, { style: styles.stack, children: [
52
+ /* @__PURE__ */ jsx(TextInput, { value: query, onChangeText: (t) => {
53
+ setQuery(t);
54
+ setAt(0);
55
+ }, placeholder: "Find", placeholderTextColor: theme.edInk3, autoCorrect: false, autoCapitalize: "none", style: styles.input, returnKeyType: "search", onSubmitEditing: () => step(1) }),
56
+ /* @__PURE__ */ jsx(TextInput, { value: replacement, onChangeText: setReplacement, placeholder: "Replace with", placeholderTextColor: theme.edInk3, autoCorrect: false, style: styles.input }),
57
+ /* @__PURE__ */ jsx(ToggleRow, { label: "Match case", value: matchCase, onChange: setMatchCase }),
58
+ /* @__PURE__ */ jsx(ToggleRow, { label: "Whole words only", value: wholeWord, onChange: setWholeWord }),
59
+ /* @__PURE__ */ jsxs(View, { style: styles.row, children: [
60
+ /* @__PURE__ */ jsx(Text, { style: styles.count, children: !query ? "Type to search every page." : matches.length ? `${Math.min(at, matches.length - 1) + 1} of ${matches.length}, page ${pageNo}` : "No matches" }),
61
+ /* @__PURE__ */ jsx(ToolChip, { icon: "chevron-up", label: "Previous", disabled: !matches.length, onPress: () => step(-1) }),
62
+ /* @__PURE__ */ jsx(ToolChip, { icon: "chevron-down", label: "Next", disabled: !matches.length, onPress: () => step(1) })
63
+ ] }),
64
+ /* @__PURE__ */ jsxs(View, { style: styles.row, children: [
65
+ /* @__PURE__ */ jsx(View, { style: styles.flex, children: /* @__PURE__ */ jsx(PrimaryButton, { label: "Replace", disabled: !current, onPress: () => replace(false) }) }),
66
+ /* @__PURE__ */ jsx(View, { style: styles.flex, children: /* @__PURE__ */ jsx(PrimaryButton, { label: matches.length > 1 ? `Replace all ${matches.length}` : "Replace all", disabled: !matches.length, onPress: () => replace(true) }) })
67
+ ] })
68
+ ] });
69
+ }
70
+ const makeStyles = themedStyles((theme) => StyleSheet.create({
71
+ stack: {
72
+ gap: SPACE.sm
73
+ },
74
+ input: __spreadValues({
75
+ height: 42,
76
+ borderRadius: RADIUS.sm,
77
+ paddingHorizontal: SPACE.md,
78
+ backgroundColor: theme.edRaised,
79
+ color: theme.edInk
80
+ }, TYPE.body),
81
+ row: {
82
+ flexDirection: "row",
83
+ alignItems: "center",
84
+ gap: SPACE.sm
85
+ },
86
+ count: __spreadProps(__spreadValues({}, TYPE.caption), {
87
+ color: theme.edInk2,
88
+ flex: 1
89
+ }),
90
+ flex: {
91
+ flex: 1
92
+ }
93
+ }));export{FindReplacePanel};//# sourceMappingURL=FindReplacePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindReplacePanel.js","sources":["../../../../src/features/design/editor/FindReplacePanel.tsx"],"sourcesContent":["/**\n * Find and replace (web FindReplacePanel): every text layer of the design,\n * match case and whole words, step through the matches page by page, replace\n * one or all. Locked text is found but never changed.\n */\nimport React, { useMemo, useState } from 'react';\nimport { StyleSheet, Text, TextInput, View } from 'react-native';\nimport { themedStyles, useCanvasTheme, type CanvasPalette } from '../../canvas/canvasTheme';\nimport { RADIUS, SPACE, TYPE } from '../../canvas/canvasUi';\nimport { applyReplacements, findMatches, replacementEdits } from '../doc/findReplace';\nimport type { DesignDoc } from '../doc/types';\nimport { PrimaryButton, ToggleRow, ToolChip } from './controls';\n\nexport function FindReplacePanel({\n doc,\n onReveal,\n onReplace,\n}: {\n doc: DesignDoc;\n /** Show a match: open its page and select its layer. */\n onReveal: (pageId: string, layerId: string) => void;\n /** The design with replacements made, as one undo step. */\n onReplace: (next: DesignDoc, count: number) => void;\n}) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const [query, setQuery] = useState('');\n const [replacement, setReplacement] = useState('');\n const [matchCase, setMatchCase] = useState(false);\n const [wholeWord, setWholeWord] = useState(false);\n const [at, setAt] = useState(0);\n const matches = useMemo(\n () => findMatches(doc, query, { matchCase, wholeWord }),\n [doc, query, matchCase, wholeWord],\n );\n const current = matches.length ? matches[Math.min(at, matches.length - 1)] : null;\n const step = (dir: 1 | -1) => {\n if (!matches.length) return;\n const next = (Math.min(at, matches.length - 1) + dir + matches.length) % matches.length;\n setAt(next);\n onReveal(matches[next].pageId, matches[next].layerId);\n };\n const replace = (all: boolean) => {\n const picked = all ? matches : current ? [current] : [];\n const edits = replacementEdits(doc, picked, replacement);\n if (!edits.length) return;\n const changed = all ? picked.filter((m) => edits.some((e) => e.layerId === m.layerId)).length : 1;\n onReplace(applyReplacements(doc, edits), changed);\n };\n const pageNo = current ? doc.pages.findIndex((p) => p.id === current.pageId) + 1 : 0;\n return (\n <View style={styles.stack}>\n <TextInput\n value={query}\n onChangeText={(t) => {\n setQuery(t);\n setAt(0);\n }}\n placeholder=\"Find\"\n placeholderTextColor={theme.edInk3}\n autoCorrect={false}\n autoCapitalize=\"none\"\n style={styles.input}\n returnKeyType=\"search\"\n onSubmitEditing={() => step(1)}\n />\n <TextInput\n value={replacement}\n onChangeText={setReplacement}\n placeholder=\"Replace with\"\n placeholderTextColor={theme.edInk3}\n autoCorrect={false}\n style={styles.input}\n />\n <ToggleRow label=\"Match case\" value={matchCase} onChange={setMatchCase} />\n <ToggleRow label=\"Whole words only\" value={wholeWord} onChange={setWholeWord} />\n <View style={styles.row}>\n <Text style={styles.count}>\n {!query\n ? 'Type to search every page.'\n : matches.length\n ? `${Math.min(at, matches.length - 1) + 1} of ${matches.length}, page ${pageNo}`\n : 'No matches'}\n </Text>\n <ToolChip icon=\"chevron-up\" label=\"Previous\" disabled={!matches.length} onPress={() => step(-1)} />\n <ToolChip icon=\"chevron-down\" label=\"Next\" disabled={!matches.length} onPress={() => step(1)} />\n </View>\n <View style={styles.row}>\n <View style={styles.flex}>\n <PrimaryButton label=\"Replace\" disabled={!current} onPress={() => replace(false)} />\n </View>\n <View style={styles.flex}>\n <PrimaryButton\n label={matches.length > 1 ? `Replace all ${matches.length}` : 'Replace all'}\n disabled={!matches.length}\n onPress={() => replace(true)}\n />\n </View>\n </View>\n </View>\n );\n}\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n stack: { gap: SPACE.sm },\n input: {\n height: 42,\n borderRadius: RADIUS.sm,\n paddingHorizontal: SPACE.md,\n backgroundColor: theme.edRaised,\n color: theme.edInk,\n ...TYPE.body,\n },\n row: { flexDirection: 'row', alignItems: 'center', gap: SPACE.sm },\n count: { ...TYPE.caption, color: theme.edInk2, flex: 1 },\n flex: { flex: 1 },\n }),\n);\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {View,Text,StyleSheet}from'react-native';import {useCanvasTheme,themedStyles}from'../../canvas/canvasTheme.js';import {Pressable,RADIUS,SPACE,TYPE}from'../../canvas/canvasUi.js';import {frameOf,FRAME_SHAPES}from'../doc/frames.js';import {IMAGE_FILTERS,cleanAdjust,DEFAULT_SHADOW}from'../doc/imageAdjust.js';import {scalePath}from'../doc/pathScale.js';import {getSvg,svgUsable,SvgBoundary}from'../render/svg.js';import {ToggleRow,ValueSlider,ColorPicker,PrimaryButton}from'./controls.js';var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ function AdjustPanel({
21
+ layer,
22
+ patch
23
+ }) {
24
+ var _a, _b;
25
+ const theme = useCanvasTheme();
26
+ const styles = makeStyles(theme);
27
+ const a = (_a = layer.adjust) != null ? _a : {};
28
+ const set = (next, coalesce) => patch({
29
+ adjust: cleanAdjust(next)
30
+ }, coalesce);
31
+ const id = layer.id;
32
+ const pct = (v) => Math.round(((v != null ? v : 1) - 1) * 100);
33
+ return /* @__PURE__ */ jsxs(View, { style: styles.stack, children: [
34
+ /* @__PURE__ */ jsx(Text, { style: styles.heading, children: "Filters" }),
35
+ /* @__PURE__ */ jsxs(View, { style: styles.grid, children: [
36
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => set(__spreadProps(__spreadValues({}, a), {
37
+ filter: void 0
38
+ })), style: [styles.tile, !a.filter && {
39
+ borderColor: theme.edAccent
40
+ }], accessibilityRole: "button", accessibilityState: {
41
+ selected: !a.filter
42
+ }, children: /* @__PURE__ */ jsx(Text, { style: styles.tileLabel, children: "None" }) }),
43
+ IMAGE_FILTERS.map((f) => {
44
+ var _a2;
45
+ const on = ((_a2 = a.filter) == null ? void 0 : _a2.id) === f.id;
46
+ return /* @__PURE__ */ jsx(Pressable, { onPress: () => {
47
+ var _a3, _b2;
48
+ return set(__spreadProps(__spreadValues({}, a), {
49
+ filter: {
50
+ id: f.id,
51
+ intensity: (_b2 = (_a3 = a.filter) == null ? void 0 : _a3.intensity) != null ? _b2 : 1
52
+ }
53
+ }));
54
+ }, style: [styles.tile, on && {
55
+ borderColor: theme.edAccent
56
+ }], accessibilityRole: "button", accessibilityState: {
57
+ selected: on
58
+ }, children: /* @__PURE__ */ jsx(Text, { style: styles.tileLabel, children: f.label }) }, f.id);
59
+ })
60
+ ] }),
61
+ a.filter ? /* @__PURE__ */ jsx(ValueSlider, { label: "Intensity", value: Math.round(a.filter.intensity * 100), min: 0, max: 100, format: (v) => `${Math.round(v)}%`, onChange: (v) => set(__spreadProps(__spreadValues({}, a), {
62
+ filter: __spreadProps(__spreadValues({}, a.filter), {
63
+ intensity: v / 100
64
+ })
65
+ }), `adjust:${id}`) }) : null,
66
+ /* @__PURE__ */ jsx(Text, { style: styles.heading, children: "Adjust" }),
67
+ /* @__PURE__ */ jsx(ValueSlider, { label: "Brightness", value: pct(a.brightness), min: -50, max: 50, onChange: (v) => set(__spreadProps(__spreadValues({}, a), {
68
+ brightness: 1 + v / 100
69
+ }), `adjust:${id}`) }),
70
+ /* @__PURE__ */ jsx(ValueSlider, { label: "Contrast", value: pct(a.contrast), min: -50, max: 50, onChange: (v) => set(__spreadProps(__spreadValues({}, a), {
71
+ contrast: 1 + v / 100
72
+ }), `adjust:${id}`) }),
73
+ /* @__PURE__ */ jsx(ValueSlider, { label: "Saturation", value: pct(a.saturation), min: -100, max: 100, onChange: (v) => set(__spreadProps(__spreadValues({}, a), {
74
+ saturation: 1 + v / 100
75
+ }), `adjust:${id}`) }),
76
+ /* @__PURE__ */ jsx(ValueSlider, { label: "Blur", value: Math.round(((_b = a.blurFrac) != null ? _b : 0) * 1e3), min: 0, max: 20, onChange: (v) => set(__spreadProps(__spreadValues({}, a), {
77
+ blurFrac: v / 1e3
78
+ }), `adjust:${id}`) }),
79
+ layer.adjust ? /* @__PURE__ */ jsx(PrimaryButton, { label: "Reset", onPress: () => patch({
80
+ adjust: void 0
81
+ }) }) : null
82
+ ] });
83
+ }
84
+ function ShadowPanel({
85
+ layer,
86
+ patch,
87
+ brand,
88
+ used
89
+ }) {
90
+ const styles = makeStyles(useCanvasTheme());
91
+ const s = layer.shadow;
92
+ const set = (next, coalesce) => patch({
93
+ shadow: next
94
+ }, coalesce);
95
+ const id = layer.id;
96
+ return /* @__PURE__ */ jsxs(View, { style: styles.stack, children: [
97
+ /* @__PURE__ */ jsx(ToggleRow, { label: "Shadow", value: Boolean(s), onChange: (on) => patch({
98
+ shadow: on ? __spreadValues({}, DEFAULT_SHADOW) : void 0
99
+ }) }),
100
+ s ? /* @__PURE__ */ jsxs(Fragment, { children: [
101
+ /* @__PURE__ */ jsx(ValueSlider, { label: "Blur", value: Math.round(s.blurFrac * 1e3), min: 0, max: 80, onChange: (v) => set(__spreadProps(__spreadValues({}, s), {
102
+ blurFrac: v / 1e3
103
+ }), `shadow:${id}`) }),
104
+ /* @__PURE__ */ jsx(ValueSlider, { label: "Distance", value: Math.round(s.distFrac * 1e3), min: 0, max: 60, onChange: (v) => set(__spreadProps(__spreadValues({}, s), {
105
+ distFrac: v / 1e3
106
+ }), `shadow:${id}`) }),
107
+ /* @__PURE__ */ jsx(ValueSlider, { label: "Direction", value: s.angle, min: 0, max: 360, step: 5, format: (v) => `${Math.round(v)}\xB0`, onChange: (v) => set(__spreadProps(__spreadValues({}, s), {
108
+ angle: v
109
+ }), `shadow:${id}`) }),
110
+ /* @__PURE__ */ jsx(ValueSlider, { label: "Transparency", value: Math.round((1 - s.alpha) * 100), min: 0, max: 100, format: (v) => `${Math.round(v)}%`, onChange: (v) => set(__spreadProps(__spreadValues({}, s), {
111
+ alpha: 1 - v / 100
112
+ }), `shadow:${id}`) }),
113
+ /* @__PURE__ */ jsx(ColorPicker, { value: s.color, onChange: (c) => set(__spreadProps(__spreadValues({}, s), {
114
+ color: c
115
+ })), brand, used })
116
+ ] }) : null
117
+ ] });
118
+ }
119
+ function FrameGlyph({
120
+ d,
121
+ size,
122
+ color
123
+ }) {
124
+ const svg = getSvg();
125
+ const box = /* @__PURE__ */ jsx(View, { style: {
126
+ width: size,
127
+ height: size,
128
+ borderRadius: 6,
129
+ backgroundColor: color
130
+ } });
131
+ if (!svg || !svgUsable()) return box;
132
+ return /* @__PURE__ */ jsx(SvgBoundary, { fallback: box, children: /* @__PURE__ */ jsx(svg.Svg, { width: size, height: size, children: /* @__PURE__ */ jsx(svg.Path, { d: scalePath(d, size, size), fill: color }) }) });
133
+ }
134
+ function FramesGrid({
135
+ current,
136
+ onPick
137
+ }) {
138
+ var _a;
139
+ const theme = useCanvasTheme();
140
+ const styles = makeStyles(theme);
141
+ const on = (_a = frameOf(current)) == null ? void 0 : _a.id;
142
+ return /* @__PURE__ */ jsxs(View, { style: styles.grid, children: [
143
+ current ? /* @__PURE__ */ jsx(Pressable, { onPress: () => onPick(void 0), style: styles.frameTile, accessibilityRole: "button", accessibilityLabel: "No frame", children: /* @__PURE__ */ jsx(Text, { style: styles.tileLabel, children: "None" }) }) : null,
144
+ FRAME_SHAPES.map((f) => /* @__PURE__ */ jsx(Pressable, { onPress: () => onPick(f.d), style: [styles.frameTile, on === f.id && {
145
+ borderColor: theme.edAccent
146
+ }], accessibilityRole: "button", accessibilityLabel: `${f.label} frame`, accessibilityState: {
147
+ selected: on === f.id
148
+ }, children: /* @__PURE__ */ jsx(FrameGlyph, { d: f.d, size: 34, color: theme.edInk2 }) }, f.id))
149
+ ] });
150
+ }
151
+ const makeStyles = themedStyles((theme) => StyleSheet.create({
152
+ stack: {
153
+ gap: SPACE.sm
154
+ },
155
+ heading: __spreadProps(__spreadValues({}, TYPE.label), {
156
+ color: theme.edInk2,
157
+ marginTop: SPACE.xs
158
+ }),
159
+ grid: {
160
+ flexDirection: "row",
161
+ flexWrap: "wrap",
162
+ gap: SPACE.xs
163
+ },
164
+ tile: {
165
+ minWidth: 72,
166
+ height: 40,
167
+ paddingHorizontal: SPACE.sm,
168
+ borderRadius: RADIUS.md,
169
+ borderWidth: 2,
170
+ borderColor: theme.edLine,
171
+ backgroundColor: theme.edRaised,
172
+ alignItems: "center",
173
+ justifyContent: "center"
174
+ },
175
+ tileLabel: __spreadProps(__spreadValues({}, TYPE.label), {
176
+ color: theme.edInk
177
+ }),
178
+ frameTile: {
179
+ width: 56,
180
+ height: 56,
181
+ borderRadius: RADIUS.md,
182
+ borderWidth: 2,
183
+ borderColor: "transparent",
184
+ backgroundColor: theme.edRaised,
185
+ alignItems: "center",
186
+ justifyContent: "center"
187
+ }
188
+ }));export{AdjustPanel,FrameGlyph,FramesGrid,ShadowPanel};//# sourceMappingURL=ImageTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageTools.js","sources":["../../../../src/features/design/editor/ImageTools.tsx"],"sourcesContent":["/**\n * Picture tools (web Inspector's image tabs): Filters and Adjust\n * (utils/imageEffects.ts), Shadow, and Frames. Every change is a field on the\n * image layer, drawn the same way by the canvas and every export.\n */\nimport React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\nimport { themedStyles, useCanvasTheme, type CanvasPalette } from '../../canvas/canvasTheme';\nimport { Pressable, RADIUS, SPACE, TYPE } from '../../canvas/canvasUi';\nimport { FRAME_SHAPES, frameOf } from '../doc/frames';\nimport { DEFAULT_SHADOW, IMAGE_FILTERS, cleanAdjust } from '../doc/imageAdjust';\nimport { scalePath } from '../doc/pathScale';\nimport type { EditorLayer, ImageAdjust, ImageLayer, LayerShadow } from '../doc/types';\nimport { SvgBoundary, getSvg, svgUsable } from '../render/svg';\nimport { ColorPicker, PrimaryButton, ToggleRow, ValueSlider } from './controls';\n\ntype Patch = (p: Partial<EditorLayer>, coalesce?: string) => void;\n\nexport function AdjustPanel({ layer, patch }: { layer: ImageLayer; patch: Patch }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const a = layer.adjust ?? {};\n const set = (next: ImageAdjust, coalesce?: string) => patch({ adjust: cleanAdjust(next) }, coalesce);\n const id = layer.id;\n const pct = (v: number | undefined) => Math.round(((v ?? 1) - 1) * 100);\n return (\n <View style={styles.stack}>\n <Text style={styles.heading}>Filters</Text>\n <View style={styles.grid}>\n <Pressable\n onPress={() => set({ ...a, filter: undefined })}\n style={[styles.tile, !a.filter && { borderColor: theme.edAccent }]}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: !a.filter }}\n >\n <Text style={styles.tileLabel}>None</Text>\n </Pressable>\n {IMAGE_FILTERS.map((f) => {\n const on = a.filter?.id === f.id;\n return (\n <Pressable\n key={f.id}\n onPress={() => set({ ...a, filter: { id: f.id, intensity: a.filter?.intensity ?? 1 } })}\n style={[styles.tile, on && { borderColor: theme.edAccent }]}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: on }}\n >\n <Text style={styles.tileLabel}>{f.label}</Text>\n </Pressable>\n );\n })}\n </View>\n {a.filter ? (\n <ValueSlider\n label=\"Intensity\"\n value={Math.round(a.filter.intensity * 100)}\n min={0}\n max={100}\n format={(v) => `${Math.round(v)}%`}\n onChange={(v) => set({ ...a, filter: { ...a.filter!, intensity: v / 100 } }, `adjust:${id}`)}\n />\n ) : null}\n <Text style={styles.heading}>Adjust</Text>\n <ValueSlider\n label=\"Brightness\"\n value={pct(a.brightness)}\n min={-50}\n max={50}\n onChange={(v) => set({ ...a, brightness: 1 + v / 100 }, `adjust:${id}`)}\n />\n <ValueSlider\n label=\"Contrast\"\n value={pct(a.contrast)}\n min={-50}\n max={50}\n onChange={(v) => set({ ...a, contrast: 1 + v / 100 }, `adjust:${id}`)}\n />\n <ValueSlider\n label=\"Saturation\"\n value={pct(a.saturation)}\n min={-100}\n max={100}\n onChange={(v) => set({ ...a, saturation: 1 + v / 100 }, `adjust:${id}`)}\n />\n <ValueSlider\n label=\"Blur\"\n value={Math.round((a.blurFrac ?? 0) * 1000)}\n min={0}\n max={20}\n onChange={(v) => set({ ...a, blurFrac: v / 1000 }, `adjust:${id}`)}\n />\n {layer.adjust ? <PrimaryButton label=\"Reset\" onPress={() => patch({ adjust: undefined })} /> : null}\n </View>\n );\n}\n\nexport function ShadowPanel({\n layer,\n patch,\n brand,\n used,\n}: {\n layer: EditorLayer;\n patch: Patch;\n brand: string[];\n used: string[];\n}) {\n const styles = makeStyles(useCanvasTheme());\n const s = layer.shadow;\n const set = (next: LayerShadow, coalesce?: string) => patch({ shadow: next }, coalesce);\n const id = layer.id;\n return (\n <View style={styles.stack}>\n <ToggleRow\n label=\"Shadow\"\n value={Boolean(s)}\n onChange={(on) => patch({ shadow: on ? { ...DEFAULT_SHADOW } : undefined })}\n />\n {s ? (\n <>\n <ValueSlider\n label=\"Blur\"\n value={Math.round(s.blurFrac * 1000)}\n min={0}\n max={80}\n onChange={(v) => set({ ...s, blurFrac: v / 1000 }, `shadow:${id}`)}\n />\n <ValueSlider\n label=\"Distance\"\n value={Math.round(s.distFrac * 1000)}\n min={0}\n max={60}\n onChange={(v) => set({ ...s, distFrac: v / 1000 }, `shadow:${id}`)}\n />\n <ValueSlider\n label=\"Direction\"\n value={s.angle}\n min={0}\n max={360}\n step={5}\n format={(v) => `${Math.round(v)}°`}\n onChange={(v) => set({ ...s, angle: v }, `shadow:${id}`)}\n />\n <ValueSlider\n label=\"Transparency\"\n value={Math.round((1 - s.alpha) * 100)}\n min={0}\n max={100}\n format={(v) => `${Math.round(v)}%`}\n onChange={(v) => set({ ...s, alpha: 1 - v / 100 }, `shadow:${id}`)}\n />\n <ColorPicker value={s.color} onChange={(c) => set({ ...s, color: c })} brand={brand} used={used} />\n </>\n ) : null}\n </View>\n );\n}\n\n/** A frame outline as a small filled glyph. */\nexport function FrameGlyph({ d, size, color }: { d: string; size: number; color: string }) {\n const svg = getSvg();\n const box = <View style={{ width: size, height: size, borderRadius: 6, backgroundColor: color }} />;\n if (!svg || !svgUsable()) return box;\n return (\n <SvgBoundary fallback={box}>\n <svg.Svg width={size} height={size}>\n <svg.Path d={scalePath(d, size, size)} fill={color} />\n </svg.Svg>\n </SvgBoundary>\n );\n}\n\n/** Canva's frames: a tap puts the picture (or an empty frame) inside the outline. */\nexport function FramesGrid({ current, onPick }: { current?: string; onPick: (d: string | undefined) => void }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const on = frameOf(current)?.id;\n return (\n <View style={styles.grid}>\n {current ? (\n <Pressable\n onPress={() => onPick(undefined)}\n style={styles.frameTile}\n accessibilityRole=\"button\"\n accessibilityLabel=\"No frame\"\n >\n <Text style={styles.tileLabel}>None</Text>\n </Pressable>\n ) : null}\n {FRAME_SHAPES.map((f) => (\n <Pressable\n key={f.id}\n onPress={() => onPick(f.d)}\n style={[styles.frameTile, on === f.id && { borderColor: theme.edAccent }]}\n accessibilityRole=\"button\"\n accessibilityLabel={`${f.label} frame`}\n accessibilityState={{ selected: on === f.id }}\n >\n <FrameGlyph d={f.d} size={34} color={theme.edInk2} />\n </Pressable>\n ))}\n </View>\n );\n}\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n stack: { gap: SPACE.sm },\n heading: { ...TYPE.label, color: theme.edInk2, marginTop: SPACE.xs },\n grid: { flexDirection: 'row', flexWrap: 'wrap', gap: SPACE.xs },\n tile: {\n minWidth: 72,\n height: 40,\n paddingHorizontal: SPACE.sm,\n borderRadius: RADIUS.md,\n borderWidth: 2,\n borderColor: theme.edLine,\n backgroundColor: theme.edRaised,\n alignItems: 'center',\n justifyContent: 'center',\n },\n tileLabel: { ...TYPE.label, color: theme.edInk },\n frameTile: {\n width: 56,\n height: 56,\n borderRadius: RADIUS.md,\n borderWidth: 2,\n borderColor: 'transparent',\n backgroundColor: theme.edRaised,\n alignItems: 'center',\n justifyContent: 'center',\n },\n }),\n);\n"],"names":["_a","_b"],"mappings":"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"}