@cueframe/kernel 0.2.2 → 0.2.4

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 (335) 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/compose/primitiveRegistry.d.ts +2 -6
  118. package/dist/_members/composition/fonts/bundledFaces.d.ts +150 -0
  119. package/dist/_members/composition/fonts/captionFaces.d.ts +268 -0
  120. package/dist/_members/composition/fonts.d.ts +11 -4
  121. package/dist/_members/composition/graphics-plan/schemas.d.ts +4 -4
  122. package/dist/_members/composition/ops/types.d.ts +1 -1
  123. package/dist/_members/composition/primitive-catalog/index.d.ts +4 -0
  124. package/dist/_members/composition/primitive-catalog/types.d.ts +1 -0
  125. package/dist/_members/composition/projection/behind-readiness.d.ts +3 -0
  126. package/dist/_members/composition/projection/brandKit.d.ts +6 -0
  127. package/dist/_members/composition/projection/composition-floor.d.ts +2 -1
  128. package/dist/_members/composition/scene/animation.d.ts +25 -0
  129. package/dist/_members/composition/scene/budget.d.ts +29 -0
  130. package/dist/_members/composition/scene/budgetPolicy.d.mts +13 -0
  131. package/dist/_members/composition/scene/clipRules.d.ts +119 -0
  132. package/dist/_members/composition/scene/constraints.d.ts +61 -0
  133. package/dist/_members/composition/scene/device.d.ts +21 -0
  134. package/dist/_members/composition/scene/examples.d.ts +11 -0
  135. package/dist/_members/composition/scene/index.d.ts +11 -0
  136. package/dist/_members/composition/scene/photographicRig.d.ts +242 -0
  137. package/dist/_members/composition/scene/preparedRender.d.ts +239 -0
  138. package/dist/_members/composition/scene/resolution.d.ts +178 -0
  139. package/dist/_members/composition/scene/schema.d.ts +351 -0
  140. package/dist/_members/composition/scene/videoSchedule.d.ts +43 -0
  141. package/dist/_members/composition/validators/brandKit.d.ts +1 -0
  142. package/dist/_members/composition/validators/render.d.ts +2 -0
  143. package/dist/_members/composition-ops/index.d.ts +45 -0
  144. package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
  145. package/dist/_members/core/render/compositionRender.d.ts +41 -9
  146. package/dist/_members/core/render/index.d.ts +9 -2
  147. package/dist/_members/core/render/sceneCaptureIdentity.d.ts +14 -0
  148. package/dist/_members/core/render/sceneShotPlan.d.ts +142 -0
  149. package/dist/_members/core/render/sceneShotPreparation.d.ts +57 -0
  150. package/dist/_members/core/render/slabDescriptor.d.ts +21 -0
  151. package/dist/_members/core/render/trackProjection.d.ts +33 -0
  152. package/dist/_members/core/render/types.d.ts +142 -0
  153. package/dist/_members/errors/registry.d.ts +6 -0
  154. package/dist/_members/mcp/adapter.d.ts +5 -0
  155. package/dist/_members/mcp/generated/harness.d.ts +1 -1
  156. package/dist/_members/mcp/generated/sceneContract.d.ts +155 -0
  157. package/dist/_members/mcp/sceneShot.d.ts +38 -0
  158. package/dist/_members/mcp/sceneShotExample.d.ts +22 -0
  159. package/dist/_members/media-model/api.d.ts +1 -0
  160. package/dist/_members/media-model/media-kind.d.ts +1 -1
  161. package/dist/_members/media-model/testing/mediaStoreContract.d.ts +1 -1
  162. package/dist/_members/primitives/effects/index.d.ts +1 -0
  163. package/dist/_members/primitives/effects/stage-camera/config.d.ts +50 -0
  164. package/dist/_members/primitives/effects/stage-camera/index.d.ts +31 -0
  165. package/dist/_members/primitives/layouts/flex-layout/config.d.ts +73 -0
  166. package/dist/_members/primitives/layouts/flex-layout/index.d.ts +4 -0
  167. package/dist/_members/primitives/layouts/index.d.ts +1 -0
  168. package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +1 -1
  169. package/dist/_members/primitives/lib/frameScale.d.ts +4 -0
  170. package/dist/_members/primitives/lib/index.d.ts +1 -0
  171. package/dist/_members/primitives/lib/palette.d.ts +30 -30
  172. package/dist/_members/primitives/lib/text/contrast.d.ts +2 -1
  173. package/dist/_members/primitives/lib/text/spec.d.ts +0 -8
  174. package/dist/_members/primitives/lib/types.d.ts +2 -0
  175. package/dist/_members/primitives/scenes/device-showcase/config.d.ts +41 -0
  176. package/dist/_members/primitives/scenes/device-showcase/index.d.ts +36 -0
  177. package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +1 -0
  178. package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +2 -1
  179. package/dist/_members/primitives/scenes/index.d.ts +1 -0
  180. package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +1 -1
  181. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +1 -0
  182. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +2 -1
  183. package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +1 -1
  184. package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +1 -1
  185. package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -1
  186. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  187. package/dist/_members/render-harness/css-tree-subpaths.d.ts +11 -0
  188. package/dist/_members/render-harness/extractSegments.d.ts +1 -0
  189. package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
  190. package/dist/_members/render-harness/imageHeader.d.ts +14 -0
  191. package/dist/_members/render-harness/imageHeader.d.ts.map +1 -0
  192. package/dist/_members/render-harness/index.d.ts +6 -0
  193. package/dist/_members/render-harness/index.d.ts.map +1 -1
  194. package/dist/_members/render-harness/materializeSources.d.ts +46 -2
  195. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  196. package/dist/_members/render-harness/nodeScenePreparation.d.ts +97 -0
  197. package/dist/_members/render-harness/nodeScenePreparation.d.ts.map +1 -0
  198. package/dist/_members/render-harness/remotion-runtime.d.ts +16 -2
  199. package/dist/_members/render-harness/renderInputAssets.d.ts +1 -1
  200. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  201. package/dist/_members/render-harness/resolveAssets.d.ts +2 -2
  202. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  203. package/dist/_members/render-harness/sceneShotAssets.d.ts +17 -0
  204. package/dist/_members/render-harness/sceneShotAssets.d.ts.map +1 -0
  205. package/dist/animate/preparation-facts.d.ts +1 -0
  206. package/dist/animate/preparation-facts.js +22 -0
  207. package/dist/animate.js +336 -1005
  208. package/dist/authoring/build-tools.js +7 -6
  209. package/dist/authoring/context.js +5 -4
  210. package/dist/authoring/prompts.js +1 -1
  211. package/dist/authoring/scene.d.ts +1 -0
  212. package/dist/authoring/scene.js +50 -0
  213. package/dist/authoring/tools.js +6 -5
  214. package/dist/authoring.js +49 -29
  215. package/dist/chunk-2L7PYYJK.js +23 -0
  216. package/dist/chunk-5DJ3IEJR.js +4424 -0
  217. package/dist/chunk-6BVVCRRD.js +26488 -0
  218. package/dist/{chunk-DQKSCHFC.js → chunk-6EWRIAZA.js} +187 -66
  219. package/dist/{chunk-YQ7FFW3G.js → chunk-6VWICHOZ.js} +26 -5
  220. package/dist/{chunk-C5SEPOWD.js → chunk-7AZLFN26.js} +1798 -702
  221. package/dist/{chunk-6ID2J64H.js → chunk-7W6ZIKWV.js} +162 -25
  222. package/dist/{chunk-RETQFTGY.js → chunk-A74FZCPY.js} +42 -5
  223. package/dist/chunk-BVA3537Z.js +63 -0
  224. package/dist/{chunk-DHKQ47Q6.js → chunk-DAARYRNT.js} +6 -1
  225. package/dist/chunk-DQLYWNLC.js +2063 -0
  226. package/dist/{chunk-HXKTZPRH.js → chunk-E7GIZEPS.js} +1 -1
  227. package/dist/chunk-EBIBLL7E.js +3619 -0
  228. package/dist/{chunk-M2TLRXEO.js → chunk-EXY4JJPH.js} +1 -1
  229. package/dist/{chunk-AWT3P5ZN.js → chunk-FVDFPJHT.js} +1 -1
  230. package/dist/{chunk-EMGFZ3PR.js → chunk-FWSJLHSV.js} +5 -1
  231. package/dist/{chunk-TMIBBD5E.js → chunk-I5QWBM3M.js} +280 -113
  232. package/dist/{chunk-IBMJ33EL.js → chunk-I5RX2QZT.js} +1 -1
  233. package/dist/{chunk-4FOOBSEE.js → chunk-J3DIUG24.js} +1 -0
  234. package/dist/{chunk-AD5HWBCE.js → chunk-JX53CVJV.js} +14 -5
  235. package/dist/{chunk-LNBVTDFR.js → chunk-L2AHS3AW.js} +1 -1
  236. package/dist/{chunk-BDMTUEEZ.js → chunk-LT4PWSR2.js} +2 -2
  237. package/dist/chunk-MH3UPKWR.js +3415 -0
  238. package/dist/{chunk-RFXR7ATW.js → chunk-MN6D3U5N.js} +13 -1
  239. package/dist/{chunk-IJ7PVJTK.js → chunk-ODUWCQI3.js} +3 -2
  240. package/dist/chunk-QAGGJHAF.js +16 -0
  241. package/dist/chunk-QS36DMFG.js +332 -0
  242. package/dist/{chunk-G5BFI32U.js → chunk-RAXHCRVV.js} +1 -1
  243. package/dist/{chunk-BIBYZJL3.js → chunk-RL5SO653.js} +3 -3
  244. package/dist/{chunk-ZSZABOE5.js → chunk-S5H6GH6M.js} +1 -1
  245. package/dist/{chunk-EEXCDFY5.js → chunk-SD25VQDE.js} +1 -1
  246. package/dist/chunk-TARKDVP6.js +430 -0
  247. package/dist/{chunk-XVBOSPZI.js → chunk-TBNTAQJA.js} +6 -6
  248. package/dist/{chunk-IHFREGFA.js → chunk-TCHPRGC5.js} +18 -2
  249. package/dist/{chunk-ZCAQHNPI.js → chunk-UKGNHZS4.js} +1 -1
  250. package/dist/{chunk-ZN6P3KOJ.js → chunk-UN6NY2E6.js} +3 -3
  251. package/dist/{chunk-WQSGVRFU.js → chunk-UY77TMKD.js} +31 -44
  252. package/dist/chunk-VKATKWWR.js +1462 -0
  253. package/dist/{chunk-U5LBYS3N.js → chunk-VLJOIUHL.js} +341 -274
  254. package/dist/{chunk-CX2IIQ4R.js → chunk-W2245F6G.js} +29 -29
  255. package/dist/{chunk-GEGRJKKO.js → chunk-W6B7BMLO.js} +1 -1
  256. package/dist/{chunk-XHUYWVYK.js → chunk-WBNFSG6T.js} +1 -1
  257. package/dist/chunk-WIHXXF3X.js +221 -0
  258. package/dist/{chunk-7KEUL3FI.js → chunk-XF2QMKRG.js} +9 -1
  259. package/dist/{chunk-HFC3MKXA.js → chunk-Y4HPN4BC.js} +1 -0
  260. package/dist/{chunk-D43J23QX.js → chunk-YFSBFCXO.js} +1018 -42
  261. package/dist/{chunk-KKEY5MIW.js → chunk-ZS3A3QUM.js} +16 -16
  262. package/dist/{chunk-LQUWKBST.js → chunk-ZVG446DJ.js} +139 -10
  263. package/dist/component-runtime/browserOptions.js +14 -3
  264. package/dist/component-runtime/contracts.js +35 -3
  265. package/dist/component-runtime/identity/browser.js +1 -1
  266. package/dist/component-runtime/identity.js +2 -2
  267. package/dist/component-runtime/importPolicy.js +2 -2
  268. package/dist/component-runtime/mediaResolution.d.ts +1 -0
  269. package/dist/component-runtime/mediaResolution.js +11 -0
  270. package/dist/component-runtime/render.js +38 -5
  271. package/dist/component-runtime.js +118 -14
  272. package/dist/compose.js +192 -33
  273. package/dist/composition/fonts.js +64 -67
  274. package/dist/composition/graphics-plan.js +3 -2
  275. package/dist/composition/ops.js +4 -3
  276. package/dist/composition/primitive-catalog.js +3 -1
  277. package/dist/composition/projection.js +10 -3
  278. package/dist/composition/scene/budget-policy.d.ts +1 -0
  279. package/dist/composition/scene/budget-policy.js +17 -0
  280. package/dist/composition/scene/schema.json +2757 -0
  281. package/dist/composition/scene.d.ts +1 -0
  282. package/dist/composition/scene.js +275 -0
  283. package/dist/composition/validators.js +3 -2
  284. package/dist/composition-ops.js +103 -13
  285. package/dist/composition.js +12 -5
  286. package/dist/{context-4GSDBFT3.js → context-IUPQ54V4.js} +5 -4
  287. package/dist/core/render.js +54 -3
  288. package/dist/core/select.js +2 -2
  289. package/dist/core.js +6 -3
  290. package/dist/director/ai-sdk.js +3 -3
  291. package/dist/director/domain.js +2 -2
  292. package/dist/director.js +3 -3
  293. package/dist/errors.js +1 -1
  294. package/dist/mcp/adapter.js +4 -4
  295. package/dist/mcp/core.js +1 -1
  296. package/dist/mcp/curation.js +1 -1
  297. package/dist/mcp/server.js +4 -4
  298. package/dist/mcp.js +4 -4
  299. package/dist/media-model/media-kind.js +2 -0
  300. package/dist/media-model/testing.js +16 -11
  301. package/dist/media-model.js +1 -1
  302. package/dist/nle-export.js +1 -27
  303. package/dist/primitives/backgrounds.js +2 -2
  304. package/dist/primitives/captions.js +21 -11
  305. package/dist/primitives/effects.js +14 -4
  306. package/dist/primitives/graphics.json +3 -0
  307. package/dist/primitives/hero-text.js +4 -3
  308. package/dist/primitives/layouts.js +9 -2
  309. package/dist/primitives/lib/frameScale.d.ts +1 -0
  310. package/dist/primitives/lib/frameScale.js +11 -0
  311. package/dist/primitives/lib/index.js +18 -10
  312. package/dist/primitives/lib/palette.js +1 -1
  313. package/dist/primitives/lib/text/contrast.js +2 -1
  314. package/dist/primitives/lib/text/typeface.js +1 -1
  315. package/dist/primitives/lib.js +18 -10
  316. package/dist/primitives/params-required.json +3 -0
  317. package/dist/primitives/scenes.js +12 -3
  318. package/dist/primitives/text.js +5 -5
  319. package/dist/primitives/transitions.js +2 -2
  320. package/dist/primitives/ui-blocks.js +7 -6
  321. package/dist/primitives/version-map.json +5 -2
  322. package/dist/primitives.js +23 -16
  323. package/dist/render-harness/cardAssetAdmission.js +2 -2
  324. package/dist/render-harness/renderInputAssets.js +2 -2
  325. package/dist/render-harness.js +874 -124
  326. package/package.json +48 -14
  327. package/dist/_members/animate/three/drei.d.ts +0 -6
  328. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +0 -9
  329. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +0 -1
  330. package/dist/chunk-5OTQ7M43.js +0 -718
  331. package/dist/chunk-7REW2MW3.js +0 -202
  332. package/dist/chunk-CGHTMZNC.js +0 -6
  333. package/dist/chunk-KVMVYRXX.js +0 -9527
  334. package/dist/chunk-WYQX4QIK.js +0 -544
  335. /package/dist/{chunk-H5LMJKZU.js → chunk-JVDUSOYG.js} +0 -0
