@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
@@ -1 +1 @@
1
- {"version":3,"file":"SetStudioExperience.js","sources":["../../../src/features/canvas/SetStudioExperience.tsx"],"sourcesContent":["/**\n * Native Set studio with Three.js WebView viewport, world/object/render, and camera moves.\n *\n * \"Describe the set\" (web commit 9a884b6a): one sentence, and the set agent\n * blocks the whole shot - floor, subject, dressing, camera, light - through\n * the same tools the web studio runs (./set/agent). Every call lands on the\n * stage as it happens, and the Set tab then edits it by hand: pick a piece,\n * nudge, turn, resize, hide or delete it, or add one from the supply library.\n */\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { ActivityIndicator, FlatList, Image, ScrollView, StyleSheet, Text, TextInput, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport type { CanvasItem } from './canvasCore';\nimport { friendlyMediaError, resultUrl, type RunMediaAction } from './videoEditor/mediaActions';\nimport { deriveAgentEndpoint, unwrapProxyUrl } from './videoEditor/remoteMediaClient';\nimport { generateObject3D, generateWorld3D, renderSetStill } from './video3d';\nimport { MOVES, cameraPath, frameCount, type MoveKind } from './set/cameraPath';\nimport { MESH_TARGET_HEIGHT_M, newObjectId, newSet, vec3, type SetProject } from './set/setProject';\nimport { SetViewportWebView, type SetViewportApi } from './set/SetViewportWebView';\nimport { KIT_ENTRIES } from './set/supplyLibrary';\nimport { placeObjects, removeObjects, tidySet, uniqueName, updateObjects } from './set/agent/setOps';\nimport { runSetTurn, type SetChatMessage, type SetTurnStep } from './set/agent/setTurn';\nimport type { AgentStill, SetAgentContext } from './set/agent/tools';\nimport { useCanvasTheme, themedStyles, type CanvasPalette } from './canvasTheme';\nimport { Pressable, HIT, RADIUS, SPACE, TYPE, pressedStyle } from './canvasUi';\n\n/** RN gives a horizontal ScrollView flexGrow 1: on a fixed-height screen a chip row swells into empty space. */\nconst HSCROLL = { flexGrow: 0 } as const;\n\ntype Tab = 'set' | 'view' | 'world' | 'object' | 'render' | 'move';\n\n/** How far one tap of a nudge button moves, turns or resizes the picked piece. */\nconst NUDGE_M = 0.25;\n\n/** Tool-bar glyph per tab (presentation only). */\nconst TAB_ICONS: Record<Tab, React.ComponentProps<typeof MaterialCommunityIcons>['name']> = {\n set: 'auto-fix',\n view: 'rotate-3d-variant',\n world: 'earth',\n object: 'cube-outline',\n render: 'camera-iris',\n move: 'movie-open-outline',\n};\nconst LIFT_M = 0.1;\nconst TURN_DEG = 15;\nconst GROW = 1.15;\nconst MAX_UNDO = 30;\n\nexport function SetStudioExperience({\n boardItems,\n runAction,\n uploadMedia,\n onClose,\n onPlace,\n token,\n indexUrl,\n}: {\n boardItems: CanvasItem[];\n runAction?: RunMediaAction;\n uploadMedia?: (localUri: string) => Promise<string>;\n /** Session for the set agent's brain calls; without it \"Describe the set\" says so. */\n token?: string | null;\n indexUrl?: string | null;\n onClose: () => void;\n onPlace: (kind: 'image' | 'video', url: string, name: string) => void;\n}) {\n const theme = useCanvasTheme();\n const styles = useMemo(() => makeStyles(theme), [theme]);\n const insets = useSafeAreaInsets();\n const stills = useMemo(\n () =>\n boardItems\n .filter((item) => item.type === 'image')\n .map((item) => ({\n id: item.id,\n src: unwrapProxyUrl(item.src),\n label: item.generatedAssetName || 'Still',\n })),\n [boardItems],\n );\n const [project, setProject] = useState<SetProject>(() => newSet());\n const projectRef = useRef(project);\n const [past, setPast] = useState<SetProject[]>([]);\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [brief, setBrief] = useState('');\n const [chat, setChat] = useState<SetChatMessage[]>([]);\n const [steps, setSteps] = useState<SetTurnStep[]>([]);\n const [agentReply, setAgentReply] = useState<string | null>(null);\n const [tab, setTab] = useState<Tab>('set');\n const worldUrl = project.world.imageUrl;\n const [propUrl, setPropUrl] = useState<string | undefined>(stills[0]?.src);\n const [worldPrompt, setWorldPrompt] = useState('Soft daylight studio, neutral backdrop');\n const [objectPrompt, setObjectPrompt] = useState('');\n const [look, setLook] = useState('Photoreal product hero, soft rim light');\n const [move, setMove] = useState<MoveKind>('orbit-left');\n const [duration, setDuration] = useState(3);\n const [busy, setBusy] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [lastPreview, setLastPreview] = useState<string | null>(null);\n const frameWaiters = useRef<Array<(dataUrl: string) => void>>([]);\n const viewportApi = useRef<SetViewportApi | null>(null);\n\n /** Replace the set as one undo step (an agent tool call, or a hand edit). */\n const commit = useCallback((next: SetProject) => {\n const prev = projectRef.current;\n projectRef.current = next;\n setPast((stack) => [...stack.slice(-(MAX_UNDO - 1)), prev]);\n setProject(next);\n }, []);\n\n const undo = () => {\n setPast((stack) => {\n const prev = stack[stack.length - 1];\n if (!prev) return stack;\n projectRef.current = prev;\n setProject(prev);\n return stack.slice(0, -1);\n });\n };\n\n const selected = project.objects.find((o) => o.id === selectedId) ?? null;\n\n const editSelected = (patch: Parameters<typeof updateObjects>[1][number]) => {\n if (!selected) return;\n commit(tidySet(updateObjects(projectRef.current, [patch]).project));\n };\n\n const nudge = (dx: number, dy: number, dz: number) => {\n if (!selected) return;\n const p = selected.position;\n editSelected({ id: selected.id, position: { x: p.x + dx, y: Math.max(0, p.y + dy), z: p.z + dz } });\n };\n\n const addKit = (kit: string) => {\n const target = projectRef.current.camera.target;\n const { project: next, placed } = placeObjects(projectRef.current, [\n { kit, position: { x: target.x, y: 0, z: target.z } },\n ]);\n commit(next);\n if (placed[0]) setSelectedId(placed[0].id);\n };\n\n const deleteSelected = () => {\n if (!selected) return;\n commit(removeObjects(projectRef.current, [selected.id]).project);\n setSelectedId(null);\n };\n\n const agentStills = useMemo<AgentStill[]>(\n () => stills.map((s) => ({ id: s.id, src: s.src, label: s.label })),\n [stills],\n );\n\n const describeSet = async () => {\n const text = brief.trim();\n if (!text) return;\n if (!token || !indexUrl)\n return setError('Describe the set needs a signed-in session. Reopen the canvas and try again.');\n setBusy('Reading the brief…');\n setError(null);\n setAgentReply(null);\n setSteps([]);\n const ctx: SetAgentContext = {\n project: () => projectRef.current,\n commit,\n progress: (line) => setBusy(line),\n stills: agentStills,\n applyCamera: (camera) => viewportApi.current?.setCamera(camera),\n services: {\n generateObject: async ({ prompt, imageUrl, onProgress }) => {\n if (!runAction) throw new Error('3D generation needs a live connector.');\n const mesh = await generateObject3D(runAction, { prompt, imageUrl, onProgress });\n return { modelUrl: mesh.modelUrl, previewUrl: mesh.previewUrl };\n },\n generateWorld: async (prompt) => {\n if (!runAction) throw new Error('3D generation needs a live connector.');\n const world = await generateWorld3D(runAction, { prompt });\n return { imageUrl: world.imageUrl, model: world.model };\n },\n },\n };\n try {\n const result = await runSetTurn({\n history: chat,\n userText: text,\n ctx,\n token,\n agentEndpoint: deriveAgentEndpoint(indexUrl),\n onStatus: (line) => setBusy(line),\n onStep: (step) => setSteps((list) => [...list, step]),\n });\n setChat((list) => [...list, { role: 'user', content: text }, { role: 'assistant', content: result.text }]);\n setAgentReply(result.text);\n setBrief('');\n } catch (err: unknown) {\n setError(err instanceof Error ? err.message : String(err));\n } finally {\n setBusy(null);\n }\n };\n\n const onFrame = (dataUrl: string) => {\n const waiter = frameWaiters.current.shift();\n waiter?.(dataUrl);\n };\n\n const captureOnce = (): Promise<string> =>\n new Promise((resolve, reject) => {\n const timer = setTimeout(() => reject(new Error('Viewport capture timed out')), 8000);\n frameWaiters.current.push((dataUrl) => {\n clearTimeout(timer);\n resolve(dataUrl);\n });\n viewportApi.current?.capture();\n });\n\n const dataUrlToUpload = async (dataUrl: string): Promise<string> => {\n if (!uploadMedia) throw new Error('Upload seam needed to save viewport frames');\n // Host uploaders typically accept file://; write via fetch blob path unsupported —\n // pass data URL when host supports it, else fail clearly.\n if (dataUrl.startsWith('data:')) {\n // Many hosts accept data URLs through their upload helpers; try as-is.\n return uploadMedia(dataUrl);\n }\n return uploadMedia(dataUrl);\n };\n\n const runWorld = async () => {\n if (!runAction) return setError('3D needs a live connector.');\n setBusy('Generating world…');\n setError(null);\n try {\n const world = await generateWorld3D(runAction, { prompt: worldPrompt.trim() });\n commit({\n ...projectRef.current,\n world: {\n ...projectRef.current.world,\n imageUrl: world.imageUrl,\n prompt: worldPrompt.trim(),\n model: world.model,\n },\n });\n setLastPreview(world.imageUrl);\n onPlace('image', world.imageUrl, `World · ${worldPrompt.slice(0, 24)}`);\n setTab('view');\n } catch (err: unknown) {\n setError(friendlyMediaError(err, '3D world'));\n } finally {\n setBusy(null);\n }\n };\n\n const runObject = async () => {\n if (!runAction) return setError('3D needs a live connector.');\n setBusy('Submitting mesh…');\n setError(null);\n try {\n const mesh = await generateObject3D(runAction, {\n imageUrl: propUrl,\n prompt: objectPrompt.trim() || undefined,\n onProgress: setBusy,\n });\n const preview = mesh.previewUrl || mesh.modelUrl;\n // The mesh joins the set as an object of its own, framed so a small prop reads.\n const current = projectRef.current;\n const id = newObjectId();\n const name = uniqueName(\n current.objects.map((o) => o.name),\n (objectPrompt.trim() || 'Object').slice(0, 28),\n );\n commit({\n ...current,\n objects: [\n ...current.objects,\n {\n id,\n name,\n source: 'mesh',\n modelUrl: mesh.modelUrl,\n previewUrl: preview,\n ...(propUrl ? { sourceImageUrl: propUrl } : {}),\n position: { x: current.camera.target.x, y: 0, z: current.camera.target.z },\n rotation: vec3(),\n scale: vec3(1, 1, 1),\n },\n ],\n });\n setSelectedId(id);\n setTimeout(() => viewportApi.current?.frameObject(id), 600);\n setLastPreview(preview);\n onPlace('image', preview, `Object · ${(objectPrompt || 'mesh').slice(0, 24)}`);\n setTab('view');\n } catch (err: unknown) {\n setError(friendlyMediaError(err, '3D object'));\n } finally {\n setBusy(null);\n }\n };\n\n const runRender = async () => {\n if (!runAction) return setError('Render needs a live connector.');\n setBusy('Capturing viewport…');\n setError(null);\n try {\n const frame = await captureOnce();\n let refUrl = lastPreview || propUrl || worldUrl;\n try {\n refUrl = await dataUrlToUpload(frame);\n } catch {\n /* keep prior ref */\n }\n setBusy('Rendering photographic still…');\n const url = await renderSetStill(runAction, {\n look,\n referenceUrls: [refUrl, propUrl, worldUrl].filter(Boolean) as string[],\n aspect: project.aspect,\n });\n setLastPreview(url);\n onPlace('image', url, `Set render · ${look.slice(0, 24)}`);\n } catch (err: unknown) {\n setError(friendlyMediaError(err, 'set render'));\n } finally {\n setBusy(null);\n }\n };\n\n const runMove = async () => {\n if (!runAction) return setError('Moves need a live connector.');\n setBusy('Rendering camera path…');\n setError(null);\n try {\n const frames = frameCount(duration, 12);\n const path = cameraPath(project.camera, { move, frames });\n const uploaded: string[] = [];\n for (let i = 0; i < path.length; i += 1) {\n setBusy(`Frame ${i + 1}/${path.length}…`);\n viewportApi.current?.setCamera(path[i]);\n await new Promise((r) => setTimeout(r, 120));\n const dataUrl = await captureOnce();\n uploaded.push(await dataUrlToUpload(dataUrl));\n }\n setBusy('Composing clip…');\n const slideshow = await runAction('yantra-video-editing', 'YANTRA_VIDEO_EDIT_SLIDESHOW', {\n input_urls: uploaded,\n duration_per_image: duration / Math.max(1, uploaded.length),\n fps: 12,\n });\n const url = resultUrl(slideshow, 'YANTRA_VIDEO_EDIT_SLIDESHOW');\n onPlace('video', url, `Move · ${move}`);\n setLastPreview(url);\n } catch (err: unknown) {\n setError(friendlyMediaError(err, 'camera move'));\n } finally {\n setBusy(null);\n }\n };\n\n return (\n <View style={[styles.root, { paddingTop: insets.top + 8, paddingBottom: insets.bottom + 8 }]}>\n <View style={styles.head}>\n <Pressable\n onPress={onClose}\n hitSlop={10}\n style={({ pressed }) => [styles.headBtn, pressedStyle(pressed)]}\n >\n <MaterialCommunityIcons name=\"close\" size={22} color={theme.edInk} />\n </Pressable>\n <Text style={styles.title}>3D set</Text>\n <Pressable\n onPress={undo}\n hitSlop={10}\n disabled={past.length === 0 || Boolean(busy)}\n accessibilityLabel=\"Undo\"\n style={({ pressed }) => [styles.headBtn, pressedStyle(pressed)]}\n >\n <MaterialCommunityIcons name=\"undo\" size={22} color={past.length ? theme.edInk : theme.edInk3} />\n </Pressable>\n </View>\n\n <View style={styles.viewport}>\n <SetViewportWebView\n worldUrl={worldUrl}\n propUrl={project.objects.length ? undefined : propUrl}\n camera={project.camera}\n objects={project.objects}\n lighting={project.lighting}\n onFrame={onFrame}\n onLoadError={(what) =>\n setError(\n what === 'world'\n ? 'The world backdrop would not load. Generate it again.'\n : 'The 3D object would not load. Generate it again.',\n )\n }\n webRef={viewportApi}\n />\n </View>\n\n <ScrollView\n style={HSCROLL}\n horizontal\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={styles.tabs}\n >\n {(\n [\n ['set', 'Set'],\n ['view', 'View'],\n ['world', 'World'],\n ['object', 'Object'],\n ['render', 'Render'],\n ['move', 'Move'],\n ] as const\n ).map(([id, label]) => (\n <Pressable\n key={id}\n onPress={() => setTab(id)}\n style={({ pressed }) => [styles.tab, pressedStyle(pressed)]}\n >\n <View style={[styles.tabIcon, tab === id && styles.tabIconOn]}>\n <MaterialCommunityIcons\n name={TAB_ICONS[id]}\n size={22}\n color={tab === id ? theme.edInk : theme.edInk3}\n />\n </View>\n <Text style={[styles.tabLabel, tab === id && styles.tabLabelOn]}>{label}</Text>\n </Pressable>\n ))}\n </ScrollView>\n\n <ScrollView\n style={styles.body}\n contentContainerStyle={styles.bodyContent}\n keyboardShouldPersistTaps=\"handled\"\n >\n {tab === 'set' ? (\n <>\n <TextInput\n value={brief}\n onChangeText={setBrief}\n style={styles.input}\n multiline\n placeholderTextColor={theme.edInk3}\n placeholder={\n project.objects.length\n ? 'Change it: \"lower the camera\", \"add a second figure\"…'\n : 'Describe the set: \"a barista behind a café counter at dawn\"'\n }\n accessibilityLabel=\"Describe the set\"\n />\n <Pressable\n onPress={() => void describeSet()}\n style={({ pressed }) => [\n styles.cta,\n (!brief.trim() || Boolean(busy)) && styles.ctaOff,\n pressedStyle(pressed),\n ]}\n disabled={!brief.trim() || Boolean(busy)}\n >\n <Text style={styles.ctaLabel}>\n {project.objects.length ? 'Ask the set agent' : 'Describe the set'}\n </Text>\n </Pressable>\n {steps.length ? (\n <View style={styles.steps}>\n {steps.map((step, i) => (\n <Text key={`${i}-${step.label}`} style={styles.step} numberOfLines={1}>\n {step.label}\n {step.detail ? ` · ${step.detail}` : ''}\n </Text>\n ))}\n </View>\n ) : null}\n {agentReply ? <Text style={styles.reply}>{agentReply}</Text> : null}\n\n <Text style={styles.section}>Pieces</Text>\n {project.objects.length === 0 ? (\n <Text style={styles.hint}>Nothing on the set yet. Describe it above, or add a piece.</Text>\n ) : (\n <View style={styles.moveRow}>\n {project.objects.map((o) => (\n <Pressable\n key={o.id}\n onPress={() => setSelectedId(o.id === selectedId ? null : o.id)}\n style={({ pressed }) => [\n styles.chip,\n o.id === selectedId && styles.chipOn,\n o.hidden && styles.chipHidden,\n pressedStyle(pressed),\n ]}\n >\n <Text style={[styles.chipLabel, o.id === selectedId && styles.chipLabelOn]}>\n {o.locked ? '🔒 ' : ''}\n {o.name}\n </Text>\n </Pressable>\n ))}\n </View>\n )}\n {selected ? (\n <View style={styles.editor}>\n <Text style={styles.editorTitle} numberOfLines={1}>\n {selected.name} · {selected.position.x.toFixed(2)}, {selected.position.y.toFixed(2)}\n , {selected.position.z.toFixed(2)}\n </Text>\n {selected.locked ? (\n <Text style={styles.hint}>Locked - unlock it to move it.</Text>\n ) : (\n <View style={styles.moveRow}>\n {(\n [\n ['arrow-left', () => nudge(-NUDGE_M, 0, 0), 'Left'],\n ['arrow-right', () => nudge(NUDGE_M, 0, 0), 'Right'],\n ['arrow-up', () => nudge(0, 0, -NUDGE_M), 'Back'],\n ['arrow-down', () => nudge(0, 0, NUDGE_M), 'Forward'],\n ['arrow-collapse-up', () => nudge(0, LIFT_M, 0), 'Raise'],\n ['arrow-collapse-down', () => nudge(0, -LIFT_M, 0), 'Lower'],\n [\n 'rotate-left',\n () =>\n editSelected({\n id: selected.id,\n rotationY: selected.rotation.y + TURN_DEG,\n }),\n 'Turn left',\n ],\n [\n 'rotate-right',\n () =>\n editSelected({\n id: selected.id,\n rotationY: selected.rotation.y - TURN_DEG,\n }),\n 'Turn right',\n ],\n [\n 'plus',\n () =>\n editSelected({\n id: selected.id,\n scaleXyz: {\n x: selected.scale.x * GROW,\n y: selected.scale.y * GROW,\n z: selected.scale.z * GROW,\n },\n }),\n 'Bigger',\n ],\n [\n 'minus',\n () =>\n editSelected({\n id: selected.id,\n scaleXyz: {\n x: selected.scale.x / GROW,\n y: selected.scale.y / GROW,\n z: selected.scale.z / GROW,\n },\n }),\n 'Smaller',\n ],\n ] as const\n ).map(([icon, onPress, label]) => (\n <Pressable\n key={label}\n onPress={onPress}\n style={({ pressed }) => [styles.iconBtn, pressedStyle(pressed)]}\n accessibilityLabel={label}\n >\n <MaterialCommunityIcons name={icon} size={20} color={theme.edInk} />\n </Pressable>\n ))}\n </View>\n )}\n <View style={styles.moveRow}>\n <Pressable\n onPress={() => editSelected({ id: selected.id, hidden: !selected.hidden })}\n style={({ pressed }) => [styles.chip, pressedStyle(pressed)]}\n >\n <Text style={styles.chipLabel}>{selected.hidden ? 'Show' : 'Hide'}</Text>\n </Pressable>\n <Pressable\n onPress={() => editSelected({ id: selected.id, locked: !selected.locked })}\n style={({ pressed }) => [styles.chip, pressedStyle(pressed)]}\n >\n <Text style={styles.chipLabel}>{selected.locked ? 'Unlock' : 'Lock'}</Text>\n </Pressable>\n <Pressable\n onPress={() => viewportApi.current?.frameObject(selected.id)}\n style={({ pressed }) => [styles.chip, pressedStyle(pressed)]}\n >\n <Text style={styles.chipLabel}>Frame</Text>\n </Pressable>\n <Pressable\n onPress={deleteSelected}\n style={({ pressed }) => [styles.chip, styles.chipDanger, pressedStyle(pressed)]}\n >\n <Text style={[styles.chipLabel, styles.danger]}>Delete</Text>\n </Pressable>\n </View>\n </View>\n ) : null}\n\n <Text style={styles.section}>Add a piece</Text>\n <View style={styles.moveRow}>\n {KIT_ENTRIES.map((entry) => (\n <Pressable\n key={entry.id}\n onPress={() => addKit(entry.id)}\n style={({ pressed }) => [styles.chip, pressedStyle(pressed)]}\n >\n <Text style={styles.chipLabel}>{entry.label}</Text>\n </Pressable>\n ))}\n </View>\n <Text style={styles.hint}>\n Generated meshes are normalised to {MESH_TARGET_HEIGHT_M}m; use Bigger / Smaller to size\n them.\n </Text>\n </>\n ) : null}\n {tab === 'view' ? (\n <Text style={styles.hint}>Drag to orbit. Use World / Object / Render / Move for the shot.</Text>\n ) : null}\n {tab === 'world' ? (\n <>\n <TextInput\n value={worldPrompt}\n onChangeText={setWorldPrompt}\n style={styles.input}\n multiline\n placeholderTextColor={theme.edInk3}\n />\n <Pressable\n onPress={() => void runWorld()}\n style={({ pressed }) => [styles.cta, Boolean(busy) && styles.ctaOff, pressedStyle(pressed)]}\n disabled={Boolean(busy)}\n >\n <Text style={styles.ctaLabel}>Generate world</Text>\n </Pressable>\n </>\n ) : null}\n {tab === 'object' ? (\n <>\n <FlatList\n horizontal\n data={stills}\n keyExtractor={(item) => item.id}\n renderItem={({ item }) => (\n <Pressable\n onPress={() => setPropUrl(item.src)}\n style={({ pressed }) => [\n styles.thumbWrap,\n propUrl === item.src && styles.thumbOn,\n pressedStyle(pressed),\n ]}\n >\n <Image source={{ uri: item.src }} style={styles.thumb} />\n </Pressable>\n )}\n />\n <TextInput\n value={objectPrompt}\n onChangeText={setObjectPrompt}\n style={styles.input}\n multiline\n placeholderTextColor={theme.edInk3}\n placeholder=\"Optional mesh prompt\"\n />\n <Pressable\n onPress={() => void runObject()}\n style={({ pressed }) => [styles.cta, Boolean(busy) && styles.ctaOff, pressedStyle(pressed)]}\n disabled={Boolean(busy)}\n >\n <Text style={styles.ctaLabel}>Generate object</Text>\n </Pressable>\n </>\n ) : null}\n {tab === 'render' ? (\n <>\n <TextInput\n value={look}\n onChangeText={setLook}\n style={styles.input}\n multiline\n placeholderTextColor={theme.edInk3}\n />\n <Pressable\n onPress={() => void runRender()}\n style={({ pressed }) => [styles.cta, Boolean(busy) && styles.ctaOff, pressedStyle(pressed)]}\n disabled={Boolean(busy)}\n >\n <Text style={styles.ctaLabel}>Render still</Text>\n </Pressable>\n </>\n ) : null}\n {tab === 'move' ? (\n <>\n <View style={styles.moveRow}>\n {MOVES.map((m) => (\n <Pressable\n key={m.kind}\n onPress={() => setMove(m.kind)}\n style={({ pressed }) => [\n styles.chip,\n move === m.kind && styles.chipOn,\n pressedStyle(pressed),\n ]}\n >\n <Text style={[styles.chipLabel, move === m.kind && styles.chipLabelOn]}>\n {m.label}\n </Text>\n </Pressable>\n ))}\n </View>\n <View style={styles.moveRow}>\n {[2, 3, 4, 6].map((sec) => (\n <Pressable\n key={sec}\n onPress={() => setDuration(sec)}\n style={({ pressed }) => [\n styles.chip,\n duration === sec && styles.chipOn,\n pressedStyle(pressed),\n ]}\n >\n <Text style={[styles.chipLabel, duration === sec && styles.chipLabelOn]}>\n {sec}s\n </Text>\n </Pressable>\n ))}\n </View>\n <Pressable\n onPress={() => void runMove()}\n style={({ pressed }) => [styles.cta, Boolean(busy) && styles.ctaOff, pressedStyle(pressed)]}\n disabled={Boolean(busy)}\n >\n <Text style={styles.ctaLabel}>Render move</Text>\n </Pressable>\n </>\n ) : null}\n {busy ? (\n <View style={styles.busyRow}>\n <ActivityIndicator color={theme.edInk2} />\n <Text style={styles.progress}>{busy}</Text>\n </View>\n ) : null}\n {error ? <Text style={styles.error}>{error}</Text> : null}\n </ScrollView>\n </View>\n );\n}\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n root: { flex: 1, backgroundColor: theme.edBg },\n head: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: SPACE.sm,\n minHeight: HIT + SPACE.xs,\n marginBottom: SPACE.xs,\n },\n headBtn: { width: HIT, height: HIT, borderRadius: HIT / 2, alignItems: 'center', justifyContent: 'center' },\n title: { ...TYPE.title, color: theme.edInk },\n viewport: {\n height: 260,\n marginHorizontal: SPACE.md,\n borderRadius: RADIUS.lg,\n overflow: 'hidden',\n backgroundColor: '#050506',\n },\n tabs: {\n paddingHorizontal: SPACE.sm,\n paddingVertical: SPACE.sm,\n gap: SPACE.xs,\n },\n tab: { minWidth: 60, alignItems: 'center', gap: SPACE.xs, paddingVertical: SPACE.xs },\n tabIcon: {\n width: 48,\n height: 34,\n borderRadius: RADIUS.pill,\n alignItems: 'center',\n justifyContent: 'center',\n },\n tabIconOn: { backgroundColor: theme.edRaisedHi },\n tabLabel: { fontSize: 11, lineHeight: 14, fontWeight: '500', color: theme.edInk3 },\n tabLabelOn: { color: theme.edInk, fontWeight: '600' },\n body: {\n flex: 1,\n backgroundColor: theme.edPanel,\n borderTopLeftRadius: RADIUS.xl,\n borderTopRightRadius: RADIUS.xl,\n },\n bodyContent: { paddingHorizontal: SPACE.lg, paddingTop: SPACE.lg, paddingBottom: SPACE.xl },\n hint: {\n ...TYPE.caption,\n fontWeight: '400',\n fontSize: 13,\n lineHeight: 18,\n color: theme.edInk3,\n marginBottom: SPACE.sm,\n },\n input: {\n ...TYPE.body,\n minHeight: 76,\n borderRadius: RADIUS.md,\n paddingHorizontal: SPACE.md + 2,\n paddingVertical: SPACE.md,\n backgroundColor: theme.edRaised,\n color: theme.edInk,\n marginBottom: SPACE.md,\n textAlignVertical: 'top',\n },\n cta: {\n minHeight: 48,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.primary,\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: SPACE.md,\n },\n ctaLabel: { ...TYPE.label, fontSize: 15, color: theme.primaryForeground },\n ctaOff: { opacity: 0.45 },\n steps: { gap: SPACE.xs, marginBottom: SPACE.sm },\n step: { ...TYPE.caption, fontWeight: '400', color: theme.edInk2 },\n reply: { ...TYPE.body, fontSize: 14, lineHeight: 20, color: theme.edInk, marginBottom: SPACE.md },\n section: { ...TYPE.label, color: theme.edInk, marginTop: SPACE.md, marginBottom: SPACE.sm },\n editor: {\n padding: SPACE.md,\n borderRadius: RADIUS.lg,\n backgroundColor: theme.edRaised,\n marginBottom: SPACE.md,\n gap: SPACE.xs,\n },\n editorTitle: { ...TYPE.label, color: theme.edInk, marginBottom: SPACE.sm },\n iconBtn: {\n width: 42,\n height: 42,\n borderRadius: 21,\n backgroundColor: theme.edRaisedHi,\n alignItems: 'center',\n justifyContent: 'center',\n },\n chipHidden: { opacity: 0.45 },\n chipDanger: { backgroundColor: theme.edDangerSoft },\n danger: { color: theme.edDanger },\n thumbWrap: {\n width: 68,\n height: 68,\n borderRadius: RADIUS.md,\n overflow: 'hidden',\n marginRight: SPACE.sm,\n marginBottom: SPACE.md,\n borderWidth: 2,\n borderColor: 'transparent',\n backgroundColor: theme.edRaised,\n },\n thumbOn: { borderColor: theme.edInk },\n thumb: { width: '100%', height: '100%', borderRadius: RADIUS.md - 2 },\n moveRow: { flexDirection: 'row', flexWrap: 'wrap', gap: SPACE.sm, marginBottom: SPACE.md },\n chip: {\n minHeight: 36,\n paddingHorizontal: SPACE.md + 2,\n borderRadius: RADIUS.pill,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.edRaisedHi,\n },\n chipOn: { backgroundColor: theme.edInk },\n chipLabel: { ...TYPE.label, color: theme.edInk },\n chipLabelOn: { color: theme.edOnInk },\n busyRow: { flexDirection: 'row', alignItems: 'center', gap: SPACE.sm, marginTop: SPACE.sm },\n progress: { ...TYPE.caption, color: theme.edInk2 },\n error: {\n ...TYPE.caption,\n color: theme.edDanger,\n marginTop: SPACE.sm,\n padding: SPACE.md,\n borderRadius: RADIUS.md,\n backgroundColor: theme.edDangerSoft,\n },\n }),\n);\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"SetStudioExperience.js","sources":["../../../src/features/canvas/SetStudioExperience.tsx"],"sourcesContent":["/**\n * Native Set studio with Three.js WebView viewport, world/object/render, and camera moves.\n *\n * \"Describe the set\" (web commit 9a884b6a): one sentence, and the set agent\n * blocks the whole shot - floor, subject, dressing, camera, light - through\n * the same tools the web studio runs (./set/agent). Every call lands on the\n * stage as it happens, and the Set tab then edits it by hand: pick a piece,\n * nudge, turn, resize, hide or delete it, or add one from the supply library.\n *\n * Web panel parity: World (presets, turn the world, ground, backdrop, key\n * light) applies through viewport messages; Render carries the lens and frame\n * pickers and \"Animate this render\" (the rendered still handed to the video\n * model with a motion prompt); the picked piece takes exact numbers.\n */\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { ActivityIndicator, FlatList, Image, ScrollView, StyleSheet, Text, TextInput, View } from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport type { CanvasItem } from './canvasCore';\nimport { friendlyMediaError, resultUrl, type RunMediaAction } from './videoEditor/mediaActions';\nimport { deriveAgentEndpoint, unwrapProxyUrl } from './videoEditor/remoteMediaClient';\nimport { generateObject3D, generateWorld3D, renderSetStill } from './video3d';\nimport { runTrackedGeneration } from './generationTasks';\nimport { MOVES, cameraPath, frameCount, type MoveKind } from './set/cameraPath';\nimport {\n MESH_TARGET_HEIGHT_M,\n SET_ASPECTS,\n focalLengthFromFov,\n fovFromFocalLength,\n lightingOf,\n newObjectId,\n newSet,\n vec3,\n type SetProject,\n type Vec3,\n} from './set/setProject';\nimport {\n BACKDROP_COLORS,\n BUILD_SUGGESTIONS,\n LENSES,\n WORLD_PRESETS,\n animateRenderParams,\n patchLighting,\n patchWorld,\n viewportWorld,\n withAxis,\n} from './set/setPresets';\nimport { NumberField, SliderRow, SwatchRow, ToggleRow } from './editorControls';\nimport { SetViewportWebView, type SetViewportApi } from './set/SetViewportWebView';\nimport { KIT_ENTRIES } from './set/supplyLibrary';\nimport { placeObjects, removeObjects, tidySet, uniqueName, updateObjects } from './set/agent/setOps';\nimport { runSetTurn, type SetChatMessage, type SetTurnStep } from './set/agent/setTurn';\nimport type { AgentStill, SetAgentContext } from './set/agent/tools';\nimport { useCanvasTheme, themedStyles, type CanvasPalette } from './canvasTheme';\nimport { Pressable, HIT, RADIUS, SPACE, TYPE, pressedStyle } from './canvasUi';\n\n/** RN gives a horizontal ScrollView flexGrow 1: on a fixed-height screen a chip row swells into empty space. */\nconst HSCROLL = { flexGrow: 0 } as const;\n\ntype Tab = 'set' | 'view' | 'world' | 'object' | 'render' | 'move';\n\n/** How far one tap of a nudge button moves, turns or resizes the picked piece. */\nconst NUDGE_M = 0.25;\n\n/** Tool-bar glyph per tab (presentation only). */\nconst TAB_ICONS: Record<Tab, React.ComponentProps<typeof MaterialCommunityIcons>['name']> = {\n set: 'auto-fix',\n view: 'rotate-3d-variant',\n world: 'earth',\n object: 'cube-outline',\n render: 'camera-iris',\n move: 'movie-open-outline',\n};\nconst LIFT_M = 0.1;\nconst TURN_DEG = 15;\nconst GROW = 1.15;\nconst MAX_UNDO = 30;\n\nexport function SetStudioExperience({\n boardItems,\n runAction,\n uploadMedia,\n onClose,\n onPlace,\n token,\n indexUrl,\n}: {\n boardItems: CanvasItem[];\n runAction?: RunMediaAction;\n uploadMedia?: (localUri: string) => Promise<string>;\n /** Session for the set agent's brain calls; without it \"Describe the set\" says so. */\n token?: string | null;\n indexUrl?: string | null;\n onClose: () => void;\n onPlace: (kind: 'image' | 'video', url: string, name: string) => void;\n}) {\n const theme = useCanvasTheme();\n const styles = useMemo(() => makeStyles(theme), [theme]);\n const insets = useSafeAreaInsets();\n const stills = useMemo(\n () =>\n boardItems\n .filter((item) => item.type === 'image')\n .map((item) => ({\n id: item.id,\n src: unwrapProxyUrl(item.src),\n label: item.generatedAssetName || 'Still',\n })),\n [boardItems],\n );\n const [project, setProject] = useState<SetProject>(() => newSet());\n const projectRef = useRef(project);\n const [past, setPast] = useState<SetProject[]>([]);\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [brief, setBrief] = useState('');\n const [chat, setChat] = useState<SetChatMessage[]>([]);\n const [steps, setSteps] = useState<SetTurnStep[]>([]);\n const [agentReply, setAgentReply] = useState<string | null>(null);\n const [tab, setTab] = useState<Tab>('set');\n const worldUrl = project.world.imageUrl;\n const [propUrl, setPropUrl] = useState<string | undefined>(stills[0]?.src);\n const [worldPrompt, setWorldPrompt] = useState('Soft daylight studio, neutral backdrop');\n const [objectPrompt, setObjectPrompt] = useState('');\n const [look, setLook] = useState('Photoreal product hero, soft rim light');\n const [move, setMove] = useState<MoveKind>('orbit-left');\n const [duration, setDuration] = useState(3);\n const [busy, setBusy] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [lastPreview, setLastPreview] = useState<string | null>(null);\n /** The last photographic render - what \"Animate this render\" moves. */\n const [lastRender, setLastRender] = useState<string | null>(null);\n const [motion, setMotion] = useState('');\n const frameWaiters = useRef<Array<(dataUrl: string) => void>>([]);\n const viewportApi = useRef<SetViewportApi | null>(null);\n\n /** Replace the set as one undo step (an agent tool call, or a hand edit). */\n const commit = useCallback((next: SetProject) => {\n const prev = projectRef.current;\n projectRef.current = next;\n setPast((stack) => [...stack.slice(-(MAX_UNDO - 1)), prev]);\n setProject(next);\n }, []);\n\n const undo = () => {\n setPast((stack) => {\n const prev = stack[stack.length - 1];\n if (!prev) return stack;\n projectRef.current = prev;\n setProject(prev);\n return stack.slice(0, -1);\n });\n };\n\n const selected = project.objects.find((o) => o.id === selectedId) ?? null;\n\n const editSelected = (patch: Parameters<typeof updateObjects>[1][number]) => {\n if (!selected) return;\n commit(tidySet(updateObjects(projectRef.current, [patch]).project));\n };\n\n const nudge = (dx: number, dy: number, dz: number) => {\n if (!selected) return;\n const p = selected.position;\n editSelected({ id: selected.id, position: { x: p.x + dx, y: Math.max(0, p.y + dy), z: p.z + dz } });\n };\n\n const addKit = (kit: string) => {\n const target = projectRef.current.camera.target;\n const { project: next, placed } = placeObjects(projectRef.current, [\n { kit, position: { x: target.x, y: 0, z: target.z } },\n ]);\n commit(next);\n if (placed[0]) setSelectedId(placed[0].id);\n };\n\n const deleteSelected = () => {\n if (!selected) return;\n commit(removeObjects(projectRef.current, [selected.id]).project);\n setSelectedId(null);\n };\n\n /** One axis typed into the inspector (web InspectorPanel VectorRow). */\n const setAxis = (field: 'position' | 'rotation' | 'scale', axis: keyof Vec3, value: number) => {\n if (!selected || selected.locked) return;\n const next = withAxis(selected[field], axis, value);\n if (field === 'position') editSelected({ id: selected.id, position: { ...next, y: Math.max(0, next.y) } });\n else if (field === 'rotation') {\n // updateObjects only turns about Y; X/Z tilt is a direct object patch.\n const cur = projectRef.current;\n commit({\n ...cur,\n objects: cur.objects.map((o) => (o.id === selected.id ? { ...o, rotation: next } : o)),\n });\n } else if (next.x > 0 && next.y > 0 && next.z > 0) editSelected({ id: selected.id, scaleXyz: next });\n };\n\n const setWorldPatch = (patch: Parameters<typeof patchWorld>[1]) => commit(patchWorld(projectRef.current, patch));\n const setLightPatch = (patch: Parameters<typeof patchLighting>[1]) =>\n commit(patchLighting(projectRef.current, patch));\n const lighting = lightingOf(project);\n const focal = focalLengthFromFov(project.camera.fov);\n\n const agentStills = useMemo<AgentStill[]>(\n () => stills.map((s) => ({ id: s.id, src: s.src, label: s.label })),\n [stills],\n );\n\n const describeSet = async (override?: string) => {\n const text = (override ?? brief).trim();\n if (!text) return;\n if (!token || !indexUrl)\n return setError('Describe the set needs a signed-in session. Reopen the canvas and try again.');\n setBusy('Reading the brief…');\n setError(null);\n setAgentReply(null);\n setSteps([]);\n const ctx: SetAgentContext = {\n project: () => projectRef.current,\n commit,\n progress: (line) => setBusy(line),\n stills: agentStills,\n applyCamera: (camera) => viewportApi.current?.setCamera(camera),\n services: {\n generateObject: async ({ prompt, imageUrl, onProgress }) => {\n if (!runAction) throw new Error('3D generation needs a live connector.');\n const mesh = await generateObject3D(runAction, { prompt, imageUrl, onProgress });\n return { modelUrl: mesh.modelUrl, previewUrl: mesh.previewUrl };\n },\n generateWorld: async (prompt) => {\n if (!runAction) throw new Error('3D generation needs a live connector.');\n const world = await generateWorld3D(runAction, { prompt });\n return { imageUrl: world.imageUrl, model: world.model };\n },\n },\n };\n try {\n const result = await runSetTurn({\n history: chat,\n userText: text,\n ctx,\n token,\n agentEndpoint: deriveAgentEndpoint(indexUrl),\n onStatus: (line) => setBusy(line),\n onStep: (step) => setSteps((list) => [...list, step]),\n });\n setChat((list) => [...list, { role: 'user', content: text }, { role: 'assistant', content: result.text }]);\n setAgentReply(result.text);\n setBrief('');\n } catch (err: unknown) {\n setError(err instanceof Error ? err.message : String(err));\n } finally {\n setBusy(null);\n }\n };\n\n const onFrame = (dataUrl: string) => {\n const waiter = frameWaiters.current.shift();\n waiter?.(dataUrl);\n };\n\n const captureOnce = (): Promise<string> =>\n new Promise((resolve, reject) => {\n const timer = setTimeout(() => reject(new Error('Viewport capture timed out')), 8000);\n frameWaiters.current.push((dataUrl) => {\n clearTimeout(timer);\n resolve(dataUrl);\n });\n viewportApi.current?.capture();\n });\n\n const dataUrlToUpload = async (dataUrl: string): Promise<string> => {\n if (!uploadMedia) throw new Error('Upload seam needed to save viewport frames');\n // Host uploaders typically accept file://; write via fetch blob path unsupported -\n // pass data URL when host supports it, else fail clearly.\n if (dataUrl.startsWith('data:')) {\n // Many hosts accept data URLs through their upload helpers; try as-is.\n return uploadMedia(dataUrl);\n }\n return uploadMedia(dataUrl);\n };\n\n const runWorld = async (override?: string) => {\n if (!runAction) return setError('3D needs a live connector.');\n const prompt = (override ?? worldPrompt).trim();\n if (!prompt) return;\n setBusy('Generating world…');\n setError(null);\n try {\n const world = await generateWorld3D(runAction, { prompt });\n commit({\n ...projectRef.current,\n world: {\n ...projectRef.current.world,\n imageUrl: world.imageUrl,\n prompt,\n model: world.model,\n },\n });\n setLastPreview(world.imageUrl);\n onPlace('image', world.imageUrl, `World · ${prompt.slice(0, 24)}`);\n setTab('view');\n } catch (err: unknown) {\n setError(friendlyMediaError(err, '3D world'));\n } finally {\n setBusy(null);\n }\n };\n\n const runObject = async () => {\n if (!runAction) return setError('3D needs a live connector.');\n setBusy('Submitting mesh…');\n setError(null);\n try {\n const mesh = await generateObject3D(runAction, {\n imageUrl: propUrl,\n prompt: objectPrompt.trim() || undefined,\n onProgress: setBusy,\n });\n const preview = mesh.previewUrl || mesh.modelUrl;\n // The mesh joins the set as an object of its own, framed so a small prop reads.\n const current = projectRef.current;\n const id = newObjectId();\n const name = uniqueName(\n current.objects.map((o) => o.name),\n (objectPrompt.trim() || 'Object').slice(0, 28),\n );\n commit({\n ...current,\n objects: [\n ...current.objects,\n {\n id,\n name,\n source: 'mesh',\n modelUrl: mesh.modelUrl,\n previewUrl: preview,\n ...(propUrl ? { sourceImageUrl: propUrl } : {}),\n position: { x: current.camera.target.x, y: 0, z: current.camera.target.z },\n rotation: vec3(),\n scale: vec3(1, 1, 1),\n },\n ],\n });\n setSelectedId(id);\n setTimeout(() => viewportApi.current?.frameObject(id), 600);\n setLastPreview(preview);\n onPlace('image', preview, `Object · ${(objectPrompt || 'mesh').slice(0, 24)}`);\n setTab('view');\n } catch (err: unknown) {\n setError(friendlyMediaError(err, '3D object'));\n } finally {\n setBusy(null);\n }\n };\n\n const runRender = async () => {\n if (!runAction) return setError('Render needs a live connector.');\n setBusy('Capturing viewport…');\n setError(null);\n try {\n const frame = await captureOnce();\n let refUrl = lastPreview || propUrl || worldUrl;\n try {\n refUrl = await dataUrlToUpload(frame);\n } catch {\n /* keep prior ref */\n }\n setBusy('Rendering photographic still…');\n const url = await renderSetStill(runAction, {\n look,\n referenceUrls: [refUrl, propUrl, worldUrl].filter(Boolean) as string[],\n aspect: project.aspect,\n });\n setLastPreview(url);\n setLastRender(url);\n onPlace('image', url, `Set render · ${look.slice(0, 24)}`);\n } catch (err: unknown) {\n setError(friendlyMediaError(err, 'set render'));\n } finally {\n setBusy(null);\n }\n };\n\n /**\n * The rendered still, animated (web RenderPanel animate). A move renders\n * the blocking itself, exactly repeatable; this animates the photographic\n * still, so it looks like footage but the motion is the video model's.\n */\n const runAnimate = async () => {\n if (!runAction) return setError('Animate needs a live connector.');\n if (!lastRender) return;\n setBusy('Animating the render…');\n setError(null);\n try {\n // A tracked job like every generation: it lists in Tasks and survives the app closing.\n const url = await runTrackedGeneration({\n run: runAction,\n connector: 'yantra-video-generation',\n action: 'YANTRA_VIDEO_GENERATION_GENERATE',\n params: animateRenderParams({ stillUrl: unwrapProxyUrl(lastRender), motion, aspect: project.aspect }),\n mode: 'video',\n prompt: motion || `Animate ${project.title}`,\n boardId: null,\n title: `Animated · ${project.title}`,\n });\n setLastPreview(url);\n onPlace('video', url, `Animated · ${project.title}`);\n } catch (err: unknown) {\n setError(friendlyMediaError(err, 'animation'));\n } finally {\n setBusy(null);\n }\n };\n\n const runMove = async () => {\n if (!runAction) return setError('Moves need a live connector.');\n setBusy('Rendering camera path…');\n setError(null);\n try {\n const frames = frameCount(duration, 12);\n const path = cameraPath(project.camera, { move, frames });\n const uploaded: string[] = [];\n for (let i = 0; i < path.length; i += 1) {\n setBusy(`Frame ${i + 1}/${path.length}…`);\n viewportApi.current?.setCamera(path[i]);\n await new Promise((r) => setTimeout(r, 120));\n const dataUrl = await captureOnce();\n uploaded.push(await dataUrlToUpload(dataUrl));\n }\n setBusy('Composing clip…');\n const slideshow = await runAction('yantra-video-editing', 'YANTRA_VIDEO_EDIT_SLIDESHOW', {\n input_urls: uploaded,\n duration_per_image: duration / Math.max(1, uploaded.length),\n fps: 12,\n });\n const url = resultUrl(slideshow, 'YANTRA_VIDEO_EDIT_SLIDESHOW');\n onPlace('video', url, `Move · ${move}`);\n setLastPreview(url);\n } catch (err: unknown) {\n setError(friendlyMediaError(err, 'camera move'));\n } finally {\n setBusy(null);\n }\n };\n\n return (\n <View style={[styles.root, { paddingTop: insets.top + 8, paddingBottom: insets.bottom + 8 }]}>\n <View style={styles.head}>\n <Pressable\n onPress={onClose}\n hitSlop={10}\n style={({ pressed }) => [styles.headBtn, pressedStyle(pressed)]}\n >\n <MaterialCommunityIcons name=\"close\" size={22} color={theme.edInk} />\n </Pressable>\n <Text style={styles.title}>3D set</Text>\n <Pressable\n onPress={undo}\n hitSlop={10}\n disabled={past.length === 0 || Boolean(busy)}\n accessibilityLabel=\"Undo\"\n style={({ pressed }) => [styles.headBtn, pressedStyle(pressed)]}\n >\n <MaterialCommunityIcons name=\"undo\" size={22} color={past.length ? theme.edInk : theme.edInk3} />\n </Pressable>\n </View>\n\n <View style={styles.viewport}>\n <SetViewportWebView\n worldUrl={worldUrl}\n propUrl={project.objects.length ? undefined : propUrl}\n camera={project.camera}\n objects={project.objects}\n lighting={project.lighting}\n world={viewportWorld(project.world)}\n onFrame={onFrame}\n onLoadError={(what) =>\n setError(\n what === 'world'\n ? 'The world backdrop would not load. Generate it again.'\n : 'The 3D object would not load. Generate it again.',\n )\n }\n webRef={viewportApi}\n />\n </View>\n\n <ScrollView\n style={HSCROLL}\n horizontal\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={styles.tabs}\n >\n {(\n [\n ['set', 'Set'],\n ['view', 'View'],\n ['world', 'World'],\n ['object', 'Object'],\n ['render', 'Render'],\n ['move', 'Move'],\n ] as const\n ).map(([id, label]) => (\n <Pressable\n key={id}\n onPress={() => setTab(id)}\n style={({ pressed }) => [styles.tab, pressedStyle(pressed)]}\n >\n <View style={[styles.tabIcon, tab === id && styles.tabIconOn]}>\n <MaterialCommunityIcons\n name={TAB_ICONS[id]}\n size={22}\n color={tab === id ? theme.edInk : theme.edInk3}\n />\n </View>\n <Text style={[styles.tabLabel, tab === id && styles.tabLabelOn]}>{label}</Text>\n </Pressable>\n ))}\n </ScrollView>\n\n <ScrollView\n style={styles.body}\n contentContainerStyle={styles.bodyContent}\n keyboardShouldPersistTaps=\"handled\"\n >\n {tab === 'set' ? (\n <>\n <TextInput\n value={brief}\n onChangeText={setBrief}\n style={styles.input}\n multiline\n placeholderTextColor={theme.edInk3}\n placeholder={\n project.objects.length\n ? 'Change it: \"lower the camera\", \"add a second figure\"…'\n : 'Describe the set: \"a barista behind a café counter at dawn\"'\n }\n accessibilityLabel=\"Describe the set\"\n />\n <Pressable\n onPress={() => void describeSet()}\n style={({ pressed }) => [\n styles.cta,\n (!brief.trim() || Boolean(busy)) && styles.ctaOff,\n pressedStyle(pressed),\n ]}\n disabled={!brief.trim() || Boolean(busy)}\n >\n <Text style={styles.ctaLabel}>\n {project.objects.length ? 'Ask the set agent' : 'Describe the set'}\n </Text>\n </Pressable>\n <ScrollView\n style={HSCROLL}\n horizontal\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={styles.suggestRow}\n keyboardShouldPersistTaps=\"handled\"\n >\n {BUILD_SUGGESTIONS.map((s) => (\n <Pressable\n key={s.label}\n disabled={Boolean(busy)}\n onPress={() => {\n setBrief(s.text);\n void describeSet(s.text);\n }}\n accessibilityHint={s.text}\n style={({ pressed }) => [\n styles.chip,\n Boolean(busy) && styles.ctaOff,\n pressedStyle(pressed),\n ]}\n >\n <Text style={styles.chipLabel}>{s.label}</Text>\n </Pressable>\n ))}\n </ScrollView>\n {steps.length ? (\n <View style={styles.steps}>\n {steps.map((step, i) => (\n <Text key={`${i}-${step.label}`} style={styles.step} numberOfLines={1}>\n {step.label}\n {step.detail ? ` · ${step.detail}` : ''}\n </Text>\n ))}\n </View>\n ) : null}\n {agentReply ? <Text style={styles.reply}>{agentReply}</Text> : null}\n\n <Text style={styles.section}>Pieces</Text>\n {project.objects.length === 0 ? (\n <Text style={styles.hint}>Nothing on the set yet. Describe it above, or add a piece.</Text>\n ) : (\n <View style={styles.moveRow}>\n {project.objects.map((o) => (\n <Pressable\n key={o.id}\n onPress={() => setSelectedId(o.id === selectedId ? null : o.id)}\n style={({ pressed }) => [\n styles.chip,\n o.id === selectedId && styles.chipOn,\n o.hidden && styles.chipHidden,\n pressedStyle(pressed),\n ]}\n >\n <Text style={[styles.chipLabel, o.id === selectedId && styles.chipLabelOn]}>\n {o.locked ? '🔒 ' : ''}\n {o.name}\n </Text>\n </Pressable>\n ))}\n </View>\n )}\n {selected ? (\n <View style={styles.editor}>\n <Text style={styles.editorTitle} numberOfLines={1}>\n {selected.name} · {selected.position.x.toFixed(2)}, {selected.position.y.toFixed(2)}\n , {selected.position.z.toFixed(2)}\n </Text>\n {selected.locked ? (\n <Text style={styles.hint}>Locked - unlock it to move it.</Text>\n ) : (\n <View style={styles.moveRow}>\n {(\n [\n ['arrow-left', () => nudge(-NUDGE_M, 0, 0), 'Left'],\n ['arrow-right', () => nudge(NUDGE_M, 0, 0), 'Right'],\n ['arrow-up', () => nudge(0, 0, -NUDGE_M), 'Back'],\n ['arrow-down', () => nudge(0, 0, NUDGE_M), 'Forward'],\n ['arrow-collapse-up', () => nudge(0, LIFT_M, 0), 'Raise'],\n ['arrow-collapse-down', () => nudge(0, -LIFT_M, 0), 'Lower'],\n [\n 'rotate-left',\n () =>\n editSelected({\n id: selected.id,\n rotationY: selected.rotation.y + TURN_DEG,\n }),\n 'Turn left',\n ],\n [\n 'rotate-right',\n () =>\n editSelected({\n id: selected.id,\n rotationY: selected.rotation.y - TURN_DEG,\n }),\n 'Turn right',\n ],\n [\n 'plus',\n () =>\n editSelected({\n id: selected.id,\n scaleXyz: {\n x: selected.scale.x * GROW,\n y: selected.scale.y * GROW,\n z: selected.scale.z * GROW,\n },\n }),\n 'Bigger',\n ],\n [\n 'minus',\n () =>\n editSelected({\n id: selected.id,\n scaleXyz: {\n x: selected.scale.x / GROW,\n y: selected.scale.y / GROW,\n z: selected.scale.z / GROW,\n },\n }),\n 'Smaller',\n ],\n ] as const\n ).map(([icon, onPress, label]) => (\n <Pressable\n key={label}\n onPress={onPress}\n style={({ pressed }) => [styles.iconBtn, pressedStyle(pressed)]}\n accessibilityLabel={label}\n >\n <MaterialCommunityIcons name={icon} size={20} color={theme.edInk} />\n </Pressable>\n ))}\n </View>\n )}\n {(\n [\n ['position', 'Position (m)'],\n ['rotation', 'Rotation (deg)'],\n ['scale', 'Scale'],\n ] as const\n ).map(([field, label]) => (\n <View key={field} style={styles.vecRow}>\n <Text style={styles.vecLabel}>{label}</Text>\n <View style={styles.vecFields}>\n {(['x', 'y', 'z'] as const).map((axis) => (\n <NumberField\n key={`${selected.id}-${field}-${axis}`}\n label={axis.toUpperCase()}\n value={selected[field][axis]}\n disabled={selected.locked}\n onChange={(v) => setAxis(field, axis, v)}\n />\n ))}\n </View>\n </View>\n ))}\n <View style={styles.moveRow}>\n <Pressable\n onPress={() => editSelected({ id: selected.id, hidden: !selected.hidden })}\n style={({ pressed }) => [styles.chip, pressedStyle(pressed)]}\n >\n <Text style={styles.chipLabel}>{selected.hidden ? 'Show' : 'Hide'}</Text>\n </Pressable>\n <Pressable\n onPress={() => editSelected({ id: selected.id, locked: !selected.locked })}\n style={({ pressed }) => [styles.chip, pressedStyle(pressed)]}\n >\n <Text style={styles.chipLabel}>{selected.locked ? 'Unlock' : 'Lock'}</Text>\n </Pressable>\n <Pressable\n onPress={() => viewportApi.current?.frameObject(selected.id)}\n style={({ pressed }) => [styles.chip, pressedStyle(pressed)]}\n >\n <Text style={styles.chipLabel}>Frame</Text>\n </Pressable>\n <Pressable\n onPress={deleteSelected}\n style={({ pressed }) => [styles.chip, styles.chipDanger, pressedStyle(pressed)]}\n >\n <Text style={[styles.chipLabel, styles.danger]}>Delete</Text>\n </Pressable>\n </View>\n </View>\n ) : null}\n\n <Text style={styles.section}>Add a piece</Text>\n <View style={styles.moveRow}>\n {KIT_ENTRIES.map((entry) => (\n <Pressable\n key={entry.id}\n onPress={() => addKit(entry.id)}\n style={({ pressed }) => [styles.chip, pressedStyle(pressed)]}\n >\n <Text style={styles.chipLabel}>{entry.label}</Text>\n </Pressable>\n ))}\n </View>\n <Text style={styles.hint}>\n Generated meshes are normalised to {MESH_TARGET_HEIGHT_M}m; use Bigger / Smaller to size\n them.\n </Text>\n </>\n ) : null}\n {tab === 'view' ? (\n <Text style={styles.hint}>Drag to orbit. Use World / Object / Render / Move for the shot.</Text>\n ) : null}\n {tab === 'world' ? (\n <>\n <Text style={styles.hint}>\n A 360 environment wrapped around the set. The camera turns inside it; it cannot move into\n it.\n </Text>\n {worldUrl ? (\n <View style={styles.worldCard}>\n <Image source={{ uri: worldUrl }} style={styles.worldThumb} />\n <Pressable\n onPress={() =>\n setWorldPatch({ imageUrl: undefined, prompt: undefined, model: undefined })\n }\n style={({ pressed }) => [styles.chip, pressedStyle(pressed)]}\n >\n <Text style={styles.chipLabel}>Back to the plain backdrop</Text>\n </Pressable>\n </View>\n ) : null}\n <TextInput\n value={worldPrompt}\n onChangeText={setWorldPrompt}\n style={styles.input}\n multiline\n placeholder=\"A rain-slicked Tokyo alley at night\"\n placeholderTextColor={theme.edInk3}\n />\n <Pressable\n onPress={() => void runWorld()}\n style={({ pressed }) => [\n styles.cta,\n (Boolean(busy) || !worldPrompt.trim()) && styles.ctaOff,\n pressedStyle(pressed),\n ]}\n disabled={Boolean(busy) || !worldPrompt.trim()}\n >\n <Text style={styles.ctaLabel}>{worldUrl ? 'Replace world' : 'Generate world'}</Text>\n </Pressable>\n <View style={styles.moveRow}>\n {WORLD_PRESETS.map((preset) => (\n <Pressable\n key={preset.label}\n disabled={Boolean(busy)}\n onPress={() => {\n setWorldPrompt(preset.prompt);\n void runWorld(preset.prompt);\n }}\n style={({ pressed }) => [\n styles.chip,\n Boolean(busy) && styles.ctaOff,\n pressedStyle(pressed),\n ]}\n >\n <Text style={styles.chipLabel}>{preset.label}</Text>\n </Pressable>\n ))}\n </View>\n {worldUrl ? (\n <SliderRow\n label=\"Turn the world\"\n value={project.world.rotationDeg}\n min={0}\n max={360}\n format={(v) => `${Math.round(v)}°`}\n onChange={(rotationDeg) => setWorldPatch({ rotationDeg })}\n />\n ) : (\n <SwatchRow\n label=\"Backdrop\"\n colors={BACKDROP_COLORS}\n value={project.world.background}\n onChange={(background) => setWorldPatch({ background })}\n />\n )}\n <ToggleRow\n label=\"Ground plane and grid\"\n value={project.world.showGround}\n onChange={(showGround) => setWorldPatch({ showGround })}\n />\n <Text style={styles.section}>Key light</Text>\n <SliderRow\n label=\"Direction\"\n value={lighting.keyAzimuthDeg}\n min={0}\n max={360}\n format={(v) => `${Math.round(v)}°`}\n onChange={(keyAzimuthDeg) => setLightPatch({ keyAzimuthDeg })}\n />\n <SliderRow\n label=\"Height\"\n value={lighting.keyElevationDeg}\n min={5}\n max={88}\n format={(v) => `${Math.round(v)}°`}\n onChange={(keyElevationDeg) => setLightPatch({ keyElevationDeg })}\n />\n <SliderRow\n label=\"Strength\"\n value={lighting.keyIntensity}\n min={0}\n max={6}\n step={0.1}\n onChange={(keyIntensity) => setLightPatch({ keyIntensity })}\n />\n <SliderRow\n label=\"Fill\"\n value={lighting.ambientIntensity}\n min={0}\n max={2}\n step={0.05}\n onChange={(ambientIntensity) => setLightPatch({ ambientIntensity })}\n />\n </>\n ) : null}\n {tab === 'object' ? (\n <>\n <FlatList\n horizontal\n data={stills}\n keyExtractor={(item) => item.id}\n renderItem={({ item }) => (\n <Pressable\n onPress={() => setPropUrl(item.src)}\n style={({ pressed }) => [\n styles.thumbWrap,\n propUrl === item.src && styles.thumbOn,\n pressedStyle(pressed),\n ]}\n >\n <Image source={{ uri: item.src }} style={styles.thumb} />\n </Pressable>\n )}\n />\n <TextInput\n value={objectPrompt}\n onChangeText={setObjectPrompt}\n style={styles.input}\n multiline\n placeholderTextColor={theme.edInk3}\n placeholder=\"Optional mesh prompt\"\n />\n <Pressable\n onPress={() => void runObject()}\n style={({ pressed }) => [styles.cta, Boolean(busy) && styles.ctaOff, pressedStyle(pressed)]}\n disabled={Boolean(busy)}\n >\n <Text style={styles.ctaLabel}>Generate object</Text>\n </Pressable>\n </>\n ) : null}\n {tab === 'render' ? (\n <>\n <Text style={styles.section}>Lens</Text>\n <View style={styles.moveRow}>\n {LENSES.map((mm) => (\n <Pressable\n key={mm}\n onPress={() =>\n commit({\n ...projectRef.current,\n camera: { ...projectRef.current.camera, fov: fovFromFocalLength(mm) },\n })\n }\n style={({ pressed }) => [\n styles.chip,\n focal === mm && styles.chipOn,\n pressedStyle(pressed),\n ]}\n >\n <Text style={[styles.chipLabel, focal === mm && styles.chipLabelOn]}>{mm}mm</Text>\n </Pressable>\n ))}\n </View>\n <Text style={styles.hint}>Currently {focal}mm equivalent.</Text>\n <Text style={styles.section}>Frame</Text>\n <View style={styles.moveRow}>\n {SET_ASPECTS.map((aspect) => (\n <Pressable\n key={aspect}\n onPress={() => commit({ ...projectRef.current, aspect })}\n style={({ pressed }) => [\n styles.chip,\n project.aspect === aspect && styles.chipOn,\n pressedStyle(pressed),\n ]}\n >\n <Text style={[styles.chipLabel, project.aspect === aspect && styles.chipLabelOn]}>\n {aspect}\n </Text>\n </Pressable>\n ))}\n </View>\n <Text style={styles.section}>Render the shot</Text>\n <TextInput\n value={look}\n onChangeText={setLook}\n style={styles.input}\n multiline\n placeholderTextColor={theme.edInk3}\n />\n <Pressable\n onPress={() => void runRender()}\n style={({ pressed }) => [styles.cta, Boolean(busy) && styles.ctaOff, pressedStyle(pressed)]}\n disabled={Boolean(busy)}\n >\n <Text style={styles.ctaLabel}>Render still</Text>\n </Pressable>\n {lastRender ? (\n <View style={styles.editor}>\n <Text style={styles.editorTitle}>Last render</Text>\n <Image source={{ uri: lastRender }} style={styles.renderThumb} resizeMode=\"cover\" />\n <Text style={styles.hint}>Also added to the board.</Text>\n <TextInput\n value={motion}\n onChangeText={setMotion}\n style={styles.input}\n multiline\n placeholder=\"How it should move: candles flicker, someone leans in\"\n placeholderTextColor={theme.edInk3}\n accessibilityLabel=\"Motion prompt\"\n />\n <Pressable\n onPress={() => void runAnimate()}\n disabled={Boolean(busy)}\n style={({ pressed }) => [\n styles.softCta,\n Boolean(busy) && styles.ctaOff,\n pressedStyle(pressed),\n ]}\n >\n <MaterialCommunityIcons\n name=\"movie-open-play-outline\"\n size={18}\n color={theme.edInk}\n />\n <Text style={styles.chipLabel}>Animate this render</Text>\n </Pressable>\n <Text style={styles.hint}>\n Turns the finished still into footage. The motion is the video model&apos;s, not\n your camera path. Use Move when the move itself has to be exact.\n </Text>\n </View>\n ) : null}\n </>\n ) : null}\n {tab === 'move' ? (\n <>\n <View style={styles.moveRow}>\n {MOVES.map((m) => (\n <Pressable\n key={m.kind}\n onPress={() => setMove(m.kind)}\n style={({ pressed }) => [\n styles.chip,\n move === m.kind && styles.chipOn,\n pressedStyle(pressed),\n ]}\n >\n <Text style={[styles.chipLabel, move === m.kind && styles.chipLabelOn]}>\n {m.label}\n </Text>\n </Pressable>\n ))}\n </View>\n <View style={styles.moveRow}>\n {[2, 3, 4, 6].map((sec) => (\n <Pressable\n key={sec}\n onPress={() => setDuration(sec)}\n style={({ pressed }) => [\n styles.chip,\n duration === sec && styles.chipOn,\n pressedStyle(pressed),\n ]}\n >\n <Text style={[styles.chipLabel, duration === sec && styles.chipLabelOn]}>\n {sec}s\n </Text>\n </Pressable>\n ))}\n </View>\n <Pressable\n onPress={() => void runMove()}\n style={({ pressed }) => [styles.cta, Boolean(busy) && styles.ctaOff, pressedStyle(pressed)]}\n disabled={Boolean(busy)}\n >\n <Text style={styles.ctaLabel}>Render move</Text>\n </Pressable>\n </>\n ) : null}\n {busy ? (\n <View style={styles.busyRow}>\n <ActivityIndicator color={theme.edInk2} />\n <Text style={styles.progress}>{busy}</Text>\n </View>\n ) : null}\n {error ? <Text style={styles.error}>{error}</Text> : null}\n </ScrollView>\n </View>\n );\n}\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n root: { flex: 1, backgroundColor: theme.edBg },\n head: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: SPACE.sm,\n minHeight: HIT + SPACE.xs,\n marginBottom: SPACE.xs,\n },\n headBtn: { width: HIT, height: HIT, borderRadius: HIT / 2, alignItems: 'center', justifyContent: 'center' },\n title: { ...TYPE.title, color: theme.edInk },\n viewport: {\n height: 260,\n marginHorizontal: SPACE.md,\n borderRadius: RADIUS.lg,\n overflow: 'hidden',\n backgroundColor: '#050506',\n },\n tabs: {\n paddingHorizontal: SPACE.sm,\n paddingVertical: SPACE.sm,\n gap: SPACE.xs,\n },\n tab: { minWidth: 60, alignItems: 'center', gap: SPACE.xs, paddingVertical: SPACE.xs },\n tabIcon: {\n width: 48,\n height: 34,\n borderRadius: RADIUS.pill,\n alignItems: 'center',\n justifyContent: 'center',\n },\n tabIconOn: { backgroundColor: theme.edRaisedHi },\n tabLabel: { fontSize: 11, lineHeight: 14, fontWeight: '500', color: theme.edInk3 },\n tabLabelOn: { color: theme.edInk, fontWeight: '600' },\n body: {\n flex: 1,\n backgroundColor: theme.edPanel,\n borderTopLeftRadius: RADIUS.xl,\n borderTopRightRadius: RADIUS.xl,\n },\n bodyContent: { paddingHorizontal: SPACE.lg, paddingTop: SPACE.lg, paddingBottom: SPACE.xl },\n hint: {\n ...TYPE.caption,\n fontWeight: '400',\n fontSize: 13,\n lineHeight: 18,\n color: theme.edInk3,\n marginBottom: SPACE.sm,\n },\n input: {\n ...TYPE.body,\n minHeight: 76,\n borderRadius: RADIUS.md,\n paddingHorizontal: SPACE.md + 2,\n paddingVertical: SPACE.md,\n backgroundColor: theme.edRaised,\n color: theme.edInk,\n marginBottom: SPACE.md,\n textAlignVertical: 'top',\n },\n cta: {\n minHeight: 48,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.primary,\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: SPACE.md,\n },\n ctaLabel: { ...TYPE.label, fontSize: 15, color: theme.primaryForeground },\n ctaOff: { opacity: 0.45 },\n steps: { gap: SPACE.xs, marginBottom: SPACE.sm },\n step: { ...TYPE.caption, fontWeight: '400', color: theme.edInk2 },\n reply: { ...TYPE.body, fontSize: 14, lineHeight: 20, color: theme.edInk, marginBottom: SPACE.md },\n section: { ...TYPE.label, color: theme.edInk, marginTop: SPACE.md, marginBottom: SPACE.sm },\n editor: {\n padding: SPACE.md,\n borderRadius: RADIUS.lg,\n backgroundColor: theme.edRaised,\n marginBottom: SPACE.md,\n gap: SPACE.xs,\n },\n editorTitle: { ...TYPE.label, color: theme.edInk, marginBottom: SPACE.sm },\n iconBtn: {\n width: 42,\n height: 42,\n borderRadius: 21,\n backgroundColor: theme.edRaisedHi,\n alignItems: 'center',\n justifyContent: 'center',\n },\n chipHidden: { opacity: 0.45 },\n suggestRow: { gap: SPACE.sm, paddingBottom: SPACE.md },\n vecRow: { marginBottom: SPACE.sm },\n vecLabel: { ...TYPE.caption, color: theme.edInk2, marginBottom: SPACE.xs },\n vecFields: { flexDirection: 'row', gap: SPACE.sm },\n worldCard: { gap: SPACE.sm, marginBottom: SPACE.md, alignItems: 'flex-start' },\n worldThumb: { width: '100%', height: 72, borderRadius: RADIUS.md, backgroundColor: theme.edRaised },\n renderThumb: { width: '100%', aspectRatio: 16 / 9, borderRadius: RADIUS.md, backgroundColor: theme.edRaisedHi },\n softCta: {\n flexDirection: 'row',\n gap: SPACE.sm,\n minHeight: 44,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.edRaisedHi,\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: SPACE.sm,\n },\n chipDanger: { backgroundColor: theme.edDangerSoft },\n danger: { color: theme.edDanger },\n thumbWrap: {\n width: 68,\n height: 68,\n borderRadius: RADIUS.md,\n overflow: 'hidden',\n marginRight: SPACE.sm,\n marginBottom: SPACE.md,\n borderWidth: 2,\n borderColor: 'transparent',\n backgroundColor: theme.edRaised,\n },\n thumbOn: { borderColor: theme.edInk },\n thumb: { width: '100%', height: '100%', borderRadius: RADIUS.md - 2 },\n moveRow: { flexDirection: 'row', flexWrap: 'wrap', gap: SPACE.sm, marginBottom: SPACE.md },\n chip: {\n minHeight: 36,\n paddingHorizontal: SPACE.md + 2,\n borderRadius: RADIUS.pill,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.edRaisedHi,\n },\n chipOn: { backgroundColor: theme.edInk },\n chipLabel: { ...TYPE.label, color: theme.edInk },\n chipLabelOn: { color: theme.edOnInk },\n busyRow: { flexDirection: 'row', alignItems: 'center', gap: SPACE.sm, marginTop: SPACE.sm },\n progress: { ...TYPE.caption, color: theme.edInk2 },\n error: {\n ...TYPE.caption,\n color: theme.edDanger,\n marginTop: SPACE.sm,\n padding: SPACE.md,\n borderRadius: RADIUS.md,\n backgroundColor: theme.edDangerSoft,\n },\n }),\n);\n"],"names":["_a"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useMemo,useState,useRef,useCallback,useEffect}from'react';import {useWindowDimensions,Platform,Alert,View,Text,FlatList,ActivityIndicator,TextInput,ScrollView,StyleSheet}from'react-native';import {KeyboardAwareScreen,KeyboardLiftSpacer}from'../../components/KeyboardComposerDock.js';import {dismissKeyboard}from'../../utils/keyboardController.js';import {GestureHandlerRootView,Gesture,GestureDetector}from'react-native-gesture-handler';import {MaterialCommunityIcons}from'@expo/vector-icons';import {Image}from'expo-image';import {getVideoPreviewRenderer}from'./videoRenderer.js';import {friendlyMediaError,resultUrl,generationMediaUrl}from'./videoEditor/mediaActions.js';import {clipFromItem,emptyTimeline,timelineDuration,updateClip,clipFromColor,textClipAt,newSegment,buildExportSpec,removeClip,moveClip,trimClip,SPEED_PRESETS,SPEED_CURVES,TEXT_PRESETS,updateText,removeText,MOTION_MOVES,MOTION_STRENGTHS,CLIP_TRANSITIONS,moveIdOf,kenBurnsFor,DEFAULT_IMAGE_SEC,clipTimelineSec}from'./videoEditor/editorModel.js';import {filterById,FILTER_PRESETS}from'./videoEditor/filters.js';import {useSafeInsets}from'./withRemoteSafeArea.js';import {STATIC_VIDEO_MODELS,buildVideoGenerateParams}from'./generationModels.js';import {mapDesignCorpus,playableTemplatePreviewUrl}from'./canvasChatTemplates.js';import {config}from'../../config/env-config.js';import {useStudioCatalogTemplates}from'./useStudioCatalogTemplates.js';import {DESIGN_PROMPT_TEMPLATES}from'./designPromptTemplates.js';import {templateHasUsableConfig,loadTemplateTimeline}from'./templateImport/loadTemplate.js';import {loadVideoProjects,projectHasWork,newVideoProjectId,snapshotProject,upsertVideoProject,persistVideoProjects,relativeProjectTime}from'./videoEditor/videoProjectsStore.js';import {AgentCutPane}from'./videoEditor/agent/AgentCutPane.js';import {canvasForRatio,canvasForAspect}from'./videoEditor/compileTimeline.js';import {reflowSceneChildren,sceneSpans,stampScene,layerInView}from'./videoEditor/sceneLayers.js';import {BlurBoxOverlay}from'./videoEditor/BlurBoxOverlay.js';import {ToolsDrawer}from'./videoEditor/tools/ToolsDrawer.js';import {staleMediaUrls,withRenewedUrls}from'./videoEditor/renewLinks.js';import {ensureFetchableMediaUrl}from'./mediaUrls.js';import {ProduceVideoSheet}from'./videoEditor/produce/ProduceVideoSheet.js';import {sceneFootagePatch,produceScenes,produceJob,runProduce}from'./videoEditor/produce/produceScenes.js';import {useCanvasTheme,themedStyles,CANVAS_DARK}from'./canvasTheme.js';import {Pressable,pressedStyle,RADIUS,SPACE,HIT,TYPE}from'./canvasUi.js';var __defProp = Object.defineProperty;
1
+ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useMemo,useState,useRef,useCallback,useEffect}from'react';import {useWindowDimensions,Platform,Alert,View,Text,FlatList,ActivityIndicator,TextInput,ScrollView,StyleSheet}from'react-native';import {KeyboardAwareScreen,KeyboardLiftSpacer}from'../../components/KeyboardComposerDock.js';import {dismissKeyboard}from'../../utils/keyboardController.js';import {GestureHandlerRootView,Gesture,GestureDetector}from'react-native-gesture-handler';import {MaterialCommunityIcons}from'@expo/vector-icons';import {Image}from'expo-image';import {getVideoPreviewRenderer}from'./videoRenderer.js';import {friendlyMediaError,resultUrl,generationMediaUrl}from'./videoEditor/mediaActions.js';import {clipFromItem,emptyTimeline,timelineDuration,updateClip,clipFromColor,textClipAt,newSegment,buildExportSpec,removeClip,moveClip,trimClip,SPEED_PRESETS,SPEED_CURVES,TEXT_PRESETS,updateText,removeText,MOTION_MOVES,MOTION_STRENGTHS,CLIP_TRANSITIONS,moveIdOf,kenBurnsFor,DEFAULT_IMAGE_SEC,clipTimelineSec}from'./videoEditor/editorModel.js';import {filterById,FILTER_PRESETS}from'./videoEditor/filters.js';import {useSafeInsets}from'./withRemoteSafeArea.js';import {STATIC_VIDEO_MODELS,buildVideoGenerateParams}from'./generationModels.js';import {mapDesignCorpus,playableTemplatePreviewUrl}from'./canvasChatTemplates.js';import {config}from'../../config/env-config.js';import {useStudioCatalogTemplates}from'./useStudioCatalogTemplates.js';import {DESIGN_PROMPT_TEMPLATES}from'./designPromptTemplates.js';import {templateHasUsableConfig,loadTemplateTimeline}from'./templateImport/loadTemplate.js';import {loadVideoProjects,projectHasWork,newVideoProjectId,snapshotProject,upsertVideoProject,persistVideoProjects,relativeProjectTime}from'./videoEditor/videoProjectsStore.js';import {AgentCutPane}from'./videoEditor/agent/AgentCutPane.js';import {TextAnimationPicker,MusicLibrarySection,RevoiceSection,CaptionsPanel,LayersPanel}from'./videoEditor/EditorPanels.js';import {TRANSITION_SPEEDS,transitionLabel,DEFAULT_TRANSITION_MS,transitionSpeedId}from'./videoEditor/transitions.js';import {canvasForRatio,canvasForAspect}from'./videoEditor/compileTimeline.js';import {reflowSceneChildren,sceneSpans,stampScene,layerInView}from'./videoEditor/sceneLayers.js';import {BlurBoxOverlay}from'./videoEditor/BlurBoxOverlay.js';import {ToolsDrawer}from'./videoEditor/tools/ToolsDrawer.js';import {staleMediaUrls,withRenewedUrls}from'./videoEditor/renewLinks.js';import {ensureFetchableMediaUrl}from'./mediaUrls.js';import {ProduceVideoSheet}from'./videoEditor/produce/ProduceVideoSheet.js';import {sceneFootagePatch,produceScenes,produceJob,runProduce}from'./videoEditor/produce/produceScenes.js';import {useCanvasTheme,themedStyles,CANVAS_DARK}from'./canvasTheme.js';import {Pressable,pressedStyle,RADIUS,SPACE,HIT,TYPE}from'./canvasUi.js';var __defProp = Object.defineProperty;
2
2
  var __defProps = Object.defineProperties;
3
3
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
4
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -68,6 +68,10 @@ const TABS = [{
68
68
  id: "logo",
69
69
  icon: "postage-stamp",
70
70
  label: "Logo"
71
+ }, {
72
+ id: "layers",
73
+ icon: "layers-outline",
74
+ label: "Layers"
71
75
  }, {
72
76
  id: "agent",
73
77
  icon: "robot-outline",
@@ -198,7 +202,7 @@ function VideoEditorExperience({
198
202
  indexUrl,
199
203
  initialRailTab
200
204
  }) {
201
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
205
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
202
206
  const theme = useCanvasTheme();
203
207
  const styles = useMemo(() => makeStyles(theme), [theme]);
204
208
  const stageStyles = useMemo(() => makeStyles(CANVAS_DARK), []);
@@ -1195,38 +1199,35 @@ function VideoEditorExperience({
1195
1199
  setTimeline((t) => removeText(t, selectedText.id));
1196
1200
  setSelectedTextId(null);
1197
1201
  }, style: styles.chip, accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, styles.chipDanger], children: "Remove" }) })
1198
- ] })
1202
+ ] }),
1203
+ /* @__PURE__ */ jsx(TextAnimationPicker, { text: selectedText, onPatch: (patch) => setTimeline((t) => updateText(t, selectedText.id, patch)) })
1199
1204
  ] }) : null
