@cueframe/kernel 0.2.1 → 0.2.3

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 (332) hide show
  1. package/dist/_members/animate/index.d.ts +8 -2
  2. package/dist/_members/animate/layout/FlexLayout.d.ts +69 -0
  3. package/dist/_members/animate/layout/fit.d.ts +44 -0
  4. package/dist/_members/animate/layout/index.d.ts +3 -0
  5. package/dist/_members/animate/layout/solveFlex.d.ts +70 -0
  6. package/dist/_members/animate/media/MediaTileScene.d.ts +65 -0
  7. package/dist/_members/animate/media/recipes.d.ts +61 -0
  8. package/dist/_members/animate/scene/FocusPass.d.ts +76 -0
  9. package/dist/_members/animate/scene/UnlitPlane.d.ts +45 -0
  10. package/dist/_members/animate/scene/__oracle__/cssProjection.d.ts +24 -0
  11. package/dist/_members/animate/scene/assets.d.ts +21 -0
  12. package/dist/_members/animate/scene/backdrop.d.ts +7 -0
  13. package/dist/_members/animate/scene/coordinates.d.ts +58 -0
  14. package/dist/_members/animate/scene/deviceOpacity.d.ts +18 -0
  15. package/dist/_members/animate/scene/errors.d.ts +14 -0
  16. package/dist/_members/animate/scene/finishing.d.ts +69 -0
  17. package/dist/_members/animate/scene/finishingMath.d.ts +60 -0
  18. package/dist/_members/animate/scene/finishingPass.d.ts +35 -0
  19. package/dist/_members/animate/scene/focusBlur.d.ts +56 -0
  20. package/dist/_members/animate/scene/focusResources.d.ts +190 -0
  21. package/dist/_members/animate/scene/focusShaders.d.ts +68 -0
  22. package/dist/_members/animate/scene/fontReadiness.d.ts +27 -0
  23. package/dist/_members/animate/scene/grainNoise.d.ts +118 -0
  24. package/dist/_members/animate/scene/index.d.ts +19 -0
  25. package/dist/_members/animate/scene/internal.d.ts +29 -0
  26. package/dist/_members/animate/scene/planeFit.d.ts +46 -0
  27. package/dist/_members/animate/scene/preparedWorldText.d.ts +25 -0
  28. package/dist/_members/animate/scene/rasterCache.d.ts +30 -0
  29. package/dist/_members/animate/scene/rasterReadiness.d.ts +33 -0
  30. package/dist/_members/animate/scene/readiness.d.ts +69 -0
  31. package/dist/_members/animate/scene/redraw.d.ts +10 -0
  32. package/dist/_members/animate/scene/render.d.ts +9 -0
  33. package/dist/_members/animate/scene/scaling.d.ts +13 -0
  34. package/dist/_members/animate/scene/text.d.ts +40 -0
  35. package/dist/_members/animate/scene/textLayout.d.ts +78 -0
  36. package/dist/_members/animate/scene/textureImageSize.d.ts +4 -0
  37. package/dist/_members/animate/scene/useSceneImageTexture.d.ts +21 -0
  38. package/dist/_members/animate/scene/useWorldTextTexture.d.ts +21 -0
  39. package/dist/_members/animate/scene/v2/MeasuredPlaneGeometry.d.ts +7 -0
  40. package/dist/_members/animate/scene/v2/PhotographicStudioRig.d.ts +11 -0
  41. package/dist/_members/animate/scene/v2/PreparedSceneShotV1.d.ts +12 -0
  42. package/dist/_members/animate/scene/v2/SceneShotV2.d.ts +59 -0
  43. package/dist/_members/animate/scene/v2/builders.d.ts +170 -0
  44. package/dist/_members/animate/scene/v2/finishes.d.ts +152 -0
  45. package/dist/_members/animate/scene/v2/lighting.d.ts +119 -0
  46. package/dist/_members/animate/scene/v2/observePmremTargets.d.ts +4 -0
  47. package/dist/_members/animate/scene/v2/preparationFacts.d.ts +32 -0
  48. package/dist/_members/animate/scene/v2/preparedSurface.d.ts +17 -0
  49. package/dist/_members/animate/scene/v2/projectedResolution.d.ts +2 -0
  50. package/dist/_members/animate/scene/v2/renderTargetObserver.d.ts +5 -0
  51. package/dist/_members/animate/scene/v2/runtimeAllocations.d.ts +55 -0
  52. package/dist/_members/animate/scene/v2/shadow.d.ts +23 -0
  53. package/dist/_members/animate/scene/v2/slabGeometry.d.ts +134 -0
  54. package/dist/_members/animate/scene/v2/slots.d.ts +73 -0
  55. package/dist/_members/animate/scene/v2/videoBinding.d.ts +39 -0
  56. package/dist/_members/animate/scene/worldBounds.d.ts +19 -0
  57. package/dist/_members/animate/scene/worldTextRaster.d.ts +87 -0
  58. package/dist/_members/animate/scene/worldTextTexture.d.ts +32 -0
  59. package/dist/_members/animate/stage/PerspectiveStage.d.ts +73 -0
  60. package/dist/_members/animate/stage/camera.d.ts +143 -0
  61. package/dist/_members/animate/stage/dof.d.ts +9 -0
  62. package/dist/_members/animate/stage/index.d.ts +6 -0
  63. package/dist/_members/animate/stage/presets.d.ts +17 -0
  64. package/dist/_members/animate/three/DeviceMesh.d.ts +256 -0
  65. package/dist/_members/animate/three/SceneCameraRig.d.ts +12 -0
  66. package/dist/_members/animate/three/StageCameraRig.d.ts +7 -0
  67. package/dist/_members/animate/three/StudioRig.d.ts +228 -0
  68. package/dist/_members/animate/three/ThreeCanvas.d.ts +22 -0
  69. package/dist/_members/animate/three/defaultScreen.d.ts +23 -0
  70. package/dist/_members/animate/three/index.d.ts +7 -1
  71. package/dist/_members/animate/three/textureLifecycle.d.ts +29 -0
  72. package/dist/_members/animate/three/toneMapping.d.ts +113 -0
  73. package/dist/_members/animate/three/useImageTexture.d.ts +17 -0
  74. package/dist/_members/authoring/index.d.ts +2 -0
  75. package/dist/_members/authoring/scene/index.d.ts +6 -0
  76. package/dist/_members/authoring/scene/materialize.d.ts +47 -0
  77. package/dist/_members/authoring/scene/validate.d.ts +80 -0
  78. package/dist/_members/authoring/scene/wrapper.d.ts +41 -0
  79. package/dist/_members/component-runtime/allowedImports.d.ts +3 -0
  80. package/dist/_members/component-runtime/allowedImports.d.ts.map +1 -0
  81. package/dist/_members/component-runtime/bake.d.ts +8 -0
  82. package/dist/_members/component-runtime/bake.d.ts.map +1 -1
  83. package/dist/_members/component-runtime/browserFirewall.d.ts +7 -1
  84. package/dist/_members/component-runtime/browserFirewall.d.ts.map +1 -1
  85. package/dist/_members/component-runtime/browserOptions.d.ts +59 -3
  86. package/dist/_members/component-runtime/browserOptions.d.ts.map +1 -1
  87. package/dist/_members/component-runtime/canonicalIdentity.d.ts +14 -0
  88. package/dist/_members/component-runtime/canonicalIdentity.d.ts.map +1 -1
  89. package/dist/_members/component-runtime/contracts.d.ts +341 -1
  90. package/dist/_members/component-runtime/contracts.d.ts.map +1 -1
  91. package/dist/_members/component-runtime/fixtures/imageTileDriftWall.d.ts +5 -0
  92. package/dist/_members/component-runtime/fixtures/imageTileDriftWall.d.ts.map +1 -0
  93. package/dist/_members/component-runtime/fixtures/mediaTileMixed.d.ts +5 -0
  94. package/dist/_members/component-runtime/fixtures/mediaTileMixed.d.ts.map +1 -0
  95. package/dist/_members/component-runtime/fixtures/mediaTileVideo.d.ts +8 -0
  96. package/dist/_members/component-runtime/fixtures/mediaTileVideo.d.ts.map +1 -0
  97. package/dist/_members/component-runtime/importPolicy.d.ts +3 -2
  98. package/dist/_members/component-runtime/importPolicy.d.ts.map +1 -1
  99. package/dist/_members/component-runtime/index.d.ts +3 -0
  100. package/dist/_members/component-runtime/index.d.ts.map +1 -1
  101. package/dist/_members/component-runtime/livePreviewProxy.d.ts +7 -0
  102. package/dist/_members/component-runtime/livePreviewProxy.d.ts.map +1 -0
  103. package/dist/_members/component-runtime/localRoot.d.ts +37 -0
  104. package/dist/_members/component-runtime/localRoot.d.ts.map +1 -0
  105. package/dist/_members/component-runtime/mediaResolution.d.ts +25 -0
  106. package/dist/_members/component-runtime/mediaResolution.d.ts.map +1 -0
  107. package/dist/_members/component-runtime/render.d.ts +151 -13
  108. package/dist/_members/component-runtime/render.d.ts.map +1 -1
  109. package/dist/_members/component-runtime/renderDiagnostics.d.ts +14 -0
  110. package/dist/_members/component-runtime/renderDiagnostics.d.ts.map +1 -0
  111. package/dist/_members/component-runtime/sceneAdmission.d.ts +47 -0
  112. package/dist/_members/component-runtime/sceneAdmission.d.ts.map +1 -0
  113. package/dist/_members/component-runtime/sourceWorkspace.d.ts +8 -0
  114. package/dist/_members/component-runtime/sourceWorkspace.d.ts.map +1 -1
  115. package/dist/_members/component-runtime/webglProbe.d.ts +191 -0
  116. package/dist/_members/component-runtime/webglProbe.d.ts.map +1 -0
  117. package/dist/_members/composition/fonts/bundledFaces.d.ts +150 -0
  118. package/dist/_members/composition/fonts/captionFaces.d.ts +268 -0
  119. package/dist/_members/composition/fonts.d.ts +11 -4
  120. package/dist/_members/composition/graphics-plan/schemas.d.ts +4 -4
  121. package/dist/_members/composition/ops/types.d.ts +1 -1
  122. package/dist/_members/composition/primitive-catalog/types.d.ts +1 -0
  123. package/dist/_members/composition/projection/behind-readiness.d.ts +3 -0
  124. package/dist/_members/composition/projection/brandKit.d.ts +6 -0
  125. package/dist/_members/composition/projection/composition-floor.d.ts +2 -1
  126. package/dist/_members/composition/scene/animation.d.ts +25 -0
  127. package/dist/_members/composition/scene/budget.d.ts +29 -0
  128. package/dist/_members/composition/scene/budgetPolicy.d.mts +13 -0
  129. package/dist/_members/composition/scene/clipRules.d.ts +119 -0
  130. package/dist/_members/composition/scene/constraints.d.ts +61 -0
  131. package/dist/_members/composition/scene/device.d.ts +21 -0
  132. package/dist/_members/composition/scene/examples.d.ts +11 -0
  133. package/dist/_members/composition/scene/index.d.ts +11 -0
  134. package/dist/_members/composition/scene/photographicRig.d.ts +242 -0
  135. package/dist/_members/composition/scene/preparedRender.d.ts +239 -0
  136. package/dist/_members/composition/scene/resolution.d.ts +178 -0
  137. package/dist/_members/composition/scene/schema.d.ts +351 -0
  138. package/dist/_members/composition/scene/videoSchedule.d.ts +43 -0
  139. package/dist/_members/composition/validators/brandKit.d.ts +1 -0
  140. package/dist/_members/composition/validators/render.d.ts +2 -0
  141. package/dist/_members/composition-ops/index.d.ts +45 -0
  142. package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
  143. package/dist/_members/core/render/compositionRender.d.ts +41 -9
  144. package/dist/_members/core/render/index.d.ts +9 -2
  145. package/dist/_members/core/render/sceneCaptureIdentity.d.ts +14 -0
  146. package/dist/_members/core/render/sceneShotPlan.d.ts +142 -0
  147. package/dist/_members/core/render/sceneShotPreparation.d.ts +57 -0
  148. package/dist/_members/core/render/slabDescriptor.d.ts +21 -0
  149. package/dist/_members/core/render/trackProjection.d.ts +33 -0
  150. package/dist/_members/core/render/types.d.ts +142 -0
  151. package/dist/_members/errors/registry.d.ts +6 -0
  152. package/dist/_members/mcp/adapter.d.ts +5 -0
  153. package/dist/_members/mcp/generated/sceneContract.d.ts +155 -0
  154. package/dist/_members/mcp/sceneShot.d.ts +38 -0
  155. package/dist/_members/mcp/sceneShotExample.d.ts +22 -0
  156. package/dist/_members/media-model/api.d.ts +1 -0
  157. package/dist/_members/media-model/media-kind.d.ts +1 -1
  158. package/dist/_members/media-model/testing/mediaStoreContract.d.ts +1 -1
  159. package/dist/_members/primitives/effects/index.d.ts +1 -0
  160. package/dist/_members/primitives/effects/stage-camera/config.d.ts +50 -0
  161. package/dist/_members/primitives/effects/stage-camera/index.d.ts +31 -0
  162. package/dist/_members/primitives/layouts/flex-layout/config.d.ts +73 -0
  163. package/dist/_members/primitives/layouts/flex-layout/index.d.ts +4 -0
  164. package/dist/_members/primitives/layouts/index.d.ts +1 -0
  165. package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +1 -1
  166. package/dist/_members/primitives/lib/frameScale.d.ts +4 -0
  167. package/dist/_members/primitives/lib/index.d.ts +1 -0
  168. package/dist/_members/primitives/lib/palette.d.ts +30 -30
  169. package/dist/_members/primitives/lib/text/contrast.d.ts +2 -1
  170. package/dist/_members/primitives/lib/text/spec.d.ts +0 -8
  171. package/dist/_members/primitives/lib/types.d.ts +2 -0
  172. package/dist/_members/primitives/scenes/device-showcase/config.d.ts +41 -0
  173. package/dist/_members/primitives/scenes/device-showcase/index.d.ts +36 -0
  174. package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +1 -0
  175. package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +2 -1
  176. package/dist/_members/primitives/scenes/index.d.ts +1 -0
  177. package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +1 -1
  178. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +1 -0
  179. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +2 -1
  180. package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +1 -1
  181. package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +1 -1
  182. package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -1
  183. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  184. package/dist/_members/render-harness/css-tree-subpaths.d.ts +11 -0
  185. package/dist/_members/render-harness/extractSegments.d.ts +1 -0
  186. package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
  187. package/dist/_members/render-harness/imageHeader.d.ts +14 -0
  188. package/dist/_members/render-harness/imageHeader.d.ts.map +1 -0
  189. package/dist/_members/render-harness/index.d.ts +6 -0
  190. package/dist/_members/render-harness/index.d.ts.map +1 -1
  191. package/dist/_members/render-harness/materializeSources.d.ts +46 -2
  192. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  193. package/dist/_members/render-harness/nodeScenePreparation.d.ts +97 -0
  194. package/dist/_members/render-harness/nodeScenePreparation.d.ts.map +1 -0
  195. package/dist/_members/render-harness/remotion-runtime.d.ts +16 -2
  196. package/dist/_members/render-harness/renderInputAssets.d.ts +1 -1
  197. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  198. package/dist/_members/render-harness/resolveAssets.d.ts +2 -2
  199. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  200. package/dist/_members/render-harness/sceneShotAssets.d.ts +17 -0
  201. package/dist/_members/render-harness/sceneShotAssets.d.ts.map +1 -0
  202. package/dist/animate/preparation-facts.d.ts +1 -0
  203. package/dist/animate/preparation-facts.js +22 -0
  204. package/dist/animate.js +336 -1005
  205. package/dist/authoring/build-tools.js +7 -6
  206. package/dist/authoring/context.js +5 -4
  207. package/dist/authoring/prompts.js +1 -1
  208. package/dist/authoring/scene.d.ts +1 -0
  209. package/dist/authoring/scene.js +50 -0
  210. package/dist/authoring/tools.js +6 -5
  211. package/dist/authoring.js +49 -29
  212. package/dist/chunk-2L7PYYJK.js +23 -0
  213. package/dist/{chunk-ZN6P3KOJ.js → chunk-32TH76H3.js} +2 -2
  214. package/dist/chunk-5DJ3IEJR.js +4424 -0
  215. package/dist/chunk-6BVVCRRD.js +26488 -0
  216. package/dist/{chunk-DQKSCHFC.js → chunk-6EWRIAZA.js} +187 -66
  217. package/dist/{chunk-YQ7FFW3G.js → chunk-6VWICHOZ.js} +26 -5
  218. package/dist/{chunk-2PGLNTB7.js → chunk-A74FZCPY.js} +45 -5
  219. package/dist/{chunk-C5SEPOWD.js → chunk-AS5EXBNS.js} +1792 -707
  220. package/dist/{chunk-BKHGL4MB.js → chunk-B3GSTQLR.js} +341 -274
  221. package/dist/chunk-BVA3537Z.js +63 -0
  222. package/dist/{chunk-DHKQ47Q6.js → chunk-DAARYRNT.js} +6 -1
  223. package/dist/chunk-DQLYWNLC.js +2063 -0
  224. package/dist/chunk-E6WHXIDF.js +3619 -0
  225. package/dist/{chunk-NOEBAV2G.js → chunk-E7GIZEPS.js} +1 -1
  226. package/dist/{chunk-M2TLRXEO.js → chunk-EXY4JJPH.js} +1 -1
  227. package/dist/{chunk-GEGRJKKO.js → chunk-F2DJL7P7.js} +1 -1
  228. package/dist/{chunk-AWT3P5ZN.js → chunk-FVDFPJHT.js} +1 -1
  229. package/dist/{chunk-EMGFZ3PR.js → chunk-FWSJLHSV.js} +5 -1
  230. package/dist/{chunk-TMIBBD5E.js → chunk-I5QWBM3M.js} +280 -113
  231. package/dist/{chunk-IBMJ33EL.js → chunk-I5RX2QZT.js} +1 -1
  232. package/dist/{chunk-4FOOBSEE.js → chunk-J3DIUG24.js} +1 -0
  233. package/dist/{chunk-AD5HWBCE.js → chunk-JX53CVJV.js} +14 -5
  234. package/dist/{chunk-LNBVTDFR.js → chunk-L2AHS3AW.js} +1 -1
  235. package/dist/{chunk-BDMTUEEZ.js → chunk-LT4PWSR2.js} +2 -2
  236. package/dist/chunk-MH3UPKWR.js +3415 -0
  237. package/dist/{chunk-RFXR7ATW.js → chunk-NUKDEOK6.js} +13 -1
  238. package/dist/{chunk-IJ7PVJTK.js → chunk-ODUWCQI3.js} +3 -2
  239. package/dist/chunk-QAGGJHAF.js +16 -0
  240. package/dist/chunk-QS36DMFG.js +332 -0
  241. package/dist/{chunk-G5BFI32U.js → chunk-RAXHCRVV.js} +1 -1
  242. package/dist/{chunk-BIBYZJL3.js → chunk-RL5SO653.js} +3 -3
  243. package/dist/{chunk-ZSZABOE5.js → chunk-S5H6GH6M.js} +1 -1
  244. package/dist/{chunk-EEXCDFY5.js → chunk-SD25VQDE.js} +1 -1
  245. package/dist/{chunk-Y3QGYASW.js → chunk-SX523NDS.js} +14 -14
  246. package/dist/chunk-TARKDVP6.js +430 -0
  247. package/dist/{chunk-IHFREGFA.js → chunk-TCHPRGC5.js} +18 -2
  248. package/dist/{chunk-ZCAQHNPI.js → chunk-UKGNHZS4.js} +1 -1
  249. package/dist/{chunk-KU376ELE.js → chunk-UY77TMKD.js} +31 -44
  250. package/dist/chunk-VKATKWWR.js +1462 -0
  251. package/dist/{chunk-CX2IIQ4R.js → chunk-W2245F6G.js} +29 -29
  252. package/dist/{chunk-XHUYWVYK.js → chunk-WBNFSG6T.js} +1 -1
  253. package/dist/chunk-WIHXXF3X.js +221 -0
  254. package/dist/{chunk-XVBOSPZI.js → chunk-X74EEFXV.js} +6 -6
  255. package/dist/{chunk-7KEUL3FI.js → chunk-XF2QMKRG.js} +9 -1
  256. package/dist/{chunk-HFC3MKXA.js → chunk-Y4HPN4BC.js} +1 -0
  257. package/dist/{chunk-6XI57FZZ.js → chunk-YFSBFCXO.js} +1022 -46
  258. package/dist/{chunk-6ID2J64H.js → chunk-YHC3RXS7.js} +162 -25
  259. package/dist/{chunk-KKEY5MIW.js → chunk-ZS3A3QUM.js} +16 -16
  260. package/dist/{chunk-LQUWKBST.js → chunk-ZVG446DJ.js} +139 -10
  261. package/dist/component-runtime/browserOptions.js +14 -3
  262. package/dist/component-runtime/contracts.js +35 -3
  263. package/dist/component-runtime/identity/browser.js +1 -1
  264. package/dist/component-runtime/identity.js +2 -2
  265. package/dist/component-runtime/importPolicy.js +2 -2
  266. package/dist/component-runtime/mediaResolution.d.ts +1 -0
  267. package/dist/component-runtime/mediaResolution.js +11 -0
  268. package/dist/component-runtime/render.js +38 -5
  269. package/dist/component-runtime.js +118 -14
  270. package/dist/compose.js +27 -21
  271. package/dist/composition/fonts.js +64 -67
  272. package/dist/composition/graphics-plan.js +3 -2
  273. package/dist/composition/ops.js +4 -3
  274. package/dist/composition/primitive-catalog.js +1 -1
  275. package/dist/composition/projection.js +10 -3
  276. package/dist/composition/scene/budget-policy.d.ts +1 -0
  277. package/dist/composition/scene/budget-policy.js +17 -0
  278. package/dist/composition/scene/schema.json +2757 -0
  279. package/dist/composition/scene.d.ts +1 -0
  280. package/dist/composition/scene.js +275 -0
  281. package/dist/composition/validators.js +3 -2
  282. package/dist/composition-ops.js +103 -13
  283. package/dist/composition.js +12 -5
  284. package/dist/{context-4GSDBFT3.js → context-IUPQ54V4.js} +5 -4
  285. package/dist/core/render.js +54 -3
  286. package/dist/core/select.js +2 -2
  287. package/dist/core.js +6 -3
  288. package/dist/director/ai-sdk.js +3 -3
  289. package/dist/director/domain.js +2 -2
  290. package/dist/director.js +3 -3
  291. package/dist/errors.js +1 -1
  292. package/dist/mcp/adapter.js +4 -4
  293. package/dist/mcp/core.js +1 -1
  294. package/dist/mcp/curation.js +1 -1
  295. package/dist/mcp/server.js +4 -4
  296. package/dist/mcp.js +4 -4
  297. package/dist/media-model/media-kind.js +2 -0
  298. package/dist/media-model/testing.js +16 -11
  299. package/dist/media-model.js +1 -1
  300. package/dist/nle-export.js +27 -21
  301. package/dist/primitives/backgrounds.js +2 -2
  302. package/dist/primitives/captions.js +21 -11
  303. package/dist/primitives/effects.js +14 -4
  304. package/dist/primitives/graphics.json +3 -0
  305. package/dist/primitives/hero-text.js +4 -3
  306. package/dist/primitives/layouts.js +9 -2
  307. package/dist/primitives/lib/frameScale.d.ts +1 -0
  308. package/dist/primitives/lib/frameScale.js +11 -0
  309. package/dist/primitives/lib/index.js +18 -10
  310. package/dist/primitives/lib/palette.js +1 -1
  311. package/dist/primitives/lib/text/contrast.js +2 -1
  312. package/dist/primitives/lib/text/typeface.js +1 -1
  313. package/dist/primitives/lib.js +18 -10
  314. package/dist/primitives/params-required.json +3 -0
  315. package/dist/primitives/scenes.js +12 -3
  316. package/dist/primitives/text.js +5 -5
  317. package/dist/primitives/transitions.js +2 -2
  318. package/dist/primitives/ui-blocks.js +7 -6
  319. package/dist/primitives/version-map.json +5 -2
  320. package/dist/primitives.js +27 -20
  321. package/dist/render-harness/cardAssetAdmission.js +2 -2
  322. package/dist/render-harness/renderInputAssets.js +2 -2
  323. package/dist/render-harness.js +876 -126
  324. package/package.json +51 -17
  325. package/dist/_members/animate/three/drei.d.ts +0 -6
  326. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +0 -9
  327. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +0 -1
  328. package/dist/chunk-4JRUGT2Y.js +0 -544
  329. package/dist/chunk-5OTQ7M43.js +0 -718
  330. package/dist/chunk-CGHTMZNC.js +0 -6
  331. package/dist/chunk-QBKDEO7J.js +0 -9521
  332. /package/dist/{chunk-H5LMJKZU.js → chunk-JVDUSOYG.js} +0 -0