@@ -1,3 +1,6 @@
1
+ import {
2
+ EASING_BY_INTENT
3
+ } from "./chunk-MFHXCHRI.js";
1
4
  import {
2
5
  FitText
3
6
  } from "./chunk-XHGZ2E77.js";
@@ -14,7 +17,16 @@ import {
14
17
  TEXT_MUTED,
15
18
  VIOLET,
16
19
  WARNING
17
- } from "./chunk-CX2IIQ4R.js";
20
+ } from "./chunk-W2245F6G.js";
21
+ import {
22
+ CAMERA_PRESETS,
23
+ DEFAULT_CAMERA,
24
+ PerspectiveStage,
25
+ StageLayer,
26
+ perspectiveFor,
27
+ resolveCamera,
28
+ useStage
29
+ } from "./chunk-5DJ3IEJR.js";
18
30
 
19
31
  // ../execution/primitives/src/effects/blur/index.tsx
20
32
  import React2 from "react";
@@ -628,6 +640,66 @@ function SpringPopIn({
628
640
  );
629
641
  }
630
642
 
643
+ // ../execution/primitives/src/effects/stage-camera/index.tsx
644
+ import React7, { useMemo } from "react";
645
+ function laneDepths(children, layerDepth) {
646
+ const kids = React7.Children.toArray(children);
647
+ const indexes = kids.map(
648
+ (k) => React7.isValidElement(k) && typeof k.props["data-cf-layer-index"] === "number" ? k.props["data-cf-layer-index"] : Number.NaN
649
+ );
650
+ const tagged = indexes.filter((n) => Number.isFinite(n));
651
+ if (tagged.length === 0 || layerDepth === 0) return kids.map(() => 0);
652
+ const front = Math.max(...tagged);
653
+ return indexes.map((n) => Number.isFinite(n) ? (n - front) * layerDepth : 0);
654
+ }
655
+ function laneScale(z12, fov, height) {
656
+ const p = perspectiveFor(fov, height);
657
+ return (p - z12) / p;
658
+ }
659
+ var Lanes = ({ layerDepth, children }) => {
660
+ const { camera, height } = useStage();
661
+ const depths = laneDepths(children, layerDepth);
662
+ return /* @__PURE__ */ React7.createElement(React7.Fragment, null, React7.Children.toArray(children).map((child, i) => /* @__PURE__ */ React7.createElement(
663
+ StageLayer,
664
+ {
665
+ key: React7.isValidElement(child) && child.key != null ? child.key : i,
666
+ z: depths[i],
667
+ scale: laneScale(depths[i], camera.fov, height)
668
+ },
669
+ child
670
+ )));
671
+ };
672
+ var StageCameraEffect = ({
673
+ move = "dolly-in",
674
+ fov = 40,
675
+ amount,
676
+ easing = "entrance",
677
+ from,
678
+ to,
679
+ focus,
680
+ layerDepth = 0,
681
+ active = true,
682
+ effectFrame = 0,
683
+ effectDurationInFrames = 60,
684
+ style,
685
+ width,
686
+ height,
687
+ children
688
+ }) => {
689
+ const keyframes = useMemo(() => {
690
+ const base = CAMERA_PRESETS[move](effectDurationInFrames, { fov, amount, easing: EASING_BY_INTENT[easing] });
691
+ if (!from && !to) return base;
692
+ const first = { frame: 0, camera: { fov, ...base[0]?.camera ?? {}, ...from ?? {} } };
693
+ const last = { frame: Math.max(1, effectDurationInFrames - 1), camera: { ...base[base.length - 1]?.camera ?? {}, ...to ?? {} }, easing: EASING_BY_INTENT[easing] };
694
+ return [first, last];
695
+ }, [move, effectDurationInFrames, fov, amount, easing, from, to]);
696
+ if (!active) {
697
+ return /* @__PURE__ */ React7.createElement("div", { style: { position: "absolute", inset: 0 } }, children);
698
+ }
699
+ const camera = resolveCamera(keyframes, effectFrame, { ...DEFAULT_CAMERA, fov });
700
+ return /* @__PURE__ */ React7.createElement(PerspectiveStage, { camera, width, height, focus, style }, /* @__PURE__ */ React7.createElement(Lanes, { layerDepth }, children));
701
+ };
702
+
631
703
  // ../execution/primitives/src/effects/success-confetti/index.tsx