1200
- ] }) : railTab === "music" ? /* @__PURE__ */ jsx(SoundtrackPanel, { runAction, soundtrack: (_j = timeline.soundtrack) != null ? _j : null, totalSec: total.knownSec, onSoundtrack: (soundtrack) => setTimeline((t) => __spreadProps(__spreadValues({}, t), {
1201
- soundtrack
1202
- })), onNotice: setNotice }) : railTab === "voiceover" ? /* @__PURE__ */ jsx(VoicePanel, { runAction, uploadMedia, audioRecorder, voiceover: (_k = timeline.voiceover) != null ? _k : null, selectedClip: selected, onVoiceover: (voiceover) => setTimeline((t) => __spreadProps(__spreadValues({}, t), {
1203
- voiceover
1204
- })), onSceneAudio: addSceneAudio, onNotice: setNotice }) : railTab === "agent" ? /* @__PURE__ */ jsx(AgentCutPane, { timeline, setTimeline, token, indexUrl, runAction, uploadMedia, onAddMedia: addLibraryMedia, onFilm: filmScenes }) : railTab === "captions" ? /* @__PURE__ */ jsxs(View, { children: [
1205
- /* @__PURE__ */ jsx(Text, { style: styles.panelBarTitle, children: "Captions" }),
1206
- /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "One captions lane. Add at the playhead, then tap a row to edit." }),
1207
- /* @__PURE__ */ jsx(Pressable, { onPress: () => {
1208
- const preset = TEXT_PRESETS.find((p) => p.id === "caption");
1209
- addText(preset ? {
1210
- text: preset.text,
1211
- x: preset.x,
1212
- y: preset.y
1213
- } : {
1214
- text: "Caption",
1215
- x: 0.5,
1216
- y: 0.86
1205
+ ] }) : railTab === "music" ? /* @__PURE__ */ jsxs(View, { children: [
1206
+ /* @__PURE__ */ jsx(SoundtrackPanel, { runAction, soundtrack: (_j = timeline.soundtrack) != null ? _j : null, totalSec: total.knownSec, onSoundtrack: (soundtrack) => setTimeline((t) => __spreadProps(__spreadValues({}, t), {
1207
+ soundtrack
1208
+ })), onNotice: setNotice }),
1209
+ /* @__PURE__ */ jsx(MusicLibrarySection, { runAction, totalSec: total.knownSec, onUse: (audioUrl, title) => setTimeline((t) => {
1210
+ var _a2, _b2;
1211
+ return __spreadProps(__spreadValues({}, t), {
1212
+ soundtrack: {
1213
+ audioUrl,
1214
+ mode: (_b2 = (_a2 = t.soundtrack) == null ? void 0 : _a2.mode) != null ? _b2 : "mix",
1215
+ title
1216
+ }
1217
1217
  });
1218
- }, style: [styles.chip, styles.chipActive, styles.chipWide], accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, styles.chipLabelActive], children: "Add caption at playhead" }) }),
1219
- timeline.texts.length === 0 ? /* @__PURE__ */ jsx(Text, { style: styles.panelEmpty, children: "No captions yet." }) : timeline.texts.map((row) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => {
1220
- setSelectedTextId(row.id);
1221
- setTab("text");
1222
- }, style: styles.captionRow, children: [
1223
- /* @__PURE__ */ jsx(Text, { style: styles.captionRowText, numberOfLines: 1, children: row.text || "Caption" }),
1224
- /* @__PURE__ */ jsxs(Text, { style: styles.captionRowMeta, children: [
1225
- row.startSec.toFixed(1),
1226
- "s"
1227
- ] })
1228
- ] }, row.id))
1229
- ] }) : railTab === "audio" ? /* @__PURE__ */ jsxs(View, { children: [
1218
+ }), onNotice: setNotice })
1219
+ ] }) : railTab === "voiceover" ? /* @__PURE__ */ jsxs(View, { children: [
1220
+ (selected == null ? void 0 : selected.type) === "video" ? /* @__PURE__ */ jsx(RevoiceSection, { clip: selected, setTimeline, runAction, sourceSec, onNotice: setNotice }, selected.id) : null,
1221
+ /* @__PURE__ */ jsx(VoicePanel, { runAction, uploadMedia, audioRecorder, voiceover: (_k = timeline.voiceover) != null ? _k : null, selectedClip: selected, onVoiceover: (voiceover) => setTimeline((t) => __spreadProps(__spreadValues({}, t), {
1222
+ voiceover
1223
+ })), onSceneAudio: addSceneAudio, onNotice: setNotice })
1224
+ ] }) : railTab === "agent" ? /* @__PURE__ */ jsx(AgentCutPane, { timeline, setTimeline, token, indexUrl, runAction, uploadMedia, onAddMedia: addLibraryMedia, onFilm: filmScenes, library: media, sourceSec }) : railTab === "captions" ? /* @__PURE__ */ jsx(CaptionsPanel, { timeline, setTimeline, runAction, selectedClip: selected, playhead, sourceSec, onSelectText: (id) => {
1225
+ setSelectedTextId(id);
1226
+ setTab("text");
1227
+ }, onNotice: setNotice }) : railTab === "layers" ? /* @__PURE__ */ jsx(LayersPanel, { timeline, setTimeline, sceneId: (_l = selected == null ? void 0 : selected.id) != null ? _l : null, selectedTextId, onSelectText: (id) => {
1228
+ setSelectedTextId(id);
1229
+ setTab("text");
1230
+ }, onSelectScene: () => setSelectedTextId(null) }) : railTab === "audio" ? /* @__PURE__ */ jsxs(View, { children: [
1230
1231
  /* @__PURE__ */ jsx(Text, { style: styles.panelBarTitle, children: "AI audio" }),
1231
1232
  /* @__PURE__ */ jsx(TextInput, { value: audioPrompt, onChangeText: setAudioPrompt, placeholder: "Music or narration prompt\u2026", placeholderTextColor: theme.edInk3, style: styles.textInput, multiline: true }),
1232
1233
  /* @__PURE__ */ jsx(Pressable, { onPress: generateAiAudio, disabled: audioBusy || !audioPrompt.trim(), style: [styles.chip, styles.chipActive, styles.chipWide], children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, styles.chipLabelActive], children: audioBusy ? "Generating\u2026" : "Generate" }) }),