@@ -17,7 +17,13 @@ export { Arrow, makeArrowPath } from './mobjects/Arrow.js';
17
17
  export { BrandBox } from './mobjects/BrandBox.js';
18
18
  export { Graph } from './mobjects/Graph.js';
19
19
  export { DiGraph } from './mobjects/DiGraph.js';
20
- export { ThreeCanvas } from './three/ThreeCanvas.js';
21
- export { Box, Sphere, Cylinder, Cone, Torus, TorusKnot, Plane, Circle, Ring, Dodecahedron, Icosahedron, Octahedron, Tetrahedron, Capsule, Extrude, Lathe, Tube, Text, Text3D, Center, Float, Environment, ContactShadows, AccumulativeShadows, RandomizedLight, Lightformer, Stage, Sky, Stars, Sparkles, Cloud, Line, QuadraticBezierLine, CubicBezierLine, CatmullRomLine, MeshDistortMaterial, MeshWobbleMaterial, MeshReflectorMaterial, MeshTransmissionMaterial, Edges, Outlines, GradientTexture, RoundedBox, Billboard, Html, PivotControls, Grid, Backdrop, } from './three/drei.js';
20
+ export { ThreeCanvas, StageCameraRig, useImageTexture, StudioRig, DeviceMesh, deviceDimensions, laptopLayout, lidRotationX, DEVICE_GLASS_OPACITY_ENCODED, DEVICE_GLASS_OPACITY_LINEAR, DEVICE_LIT_MATERIALS, DEVICE_PLANE_OFFSETS, SELF_TONE_MAPPED, UNLIT_COLOUR_MANAGED, makeDefaultScreenTexture, defaultScreenLayout, STUDIO_EDGE_LIGHTS, STUDIO_EDGE_INTENSITY, studioEdgeLightCount, DEFAULT_LIGHTING_PROFILE, LIGHTING_PROFILES, studioShadowFrustum, type StudioRigProps, type DeviceKind, type DeviceMeshProps, type DeviceDimensions, type LaptopLayout, type ScreenLayout, type SceneLightingProfile, } from './three/index.js';
21
+ export { solveFlex, flexReady, isFlexReady, leafIds, flexBoxToThree, fitBox, FlexLayout, useFlexReady, buildTree, unionTracks, weightsAt, type FlexCell, type FlexBox, type FlexSize, type FlexDir, type Fit, type FitMode, type FitResult, type FlexTrack, type FlexTrackSpec, type FlexLayoutProps, } from './layout/index.js';
22
+ export * from './stage/index.js';
23
+ export { MediaTileScene, mediaTileFramesReady, ImageTileScene, MEDIA_TILE_SCENE_LIMITS, assertMediaTileScene, mediaTileCropUvs, mediaTileFogDistances, type MediaTile, type MediaTileAsset, type MediaTileCamera, type MediaTileFog, type MediaTileSceneProps, type MediaTileStream, } from './media/MediaTileScene.js';
24
+ export { SceneShotError, referenceScale, conjugateF, sceneWorldMatrix, sceneCssMatrix, sceneLayerPose, scaleSceneTransform, type SceneShotRender, type SceneShotErrorCode, type SceneFrameSize, type ThreeLayerPose, type SceneVec3, type SceneWorldTransform, } from './scene/index.js';
25
+ export { SceneShotV2, backdropStyleV2, resolveSceneAssetsV2, sceneShadowBoundsV2, PreparedSceneShotV1, PreparedSceneShotError, SceneVideoBindingV1, SceneVideoTextureCommitV1, acquireSceneRuntimeAllocationV1, registerActualSceneResourcesV1, resetSceneRuntimeAllocationCountersV1, sceneRuntimeAllocationSnapshotV1, LaptopObject, PageObject, SlabObject, WorldTextObject, PosedObject, SLAB_CONTENT_OFFSET, type SceneShotV2Props, type PreparedSceneShotV1Props, type SceneShotSpecV2, type SceneObjectV2, type SceneGroupV2, type SceneVideoBindingPropsV1, type SceneVideoTextureBindingV1, type SceneActualResourceRowV1, type SceneActualResourceReceiptV1, type SceneRuntimeAllocationSnapshotV1, type SceneLaptopV2, type SceneSlabV2, type ScenePageV2, type SceneWorldTextV2, type SceneScreenTextV2, type SceneBackdropV2, type ScenePostV2, type SceneRigV2, type SceneGeneratedStudioRigV2, type ScenePhotographicStudioRigV1, type SceneSurfaceBindingV2, } from './scene/index.js';
26
+ export { SLAB_TESSELLATION, SLAB_TESSELLATION_VERSION, SLAB_TRIANGLES, SLAB_DEFAULTS, SCENE_MAX_TRIANGLES, SCENE_MAX_LAYERS, slabBodyGeometry, slabTriangleCount, slabTrianglesFor, withNormalisedFaceUv, SLAB_FINISHES, SLAB_FINISH_SPEC, slabFinishMaterial, slabFinishDeclaredBytes, satinRoughnessMap, satinRoughnessScalar, brushedNormal, anodisedGrainNormal, PhotographicStudioRig, PhotographicStudioEnvironmentError, verifyPhotographicStudioHdr, PHOTOGRAPHIC_STUDIO_RIG_ID, PHOTOGRAPHIC_STUDIO_HDRI_PATH, PHOTOGRAPHIC_STUDIO_HDRI_SHA256, PHOTOGRAPHIC_STUDIO_HDRI_BYTES, PHOTOGRAPHIC_STUDIO_PMREM_VERSION, PHOTOGRAPHIC_STUDIO_LIGHTING_VERSION, PHOTOGRAPHIC_STUDIO_EDGE_LIGHTS, PHOTOGRAPHIC_STUDIO_EDGE_INTENSITY, PHOTOGRAPHIC_STUDIO_GPU_BYTES, PHOTOGRAPHIC_STUDIO_RIG_FACTS, admitLightingProfile, admitSceneRigKind, admitSceneRigV2, assertNoObjectLightField, sceneRigIdentityV2, sceneLightCount, lightingProfileDeclaredBytes, SceneLightingRefusal, SCENE_OBJECT_LIGHT_FIELDS, SCENE_ENVIRONMENT_VERSION, sceneSlotsFor, sceneBoundSurfaces, assertSceneSurfaceResolution, RESOLUTION_BOUND, ALLOWED_BAKE_SCALES, DEFAULT_BAKE_SCALE, SceneResolutionRefusal, checkSurfaceResolution, selectSceneBakeScale, projectedSlotEdges, projectToOutputPixels, type SceneSlabFinish, type SceneLightingRefusalCode, type SceneRigIdentityV2, type SceneRigKindV2, type SceneGeneratedStudioRigIdentityV2, type ScenePhotographicStudioRigIdentityV1, type SceneBakeScale, type SceneResolutionResult, type SceneBakeScaleSelection, type SceneEvaluatedPose, type SceneSlotRect, type SceneResolutionRefusalCode, type SceneSlotDescriptor, sceneSlabPreparationFactsV1, scenePresetBuilderDescriptorV1, generatedStudioPreparationFactsV1, photographicStudioPreparationFactsV1, sceneGrainPreparationAllocationV1, sceneGrainPreparationCpuAllocationV1, sceneFocusPreparationAllocationsV1, preparedSurfaceDeviceProps, type PreparedSceneSurfaceVisualV1, } from './scene/index.js';
27
+ export { driftWallRecipe, infiniteSpiralRecipe, depthJourneyRecipe, infiniteCanvasRecipe, gridToHeroRecipe, type MediaTileRecipeResult, } from './media/recipes.js';
22
28
  export declare const sandboxScope: Record<string, unknown>;
