@appinternalleads/ui 0.4.0 → 0.4.2

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 (901) hide show
  1. package/README.md +92 -0
  2. package/dist/cjs/agent/AgentComponent.js +1 -1
  3. package/dist/cjs/agent/AgentComponent.js.map +1 -1
  4. package/dist/cjs/agent/manifests.js +81 -1
  5. package/dist/cjs/agent/manifests.js.map +1 -1
  6. package/dist/cjs/agent/result.js +6 -0
  7. package/dist/cjs/agent/result.js.map +1 -1
  8. package/dist/cjs/components/catalog.js +18 -0
  9. package/dist/cjs/components/catalog.js.map +1 -1
  10. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js +21 -0
  11. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
  12. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js +6 -0
  13. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
  14. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js +89 -0
  15. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
  16. package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js +62 -0
  17. package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
  18. package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js +20 -0
  19. package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
  20. package/dist/cjs/components/onboarding/animated-status/contract.js +87 -0
  21. package/dist/cjs/components/onboarding/animated-status/contract.js.map +1 -0
  22. package/dist/cjs/components/onboarding/animated-status/engine.js +40 -0
  23. package/dist/cjs/components/onboarding/animated-status/engine.js.map +1 -0
  24. package/dist/cjs/components/onboarding/animated-status/index.js +20 -0
  25. package/dist/cjs/components/onboarding/animated-status/index.js.map +1 -0
  26. package/dist/cjs/components/onboarding/animated-status/presets.json +126 -0
  27. package/dist/cjs/components/onboarding/animated-status/riv.js +7 -0
  28. package/dist/cjs/components/onboarding/animated-status/riv.js.map +1 -0
  29. package/dist/cjs/components/onboarding/index.js +4 -0
  30. package/dist/cjs/components/onboarding/index.js.map +1 -1
  31. package/dist/cjs/components/onboarding/presets.js +90 -84
  32. package/dist/cjs/components/onboarding/presets.js.map +1 -1
  33. package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js +43 -6
  34. package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
  35. package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js +111 -0
  36. package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
  37. package/dist/cjs/components/onboarding/send-completion/SendStage.js +37 -0
  38. package/dist/cjs/components/onboarding/send-completion/SendStage.js.map +1 -0
  39. package/dist/cjs/components/onboarding/send-completion/SendStage.types.js +6 -0
  40. package/dist/cjs/components/onboarding/send-completion/SendStage.types.js.map +1 -0
  41. package/dist/cjs/components/onboarding/send-completion/SendStage.web.js +107 -0
  42. package/dist/cjs/components/onboarding/send-completion/SendStage.web.js.map +1 -0
  43. package/dist/cjs/components/onboarding/send-completion/SendStill.js +17 -0
  44. package/dist/cjs/components/onboarding/send-completion/SendStill.js.map +1 -0
  45. package/dist/cjs/components/onboarding/send-completion/contract.js +83 -0
  46. package/dist/cjs/components/onboarding/send-completion/contract.js.map +1 -0
  47. package/dist/cjs/components/onboarding/send-completion/engine.js +32 -0
  48. package/dist/cjs/components/onboarding/send-completion/engine.js.map +1 -0
  49. package/dist/cjs/components/onboarding/send-completion/index.js +22 -0
  50. package/dist/cjs/components/onboarding/send-completion/index.js.map +1 -0
  51. package/dist/cjs/components/onboarding/send-completion/presets.json +132 -0
  52. package/dist/cjs/components/onboarding/send-completion/riv.js +7 -0
  53. package/dist/cjs/components/onboarding/send-completion/riv.js.map +1 -0
  54. package/dist/cjs/components/onboarding/shared/actions-data.js +2 -0
  55. package/dist/cjs/components/onboarding/shared/actions-data.js.map +1 -1
  56. package/dist/cjs/components/onboarding/shared/configColor.js +76 -0
  57. package/dist/cjs/components/onboarding/shared/configColor.js.map +1 -0
  58. package/dist/cjs/components/onboarding/shared/contract.js +4 -0
  59. package/dist/cjs/components/onboarding/shared/contract.js.map +1 -1
  60. package/dist/cjs/components/onboarding/shared/describe.js +1 -1
  61. package/dist/cjs/components/onboarding/shared/describe.js.map +1 -1
  62. package/dist/cjs/components/onboarding/shared/mock.js +2 -0
  63. package/dist/cjs/components/onboarding/shared/mock.js.map +1 -1
  64. package/dist/cjs/components/onboarding/views.js +8 -0
  65. package/dist/cjs/components/onboarding/views.js.map +1 -1
  66. package/dist/cjs/motion/MotionPlayer.js +42 -0
  67. package/dist/cjs/motion/MotionPlayer.js.map +1 -0
  68. package/dist/cjs/motion/agent.js +323 -0
  69. package/dist/cjs/motion/agent.js.map +1 -0
  70. package/dist/cjs/motion/cat/Cat.js +79 -0
  71. package/dist/cjs/motion/cat/Cat.js.map +1 -0
  72. package/dist/cjs/motion/cat/animation.js +204 -0
  73. package/dist/cjs/motion/cat/animation.js.map +1 -0
  74. package/dist/cjs/motion/cat/art.generated.js +37 -0
  75. package/dist/cjs/motion/cat/art.generated.js.map +1 -0
  76. package/dist/cjs/motion/cat/config.js +136 -0
  77. package/dist/cjs/motion/cat/config.js.map +1 -0
  78. package/dist/cjs/motion/cat/index.js +75 -0
  79. package/dist/cjs/motion/cat/index.js.map +1 -0
  80. package/dist/cjs/motion/cat/rig.js +99 -0
  81. package/dist/cjs/motion/cat/rig.js.map +1 -0
  82. package/dist/cjs/motion/cat/scene.js +148 -0
  83. package/dist/cjs/motion/cat/scene.js.map +1 -0
  84. package/dist/cjs/motion/configurable/config.js +477 -0
  85. package/dist/cjs/motion/configurable/config.js.map +1 -0
  86. package/dist/cjs/motion/configurable/controls.js +44 -0
  87. package/dist/cjs/motion/configurable/controls.js.map +1 -0
  88. package/dist/cjs/motion/easing.js +62 -0
  89. package/dist/cjs/motion/easing.js.map +1 -0
  90. package/dist/cjs/motion/fit.js +12 -0
  91. package/dist/cjs/motion/fit.js.map +1 -0
  92. package/dist/cjs/motion/index.js +101 -0
  93. package/dist/cjs/motion/index.js.map +1 -0
  94. package/dist/cjs/motion/neon/GlowRenderer.js +18 -0
  95. package/dist/cjs/motion/neon/GlowRenderer.js.map +1 -0
  96. package/dist/cjs/motion/neon/NeonCanvas.js +97 -0
  97. package/dist/cjs/motion/neon/NeonCanvas.js.map +1 -0
  98. package/dist/cjs/motion/neon/NeonText.js +108 -0
  99. package/dist/cjs/motion/neon/NeonText.js.map +1 -0
  100. package/dist/cjs/motion/neon/NeonTextFrame.js +36 -0
  101. package/dist/cjs/motion/neon/NeonTextFrame.js.map +1 -0
  102. package/dist/cjs/motion/neon/artwork.js +102 -0
  103. package/dist/cjs/motion/neon/artwork.js.map +1 -0
  104. package/dist/cjs/motion/neon/audio.js +165 -0
  105. package/dist/cjs/motion/neon/audio.js.map +1 -0
  106. package/dist/cjs/motion/neon/config.js +334 -0
  107. package/dist/cjs/motion/neon/config.js.map +1 -0
  108. package/dist/cjs/motion/neon/flicker.js +196 -0
  109. package/dist/cjs/motion/neon/flicker.js.map +1 -0
  110. package/dist/cjs/motion/neon/fonts.js +52 -0
  111. package/dist/cjs/motion/neon/fonts.js.map +1 -0
  112. package/dist/cjs/motion/neon/frame.js +24 -0
  113. package/dist/cjs/motion/neon/frame.js.map +1 -0
  114. package/dist/cjs/motion/neon/glitch.js +114 -0
  115. package/dist/cjs/motion/neon/glitch.js.map +1 -0
  116. package/dist/cjs/motion/neon/index.js +119 -0
  117. package/dist/cjs/motion/neon/index.js.map +1 -0
  118. package/dist/cjs/motion/neon/layers.js +68 -0
  119. package/dist/cjs/motion/neon/layers.js.map +1 -0
  120. package/dist/cjs/motion/neon/material.js +56 -0
  121. package/dist/cjs/motion/neon/material.js.map +1 -0
  122. package/dist/cjs/motion/neon/random.js +43 -0
  123. package/dist/cjs/motion/neon/random.js.map +1 -0
  124. package/dist/cjs/motion/neon/scene.js +549 -0
  125. package/dist/cjs/motion/neon/scene.js.map +1 -0
  126. package/dist/cjs/motion/neon/synth.js +213 -0
  127. package/dist/cjs/motion/neon/synth.js.map +1 -0
  128. package/dist/cjs/motion/neon/typography.js +81 -0
  129. package/dist/cjs/motion/neon/typography.js.map +1 -0
  130. package/dist/cjs/motion/neon/wall.js +113 -0
  131. package/dist/cjs/motion/neon/wall.js.map +1 -0
  132. package/dist/cjs/motion/paperfold/PaperFold.js +40 -0
  133. package/dist/cjs/motion/paperfold/PaperFold.js.map +1 -0
  134. package/dist/cjs/motion/paperfold/PaperFoldFrame.js +290 -0
  135. package/dist/cjs/motion/paperfold/PaperFoldFrame.js.map +1 -0
  136. package/dist/cjs/motion/paperfold/PaperFoldPlayer.js +59 -0
  137. package/dist/cjs/motion/paperfold/PaperFoldPlayer.js.map +1 -0
  138. package/dist/cjs/motion/paperfold/art.js +388 -0
  139. package/dist/cjs/motion/paperfold/art.js.map +1 -0
  140. package/dist/cjs/motion/paperfold/config.js +103 -0
  141. package/dist/cjs/motion/paperfold/config.js.map +1 -0
  142. package/dist/cjs/motion/paperfold/controls.js +493 -0
  143. package/dist/cjs/motion/paperfold/controls.js.map +1 -0
  144. package/dist/cjs/motion/paperfold/engine.js +722 -0
  145. package/dist/cjs/motion/paperfold/engine.js.map +1 -0
  146. package/dist/cjs/motion/paperfold/fonts.js +25 -0
  147. package/dist/cjs/motion/paperfold/fonts.js.map +1 -0
  148. package/dist/cjs/motion/paperfold/index.js +113 -0
  149. package/dist/cjs/motion/paperfold/index.js.map +1 -0
  150. package/dist/cjs/motion/paperfold/manipulate.js +170 -0
  151. package/dist/cjs/motion/paperfold/manipulate.js.map +1 -0
  152. package/dist/cjs/motion/paperfold/presets.js +119 -0
  153. package/dist/cjs/motion/paperfold/presets.js.map +1 -0
  154. package/dist/cjs/motion/paperfold/template.js +40 -0
  155. package/dist/cjs/motion/paperfold/template.js.map +1 -0
  156. package/dist/cjs/motion/player.js +203 -0
  157. package/dist/cjs/motion/player.js.map +1 -0
  158. package/dist/cjs/motion/promo/PromoFrame.js +293 -0
  159. package/dist/cjs/motion/promo/PromoFrame.js.map +1 -0
  160. package/dist/cjs/motion/promo/PromoShowcasePlayer.js +59 -0
  161. package/dist/cjs/motion/promo/PromoShowcasePlayer.js.map +1 -0
  162. package/dist/cjs/motion/promo/config.js +565 -0
  163. package/dist/cjs/motion/promo/config.js.map +1 -0
  164. package/dist/cjs/motion/promo/controls.js +571 -0
  165. package/dist/cjs/motion/promo/controls.js.map +1 -0
  166. package/dist/cjs/motion/promo/easing.js +35 -0
  167. package/dist/cjs/motion/promo/easing.js.map +1 -0
  168. package/dist/cjs/motion/promo/engine.js +567 -0
  169. package/dist/cjs/motion/promo/engine.js.map +1 -0
  170. package/dist/cjs/motion/promo/fonts.js +20 -0
  171. package/dist/cjs/motion/promo/fonts.js.map +1 -0
  172. package/dist/cjs/motion/promo/icons.js +29 -0
  173. package/dist/cjs/motion/promo/icons.js.map +1 -0
  174. package/dist/cjs/motion/promo/index.js +73 -0
  175. package/dist/cjs/motion/promo/index.js.map +1 -0
  176. package/dist/cjs/motion/promo/presets.js +44 -0
  177. package/dist/cjs/motion/promo/presets.js.map +1 -0
  178. package/dist/cjs/motion/promo/template.js +38 -0
  179. package/dist/cjs/motion/promo/template.js.map +1 -0
  180. package/dist/cjs/motion/replication2/Replication2Player.js +93 -0
  181. package/dist/cjs/motion/replication2/Replication2Player.js.map +1 -0
  182. package/dist/cjs/motion/replication2/config.js +352 -0
  183. package/dist/cjs/motion/replication2/config.js.map +1 -0
  184. package/dist/cjs/motion/replication2/controls.js +286 -0
  185. package/dist/cjs/motion/replication2/controls.js.map +1 -0
  186. package/dist/cjs/motion/replication2/driver.js +68 -0
  187. package/dist/cjs/motion/replication2/driver.js.map +1 -0
  188. package/dist/cjs/motion/replication2/easing.js +97 -0
  189. package/dist/cjs/motion/replication2/easing.js.map +1 -0
  190. package/dist/cjs/motion/replication2/engine.js +481 -0
  191. package/dist/cjs/motion/replication2/engine.js.map +1 -0
  192. package/dist/cjs/motion/replication2/html.js +88 -0
  193. package/dist/cjs/motion/replication2/html.js.map +1 -0
  194. package/dist/cjs/motion/replication2/index.js +61 -0
  195. package/dist/cjs/motion/replication2/index.js.map +1 -0
  196. package/dist/cjs/motion/replication2/measure.js +30 -0
  197. package/dist/cjs/motion/replication2/measure.js.map +1 -0
  198. package/dist/cjs/motion/replication2/metrics.js +10 -0
  199. package/dist/cjs/motion/replication2/metrics.js.map +1 -0
  200. package/dist/cjs/motion/replication2/presets.js +67 -0
  201. package/dist/cjs/motion/replication2/presets.js.map +1 -0
  202. package/dist/cjs/motion/replication2/riv.js +7 -0
  203. package/dist/cjs/motion/replication2/riv.js.map +1 -0
  204. package/dist/cjs/motion/replication2/rive-contract.js +158 -0
  205. package/dist/cjs/motion/replication2/rive-contract.js.map +1 -0
  206. package/dist/cjs/motion/replication2/template.js +35 -0
  207. package/dist/cjs/motion/replication2/template.js.map +1 -0
  208. package/dist/cjs/motion/sample.js +149 -0
  209. package/dist/cjs/motion/sample.js.map +1 -0
  210. package/dist/cjs/motion/templates/hey-template.js +1552 -0
  211. package/dist/cjs/motion/templates/hey-template.js.map +1 -0
  212. package/dist/cjs/motion/templates/index.js +22 -0
  213. package/dist/cjs/motion/templates/index.js.map +1 -0
  214. package/dist/cjs/motion/templates/word-motion.js +1165 -0
  215. package/dist/cjs/motion/templates/word-motion.js.map +1 -0
  216. package/dist/cjs/motion/types.js +3 -0
  217. package/dist/cjs/motion/types.js.map +1 -0
  218. package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js +85 -0
  219. package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
  220. package/dist/cjs/motion/typesurface/art.js +861 -0
  221. package/dist/cjs/motion/typesurface/art.js.map +1 -0
  222. package/dist/cjs/motion/typesurface/config.js +289 -0
  223. package/dist/cjs/motion/typesurface/config.js.map +1 -0
  224. package/dist/cjs/motion/typesurface/construct.js +875 -0
  225. package/dist/cjs/motion/typesurface/construct.js.map +1 -0
  226. package/dist/cjs/motion/typesurface/engine.js +631 -0
  227. package/dist/cjs/motion/typesurface/engine.js.map +1 -0
  228. package/dist/cjs/motion/typesurface/fonts.js +45 -0
  229. package/dist/cjs/motion/typesurface/fonts.js.map +1 -0
  230. package/dist/cjs/motion/typesurface/index.js +80 -0
  231. package/dist/cjs/motion/typesurface/index.js.map +1 -0
  232. package/dist/cjs/motion/typesurface/layout.js +130 -0
  233. package/dist/cjs/motion/typesurface/layout.js.map +1 -0
  234. package/dist/cjs/motion/typesurface/ops.js +175 -0
  235. package/dist/cjs/motion/typesurface/ops.js.map +1 -0
  236. package/dist/cjs/motion/typesurface/presets.js +259 -0
  237. package/dist/cjs/motion/typesurface/presets.js.map +1 -0
  238. package/dist/cjs/motion/typesurface/renderer.js +738 -0
  239. package/dist/cjs/motion/typesurface/renderer.js.map +1 -0
  240. package/dist/cjs/motion/typesurface/shaders.js +322 -0
  241. package/dist/cjs/motion/typesurface/shaders.js.map +1 -0
  242. package/dist/cjs/motion/typesurface/surfaces.js +225 -0
  243. package/dist/cjs/motion/typesurface/surfaces.js.map +1 -0
  244. package/dist/cjs/motion/typesurface/text.js +34 -0
  245. package/dist/cjs/motion/typesurface/text.js.map +1 -0
  246. package/dist/cjs/motion/typesurface/timeline.js +64 -0
  247. package/dist/cjs/motion/typesurface/timeline.js.map +1 -0
  248. package/dist/cjs/motion/validate.js +89 -0
  249. package/dist/cjs/motion/validate.js.map +1 -0
  250. package/dist/cjs/native/RiveReceiptStage.js +9 -150
  251. package/dist/cjs/native/RiveReceiptStage.js.map +1 -1
  252. package/dist/cjs/native/riveReceiptStageFactory.js +162 -0
  253. package/dist/cjs/native/riveReceiptStageFactory.js.map +1 -0
  254. package/dist/cjs/tokens/stage.js +10 -0
  255. package/dist/cjs/tokens/stage.js.map +1 -0
  256. package/dist/esm/agent/AgentComponent.js +1 -1
  257. package/dist/esm/agent/AgentComponent.js.map +1 -1
  258. package/dist/esm/agent/manifests.d.ts.map +1 -1
  259. package/dist/esm/agent/manifests.js +81 -1
  260. package/dist/esm/agent/manifests.js.map +1 -1
  261. package/dist/esm/agent/result.d.ts.map +1 -1
  262. package/dist/esm/agent/result.js +6 -0
  263. package/dist/esm/agent/result.js.map +1 -1
  264. package/dist/esm/agent/types.d.ts +1 -1
  265. package/dist/esm/agent/types.d.ts.map +1 -1
  266. package/dist/esm/components/catalog.d.ts +1 -1
  267. package/dist/esm/components/catalog.d.ts.map +1 -1
  268. package/dist/esm/components/catalog.js +18 -0
  269. package/dist/esm/components/catalog.js.map +1 -1
  270. package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts +9 -0
  271. package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts.map +1 -0
  272. package/dist/esm/components/onboarding/animated-status/AnimatedStage.js +18 -0
  273. package/dist/esm/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
  274. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts +31 -0
  275. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts.map +1 -0
  276. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js +3 -0
  277. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
  278. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts +4 -0
  279. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts.map +1 -0
  280. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js +86 -0
  281. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
  282. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts +32 -0
  283. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts.map +1 -0
  284. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js +59 -0
  285. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
  286. package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts +8 -0
  287. package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts.map +1 -0
  288. package/dist/esm/components/onboarding/animated-status/AnimatedStill.js +17 -0
  289. package/dist/esm/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
  290. package/dist/esm/components/onboarding/animated-status/contract.d.ts +61 -0
  291. package/dist/esm/components/onboarding/animated-status/contract.d.ts.map +1 -0
  292. package/dist/esm/components/onboarding/animated-status/contract.js +78 -0
  293. package/dist/esm/components/onboarding/animated-status/contract.js.map +1 -0
  294. package/dist/esm/components/onboarding/animated-status/engine.d.ts +24 -0
  295. package/dist/esm/components/onboarding/animated-status/engine.d.ts.map +1 -0
  296. package/dist/esm/components/onboarding/animated-status/engine.js +32 -0
  297. package/dist/esm/components/onboarding/animated-status/engine.js.map +1 -0
  298. package/dist/esm/components/onboarding/animated-status/index.d.ts +5 -0
  299. package/dist/esm/components/onboarding/animated-status/index.d.ts.map +1 -0
  300. package/dist/esm/components/onboarding/animated-status/index.js +4 -0
  301. package/dist/esm/components/onboarding/animated-status/index.js.map +1 -0
  302. package/dist/esm/components/onboarding/animated-status/presets.json +126 -0
  303. package/dist/esm/components/onboarding/animated-status/riv.d.ts +3 -0
  304. package/dist/esm/components/onboarding/animated-status/riv.d.ts.map +1 -0
  305. package/dist/esm/components/onboarding/animated-status/riv.js +4 -0
  306. package/dist/esm/components/onboarding/animated-status/riv.js.map +1 -0
  307. package/dist/esm/components/onboarding/index.d.ts +2 -0
  308. package/dist/esm/components/onboarding/index.d.ts.map +1 -1
  309. package/dist/esm/components/onboarding/index.js +4 -0
  310. package/dist/esm/components/onboarding/index.js.map +1 -1
  311. package/dist/esm/components/onboarding/presets.d.ts.map +1 -1
  312. package/dist/esm/components/onboarding/presets.js +6 -0
  313. package/dist/esm/components/onboarding/presets.js.map +1 -1
  314. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts +4 -6
  315. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts.map +1 -1
  316. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js +42 -6
  317. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
  318. package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts +47 -0
  319. package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts.map +1 -0
  320. package/dist/esm/components/onboarding/send-completion/SendCompletionView.js +108 -0
  321. package/dist/esm/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
  322. package/dist/esm/components/onboarding/send-completion/SendStage.d.ts +9 -0
  323. package/dist/esm/components/onboarding/send-completion/SendStage.d.ts.map +1 -0
  324. package/dist/esm/components/onboarding/send-completion/SendStage.js +34 -0
  325. package/dist/esm/components/onboarding/send-completion/SendStage.js.map +1 -0
  326. package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts +33 -0
  327. package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts.map +1 -0
  328. package/dist/esm/components/onboarding/send-completion/SendStage.types.js +3 -0
  329. package/dist/esm/components/onboarding/send-completion/SendStage.types.js.map +1 -0
  330. package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts +4 -0
  331. package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts.map +1 -0
  332. package/dist/esm/components/onboarding/send-completion/SendStage.web.js +104 -0
  333. package/dist/esm/components/onboarding/send-completion/SendStage.web.js.map +1 -0
  334. package/dist/esm/components/onboarding/send-completion/SendStill.d.ts +11 -0
  335. package/dist/esm/components/onboarding/send-completion/SendStill.d.ts.map +1 -0
  336. package/dist/esm/components/onboarding/send-completion/SendStill.js +14 -0
  337. package/dist/esm/components/onboarding/send-completion/SendStill.js.map +1 -0
  338. package/dist/esm/components/onboarding/send-completion/contract.d.ts +99 -0
  339. package/dist/esm/components/onboarding/send-completion/contract.d.ts.map +1 -0
  340. package/dist/esm/components/onboarding/send-completion/contract.js +76 -0
  341. package/dist/esm/components/onboarding/send-completion/contract.js.map +1 -0
  342. package/dist/esm/components/onboarding/send-completion/engine.d.ts +20 -0
  343. package/dist/esm/components/onboarding/send-completion/engine.d.ts.map +1 -0
  344. package/dist/esm/components/onboarding/send-completion/engine.js +28 -0
  345. package/dist/esm/components/onboarding/send-completion/engine.js.map +1 -0
  346. package/dist/esm/components/onboarding/send-completion/index.d.ts +6 -0
  347. package/dist/esm/components/onboarding/send-completion/index.d.ts.map +1 -0
  348. package/dist/esm/components/onboarding/send-completion/index.js +6 -0
  349. package/dist/esm/components/onboarding/send-completion/index.js.map +1 -0
  350. package/dist/esm/components/onboarding/send-completion/presets.json +132 -0
  351. package/dist/esm/components/onboarding/send-completion/riv.d.ts +3 -0
  352. package/dist/esm/components/onboarding/send-completion/riv.d.ts.map +1 -0
  353. package/dist/esm/components/onboarding/send-completion/riv.js +4 -0
  354. package/dist/esm/components/onboarding/send-completion/riv.js.map +1 -0
  355. package/dist/esm/components/onboarding/shared/actions-data.d.ts.map +1 -1
  356. package/dist/esm/components/onboarding/shared/actions-data.js +2 -0
  357. package/dist/esm/components/onboarding/shared/actions-data.js.map +1 -1
  358. package/dist/esm/components/onboarding/shared/configColor.d.ts +29 -0
  359. package/dist/esm/components/onboarding/shared/configColor.d.ts.map +1 -0
  360. package/dist/esm/components/onboarding/shared/configColor.js +69 -0
  361. package/dist/esm/components/onboarding/shared/configColor.js.map +1 -0
  362. package/dist/esm/components/onboarding/shared/contract.d.ts +1 -1
  363. package/dist/esm/components/onboarding/shared/contract.d.ts.map +1 -1
  364. package/dist/esm/components/onboarding/shared/contract.js +4 -0
  365. package/dist/esm/components/onboarding/shared/contract.js.map +1 -1
  366. package/dist/esm/components/onboarding/shared/describe.d.ts.map +1 -1
  367. package/dist/esm/components/onboarding/shared/describe.js +1 -1
  368. package/dist/esm/components/onboarding/shared/describe.js.map +1 -1
  369. package/dist/esm/components/onboarding/shared/mock.d.ts +2 -0
  370. package/dist/esm/components/onboarding/shared/mock.d.ts.map +1 -1
  371. package/dist/esm/components/onboarding/shared/mock.js +2 -0
  372. package/dist/esm/components/onboarding/shared/mock.js.map +1 -1
  373. package/dist/esm/components/onboarding/views.d.ts.map +1 -1
  374. package/dist/esm/components/onboarding/views.js +8 -0
  375. package/dist/esm/components/onboarding/views.js.map +1 -1
  376. package/dist/esm/motion/MotionPlayer.d.ts +22 -0
  377. package/dist/esm/motion/MotionPlayer.d.ts.map +1 -0
  378. package/dist/esm/motion/MotionPlayer.js +39 -0
  379. package/dist/esm/motion/MotionPlayer.js.map +1 -0
  380. package/dist/esm/motion/agent.d.ts +146 -0
  381. package/dist/esm/motion/agent.d.ts.map +1 -0
  382. package/dist/esm/motion/agent.js +278 -0
  383. package/dist/esm/motion/agent.js.map +1 -0
  384. package/dist/esm/motion/cat/Cat.d.ts +43 -0
  385. package/dist/esm/motion/cat/Cat.d.ts.map +1 -0
  386. package/dist/esm/motion/cat/Cat.js +74 -0
  387. package/dist/esm/motion/cat/Cat.js.map +1 -0
  388. package/dist/esm/motion/cat/animation.d.ts +86 -0
  389. package/dist/esm/motion/cat/animation.d.ts.map +1 -0
  390. package/dist/esm/motion/cat/animation.js +193 -0
  391. package/dist/esm/motion/cat/animation.js.map +1 -0
  392. package/dist/esm/motion/cat/art.generated.d.ts +53 -0
  393. package/dist/esm/motion/cat/art.generated.d.ts.map +1 -0
  394. package/dist/esm/motion/cat/art.generated.js +34 -0
  395. package/dist/esm/motion/cat/art.generated.js.map +1 -0
  396. package/dist/esm/motion/cat/config.d.ts +103 -0
  397. package/dist/esm/motion/cat/config.d.ts.map +1 -0
  398. package/dist/esm/motion/cat/config.js +129 -0
  399. package/dist/esm/motion/cat/config.js.map +1 -0
  400. package/dist/esm/motion/cat/index.d.ts +13 -0
  401. package/dist/esm/motion/cat/index.d.ts.map +1 -0
  402. package/dist/esm/motion/cat/index.js +13 -0
  403. package/dist/esm/motion/cat/index.js.map +1 -0
  404. package/dist/esm/motion/cat/rig.d.ts +44 -0
  405. package/dist/esm/motion/cat/rig.d.ts.map +1 -0
  406. package/dist/esm/motion/cat/rig.js +86 -0
  407. package/dist/esm/motion/cat/rig.js.map +1 -0
  408. package/dist/esm/motion/cat/scene.d.ts +66 -0
  409. package/dist/esm/motion/cat/scene.d.ts.map +1 -0
  410. package/dist/esm/motion/cat/scene.js +137 -0
  411. package/dist/esm/motion/cat/scene.js.map +1 -0
  412. package/dist/esm/motion/configurable/config.d.ts +80 -0
  413. package/dist/esm/motion/configurable/config.d.ts.map +1 -0
  414. package/dist/esm/motion/configurable/config.js +468 -0
  415. package/dist/esm/motion/configurable/config.js.map +1 -0
  416. package/dist/esm/motion/configurable/controls.d.ts +74 -0
  417. package/dist/esm/motion/configurable/controls.d.ts.map +1 -0
  418. package/dist/esm/motion/configurable/controls.js +38 -0
  419. package/dist/esm/motion/configurable/controls.js.map +1 -0
  420. package/dist/esm/motion/easing.d.ts +4 -0
  421. package/dist/esm/motion/easing.d.ts.map +1 -0
  422. package/dist/esm/motion/easing.js +58 -0
  423. package/dist/esm/motion/easing.js.map +1 -0
  424. package/dist/esm/motion/fit.d.ts +8 -0
  425. package/dist/esm/motion/fit.d.ts.map +1 -0
  426. package/dist/esm/motion/fit.js +8 -0
  427. package/dist/esm/motion/fit.js.map +1 -0
  428. package/dist/esm/motion/index.d.ts +27 -0
  429. package/dist/esm/motion/index.d.ts.map +1 -0
  430. package/dist/esm/motion/index.js +21 -0
  431. package/dist/esm/motion/index.js.map +1 -0
  432. package/dist/esm/motion/neon/GlowRenderer.d.ts +31 -0
  433. package/dist/esm/motion/neon/GlowRenderer.d.ts.map +1 -0
  434. package/dist/esm/motion/neon/GlowRenderer.js +14 -0
  435. package/dist/esm/motion/neon/GlowRenderer.js.map +1 -0
  436. package/dist/esm/motion/neon/NeonCanvas.d.ts +42 -0
  437. package/dist/esm/motion/neon/NeonCanvas.d.ts.map +1 -0
  438. package/dist/esm/motion/neon/NeonCanvas.js +92 -0
  439. package/dist/esm/motion/neon/NeonCanvas.js.map +1 -0
  440. package/dist/esm/motion/neon/NeonText.d.ts +26 -0
  441. package/dist/esm/motion/neon/NeonText.d.ts.map +1 -0
  442. package/dist/esm/motion/neon/NeonText.js +103 -0
  443. package/dist/esm/motion/neon/NeonText.js.map +1 -0
  444. package/dist/esm/motion/neon/NeonTextFrame.d.ts +29 -0
  445. package/dist/esm/motion/neon/NeonTextFrame.d.ts.map +1 -0
  446. package/dist/esm/motion/neon/NeonTextFrame.js +33 -0
  447. package/dist/esm/motion/neon/NeonTextFrame.js.map +1 -0
  448. package/dist/esm/motion/neon/artwork.d.ts +29 -0
  449. package/dist/esm/motion/neon/artwork.d.ts.map +1 -0
  450. package/dist/esm/motion/neon/artwork.js +98 -0
  451. package/dist/esm/motion/neon/artwork.js.map +1 -0
  452. package/dist/esm/motion/neon/audio.d.ts +49 -0
  453. package/dist/esm/motion/neon/audio.d.ts.map +1 -0
  454. package/dist/esm/motion/neon/audio.js +161 -0
  455. package/dist/esm/motion/neon/audio.js.map +1 -0
  456. package/dist/esm/motion/neon/config.d.ts +319 -0
  457. package/dist/esm/motion/neon/config.d.ts.map +1 -0
  458. package/dist/esm/motion/neon/config.js +319 -0
  459. package/dist/esm/motion/neon/config.js.map +1 -0
  460. package/dist/esm/motion/neon/flicker.d.ts +82 -0
  461. package/dist/esm/motion/neon/flicker.d.ts.map +1 -0
  462. package/dist/esm/motion/neon/flicker.js +187 -0
  463. package/dist/esm/motion/neon/flicker.js.map +1 -0
  464. package/dist/esm/motion/neon/fonts.d.ts +29 -0
  465. package/dist/esm/motion/neon/fonts.d.ts.map +1 -0
  466. package/dist/esm/motion/neon/fonts.js +47 -0
  467. package/dist/esm/motion/neon/fonts.js.map +1 -0
  468. package/dist/esm/motion/neon/frame.d.ts +22 -0
  469. package/dist/esm/motion/neon/frame.d.ts.map +1 -0
  470. package/dist/esm/motion/neon/frame.js +20 -0
  471. package/dist/esm/motion/neon/frame.js.map +1 -0
  472. package/dist/esm/motion/neon/glitch.d.ts +64 -0
  473. package/dist/esm/motion/neon/glitch.d.ts.map +1 -0
  474. package/dist/esm/motion/neon/glitch.js +108 -0
  475. package/dist/esm/motion/neon/glitch.js.map +1 -0
  476. package/dist/esm/motion/neon/index.d.ts +29 -0
  477. package/dist/esm/motion/neon/index.d.ts.map +1 -0
  478. package/dist/esm/motion/neon/index.js +28 -0
  479. package/dist/esm/motion/neon/index.js.map +1 -0
  480. package/dist/esm/motion/neon/layers.d.ts +56 -0
  481. package/dist/esm/motion/neon/layers.d.ts.map +1 -0
  482. package/dist/esm/motion/neon/layers.js +64 -0
  483. package/dist/esm/motion/neon/layers.js.map +1 -0
  484. package/dist/esm/motion/neon/material.d.ts +68 -0
  485. package/dist/esm/motion/neon/material.d.ts.map +1 -0
  486. package/dist/esm/motion/neon/material.js +51 -0
  487. package/dist/esm/motion/neon/material.js.map +1 -0
  488. package/dist/esm/motion/neon/random.d.ts +15 -0
  489. package/dist/esm/motion/neon/random.d.ts.map +1 -0
  490. package/dist/esm/motion/neon/random.js +37 -0
  491. package/dist/esm/motion/neon/random.js.map +1 -0
  492. package/dist/esm/motion/neon/scene.d.ts +255 -0
  493. package/dist/esm/motion/neon/scene.d.ts.map +1 -0
  494. package/dist/esm/motion/neon/scene.js +532 -0
  495. package/dist/esm/motion/neon/scene.js.map +1 -0
  496. package/dist/esm/motion/neon/synth.d.ts +18 -0
  497. package/dist/esm/motion/neon/synth.d.ts.map +1 -0
  498. package/dist/esm/motion/neon/synth.js +208 -0
  499. package/dist/esm/motion/neon/synth.js.map +1 -0
  500. package/dist/esm/motion/neon/typography.d.ts +53 -0
  501. package/dist/esm/motion/neon/typography.d.ts.map +1 -0
  502. package/dist/esm/motion/neon/typography.js +74 -0
  503. package/dist/esm/motion/neon/typography.js.map +1 -0
  504. package/dist/esm/motion/neon/wall.d.ts +62 -0
  505. package/dist/esm/motion/neon/wall.d.ts.map +1 -0
  506. package/dist/esm/motion/neon/wall.js +106 -0
  507. package/dist/esm/motion/neon/wall.js.map +1 -0
  508. package/dist/esm/motion/paperfold/PaperFold.d.ts +36 -0
  509. package/dist/esm/motion/paperfold/PaperFold.d.ts.map +1 -0
  510. package/dist/esm/motion/paperfold/PaperFold.js +37 -0
  511. package/dist/esm/motion/paperfold/PaperFold.js.map +1 -0
  512. package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts +39 -0
  513. package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts.map +1 -0
  514. package/dist/esm/motion/paperfold/PaperFoldFrame.js +283 -0
  515. package/dist/esm/motion/paperfold/PaperFoldFrame.js.map +1 -0
  516. package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts +27 -0
  517. package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts.map +1 -0
  518. package/dist/esm/motion/paperfold/PaperFoldPlayer.js +56 -0
  519. package/dist/esm/motion/paperfold/PaperFoldPlayer.js.map +1 -0
  520. package/dist/esm/motion/paperfold/art.d.ts +148 -0
  521. package/dist/esm/motion/paperfold/art.d.ts.map +1 -0
  522. package/dist/esm/motion/paperfold/art.js +374 -0
  523. package/dist/esm/motion/paperfold/art.js.map +1 -0
  524. package/dist/esm/motion/paperfold/config.d.ts +47 -0
  525. package/dist/esm/motion/paperfold/config.d.ts.map +1 -0
  526. package/dist/esm/motion/paperfold/config.js +96 -0
  527. package/dist/esm/motion/paperfold/config.js.map +1 -0
  528. package/dist/esm/motion/paperfold/controls.d.ts +57 -0
  529. package/dist/esm/motion/paperfold/controls.d.ts.map +1 -0
  530. package/dist/esm/motion/paperfold/controls.js +506 -0
  531. package/dist/esm/motion/paperfold/controls.js.map +1 -0
  532. package/dist/esm/motion/paperfold/engine.d.ts +397 -0
  533. package/dist/esm/motion/paperfold/engine.d.ts.map +1 -0
  534. package/dist/esm/motion/paperfold/engine.js +699 -0
  535. package/dist/esm/motion/paperfold/engine.js.map +1 -0
  536. package/dist/esm/motion/paperfold/fonts.d.ts +3 -0
  537. package/dist/esm/motion/paperfold/fonts.d.ts.map +1 -0
  538. package/dist/esm/motion/paperfold/fonts.js +21 -0
  539. package/dist/esm/motion/paperfold/fonts.js.map +1 -0
  540. package/dist/esm/motion/paperfold/index.d.ts +17 -0
  541. package/dist/esm/motion/paperfold/index.d.ts.map +1 -0
  542. package/dist/esm/motion/paperfold/index.js +17 -0
  543. package/dist/esm/motion/paperfold/index.js.map +1 -0
  544. package/dist/esm/motion/paperfold/manipulate.d.ts +59 -0
  545. package/dist/esm/motion/paperfold/manipulate.d.ts.map +1 -0
  546. package/dist/esm/motion/paperfold/manipulate.js +161 -0
  547. package/dist/esm/motion/paperfold/manipulate.js.map +1 -0
  548. package/dist/esm/motion/paperfold/presets.d.ts +9 -0
  549. package/dist/esm/motion/paperfold/presets.d.ts.map +1 -0
  550. package/dist/esm/motion/paperfold/presets.js +115 -0
  551. package/dist/esm/motion/paperfold/presets.js.map +1 -0
  552. package/dist/esm/motion/paperfold/template.d.ts +3 -0
  553. package/dist/esm/motion/paperfold/template.d.ts.map +1 -0
  554. package/dist/esm/motion/paperfold/template.js +37 -0
  555. package/dist/esm/motion/paperfold/template.js.map +1 -0
  556. package/dist/esm/motion/player.d.ts +35 -0
  557. package/dist/esm/motion/player.d.ts.map +1 -0
  558. package/dist/esm/motion/player.js +197 -0
  559. package/dist/esm/motion/player.js.map +1 -0
  560. package/dist/esm/motion/promo/PromoFrame.d.ts +31 -0
  561. package/dist/esm/motion/promo/PromoFrame.d.ts.map +1 -0
  562. package/dist/esm/motion/promo/PromoFrame.js +288 -0
  563. package/dist/esm/motion/promo/PromoFrame.js.map +1 -0
  564. package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts +25 -0
  565. package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts.map +1 -0
  566. package/dist/esm/motion/promo/PromoShowcasePlayer.js +56 -0
  567. package/dist/esm/motion/promo/PromoShowcasePlayer.js.map +1 -0
  568. package/dist/esm/motion/promo/config.d.ts +91 -0
  569. package/dist/esm/motion/promo/config.d.ts.map +1 -0
  570. package/dist/esm/motion/promo/config.js +550 -0
  571. package/dist/esm/motion/promo/config.js.map +1 -0
  572. package/dist/esm/motion/promo/controls.d.ts +86 -0
  573. package/dist/esm/motion/promo/controls.d.ts.map +1 -0
  574. package/dist/esm/motion/promo/controls.js +567 -0
  575. package/dist/esm/motion/promo/controls.js.map +1 -0
  576. package/dist/esm/motion/promo/easing.d.ts +3 -0
  577. package/dist/esm/motion/promo/easing.d.ts.map +1 -0
  578. package/dist/esm/motion/promo/easing.js +32 -0
  579. package/dist/esm/motion/promo/easing.js.map +1 -0
  580. package/dist/esm/motion/promo/engine.d.ts +205 -0
  581. package/dist/esm/motion/promo/engine.d.ts.map +1 -0
  582. package/dist/esm/motion/promo/engine.js +551 -0
  583. package/dist/esm/motion/promo/engine.js.map +1 -0
  584. package/dist/esm/motion/promo/fonts.d.ts +7 -0
  585. package/dist/esm/motion/promo/fonts.d.ts.map +1 -0
  586. package/dist/esm/motion/promo/fonts.js +16 -0
  587. package/dist/esm/motion/promo/fonts.js.map +1 -0
  588. package/dist/esm/motion/promo/icons.d.ts +7 -0
  589. package/dist/esm/motion/promo/icons.d.ts.map +1 -0
  590. package/dist/esm/motion/promo/icons.js +26 -0
  591. package/dist/esm/motion/promo/icons.js.map +1 -0
  592. package/dist/esm/motion/promo/index.d.ts +15 -0
  593. package/dist/esm/motion/promo/index.d.ts.map +1 -0
  594. package/dist/esm/motion/promo/index.js +15 -0
  595. package/dist/esm/motion/promo/index.js.map +1 -0
  596. package/dist/esm/motion/promo/presets.d.ts +13 -0
  597. package/dist/esm/motion/promo/presets.d.ts.map +1 -0
  598. package/dist/esm/motion/promo/presets.js +40 -0
  599. package/dist/esm/motion/promo/presets.js.map +1 -0
  600. package/dist/esm/motion/promo/template.d.ts +8 -0
  601. package/dist/esm/motion/promo/template.d.ts.map +1 -0
  602. package/dist/esm/motion/promo/template.js +35 -0
  603. package/dist/esm/motion/promo/template.js.map +1 -0
  604. package/dist/esm/motion/replication2/Replication2Player.d.ts +26 -0
  605. package/dist/esm/motion/replication2/Replication2Player.d.ts.map +1 -0
  606. package/dist/esm/motion/replication2/Replication2Player.js +90 -0
  607. package/dist/esm/motion/replication2/Replication2Player.js.map +1 -0
  608. package/dist/esm/motion/replication2/config.d.ts +78 -0
  609. package/dist/esm/motion/replication2/config.d.ts.map +1 -0
  610. package/dist/esm/motion/replication2/config.js +341 -0
  611. package/dist/esm/motion/replication2/config.js.map +1 -0
  612. package/dist/esm/motion/replication2/controls.d.ts +70 -0
  613. package/dist/esm/motion/replication2/controls.d.ts.map +1 -0
  614. package/dist/esm/motion/replication2/controls.js +283 -0
  615. package/dist/esm/motion/replication2/controls.js.map +1 -0
  616. package/dist/esm/motion/replication2/driver.d.ts +23 -0
  617. package/dist/esm/motion/replication2/driver.d.ts.map +1 -0
  618. package/dist/esm/motion/replication2/driver.js +65 -0
  619. package/dist/esm/motion/replication2/driver.js.map +1 -0
  620. package/dist/esm/motion/replication2/easing.d.ts +19 -0
  621. package/dist/esm/motion/replication2/easing.d.ts.map +1 -0
  622. package/dist/esm/motion/replication2/easing.js +92 -0
  623. package/dist/esm/motion/replication2/easing.js.map +1 -0
  624. package/dist/esm/motion/replication2/engine.d.ts +236 -0
  625. package/dist/esm/motion/replication2/engine.d.ts.map +1 -0
  626. package/dist/esm/motion/replication2/engine.js +470 -0
  627. package/dist/esm/motion/replication2/engine.js.map +1 -0
  628. package/dist/esm/motion/replication2/html.d.ts +30 -0
  629. package/dist/esm/motion/replication2/html.d.ts.map +1 -0
  630. package/dist/esm/motion/replication2/html.js +83 -0
  631. package/dist/esm/motion/replication2/html.js.map +1 -0
  632. package/dist/esm/motion/replication2/index.d.ts +15 -0
  633. package/dist/esm/motion/replication2/index.d.ts.map +1 -0
  634. package/dist/esm/motion/replication2/index.js +15 -0
  635. package/dist/esm/motion/replication2/index.js.map +1 -0
  636. package/dist/esm/motion/replication2/measure.d.ts +3 -0
  637. package/dist/esm/motion/replication2/measure.d.ts.map +1 -0
  638. package/dist/esm/motion/replication2/measure.js +27 -0
  639. package/dist/esm/motion/replication2/measure.js.map +1 -0
  640. package/dist/esm/motion/replication2/metrics.d.ts +6 -0
  641. package/dist/esm/motion/replication2/metrics.d.ts.map +1 -0
  642. package/dist/esm/motion/replication2/metrics.js +7 -0
  643. package/dist/esm/motion/replication2/metrics.js.map +1 -0
  644. package/dist/esm/motion/replication2/presets.d.ts +13 -0
  645. package/dist/esm/motion/replication2/presets.d.ts.map +1 -0
  646. package/dist/esm/motion/replication2/presets.js +63 -0
  647. package/dist/esm/motion/replication2/presets.js.map +1 -0
  648. package/dist/esm/motion/replication2/riv.d.ts +3 -0
  649. package/dist/esm/motion/replication2/riv.d.ts.map +1 -0
  650. package/dist/esm/motion/replication2/riv.js +4 -0
  651. package/dist/esm/motion/replication2/riv.js.map +1 -0
  652. package/dist/esm/motion/replication2/rive-contract.d.ts +27 -0
  653. package/dist/esm/motion/replication2/rive-contract.d.ts.map +1 -0
  654. package/dist/esm/motion/replication2/rive-contract.js +153 -0
  655. package/dist/esm/motion/replication2/rive-contract.js.map +1 -0
  656. package/dist/esm/motion/replication2/template.d.ts +8 -0
  657. package/dist/esm/motion/replication2/template.d.ts.map +1 -0
  658. package/dist/esm/motion/replication2/template.js +32 -0
  659. package/dist/esm/motion/replication2/template.js.map +1 -0
  660. package/dist/esm/motion/sample.d.ts +61 -0
  661. package/dist/esm/motion/sample.d.ts.map +1 -0
  662. package/dist/esm/motion/sample.js +138 -0
  663. package/dist/esm/motion/sample.js.map +1 -0
  664. package/dist/esm/motion/templates/hey-template.d.ts +3 -0
  665. package/dist/esm/motion/templates/hey-template.d.ts.map +1 -0
  666. package/dist/esm/motion/templates/hey-template.js +1549 -0
  667. package/dist/esm/motion/templates/hey-template.js.map +1 -0
  668. package/dist/esm/motion/templates/index.d.ts +22 -0
  669. package/dist/esm/motion/templates/index.d.ts.map +1 -0
  670. package/dist/esm/motion/templates/index.js +15 -0
  671. package/dist/esm/motion/templates/index.js.map +1 -0
  672. package/dist/esm/motion/templates/word-motion.d.ts +3 -0
  673. package/dist/esm/motion/templates/word-motion.d.ts.map +1 -0
  674. package/dist/esm/motion/templates/word-motion.js +1162 -0
  675. package/dist/esm/motion/templates/word-motion.js.map +1 -0
  676. package/dist/esm/motion/types.d.ts +192 -0
  677. package/dist/esm/motion/types.d.ts.map +1 -0
  678. package/dist/esm/motion/types.js +2 -0
  679. package/dist/esm/motion/types.js.map +1 -0
  680. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts +32 -0
  681. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts.map +1 -0
  682. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js +81 -0
  683. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
  684. package/dist/esm/motion/typesurface/art.d.ts +21 -0
  685. package/dist/esm/motion/typesurface/art.d.ts.map +1 -0
  686. package/dist/esm/motion/typesurface/art.js +854 -0
  687. package/dist/esm/motion/typesurface/art.js.map +1 -0
  688. package/dist/esm/motion/typesurface/config.d.ts +284 -0
  689. package/dist/esm/motion/typesurface/config.d.ts.map +1 -0
  690. package/dist/esm/motion/typesurface/config.js +280 -0
  691. package/dist/esm/motion/typesurface/config.js.map +1 -0
  692. package/dist/esm/motion/typesurface/construct.d.ts +284 -0
  693. package/dist/esm/motion/typesurface/construct.d.ts.map +1 -0
  694. package/dist/esm/motion/typesurface/construct.js +866 -0
  695. package/dist/esm/motion/typesurface/construct.js.map +1 -0
  696. package/dist/esm/motion/typesurface/engine.d.ts +102 -0
  697. package/dist/esm/motion/typesurface/engine.d.ts.map +1 -0
  698. package/dist/esm/motion/typesurface/engine.js +627 -0
  699. package/dist/esm/motion/typesurface/engine.js.map +1 -0
  700. package/dist/esm/motion/typesurface/fonts.d.ts +25 -0
  701. package/dist/esm/motion/typesurface/fonts.d.ts.map +1 -0
  702. package/dist/esm/motion/typesurface/fonts.js +40 -0
  703. package/dist/esm/motion/typesurface/fonts.js.map +1 -0
  704. package/dist/esm/motion/typesurface/index.d.ts +21 -0
  705. package/dist/esm/motion/typesurface/index.d.ts.map +1 -0
  706. package/dist/esm/motion/typesurface/index.js +21 -0
  707. package/dist/esm/motion/typesurface/index.js.map +1 -0
  708. package/dist/esm/motion/typesurface/layout.d.ts +57 -0
  709. package/dist/esm/motion/typesurface/layout.d.ts.map +1 -0
  710. package/dist/esm/motion/typesurface/layout.js +122 -0
  711. package/dist/esm/motion/typesurface/layout.js.map +1 -0
  712. package/dist/esm/motion/typesurface/ops.d.ts +70 -0
  713. package/dist/esm/motion/typesurface/ops.d.ts.map +1 -0
  714. package/dist/esm/motion/typesurface/ops.js +164 -0
  715. package/dist/esm/motion/typesurface/ops.js.map +1 -0
  716. package/dist/esm/motion/typesurface/presets.d.ts +51 -0
  717. package/dist/esm/motion/typesurface/presets.d.ts.map +1 -0
  718. package/dist/esm/motion/typesurface/presets.js +250 -0
  719. package/dist/esm/motion/typesurface/presets.js.map +1 -0
  720. package/dist/esm/motion/typesurface/renderer.d.ts +88 -0
  721. package/dist/esm/motion/typesurface/renderer.d.ts.map +1 -0
  722. package/dist/esm/motion/typesurface/renderer.js +732 -0
  723. package/dist/esm/motion/typesurface/renderer.js.map +1 -0
  724. package/dist/esm/motion/typesurface/shaders.d.ts +17 -0
  725. package/dist/esm/motion/typesurface/shaders.d.ts.map +1 -0
  726. package/dist/esm/motion/typesurface/shaders.js +319 -0
  727. package/dist/esm/motion/typesurface/shaders.js.map +1 -0
  728. package/dist/esm/motion/typesurface/surfaces.d.ts +108 -0
  729. package/dist/esm/motion/typesurface/surfaces.d.ts.map +1 -0
  730. package/dist/esm/motion/typesurface/surfaces.js +216 -0
  731. package/dist/esm/motion/typesurface/surfaces.js.map +1 -0
  732. package/dist/esm/motion/typesurface/text.d.ts +17 -0
  733. package/dist/esm/motion/typesurface/text.d.ts.map +1 -0
  734. package/dist/esm/motion/typesurface/text.js +28 -0
  735. package/dist/esm/motion/typesurface/text.js.map +1 -0
  736. package/dist/esm/motion/typesurface/timeline.d.ts +15 -0
  737. package/dist/esm/motion/typesurface/timeline.d.ts.map +1 -0
  738. package/dist/esm/motion/typesurface/timeline.js +57 -0
  739. package/dist/esm/motion/typesurface/timeline.js.map +1 -0
  740. package/dist/esm/motion/validate.d.ts +22 -0
  741. package/dist/esm/motion/validate.d.ts.map +1 -0
  742. package/dist/esm/motion/validate.js +84 -0
  743. package/dist/esm/motion/validate.js.map +1 -0
  744. package/dist/esm/native/RiveReceiptStage.d.ts +25 -2
  745. package/dist/esm/native/RiveReceiptStage.d.ts.map +1 -1
  746. package/dist/esm/native/RiveReceiptStage.js +7 -148
  747. package/dist/esm/native/RiveReceiptStage.js.map +1 -1
  748. package/dist/esm/native/riveReceiptStageFactory.d.ts +26 -0
  749. package/dist/esm/native/riveReceiptStageFactory.d.ts.map +1 -0
  750. package/dist/esm/native/riveReceiptStageFactory.js +159 -0
  751. package/dist/esm/native/riveReceiptStageFactory.js.map +1 -0
  752. package/dist/esm/tokens/stage.d.ts +7 -0
  753. package/dist/esm/tokens/stage.d.ts.map +1 -0
  754. package/dist/esm/tokens/stage.js +7 -0
  755. package/dist/esm/tokens/stage.js.map +1 -0
  756. package/docs/TYPE-SURFACE.md +183 -0
  757. package/package.json +38 -2
  758. package/spec/examples/components/onboarding/animated-status/case1.json +42 -0
  759. package/spec/examples/components/onboarding/animated-status/case2.json +42 -0
  760. package/spec/examples/components/onboarding/animated-status/case3.json +42 -0
  761. package/spec/examples/components/onboarding/animated-status/case4.json +42 -0
  762. package/spec/examples/components/onboarding/animated-status/case5.json +42 -0
  763. package/spec/examples/components/onboarding/send-completion/case1.json +48 -0
  764. package/spec/examples/components/onboarding/send-completion/case2.json +48 -0
  765. package/spec/examples/components/onboarding/send-completion/case3.json +48 -0
  766. package/spec/examples/components/onboarding/send-completion/case4.json +48 -0
  767. package/spec/examples/components/onboarding/send-completion/case5.json +48 -0
  768. package/spec/families/onboarding.schema.json +610 -1
  769. package/src/agent/AgentComponent.tsx +1 -1
  770. package/src/agent/manifests.ts +83 -1
  771. package/src/agent/result.ts +6 -0
  772. package/src/agent/types.ts +1 -1
  773. package/src/components/catalog.ts +21 -1
  774. package/src/components/onboarding/animated-status/AnimatedStage.tsx +18 -0
  775. package/src/components/onboarding/animated-status/AnimatedStage.types.ts +30 -0
  776. package/src/components/onboarding/animated-status/AnimatedStage.web.tsx +99 -0
  777. package/src/components/onboarding/animated-status/AnimatedStatusView.tsx +109 -0
  778. package/src/components/onboarding/animated-status/AnimatedStill.tsx +23 -0
  779. package/src/components/onboarding/animated-status/contract.ts +105 -0
  780. package/src/components/onboarding/animated-status/engine.ts +49 -0
  781. package/src/components/onboarding/animated-status/index.ts +8 -0
  782. package/src/components/onboarding/animated-status/presets.json +126 -0
  783. package/src/components/onboarding/animated-status/riv.ts +4 -0
  784. package/src/components/onboarding/index.ts +4 -0
  785. package/src/components/onboarding/presets.ts +6 -0
  786. package/src/components/onboarding/receipt-printer/ReceiptStage.tsx +46 -7
  787. package/src/components/onboarding/send-completion/SendCompletionView.tsx +164 -0
  788. package/src/components/onboarding/send-completion/SendStage.tsx +27 -0
  789. package/src/components/onboarding/send-completion/SendStage.types.ts +32 -0
  790. package/src/components/onboarding/send-completion/SendStage.web.tsx +116 -0
  791. package/src/components/onboarding/send-completion/SendStill.tsx +19 -0
  792. package/src/components/onboarding/send-completion/contract.ts +127 -0
  793. package/src/components/onboarding/send-completion/engine.ts +37 -0
  794. package/src/components/onboarding/send-completion/index.ts +10 -0
  795. package/src/components/onboarding/send-completion/presets.json +132 -0
  796. package/src/components/onboarding/send-completion/riv.ts +4 -0
  797. package/src/components/onboarding/shared/actions-data.ts +2 -0
  798. package/src/components/onboarding/shared/configColor.ts +72 -0
  799. package/src/components/onboarding/shared/contract.ts +4 -0
  800. package/src/components/onboarding/shared/describe.ts +1 -1
  801. package/src/components/onboarding/shared/mock.ts +2 -0
  802. package/src/components/onboarding/views.ts +8 -0
  803. package/src/motion/MotionPlayer.tsx +62 -0
  804. package/src/motion/agent.ts +288 -0
  805. package/src/motion/cat/Cat.tsx +118 -0
  806. package/src/motion/cat/animation.ts +206 -0
  807. package/src/motion/cat/art.generated.ts +44 -0
  808. package/src/motion/cat/config.ts +186 -0
  809. package/src/motion/cat/index.ts +26 -0
  810. package/src/motion/cat/rig.ts +102 -0
  811. package/src/motion/cat/scene.ts +181 -0
  812. package/src/motion/configurable/config.ts +420 -0
  813. package/src/motion/configurable/controls.ts +93 -0
  814. package/src/motion/easing.ts +55 -0
  815. package/src/motion/fit.ts +8 -0
  816. package/src/motion/index.ts +29 -0
  817. package/src/motion/neon/GlowRenderer.tsx +83 -0
  818. package/src/motion/neon/NeonCanvas.tsx +175 -0
  819. package/src/motion/neon/NeonText.tsx +113 -0
  820. package/src/motion/neon/NeonTextFrame.tsx +67 -0
  821. package/src/motion/neon/artwork.ts +95 -0
  822. package/src/motion/neon/audio.ts +162 -0
  823. package/src/motion/neon/config.ts +484 -0
  824. package/src/motion/neon/flicker.ts +225 -0
  825. package/src/motion/neon/fonts.ts +76 -0
  826. package/src/motion/neon/frame.ts +34 -0
  827. package/src/motion/neon/glitch.ts +142 -0
  828. package/src/motion/neon/index.ts +41 -0
  829. package/src/motion/neon/layers.tsx +209 -0
  830. package/src/motion/neon/material.ts +88 -0
  831. package/src/motion/neon/random.ts +40 -0
  832. package/src/motion/neon/scene.ts +610 -0
  833. package/src/motion/neon/synth.ts +188 -0
  834. package/src/motion/neon/typography.ts +102 -0
  835. package/src/motion/neon/wall.ts +157 -0
  836. package/src/motion/paperfold/PaperFold.tsx +45 -0
  837. package/src/motion/paperfold/PaperFoldFrame.tsx +576 -0
  838. package/src/motion/paperfold/PaperFoldPlayer.tsx +80 -0
  839. package/src/motion/paperfold/art.ts +455 -0
  840. package/src/motion/paperfold/config.ts +98 -0
  841. package/src/motion/paperfold/controls.ts +557 -0
  842. package/src/motion/paperfold/engine.ts +852 -0
  843. package/src/motion/paperfold/fonts.ts +21 -0
  844. package/src/motion/paperfold/index.ts +30 -0
  845. package/src/motion/paperfold/manipulate.ts +188 -0
  846. package/src/motion/paperfold/presets.ts +117 -0
  847. package/src/motion/paperfold/template.ts +38 -0
  848. package/src/motion/player.ts +207 -0
  849. package/src/motion/promo/PromoFrame.tsx +501 -0
  850. package/src/motion/promo/PromoShowcasePlayer.tsx +78 -0
  851. package/src/motion/promo/config.ts +479 -0
  852. package/src/motion/promo/controls.ts +643 -0
  853. package/src/motion/promo/easing.ts +36 -0
  854. package/src/motion/promo/engine.ts +587 -0
  855. package/src/motion/promo/fonts.ts +16 -0
  856. package/src/motion/promo/icons.tsx +29 -0
  857. package/src/motion/promo/index.ts +24 -0
  858. package/src/motion/promo/presets.ts +40 -0
  859. package/src/motion/promo/template.ts +36 -0
  860. package/src/motion/replication2/Replication2Player.tsx +115 -0
  861. package/src/motion/replication2/config.ts +323 -0
  862. package/src/motion/replication2/controls.ts +336 -0
  863. package/src/motion/replication2/driver.ts +92 -0
  864. package/src/motion/replication2/easing.ts +88 -0
  865. package/src/motion/replication2/engine.ts +539 -0
  866. package/src/motion/replication2/html.ts +87 -0
  867. package/src/motion/replication2/index.ts +14 -0
  868. package/src/motion/replication2/measure.ts +28 -0
  869. package/src/motion/replication2/metrics.ts +7 -0
  870. package/src/motion/replication2/presets.ts +63 -0
  871. package/src/motion/replication2/riv.ts +4 -0
  872. package/src/motion/replication2/rive-contract.ts +165 -0
  873. package/src/motion/replication2/template.ts +33 -0
  874. package/src/motion/sample.ts +173 -0
  875. package/src/motion/templates/hey-template.ts +1553 -0
  876. package/src/motion/templates/index.ts +17 -0
  877. package/src/motion/templates/word-motion.ts +1166 -0
  878. package/src/motion/types.ts +162 -0
  879. package/src/motion/typesurface/TypeSurfaceCanvas.tsx +101 -0
  880. package/src/motion/typesurface/art.ts +639 -0
  881. package/src/motion/typesurface/config.ts +512 -0
  882. package/src/motion/typesurface/construct.ts +828 -0
  883. package/src/motion/typesurface/engine.ts +612 -0
  884. package/src/motion/typesurface/fonts.ts +63 -0
  885. package/src/motion/typesurface/index.ts +20 -0
  886. package/src/motion/typesurface/layout.ts +133 -0
  887. package/src/motion/typesurface/ops.ts +196 -0
  888. package/src/motion/typesurface/presets.ts +271 -0
  889. package/src/motion/typesurface/renderer.ts +639 -0
  890. package/src/motion/typesurface/shaders.ts +325 -0
  891. package/src/motion/typesurface/surfaces.ts +300 -0
  892. package/src/motion/typesurface/text.ts +35 -0
  893. package/src/motion/typesurface/timeline.ts +58 -0
  894. package/src/motion/validate.ts +101 -0
  895. package/src/native/RiveReceiptStage.tsx +8 -155
  896. package/src/native/riveReceiptStageFactory.tsx +175 -0
  897. package/src/tokens/stage.ts +6 -0
  898. package/tools/ask/dist/components.mjs +8010 -88
  899. package/tools/ask/dist/neon.js +69 -0
  900. package/tools/ask/mcp.mjs +166 -2
  901. package/tools/ask/neon-render.mjs +143 -0
