@appinternalleads/ui 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/agent/AgentComponent.js +1 -1
- package/dist/cjs/agent/AgentComponent.js.map +1 -1
- package/dist/cjs/agent/manifests.js +81 -1
- package/dist/cjs/agent/manifests.js.map +1 -1
- package/dist/cjs/agent/result.js +6 -0
- package/dist/cjs/agent/result.js.map +1 -1
- package/dist/cjs/components/catalog.js +18 -0
- package/dist/cjs/components/catalog.js.map +1 -1
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js +21 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js +6 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js +89 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js +62 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js +20 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/contract.js +87 -0
- package/dist/cjs/components/onboarding/animated-status/contract.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/engine.js +40 -0
- package/dist/cjs/components/onboarding/animated-status/engine.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/index.js +20 -0
- package/dist/cjs/components/onboarding/animated-status/index.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/presets.json +126 -0
- package/dist/cjs/components/onboarding/animated-status/riv.js +7 -0
- package/dist/cjs/components/onboarding/animated-status/riv.js.map +1 -0
- package/dist/cjs/components/onboarding/index.js +4 -0
- package/dist/cjs/components/onboarding/index.js.map +1 -1
- package/dist/cjs/components/onboarding/presets.js +90 -84
- package/dist/cjs/components/onboarding/presets.js.map +1 -1
- package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js +43 -6
- package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
- package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js +111 -0
- package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.js +37 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.types.js +6 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.types.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.web.js +107 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.web.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/SendStill.js +17 -0
- package/dist/cjs/components/onboarding/send-completion/SendStill.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/contract.js +83 -0
- package/dist/cjs/components/onboarding/send-completion/contract.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/engine.js +32 -0
- package/dist/cjs/components/onboarding/send-completion/engine.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/index.js +22 -0
- package/dist/cjs/components/onboarding/send-completion/index.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/presets.json +132 -0
- package/dist/cjs/components/onboarding/send-completion/riv.js +7 -0
- package/dist/cjs/components/onboarding/send-completion/riv.js.map +1 -0
- package/dist/cjs/components/onboarding/shared/actions-data.js +2 -0
- package/dist/cjs/components/onboarding/shared/actions-data.js.map +1 -1
- package/dist/cjs/components/onboarding/shared/configColor.js +76 -0
- package/dist/cjs/components/onboarding/shared/configColor.js.map +1 -0
- package/dist/cjs/components/onboarding/shared/contract.js +4 -0
- package/dist/cjs/components/onboarding/shared/contract.js.map +1 -1
- package/dist/cjs/components/onboarding/shared/describe.js +1 -1
- package/dist/cjs/components/onboarding/shared/describe.js.map +1 -1
- package/dist/cjs/components/onboarding/shared/mock.js +2 -0
- package/dist/cjs/components/onboarding/shared/mock.js.map +1 -1
- package/dist/cjs/components/onboarding/views.js +8 -0
- package/dist/cjs/components/onboarding/views.js.map +1 -1
- package/dist/cjs/motion/MotionPlayer.js +42 -0
- package/dist/cjs/motion/MotionPlayer.js.map +1 -0
- package/dist/cjs/motion/agent.js +323 -0
- package/dist/cjs/motion/agent.js.map +1 -0
- package/dist/cjs/motion/cat/Cat.js +79 -0
- package/dist/cjs/motion/cat/Cat.js.map +1 -0
- package/dist/cjs/motion/cat/animation.js +204 -0
- package/dist/cjs/motion/cat/animation.js.map +1 -0
- package/dist/cjs/motion/cat/art.generated.js +37 -0
- package/dist/cjs/motion/cat/art.generated.js.map +1 -0
- package/dist/cjs/motion/cat/config.js +136 -0
- package/dist/cjs/motion/cat/config.js.map +1 -0
- package/dist/cjs/motion/cat/index.js +75 -0
- package/dist/cjs/motion/cat/index.js.map +1 -0
- package/dist/cjs/motion/cat/rig.js +99 -0
- package/dist/cjs/motion/cat/rig.js.map +1 -0
- package/dist/cjs/motion/cat/scene.js +148 -0
- package/dist/cjs/motion/cat/scene.js.map +1 -0
- package/dist/cjs/motion/configurable/config.js +477 -0
- package/dist/cjs/motion/configurable/config.js.map +1 -0
- package/dist/cjs/motion/configurable/controls.js +44 -0
- package/dist/cjs/motion/configurable/controls.js.map +1 -0
- package/dist/cjs/motion/easing.js +62 -0
- package/dist/cjs/motion/easing.js.map +1 -0
- package/dist/cjs/motion/fit.js +12 -0
- package/dist/cjs/motion/fit.js.map +1 -0
- package/dist/cjs/motion/index.js +101 -0
- package/dist/cjs/motion/index.js.map +1 -0
- package/dist/cjs/motion/neon/GlowRenderer.js +18 -0
- package/dist/cjs/motion/neon/GlowRenderer.js.map +1 -0
- package/dist/cjs/motion/neon/NeonCanvas.js +97 -0
- package/dist/cjs/motion/neon/NeonCanvas.js.map +1 -0
- package/dist/cjs/motion/neon/NeonText.js +108 -0
- package/dist/cjs/motion/neon/NeonText.js.map +1 -0
- package/dist/cjs/motion/neon/NeonTextFrame.js +36 -0
- package/dist/cjs/motion/neon/NeonTextFrame.js.map +1 -0
- package/dist/cjs/motion/neon/artwork.js +102 -0
- package/dist/cjs/motion/neon/artwork.js.map +1 -0
- package/dist/cjs/motion/neon/audio.js +165 -0
- package/dist/cjs/motion/neon/audio.js.map +1 -0
- package/dist/cjs/motion/neon/config.js +334 -0
- package/dist/cjs/motion/neon/config.js.map +1 -0
- package/dist/cjs/motion/neon/flicker.js +196 -0
- package/dist/cjs/motion/neon/flicker.js.map +1 -0
- package/dist/cjs/motion/neon/fonts.js +52 -0
- package/dist/cjs/motion/neon/fonts.js.map +1 -0
- package/dist/cjs/motion/neon/frame.js +24 -0
- package/dist/cjs/motion/neon/frame.js.map +1 -0
- package/dist/cjs/motion/neon/glitch.js +114 -0
- package/dist/cjs/motion/neon/glitch.js.map +1 -0
- package/dist/cjs/motion/neon/index.js +119 -0
- package/dist/cjs/motion/neon/index.js.map +1 -0
- package/dist/cjs/motion/neon/layers.js +68 -0
- package/dist/cjs/motion/neon/layers.js.map +1 -0
- package/dist/cjs/motion/neon/material.js +56 -0
- package/dist/cjs/motion/neon/material.js.map +1 -0
- package/dist/cjs/motion/neon/random.js +43 -0
- package/dist/cjs/motion/neon/random.js.map +1 -0
- package/dist/cjs/motion/neon/scene.js +549 -0
- package/dist/cjs/motion/neon/scene.js.map +1 -0
- package/dist/cjs/motion/neon/synth.js +213 -0
- package/dist/cjs/motion/neon/synth.js.map +1 -0
- package/dist/cjs/motion/neon/typography.js +81 -0
- package/dist/cjs/motion/neon/typography.js.map +1 -0
- package/dist/cjs/motion/neon/wall.js +113 -0
- package/dist/cjs/motion/neon/wall.js.map +1 -0
- package/dist/cjs/motion/paperfold/PaperFold.js +40 -0
- package/dist/cjs/motion/paperfold/PaperFold.js.map +1 -0
- package/dist/cjs/motion/paperfold/PaperFoldFrame.js +290 -0
- package/dist/cjs/motion/paperfold/PaperFoldFrame.js.map +1 -0
- package/dist/cjs/motion/paperfold/PaperFoldPlayer.js +59 -0
- package/dist/cjs/motion/paperfold/PaperFoldPlayer.js.map +1 -0
- package/dist/cjs/motion/paperfold/art.js +388 -0
- package/dist/cjs/motion/paperfold/art.js.map +1 -0
- package/dist/cjs/motion/paperfold/config.js +103 -0
- package/dist/cjs/motion/paperfold/config.js.map +1 -0
- package/dist/cjs/motion/paperfold/controls.js +493 -0
- package/dist/cjs/motion/paperfold/controls.js.map +1 -0
- package/dist/cjs/motion/paperfold/engine.js +722 -0
- package/dist/cjs/motion/paperfold/engine.js.map +1 -0
- package/dist/cjs/motion/paperfold/fonts.js +25 -0
- package/dist/cjs/motion/paperfold/fonts.js.map +1 -0
- package/dist/cjs/motion/paperfold/index.js +113 -0
- package/dist/cjs/motion/paperfold/index.js.map +1 -0
- package/dist/cjs/motion/paperfold/manipulate.js +170 -0
- package/dist/cjs/motion/paperfold/manipulate.js.map +1 -0
- package/dist/cjs/motion/paperfold/presets.js +119 -0
- package/dist/cjs/motion/paperfold/presets.js.map +1 -0
- package/dist/cjs/motion/paperfold/template.js +40 -0
- package/dist/cjs/motion/paperfold/template.js.map +1 -0
- package/dist/cjs/motion/player.js +203 -0
- package/dist/cjs/motion/player.js.map +1 -0
- package/dist/cjs/motion/promo/PromoFrame.js +293 -0
- package/dist/cjs/motion/promo/PromoFrame.js.map +1 -0
- package/dist/cjs/motion/promo/PromoShowcasePlayer.js +59 -0
- package/dist/cjs/motion/promo/PromoShowcasePlayer.js.map +1 -0
- package/dist/cjs/motion/promo/config.js +565 -0
- package/dist/cjs/motion/promo/config.js.map +1 -0
- package/dist/cjs/motion/promo/controls.js +571 -0
- package/dist/cjs/motion/promo/controls.js.map +1 -0
- package/dist/cjs/motion/promo/easing.js +35 -0
- package/dist/cjs/motion/promo/easing.js.map +1 -0
- package/dist/cjs/motion/promo/engine.js +567 -0
- package/dist/cjs/motion/promo/engine.js.map +1 -0
- package/dist/cjs/motion/promo/fonts.js +20 -0
- package/dist/cjs/motion/promo/fonts.js.map +1 -0
- package/dist/cjs/motion/promo/icons.js +29 -0
- package/dist/cjs/motion/promo/icons.js.map +1 -0
- package/dist/cjs/motion/promo/index.js +73 -0
- package/dist/cjs/motion/promo/index.js.map +1 -0
- package/dist/cjs/motion/promo/presets.js +44 -0
- package/dist/cjs/motion/promo/presets.js.map +1 -0
- package/dist/cjs/motion/promo/template.js +38 -0
- package/dist/cjs/motion/promo/template.js.map +1 -0
- package/dist/cjs/motion/replication2/Replication2Player.js +93 -0
- package/dist/cjs/motion/replication2/Replication2Player.js.map +1 -0
- package/dist/cjs/motion/replication2/config.js +352 -0
- package/dist/cjs/motion/replication2/config.js.map +1 -0
- package/dist/cjs/motion/replication2/controls.js +286 -0
- package/dist/cjs/motion/replication2/controls.js.map +1 -0
- package/dist/cjs/motion/replication2/driver.js +68 -0
- package/dist/cjs/motion/replication2/driver.js.map +1 -0
- package/dist/cjs/motion/replication2/easing.js +97 -0
- package/dist/cjs/motion/replication2/easing.js.map +1 -0
- package/dist/cjs/motion/replication2/engine.js +481 -0
- package/dist/cjs/motion/replication2/engine.js.map +1 -0
- package/dist/cjs/motion/replication2/html.js +88 -0
- package/dist/cjs/motion/replication2/html.js.map +1 -0
- package/dist/cjs/motion/replication2/index.js +61 -0
- package/dist/cjs/motion/replication2/index.js.map +1 -0
- package/dist/cjs/motion/replication2/measure.js +30 -0
- package/dist/cjs/motion/replication2/measure.js.map +1 -0
- package/dist/cjs/motion/replication2/metrics.js +10 -0
- package/dist/cjs/motion/replication2/metrics.js.map +1 -0
- package/dist/cjs/motion/replication2/presets.js +67 -0
- package/dist/cjs/motion/replication2/presets.js.map +1 -0
- package/dist/cjs/motion/replication2/riv.js +7 -0
- package/dist/cjs/motion/replication2/riv.js.map +1 -0
- package/dist/cjs/motion/replication2/rive-contract.js +158 -0
- package/dist/cjs/motion/replication2/rive-contract.js.map +1 -0
- package/dist/cjs/motion/replication2/template.js +35 -0
- package/dist/cjs/motion/replication2/template.js.map +1 -0
- package/dist/cjs/motion/sample.js +149 -0
- package/dist/cjs/motion/sample.js.map +1 -0
- package/dist/cjs/motion/templates/hey-template.js +1552 -0
- package/dist/cjs/motion/templates/hey-template.js.map +1 -0
- package/dist/cjs/motion/templates/index.js +22 -0
- package/dist/cjs/motion/templates/index.js.map +1 -0
- package/dist/cjs/motion/templates/word-motion.js +1165 -0
- package/dist/cjs/motion/templates/word-motion.js.map +1 -0
- package/dist/cjs/motion/types.js +3 -0
- package/dist/cjs/motion/types.js.map +1 -0
- package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js +62 -0
- package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
- package/dist/cjs/motion/typesurface/art.js +861 -0
- package/dist/cjs/motion/typesurface/art.js.map +1 -0
- package/dist/cjs/motion/typesurface/config.js +269 -0
- package/dist/cjs/motion/typesurface/config.js.map +1 -0
- package/dist/cjs/motion/typesurface/engine.js +607 -0
- package/dist/cjs/motion/typesurface/engine.js.map +1 -0
- package/dist/cjs/motion/typesurface/fonts.js +45 -0
- package/dist/cjs/motion/typesurface/fonts.js.map +1 -0
- package/dist/cjs/motion/typesurface/index.js +72 -0
- package/dist/cjs/motion/typesurface/index.js.map +1 -0
- package/dist/cjs/motion/typesurface/layout.js +130 -0
- package/dist/cjs/motion/typesurface/layout.js.map +1 -0
- package/dist/cjs/motion/typesurface/ops.js +175 -0
- package/dist/cjs/motion/typesurface/ops.js.map +1 -0
- package/dist/cjs/motion/typesurface/presets.js +192 -0
- package/dist/cjs/motion/typesurface/presets.js.map +1 -0
- package/dist/cjs/motion/typesurface/renderer.js +672 -0
- package/dist/cjs/motion/typesurface/renderer.js.map +1 -0
- package/dist/cjs/motion/typesurface/shaders.js +300 -0
- package/dist/cjs/motion/typesurface/shaders.js.map +1 -0
- package/dist/cjs/motion/typesurface/surfaces.js +156 -0
- package/dist/cjs/motion/typesurface/surfaces.js.map +1 -0
- package/dist/cjs/motion/typesurface/text.js +34 -0
- package/dist/cjs/motion/typesurface/text.js.map +1 -0
- package/dist/cjs/motion/typesurface/timeline.js +64 -0
- package/dist/cjs/motion/typesurface/timeline.js.map +1 -0
- package/dist/cjs/motion/validate.js +89 -0
- package/dist/cjs/motion/validate.js.map +1 -0
- package/dist/cjs/native/RiveReceiptStage.js +9 -150
- package/dist/cjs/native/RiveReceiptStage.js.map +1 -1
- package/dist/cjs/native/riveReceiptStageFactory.js +162 -0
- package/dist/cjs/native/riveReceiptStageFactory.js.map +1 -0
- package/dist/cjs/tokens/stage.js +10 -0
- package/dist/cjs/tokens/stage.js.map +1 -0
- package/dist/esm/agent/AgentComponent.js +1 -1
- package/dist/esm/agent/AgentComponent.js.map +1 -1
- package/dist/esm/agent/manifests.d.ts.map +1 -1
- package/dist/esm/agent/manifests.js +81 -1
- package/dist/esm/agent/manifests.js.map +1 -1
- package/dist/esm/agent/result.d.ts.map +1 -1
- package/dist/esm/agent/result.js +6 -0
- package/dist/esm/agent/result.js.map +1 -1
- package/dist/esm/agent/types.d.ts +1 -1
- package/dist/esm/agent/types.d.ts.map +1 -1
- package/dist/esm/components/catalog.d.ts +1 -1
- package/dist/esm/components/catalog.d.ts.map +1 -1
- package/dist/esm/components/catalog.js +18 -0
- package/dist/esm/components/catalog.js.map +1 -1
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts +9 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.js +18 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts +31 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js +3 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts +4 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js +86 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts +32 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js +59 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts +8 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStill.js +17 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/contract.d.ts +61 -0
- package/dist/esm/components/onboarding/animated-status/contract.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/contract.js +78 -0
- package/dist/esm/components/onboarding/animated-status/contract.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/engine.d.ts +24 -0
- package/dist/esm/components/onboarding/animated-status/engine.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/engine.js +32 -0
- package/dist/esm/components/onboarding/animated-status/engine.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/index.d.ts +5 -0
- package/dist/esm/components/onboarding/animated-status/index.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/index.js +4 -0
- package/dist/esm/components/onboarding/animated-status/index.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/presets.json +126 -0
- package/dist/esm/components/onboarding/animated-status/riv.d.ts +3 -0
- package/dist/esm/components/onboarding/animated-status/riv.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/riv.js +4 -0
- package/dist/esm/components/onboarding/animated-status/riv.js.map +1 -0
- package/dist/esm/components/onboarding/index.d.ts +2 -0
- package/dist/esm/components/onboarding/index.d.ts.map +1 -1
- package/dist/esm/components/onboarding/index.js +4 -0
- package/dist/esm/components/onboarding/index.js.map +1 -1
- package/dist/esm/components/onboarding/presets.d.ts.map +1 -1
- package/dist/esm/components/onboarding/presets.js +6 -0
- package/dist/esm/components/onboarding/presets.js.map +1 -1
- package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts +4 -6
- package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts.map +1 -1
- package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js +42 -6
- package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
- package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts +47 -0
- package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendCompletionView.js +108 -0
- package/dist/esm/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.d.ts +9 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.js +34 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts +33 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.types.js +3 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.types.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts +4 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.web.js +104 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.web.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStill.d.ts +11 -0
- package/dist/esm/components/onboarding/send-completion/SendStill.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStill.js +14 -0
- package/dist/esm/components/onboarding/send-completion/SendStill.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/contract.d.ts +99 -0
- package/dist/esm/components/onboarding/send-completion/contract.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/contract.js +76 -0
- package/dist/esm/components/onboarding/send-completion/contract.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/engine.d.ts +20 -0
- package/dist/esm/components/onboarding/send-completion/engine.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/engine.js +28 -0
- package/dist/esm/components/onboarding/send-completion/engine.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/index.d.ts +6 -0
- package/dist/esm/components/onboarding/send-completion/index.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/index.js +6 -0
- package/dist/esm/components/onboarding/send-completion/index.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/presets.json +132 -0
- package/dist/esm/components/onboarding/send-completion/riv.d.ts +3 -0
- package/dist/esm/components/onboarding/send-completion/riv.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/riv.js +4 -0
- package/dist/esm/components/onboarding/send-completion/riv.js.map +1 -0
- package/dist/esm/components/onboarding/shared/actions-data.d.ts.map +1 -1
- package/dist/esm/components/onboarding/shared/actions-data.js +2 -0
- package/dist/esm/components/onboarding/shared/actions-data.js.map +1 -1
- package/dist/esm/components/onboarding/shared/configColor.d.ts +29 -0
- package/dist/esm/components/onboarding/shared/configColor.d.ts.map +1 -0
- package/dist/esm/components/onboarding/shared/configColor.js +69 -0
- package/dist/esm/components/onboarding/shared/configColor.js.map +1 -0
- package/dist/esm/components/onboarding/shared/contract.d.ts +1 -1
- package/dist/esm/components/onboarding/shared/contract.d.ts.map +1 -1
- package/dist/esm/components/onboarding/shared/contract.js +4 -0
- package/dist/esm/components/onboarding/shared/contract.js.map +1 -1
- package/dist/esm/components/onboarding/shared/describe.d.ts.map +1 -1
- package/dist/esm/components/onboarding/shared/describe.js +1 -1
- package/dist/esm/components/onboarding/shared/describe.js.map +1 -1
- package/dist/esm/components/onboarding/shared/mock.d.ts +2 -0
- package/dist/esm/components/onboarding/shared/mock.d.ts.map +1 -1
- package/dist/esm/components/onboarding/shared/mock.js +2 -0
- package/dist/esm/components/onboarding/shared/mock.js.map +1 -1
- package/dist/esm/components/onboarding/views.d.ts.map +1 -1
- package/dist/esm/components/onboarding/views.js +8 -0
- package/dist/esm/components/onboarding/views.js.map +1 -1
- package/dist/esm/motion/MotionPlayer.d.ts +22 -0
- package/dist/esm/motion/MotionPlayer.d.ts.map +1 -0
- package/dist/esm/motion/MotionPlayer.js +39 -0
- package/dist/esm/motion/MotionPlayer.js.map +1 -0
- package/dist/esm/motion/agent.d.ts +146 -0
- package/dist/esm/motion/agent.d.ts.map +1 -0
- package/dist/esm/motion/agent.js +278 -0
- package/dist/esm/motion/agent.js.map +1 -0
- package/dist/esm/motion/cat/Cat.d.ts +43 -0
- package/dist/esm/motion/cat/Cat.d.ts.map +1 -0
- package/dist/esm/motion/cat/Cat.js +74 -0
- package/dist/esm/motion/cat/Cat.js.map +1 -0
- package/dist/esm/motion/cat/animation.d.ts +86 -0
- package/dist/esm/motion/cat/animation.d.ts.map +1 -0
- package/dist/esm/motion/cat/animation.js +193 -0
- package/dist/esm/motion/cat/animation.js.map +1 -0
- package/dist/esm/motion/cat/art.generated.d.ts +53 -0
- package/dist/esm/motion/cat/art.generated.d.ts.map +1 -0
- package/dist/esm/motion/cat/art.generated.js +34 -0
- package/dist/esm/motion/cat/art.generated.js.map +1 -0
- package/dist/esm/motion/cat/config.d.ts +103 -0
- package/dist/esm/motion/cat/config.d.ts.map +1 -0
- package/dist/esm/motion/cat/config.js +129 -0
- package/dist/esm/motion/cat/config.js.map +1 -0
- package/dist/esm/motion/cat/index.d.ts +13 -0
- package/dist/esm/motion/cat/index.d.ts.map +1 -0
- package/dist/esm/motion/cat/index.js +13 -0
- package/dist/esm/motion/cat/index.js.map +1 -0
- package/dist/esm/motion/cat/rig.d.ts +44 -0
- package/dist/esm/motion/cat/rig.d.ts.map +1 -0
- package/dist/esm/motion/cat/rig.js +86 -0
- package/dist/esm/motion/cat/rig.js.map +1 -0
- package/dist/esm/motion/cat/scene.d.ts +66 -0
- package/dist/esm/motion/cat/scene.d.ts.map +1 -0
- package/dist/esm/motion/cat/scene.js +137 -0
- package/dist/esm/motion/cat/scene.js.map +1 -0
- package/dist/esm/motion/configurable/config.d.ts +80 -0
- package/dist/esm/motion/configurable/config.d.ts.map +1 -0
- package/dist/esm/motion/configurable/config.js +468 -0
- package/dist/esm/motion/configurable/config.js.map +1 -0
- package/dist/esm/motion/configurable/controls.d.ts +74 -0
- package/dist/esm/motion/configurable/controls.d.ts.map +1 -0
- package/dist/esm/motion/configurable/controls.js +38 -0
- package/dist/esm/motion/configurable/controls.js.map +1 -0
- package/dist/esm/motion/easing.d.ts +4 -0
- package/dist/esm/motion/easing.d.ts.map +1 -0
- package/dist/esm/motion/easing.js +58 -0
- package/dist/esm/motion/easing.js.map +1 -0
- package/dist/esm/motion/fit.d.ts +8 -0
- package/dist/esm/motion/fit.d.ts.map +1 -0
- package/dist/esm/motion/fit.js +8 -0
- package/dist/esm/motion/fit.js.map +1 -0
- package/dist/esm/motion/index.d.ts +27 -0
- package/dist/esm/motion/index.d.ts.map +1 -0
- package/dist/esm/motion/index.js +21 -0
- package/dist/esm/motion/index.js.map +1 -0
- package/dist/esm/motion/neon/GlowRenderer.d.ts +31 -0
- package/dist/esm/motion/neon/GlowRenderer.d.ts.map +1 -0
- package/dist/esm/motion/neon/GlowRenderer.js +14 -0
- package/dist/esm/motion/neon/GlowRenderer.js.map +1 -0
- package/dist/esm/motion/neon/NeonCanvas.d.ts +42 -0
- package/dist/esm/motion/neon/NeonCanvas.d.ts.map +1 -0
- package/dist/esm/motion/neon/NeonCanvas.js +92 -0
- package/dist/esm/motion/neon/NeonCanvas.js.map +1 -0
- package/dist/esm/motion/neon/NeonText.d.ts +26 -0
- package/dist/esm/motion/neon/NeonText.d.ts.map +1 -0
- package/dist/esm/motion/neon/NeonText.js +103 -0
- package/dist/esm/motion/neon/NeonText.js.map +1 -0
- package/dist/esm/motion/neon/NeonTextFrame.d.ts +29 -0
- package/dist/esm/motion/neon/NeonTextFrame.d.ts.map +1 -0
- package/dist/esm/motion/neon/NeonTextFrame.js +33 -0
- package/dist/esm/motion/neon/NeonTextFrame.js.map +1 -0
- package/dist/esm/motion/neon/artwork.d.ts +29 -0
- package/dist/esm/motion/neon/artwork.d.ts.map +1 -0
- package/dist/esm/motion/neon/artwork.js +98 -0
- package/dist/esm/motion/neon/artwork.js.map +1 -0
- package/dist/esm/motion/neon/audio.d.ts +49 -0
- package/dist/esm/motion/neon/audio.d.ts.map +1 -0
- package/dist/esm/motion/neon/audio.js +161 -0
- package/dist/esm/motion/neon/audio.js.map +1 -0
- package/dist/esm/motion/neon/config.d.ts +319 -0
- package/dist/esm/motion/neon/config.d.ts.map +1 -0
- package/dist/esm/motion/neon/config.js +319 -0
- package/dist/esm/motion/neon/config.js.map +1 -0
- package/dist/esm/motion/neon/flicker.d.ts +82 -0
- package/dist/esm/motion/neon/flicker.d.ts.map +1 -0
- package/dist/esm/motion/neon/flicker.js +187 -0
- package/dist/esm/motion/neon/flicker.js.map +1 -0
- package/dist/esm/motion/neon/fonts.d.ts +29 -0
- package/dist/esm/motion/neon/fonts.d.ts.map +1 -0
- package/dist/esm/motion/neon/fonts.js +47 -0
- package/dist/esm/motion/neon/fonts.js.map +1 -0
- package/dist/esm/motion/neon/frame.d.ts +22 -0
- package/dist/esm/motion/neon/frame.d.ts.map +1 -0
- package/dist/esm/motion/neon/frame.js +20 -0
- package/dist/esm/motion/neon/frame.js.map +1 -0
- package/dist/esm/motion/neon/glitch.d.ts +64 -0
- package/dist/esm/motion/neon/glitch.d.ts.map +1 -0
- package/dist/esm/motion/neon/glitch.js +108 -0
- package/dist/esm/motion/neon/glitch.js.map +1 -0
- package/dist/esm/motion/neon/index.d.ts +29 -0
- package/dist/esm/motion/neon/index.d.ts.map +1 -0
- package/dist/esm/motion/neon/index.js +28 -0
- package/dist/esm/motion/neon/index.js.map +1 -0
- package/dist/esm/motion/neon/layers.d.ts +56 -0
- package/dist/esm/motion/neon/layers.d.ts.map +1 -0
- package/dist/esm/motion/neon/layers.js +64 -0
- package/dist/esm/motion/neon/layers.js.map +1 -0
- package/dist/esm/motion/neon/material.d.ts +68 -0
- package/dist/esm/motion/neon/material.d.ts.map +1 -0
- package/dist/esm/motion/neon/material.js +51 -0
- package/dist/esm/motion/neon/material.js.map +1 -0
- package/dist/esm/motion/neon/random.d.ts +15 -0
- package/dist/esm/motion/neon/random.d.ts.map +1 -0
- package/dist/esm/motion/neon/random.js +37 -0
- package/dist/esm/motion/neon/random.js.map +1 -0
- package/dist/esm/motion/neon/scene.d.ts +255 -0
- package/dist/esm/motion/neon/scene.d.ts.map +1 -0
- package/dist/esm/motion/neon/scene.js +532 -0
- package/dist/esm/motion/neon/scene.js.map +1 -0
- package/dist/esm/motion/neon/synth.d.ts +18 -0
- package/dist/esm/motion/neon/synth.d.ts.map +1 -0
- package/dist/esm/motion/neon/synth.js +208 -0
- package/dist/esm/motion/neon/synth.js.map +1 -0
- package/dist/esm/motion/neon/typography.d.ts +53 -0
- package/dist/esm/motion/neon/typography.d.ts.map +1 -0
- package/dist/esm/motion/neon/typography.js +74 -0
- package/dist/esm/motion/neon/typography.js.map +1 -0
- package/dist/esm/motion/neon/wall.d.ts +62 -0
- package/dist/esm/motion/neon/wall.d.ts.map +1 -0
- package/dist/esm/motion/neon/wall.js +106 -0
- package/dist/esm/motion/neon/wall.js.map +1 -0
- package/dist/esm/motion/paperfold/PaperFold.d.ts +36 -0
- package/dist/esm/motion/paperfold/PaperFold.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/PaperFold.js +37 -0
- package/dist/esm/motion/paperfold/PaperFold.js.map +1 -0
- package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts +39 -0
- package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/PaperFoldFrame.js +283 -0
- package/dist/esm/motion/paperfold/PaperFoldFrame.js.map +1 -0
- package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts +27 -0
- package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/PaperFoldPlayer.js +56 -0
- package/dist/esm/motion/paperfold/PaperFoldPlayer.js.map +1 -0
- package/dist/esm/motion/paperfold/art.d.ts +148 -0
- package/dist/esm/motion/paperfold/art.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/art.js +374 -0
- package/dist/esm/motion/paperfold/art.js.map +1 -0
- package/dist/esm/motion/paperfold/config.d.ts +47 -0
- package/dist/esm/motion/paperfold/config.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/config.js +96 -0
- package/dist/esm/motion/paperfold/config.js.map +1 -0
- package/dist/esm/motion/paperfold/controls.d.ts +57 -0
- package/dist/esm/motion/paperfold/controls.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/controls.js +506 -0
- package/dist/esm/motion/paperfold/controls.js.map +1 -0
- package/dist/esm/motion/paperfold/engine.d.ts +397 -0
- package/dist/esm/motion/paperfold/engine.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/engine.js +699 -0
- package/dist/esm/motion/paperfold/engine.js.map +1 -0
- package/dist/esm/motion/paperfold/fonts.d.ts +3 -0
- package/dist/esm/motion/paperfold/fonts.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/fonts.js +21 -0
- package/dist/esm/motion/paperfold/fonts.js.map +1 -0
- package/dist/esm/motion/paperfold/index.d.ts +17 -0
- package/dist/esm/motion/paperfold/index.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/index.js +17 -0
- package/dist/esm/motion/paperfold/index.js.map +1 -0
- package/dist/esm/motion/paperfold/manipulate.d.ts +59 -0
- package/dist/esm/motion/paperfold/manipulate.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/manipulate.js +161 -0
- package/dist/esm/motion/paperfold/manipulate.js.map +1 -0
- package/dist/esm/motion/paperfold/presets.d.ts +9 -0
- package/dist/esm/motion/paperfold/presets.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/presets.js +115 -0
- package/dist/esm/motion/paperfold/presets.js.map +1 -0
- package/dist/esm/motion/paperfold/template.d.ts +3 -0
- package/dist/esm/motion/paperfold/template.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/template.js +37 -0
- package/dist/esm/motion/paperfold/template.js.map +1 -0
- package/dist/esm/motion/player.d.ts +35 -0
- package/dist/esm/motion/player.d.ts.map +1 -0
- package/dist/esm/motion/player.js +197 -0
- package/dist/esm/motion/player.js.map +1 -0
- package/dist/esm/motion/promo/PromoFrame.d.ts +31 -0
- package/dist/esm/motion/promo/PromoFrame.d.ts.map +1 -0
- package/dist/esm/motion/promo/PromoFrame.js +288 -0
- package/dist/esm/motion/promo/PromoFrame.js.map +1 -0
- package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts +25 -0
- package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts.map +1 -0
- package/dist/esm/motion/promo/PromoShowcasePlayer.js +56 -0
- package/dist/esm/motion/promo/PromoShowcasePlayer.js.map +1 -0
- package/dist/esm/motion/promo/config.d.ts +91 -0
- package/dist/esm/motion/promo/config.d.ts.map +1 -0
- package/dist/esm/motion/promo/config.js +550 -0
- package/dist/esm/motion/promo/config.js.map +1 -0
- package/dist/esm/motion/promo/controls.d.ts +86 -0
- package/dist/esm/motion/promo/controls.d.ts.map +1 -0
- package/dist/esm/motion/promo/controls.js +567 -0
- package/dist/esm/motion/promo/controls.js.map +1 -0
- package/dist/esm/motion/promo/easing.d.ts +3 -0
- package/dist/esm/motion/promo/easing.d.ts.map +1 -0
- package/dist/esm/motion/promo/easing.js +32 -0
- package/dist/esm/motion/promo/easing.js.map +1 -0
- package/dist/esm/motion/promo/engine.d.ts +205 -0
- package/dist/esm/motion/promo/engine.d.ts.map +1 -0
- package/dist/esm/motion/promo/engine.js +551 -0
- package/dist/esm/motion/promo/engine.js.map +1 -0
- package/dist/esm/motion/promo/fonts.d.ts +7 -0
- package/dist/esm/motion/promo/fonts.d.ts.map +1 -0
- package/dist/esm/motion/promo/fonts.js +16 -0
- package/dist/esm/motion/promo/fonts.js.map +1 -0
- package/dist/esm/motion/promo/icons.d.ts +7 -0
- package/dist/esm/motion/promo/icons.d.ts.map +1 -0
- package/dist/esm/motion/promo/icons.js +26 -0
- package/dist/esm/motion/promo/icons.js.map +1 -0
- package/dist/esm/motion/promo/index.d.ts +15 -0
- package/dist/esm/motion/promo/index.d.ts.map +1 -0
- package/dist/esm/motion/promo/index.js +15 -0
- package/dist/esm/motion/promo/index.js.map +1 -0
- package/dist/esm/motion/promo/presets.d.ts +13 -0
- package/dist/esm/motion/promo/presets.d.ts.map +1 -0
- package/dist/esm/motion/promo/presets.js +40 -0
- package/dist/esm/motion/promo/presets.js.map +1 -0
- package/dist/esm/motion/promo/template.d.ts +8 -0
- package/dist/esm/motion/promo/template.d.ts.map +1 -0
- package/dist/esm/motion/promo/template.js +35 -0
- package/dist/esm/motion/promo/template.js.map +1 -0
- package/dist/esm/motion/replication2/Replication2Player.d.ts +26 -0
- package/dist/esm/motion/replication2/Replication2Player.d.ts.map +1 -0
- package/dist/esm/motion/replication2/Replication2Player.js +90 -0
- package/dist/esm/motion/replication2/Replication2Player.js.map +1 -0
- package/dist/esm/motion/replication2/config.d.ts +78 -0
- package/dist/esm/motion/replication2/config.d.ts.map +1 -0
- package/dist/esm/motion/replication2/config.js +341 -0
- package/dist/esm/motion/replication2/config.js.map +1 -0
- package/dist/esm/motion/replication2/controls.d.ts +70 -0
- package/dist/esm/motion/replication2/controls.d.ts.map +1 -0
- package/dist/esm/motion/replication2/controls.js +283 -0
- package/dist/esm/motion/replication2/controls.js.map +1 -0
- package/dist/esm/motion/replication2/driver.d.ts +23 -0
- package/dist/esm/motion/replication2/driver.d.ts.map +1 -0
- package/dist/esm/motion/replication2/driver.js +65 -0
- package/dist/esm/motion/replication2/driver.js.map +1 -0
- package/dist/esm/motion/replication2/easing.d.ts +19 -0
- package/dist/esm/motion/replication2/easing.d.ts.map +1 -0
- package/dist/esm/motion/replication2/easing.js +92 -0
- package/dist/esm/motion/replication2/easing.js.map +1 -0
- package/dist/esm/motion/replication2/engine.d.ts +236 -0
- package/dist/esm/motion/replication2/engine.d.ts.map +1 -0
- package/dist/esm/motion/replication2/engine.js +470 -0
- package/dist/esm/motion/replication2/engine.js.map +1 -0
- package/dist/esm/motion/replication2/html.d.ts +30 -0
- package/dist/esm/motion/replication2/html.d.ts.map +1 -0
- package/dist/esm/motion/replication2/html.js +83 -0
- package/dist/esm/motion/replication2/html.js.map +1 -0
- package/dist/esm/motion/replication2/index.d.ts +15 -0
- package/dist/esm/motion/replication2/index.d.ts.map +1 -0
- package/dist/esm/motion/replication2/index.js +15 -0
- package/dist/esm/motion/replication2/index.js.map +1 -0
- package/dist/esm/motion/replication2/measure.d.ts +3 -0
- package/dist/esm/motion/replication2/measure.d.ts.map +1 -0
- package/dist/esm/motion/replication2/measure.js +27 -0
- package/dist/esm/motion/replication2/measure.js.map +1 -0
- package/dist/esm/motion/replication2/metrics.d.ts +6 -0
- package/dist/esm/motion/replication2/metrics.d.ts.map +1 -0
- package/dist/esm/motion/replication2/metrics.js +7 -0
- package/dist/esm/motion/replication2/metrics.js.map +1 -0
- package/dist/esm/motion/replication2/presets.d.ts +13 -0
- package/dist/esm/motion/replication2/presets.d.ts.map +1 -0
- package/dist/esm/motion/replication2/presets.js +63 -0
- package/dist/esm/motion/replication2/presets.js.map +1 -0
- package/dist/esm/motion/replication2/riv.d.ts +3 -0
- package/dist/esm/motion/replication2/riv.d.ts.map +1 -0
- package/dist/esm/motion/replication2/riv.js +4 -0
- package/dist/esm/motion/replication2/riv.js.map +1 -0
- package/dist/esm/motion/replication2/rive-contract.d.ts +27 -0
- package/dist/esm/motion/replication2/rive-contract.d.ts.map +1 -0
- package/dist/esm/motion/replication2/rive-contract.js +153 -0
- package/dist/esm/motion/replication2/rive-contract.js.map +1 -0
- package/dist/esm/motion/replication2/template.d.ts +8 -0
- package/dist/esm/motion/replication2/template.d.ts.map +1 -0
- package/dist/esm/motion/replication2/template.js +32 -0
- package/dist/esm/motion/replication2/template.js.map +1 -0
- package/dist/esm/motion/sample.d.ts +61 -0
- package/dist/esm/motion/sample.d.ts.map +1 -0
- package/dist/esm/motion/sample.js +138 -0
- package/dist/esm/motion/sample.js.map +1 -0
- package/dist/esm/motion/templates/hey-template.d.ts +3 -0
- package/dist/esm/motion/templates/hey-template.d.ts.map +1 -0
- package/dist/esm/motion/templates/hey-template.js +1549 -0
- package/dist/esm/motion/templates/hey-template.js.map +1 -0
- package/dist/esm/motion/templates/index.d.ts +22 -0
- package/dist/esm/motion/templates/index.d.ts.map +1 -0
- package/dist/esm/motion/templates/index.js +15 -0
- package/dist/esm/motion/templates/index.js.map +1 -0
- package/dist/esm/motion/templates/word-motion.d.ts +3 -0
- package/dist/esm/motion/templates/word-motion.d.ts.map +1 -0
- package/dist/esm/motion/templates/word-motion.js +1162 -0
- package/dist/esm/motion/templates/word-motion.js.map +1 -0
- package/dist/esm/motion/types.d.ts +192 -0
- package/dist/esm/motion/types.d.ts.map +1 -0
- package/dist/esm/motion/types.js +2 -0
- package/dist/esm/motion/types.js.map +1 -0
- package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts +22 -0
- package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js +58 -0
- package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
- package/dist/esm/motion/typesurface/art.d.ts +21 -0
- package/dist/esm/motion/typesurface/art.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/art.js +854 -0
- package/dist/esm/motion/typesurface/art.js.map +1 -0
- package/dist/esm/motion/typesurface/config.d.ts +273 -0
- package/dist/esm/motion/typesurface/config.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/config.js +260 -0
- package/dist/esm/motion/typesurface/config.js.map +1 -0
- package/dist/esm/motion/typesurface/engine.d.ts +94 -0
- package/dist/esm/motion/typesurface/engine.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/engine.js +603 -0
- package/dist/esm/motion/typesurface/engine.js.map +1 -0
- package/dist/esm/motion/typesurface/fonts.d.ts +25 -0
- package/dist/esm/motion/typesurface/fonts.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/fonts.js +40 -0
- package/dist/esm/motion/typesurface/fonts.js.map +1 -0
- package/dist/esm/motion/typesurface/index.d.ts +17 -0
- package/dist/esm/motion/typesurface/index.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/index.js +17 -0
- package/dist/esm/motion/typesurface/index.js.map +1 -0
- package/dist/esm/motion/typesurface/layout.d.ts +57 -0
- package/dist/esm/motion/typesurface/layout.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/layout.js +122 -0
- package/dist/esm/motion/typesurface/layout.js.map +1 -0
- package/dist/esm/motion/typesurface/ops.d.ts +70 -0
- package/dist/esm/motion/typesurface/ops.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/ops.js +164 -0
- package/dist/esm/motion/typesurface/ops.js.map +1 -0
- package/dist/esm/motion/typesurface/presets.d.ts +33 -0
- package/dist/esm/motion/typesurface/presets.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/presets.js +185 -0
- package/dist/esm/motion/typesurface/presets.js.map +1 -0
- package/dist/esm/motion/typesurface/renderer.d.ts +78 -0
- package/dist/esm/motion/typesurface/renderer.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/renderer.js +666 -0
- package/dist/esm/motion/typesurface/renderer.js.map +1 -0
- package/dist/esm/motion/typesurface/shaders.d.ts +17 -0
- package/dist/esm/motion/typesurface/shaders.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/shaders.js +297 -0
- package/dist/esm/motion/typesurface/shaders.js.map +1 -0
- package/dist/esm/motion/typesurface/surfaces.d.ts +81 -0
- package/dist/esm/motion/typesurface/surfaces.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/surfaces.js +149 -0
- package/dist/esm/motion/typesurface/surfaces.js.map +1 -0
- package/dist/esm/motion/typesurface/text.d.ts +17 -0
- package/dist/esm/motion/typesurface/text.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/text.js +28 -0
- package/dist/esm/motion/typesurface/text.js.map +1 -0
- package/dist/esm/motion/typesurface/timeline.d.ts +15 -0
- package/dist/esm/motion/typesurface/timeline.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/timeline.js +57 -0
- package/dist/esm/motion/typesurface/timeline.js.map +1 -0
- package/dist/esm/motion/validate.d.ts +22 -0
- package/dist/esm/motion/validate.d.ts.map +1 -0
- package/dist/esm/motion/validate.js +84 -0
- package/dist/esm/motion/validate.js.map +1 -0
- package/dist/esm/native/RiveReceiptStage.d.ts +25 -2
- package/dist/esm/native/RiveReceiptStage.d.ts.map +1 -1
- package/dist/esm/native/RiveReceiptStage.js +7 -148
- package/dist/esm/native/RiveReceiptStage.js.map +1 -1
- package/dist/esm/native/riveReceiptStageFactory.d.ts +26 -0
- package/dist/esm/native/riveReceiptStageFactory.d.ts.map +1 -0
- package/dist/esm/native/riveReceiptStageFactory.js +159 -0
- package/dist/esm/native/riveReceiptStageFactory.js.map +1 -0
- package/dist/esm/tokens/stage.d.ts +7 -0
- package/dist/esm/tokens/stage.d.ts.map +1 -0
- package/dist/esm/tokens/stage.js +7 -0
- package/dist/esm/tokens/stage.js.map +1 -0
- package/package.json +35 -1
- package/spec/examples/components/onboarding/animated-status/case1.json +42 -0
- package/spec/examples/components/onboarding/animated-status/case2.json +42 -0
- package/spec/examples/components/onboarding/animated-status/case3.json +42 -0
- package/spec/examples/components/onboarding/animated-status/case4.json +42 -0
- package/spec/examples/components/onboarding/animated-status/case5.json +42 -0
- package/spec/examples/components/onboarding/send-completion/case1.json +48 -0
- package/spec/examples/components/onboarding/send-completion/case2.json +48 -0
- package/spec/examples/components/onboarding/send-completion/case3.json +48 -0
- package/spec/examples/components/onboarding/send-completion/case4.json +48 -0
- package/spec/examples/components/onboarding/send-completion/case5.json +48 -0
- package/spec/families/onboarding.schema.json +610 -1
- package/src/agent/AgentComponent.tsx +1 -1
- package/src/agent/manifests.ts +83 -1
- package/src/agent/result.ts +6 -0
- package/src/agent/types.ts +1 -1
- package/src/components/catalog.ts +21 -1
- package/src/components/onboarding/animated-status/AnimatedStage.tsx +18 -0
- package/src/components/onboarding/animated-status/AnimatedStage.types.ts +30 -0
- package/src/components/onboarding/animated-status/AnimatedStage.web.tsx +99 -0
- package/src/components/onboarding/animated-status/AnimatedStatusView.tsx +109 -0
- package/src/components/onboarding/animated-status/AnimatedStill.tsx +23 -0
- package/src/components/onboarding/animated-status/contract.ts +105 -0
- package/src/components/onboarding/animated-status/engine.ts +49 -0
- package/src/components/onboarding/animated-status/index.ts +8 -0
- package/src/components/onboarding/animated-status/presets.json +126 -0
- package/src/components/onboarding/animated-status/riv.ts +4 -0
- package/src/components/onboarding/index.ts +4 -0
- package/src/components/onboarding/presets.ts +6 -0
- package/src/components/onboarding/receipt-printer/ReceiptStage.tsx +46 -7
- package/src/components/onboarding/send-completion/SendCompletionView.tsx +164 -0
- package/src/components/onboarding/send-completion/SendStage.tsx +27 -0
- package/src/components/onboarding/send-completion/SendStage.types.ts +32 -0
- package/src/components/onboarding/send-completion/SendStage.web.tsx +116 -0
- package/src/components/onboarding/send-completion/SendStill.tsx +19 -0
- package/src/components/onboarding/send-completion/contract.ts +127 -0
- package/src/components/onboarding/send-completion/engine.ts +37 -0
- package/src/components/onboarding/send-completion/index.ts +10 -0
- package/src/components/onboarding/send-completion/presets.json +132 -0
- package/src/components/onboarding/send-completion/riv.ts +4 -0
- package/src/components/onboarding/shared/actions-data.ts +2 -0
- package/src/components/onboarding/shared/configColor.ts +72 -0
- package/src/components/onboarding/shared/contract.ts +4 -0
- package/src/components/onboarding/shared/describe.ts +1 -1
- package/src/components/onboarding/shared/mock.ts +2 -0
- package/src/components/onboarding/views.ts +8 -0
- package/src/motion/MotionPlayer.tsx +62 -0
- package/src/motion/agent.ts +288 -0
- package/src/motion/cat/Cat.tsx +118 -0
- package/src/motion/cat/animation.ts +206 -0
- package/src/motion/cat/art.generated.ts +44 -0
- package/src/motion/cat/config.ts +186 -0
- package/src/motion/cat/index.ts +26 -0
- package/src/motion/cat/rig.ts +102 -0
- package/src/motion/cat/scene.ts +181 -0
- package/src/motion/configurable/config.ts +420 -0
- package/src/motion/configurable/controls.ts +93 -0
- package/src/motion/easing.ts +55 -0
- package/src/motion/fit.ts +8 -0
- package/src/motion/index.ts +29 -0
- package/src/motion/neon/GlowRenderer.tsx +83 -0
- package/src/motion/neon/NeonCanvas.tsx +175 -0
- package/src/motion/neon/NeonText.tsx +113 -0
- package/src/motion/neon/NeonTextFrame.tsx +67 -0
- package/src/motion/neon/artwork.ts +95 -0
- package/src/motion/neon/audio.ts +162 -0
- package/src/motion/neon/config.ts +484 -0
- package/src/motion/neon/flicker.ts +225 -0
- package/src/motion/neon/fonts.ts +76 -0
- package/src/motion/neon/frame.ts +34 -0
- package/src/motion/neon/glitch.ts +142 -0
- package/src/motion/neon/index.ts +41 -0
- package/src/motion/neon/layers.tsx +209 -0
- package/src/motion/neon/material.ts +88 -0
- package/src/motion/neon/random.ts +40 -0
- package/src/motion/neon/scene.ts +610 -0
- package/src/motion/neon/synth.ts +188 -0
- package/src/motion/neon/typography.ts +102 -0
- package/src/motion/neon/wall.ts +157 -0
- package/src/motion/paperfold/PaperFold.tsx +45 -0
- package/src/motion/paperfold/PaperFoldFrame.tsx +576 -0
- package/src/motion/paperfold/PaperFoldPlayer.tsx +80 -0
- package/src/motion/paperfold/art.ts +455 -0
- package/src/motion/paperfold/config.ts +98 -0
- package/src/motion/paperfold/controls.ts +557 -0
- package/src/motion/paperfold/engine.ts +852 -0
- package/src/motion/paperfold/fonts.ts +21 -0
- package/src/motion/paperfold/index.ts +30 -0
- package/src/motion/paperfold/manipulate.ts +188 -0
- package/src/motion/paperfold/presets.ts +117 -0
- package/src/motion/paperfold/template.ts +38 -0
- package/src/motion/player.ts +207 -0
- package/src/motion/promo/PromoFrame.tsx +501 -0
- package/src/motion/promo/PromoShowcasePlayer.tsx +78 -0
- package/src/motion/promo/config.ts +479 -0
- package/src/motion/promo/controls.ts +643 -0
- package/src/motion/promo/easing.ts +36 -0
- package/src/motion/promo/engine.ts +587 -0
- package/src/motion/promo/fonts.ts +16 -0
- package/src/motion/promo/icons.tsx +29 -0
- package/src/motion/promo/index.ts +24 -0
- package/src/motion/promo/presets.ts +40 -0
- package/src/motion/promo/template.ts +36 -0
- package/src/motion/replication2/Replication2Player.tsx +115 -0
- package/src/motion/replication2/config.ts +323 -0
- package/src/motion/replication2/controls.ts +336 -0
- package/src/motion/replication2/driver.ts +92 -0
- package/src/motion/replication2/easing.ts +88 -0
- package/src/motion/replication2/engine.ts +539 -0
- package/src/motion/replication2/html.ts +87 -0
- package/src/motion/replication2/index.ts +14 -0
- package/src/motion/replication2/measure.ts +28 -0
- package/src/motion/replication2/metrics.ts +7 -0
- package/src/motion/replication2/presets.ts +63 -0
- package/src/motion/replication2/riv.ts +4 -0
- package/src/motion/replication2/rive-contract.ts +165 -0
- package/src/motion/replication2/template.ts +33 -0
- package/src/motion/sample.ts +173 -0
- package/src/motion/templates/hey-template.ts +1553 -0
- package/src/motion/templates/index.ts +17 -0
- package/src/motion/templates/word-motion.ts +1166 -0
- package/src/motion/types.ts +162 -0
- package/src/motion/typesurface/TypeSurfaceCanvas.tsx +73 -0
- package/src/motion/typesurface/art.ts +639 -0
- package/src/motion/typesurface/config.ts +486 -0
- package/src/motion/typesurface/engine.ts +586 -0
- package/src/motion/typesurface/fonts.ts +63 -0
- package/src/motion/typesurface/index.ts +16 -0
- package/src/motion/typesurface/layout.ts +133 -0
- package/src/motion/typesurface/ops.ts +196 -0
- package/src/motion/typesurface/presets.ts +199 -0
- package/src/motion/typesurface/renderer.ts +579 -0
- package/src/motion/typesurface/shaders.ts +303 -0
- package/src/motion/typesurface/surfaces.ts +223 -0
- package/src/motion/typesurface/text.ts +35 -0
- package/src/motion/typesurface/timeline.ts +58 -0
- package/src/motion/validate.ts +101 -0
- package/src/native/RiveReceiptStage.tsx +8 -155
- package/src/native/riveReceiptStageFactory.tsx +175 -0
- package/src/tokens/stage.ts +6 -0
- package/tools/ask/dist/components.mjs +6887 -46
- package/tools/ask/mcp.mjs +80 -1
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/* eslint-disable comppack/no-raw-colour -- the defaults are content: colours measured from the reference GIF, which people and agents replace (DECISIONS §25). */
|
|
2
|
+
/**
|
|
3
|
+
* **Replication 2 — the control table.** Every editable value of the animation, once: its path,
|
|
4
|
+
* type, range or options, default, description, and who may edit it. The JSON Schema, the validator,
|
|
5
|
+
* the defaults, the Remotion Studio schema, the site's editor and `REPLICATION_2_CONFIG_SCHEMA.md` are
|
|
6
|
+
* all generated from this list, so a person and an agent always see the same contract.
|
|
7
|
+
*
|
|
8
|
+
* Units:
|
|
9
|
+
* - `frames` — motion frames at the canonical 60 fps, whatever `canvas.fps` the output samples at.
|
|
10
|
+
* - `du` — design units: 1/1080 of the canvas's short side (so 1920 × 1080 on a 16:9 canvas).
|
|
11
|
+
* - `em` — multiples of the current font size; the element scales with the text it belongs to.
|
|
12
|
+
* - `normalized` — 0‥1 across the canvas (x across its width, y down its height).
|
|
13
|
+
*
|
|
14
|
+
* Defaults are the `reference` preset: measured from replication2.gif (see
|
|
15
|
+
* replication-2-prototype/REPLICATION_2_ANALYSIS.md). Where the reference cannot establish a value
|
|
16
|
+
* (an effect it never shows), the default switches the effect off rather than inventing one.
|
|
17
|
+
*/
|
|
18
|
+
export const EASING_NAMES = [
|
|
19
|
+
'linear', 'hold',
|
|
20
|
+
'easeInQuad', 'easeOutQuad', 'easeInOutQuad',
|
|
21
|
+
'easeInCubic', 'easeOutCubic', 'easeInOutCubic',
|
|
22
|
+
'easeInQuart', 'easeOutQuart', 'easeInOutQuart',
|
|
23
|
+
'easeInExpo', 'easeOutExpo', 'easeInOutExpo',
|
|
24
|
+
'easeOutBack',
|
|
25
|
+
] as const;
|
|
26
|
+
export type EasingName = (typeof EASING_NAMES)[number];
|
|
27
|
+
export type CubicBezierEasing = { type: 'cubicBezier'; x1: number; y1: number; x2: number; y2: number };
|
|
28
|
+
export type SpringEasing = { type: 'spring'; mass: number; damping: number; stiffness: number; velocity: number };
|
|
29
|
+
/** A named curve, or a custom one. Never a function. */
|
|
30
|
+
export type EasingValue = EasingName | CubicBezierEasing | SpringEasing;
|
|
31
|
+
|
|
32
|
+
export const ASPECT_RATIOS = ['16:9', '9:16', '1:1'] as const;
|
|
33
|
+
export type AspectRatio = (typeof ASPECT_RATIOS)[number];
|
|
34
|
+
export const FPS_OPTIONS = [24, 25, 30, 48, 50, 60] as const;
|
|
35
|
+
/** Fonts embedded in the Rive file. A family not listed here cannot be drawn, so it cannot be chosen. */
|
|
36
|
+
export const FONT_FAMILIES = ['Inter'] as const;
|
|
37
|
+
export const ANCHORS = ['center', 'topCenter', 'bottomCenter', 'centerLeft', 'centerRight'] as const;
|
|
38
|
+
export const DISTORTION_MODES = ['none', 'wave', 'stretch', 'rotate', 'scramble', 'warp', 'verticalMorph', 'horizontalMorph'] as const;
|
|
39
|
+
export type DistortionMode = (typeof DISTORTION_MODES)[number];
|
|
40
|
+
export const REVEAL_MODES = ['type', 'centerOut', 'leftToRight', 'rightToLeft'] as const;
|
|
41
|
+
export const SCENE_IDS = ['cursor', 'what', 'line', 'collapse', 'aiAgent', 'developers'] as const;
|
|
42
|
+
export type SceneId = (typeof SCENE_IDS)[number];
|
|
43
|
+
|
|
44
|
+
export const GROUPS = [
|
|
45
|
+
'canvas', 'background', 'typography', 'text', 'characters', 'cursor', 'brackets', 'brace',
|
|
46
|
+
'distortion', 'glow', 'motion', 'scenes', 'export',
|
|
47
|
+
] as const;
|
|
48
|
+
export type Group = (typeof GROUPS)[number];
|
|
49
|
+
|
|
50
|
+
export type ControlType = 'number' | 'integer' | 'boolean' | 'color' | 'enum' | 'text' | 'easing';
|
|
51
|
+
|
|
52
|
+
export type Control = {
|
|
53
|
+
/** Dotted path into the config, e.g. `scenes.what.durationFrames`. */
|
|
54
|
+
path: string;
|
|
55
|
+
group: Group;
|
|
56
|
+
type: ControlType;
|
|
57
|
+
default: string | number | boolean | EasingValue;
|
|
58
|
+
min?: number;
|
|
59
|
+
max?: number;
|
|
60
|
+
step?: number;
|
|
61
|
+
/** `enum`: the allowed values. */
|
|
62
|
+
options?: readonly (string | number)[];
|
|
63
|
+
/** `text`: limits. Text is a single line of printable characters. */
|
|
64
|
+
maxLength?: number;
|
|
65
|
+
minLength?: number;
|
|
66
|
+
unit?: 'frames' | 'du' | 'em' | 'normalized' | 'deg' | 'px' | 'cps' | 'factor' | 'weight' | 'fraction';
|
|
67
|
+
description: string;
|
|
68
|
+
userEditable: boolean;
|
|
69
|
+
agentEditable: boolean;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
type Opts = Partial<Pick<Control, 'step' | 'unit' | 'userEditable' | 'agentEditable' | 'minLength'>>;
|
|
73
|
+
const base = (o: Opts = {}) => ({ userEditable: o.userEditable ?? true, agentEditable: o.agentEditable ?? true, ...(o.unit ? { unit: o.unit } : {}), ...(o.step !== undefined ? { step: o.step } : {}) });
|
|
74
|
+
const group = (path: string) => path.split('.')[0] as Group;
|
|
75
|
+
const num = (path: string, def: number, min: number, max: number, description: string, o: Opts = {}): Control => ({ path, group: group(path), type: 'number', default: def, min, max, description, ...base(o) });
|
|
76
|
+
const int = (path: string, def: number, min: number, max: number, description: string, o: Opts = {}): Control => ({ path, group: group(path), type: 'integer', default: def, min, max, description, ...base({ step: 1, ...o }) });
|
|
77
|
+
const frames = (path: string, def: number, max: number, description: string, min = 0): Control => int(path, def, min, max, description, { unit: 'frames' });
|
|
78
|
+
const bool = (path: string, def: boolean, description: string, o: Opts = {}): Control => ({ path, group: group(path), type: 'boolean', default: def, description, ...base(o) });
|
|
79
|
+
const color = (path: string, def: string, description: string, o: Opts = {}): Control => ({ path, group: group(path), type: 'color', default: def, description, ...base(o) });
|
|
80
|
+
const choice = (path: string, def: string | number, options: readonly (string | number)[], description: string, o: Opts = {}): Control => ({ path, group: group(path), type: 'enum', default: def, options, description, ...base(o) });
|
|
81
|
+
const text = (path: string, def: string, maxLength: number, description: string, o: Opts = {}): Control => ({ path, group: group(path), type: 'text', default: def, maxLength, minLength: o.minLength ?? 0, description, ...base(o) });
|
|
82
|
+
const easing = (path: string, def: EasingValue, description: string): Control => ({ path, group: group(path), type: 'easing', default: def, description, ...base() });
|
|
83
|
+
const opacity = (path: string, def: number, description: string) => num(path, def, 0, 1, description, { step: 0.01, unit: 'fraction' });
|
|
84
|
+
|
|
85
|
+
export const CONTROLS: readonly Control[] = [
|
|
86
|
+
/* ─── canvas ─────────────────────────────────────────────────────────────────────────────── */
|
|
87
|
+
choice('canvas.aspectRatio', '16:9', ASPECT_RATIOS, 'Canvas shape. Layouts recompose for each shape (normalized positions, safe area, fit width); nothing is stretched or rotated.'),
|
|
88
|
+
int('canvas.width', 3840, 256, 7680, 'Output width in pixels. Must match the aspect ratio (±1%).', { unit: 'px' }),
|
|
89
|
+
int('canvas.height', 2160, 256, 7680, 'Output height in pixels. Must match the aspect ratio (±1%).', { unit: 'px' }),
|
|
90
|
+
choice('canvas.fps', 60, FPS_OPTIONS, 'Output frame rate. Timing is authored in 60 fps motion frames; a lower rate samples the same motion, it does not slow it down.'),
|
|
91
|
+
int('canvas.seed', 20260929, 0, 2147483647, 'Seed for every random choice (placeholder glyphs, streak positions). The same config and seed always render the same frames.'),
|
|
92
|
+
num('canvas.safeArea', 0.05, 0, 0.3, 'Inset on every side, as a fraction of the canvas, that text and frames keep clear of.', { step: 0.01, unit: 'fraction' }),
|
|
93
|
+
choice('canvas.timingMode', 'speed', ['speed', 'totalFrames'], 'Which value sets the overall length. speed: playbackSpeed is set and the total frames follow from it. totalFrames: totalFrames is set and the speed follows from it. Either way every scene, hold and transition scales together.'),
|
|
94
|
+
num('canvas.playbackSpeed', 0.6, 0.25, 4, 'Overall speed (timingMode speed): every scene, hold and transition together. 1 is the reference GIF\'s own speed (5.43 s); the default 0.6 plays it slower (9.07 s); 2 plays it in half the time.', { step: 0.05, unit: 'factor' }),
|
|
95
|
+
int('canvas.totalFrames', 544, 24, 36000, 'Overall length in output frames at canvas.fps, for one play-through (timingMode totalFrames). More frames = slower, fewer = faster; the speed this implies must stay within 0.25–4.', { unit: 'frames' }),
|
|
96
|
+
bool('canvas.loop', false, 'Play again from the start after the last frame (live players; a video repeats the timeline loopCount times).'),
|
|
97
|
+
int('canvas.loopCount', 1, 1, 100, 'How many times the timeline plays in a rendered video when loop is on.'),
|
|
98
|
+
|
|
99
|
+
/* ─── background ─────────────────────────────────────────────────────────────────────────── */
|
|
100
|
+
color('background.dark.color', '#020415', 'Base colour of the dark scenes (cursor → AI Agent?).'),
|
|
101
|
+
color('background.light.color', '#ffffff', 'Base colour of the light scene (the brace mark).'),
|
|
102
|
+
bool('background.gradient.enabled', false, 'Lay a linear gradient over the dark base. Off in the reference.'),
|
|
103
|
+
num('background.gradient.angle', 180, 0, 360, 'Gradient direction in degrees (0 = upwards, 90 = to the right).', { unit: 'deg' }),
|
|
104
|
+
color('background.gradient.from', '#020415', 'Gradient start colour.'),
|
|
105
|
+
color('background.gradient.to', '#0a1040', 'Gradient end colour.'),
|
|
106
|
+
opacity('background.gradient.opacity', 1, 'Gradient opacity over the base.'),
|
|
107
|
+
bool('background.topGlow.enabled', true, 'The dim radial glow at the top of the dark scenes.'),
|
|
108
|
+
color('background.topGlow.color', '#080c3b', 'Top glow core colour (fades to transparent).'),
|
|
109
|
+
num('background.topGlow.x', 0.5, -0.5, 1.5, 'Top glow centre, across the canvas.', { step: 0.01, unit: 'normalized' }),
|
|
110
|
+
num('background.topGlow.y', 0, -0.5, 1.5, 'Top glow centre, down the canvas.', { step: 0.01, unit: 'normalized' }),
|
|
111
|
+
num('background.topGlow.radiusX', 0.55, 0, 2, 'Top glow horizontal radius, as a fraction of the canvas width.', { step: 0.01, unit: 'normalized' }),
|
|
112
|
+
num('background.topGlow.radiusY', 0.5, 0, 2, 'Top glow vertical radius, as a fraction of the canvas height.', { step: 0.01, unit: 'normalized' }),
|
|
113
|
+
opacity('background.topGlow.intensity', 1, 'Top glow strength.'),
|
|
114
|
+
bool('background.bottomGlow.enabled', true, 'The blue radial glow that rises from the bottom edge during the sentence.'),
|
|
115
|
+
color('background.bottomGlow.color', '#09135b', 'Bottom glow core colour (fades to transparent).'),
|
|
116
|
+
num('background.bottomGlow.x', 0.5, -0.5, 1.5, 'Bottom glow centre, across the canvas.', { step: 0.01, unit: 'normalized' }),
|
|
117
|
+
num('background.bottomGlow.y', 1, -0.5, 1.5, 'Bottom glow centre, down the canvas.', { step: 0.01, unit: 'normalized' }),
|
|
118
|
+
num('background.bottomGlow.radiusX', 0.55, 0, 2, 'Bottom glow horizontal radius, as a fraction of the canvas width.', { step: 0.01, unit: 'normalized' }),
|
|
119
|
+
num('background.bottomGlow.radiusY', 0.6, 0, 2, 'Bottom glow vertical radius, as a fraction of the canvas height.', { step: 0.01, unit: 'normalized' }),
|
|
120
|
+
opacity('background.bottomGlow.intensity', 1, 'Bottom glow strength.'),
|
|
121
|
+
opacity('background.vignette.intensity', 0, 'Darkening towards the corners of the dark scenes. Off in the reference.'),
|
|
122
|
+
color('background.vignette.color', '#000000', 'Vignette colour.'),
|
|
123
|
+
bool('background.streaks.enabled', true, 'Faint vertical streaks in the left and right bands of the dark scenes (from the collapse on).'),
|
|
124
|
+
int('background.streaks.count', 8, 0, 12, 'Number of streaks (split between the two bands).'),
|
|
125
|
+
color('background.streaks.color', '#000000', 'Streak colour.'),
|
|
126
|
+
opacity('background.streaks.opacity', 0.18, 'Streak opacity.'),
|
|
127
|
+
num('background.streaks.width', 14, 1, 120, 'Streak width.', { unit: 'du' }),
|
|
128
|
+
num('background.streaks.band', 0.2, 0, 0.5, 'Width of each edge band the streaks are scattered in, as a fraction of the canvas width.', { step: 0.01, unit: 'normalized' }),
|
|
129
|
+
choice('background.streaks.fromScene', 'collapse', SCENE_IDS, 'The first scene the streaks show in (they stay until the light scene).'),
|
|
130
|
+
|
|
131
|
+
/* ─── typography ─────────────────────────────────────────────────────────────────────────── */
|
|
132
|
+
choice('typography.fontFamily', 'Inter', FONT_FAMILIES, 'Typeface. Inter (OFL) is the closest registered match to the reference; the reference font itself cannot be established from a 414-pixel GIF.'),
|
|
133
|
+
num('typography.sizeScale', 1, 0.2, 4, 'Multiplies every scene\'s font size.', { step: 0.05, unit: 'factor' }),
|
|
134
|
+
choice('typography.textTransform', 'none', ['none', 'uppercase', 'lowercase'], 'Case applied to all copy.'),
|
|
135
|
+
num('typography.lineHeight', 1.2, 0.8, 2, 'Line box height in em (vertical centring of the single line).', { step: 0.05, unit: 'em' }),
|
|
136
|
+
color('typography.color.dark', '#fefefe', 'Text colour in the dark scenes.'),
|
|
137
|
+
color('typography.color.light', '#000000', 'Text colour in the light scene.'),
|
|
138
|
+
opacity('typography.opacity', 1, 'Opacity of all text.'),
|
|
139
|
+
|
|
140
|
+
/* ─── text (the copy) ────────────────────────────────────────────────────────────────────── */
|
|
141
|
+
text('text.what', 'What', 40, 'The first word, typed on its own after the cursor.', { minLength: 1 }),
|
|
142
|
+
text('text.line', 'does it take to build an', 80, 'Typed after the first word, on the same line. Empty ends the sentence at the first word.'),
|
|
143
|
+
text('text.aiAgent', 'AI Agent?', 40, 'The display line that tracks in after the collapse.', { minLength: 1 }),
|
|
144
|
+
text('text.final1', 'Developers', 30, 'First word inside the braces, typed.', { minLength: 1 }),
|
|
145
|
+
text('text.final2', 'Delays', 30, 'Second word, added inside the braces. Empty skips it.'),
|
|
146
|
+
text('text.final3', 'Documentation', 30, 'Third word, added inside the braces. Empty skips it.'),
|
|
147
|
+
text('text.ariaLabel', '', 200, 'Accessible description. Empty means it is built from the copy.'),
|
|
148
|
+
|
|
149
|
+
/* ─── characters (typing, placeholders, per-glyph entry) ─────────────────────────────────── */
|
|
150
|
+
bool('characters.scramble.enabled', true, 'Show a placeholder glyph at the typing head before each character resolves.'),
|
|
151
|
+
text('characters.scramble.glyphs', '#<@%*!>', 32, 'Placeholder glyphs, picked with the seed. Printable ASCII, no spaces.', { minLength: 1 }),
|
|
152
|
+
frames('characters.scramble.leadFrames', 3, 24, 'How long a placeholder shows before its character resolves.'),
|
|
153
|
+
frames('characters.scramble.changeEveryFrames', 2, 24, 'A placeholder shown longer than this changes glyph this often.', 1),
|
|
154
|
+
opacity('characters.scramble.opacity', 0.8, 'Placeholder opacity (the reference\'s placeholder is blurred; see known differences).'),
|
|
155
|
+
num('characters.enter.offsetY', 0, -2, 2, 'Where a newly typed glyph starts, vertically, in em (0 = in place).', { step: 0.01, unit: 'em' }),
|
|
156
|
+
num('characters.enter.offsetX', 0, -2, 2, 'Where a newly typed glyph starts, horizontally, in em.', { step: 0.01, unit: 'em' }),
|
|
157
|
+
num('characters.enter.scale', 1, 0, 4, 'Scale of a newly typed glyph as it appears.', { step: 0.01, unit: 'factor' }),
|
|
158
|
+
num('characters.enter.rotation', 0, -180, 180, 'Rotation of a newly typed glyph as it appears.', { unit: 'deg' }),
|
|
159
|
+
opacity('characters.enter.opacity', 1, 'Opacity of a newly typed glyph as it appears.'),
|
|
160
|
+
frames('characters.enter.durationFrames', 0, 60, 'How long a newly typed glyph takes to settle from the values above. 0 = it appears settled (the reference).'),
|
|
161
|
+
easing('characters.enter.easing', 'easeOutCubic', 'How a newly typed glyph settles.'),
|
|
162
|
+
|
|
163
|
+
/* ─── cursor ─────────────────────────────────────────────────────────────────────────────── */
|
|
164
|
+
bool('cursor.enabled', true, 'Show the typing cursor.'),
|
|
165
|
+
choice('cursor.dark.style', 'hollow', ['hollow', 'solid'], 'Cursor style in the dark scenes (outlined, as in the reference, or filled).'),
|
|
166
|
+
num('cursor.dark.width', 0.105, 0.005, 1, 'Dark cursor width.', { step: 0.005, unit: 'em' }),
|
|
167
|
+
num('cursor.dark.height', 1.1, 0.1, 4, 'Dark cursor height.', { step: 0.01, unit: 'em' }),
|
|
168
|
+
num('cursor.dark.strokeWidth', 0.016, 0.001, 0.2, 'Outline width of the hollow cursor.', { step: 0.001, unit: 'em' }),
|
|
169
|
+
num('cursor.dark.cornerRadius', 0.03, 0, 0.5, 'Corner radius of the dark cursor.', { step: 0.005, unit: 'em' }),
|
|
170
|
+
color('cursor.dark.color', '#99a2cb', 'Dark cursor colour.'),
|
|
171
|
+
choice('cursor.light.style', 'solid', ['hollow', 'solid'], 'Cursor style in the light scene.'),
|
|
172
|
+
num('cursor.light.width', 0.062, 0.005, 1, 'Light cursor width.', { step: 0.005, unit: 'em' }),
|
|
173
|
+
num('cursor.light.height', 1.23, 0.1, 4, 'Light cursor height.', { step: 0.01, unit: 'em' }),
|
|
174
|
+
color('cursor.light.color', '#000000', 'Light cursor colour.'),
|
|
175
|
+
num('cursor.gap', 0.1, 0, 2, 'Space between the end of the text and the cursor.', { step: 0.01, unit: 'em' }),
|
|
176
|
+
opacity('cursor.opacity', 1, 'Cursor opacity.'),
|
|
177
|
+
bool('cursor.glow.enabled', false, 'A soft glow around the cursor. Off in the reference (its glow is the text head glow).'),
|
|
178
|
+
color('cursor.glow.color', '#3f57a8', 'Cursor glow colour.'),
|
|
179
|
+
num('cursor.glow.radius', 0.6, 0, 4, 'Cursor glow radius.', { step: 0.05, unit: 'em' }),
|
|
180
|
+
opacity('cursor.glow.intensity', 0.5, 'Cursor glow strength.'),
|
|
181
|
+
bool('cursor.blink.enabled', false, 'Blink the cursor while it waits. The reference never blinks.'),
|
|
182
|
+
frames('cursor.blink.periodFrames', 60, 240, 'One blink cycle (on then off).', 2),
|
|
183
|
+
bool('cursor.hideOnComplete', true, 'Hide the cursor once the sentence is fully typed.'),
|
|
184
|
+
|
|
185
|
+
/* ─── brackets [ ] ───────────────────────────────────────────────────────────────────────── */
|
|
186
|
+
bool('brackets.enabled', true, 'Frame the sentence with square brackets.'),
|
|
187
|
+
color('brackets.color', '#8b8db9', 'Bracket colour.'),
|
|
188
|
+
opacity('brackets.opacity', 1, 'Bracket opacity.'),
|
|
189
|
+
num('brackets.thickness', 0.28, 0.01, 1, 'Stroke thickness.', { step: 0.01, unit: 'em' }),
|
|
190
|
+
num('brackets.height', 5, 0.5, 20, 'Bracket height.', { step: 0.05, unit: 'em' }),
|
|
191
|
+
num('brackets.serifLength', 0.45, 0, 3, 'Length of the short horizontal ends.', { step: 0.01, unit: 'em' }),
|
|
192
|
+
num('brackets.padding', 1.7, 0, 10, 'Gap between the text and each bracket.', { step: 0.01, unit: 'em' }),
|
|
193
|
+
choice('brackets.enter.mode', 'slide', ['slide', 'draw', 'fade'], 'How the brackets arrive: slide in from the edges (reference), draw their stroke, or fade.'),
|
|
194
|
+
num('brackets.enter.distance', 0.12, 0, 2, 'How far the brackets slide from, as a fraction of the canvas width.', { step: 0.01, unit: 'normalized' }),
|
|
195
|
+
frames('brackets.enter.durationFrames', 14, 240, 'How long each bracket takes to arrive.', 1),
|
|
196
|
+
frames('brackets.enter.staggerFrames', 6, 120, 'The right bracket starts this long after the left.'),
|
|
197
|
+
easing('brackets.enter.easing', 'easeOutQuad', 'How the brackets arrive.'),
|
|
198
|
+
bool('brackets.glow.enabled', false, 'A soft glow behind each bracket. Off in the reference.'),
|
|
199
|
+
color('brackets.glow.color', '#3f57a8', 'Bracket glow colour.'),
|
|
200
|
+
opacity('brackets.glow.intensity', 0.5, 'Bracket glow strength.'),
|
|
201
|
+
num('brackets.glow.radius', 1.2, 0, 6, 'Bracket glow radius.', { step: 0.05, unit: 'em' }),
|
|
202
|
+
|
|
203
|
+
/* ─── brace { } ──────────────────────────────────────────────────────────────────────────── */
|
|
204
|
+
bool('brace.enabled', true, 'Wrap the final words in curly braces.'),
|
|
205
|
+
color('brace.color', '#0b5bf8', 'Brace colour.'),
|
|
206
|
+
opacity('brace.opacity', 1, 'Brace opacity.'),
|
|
207
|
+
num('brace.size', 1.9, 0.5, 5, 'Brace glyph size, relative to the text.', { step: 0.05, unit: 'factor' }),
|
|
208
|
+
num('brace.weight', 450, 100, 900, 'Brace glyph weight (estimated from the reference\'s stroke thickness).', { step: 10, unit: 'weight' }),
|
|
209
|
+
num('brace.padding', 0.1, 0, 4, 'Gap between the text and each brace.', { step: 0.01, unit: 'em' }),
|
|
210
|
+
num('brace.offsetY', 0, -1, 1, 'Vertical offset of the braces from the text centre.', { step: 0.01, unit: 'em' }),
|
|
211
|
+
frames('brace.closingDelayFrames', 4, 120, 'The closing brace appears this long after typing starts, then rides after the typing head.'),
|
|
212
|
+
frames('brace.gapFrames', 8, 60, 'When a word is added, how long the closing brace takes to open the gap.', 1),
|
|
213
|
+
easing('brace.gapEasing', 'easeOutCubic', 'How the closing brace opens the gap.'),
|
|
214
|
+
bool('brace.glow.enabled', false, 'A soft glow behind each brace. Off in the reference.'),
|
|
215
|
+
color('brace.glow.color', '#0b5bf8', 'Brace glow colour.'),
|
|
216
|
+
opacity('brace.glow.intensity', 0.3, 'Brace glow strength.'),
|
|
217
|
+
num('brace.glow.radius', 1, 0, 6, 'Brace glow radius.', { step: 0.05, unit: 'em' }),
|
|
218
|
+
|
|
219
|
+
/* ─── distortion (a registry of per-glyph modes; never code) ─────────────────────────────── */
|
|
220
|
+
choice('distortion.mode', 'scramble', DISTORTION_MODES, 'Per-glyph distortion. "scramble" is the reference: placeholder glyphs at the typing head (see characters.scramble). The others move a band of glyphs along the line.'),
|
|
221
|
+
opacity('distortion.amount', 1, 'Strength of the distortion.'),
|
|
222
|
+
num('distortion.frequency', 1, 0.1, 10, 'Bands per line: higher is a tighter band.', { step: 0.1, unit: 'factor' }),
|
|
223
|
+
num('distortion.speed', 1, -5, 5, 'Lines per second the band travels (negative runs right to left).', { step: 0.1, unit: 'factor' }),
|
|
224
|
+
num('distortion.phase', 0, 0, 1, 'Starting position of the band along the line.', { step: 0.01, unit: 'fraction' }),
|
|
225
|
+
num('distortion.displacement', 0.25, -2, 2, 'Vertical displacement at full strength (wave, warp).', { step: 0.01, unit: 'em' }),
|
|
226
|
+
num('distortion.rotation', 12, -90, 90, 'Rotation at full strength (rotate, warp).', { unit: 'deg' }),
|
|
227
|
+
num('distortion.scaleX', 1.4, 0.1, 4, 'Horizontal scale at full strength (stretch, horizontalMorph).', { step: 0.05, unit: 'factor' }),
|
|
228
|
+
num('distortion.scaleY', 1.4, 0.1, 4, 'Vertical scale at full strength (stretch, verticalMorph).', { step: 0.05, unit: 'factor' }),
|
|
229
|
+
opacity('distortion.opacity', 1, 'Glyph opacity at full strength.'),
|
|
230
|
+
bool('distortion.whileTypingOnly', true, 'Apply only while a line is being typed or tracked in.'),
|
|
231
|
+
|
|
232
|
+
/* ─── glow (the light on the typing head) ────────────────────────────────────────────────── */
|
|
233
|
+
bool('glow.enabled', true, 'The blue radial light that sits on the typing head.'),
|
|
234
|
+
color('glow.color', '#5a80c9', 'Head glow core colour (fades to transparent).'),
|
|
235
|
+
opacity('glow.intensity', 1, 'Head glow strength at rest.'),
|
|
236
|
+
num('glow.radiusX', 1.6, 0, 6, 'Head glow horizontal radius.', { step: 0.01, unit: 'em' }),
|
|
237
|
+
num('glow.radiusY', 0.95, 0, 6, 'Head glow vertical radius.', { step: 0.01, unit: 'em' }),
|
|
238
|
+
num('glow.falloff', 0.5, 0.05, 0.95, 'Where the glow is half strength, from centre (0) to edge (1).', { step: 0.01, unit: 'fraction' }),
|
|
239
|
+
num('glow.offsetX', -0.8, -4, 4, 'Glow centre relative to the typing head.', { step: 0.01, unit: 'em' }),
|
|
240
|
+
num('glow.offsetY', 0, -4, 4, 'Glow centre relative to the line centre.', { step: 0.01, unit: 'em' }),
|
|
241
|
+
frames('glow.fadeOutFrames', 40, 240, 'How long the glow takes to fade once typing pauses.'),
|
|
242
|
+
choice('glow.blendMode', 'screen', ['normal', 'screen', 'additive'], 'How the glow mixes with what is under it.'),
|
|
243
|
+
|
|
244
|
+
/* ─── motion (layout and camera) ─────────────────────────────────────────────────────────── */
|
|
245
|
+
bool('motion.reducedMotion', false, 'Reduced motion: no typing, zoom, distortion or placeholders — each scene shows resolved, and a live player can jump straight to the final mark.'),
|
|
246
|
+
choice('motion.anchor', 'center', ANCHORS, 'Which point of the text group sits on motion.position.'),
|
|
247
|
+
num('motion.position.x', 0.5, 0, 1, 'Where the text group sits, across the safe area.', { step: 0.01, unit: 'normalized' }),
|
|
248
|
+
num('motion.position.y', 0.5, 0, 1, 'Where the text group sits, down the safe area.', { step: 0.01, unit: 'normalized' }),
|
|
249
|
+
num('motion.rotation', 0, -180, 180, 'Rotation of the whole text group.', { unit: 'deg' }),
|
|
250
|
+
num('motion.scale', 1, 0.1, 4, 'Scale of the whole text group.', { step: 0.01, unit: 'factor' }),
|
|
251
|
+
bool('motion.zoom.enabled', true, 'Zoom out as a line grows so it keeps within the fit width.'),
|
|
252
|
+
num('motion.zoom.fitWidth', 0.8, 0.1, 1, 'The widest a line may get, as a fraction of the safe area\'s width.', { step: 0.01, unit: 'fraction' }),
|
|
253
|
+
choice('motion.zoom.mode', 'anticipate', ['fit', 'anticipate'], 'fit: zoom out only as far as the text so far needs. anticipate: ease towards the finished line\'s zoom while typing (the reference), never less zoomed than fit.'),
|
|
254
|
+
frames('motion.zoom.smoothingFrames', 6, 60, 'How far the zoom trails the text (0 = exact).'),
|
|
255
|
+
num('motion.zoom.minScale', 0.05, 0.01, 1, 'Never zoom out further than this.', { step: 0.01, unit: 'factor' }),
|
|
256
|
+
easing('motion.driftEasing', 'linear', 'How the slow drifts in every hold move.'),
|
|
257
|
+
|
|
258
|
+
/* ─── scenes (timing and per-scene look) ─────────────────────────────────────────────────── */
|
|
259
|
+
frames('scenes.cursor.durationFrames', 20, 600, 'Cursor scene length.', 1),
|
|
260
|
+
num('scenes.cursor.fromScale', 2.45, 0, 20, 'Cursor scale at the start; it settles to 1.', { step: 0.05, unit: 'factor' }),
|
|
261
|
+
frames('scenes.cursor.introFrames', 18, 600, 'How long the cursor takes to settle.', 1),
|
|
262
|
+
easing('scenes.cursor.easing', 'easeOutQuart', 'How the cursor settles.'),
|
|
263
|
+
|
|
264
|
+
frames('scenes.what.durationFrames', 32, 600, 'First-word scene length (typing plus hold).', 1),
|
|
265
|
+
num('scenes.what.fontSize', 323, 8, 1200, 'Font size of the first word (the line zooms out from this).', { unit: 'du' }),
|
|
266
|
+
num('scenes.what.fontWeight', 400, 100, 900, 'Font weight of the sentence.', { step: 10, unit: 'weight' }),
|
|
267
|
+
num('scenes.what.letterSpacing', 0.045, -0.2, 1, 'Letter spacing of the sentence.', { step: 0.005, unit: 'em' }),
|
|
268
|
+
num('scenes.what.cps', 17, 1, 240, 'Typing speed, characters per second.', { unit: 'cps' }),
|
|
269
|
+
num('scenes.what.driftScale', 0.9, 0.1, 2, 'Scale reached by the end of the hold (a slow zoom out).', { step: 0.01, unit: 'factor' }),
|
|
270
|
+
opacity('scenes.what.glowIntensity', 1, 'Head glow strength in this scene, multiplied by glow.intensity.'),
|
|
271
|
+
|
|
272
|
+
bool('scenes.line.enabled', true, 'Type the rest of the sentence. Off ends the sentence at the first word.'),
|
|
273
|
+
frames('scenes.line.durationFrames', 34, 600, 'Sentence scene length.', 1),
|
|
274
|
+
num('scenes.line.startCps', 66, 1, 240, 'Typing speed at the start of the line, characters per second.', { unit: 'cps' }),
|
|
275
|
+
num('scenes.line.endCps', 40, 1, 240, 'Typing speed by the end of the line (the reference slows as it finishes).', { unit: 'cps' }),
|
|
276
|
+
frames('scenes.line.zoomFrames', 34, 600, 'anticipate zoom: how long the zoom takes to reach the finished line\'s scale.', 1),
|
|
277
|
+
easing('scenes.line.zoomEasing', 'easeOutCubic', 'anticipate zoom: how it gets there.'),
|
|
278
|
+
frames('scenes.line.bracketsAtFrame', 14, 600, 'When the brackets start to arrive, from the scene start.'),
|
|
279
|
+
frames('scenes.line.backgroundGlowAtFrame', 8, 600, 'When the background glows start to rise, from the scene start.'),
|
|
280
|
+
frames('scenes.line.backgroundGlowFrames', 24, 600, 'How long the background glows take to rise.', 1),
|
|
281
|
+
opacity('scenes.line.glowIntensity', 0.5, 'Head glow strength in this scene, multiplied by glow.intensity.'),
|
|
282
|
+
|
|
283
|
+
bool('scenes.collapse.enabled', true, 'Collapse the framed sentence to a point. Off cuts straight to the next scene.'),
|
|
284
|
+
frames('scenes.collapse.durationFrames', 56, 600, 'Collapse scene length (hold plus collapse).', 1),
|
|
285
|
+
frames('scenes.collapse.holdFrames', 28, 600, 'How long the framed sentence holds before collapsing.'),
|
|
286
|
+
num('scenes.collapse.holdDriftScale', 0.875, 0.1, 2, 'Scale reached by the end of the hold.', { step: 0.005, unit: 'factor' }),
|
|
287
|
+
frames('scenes.collapse.collapseFrames', 26, 600, 'How long the collapse takes.', 1),
|
|
288
|
+
easing('scenes.collapse.easing', 'easeInCubic', 'How the sentence collapses.'),
|
|
289
|
+
num('scenes.collapse.toScale', 0, 0, 1, 'Scale the sentence collapses to.', { step: 0.01, unit: 'factor' }),
|
|
290
|
+
bool('scenes.collapse.fade', true, 'Fade out while collapsing.'),
|
|
291
|
+
|
|
292
|
+
bool('scenes.aiAgent.enabled', true, 'Show the display line.'),
|
|
293
|
+
frames('scenes.aiAgent.durationFrames', 84, 600, 'Display-line scene length (track-in plus drift).', 1),
|
|
294
|
+
num('scenes.aiAgent.fontSize', 167, 8, 1200, 'Font size of the display line once settled.', { unit: 'du' }),
|
|
295
|
+
num('scenes.aiAgent.fontWeight', 400, 100, 900, 'Font weight of the display line.', { step: 10, unit: 'weight' }),
|
|
296
|
+
num('scenes.aiAgent.letterSpacing', 0.03, -0.2, 1, 'Letter spacing once settled.', { step: 0.005, unit: 'em' }),
|
|
297
|
+
num('scenes.aiAgent.fromLetterSpacing', 0.25, -0.2, 2, 'Letter spacing it tracks in from.', { step: 0.005, unit: 'em' }),
|
|
298
|
+
num('scenes.aiAgent.fromScale', 1.64, 0.1, 10, 'Scale it tracks in from.', { step: 0.01, unit: 'factor' }),
|
|
299
|
+
frames('scenes.aiAgent.trackInFrames', 18, 600, 'How long the track-in takes.', 1),
|
|
300
|
+
easing('scenes.aiAgent.easing', 'easeOutCubic', 'How the track-in settles.'),
|
|
301
|
+
choice('scenes.aiAgent.revealMode', 'centerOut', REVEAL_MODES, 'Order the glyphs appear in during the track-in.'),
|
|
302
|
+
frames('scenes.aiAgent.revealFrames', 14, 600, 'How long the reveal takes.'),
|
|
303
|
+
easing('scenes.aiAgent.revealEasing', 'linear', 'How the reveal spreads.'),
|
|
304
|
+
num('scenes.aiAgent.revealSoftness', 0.2, 0, 1, 'Soft edge of the reveal: partially transparent glyphs at its edges.', { step: 0.01, unit: 'fraction' }),
|
|
305
|
+
num('scenes.aiAgent.driftScale', 0.6, 0.1, 2, 'Scale reached by the end of the scene.', { step: 0.01, unit: 'factor' }),
|
|
306
|
+
opacity('scenes.aiAgent.dimTo', 0.75, 'Opacity reached by the end of the scene.'),
|
|
307
|
+
color('scenes.aiAgent.gradientTop', '#e1e3e8', 'Top colour of the display line\'s vertical gradient.'),
|
|
308
|
+
color('scenes.aiAgent.gradientBottom', '#7179ab', 'Bottom colour of the display line\'s vertical gradient.'),
|
|
309
|
+
|
|
310
|
+
bool('scenes.developers.enabled', true, 'Show the light scene with the brace mark.'),
|
|
311
|
+
frames('scenes.developers.durationFrames', 100, 900, 'Light scene length.', 1),
|
|
312
|
+
num('scenes.developers.fontSize', 57, 8, 1200, 'Font size of the final words.', { unit: 'du' }),
|
|
313
|
+
num('scenes.developers.fontWeight', 400, 100, 900, 'Font weight of the final words.', { step: 10, unit: 'weight' }),
|
|
314
|
+
num('scenes.developers.letterSpacing', 0.045, -0.2, 1, 'Letter spacing of the final words.', { step: 0.005, unit: 'em' }),
|
|
315
|
+
num('scenes.developers.introFromScale', 8.1, 0.1, 20, 'Scale the brace mark settles from after the cut.', { step: 0.05, unit: 'factor' }),
|
|
316
|
+
frames('scenes.developers.introFrames', 24, 600, 'How long the brace mark takes to settle.', 1),
|
|
317
|
+
easing('scenes.developers.introEasing', 'easeOutCubic', 'How the brace mark settles.'),
|
|
318
|
+
frames('scenes.developers.typingAtFrame', 4, 600, 'When the first word starts typing, from the scene start.'),
|
|
319
|
+
num('scenes.developers.cps', 34, 1, 240, 'Typing speed of the first word, characters per second.', { unit: 'cps' }),
|
|
320
|
+
frames('scenes.developers.word2AtFrame', 38, 900, 'When the second word is added, from the scene start.'),
|
|
321
|
+
frames('scenes.developers.word3AtFrame', 62, 900, 'When the third word is added, from the scene start.'),
|
|
322
|
+
frames('scenes.developers.wordDelayFrames', 3, 60, 'An added word starts resolving this long after the brace starts opening its gap.'),
|
|
323
|
+
frames('scenes.developers.wordFadeFrames', 10, 120, 'How long an added word takes to resolve.', 1),
|
|
324
|
+
color('scenes.developers.wordFromColor', '#7c8fb3', 'Colour an added word resolves from.'),
|
|
325
|
+
num('scenes.developers.driftScale', 0.92, 0.1, 2, 'Scale reached by the end of the scene.', { step: 0.01, unit: 'factor' }),
|
|
326
|
+
|
|
327
|
+
/* ─── export (Remotion render settings) ──────────────────────────────────────────────────── */
|
|
328
|
+
choice('export.codec', 'h264', ['h264', 'h265', 'prores', 'vp9'], 'Video codec.'),
|
|
329
|
+
choice('export.pixelFormat', 'yuv420p', ['yuv420p', 'yuv422p10le', 'yuv444p', 'yuv444p10le'], 'Pixel format.'),
|
|
330
|
+
choice('export.colorSpace', 'bt709', ['default', 'bt709', 'bt2020-ncl'], 'Colour space.'),
|
|
331
|
+
int('export.crf', 12, 0, 51, 'Constant rate factor (lower is higher quality).'),
|
|
332
|
+
choice('export.x264Preset', 'slow', ['ultrafast', 'veryfast', 'fast', 'medium', 'slow', 'slower', 'veryslow'], 'x264 speed/size trade-off.'),
|
|
333
|
+
choice('export.imageFormat', 'png', ['png', 'jpeg'], 'Intermediate frame format (PNG keeps flat colour clean).'),
|
|
334
|
+
];
|
|
335
|
+
|
|
336
|
+
export const CONTROL_BY_PATH: ReadonlyMap<string, Control> = new Map(CONTROLS.map((c) => [c.path, c]));
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { RuntimeLoader } from '@rive-app/canvas';
|
|
2
|
+
import { REPLICATION_2_RIV } from './riv';
|
|
3
|
+
import { RIVE_ARTBOARD, RIVE_PROPS, RIVE_STATE_MACHINE, RIVE_VIEW_MODEL, type RiveValues } from './rive-contract';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* **The Rive driver** — draws one frame of the replication-2 Rive file onto a canvas, synchronously,
|
|
7
|
+
* from a set of view-model values. It owns no clock: the live player calls it from
|
|
8
|
+
* requestAnimationFrame, the Remotion adapter once per rendered frame. Built on the runtime's
|
|
9
|
+
* low-level API (Canvas2D renderer) because only that lets a frame be drawn on demand and in any
|
|
10
|
+
* order — which is what makes a Remotion render deterministic.
|
|
11
|
+
*/
|
|
12
|
+
export type Replication2Driver = {
|
|
13
|
+
/** Write the values that changed, settle the file, and draw. */
|
|
14
|
+
draw(values: RiveValues): void;
|
|
15
|
+
/** What the state machine last wrote to `status`. */
|
|
16
|
+
status(): string;
|
|
17
|
+
dispose(): void;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type DriverOptions = {
|
|
21
|
+
/** Where rive.wasm is served from. Defaults to the runtime's CDN. */
|
|
22
|
+
wasmUrl?: string;
|
|
23
|
+
/** The .riv bytes. Defaults to the file shipped in the package. */
|
|
24
|
+
riv?: Uint8Array;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
let decoded: Uint8Array | undefined;
|
|
28
|
+
function packagedRiv(): Uint8Array {
|
|
29
|
+
if (!decoded) {
|
|
30
|
+
const bin = atob(REPLICATION_2_RIV);
|
|
31
|
+
decoded = new Uint8Array(bin.length);
|
|
32
|
+
for (let i = 0; i < bin.length; i++) decoded[i] = bin.charCodeAt(i);
|
|
33
|
+
}
|
|
34
|
+
return decoded;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// The low-level runtime's types, derived (the package exports the classes, not their declarations).
|
|
38
|
+
type RiveCanvas = Awaited<ReturnType<typeof RuntimeLoader.awaitInstance>>;
|
|
39
|
+
type File = Awaited<ReturnType<RiveCanvas['load']>>;
|
|
40
|
+
type Artboard = ReturnType<File['artboardByName']>;
|
|
41
|
+
type StateMachineInstance = InstanceType<RiveCanvas['StateMachineInstance']>;
|
|
42
|
+
type ViewModelInstance = ReturnType<ReturnType<File['viewModelByName']>['defaultInstance']>;
|
|
43
|
+
type WrappedRenderer = ReturnType<RiveCanvas['makeRenderer']>;
|
|
44
|
+
|
|
45
|
+
const TYPES = new Map(RIVE_PROPS.map((p) => [p.name, p.type]));
|
|
46
|
+
|
|
47
|
+
export async function createReplication2Driver(canvas: HTMLCanvasElement, options: DriverOptions = {}): Promise<Replication2Driver> {
|
|
48
|
+
if (options.wasmUrl) RuntimeLoader.setWasmUrl(options.wasmUrl);
|
|
49
|
+
const rive: RiveCanvas = await RuntimeLoader.awaitInstance();
|
|
50
|
+
const file: File = await rive.load(options.riv ?? packagedRiv());
|
|
51
|
+
const artboard: Artboard = file.artboardByName(RIVE_ARTBOARD);
|
|
52
|
+
const machine: StateMachineInstance = new rive.StateMachineInstance(artboard.stateMachineByName(RIVE_STATE_MACHINE), artboard);
|
|
53
|
+
const vm: ViewModelInstance = file.viewModelByName(RIVE_VIEW_MODEL).defaultInstance();
|
|
54
|
+
machine.bindViewModelInstance(vm);
|
|
55
|
+
artboard.bindViewModelInstance(vm);
|
|
56
|
+
const renderer: WrappedRenderer = rive.makeRenderer(canvas);
|
|
57
|
+
const last = new Map<string, number | string>();
|
|
58
|
+
|
|
59
|
+
const write = (name: string, value: number | string) => {
|
|
60
|
+
if (last.get(name) === value) return;
|
|
61
|
+
last.set(name, value);
|
|
62
|
+
const type = TYPES.get(name);
|
|
63
|
+
if (type === 'Number') vm.number(name)!.value = value as number;
|
|
64
|
+
else if (type === 'String') vm.string(name)!.value = value as string;
|
|
65
|
+
else if (type === 'Color') vm.color(name)!.value = value as number;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
draw(values) {
|
|
70
|
+
for (const [k, v] of Object.entries(values)) write(k, v);
|
|
71
|
+
// Twice: the first pass lays the text out and writes its width back to the view model
|
|
72
|
+
// (lineWidth / finalWidth); the second moves what is attached to it (cursor, brackets, braces).
|
|
73
|
+
machine.advanceAndApply(0);
|
|
74
|
+
machine.advanceAndApply(0);
|
|
75
|
+
const w = Number(values.artW ?? artboard.width), h = Number(values.artH ?? artboard.height);
|
|
76
|
+
renderer.clear();
|
|
77
|
+
renderer.save();
|
|
78
|
+
renderer.align(rive.Fit.contain, rive.Alignment.center, { minX: 0, minY: 0, maxX: canvas.width, maxY: canvas.height }, { minX: 0, minY: 0, maxX: w, maxY: h });
|
|
79
|
+
artboard.draw(renderer);
|
|
80
|
+
renderer.restore();
|
|
81
|
+
renderer.flush();
|
|
82
|
+
rive.resolveAnimationFrame();
|
|
83
|
+
},
|
|
84
|
+
status: () => vm.string('status')?.value ?? '',
|
|
85
|
+
dispose() {
|
|
86
|
+
machine.delete();
|
|
87
|
+
artboard.delete();
|
|
88
|
+
renderer.delete();
|
|
89
|
+
file.unref?.();
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { EasingValue } from './controls';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* **The easing registry.** Every curve the config can name, plus the two parametric forms
|
|
5
|
+
* (cubicBezier, spring). A curve is data looked up here — never a function carried in the config.
|
|
6
|
+
*/
|
|
7
|
+
const pow = (k: number) => ({
|
|
8
|
+
in: (t: number) => t ** k,
|
|
9
|
+
out: (t: number) => 1 - (1 - t) ** k,
|
|
10
|
+
inOut: (t: number) => (t < 0.5 ? 2 ** (k - 1) * t ** k : 1 - (-2 * t + 2) ** k / 2),
|
|
11
|
+
});
|
|
12
|
+
const quad = pow(2), cubic = pow(3), quart = pow(4);
|
|
13
|
+
|
|
14
|
+
const NAMED: Record<string, (t: number) => number> = {
|
|
15
|
+
linear: (t) => t,
|
|
16
|
+
hold: (t) => (t >= 1 ? 1 : 0),
|
|
17
|
+
easeInQuad: quad.in, easeOutQuad: quad.out, easeInOutQuad: quad.inOut,
|
|
18
|
+
easeInCubic: cubic.in, easeOutCubic: cubic.out, easeInOutCubic: cubic.inOut,
|
|
19
|
+
easeInQuart: quart.in, easeOutQuart: quart.out, easeInOutQuart: quart.inOut,
|
|
20
|
+
easeInExpo: (t) => (t <= 0 ? 0 : 2 ** (10 * t - 10)),
|
|
21
|
+
easeOutExpo: (t) => (t >= 1 ? 1 : 1 - 2 ** (-10 * t)),
|
|
22
|
+
easeInOutExpo: (t) => (t <= 0 ? 0 : t >= 1 ? 1 : t < 0.5 ? 2 ** (20 * t - 10) / 2 : (2 - 2 ** (-20 * t + 10)) / 2),
|
|
23
|
+
easeOutBack: (t) => 1 + 2.70158 * (t - 1) ** 3 + 1.70158 * (t - 1) ** 2,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/** CSS-style cubic-bezier(x1, y1, x2, y2), solved for x by Newton's method with a bisection fallback. */
|
|
27
|
+
export function cubicBezier(x1: number, y1: number, x2: number, y2: number) {
|
|
28
|
+
const cx = 3 * x1, bx = 3 * (x2 - x1) - cx, ax = 1 - cx - bx;
|
|
29
|
+
const cy = 3 * y1, by = 3 * (y2 - y1) - cy, ay = 1 - cy - by;
|
|
30
|
+
const x = (t: number) => ((ax * t + bx) * t + cx) * t;
|
|
31
|
+
const y = (t: number) => ((ay * t + by) * t + cy) * t;
|
|
32
|
+
const dx = (t: number) => (3 * ax * t + 2 * bx) * t + cx;
|
|
33
|
+
return (p: number) => {
|
|
34
|
+
let t = p;
|
|
35
|
+
for (let i = 0; i < 8; i++) {
|
|
36
|
+
const err = x(t) - p;
|
|
37
|
+
if (Math.abs(err) < 1e-6) return y(t);
|
|
38
|
+
const d = dx(t);
|
|
39
|
+
if (Math.abs(d) < 1e-6) break;
|
|
40
|
+
t -= err / d;
|
|
41
|
+
}
|
|
42
|
+
let lo = 0, hi = 1;
|
|
43
|
+
t = p;
|
|
44
|
+
for (let i = 0; i < 40; i++) {
|
|
45
|
+
if (x(t) < p) lo = t; else hi = t;
|
|
46
|
+
t = (lo + hi) / 2;
|
|
47
|
+
}
|
|
48
|
+
return y(t);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* A damped spring from 0 to 1, evaluated at `seconds` (closed form, so any frame can be sampled
|
|
54
|
+
* on its own). Mass/damping/stiffness/velocity as in Remotion's `spring()`.
|
|
55
|
+
*/
|
|
56
|
+
export function springAt(seconds: number, { mass, damping, stiffness, velocity }: { mass: number; damping: number; stiffness: number; velocity: number }) {
|
|
57
|
+
const w0 = Math.sqrt(stiffness / mass);
|
|
58
|
+
const zeta = damping / (2 * Math.sqrt(stiffness * mass));
|
|
59
|
+
const v0 = -velocity;
|
|
60
|
+
const x0 = -1; // displacement from the target
|
|
61
|
+
const t = seconds;
|
|
62
|
+
let x: number;
|
|
63
|
+
if (zeta < 1) {
|
|
64
|
+
const wd = w0 * Math.sqrt(1 - zeta * zeta);
|
|
65
|
+
x = Math.exp(-zeta * w0 * t) * (x0 * Math.cos(wd * t) + ((v0 + zeta * w0 * x0) / wd) * Math.sin(wd * t));
|
|
66
|
+
} else if (zeta === 1) {
|
|
67
|
+
x = Math.exp(-w0 * t) * (x0 + (v0 + w0 * x0) * t);
|
|
68
|
+
} else {
|
|
69
|
+
const r1 = -w0 * (zeta - Math.sqrt(zeta * zeta - 1)), r2 = -w0 * (zeta + Math.sqrt(zeta * zeta - 1));
|
|
70
|
+
const c2 = (v0 - r1 * x0) / (r2 - r1), c1 = x0 - c2;
|
|
71
|
+
x = c1 * Math.exp(r1 * t) + c2 * Math.exp(r2 * t);
|
|
72
|
+
}
|
|
73
|
+
return 1 + x;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const clamp01 = (t: number) => (t < 0 ? 0 : t > 1 ? 1 : t);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Progress `p` (0‥1, clamped) through a part lasting `durationFrames` (60 fps motion frames), shaped by
|
|
80
|
+
* `e`. A spring runs on real time across the part and is pinned to 1 at its end.
|
|
81
|
+
*/
|
|
82
|
+
export function ease(e: EasingValue, p: number, durationFrames = 60): number {
|
|
83
|
+
const t = clamp01(p);
|
|
84
|
+
if (typeof e === 'string') return (NAMED[e] ?? NAMED.linear!)(t);
|
|
85
|
+
if (e.type === 'cubicBezier') return cubicBezier(e.x1, e.y1, e.x2, e.y2)(t);
|
|
86
|
+
if (t >= 1) return 1;
|
|
87
|
+
return springAt((t * durationFrames) / 60, e);
|
|
88
|
+
}
|