23
29
  export declare const sandboxScopeNames: string[];
@@ -0,0 +1,69 @@
1
+ import React from 'react';
2
+ import { type FlexCell } from './solveFlex.js';
3
+ import { type Fit } from './fit.js';
4
+ /**
5
+ * Weighted flexbox layout that reflows. Lives here (not in primitives) so authored
6
+ * components can import it — `@cueframe/animate` is on the component import allowlist.
7
+ * The `flex-layout` catalog primitive is a thin wrapper over this.
8
+ */
9
+ /** Sizing for one track: weight (grow) plus optional declared size along the main axis. */
10
+ export interface FlexTrackSpec {
11
+ weight: number;
12
+ /** px along the main axis. With `weight: 0` the track is content-sized and pushes its neighbours. */
13
+ basis?: number;
14
+ min?: number;
15
+ max?: number;
16
+ shrink?: number;
17
+ /** Nest cells across the other axis. One level deep. */
18
+ split?: Array<number | Omit<FlexTrackSpec, 'split'>>;
19
+ }
20
+ /** A bare number is a weight. */
21
+ export type FlexTrack = number | FlexTrackSpec;
22
+ export interface FlexLayoutProps {
23
+ direction?: 'row' | 'column';
24
+ gap?: number;
25
+ padding?: number;
26
+ /** Main-axis tracks. Children fill the leaves depth-first. */
27
+ tracks?: FlexTrack[];
28
+ /**
29
+ * End state. Weights ease from tracks → tracksEnd across the clip. Shapes may differ:
30
+ * a cell present on only one side enters from / exits to zero.
31
+ */
32
+ tracksEnd?: FlexTrack[];
33
+ /** Per-leaf fit rule, in leaf order. Default stretch. */
34
+ fits?: Fit[];
35
+ /**
36
+ * Reflow progress 0..1. Default: eased over the clip from the current frame. Pass it
37
+ * explicitly to keep other layers (e.g. a 3D scene solved with solveFlex) on the same beat.
38
+ */
39
+ progress?: number;
40
+ /** Draw the rig — thin outlines on every cell. A design element, not debug UI. */
41
+ outline?: boolean;
42
+ outlineColor?: string;
43
+ /**
44
+ * Solve frame in px. Defaults to the video size. Inside a `params.region` container pass
45
+ * the region's pixel size so nested splits and aspect fits solve against the region.
46
+ */
47
+ width?: number;
48
+ height?: number;
49
+ children?: React.ReactNode;
50
+ }
51
+ type Dir = 'row' | 'column';
52
+ /**
53
+ * Canonical shape covering both states. Where one side nests and the other does not,
54
+ * the flat side's weight is carried by the first nested cell and the rest read as 0 —
55
+ * so those cells enter from (or exit to) nothing.
56
+ */
57
+ export declare function unionTracks(a: FlexTrack[], b?: FlexTrack[]): FlexTrackSpec[];
58
+ /** Interpolated weight per cell id at progress p in [0,1]. Ids: `t{i}` and `t{i}.{j}`. */
59
+ export declare function weightsAt(tracks: FlexTrack[], tracksEnd: FlexTrack[] | undefined, p: number): Record<string, number>;
60
+ /** tracks → FlexCell tree over the union shape. ids are stable so weights animate by id. */
61
+ export declare function buildTree(tracks: FlexTrack[], direction: Dir, gap: number, padding: number, tracksEnd?: FlexTrack[]): FlexCell;
62
+ /**
63
+ * True once the layout engine is loaded. Holds the frame (delayRender) until then, so no
64
+ * frame is captured before the first solve. Use it in any component that calls solveFlex
65
+ * itself alongside <FlexLayout> — e.g. to place 3D objects on the same boxes.
66
+ */
67
+ export declare function useFlexReady(): boolean;
68
+ export declare const FlexLayout: React.FC<FlexLayoutProps>;
69
+ export {};
@@ -0,0 +1,44 @@
1
+ import type { FlexBox } from './solveFlex.js';
2
+ /**
3
+ * Fit rules — how a cell's content sits inside the box the solver gave it.
4
+ * Pure geometry, no measurement: content aspect or authored size is declared,
5
+ * so the same inputs give the same inner box everywhere.
6
+ *
7
+ * stretch content fills the cell (default)
8
+ * contain largest box of `aspect` inside the cell
9
+ * cover smallest box of `aspect` covering the cell (cell clips the overflow)
10
+ * position content keeps its natural size, anchored in the cell — what type does
11
+ * scale content authored at `size` px, uniformly scaled to fit the cell
12
+ * matte content fills the cell, but is clipped to the `contain` box — the art
13
+ * is never resized, the matte does the work
14
+ */
15
+ export type FitMode = 'stretch' | 'contain' | 'cover' | 'position' | 'scale' | 'matte';
16
+ export interface Fit {
17
+ mode: FitMode;
18
+ /** content aspect ratio (w / h) — used by contain, cover, matte. Defaults to the cell's own aspect. */
19
+ aspect?: number;
20
+ /** authored pixel size — required by `scale`. */
21
+ size?: {
22
+ w: number;
23
+ h: number;
24
+ };
25
+ /** where the content sits inside the cell, 0..1 on each axis. Default centre. */
26
+ anchor?: {
27
+ x: number;
28
+ y: number;
29
+ };
30
+ }
31
+ export interface FitResult {
32
+ /** the box the content occupies, in the same coordinates as the cell */
33
+ box: FlexBox;
34
+ /** uniform scale to apply to a `size`-authored child (`scale` mode), else 1 */
35
+ scale: number;
36
+ /** `matte` only: inset from the cell edges to the visible window; else null */
37
+ clip: {
38
+ top: number;
39
+ right: number;
40
+ bottom: number;
41
+ left: number;
42
+ } | null;
43
+ }
44
+ export declare function fitBox(cell: FlexBox, fit?: Fit): FitResult;
@@ -0,0 +1,3 @@
1
+ export { solveFlex, flexReady, isFlexReady, leafIds, flexBoxToThree, type FlexCell, type FlexBox, type FlexSize, type FlexDir, } from './solveFlex.js';
2
+ export { fitBox, type Fit, type FitMode, type FitResult } from './fit.js';
3
+ export { FlexLayout, useFlexReady, buildTree, unionTracks, weightsAt, type FlexTrack, type FlexTrackSpec, type FlexLayoutProps, } from './FlexLayout.js';
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Flexbox layout solve for compositions. Pure: the same (tree, size, weights)
3
+ * always yields the same boxes. Consumers position DOM, Three.js (see
4
+ * flexBoxToThree) and SVG from the same numbers, so nothing drifts.
5
+ *
6
+ * yoga's default entry uses top-level await, which Remotion's esbuild target
7
+ * (chrome85) rejects — so the engine is loaded once here via a module-scope
8
+ * promise and every solve after that is synchronous.
9
+ */
10
+ export type FlexDir = 'row' | 'column';
11
+ export interface FlexCell {
12
+ id: string;
13
+ /** flex-grow weight along the parent's main axis. Default 1. 0 collapses the cell. */
14
+ grow?: number;
15
+ /**
16
+ * flex-basis in px along the parent's main axis. Default 0 so weights alone decide
17
+ * the split. With `grow: 0` this makes a content-sized cell: it takes exactly
18
+ * `basis` and its neighbours share the rest — the size of one cell moves the others.
19
+ */
20
+ basis?: number;
21
+ /**
22
+ * min / max size in px along the parent's main axis. `min` is a floor, not a fixed
23
+ * size: yoga (unlike CSS) lets a floored cell keep its weighted share of the remaining
24
+ * growth, so it can land above `min`. For an exact size use `grow: 0` + `basis`.
25
+ */
26
+ min?: number;
27
+ max?: number;
28
+ /** flex-shrink. Default 1 for weighted cells, 0 for content-sized cells (grow 0). */
29
+ shrink?: number;
30
+ /** main axis for this cell's children. Default 'row'. */
31
+ dir?: FlexDir;
32
+ /** px between children. */
33
+ gap?: number;
34
+ /** px inside this cell, around its children. */
35
+ padding?: number;
36
+ children?: FlexCell[];
37
+ }
38
+ export interface FlexBox {
39
+ x: number;
40
+ y: number;
41
+ w: number;
42
+ h: number;
43
+ }
44
+ export interface FlexSize {
45
+ w: number;
46
+ h: number;
47
+ }
48
+ /** Resolves once the engine is loaded. Await this (delayRender) before the first solve. */
49
+ export declare const flexReady: Promise<void>;
50
+ export declare function isFlexReady(): boolean;
51
+ /** Depth-first ids of leaf cells — the slots children get assigned to. */
52
+ export declare function leafIds(cell: FlexCell): string[];
53
+ /**
54
+ * Solve `root` into `size`. `weights[id]` overrides a cell's `grow` — this is
55
+ * what gets animated; re-solve every frame rather than interpolating boxes, so
56
+ * every intermediate frame is a valid layout.
57
+ *
58
+ * A cell whose weight, basis and min are all 0 is removed from layout entirely
59
+ * (display: none), so it takes no gap either — that is how cells enter and exit.
60
+ */
61
+ export declare function solveFlex(root: FlexCell, size: FlexSize, weights?: Record<string, number>): Record<string, FlexBox>;
62
+ /**
63
+ * Centre of a box in Three.js world units for an orthographic camera whose
64
+ * frustum is pinned 1:1 to `size` pixels (left=-w/2, right=w/2, top=h/2, bottom=-h/2).
65
+ * Layout is y-down; Three is y-up.
66
+ */
67
+ export declare function flexBoxToThree(box: FlexBox, size: FlexSize): {
68
+ x: number;
69
+ y: number;
70
+ };
@@ -0,0 +1,65 @@
1
+ import React from 'react';
2
+ export declare const MEDIA_TILE_SCENE_LIMITS: Readonly<{
3
+ streams: 8;
4
+ tiles: 512;
5
+ textureBytes: number;
6
+ }>;
7
+ export interface MediaTileAsset {
8
+ handle: string;
9
+ kind: 'image' | 'video';
10
+ width?: number;
11
+ height?: number;
12
+ durationSec?: number;
13
+ frameRate?: number;
14
+ }
15
+ export interface MediaTileStream {
16
+ asset: MediaTileAsset;
17
+ trimBeforeFrames?: number;
18
+ trimAfterFrames?: number;
19
+ playbackRate?: number;
20
+ loop?: boolean;
21
+ }
22
+ export interface MediaTile {
23
+ stream: string;
24
+ x: number;
25
+ y: number;
26
+ width: number;
27
+ height: number;
28
+ /** Positive values move away from the camera. */
29
+ z?: number;
30
+ rotation?: number;
31
+ opacity?: number;
32
+ /** Normalized source crop using a top-left origin. */
33
+ crop?: {
34
+ x: number;
35
+ y: number;
36
+ width: number;
37
+ height: number;
38
+ };
39
+ }
40
+ export interface MediaTileCamera {
41
+ x?: number;
42
+ y?: number;
43
+ z?: number;
44
+ zoom?: number;
45
+ perspective?: number;
46
+ }
47
+ export interface MediaTileFog {
48
+ color: string;
49
+ near: number;
50
+ far: number;
51
+ }
52
+ export interface MediaTileSceneProps {
53
+ streams: Record<string, MediaTileStream>;
54
+ tiles: readonly MediaTile[];
55
+ camera?: MediaTileCamera;
56
+ fog?: MediaTileFog;
57
+ background?: string;
58
+ style?: React.CSSProperties;
59
+ }
60
+ export declare function mediaTileFramesReady(sourceFrames: readonly (number | null | undefined)[], frame: number, playing: boolean): boolean;
61
+ export declare function assertMediaTileScene(streams: Record<string, MediaTileStream>, tiles: readonly MediaTile[]): string[];
62
+ export declare function mediaTileCropUvs(crop: MediaTile['crop']): number[];
63
+ export declare function mediaTileFogDistances(fog: MediaTileFog, camera: MediaTileCamera | undefined, perspective: number): [color: string, near: number, far: number];
64
+ export declare function MediaTileScene({ streams, tiles, camera, fog, background, style }: MediaTileSceneProps): React.JSX.Element;
65
+ export declare const ImageTileScene: typeof MediaTileScene;
@@ -0,0 +1,61 @@
1
+ import type { MediaTile, MediaTileCamera, MediaTileFog } from './MediaTileScene.js';
2
+ export interface MediaTileRecipeResult {
3
+ tiles: MediaTile[];
4
+ camera?: MediaTileCamera;
5
+ fog?: MediaTileFog;
6
+ }
7
+ export declare function driftWallRecipe(input: {
8
+ streamIds: readonly string[];
9
+ columns: number;
10
+ rows: number;
11
+ tileWidth: number;
12
+ tileHeight: number;
13
+ gap: number;
14
+ progress: number;
15
+ driftX?: number;
16
+ driftY?: number;
17
+ }): MediaTileRecipeResult;
18
+ export declare function infiniteSpiralRecipe(input: {
19
+ streamIds: readonly string[];
20
+ count: number;
21
+ tileWidth: number;
22
+ tileHeight: number;
23
+ radiusStep: number;
24
+ turns: number;
25
+ progress: number;
26
+ }): MediaTileRecipeResult;
27
+ export declare function depthJourneyRecipe(input: {
28
+ streamIds: readonly string[];
29
+ count: number;
30
+ tileWidth: number;
31
+ tileHeight: number;
32
+ depth: number;
33
+ progress: number;
34
+ }): MediaTileRecipeResult;
35
+ /**
36
+ * A frame-driven adaptation of Edoardo Lunardi's MIT-licensed Infinite Canvas
37
+ * chunk layout. The original camera is interactive; this recipe maps a
38
+ * deliberate, non-orbiting camera translation onto composition progress.
39
+ */
40
+ export declare function infiniteCanvasRecipe(input: {
41
+ streamIds: readonly string[];
42
+ viewportHeight: number;
43
+ progress: number;
44
+ aspectRatio?: number;
45
+ forwardTravel?: number;
46
+ driftX?: number;
47
+ driftY?: number;
48
+ fovDegrees?: number;
49
+ }): MediaTileRecipeResult;
50
+ export declare function gridToHeroRecipe(input: {
51
+ streamIds: readonly string[];
52
+ columns: number;
53
+ rows: number;
54
+ heroIndex: number;
55
+ tileWidth: number;
56
+ tileHeight: number;
57
+ gap: number;
58
+ progress: number;
59
+ heroWidth: number;
60
+ heroHeight: number;
61
+ }): MediaTileRecipeResult;
@@ -0,0 +1,76 @@
1
+ import type { SceneFocusV2 } from '../../composition/scene/index.js';
2
+ import type { SceneFinishingUniforms } from './finishingPass.js';
3
+ import { FocusResources, type FocusRenderer } from './focusResources.js';
4
+ import type { SceneFrameSize } from './scaling.js';
5
+ /**
6
+ * Any priority above zero takes rendering away from the fiber loop, which then calls this pass
7
+ * instead of drawing the scene itself. One is enough: this shot has no other subscriber.
8
+ */
9
+ export declare const FOCUS_PASS_PRIORITY = 1;
10
+ /**
11
+ * The near and far planes the depth reconstruction needs, from a camera that is entitled to them.
12
+ *
13
+ * `viewDistanceFromDepth` inverts the *perspective* depth mapping. Under an orthographic camera the
14
+ * same buffer holds a linear depth and the same arithmetic returns a distance nothing in the scene
15
+ * is at — every pixel would then be blurred by the wrong radius, with no symptom but a picture that
16
+ * looks subtly wrong. So the camera is narrowed rather than cast, and a shot that somehow reaches
17
+ * the pass with another projection is refused. `stageCamera` builds a perspective camera, which is
18
+ * why this is a guard against a future change rather than a case anyone can author today.
19
+ */
20
+ export declare function focusCameraPlanes(camera: unknown): {
21
+ near: number;
22
+ far: number;
23
+ };
24
+ /**
25
+ * Refuse a pass whose resources were built for a different renderer.
26
+ *
27
+ * The resources hold one GL context's targets, textures and framebuffers, and the multisample
28
+ * count read from that context's canvas; drawing them with another renderer would draw through
29
+ * objects it has never uploaded. Fiber builds one renderer per canvas and never swaps it — the
30
+ * store's `gl` is created with the canvas and is not replaced by a prop change — so the resources
31
+ * may be constructed once and kept, which is what `useState` does with them. This is the assertion
32
+ * that says so, checked on every render rather than assumed, because the symptom of being wrong is
33
+ * a blank or stale frame with no error anywhere.
34
+ */
35
+ export declare function assertPassRenderer(resources: FocusResources, gl: FocusRenderer): void;
36
+ export interface FocusPassProps {
37
+ /**
38
+ * The evaluated focus for this frame, or `null` when the shot authors none. The pass is mounted
39
+ * either way: `null` is a maximum blur of zero, which is an identity gather (`FOCUS_OFF`).
40
+ */
41
+ focus: SceneFocusV2 | null;
42
+ /**
43
+ * This frame's grain and vignette, for the world half of the shot's finishing.
44
+ *
45
+ * The DOM half is the SVG filter on the backdrop and the screen text; the world's is here,
46
+ * because a `filter` over a layer that holds a WebGL canvas is what let Chromium hand back one
47
+ * raster of a shot tiled across the frame (D4). Both halves are given the same numbers.
48
+ */
49
+ finishing: SceneFinishingUniforms;
50
+ scale: number;
51
+ frame: SceneFrameSize;
52
+ }
53
+ /**
54
+ * The shot's world, drawn on every advance of the manual frame loop, with the shot's depth-aware
55
+ * focus applied to it.
56
+ *
57
+ * Mounted by every scene shot, not only the ones that declare focus. One pipeline is the whole
58
+ * point: the world is rasterized into this pass's half-float target and composited to the frame
59
+ * through this pass's output stage whatever the shot says, so turning `post.focus` on can change
60
+ * the blur radius and nothing else. Drawing the world straight onto the canvas when no focus is
61
+ * authored made focus-on and focus-off two different colour pipelines — the canvas blends clamped
62
+ * 8-bit sRGB with the renderer's tone curve applied, a render target blends unclamped linear — and
63
+ * a shot with `maxBlur: 0` came out a different picture from the same shot with no focus at all.
64
+ *
65
+ * Remotion's canvas renders by calling fiber's `advance` — once per frame while rendering, and once
66
+ * more whenever a load commits (`advanceRendererOnce`). Every advance runs the frame subscribers
67
+ * and then, only if none of them claimed a render priority, draws the scene. Claiming a priority
68
+ * here puts this pass in that place: the world is drawn into the pass's own target and the gather
69
+ * writes the frame, on exactly the advances that would otherwise have drawn the scene directly. No
70
+ * timer, no animation loop, and nothing to keep in step — a frame cannot be captured half-composed
71
+ * because the capture happens after the advance that drew it.
72
+ *
73
+ * The resources are this instance's; the size follows the frame, and unmounting disposes the
74
+ * targets, the depth texture, both materials and the quad geometry.
75
+ */
76
+ export declare function FocusPass({ focus, finishing, scale, frame }: FocusPassProps): null;
@@ -0,0 +1,45 @@
1
+ import type { Texture } from 'three';
2
+ import type { PlaneFitResult } from './planeFit.js';
3
+ /**
4
+ * Fragments below this alpha are discarded rather than drawn.
5
+ *
6
+ * A transparent unlit plane must both composite its own alpha and occlude what is behind it — the
7
+ * contract calls an unlit surface a geometric participant. Writing depth for every fragment would
8
+ * let a world-text plane's empty margin punch a hole in the device behind it; writing none would
9
+ * stop it occluding at all. Discarding the fully transparent fragments gives both: nothing is
10
+ * written where the texture is empty, and every visible texel — including an antialiased glyph
11
+ * rim — writes colour and depth.
12
+ */
13
+ export declare const UNLIT_PLANE_ALPHA_TEST = 0.01;
14
+ export interface UnlitPlaneProps {
15
+ texture: Texture;
16
+ fit: PlaneFitResult;
17
+ color?: string;
18
+ transparent?: boolean;
19
+ depthWrite?: boolean;
20
+ backface?: 'hidden' | 'visible';
21
+ resourceOwner: string;
22
+ resourceName: string;
23
+ }
24
+ /**
25
+ * A screenshot or a rasterized text run on a world plane: unlit, colour-managed, occluding.
26
+ *
27
+ * Unlit and `UNLIT_COLOUR_MANAGED` so the product UI's colours survive the studio lighting exactly
28
+ * as authored, which is what the contract promises for screenshots and world text. The constant is
29
+ * spread rather than restated so the tone-mapping test can walk every material in this package by
30
+ * the name it carries. `transparent`
31
+ * is authored true — `applyLayerOpacity` keeps it that way at full opacity — because Three
32
+ * disables blending outright for an opaque material, which would write the texture's own edge
33
+ * alpha straight into the frame instead of compositing it.
34
+ *
35
+ * The UV window is applied in a layout effect of this leaf component, so it lands before the
36
+ * parent layer's readiness effect draws and releases the frame (layout effects run bottom-up). It
37
+ * is a uniform change, not a program parameter, so it needs no `needsUpdate`. The write is skipped
38
+ * when the texture already carries the window asked for: a page decodes its own texture and may be
39
+ * cropped, but a world-text raster is shared by content identity and is only ever given the
40
+ * identity window, so this plane never writes to a texture another instance is drawing with.
41
+ *
42
+ * One consequence of the alpha test worth knowing: it applies after the layer opacity multiplies
43
+ * the texture's alpha, so a plane fading out disappears at the threshold rather than at zero.
44
+ */
45
+ export declare function UnlitPlane({ texture, fit, color, transparent, depthWrite, backface, resourceOwner, resourceName }: UnlitPlaneProps): import("react").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { Matrix4 } from 'three';
2
+ import { perspectiveFor, type StageCamera } from '../../stage/camera.js';
3
+ /**
4
+ * THE CSS-SIDE ORACLE. Test code only.
5
+ *
6
+ * `perspectiveFor`, `worldMatrix` and `projectCss` are the old CSS-first projection. Slice W1 of
7
+ * `2026-09-10-world-objects-plan.md` replaces the runtime with `scene/coordinates.ts`'s single
8
+ * `F`-conjugation bridge and keeps this arithmetic as *the other calculation the gate compares
9
+ * against* — Decision 1 asks for two independent projections, not for one shipped twice.
10
+ *
11
+ * No SCENE runtime path may import this file.
12
+ * `render-harness/scripts/__tests__/w1-css-oracle-isolation.test.mjs` walks the transitive
13
+ * first-party import graph from the scene renderer's own entry points and fails if one does; that
14
+ * test, not a convention, is what keeps the two conventions from drifting back together.
15
+ *
16
+ * The op list itself is NOT restated here: `cameraOpsMatrix` composes `stage/camera.ts`'s own
17
+ * ordered list, so the DOM stage (`PerspectiveStage`, which still authors in this convention and
18
+ * is not W1's to move) and this oracle cannot disagree about what the V1 camera means.
19
+ */
20
+ /** The V1 camera's world matrix in CSS coordinates: x right, y DOWN, z toward the viewer. */
21
+ export declare function worldMatrix(c: StageCamera): Matrix4;
22
+ /** Where a CSS point lands on screen under the stage's perspective. */
23
+ export declare function projectCss(c: StageCamera, width: number, height: number, p: [number, number, number]): [number, number];
24
+ export { perspectiveFor };
@@ -0,0 +1,21 @@
1
+ import type { SceneImageSlotKind } from './useSceneImageTexture.js';
2
+ /** Everything needed to name one layer's image binding in an error the author can act on. */
3
+ export interface SceneImageSlotRef {
4
+ slot: string;
5
+ /** The layer's index in `spec.layers`, for the validator-style error path. */
6
+ layerIndex?: number;
7
+ /** Exact validator-style object path when the layer may be nested. */
8
+ layerPath?: string;
9
+ layerId: string;
10
+ /** The field that carries the slot name: a device's `screen`, a page's `image`, a slab's `front`. */
11
+ field: 'screen' | 'image' | 'front';
12
+ what: SceneImageSlotKind;
13
+ }
14
+ /**
15
+ * The admitted runtime handle for an image slot. The outer `assets` map is the component runtime's
16
+ * `Record<slot, ComponentAssetBindingV2>`; the scene itself only names slots. A slot that is
17
+ * missing, not an image, or carries no handle fails here, before any canvas is mounted. The error
18
+ * path uses the layer's array index and the field the slot was written in, as the validator's
19
+ * paths do; the message names the layer id.
20
+ */
21
+ export declare function sceneImageHandle(assets: Record<string, unknown>, ref: SceneImageSlotRef): string;
@@ -0,0 +1,7 @@
1
+ import type { SceneColor } from '../../composition/scene/index.js';
2
+ /**
3
+ * A scene colour as CSS. Brand references are resolved by the render-preparation stage into the
4
+ * runtime spec this renderer receives; one that survives to here is a preparation bug, and
5
+ * inventing a colour for it would hide that bug in the output.
6
+ */
7
+ export declare function resolveSceneColor(color: SceneColor, path: string): string;
@@ -0,0 +1,58 @@
1
+ import { Matrix4 } from 'three';
2
+ /**
3
+ * Decision 1's coordinate bridge, in production.
4
+ *
5
+ * Authored world transforms are Three's own: X right, **Y up**, the camera looking down its local
6
+ * −Z, **radians**, Euler order **XYZ** (the composed matrix is `T · Rx · Ry · Rz · S`), and a
7
+ * strictly positive uniform scale. One world unit is one reference-layout pixel.
8
+ *
9
+ * There is exactly one conversion to the CSS boundary and it is the conjugation `F · M · F` with
10
+ * `F = diag(1, −1, 1, 1)`, applied to the COMPLETE matrices — object world matrix, camera world
11
+ * matrix and the landmark's own local `y`. Flipping the translation alone is invalid and is the
12
+ * negative control of `i0ProjectionParity.test.ts`; it misses by ≥16 output pixels.
13
+ *
14
+ * `perspectiveFor`, `worldMatrix` and `projectCss` — the old CSS-first projection — survive only as
15
+ * the gate's CSS-side oracle (`scene/__oracle__/cssProjection.ts`). No SCENE runtime path imports
16
+ * them: `render-harness/scripts/__tests__/w1-css-oracle-isolation.test.mjs` walks the scene lane's
17
+ * transitive first-party import graph and asserts it. (`perspectiveFor` remains runtime for
18
+ * `stage/PerspectiveStage.tsx`, the DOM stage, which is not the scene bridge and which Decision 2's
19
+ * deletion prohibition forbids weakening in this slice.)
20
+ */
21
+ export type SceneVec3 = [number, number, number];
22
+ /**
23
+ * A world transform in the authored (Three-native) convention.
24
+ *
25
+ * NOTE FOR W3: this is report §5.4's `SceneTransformV2`. It is declared here rather than in
26
+ * `@cueframe/composition/scene` because W3 owns the wire schema; when W3 lands, this type moves
27
+ * there unchanged and this module imports it.
28
+ */
29
+ export interface SceneWorldTransform {
30
+ /** Reference pixels, Y up. */
31
+ position: SceneVec3;
32
+ /** RADIANS, Euler order XYZ. */
33
+ rotation: SceneVec3;
34
+ /** Uniform, strictly positive. */
35
+ scale: number;
36
+ }
37
+ /** Euler order for every authored rotation. Stated once so nothing restates it. */
38
+ export declare const SCENE_EULER_ORDER: "XYZ";
39
+ /** `F = diag(1, −1, 1, 1)`: the whole of the CSS boundary conversion. */
40
+ export declare const F: Matrix4;
41
+ /**
42
+ * The bridge: `F · M · F`. Applied to a complete matrix — a world matrix, a camera matrix — never
43
+ * to a translation alone.
44
+ */
45
+ export declare function conjugateF(m: Matrix4): Matrix4;
46
+ /** `T · Rx · Ry · Rz · S` in Three's axes, from an authored transform. */
47
+ export declare function sceneWorldMatrix(t: SceneWorldTransform): Matrix4;
48
+ /** The same transform at the CSS boundary, conjugated by `F`. Used by the landmark gate's CSS side. */
49
+ export declare function sceneCssMatrix(t: SceneWorldTransform): Matrix4;
50
+ export interface ThreeLayerPose {
51
+ position: SceneVec3;
52
+ quaternion: [number, number, number, number];
53
+ scale: number;
54
+ }
55
+ /** An authored transform as the pose of an R3F `<group>`. */
56
+ export declare function sceneLayerPose(t: SceneWorldTransform): ThreeLayerPose;
57
+ /** A transform in output pixels: position scales, rotation and the uniform scale are ratios. */
58
+ export declare function scaleSceneTransform(t: SceneWorldTransform, scale: number): SceneWorldTransform;
@@ -0,0 +1,18 @@
1
+ import type { Object3D } from 'three';
2
+ /**
3
+ * Apply a layer opacity to every material under `root`, multiplying each material's own authored
4
+ * opacity (the glass is 0.1 by design) rather than overwriting it. The base is remembered on the
5
+ * material the first time it is seen, so repeated frames never compound. Materials here are
6
+ * created per DeviceMesh instance, so this never touches another layer's material.
7
+ *
8
+ * `transparent` is a program parameter in Three (the `OPAQUE` define), re-derived only when the
9
+ * material's version changes, so a flip after the first draw must also set `needsUpdate`. A
10
+ * same-state re-apply must not: each `needsUpdate` recompiles the program.
11
+ *
12
+ * A material the layer authored as transparent stays transparent at full opacity: the unlit page
13
+ * and world-text planes carry their own alpha, and Three disables blending outright for an opaque
14
+ * material (`material.blending === NormalBlending && transparent === false` → `NoBlending`), so
15
+ * flipping one of those to opaque would write its unpremultiplied edge texels straight into the
16
+ * frame. The authored flag is remembered alongside the authored opacity, once, on first sight.
17
+ */
18
+ export declare function applyLayerOpacity(root: Object3D, opacity: number): void;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Typed failures raised by the scene-shot renderer. The code is the first token of the message so
3
+ * hosts that only see an `Error` (Remotion's error boundary, the render lane's sanitized envelope)
4
+ * can still classify it; later stages map these onto the shared error registry.
5
+ */
6
+ export type SceneShotErrorCode = 'scene_aspect_mismatch' | 'scene_asset_unbound' | 'scene_asset_load_failed' | 'scene_brand_unresolved' | 'scene_font_unavailable' | 'scene_resource_exhausted'
7
+ /** The host's renderer lacks a capability the shot requires; distinct from running out of one. */
8
+ | 'scene_render_target_unsupported' | 'scene_internal';
9
+ export declare class SceneShotError extends Error {
10
+ readonly code: SceneShotErrorCode;
11
+ /** Dotted path into the scene spec the failure is about, when there is one. */
12
+ readonly path: string | null;
13
+ constructor(code: SceneShotErrorCode, detail: string, path?: string | null);
14
+ }