@@ -1247,8 +1248,8 @@ function VideoEditorExperience({
1247
1248
  }), style: styles.chip, accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: styles.chipLabel, children: "Remove" }) }),
1248
1249
  /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "Drag the box on the preview; pull its corner to resize." })
1249
1250
  ] }) : null,
1250
- selectedSegmentId && ((_l = timeline.segments) != null ? _l : []).find((s) => s.id === selectedSegmentId) ? /* @__PURE__ */ jsxs(Text, { style: styles.panelEmpty, children: [
1251
- (_n = ((_m = timeline.segments) != null ? _m : []).find((s) => s.id === selectedSegmentId)) == null ? void 0 : _n.name,
1251
+ selectedSegmentId && ((_m = timeline.segments) != null ? _m : []).find((s) => s.id === selectedSegmentId) ? /* @__PURE__ */ jsxs(Text, { style: styles.panelEmpty, children: [
1252
+ (_o = ((_n = timeline.segments) != null ? _n : []).find((s) => s.id === selectedSegmentId)) == null ? void 0 : _o.name,
1252
1253
  " ",
1253
1254
  "\xB7 2s range at the playhead. Hide the segment lane to switch it off."
1254
1255
  ] }) : /* @__PURE__ */ jsx(Text, { style: styles.panelEmpty, children: "Speed, zoom, crop, trim or blur a 2s range at the playhead." })
@@ -1284,7 +1285,7 @@ function VideoEditorExperience({
1284
1285
  opacity
1285
1286
  }] }, `${color}-${opacity}`)),