@@ -0,0 +1,722 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PHASES = exports.EDGE_LIFT_SEGMENTS = exports.BEND_SEGMENTS = exports.seeded = exports.rgba = exports.mixHex = exports.MOTION_FPS = void 0;
4
+ exports.mul = mul;
5
+ exports.apply = apply;
6
+ exports.project = project;
7
+ exports.cssMatrix = cssMatrix;
8
+ exports.timeline = timeline;
9
+ exports.outputDuration = outputDuration;
10
+ exports.outputFrameToMotion = outputFrameToMotion;
11
+ exports.motionToOutputFrame = motionToOutputFrame;
12
+ exports.phaseAt = phaseAt;
13
+ exports.stageFrames = stageFrames;
14
+ exports.manualFolds = manualFolds;
15
+ exports.foldState = foldState;
16
+ exports.layout = layout;
17
+ exports.anchorOf = anchorOf;
18
+ exports.moversOf = moversOf;
19
+ exports.stripAt = stripAt;
20
+ exports.estimateLines = estimateLines;
21
+ exports.textFits = textFits;
22
+ exports.frameState = frameState;
23
+ const config_1 = require("./config");
24
+ const controls_1 = require("./controls");
25
+ Object.defineProperty(exports, "PHASES", { enumerable: true, get: function () { return controls_1.PHASES; } });
26
+ const easing_1 = require("../promo/easing");
27
+ const engine_1 = require("../promo/engine");
28
+ Object.defineProperty(exports, "mixHex", { enumerable: true, get: function () { return engine_1.mixHex; } });
29
+ Object.defineProperty(exports, "rgba", { enumerable: true, get: function () { return engine_1.rgba; } });
30
+ Object.defineProperty(exports, "seeded", { enumerable: true, get: function () { return engine_1.seeded; } });
31
+ /**
32
+ * **The paper-fold engine — a pure function from (config, frame, size) to everything on screen.** No
33
+ * clock, no unseeded randomness, no DOM: the same config, seed and frame always give the same state, so
34
+ * Remotion can render frames in any order and in parallel, and the live player and the video agree.
35
+ * The renderer (`PaperFoldFrame`) only draws what this returns.
36
+ *
37
+ * **The fold model.** The sheet is three rigid panels hinged at two creases — a kinematic chain. A
38
+ * fold is a rotation about its crease line (y = crease, z = 0 in the sheet's own frame) by the crease's
39
+ * dihedral angle; the panel on the moving side (`direction`) turns with it, the panel that stays put
40
+ * (the anchor) does not, and a panel beyond a moving panel is carried along. Each panel's full pose is
41
+ * a 4×4 matrix: sheet pose · hinge rotations · the camera's perspective. The renderer hands that
42
+ * matrix to CSS `matrix3d`, so the panel — its colour, texture and live text — is drawn in true
43
+ * perspective, turning about the exact crease line. Nothing is scaled to fake a fold.
44
+ *
45
+ * Depth is explicit: panels are painted back to front by the depth of their centres, and each hand's
46
+ * body and gripping finger are slotted in relative to the panel they hold. Lighting is Lambertian on
47
+ * each panel's normal; a closing crease darkens its valley and shades the panel it closes over.
48
+ *
49
+ * Frames here are authored 60 fps motion frames; `outputFrameToMotion` maps an output frame (at
50
+ * canvas.fps, after motion.speed) onto them.
51
+ */
52
+ exports.MOTION_FPS = 60;
53
+ const clamp = (v, lo = 0, hi = 1) => (v < lo ? lo : v > hi ? hi : v);
54
+ const lerp = (a, b, t) => a + (b - a) * t;
55
+ const RAD = Math.PI / 180;
56
+ const TAU = Math.PI * 2;
57
+ function reader(cfg) {
58
+ return {
59
+ n: (p) => (0, config_1.getPath)(cfg, p),
60
+ s: (p) => (0, config_1.getPath)(cfg, p),
61
+ b: (p) => (0, config_1.getPath)(cfg, p),
62
+ list: (p) => (0, config_1.getPath)(cfg, p) ?? [],
63
+ };
64
+ }
65
+ const I = () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
66
+ function mul(a, b) {
67
+ const o = new Array(16);
68
+ for (let r = 0; r < 4; r++)
69
+ for (let c = 0; c < 4; c++) {
70
+ o[r * 4 + c] = a[r * 4] * b[c] + a[r * 4 + 1] * b[4 + c] + a[r * 4 + 2] * b[8 + c] + a[r * 4 + 3] * b[12 + c];
71
+ }
72
+ return o;
73
+ }
74
+ const chain = (...ms) => ms.reduce((acc, m) => mul(acc, m), I());
75
+ const translate = (x, y, z = 0) => [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1];
76
+ const scale3 = (x, y) => [x, 0, 0, 0, 0, y, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
77
+ /** About the x axis. With y down and z toward the viewer, a positive turn brings a point below the axis toward the viewer. */
78
+ const rotX = (a) => { const c = Math.cos(a), s = Math.sin(a); return [1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1]; };
79
+ const rotY = (a) => { const c = Math.cos(a), s = Math.sin(a); return [c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1]; };
80
+ /** In the picture plane; positive is clockwise on screen (as CSS rotate). */
81
+ const rotZ = (a) => { const c = Math.cos(a), s = Math.sin(a); return [c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; };
82
+ const skew = (ax, ay) => [1, Math.tan(ax), 0, 0, Math.tan(ay), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
83
+ /** A viewer at distance d on the z axis, looking at (vx, vy): w = 1 − z/d (CSS perspective). */
84
+ const perspectiveAt = (vx, vy, d) => chain(translate(vx, vy), [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / d, 1], translate(-vx, -vy));
85
+ /** A turn of `a` radians about the horizontal line y = yc (z = 0): the hinge of a crease. */
86
+ const hinge = (yc, a) => chain(translate(0, yc), rotX(a), translate(0, -yc));
87
+ function apply(m, p) {
88
+ const [x, y, z] = p;
89
+ return [
90
+ m[0] * x + m[1] * y + m[2] * z + m[3], m[4] * x + m[5] * y + m[6] * z + m[7],
91
+ m[8] * x + m[9] * y + m[10] * z + m[11], m[12] * x + m[13] * y + m[14] * z + m[15],
92
+ ];
93
+ }
94
+ /** A point through a projective matrix, onto the picture. */
95
+ function project(m, p) {
96
+ const [x, y, , w] = apply(m, p);
97
+ const ww = Math.max(w, 1e-3);
98
+ return [x / ww, y / ww];
99
+ }
100
+ const r4 = (v) => Math.round(v * 1e4) / 1e4;
101
+ /** CSS `matrix3d(...)` (column-major) of a row-major matrix. */
102
+ function cssMatrix(m) {
103
+ const o = [];
104
+ for (let c = 0; c < 4; c++)
105
+ for (let r = 0; r < 4; r++)
106
+ o.push(m[r * 4 + c]);
107
+ // The perspective row (w) is tiny (≈ 1/distance): keep it at full precision, never in exponent form.
108
+ return `matrix3d(${o.map((v, i) => (i === 3 || i === 7 || i === 11 ? v.toFixed(12) : String(r4(v)))).join(', ')})`;
109
+ }
110
+ const cross = (a, b) => [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
111
+ const norm3 = (v) => { const l = Math.hypot(v[0], v[1], v[2]) || 1; return [v[0] / l, v[1] / l, v[2] / l]; };
112
+ const dot3 = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
113
+ const linear = (m, v) => [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[4] * v[0] + m[5] * v[1] + m[6] * v[2], m[8] * v[0] + m[9] * v[1] + m[10] * v[2]];
114
+ function timeline(cfg) {
115
+ const { n, s } = reader(cfg);
116
+ const order = (0, config_1.phaseSpans)(cfg).map((p) => ({ id: p.id, label: p.label, start: p.start, end: p.end }));
117
+ const phases = Object.fromEntries(order.map((p) => [p.id, p]));
118
+ const end = Math.max(...order.map((p) => p.end));
119
+ const speed = n('motion.speed');
120
+ // `length` is in authored frames: the part of the timeline the video shows.
121
+ const length = s('canvas.durationMode') === 'fixed' ? (n('canvas.durationFrames') * exports.MOTION_FPS * speed) / n('canvas.fps') : end;
122
+ return { phases, order, end, length, speed };
123
+ }
124
+ /** Output frames for one play of the video at canvas.fps. */
125
+ function outputDuration(cfg) {
126
+ const { n, s } = reader(cfg);
127
+ if (s('canvas.durationMode') === 'fixed')
128
+ return n('canvas.durationFrames');
129
+ return Math.max(1, Math.round(((timeline(cfg).end / n('motion.speed')) * n('canvas.fps')) / exports.MOTION_FPS));
130
+ }
131
+ /** The authored motion frame an output frame shows. */
132
+ function outputFrameToMotion(cfg, frame) {
133
+ return (frame * exports.MOTION_FPS * (0, config_1.getPath)(cfg, 'motion.speed')) / (0, config_1.getPath)(cfg, 'canvas.fps');
134
+ }
135
+ /** The output frame that shows an authored motion frame (the inverse of outputFrameToMotion, rounded). */
136
+ function motionToOutputFrame(cfg, motion) {
137
+ return Math.round((motion * (0, config_1.getPath)(cfg, 'canvas.fps')) / (exports.MOTION_FPS * (0, config_1.getPath)(cfg, 'motion.speed')));
138
+ }
139
+ /** The phase playing at motion frame `t` (the last phase that has started), and how far into it. */
140
+ function phaseAt(tl, t) {
141
+ let cur = tl.order[0];
142
+ for (const p of tl.order)
143
+ if (t >= p.start && p.end > p.start)
144
+ cur = p;
145
+ return { id: cur.id, label: cur.label, progress: cur.end > cur.start ? clamp((t - cur.start) / (cur.end - cur.start)) : 1 };
146
+ }
147
+ /** Representative motion frames of the seven stages (the render tests and the reference comparison use them). */
148
+ function stageFrames(cfg) {
149
+ const { phases: p, end } = timeline(cfg);
150
+ const mid = (id) => (p[id].start + p[id].end) / 2;
151
+ const at = (id, f) => p[id].start + (p[id].end - p[id].start) * f;
152
+ return {
153
+ OPEN: p.topFold.start - 1 > 0 ? p.topFold.start - 1 : 0,
154
+ TOP_FOLD: mid('topFold'),
155
+ TOP_FOLD_BEGIN: p.topFold.start + (p.topFold.end - p.topFold.start) * 0.2,
156
+ TOP_FOLD_DEEPEST: p.topFold.end,
157
+ BOTTOM_FOLD: mid('bottomFold'),
158
+ BOTTOM_FOLD_BEGIN: p.bottomFold.start + (p.bottomFold.end - p.bottomFold.start) * 0.2,
159
+ FOLDED_HOLD: mid('foldedHold'),
160
+ BOTTOM_UNFOLD: mid('bottomUnfold'),
161
+ UNFOLD_BEGIN: p.bottomUnfold.start + (p.bottomUnfold.end - p.bottomUnfold.start) * 0.2,
162
+ TOP_UNFOLD: mid('topUnfold'),
163
+ FINAL_OPEN: Math.max(0, end - 1),
164
+ // The quality-check set: fractions of the top fold, the peaks, halfway through the whole unfold.
165
+ TOP_FOLD_25: at('topFold', 0.25),
166
+ TOP_FOLD_75: at('topFold', 0.75),
167
+ TOP_FOLD_PEAK: p.topFold.end,
168
+ BOTTOM_FOLD_PEAK: p.bottomFold.end,
169
+ FULLY_FOLDED: mid('foldedHold'),
170
+ UNFOLD_50: (p.bottomUnfold.start + p.topUnfold.end) / 2,
171
+ };
172
+ }
173
+ /** The edge lift over a fold's progress `p` (0‥1, linear): it rises first and is flat again by 75%. */
174
+ const liftAt = (f, p) => f.edgeLift * Math.max(0, Math.sin(Math.PI * clamp(p / 0.75)));
175
+ /**
176
+ * The folds posed by FOLD PROGRESS (motion.foldProgress, 0‥1) instead of the timeline: the first half
177
+ * folds the top crease from flat (0°) to its peak, the second half the bottom crease; a single enabled
178
+ * fold takes the whole range. 0 is the paper completely flat, 1 completely folded.
179
+ */
180
+ function manualFolds(folds, progress) {
181
+ const on = folds.map((f) => f.enabled);
182
+ const both = on[0] && on[1];
183
+ return folds.map((f, k) => {
184
+ const sigma = f.side === 'inward' ? 1 : -1;
185
+ const a = !f.enabled ? 0 : both ? clamp(progress * 2 - k) : clamp(progress);
186
+ const e = (0, easing_1.ease)(f.easing, a, f.durationFrames);
187
+ const angle = lerp(0, f.peakAngle, e);
188
+ return {
189
+ id: f.id, angle, dihedral: sigma * angle, amount: e, activity: 0, phase: 'manual',
190
+ scale: lerp(1, f.peakScale, e), perspective: lerp(1, f.perspective, e), tx: f.translationX * e, ty: f.translationY * e, rz: f.rotationZ * e,
191
+ lift: liftAt(f, a),
192
+ };
193
+ });
194
+ }
195
+ function foldState(f, foldSpan, unfoldSpan, t) {
196
+ const sigma = f.side === 'inward' ? 1 : -1;
197
+ if (!f.enabled)
198
+ return { id: f.id, angle: f.startAngle, dihedral: sigma * f.startAngle, amount: 0, activity: 0, phase: 'off', scale: 1, perspective: 1, tx: 0, ty: 0, rz: 0, lift: 0 };
199
+ const pf = clamp((t - foldSpan.start) / Math.max(1e-6, foldSpan.end - foldSpan.start));
200
+ const pu = clamp((t - unfoldSpan.start) / Math.max(1e-6, unfoldSpan.end - unfoldSpan.start));
201
+ const ef = (0, easing_1.ease)(f.easing, pf, f.durationFrames), eu = (0, easing_1.ease)(f.unfoldEasing, pu, f.unfoldDurationFrames);
202
+ const unfolding = t >= unfoldSpan.start;
203
+ let angle, amount, sc;
204
+ if (!unfolding) {
205
+ angle = lerp(f.startAngle, f.peakAngle, ef);
206
+ amount = ef;
207
+ sc = lerp(f.startScale, f.peakScale, ef);
208
+ }
209
+ else {
210
+ angle = lerp(f.peakAngle, f.endAngle, eu);
211
+ amount = f.peakAngle === f.startAngle ? 1 - eu : clamp((angle - f.startAngle) / (f.peakAngle - f.startAngle), -0.5, 1.5);
212
+ sc = lerp(f.peakScale, f.endScale, eu);
213
+ }
214
+ angle = clamp(angle, -110, 180);
215
+ const moving = (!unfolding && pf > 0 && pf < 1) ? Math.sin(Math.PI * pf) : (unfolding && pu > 0 && pu < 1) ? Math.sin(Math.PI * pu) : 0;
216
+ const phase = t < foldSpan.start ? 'before' : pf < 1 ? 'folding' : !unfolding ? 'folded' : pu < 1 ? 'unfolding' : 'after';
217
+ return {
218
+ id: f.id, angle, dihedral: sigma * angle, amount, activity: moving, phase,
219
+ scale: sc, perspective: lerp(1, f.perspective, clamp(amount, 0, 1.2)), tx: f.translationX * amount, ty: f.translationY * amount, rz: f.rotationZ * amount,
220
+ // The gripped edge lifts ahead of the fold (linear progress, so it leads the eased turn), and again as it unfolds.
221
+ lift: !unfolding ? (pf > 0 && pf < 1 ? liftAt(f, pf) : 0) : (pu > 0 && pu < 1 ? liftAt(f, 1 - pu) : 0),
222
+ };
223
+ }
224
+ function layout(cfg, width, height) {
225
+ const { n, s } = reader(cfg);
226
+ const shape = controls_1.LAYOUT_FOR[s('canvas.aspectRatio')] ?? 'portrait';
227
+ const L = `layout.${shape}`;
228
+ const unit = Math.min(width, height) / 1080;
229
+ const PH = n(`${L}.paper.height`) * height;
230
+ const PW = PH * n('paper.aspect');
231
+ const c0 = n('creases.0.position') * PH, c1 = n('creases.1.position') * PH;
232
+ const safe = n('canvas.safeArea') * Math.min(width, height);
233
+ const inside = (v, size) => clamp(v, safe / size, 1 - safe / size);
234
+ return {
235
+ width, height, unit, pu: PW / 1000, shape,
236
+ paper: { width: PW, height: PH, pivotX: n(`${L}.paper.x`) * width, pivotY: n(`${L}.paper.y`) * height },
237
+ creases: [c0, c1],
238
+ panels: { top: { y0: 0, y1: c0, height: c0 }, middle: { y0: c0, y1: c1, height: c1 - c0 }, bottom: { y0: c1, y1: PH, height: PH - c1 } },
239
+ logo: { x: inside(n(`${L}.logo.x`), width) * width, y: inside(n(`${L}.logo.y`), height) * height, scale: n(`${L}.logo.scale`) },
240
+ cta: { x: inside(n(`${L}.cta.x`), width) * width, y: inside(n(`${L}.cta.y`), height) * height, scale: n(`${L}.cta.scale`) },
241
+ backgroundType: { scale: n(`${L}.backgroundType.scale`), x: n(`${L}.backgroundType.x`) * unit, y: n(`${L}.backgroundType.y`) * unit },
242
+ handScale: n(`${L}.handScale`),
243
+ };
244
+ }
245
+ /** The panel that stays put, from the two folds' directions (the validator refuses the one impossible pair). */
246
+ function anchorOf(folds) {
247
+ const [top, bottom] = folds;
248
+ if (top.enabled && top.direction === 'up')
249
+ return 'top';
250
+ if (bottom.enabled && bottom.direction === 'down')
251
+ return 'bottom';
252
+ return 'middle';
253
+ }
254
+ /** Which folds move a panel relative to the anchor (the hinges between them). */
255
+ function moversOf(anchor, panel) {
256
+ const idx = { top: 0, middle: 1, bottom: 2 };
257
+ const a = idx[anchor], p = idx[panel];
258
+ const out = [];
259
+ for (let k = Math.min(a, p); k < Math.max(a, p); k++)
260
+ out.push(k);
261
+ return out;
262
+ }
263
+ /** How many hinges a curved crease is spread over (its bend is drawn as that many narrow strips). */
264
+ exports.BEND_SEGMENTS = 6;
265
+ /** The widest bend band, as a fraction of the shorter panel beside the crease (at curvature 1). */
266
+ const MAX_BEND = 0.22;
267
+ /** Hinges near the sheet's free edges that curl the gripped edge (EDGE_LIFT_SEGMENTS per edge). */
268
+ exports.EDGE_LIFT_SEGMENTS = 4;
269
+ function buildSheet(cfg, lay, dihedrals, curvatures, perspectiveFactor, extra, anchor, lift = { top: 0, bottom: 0, topSize: 0, bottomSize: 0 }) {
270
+ const { n } = reader(cfg);
271
+ const { width: PW, height: PH, pivotX, pivotY } = lay.paper;
272
+ const u = lay.unit;
273
+ const sc = n('paper.scale') * extra.scale;
274
+ const S = chain(translate(pivotX + (n('paper.translateX') + extra.tx) * u, pivotY + (n('paper.translateY') + extra.ty) * u), rotZ((n('paper.rotationZ') + extra.rz) * RAD), rotY(n('paper.rotationY') * RAD), rotX(n('paper.rotationX') * RAD), skew(n('paper.skewX') * RAD, n('paper.skewY') * RAD), scale3(n('paper.scaleX') * sc, n('paper.scaleY') * sc), translate(-n('paper.originX') * PW, -n('paper.originY') * PH));
275
+ // Hinges: a sharp crease is one hinge carrying the whole dihedral; a curved one spreads it evenly
276
+ // over BEND_SEGMENTS hinges across a band centred on the crease — a bend, not a card rotation.
277
+ const hinges = [];
278
+ const bands = [0, 1].map((k) => {
279
+ const yc = lay.creases[k];
280
+ const beside = Math.min(k === 0 ? lay.panels.top.height : lay.panels.middle.height, k === 0 ? lay.panels.middle.height : lay.panels.bottom.height);
281
+ const L = curvatures[k] * MAX_BEND * beside;
282
+ if (L < 0.5) {
283
+ hinges.push({ y: yc, a: dihedrals[k] });
284
+ return [yc, yc];
285
+ }
286
+ for (let i = 0; i < exports.BEND_SEGMENTS; i++)
287
+ hinges.push({ y: yc - L / 2 + ((i + 0.5) * L) / exports.BEND_SEGMENTS, a: dihedrals[k] / exports.BEND_SEGMENTS });
288
+ return [yc - L / 2, yc + L / 2];
289
+ });
290
+ // The lift curl: a few hinges across a band at a free edge, sharing its lift angle, so that edge rolls up.
291
+ const liftHinges = [];
292
+ if (lift.topSize > 0)
293
+ for (let i = 0; i < exports.EDGE_LIFT_SEGMENTS; i++)
294
+ liftHinges.push({ y: ((i + 1) / (exports.EDGE_LIFT_SEGMENTS + 1)) * lift.topSize * lay.panels.top.height, a: lift.top / exports.EDGE_LIFT_SEGMENTS });
295
+ if (lift.bottomSize > 0)
296
+ for (let i = 0; i < exports.EDGE_LIFT_SEGMENTS; i++)
297
+ liftHinges.push({ y: PH - ((exports.EDGE_LIFT_SEGMENTS - i) / (exports.EDGE_LIFT_SEGMENTS + 1)) * lift.bottomSize * lay.panels.bottom.height, a: lift.bottom / exports.EDGE_LIFT_SEGMENTS });
298
+ hinges.push(...liftHinges);
299
+ hinges.sort((a, b) => a.y - b.y);
300
+ const liftTop = lift.topSize > 0 ? lift.topSize * lay.panels.top.height : -1, liftBottom = lift.bottomSize > 0 ? PH - lift.bottomSize * lay.panels.bottom.height : PH + 1;
301
+ const edges = [0, ...hinges.map((h) => h.y), PH];
302
+ const regionOf = (mid) => mid < bands[0][0] ? 'top' : mid < bands[0][1] ? 'crease0' : mid < bands[1][0] ? 'middle' : mid < bands[1][1] ? 'crease1' : 'bottom';
303
+ const strips = edges.slice(0, -1).map((y0, i) => {
304
+ const y1 = edges[i + 1], mid = (y0 + y1) / 2;
305
+ return { index: i, y0, y1, region: regionOf(mid), T: I(), ...(mid < liftTop || mid > liftBottom ? { lift: true } : {}) };
306
+ });
307
+ // Walk the chain outward from the anchored panel's flat part: below a hinge the next strip turns by
308
+ // the hinge's angle about the hinge line; above it, by the inverse.
309
+ const flatOf = (id) => strips.reduce((best, st, i) => (st.region === id && !st.lift && (best < 0 || st.y1 - st.y0 > strips[best].y1 - strips[best].y0) ? i : best), -1);
310
+ const a = flatOf(anchor);
311
+ for (let i = a + 1; i < strips.length; i++)
312
+ strips[i].T = mul(strips[i - 1].T, hinge(hinges[i - 1].y, hinges[i - 1].a * RAD));
313
+ for (let i = a - 1; i >= 0; i--)
314
+ strips[i].T = mul(strips[i + 1].T, hinge(hinges[i].y, -hinges[i].a * RAD));
315
+ const T = Object.fromEntries(controls_1.PANELS.map((id) => [id, strips[flatOf(id)].T]));
316
+ const [vx, vy] = project(S, [n('camera.vanishX') * PW, n('camera.vanishY') * PH, 0]);
317
+ const P = perspectiveAt(vx, vy, (n('camera.perspective') * u) / perspectiveFactor);
318
+ return { anchor, S, strips, T, bands, P };
319
+ }
320
+ /** The strip that carries sheet height `y` (px). */
321
+ function stripAt(sheet, y) {
322
+ return sheet.strips.find((st) => y >= st.y0 && y <= st.y1) ?? (y < 0 ? sheet.strips[0] : sheet.strips.at(-1));
323
+ }
324
+ /* ─── lighting ────────────────────────────────────────────────────────────────────────────────── */
325
+ function lightVector(cfg) {
326
+ const { n } = reader(cfg);
327
+ const az = n('foldLighting.lightAngle') * RAD, el = n('foldLighting.lightElevation') * RAD;
328
+ return norm3([Math.cos(el) * Math.cos(az), Math.cos(el) * Math.sin(az), Math.sin(el)]);
329
+ }
330
+ /** Everything the frame needs from the fold state at motion frame t (no hands). */
331
+ function sheetAt(cfg, lay, tl, t) {
332
+ const { n, s, b, list } = reader(cfg);
333
+ const foldsCfg = list('folds');
334
+ const manual = s('motion.progressMode') === 'manual';
335
+ const folds = manual
336
+ ? manualFolds(foldsCfg, n('motion.foldProgress'))
337
+ : foldsCfg.map((f, k) => foldState(f, tl.phases[k === 0 ? 'topFold' : 'bottomFold'], tl.phases[k === 0 ? 'topUnfold' : 'bottomUnfold'], t));
338
+ const anchor = anchorOf(foldsCfg);
339
+ // Idle sway and bob; the intro rise.
340
+ const rnd = (0, engine_1.seeded)(n('canvas.seed'));
341
+ const ph1 = rnd() * TAU, ph2 = rnd() * TAU;
342
+ const sec = t / exports.MOTION_FPS;
343
+ const idle = b('motion.idle.enabled');
344
+ const swayRz = idle ? n('motion.idle.swayAngle') * Math.sin(TAU * n('motion.idle.frequency') * sec + ph1) : 0;
345
+ const bob = idle ? n('motion.idle.bobAmplitude') * Math.sin(TAU * n('motion.idle.frequency') * 1.31 * sec + ph2) : 0;
346
+ const intro = tl.phases.intro;
347
+ const eIntro = (0, easing_1.ease)(s('timeline.intro.easing'), (t - intro.start) / Math.max(1, intro.end - intro.start), intro.end - intro.start);
348
+ const rise = s('motion.intro.mode') === 'rise' ? 1 - eIntro : 0;
349
+ const hold = tl.phases.foldedHold;
350
+ const pHold = hold.end > hold.start ? clamp((t - hold.start) / (hold.end - hold.start)) : 0;
351
+ const squeeze = lerp(1, n('motion.holdSqueeze'), Math.sin(Math.PI * (0, easing_1.ease)(s('timeline.foldedHold.easing'), pHold, hold.end - hold.start)));
352
+ const base = { tx: 0, ty: bob + n('motion.intro.paperOffsetY') * rise, rz: swayRz + n('motion.intro.paperRotation') * rise, scale: 1 };
353
+ const withFolds = {
354
+ tx: base.tx + folds.reduce((a, f) => a + f.tx, 0),
355
+ ty: base.ty + folds.reduce((a, f) => a + f.ty, 0),
356
+ rz: base.rz + folds.reduce((a, f) => a + f.rz, 0),
357
+ scale: folds.reduce((a, f) => a * f.scale, 1) * squeeze,
358
+ };
359
+ const persp = folds.reduce((a, f) => a * f.perspective, 1);
360
+ const curv = foldsCfg.map((f) => f.curvature);
361
+ // The free edge each fold swings (down: the sheet's top edge; up: its bottom edge) lifts ahead of it.
362
+ const lift = { top: 0, bottom: 0, topSize: 0, bottomSize: 0 };
363
+ foldsCfg.forEach((f, k) => {
364
+ if (!f.enabled || f.edgeLift <= 0)
365
+ return;
366
+ const sign = f.side === 'inward' ? 1 : -1;
367
+ if (f.direction === 'down') {
368
+ lift.top += sign * folds[k].lift;
369
+ lift.topSize = Math.max(lift.topSize, f.edgeLiftSize);
370
+ }
371
+ else {
372
+ lift.bottom += sign * folds[k].lift;
373
+ lift.bottomSize = Math.max(lift.bottomSize, f.edgeLiftSize);
374
+ }
375
+ });
376
+ const sheet = buildSheet(cfg, lay, [folds[0].dihedral, folds[1].dihedral], curv, persp, withFolds, anchor, lift);
377
+ // The same sheet with every crease at its start angle and no fold-driven motion: where the hands rest.
378
+ const restDihedrals = foldsCfg.map((f) => (f.side === 'inward' ? 1 : -1) * f.startAngle);
379
+ const rest = buildSheet(cfg, lay, restDihedrals, curv, 1, base, anchor, { ...lift, top: 0, bottom: 0 });
380
+ return { folds, anchor, sheet, rest, foldsCfg, manual };
381
+ }
382
+ function panelOf(cfg, gy) {
383
+ const c0 = (0, config_1.getPath)(cfg, 'creases.0.position'), c1 = (0, config_1.getPath)(cfg, 'creases.1.position');
384
+ return gy < c0 ? 'top' : gy < c1 ? 'middle' : 'bottom';
385
+ }
386
+ /** Where a paper point is on the picture, and the paper's local direction and scale there. */
387
+ function gripOn(sheet, lay, _panel, gx, gy) {
388
+ const q = [gx * lay.paper.width, gy * lay.paper.height, 0];
389
+ const M = chain(sheet.P, sheet.S, stripAt(sheet, q[1]).T);
390
+ const g = project(M, q);
391
+ const e = project(M, [q[0] + 10, q[1], 0]);
392
+ return { x: g[0], y: g[1], angle: Math.atan2(e[1] - g[1], e[0] - g[0]) / RAD, scale: Math.hypot(e[0] - g[0], e[1] - g[1]) / 10 };
393
+ }
394
+ /** The pose a hand is pulled toward at motion frame t (before its settle spring). */
395
+ function handTarget(cfg, lay, tl, id, t) {
396
+ const { n, s } = reader(cfg);
397
+ const H = `hands.${id}`, HI = `handInteraction.${id}`;
398
+ const lead = n(`${HI}.leadFrames`);
399
+ const gx = n(`${H}.x`), gy = n(`${H}.y`);
400
+ const panel = panelOf(cfg, gy);
401
+ const at = sheetAt(cfg, lay, tl, t + lead);
402
+ const now = gripOn(at.sheet, lay, panel, gx, gy);
403
+ const rest = gripOn(at.rest, lay, panel, gx, gy);
404
+ const follow = n(`${HI}.followStrength`);
405
+ const movers = moversOf(at.anchor, panel);
406
+ const own = movers.map((k) => at.folds[k]);
407
+ const amount = own.reduce((a, f) => Math.max(a, clamp(f.amount)), 0);
408
+ const tugActivity = own.reduce((a, f) => Math.max(a, f.activity), 0);
409
+ const anyActivity = at.folds.reduce((a, f) => Math.max(a, f.activity), 0);
410
+ const bx = rest.x + follow * (now.x - rest.x), by = rest.y + follow * (now.y - rest.y);
411
+ let x = bx, y = by;
412
+ // The tug: the hand pulls ahead along the way its grip point is travelling.
413
+ if (tugActivity > 0) {
414
+ const ahead = gripOn(sheetAt(cfg, lay, tl, t + lead + 2).sheet, lay, panel, gx, gy);
415
+ const dx = ahead.x - now.x, dy = ahead.y - now.y, len = Math.hypot(dx, dy);
416
+ if (len > 1e-3) {
417
+ x += (dx / len) * n(`${HI}.gripOffset`) * lay.pu * tugActivity;
418
+ y += (dy / len) * n(`${HI}.gripOffset`) * lay.pu * tugActivity;
419
+ }
420
+ }
421
+ // Bracing: while any fold moves, the hand leans toward the sheet's centre.
422
+ if (anyActivity > 0) {
423
+ const c = project(chain(at.sheet.P, at.sheet.S), [lay.paper.width / 2, lay.paper.height / 2, 0]);
424
+ const dx = c[0] - rest.x, dy = c[1] - rest.y, len = Math.hypot(dx, dy) || 1;
425
+ x += (dx / len) * n(`${HI}.movementAmplitude`) * lay.pu * anyActivity;
426
+ y += (dy / len) * n(`${HI}.movementAmplitude`) * lay.pu * anyActivity;
427
+ }
428
+ // The approach from off the paper (none in manual mode: the hands already hold it).
429
+ if (s('motion.intro.mode') === 'hands' && s('motion.progressMode') !== 'manual') {
430
+ const intro = tl.phases.intro, delay = n(`${HI}.enterDelayFrames`);
431
+ const dur = Math.max(1, intro.end - intro.start - delay);
432
+ const e = (0, easing_1.ease)(s('timeline.intro.easing'), (t - intro.start - delay) / dur, dur);
433
+ x += n(`${HI}.enterFromX`) * lay.width * (1 - e);
434
+ y += n(`${HI}.enterFromY`) * lay.height * (1 - e);
435
+ }
436
+ const rot = n(`${H}.rotation`) + follow * angleDelta(now.angle, rest.angle) + n(`${HI}.rotationAmplitude`) * amount;
437
+ const scale = n(`${H}.scale`) * (1 + follow * (now.scale / Math.max(1e-3, rest.scale) - 1));
438
+ return { x, y, rot, scale, bx, by };
439
+ }
440
+ const angleDelta = (a, b) => { let d = a - b; while (d > 180)
441
+ d -= 360; while (d < -180)
442
+ d += 360; return d; };
443
+ /**
444
+ * The hands' settle is a damped spring pulled toward the target, integrated from frame 0 in fixed
445
+ * one-frame steps — so any frame, sampled on its own and in any order, gets the same pose. The
446
+ * trajectory is cached per config object and size.
447
+ */
448
+ const TRAJECTORIES = new WeakMap();
449
+ function handPose(cfg, lay, tl, id, t) {
450
+ // FOLD PROGRESS poses the paper directly: the hands sit exactly on their grip, no settle to play out.
451
+ if ((0, config_1.getPath)(cfg, 'motion.progressMode') === 'manual')
452
+ return handTarget(cfg, lay, tl, id, t);
453
+ const key = `${id}:${lay.width}x${lay.height}`;
454
+ let byKey = TRAJECTORIES.get(cfg);
455
+ if (!byKey) {
456
+ byKey = new Map();
457
+ TRAJECTORIES.set(cfg, byKey);
458
+ }
459
+ let traj = byKey.get(key);
460
+ if (!traj) {
461
+ traj = [];
462
+ byKey.set(key, traj);
463
+ }
464
+ const HI = `handInteraction.${id}`;
465
+ const zeta = (0, config_1.getPath)(cfg, `${HI}.bounce`);
466
+ // One-frame steps stay stable while ω ≤ 1 (a settle of at least ~4/ζ frames).
467
+ const omega = Math.min(1, 4 / (zeta * (0, config_1.getPath)(cfg, `${HI}.settleDuration`)));
468
+ const target = Math.max(0, Math.ceil(t));
469
+ // The spring carries only what the hand adds to its grip (the approach, the bracing, the wrist turn):
470
+ // the grip point itself is ridden exactly, so the fingers never trail the paper however fast it folds.
471
+ const offset = (g) => ({ ...g, x: g.x - g.bx, y: g.y - g.by });
472
+ if (!traj.length)
473
+ traj.push(offset(handTarget(cfg, lay, tl, id, 0)));
474
+ // Velocities are recomputed from the last two samples, so the cache holds only poses.
475
+ while (traj.length <= target) {
476
+ const k = traj.length;
477
+ const cur = traj[k - 1], prev = traj[k - 2] ?? cur;
478
+ const goal = offset(handTarget(cfg, lay, tl, id, k));
479
+ const step = (x, px, g) => {
480
+ let v = x - px;
481
+ v += -2 * zeta * omega * v - omega * omega * (x - g);
482
+ return x + v;
483
+ };
484
+ traj.push({ x: step(cur.x, prev.x, goal.x), y: step(cur.y, prev.y, goal.y), rot: step(cur.rot, prev.rot, goal.rot), scale: step(cur.scale, prev.scale, goal.scale), bx: 0, by: 0 });
485
+ }
486
+ const f = Math.max(0, Math.floor(t)), fr = t <= 0 ? 0 : t - f;
487
+ const a = traj[f], bb = traj[Math.min(f + 1, traj.length - 1)];
488
+ const now = handTarget(cfg, lay, tl, id, Math.max(0, t));
489
+ return { x: now.bx + lerp(a.x, bb.x, fr), y: now.by + lerp(a.y, bb.y, fr), rot: lerp(a.rot, bb.rot, fr), scale: lerp(a.scale, bb.scale, fr), bx: now.bx, by: now.by };
490
+ }
491
+ const TEXT_SLOTS = [
492
+ { slot: 'topLogo', path: 'content.top.logo', panel: 'top' }, { slot: 'topHeadline', path: 'content.top.headline', panel: 'top' },
493
+ { slot: 'topSubtitle', path: 'content.top.subtitle', panel: 'top' }, { slot: 'middleHeadline', path: 'content.middle.headline', panel: 'middle' },
494
+ { slot: 'middleBody', path: 'content.middle.body', panel: 'middle' }, { slot: 'bottomHeadline', path: 'content.bottom.headline', panel: 'bottom' },
495
+ { slot: 'bottomBody', path: 'content.bottom.body', panel: 'bottom' }, { slot: 'bottomCta', path: 'content.bottom.cta', panel: 'bottom' },
496
+ ];
497
+ /**
498
+ * How many lines `text` wraps to at `width` px: greedy word wrap on an estimated advance (an average
499
+ * glyph is ≈ 0.52 em at weight 400, a little wider when heavier, plus the tracking). Pure and
500
+ * deterministic; the renderer's own wrapping may differ by a word, and the content area clips anyway.
501
+ */
502
+ function estimateLines(text, fontSize, width, weight, tracking) {
503
+ const em = fontSize * (0.5 + Math.max(0, weight - 300) * 0.00016 + tracking);
504
+ const maxChars = Math.max(1, Math.floor(width / Math.max(0.1, em)));
505
+ let lines = 0;
506
+ for (const para of text.split('\n')) {
507
+ let cur = 0;
508
+ lines++;
509
+ for (const word of para.split(/\s+/).filter(Boolean)) {
510
+ const need = (cur ? cur + 1 : 0) + word.length;
511
+ if (need > maxChars && cur) {
512
+ lines++;
513
+ cur = word.length;
514
+ }
515
+ else
516
+ cur = need;
517
+ }
518
+ }
519
+ return lines;
520
+ }
521
+ /** Every text element placed on its panel and fitted into the panel's content area. */
522
+ function textFits(cfg, lay) {
523
+ const { n, s, b } = reader(cfg);
524
+ const PW = lay.paper.width;
525
+ const out = [];
526
+ for (const { slot, path, panel } of TEXT_SLOTS) {
527
+ const text = s(path);
528
+ if (!text)
529
+ continue;
530
+ const T = `typography.${slot}`, A = `panels.${panel}.contentArea`;
531
+ const h = lay.panels[panel].height, pad = n(`${A}.padding`) * lay.pu;
532
+ const area = { x: n(`${A}.x`) * PW + pad, y: n(`${A}.y`) * h + pad, width: Math.max(1, n(`${A}.width`) * PW - 2 * pad), height: Math.max(1, n(`${A}.height`) * h - 2 * pad) };
533
+ const x = n(`${T}.x`) * PW, y = n(`${T}.y`) * h, size = n(`${T}.fontSize`) * lay.pu;
534
+ const overflow = b(`panels.${panel}.overflow`);
535
+ const width = overflow ? n(`${T}.maxWidth`) * PW : Math.max(1, Math.min(n(`${T}.maxWidth`) * PW, area.x + area.width - Math.max(x, area.x)));
536
+ let scale = 1, lines = estimateLines(text, size, width, n(`${T}.fontWeight`), n(`${T}.letterSpacing`));
537
+ if (!overflow) {
538
+ const room = area.y + area.height - Math.max(y, area.y);
539
+ while (scale > 0.4 && lines * n(`${T}.lineHeight`) * size * scale > room) {
540
+ scale -= 0.04;
541
+ lines = estimateLines(text, size * scale, width, n(`${T}.fontWeight`), n(`${T}.letterSpacing`));
542
+ }
543
+ }
544
+ out.push({ slot, panel, x: overflow ? x : Math.max(x, area.x), y: overflow ? y : Math.max(y, area.y), width, fontSize: size * scale, scale: Math.round(scale * 100) / 100, lines, area });
545
+ }
546
+ return out;
547
+ }
548
+ /** Everything drawn at motion frame `frame` on a `width` × `height` canvas. */
549
+ function frameState(cfg, frame, width, height) {
550
+ const { n, s, b, list } = reader(cfg);
551
+ const lay = layout(cfg, width, height);
552
+ const tl = timeline(cfg);
553
+ const t = clamp(frame, 0, Math.max(0, tl.length));
554
+ const { folds, anchor, sheet, foldsCfg } = sheetAt(cfg, lay, tl, t);
555
+ const L = lightVector(cfg);
556
+ const PW = lay.paper.width;
557
+ const creases = list('creases');
558
+ /* strips: the one sheet, cut at its hinges */
559
+ const halfway = norm3([L[0], L[1], L[2] + 1]);
560
+ const rawStrips = sheet.strips.map((st) => {
561
+ const h = st.y1 - st.y0;
562
+ const world = mul(sheet.S, st.T);
563
+ const M = chain(sheet.P, world, translate(0, st.y0));
564
+ const corners = [[0, 0], [PW, 0], [PW, h], [0, h]].map(([x, y]) => project(M, [x, y, 0]));
565
+ let area = 0;
566
+ for (let i = 0; i < 4; i++) {
567
+ const [x1, y1] = corners[i], [x2, y2] = corners[(i + 1) % 4];
568
+ area += x1 * y2 - x2 * y1;
569
+ }
570
+ const facing = area >= 0 ? 'front' : 'back';
571
+ const centre = apply(world, [PW / 2, st.y0 + h / 2, 0]);
572
+ let normal = norm3(cross(linear(world, [1, 0, 0]), linear(world, [0, 1, 0])));
573
+ if (facing === 'back')
574
+ normal = [-normal[0], -normal[1], -normal[2]];
575
+ const panel = st.region === 'crease0' ? ((st.y0 + st.y1) / 2 < lay.creases[0] ? 'top' : 'middle') : st.region === 'crease1' ? ((st.y0 + st.y1) / 2 < lay.creases[1] ? 'middle' : 'bottom') : st.region;
576
+ const brightness = n('foldLighting.ambient') + n('foldLighting.diffuse') * Math.max(0, dot3(normal, L)) + n(`panels.${panel}.shade`) + (facing === 'back' ? n('foldLighting.backShade') : 0);
577
+ const sheen = n('foldLighting.highlightOpacity') * n(`panels.${panel}.highlightOpacity`) * Math.pow(Math.max(0, dot3(normal, halfway)), 24);
578
+ return { st, M, corners, facing, depth: centre[2], brightness, sheen, edgeOn: 1 - Math.abs(normal[2]) };
579
+ });
580
+ /* explicit depth order: back to front by the depth of each strip's centre (ties keep top → bottom) */
581
+ const order = [...rawStrips].sort((a, c) => a.depth - c.depth || a.st.index - c.st.index);
582
+ const STRIP_Z0 = 100, STRIP_STEP = 4;
583
+ const strips = rawStrips.map((r) => {
584
+ const rank = order.indexOf(r);
585
+ return {
586
+ index: r.st.index, region: r.st.region, y0: r.st.y0, y1: r.st.y1, matrix: cssMatrix(r.M), corners: r.corners, facing: r.facing,
587
+ depth: r.depth, rank, z: STRIP_Z0 + rank * STRIP_STEP, brightness: r.brightness, sheen: r.sheen, edgeOn: r.edgeOn, ...(r.st.lift ? { lift: true } : {}),
588
+ };
589
+ });
590
+ /** A sheet point on the picture, through the strip that carries it. */
591
+ const onPicture = (x, y) => project(chain(sheet.P, sheet.S, stripAt(sheet, y).T), [x, y, 0]);
592
+ /* crease effects on each panel's edges (drawn in sheet coordinates, on whichever strips carry them) */
593
+ const heightOf = (id) => lay.panels[id].height;
594
+ const edgeFx = (id, facing) => {
595
+ const out = [];
596
+ const adj = id === 'top' ? [[0, 'bottom', 'middle']] : id === 'middle' ? [[0, 'top', 'top'], [1, 'bottom', 'bottom']] : [[1, 'top', 'middle']];
597
+ for (const [k, edge, other] of adj) {
598
+ const c = creases[k], f = folds[k], fc = foldsCfg[k];
599
+ const closed = Math.abs(f.dihedral) / 180;
600
+ // Seen from the front, a positive dihedral (the fronts closing) is a valley; seen from the back, a ridge.
601
+ const concave = (facing === 'front') === (f.dihedral > 0) && Math.abs(f.dihedral) > 0.5;
602
+ const lineOpacity = c.enabled ? c.opacity * n('paperMaterial.creaseShadow') * clamp(n('paperMaterial.creaseTexture') + (1 - n('paperMaterial.creaseTexture')) * clamp(closed * fc.creaseIntensity)) : 0;
603
+ const moving = moversOf(anchor, id).includes(k);
604
+ const edgeLight = !concave && moving ? n('foldLighting.edgeHighlight') * Math.abs(Math.sin(f.dihedral * RAD)) : 0;
605
+ const shadowLen = Math.min(heightOf(id), heightOf(other) * (1 - Math.cos(f.dihedral * RAD)) / 2 + n('foldLighting.shadowOffset') * lay.pu);
606
+ out.push({
607
+ edge, crease: k,
608
+ line: { opacity: clamp(lineOpacity), width: c.width * lay.pu, blur: c.softness * lay.pu, color: c.color },
609
+ highlight: {
610
+ opacity: concave ? 0 : clamp(((c.enabled ? c.highlight * (0.35 + 0.65 * clamp(closed * fc.creaseIntensity)) : 0) + edgeLight) * n('paperMaterial.creaseHighlight')),
611
+ width: Math.max(c.width * lay.pu * 0.8, n('paper.thickness') * lay.pu * clamp(closed * 1.6)), color: c.highlightColor,
612
+ },
613
+ valley: { opacity: concave ? clamp(n('foldLighting.creaseDarkness') * c.darkness * 2 * clamp(closed * fc.creaseIntensity)) : 0, length: 70 * lay.pu * (0.4 + closed) },
614
+ shadow: {
615
+ opacity: concave ? n('foldLighting.shadowOpacity') * fc.shadowIntensity * n(`panels.${id}.shadowOpacity`) * clamp(closed * 1.4) ** 1.5 : 0,
616
+ length: Math.max(0, shadowLen), blur: n('foldLighting.shadowBlur') * lay.pu,
617
+ },
618
+ });
619
+ }
620
+ return out;
621
+ };
622
+ /* panels: the three regions of the sheet, summarized (their flat strip gives facing, light and depth) */
623
+ const panels = controls_1.PANELS.map((id) => {
624
+ const { y0, y1, height: h } = lay.panels[id];
625
+ const flat = strips.filter((st) => st.region === id && !st.lift).reduce((a, b) => (b.y1 - b.y0 > a.y1 - a.y0 ? b : a));
626
+ const corners = [onPicture(0, y0), onPicture(PW, y0), onPicture(PW, y1), onPicture(0, y1)];
627
+ return {
628
+ id, y0, height: h, width: PW, matrix: flat.matrix, corners, facing: flat.facing, depth: flat.depth,
629
+ rank: flat.rank, z: flat.z, brightness: flat.brightness, sheen: flat.sheen, edges: edgeFx(id, flat.facing),
630
+ };
631
+ });
632
+ /* text: each element in its panel's content area, shrunk to fit unless the panel allows overflow */
633
+ const text = textFits(cfg, lay);
634
+ /* hands */
635
+ const hands = ['top', 'bottom'].map((id, i) => {
636
+ const H = `hands.${id}`, HI = `handInteraction.${id}`;
637
+ const gx = n(`${H}.x`), gy = n(`${H}.y`);
638
+ const panelId = panelOf(cfg, gy);
639
+ const panel = panels.find((p) => p.id === panelId);
640
+ const pose = handPose(cfg, lay, tl, id, t);
641
+ const exact = gripOn(sheet, lay, panelId, gx, gy);
642
+ const intro = tl.phases.intro, delay = n(`${HI}.enterDelayFrames`);
643
+ const manualMode = s('motion.progressMode') === 'manual';
644
+ const approach = s('motion.intro.mode') === 'hands' && !manualMode ? clamp((t - intro.start - delay) / Math.max(1, intro.end - intro.start - delay)) : 1;
645
+ const closeOn = (0, easing_1.ease)(s('easing.fingerGrip'), clamp((approach - 0.55) / 0.45), 30);
646
+ // Contact → grip → pull → fold → stabilize; while the paper holds folded the hand eases its grip,
647
+ // then takes it again before the paper unfolds.
648
+ const hold = tl.phases.foldedHold, rf = n(`${HI}.releaseFrames`);
649
+ const release = manualMode || hold.end <= hold.start ? 0 : Math.min(clamp((t - hold.start) / rf), clamp((hold.end - t) / rf));
650
+ const grip = closeOn * (1 - n(`${HI}.releaseAmount`) * (0, easing_1.ease)('easeInOut', release, rf));
651
+ // Front-facing: the body is behind the whole sheet and the finger lies on the panel's front.
652
+ // Turned over: what was behind the panel is now in front of it, so the two swap.
653
+ const front = panel.facing === 'front';
654
+ return {
655
+ id, enabled: b(`${H}.enabled`), panel: panelId,
656
+ x: pose.x, y: pose.y, rotation: pose.rot, scale: pose.scale * lay.handScale, skewX: n(`${H}.skewX`), skewY: n(`${H}.skewY`), opacity: n(`${H}.opacity`),
657
+ offsetX: n(`${H}.offsetX`) * 0.6, offsetY: n(`${H}.offsetY`) * 0.6,
658
+ // Open by gripAngle before the grip closes; once holding, open by whatever pose.grip leaves open.
659
+ fingerAngle: n(`${HI}.gripAngle`) * (1 - grip * n(`${H}.pose.grip`)),
660
+ gripX: exact.x, gripY: exact.y,
661
+ bodyZ: front ? 20 + i : panel.z + 2,
662
+ fingerZ: front ? panel.z + 2 : panel.z - 2,
663
+ unitScale: PW / 600,
664
+ pose: {
665
+ wrist: n(`${H}.pose.wrist`),
666
+ fingerCurl: n(`${H}.pose.fingerCurl`), thumbBend: n(`${H}.pose.thumbBend`), thumbRotation: n(`${H}.thumb.rotation`),
667
+ thumbScale: n(`${H}.thumb.scale`), thumbX: n(`${H}.thumb.x`), thumbY: n(`${H}.thumb.y`),
668
+ },
669
+ };
670
+ });
671
+ const anchors = Object.fromEntries(hands.map((h) => [h.id, { paper: [h.gripX, h.gripY], hand: [h.x, h.y] }]));
672
+ /* camera */
673
+ const enabledFolds = folds.filter((f, k) => foldsCfg[k].enabled);
674
+ const foldAmount = enabledFolds.length ? enabledFolds.reduce((a, f) => a + clamp(f.amount), 0) / enabledFolds.length : 0;
675
+ const fin = tl.phases.finalHold;
676
+ let zoom = lerp(n('camera.startZoom'), n('camera.foldZoom'), (0, easing_1.ease)(s('easing.camera'), foldAmount, 60));
677
+ if (t >= fin.start && fin.end > fin.start)
678
+ zoom = lerp(zoom, n('camera.endZoom'), (0, easing_1.ease)(s('timeline.finalHold.easing'), (t - fin.start) / (fin.end - fin.start), fin.end - fin.start));
679
+ const u = lay.unit, W = width, Hh = height;
680
+ const camT = (z, k) => `translate(${W / 2}px, ${Hh / 2}px) rotate(${n('camera.rotation') * k}deg) scale(${z}) translate(${-W / 2 - n('camera.x') * u * k}px, ${-Hh / 2 - n('camera.y') * u * k}px)`;
681
+ const par = n('camera.parallax');
682
+ /* background type rows */
683
+ const bt = 'background.backgroundTypography';
684
+ const size = n(`${bt}.fontSize`) * u * lay.backgroundType.scale;
685
+ const pitch = size * n(`${bt}.rowGap`);
686
+ const drift = n(`${bt}.drift`) * u * (t / exports.MOTION_FPS);
687
+ const typeRows = Array.from({ length: n(`${bt}.rows`) }, (_, i) => ({
688
+ y: n(`${bt}.y`) * u + lay.backgroundType.y + i * pitch,
689
+ x: n(`${bt}.x`) * u + lay.backgroundType.x + (b(`${bt}.alternate`) && i % 2 ? -drift : drift),
690
+ }));
691
+ // Fill: an estimate of the word's width (caps ≈ 0.66 em each, plus tracking) decides how many repeats span the canvas.
692
+ const wordWidth = Math.max(1, s(`${bt}.text`).length * (0.66 + n(`${bt}.tracking`)) * size + 0.3 * size);
693
+ const reach = width + Math.abs(n(`${bt}.x`) * u + lay.backgroundType.x) + Math.abs(drift) + size;
694
+ const typeRepeat = Math.max(n(`${bt}.repeat`), b(`${bt}.fill`) ? Math.min(12, Math.ceil(reach / wordWidth)) : 1);
695
+ /* logo and CTA */
696
+ const introSpan = tl.phases.intro;
697
+ const eLogo = (0, easing_1.ease)(s('easing.logoEnter'), (t - introSpan.start) / Math.max(1, introSpan.end - introSpan.start), introSpan.end - introSpan.start);
698
+ const logoMode = s('logo.animation');
699
+ const logo = { x: lay.logo.x, y: lay.logo.y - (logoMode === 'drop' ? (1 - eLogo) * 60 * u : 0), opacity: logoMode === 'none' ? 1 : eLogo, scale: lay.logo.scale };
700
+ const ctaMode = s('cta.animation');
701
+ const pCta = clamp((t - n('cta.enterDelayFrames')) / n('cta.enterDurationFrames'));
702
+ const pop = ctaMode === 'pop' || ctaMode === 'pop-pulse';
703
+ const pulse = ctaMode === 'pulse' || ctaMode === 'pop-pulse';
704
+ const pulseT = Math.max(0, t - fin.start) / exports.MOTION_FPS;
705
+ const pulseK = pulse && t >= fin.start ? n('cta.pulseAmount') * (0.5 - 0.5 * Math.cos(TAU * n('cta.pulseFrequency') * pulseT)) : 0;
706
+ const cta = { x: lay.cta.x, y: lay.cta.y, opacity: pop ? clamp(pCta * 3) : 1, scale: lay.cta.scale * (pop ? Math.max(0, (0, easing_1.ease)(s('easing.ctaEnter'), pCta, n('cta.enterDurationFrames'))) : 1) * (1 + pulseK) };
707
+ /* debug: the creases on the picture */
708
+ const creaseLine = (k) => {
709
+ const y = lay.creases[k];
710
+ return { id: k === 0 ? 'top' : 'bottom', from: onPicture(0, y), to: onPicture(PW, y), position: creases[k].position, angle: folds[k].angle };
711
+ };
712
+ return {
713
+ cfg, frame: t, size: lay, timeline: tl, phase: phaseAt(tl, t), folds, anchor, panels, strips, bands: sheet.bands, text, anchors, hands,
714
+ camera: { transform: camT(zoom, 1), backgroundTransform: camT(1 + (zoom - 1) * par, par), zoom },
715
+ shadowQuads: strips.map((p) => p.corners),
716
+ sheetCentre: project(chain(sheet.P, sheet.S), [PW / 2, lay.paper.height / 2, 0]),
717
+ background: { typeRows, typeRepeat },
718
+ logo, cta,
719
+ debug: { creases: [creaseLine(0), creaseLine(1)] },
720
+ };
721
+ }
722
+ //# sourceMappingURL=engine.js.map