632
704
  import {
633
705
  interpolate as interpolate4,
@@ -782,7 +854,7 @@ function SuccessConfetti({
782
854
  }
783
855
 
784
856
  // ../execution/primitives/src/effects/vignette/index.tsx
785
- import React7 from "react";
857
+ import React8 from "react";
786
858
  var Vignette = ({
787
859
  intensity = 0.5,
788
860
  spread = 0.5,
@@ -794,7 +866,7 @@ var Vignette = ({
794
866
  const outerStop = Math.round(70 + spread * 30);
795
867
  const shapeValue = shape === "circle" ? "circle" : "ellipse";
796
868
  const gradient = `radial-gradient(${shapeValue} at center, transparent ${innerStop}%, ${color} ${outerStop}%)`;
797
- return /* @__PURE__ */ React7.createElement(
869
+ return /* @__PURE__ */ React8.createElement(
798
870
  "div",
799
871
  {
800
872
  style: {
@@ -1278,22 +1350,84 @@ var config8 = {
1278
1350
  preview: { thumbnailFrame: 30, mode: "oneshot", defaultExample: "default-bounce" }
1279
1351
  };
1280
1352
 
1281
- // ../execution/primitives/src/effects/success-confetti/config.ts
1353
+ // ../execution/primitives/src/effects/stage-camera/config.ts
1282
1354
  import { z as z9 } from "zod";
1355
+ var cameraPartial = z9.object({
1356
+ x: z9.number().optional(),
1357
+ y: z9.number().optional(),
1358
+ z: z9.number().optional(),
1359
+ rotX: z9.number().optional(),
1360
+ rotY: z9.number().optional(),
1361
+ rotZ: z9.number().optional(),
1362
+ fov: z9.number().min(10).max(120).optional()
1363
+ }).strict();
1283
1364
  var paramsSchema9 = z9.object({
1284
- count: z9.number().int().min(10).max(400).default(120).describe("Number of confetti particles. 80\u2013150 reads festive without overwhelming."),
1285
- colors: z9.array(z9.string()).min(1).default([DANGER, WARNING, SUCCESS, TEAL, VIOLET]).describe("Particle colors to sample from. 4\u20136 distinct hues works best."),
1286
- originX: z9.number().min(0).max(1).default(0.5).describe("Horizontal origin of the burst, normalized 0\u20131."),
1287
- originY: z9.number().min(0).max(1).default(0.5).describe("Vertical origin of the burst, normalized 0\u20131."),
1288
- gravity: z9.number().min(0).max(2).default(0.8).describe("Downward acceleration. 0 = particles drift; 1+ = particles fall fast."),
1289
- velocity: z9.number().min(1).max(40).default(14).describe("Initial burst speed. Higher = particles travel further."),
1290
- text: z9.string().optional().describe('Optional centered text on top of the confetti (e.g., "\u2713 Done").'),
1291
- textColor: z9.string().default(SURFACE).describe("Color of the optional text."),
1292
- background: z9.string().optional().describe("Optional full-frame background behind the burst."),
1293
- seed: z9.string().default("cueframe").describe("Deterministic seed for the particle distribution."),
1294
- speed: z9.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
1365
+ move: z9.enum(["static", "dolly-in", "dolly-out", "drift", "tilt-reveal", "orbit"]).default("dolly-in").describe(
1366
+ "Camera move over the effect window. dolly-in settles from far to rest; tilt-reveal leans a flat frame back into place; drift is a slow glide for holds; orbit swings around the frame centre."
1367
+ ),
1368
+ fov: z9.number().min(10).max(120).default(40).describe("Vertical field of view in degrees. 28\u201345 reads cinematic; wider exaggerates depth."),
1369
+ amount: z9.number().optional().describe("Move magnitude: px for dolly/drift, degrees for tilt/orbit. Preset default when omitted."),
1370
+ easing: z9.enum(["entrance", "emphasis", "playful", "exit", "cross", "drama", "none"]).default("entrance").describe("Easing intent for the move."),
1371
+ from: cameraPartial.optional().describe("Override the starting camera (x,y,z px; rotX,rotY,rotZ deg; fov)."),
1372
+ to: cameraPartial.optional().describe("Override the ending camera."),
1373
+ focus: z9.object({ z: z9.number(), range: z9.number().positive(), maxBlur: z9.number().min(0).max(40) }).optional().describe(
1374
+ "Layer depth of field: lanes further than `range` px from the plane at `z` blur up to `maxBlur` px. Only bites once `layerDepth` has actually spread the lanes apart, which needs two or more media tracks."
1375
+ ),
1376
+ layerDepth: z9.number().min(0).max(1e3).default(0).describe(
1377
+ "Spacing in px between successive media track lanes in depth; the top track is nearest. Needs two or more media tracks to do anything: a single-track timeline is one lane, every lane depth is 0, and the frame moves as one plane. Overlays \u2014 text, backgrounds, UI blocks, scenes \u2014 are not lanes and never take a depth. Lanes behind the front one are scaled back up so they still fill the frame at rest, so the depth reads as parallax under camera motion rather than as a shrunken layer. 0 moves the whole frame as one plane."
1378
+ )
1295
1379
  }).passthrough();
1296
1380
  var config9 = {
1381
+ id: "stage-camera",
1382
+ component: StageCameraEffect,
1383
+ name: "Stage Camera",
1384
+ category: "effects",
1385
+ kind: "component",
1386
+ version: "0.1.0",
1387
+ effectPlacement: "wrap",
1388
+ intent: "camera-move",
1389
+ description: "A scene camera over the media clip lanes: perspective dolly, tilt, drift, or orbit with optional layer depth of field. It wraps the lanes and nothing else \u2014 overlays (text, backgrounds, UI blocks, scenes) composite above it and are not moved by it. With layerDepth > 0 and two or more media tracks, each lane sits on its own depth plane and the lanes parallax against one another under the move.",
1390
+ useWhen: "Any hold of media clips that would otherwise sit still; product and screenshot reveals (tilt-reveal); opening beats (dolly-in); ambient motion under text (drift). It needs media clips to move: on a timeline whose visuals are all overlays it renders nothing. List it first among the effects so it is the innermost wrap and receives the lanes directly. Avoid stacking two stage cameras.",
1391
+ pairsWith: ["color-grade", "vignette"],
1392
+ avoidWith: ["zoom-through", "spatial-push"],
1393
+ tier: "recommended",
1394
+ useCase: ["emphasis", "intro", "full-scene"],
1395
+ tags: ["camera", "dolly", "tilt", "orbit", "parallax", "depth", "3d", "perspective", "depth-of-field"],
1396
+ mood: ["cinematic", "minimal", "tech-demo", "editorial"],
1397
+ paramsSchema: paramsSchema9,
1398
+ propDefaults: { move: "dolly-in", fov: 40, easing: "entrance", layerDepth: 0 },
1399
+ examples: [
1400
+ { name: "dolly-in", mood: ["cinematic"], params: { move: "dolly-in", fov: 36 }, description: "Settle in from far. Opening beats." },
1401
+ { name: "tilt-reveal", mood: ["tech-demo"], params: { move: "tilt-reveal", fov: 40, amount: 18 }, description: "A flat screenshot leans back into the frame." },
1402
+ { name: "drift-parallax", mood: ["minimal"], params: { move: "drift", layerDepth: 160, focus: { z: 0, range: 500, maxBlur: 8 } }, description: "Slow glide with the media lanes on separate depth planes; the lane behind softens. Requires two or more media tracks \u2014 with one track there is a single lane and this renders as a plain drift." },
1403
+ { name: "orbit", mood: ["editorial"], params: { move: "orbit", amount: 14 } }
1404
+ ],
1405
+ textParam: null,
1406
+ subtextParam: null,
1407
+ tokens: [],
1408
+ durationInFrames: 90,
1409
+ fps: 30,
1410
+ width: 1920,
1411
+ height: 1080,
1412
+ preview: { thumbnailFrame: 30, mode: "oneshot", defaultExample: "dolly-in" }
1413
+ };
1414
+
1415
+ // ../execution/primitives/src/effects/success-confetti/config.ts
1416
+ import { z as z10 } from "zod";
1417
+ var paramsSchema10 = z10.object({
1418
+ count: z10.number().int().min(10).max(400).default(120).describe("Number of confetti particles. 80\u2013150 reads festive without overwhelming."),
1419
+ colors: z10.array(z10.string()).min(1).default([DANGER, WARNING, SUCCESS, TEAL, VIOLET]).describe("Particle colors to sample from. 4\u20136 distinct hues works best."),
1420
+ originX: z10.number().min(0).max(1).default(0.5).describe("Horizontal origin of the burst, normalized 0\u20131."),
1421
+ originY: z10.number().min(0).max(1).default(0.5).describe("Vertical origin of the burst, normalized 0\u20131."),
1422
+ gravity: z10.number().min(0).max(2).default(0.8).describe("Downward acceleration. 0 = particles drift; 1+ = particles fall fast."),
1423
+ velocity: z10.number().min(1).max(40).default(14).describe("Initial burst speed. Higher = particles travel further."),
1424
+ text: z10.string().optional().describe('Optional centered text on top of the confetti (e.g., "\u2713 Done").'),
1425
+ textColor: z10.string().default(SURFACE).describe("Color of the optional text."),
1426
+ background: z10.string().optional().describe("Optional full-frame background behind the burst."),
1427
+ seed: z10.string().default("cueframe").describe("Deterministic seed for the particle distribution."),
1428
+ speed: z10.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
1429
+ }).passthrough();
1430
+ var config10 = {
1297
1431
  id: "success-confetti",
1298
1432
  component: SuccessConfetti,
1299
1433
  name: "Success Confetti",
@@ -1309,7 +1443,7 @@ var config9 = {
1309
1443
  useCase: ["emphasis"],
1310
1444
  tags: ["effect", "confetti", "celebration", "particles", "success", "achievement"],
1311
1445
  mood: ["playful", "breaking-news"],
1312
- paramsSchema: paramsSchema9,
1446
+ paramsSchema: paramsSchema10,
1313
1447
  propDefaults: { count: 120, colors: [DANGER, WARNING, SUCCESS, TEAL, VIOLET], originX: 0.5, originY: 0.5, gravity: 0.8, velocity: 14, textColor: SURFACE, seed: "cueframe", speed: 1 },
1314
1448
  examples: [
1315
1449
  {
@@ -1336,14 +1470,14 @@ var config9 = {
1336
1470
  };
1337
1471
 
1338
1472
  // ../execution/primitives/src/effects/vignette/config.ts
1339
- import { z as z10 } from "zod";
1340
- var paramsSchema10 = z10.object({
1341
- intensity: z10.number().min(0).max(1).default(0.5).describe("Edge darkness. 0.4\u20130.6 reads as cinematic; 0.8+ feels like a tunnel."),
1342
- spread: z10.number().min(0).max(1).default(0.5).describe("How far from the edges the vignette starts. Lower = covers more of the frame."),
1343
- shape: z10.enum(["ellipse", "circle"]).default("ellipse").describe("Gradient shape. Ellipse follows the frame ratio; circle is centered round."),
1344
- color: z10.string().default("black").describe("Vignette color. Black is canonical; dark colors can tint the frame edges.")
1473
+ import { z as z11 } from "zod";
1474
+ var paramsSchema11 = z11.object({
1475
+ intensity: z11.number().min(0).max(1).default(0.5).describe("Edge darkness. 0.4\u20130.6 reads as cinematic; 0.8+ feels like a tunnel."),
1476
+ spread: z11.number().min(0).max(1).default(0.5).describe("How far from the edges the vignette starts. Lower = covers more of the frame."),
1477
+ shape: z11.enum(["ellipse", "circle"]).default("ellipse").describe("Gradient shape. Ellipse follows the frame ratio; circle is centered round."),
1478
+ color: z11.string().default("black").describe("Vignette color. Black is canonical; dark colors can tint the frame edges.")
1345
1479
  }).passthrough();
1346
- var config10 = {
1480
+ var config11 = {
1347
1481
  id: "vignette",
1348
1482
  component: Vignette,
1349
1483
  name: "Vignette",
@@ -1359,7 +1493,7 @@ var config10 = {
1359
1493
  useCase: ["grade"],
1360
1494
  tags: ["effect", "vignette", "edge", "darken", "focus", "cinematic"],
1361
1495
  mood: ["cinematic", "editorial", "minimal"],
1362
- paramsSchema: paramsSchema10,
1496
+ paramsSchema: paramsSchema11,
1363
1497
  propDefaults: { intensity: 0.5, spread: 0.5, shape: "ellipse", color: "black" },
1364
1498
  examples: [
1365
1499
  {
@@ -1394,7 +1528,8 @@ var catalog = [
1394
1528
  config7,
1395
1529
  config8,
1396
1530
  config9,
1397
- config10
1531
+ config10,
1532
+ config11
1398
1533
  ];
1399
1534
 
1400
1535
  export {
@@ -1406,6 +1541,8 @@ export {
1406
1541
  PulsingIndicator,
1407
1542
  SpotlightCard,
1408
1543
  SpringPopIn,
1544
+ laneDepths,
1545
+ StageCameraEffect,
1409
1546
  SuccessConfetti,
1410
1547
  Vignette,
1411
1548
  catalog
@@ -1,9 +1,8 @@
1
1
  import {
2
2
  ComponentRuntimeError
3
- } from "./chunk-LQUWKBST.js";
3
+ } from "./chunk-ZVG446DJ.js";
4
4
 
5
- // ../execution/component-runtime/src/importPolicy.ts
6
- import { parse } from "@babel/parser";
5
+ // ../execution/component-runtime/src/allowedImports.ts
7
6
  var COMPONENT_IMPORT_ALLOWLIST = Object.freeze([
8
7
  "react",
9
8
  "react/jsx-runtime",
@@ -20,10 +19,12 @@ var COMPONENT_IMPORT_ALLOWLIST = Object.freeze([
20
19
  "three/webgpu",
21
20
  "three/tsl",
22
21
  "@react-three/fiber",
23
- "@react-three/drei",
24
22
  "@cueframe/animate",
25
23
  "gsap"
26
24
  ]);
25
+
26
+ // ../execution/component-runtime/src/importPolicy.ts
27
+ import { parse } from "@babel/parser";
27
28
  var ALLOWED_IMPORTS = new Set(COMPONENT_IMPORT_ALLOWLIST);
28
29
  var DENIED_NONDETERMINISTIC_MEMBERS = /* @__PURE__ */ new Set([
29
30
  "Math.random",
@@ -38,6 +39,14 @@ var DENIED_AMBIENT_CALLS = /* @__PURE__ */ new Set([
38
39
  "setTimeout",
39
40
  "setInterval"
40
41
  ]);
42
+ var GUARDED_MEDIA_EXPORTS = /* @__PURE__ */ new Set(["Audio", "Html5Audio", "Html5Video", "OffthreadVideo", "Video"]);
43
+ function importedName(specifier) {
44
+ const imported = specifier.imported;
45
+ if (specifier.type !== "ImportSpecifier" || !imported) return null;
46
+ if (imported.type === "Identifier" && typeof imported.name === "string") return imported.name;
47
+ if (imported.type === "StringLiteral" && typeof imported.value === "string") return imported.value;
48
+ return null;
49
+ }
41
50
  function staticMemberPath(value) {
42
51
  if (!value || typeof value !== "object") return null;
43
52
  const node = value;
@@ -58,8 +67,9 @@ function denied(specifier) {
58
67
  `Component import is not allowed: ${JSON.stringify(specifier)}.`
59
68
  );
60
69
  }
61
- function assertComponentImportsAllowed(tsxSource) {
70
+ function assertComponentImportsAllowed(tsxSource, graphicsApi) {
62
71
  let root;
72
+ let usesMediaTileScene = false;
63
73
  try {
64
74
  root = parse(tsxSource, {
65
75
  sourceType: "module",
@@ -83,6 +93,15 @@ function assertComponentImportsAllowed(tsxSource) {
83
93
  if ((type === "ImportDeclaration" || type === "ExportNamedDeclaration" || type === "ExportAllDeclaration") && node.source && typeof node.source === "object") {
84
94
  const specifier = node.source.value;
85
95
  if (typeof specifier === "string" && !ALLOWED_IMPORTS.has(specifier)) denied(specifier);
96
+ if ((specifier === "remotion" || specifier === "@remotion/media") && type === "ImportDeclaration") {
97
+ const specifiers = Array.isArray(node.specifiers) ? node.specifiers : [];
98
+ const mediaExport = specifiers.map(importedName).find((name) => name !== null && GUARDED_MEDIA_EXPORTS.has(name));
99
+ if (mediaExport) denied(`${specifier}.${mediaExport}; use @cueframe/animate MediaTileScene`);
100
+ }
101
+ if (specifier === "@cueframe/animate" && type === "ImportDeclaration") {
102
+ const specifiers = Array.isArray(node.specifiers) ? node.specifiers : [];
103
+ usesMediaTileScene ||= specifiers.map(importedName).some((name) => name === "MediaTileScene" || name === "ImageTileScene");
104
+ }
86
105
  }
87
106
  if (type === "ImportExpression") denied("dynamic import()");
88
107
  if (type === "CallExpression") {
@@ -92,6 +111,18 @@ function assertComponentImportsAllowed(tsxSource) {
92
111
  if (callee?.type === "Identifier" && typeof callee.name === "string" && DENIED_AMBIENT_CALLS.has(callee.name)) {
93
112
  denied(`ambient ${callee.name}`);
94
113
  }
114
+ const member = normalizedAmbientPath(node.callee);
115
+ const args = Array.isArray(node.arguments) ? node.arguments : [];
116
+ const tag = args[0]?.type === "StringLiteral" ? args[0].value : void 0;
117
+ if (member === "document.createElement" && (tag === "video" || tag === "audio")) {
118
+ denied(`raw ${tag} element; use @cueframe/animate MediaTileScene`);
119
+ }
120
+ }
121
+ if (type === "JSXOpeningElement") {
122
+ const name = node.name;
123
+ if (name?.type === "JSXIdentifier" && (name.name === "video" || name.name === "audio")) {
124
+ denied(`raw <${String(name.name)}> element; use @cueframe/animate MediaTileScene`);
125
+ }
95
126
  }
96
127
  if (type === "NewExpression") {
97
128
  const callee = node.callee;
@@ -127,6 +158,12 @@ function assertComponentImportsAllowed(tsxSource) {
127
158
  }
128
159
  };
129
160
  visit(root);
161
+ if (usesMediaTileScene && graphicsApi !== void 0 && graphicsApi !== "webgl2") {
162
+ throw new ComponentRuntimeError(
163
+ "component_graphics_mismatch",
164
+ "MediaTileScene requires manifest.graphics.api to be webgl2."
165
+ );
166
+ }
130
167
  }
131
168
 
132
169
  export {
@@ -0,0 +1,63 @@
1
+ // ../execution/component-runtime/src/mediaResolution.ts
2
+ var COMPONENT_MEDIA_TIERS = [256, 512, 1024, 2048];
3
+ var COMPONENT_MEDIA_HEADROOM = 1.25;
4
+ function dimensionsForLongEdge(source, longEdge) {
5
+ const scale = Math.min(1, longEdge / Math.max(source.width, source.height));
6
+ return {
7
+ width: Math.max(1, Math.round(source.width * scale)),
8
+ height: Math.max(1, Math.round(source.height * scale))
9
+ };
10
+ }
11
+ function assertDimensions(name, value) {
12
+ if (![value.width, value.height].every((dimension) => Number.isSafeInteger(dimension) && dimension > 0)) {
13
+ throw new Error(`${name} dimensions must be positive safe integers.`);
14
+ }
15
+ }
16
+ function planComponentMediaRepresentation(input) {
17
+ assertDimensions("Source", input.source);
18
+ assertDimensions("Output", input.output);
19
+ const original = (requiredWidth2, requiredHeight2) => ({
20
+ kind: "original",
21
+ width: input.source.width,
22
+ height: input.source.height,
23
+ tier: null,
24
+ requiredWidth: requiredWidth2,
25
+ requiredHeight: requiredHeight2
26
+ });
27
+ if (input.demand.mode === "original") return original(input.source.width, input.source.height);
28
+ if (input.demand.mode === "tier") {
29
+ const size = dimensionsForLongEdge(input.source, input.demand.tier);
30
+ if (size.width === input.source.width && size.height === input.source.height) {
31
+ return original(size.width, size.height);
32
+ }
33
+ return {
34
+ kind: "proxy",
35
+ ...size,
36
+ tier: input.demand.tier,
37
+ requiredWidth: size.width,
38
+ requiredHeight: size.height
39
+ };
40
+ }
41
+ const requiredWidth = Math.ceil(
42
+ input.output.width * input.demand.maxProjectedWidthRatio / input.demand.minVisibleSourceWidthRatio * COMPONENT_MEDIA_HEADROOM
43
+ );
44
+ const requiredHeight = Math.ceil(
45
+ input.output.height * input.demand.maxProjectedHeightRatio / input.demand.minVisibleSourceHeightRatio * COMPONENT_MEDIA_HEADROOM
46
+ );
47
+ for (const tier of COMPONENT_MEDIA_TIERS) {
48
+ const size = dimensionsForLongEdge(input.source, tier);
49
+ if (size.width >= requiredWidth && size.height >= requiredHeight) {
50
+ if (size.width === input.source.width && size.height === input.source.height) {
51
+ return original(requiredWidth, requiredHeight);
52
+ }
53
+ return { kind: "proxy", ...size, tier, requiredWidth, requiredHeight };
54
+ }
55
+ }
56
+ return original(requiredWidth, requiredHeight);
57
+ }
58
+
59
+ export {
60
+ COMPONENT_MEDIA_TIERS,
61
+ COMPONENT_MEDIA_HEADROOM,
62
+ planComponentMediaRepresentation
63
+ };
@@ -45,7 +45,12 @@ function componentRenderIdentity(request) {
45
45
  return canonicalJson({ domain: "cueframe.component.render.v2", request });
46
46
  }
47
47
  function componentArtifactIdentity(input) {
48
- return canonicalJson({ domain: "cueframe.component.artifact.v2", ...input });
48
+ const { host: _host, ...identity } = input.receipt;
49
+ return canonicalJson({
50
+ domain: "cueframe.component.artifact.v2",
51
+ outputSha256: input.outputSha256,
52
+ receipt: identity
53
+ });
49
54
  }
50
55
 
51
56
  export {