1286
1287
  (selectedBlur == null ? void 0 : selectedBlur.blur) && tab === "segment" ? /* @__PURE__ */ jsx(BlurBoxOverlay, { box: selectedBlur.blur, onChange: (box) => patchBlur(box) }) : null,
1287
- timeline.texts.filter((t) => layerInView(t, selected.id)).map((t) => /* @__PURE__ */ jsx(DraggableText, { text: t.text, x: t.x, y: t.y, active: t.id === selectedTextId, onSelect: () => {
1288
+ timeline.texts.filter((t) => layerInView(t, selected.id) && !t.hidden && !(t.role === "caption" && timeline.captionsHidden)).map((t) => /* @__PURE__ */ jsx(DraggableText, { look: t.role === "caption" ? __spreadValues(__spreadValues({}, timeline.captionStyle), t.style) : t.style, text: t.text, x: t.x, y: t.y, active: t.id === selectedTextId, onSelect: () => {
1288
1289
  setSelectedTextId(t.id);
1289
1290
  setTab("text");
1290
1291
  }, onMove: (x, y) => setTimeline((tl) => updateText(tl, t.id, {
@@ -1322,12 +1323,25 @@ function VideoEditorExperience({
1322
1323
  stageTool === "transition" ? CLIP_TRANSITIONS.map((fx) => {
1323
1324
  var _a2;
1324
1325
  const on = ((_a2 = selected.transitionIn) == null ? void 0 : _a2.effect) === fx;
1326
+ return /* @__PURE__ */ jsx(Pressable, { onPress: () => {
1327
+ var _a3, _b2;
1328
+ return patchSelected({
1329
+ transitionIn: on ? null : {
1330
+ effect: fx,
1331
+ durationMs: (_b2 = (_a3 = selected.transitionIn) == null ? void 0 : _a3.durationMs) != null ? _b2 : DEFAULT_TRANSITION_MS
1332
+ }
1333
+ });
1334
+ }, style: [styles.chip, on && styles.chipActive], children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, on && styles.chipLabelActive], children: transitionLabel(fx) }) }, fx);
1335
+ }) : null,
1336
+ stageTool === "transition" && selected.transitionIn ? TRANSITION_SPEEDS.map((sp) => {
1337
+ const tr = selected.transitionIn;
1338
+ const on = transitionSpeedId(tr.durationMs) === sp.id;
1325
1339
  return /* @__PURE__ */ jsx(Pressable, { onPress: () => patchSelected({
1326
- transitionIn: on ? null : {
1327
- effect: fx,
1328
- durationMs: 1e3
1340
+ transitionIn: {
1341
+ effect: tr.effect,
1342
+ durationMs: sp.durationMs
1329
1343
  }
1330
- }), style: [styles.chip, on && styles.chipActive], children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, on && styles.chipLabelActive], children: fx }) }, fx);
1344
+ }), style: [styles.chip, on && styles.chipActive], accessibilityLabel: `Transition speed ${sp.label}`, children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, on && styles.chipLabelActive], children: sp.label }) }, sp.id);
1331
1345
  }) : null
1332
1346
  ] }) : null,
1333
1347
  /* @__PURE__ */ jsx(TimelineTrack, { timeline, selectedClipId, selectedTextId, selectedSegmentId, segmentMenuOpen, playing, playhead, totalSec: total.knownSec, onTogglePlay: previewPlay, onSkipStart: () => {
@@ -1435,6 +1449,7 @@ function formatSec(sec) {
1435
1449
  return `${m}:${s.toFixed(1).padStart(4, "0")}`;
1436
1450
  }
1437
1451
  function DraggableText({
1452
+ look,
1438
1453
  text,
1439
1454
  x,
1440
1455
  y,
@@ -1469,7 +1484,11 @@ function DraggableText({
1469
1484
  }, children: /* @__PURE__ */ jsx(GestureDetector, { gesture: Gesture.Race(pan, tap), children: /* @__PURE__ */ jsx(View, { style: [styles.stageText, active && styles.stageTextActive, {
1470
1485
  left: `${x * 100}%`,
1471
1486
  top: `${y * 100}%`
1472
- }], children: /* @__PURE__ */ jsx(Text, { style: styles.stageTextLabel, children: text }) }) }) });
1487
+ }], children: /* @__PURE__ */ jsx(Text, { style: [styles.stageTextLabel, (look == null ? void 0 : look.color) ? {
1488
+ color: look.color
1489
+ } : null, (look == null ? void 0 : look.fontSize) ? {
1490
+ fontSize: Math.max(10, Math.min(28, look.fontSize * 0.4))
1491
+ } : null], children: text }) }) }) });
1473
1492
  }
1474
1493
  function TimelineTrack({
1475
1494
  timeline,