dsh-drawai 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/README.md +96 -253
  2. package/lib/client.js +28 -7
  3. package/lib/index.js +474 -97
  4. package/lib/motion/asset-pack.js +109 -50
  5. package/lib/motion/assets.js +291 -291
  6. package/lib/motion/demo-assets-lock.js +10 -0
  7. package/lib/motion/mgstyles/vendor/README.md +28 -0
  8. package/lib/motion/mgstyles/vendor/modules/d3/LICENSE +13 -0
  9. package/lib/motion/mgstyles/vendor/modules/d3/dist/d3.min.js +2 -0
  10. package/lib/motion/mgstyles/vendor/modules/opentype.js/LICENSE +20 -0
  11. package/lib/motion/mgstyles/vendor/modules/opentype.js/dist/opentype.mjs +14460 -0
  12. package/lib/motion/mgstyles/vendor/modules/simplex-noise/LICENSE +21 -0
  13. package/lib/motion/mgstyles/vendor/modules/simplex-noise/dist/esm/simplex-noise.js +466 -0
  14. package/lib/motion/mgstyles/vendor/modules/topojson-client/LICENSE +13 -0
  15. package/lib/motion/mgstyles/vendor/modules/topojson-client/dist/topojson-client.min.js +2 -0
  16. package/lib/motion/preview.js +10 -3
  17. package/lib/motion/render.js +19 -1
  18. package/lib/motion/shotcraft/upstream/SKILL.md +286 -286
  19. package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -54
  20. package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -200
  21. package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -45
  22. package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -20
  23. package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -65
  24. package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -151
  25. package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -129
  26. package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -75
  27. package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -40
  28. package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -11
  29. package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -10
  30. package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -49
  31. package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -210
  32. package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -423
  33. package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -170
  34. package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -157
  35. package/lib/motion/shotcraft/upstream/demos/README.md +120 -120
  36. package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -112
  37. package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -647
  38. package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -316
  39. package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -82
  40. package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -115
  41. package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -243
  42. package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +388 -388
  43. package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -250
  44. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -305
  45. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -246
  46. package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -390
  47. package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -138
  48. package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -542
  49. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -315
  50. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -299
  51. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -173
  52. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -348
  53. package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -366
  54. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -279
  55. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -184
  56. package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -390
  57. package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -155
  58. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -303
  59. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -290
  60. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -278
  61. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -307
  62. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -215
  63. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -299
  64. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -232
  65. package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -290
  66. package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -273
  67. package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -167
  68. package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -536
  69. package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -164
  70. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -175
  71. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -197
  72. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -241
  73. package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -279
  74. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -230
  75. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -345
  76. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -275
  77. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -229
  78. package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -312
  79. package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -222
  80. package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -295
  81. package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -329
  82. package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -315
  83. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -264
  84. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -260
  85. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -263
  86. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -123
  87. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -187
  88. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -175
  89. package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -305
  90. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -350
  91. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -352
  92. package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -218
  93. package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -297
  94. package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -157
  95. package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -218
  96. package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -202
  97. package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -265
  98. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -457
  99. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -446
  100. package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -249
  101. package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -278
  102. package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -332
  103. package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -358
  104. package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -201
  105. package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -200
  106. package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -208
  107. package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -341
  108. package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -389
  109. package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -293
  110. package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -183
  111. package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -245
  112. package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -222
  113. package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -223
  114. package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -217
  115. package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -343
  116. package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -357
  117. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -187
  118. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -333
  119. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -274
  120. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -270
  121. package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -430
  122. package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -252
  123. package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -106
  124. package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -288
  125. package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -362
  126. package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -168
  127. package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -310
  128. package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -261
  129. package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -459
  130. package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -294
  131. package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -161
  132. package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -248
  133. package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -359
  134. package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -227
  135. package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -162
  136. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -248
  137. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -186
  138. package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -355
  139. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -272
  140. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -262
  141. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -217
  142. package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -285
  143. package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -205
  144. package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -178
  145. package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -147
  146. package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -143
  147. package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -134
  148. package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -217
  149. package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -198
  150. package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -221
  151. package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -312
  152. package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -261
  153. package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -121
  154. package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -153
  155. package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -179
  156. package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -140
  157. package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -309
  158. package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -191
  159. package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -292
  160. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -135
  161. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -124
  162. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -255
  163. package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -173
  164. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -225
  165. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -141
  166. package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -137
  167. package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -147
  168. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -409
  169. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -280
  170. package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -271
  171. package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -385
  172. package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -312
  173. package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -303
  174. package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -77
  175. package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -311
  176. package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -307
  177. package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -349
  178. package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -255
  179. package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -244
  180. package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -217
  181. package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -652
  182. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -153
  183. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -238
  184. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -324
  185. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -354
  186. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -101
  187. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -129
  188. package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -297
  189. package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -57
  190. package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -155
  191. package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -175
  192. package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -153
  193. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -146
  194. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -226
  195. package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -1
  196. package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -193
  197. package/lib/motion/shotcraft/upstream/references/final-review.md +121 -121
  198. package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -199
  199. package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -183
  200. package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -257
  201. package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -382
  202. package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -111
  203. package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -50
  204. package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -95
  205. package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -41
  206. package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -52
  207. package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -39
  208. package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -39
  209. package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -57
  210. package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -51
  211. package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -46
  212. package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -52
  213. package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -43
  214. package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -42
  215. package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -48
  216. package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -52
  217. package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -45
  218. package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -46
  219. package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -44
  220. package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -63
  221. package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -54
  222. package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -58
  223. package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -35
  224. package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -53
  225. package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -42
  226. package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -50
  227. package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -46
  228. package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -56
  229. package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -49
  230. package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -50
  231. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -53
  232. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -53
  233. package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -55
  234. package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -52
  235. package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -60
  236. package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -57
  237. package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -51
  238. package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -41
  239. package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -53
  240. package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -60
  241. package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -55
  242. package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -57
  243. package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -47
  244. package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -37
  245. package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -54
  246. package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -36
  247. package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -56
  248. package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -56
  249. package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -40
  250. package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -60
  251. package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -57
  252. package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -73
  253. package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -87
  254. package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -55
  255. package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -50
  256. package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -59
  257. package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -38
  258. package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -38
  259. package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -59
  260. package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -39
  261. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -61
  262. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -52
  263. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -50
  264. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -66
  265. package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -43
  266. package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -38
  267. package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -38
  268. package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -56
  269. package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -44
  270. package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -38
  271. package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -63
  272. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -57
  273. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -63
  274. package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -58
  275. package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -45
  276. package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -55
  277. package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -49
  278. package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -42
  279. package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -42
  280. package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -45
  281. package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -48
  282. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -55
  283. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -43
  284. package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -41
  285. package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -42
  286. package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -59
  287. package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -55
  288. package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -65
  289. package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -42
  290. package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -64
  291. package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -64
  292. package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -54
  293. package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -91
  294. package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -51
  295. package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -66
  296. package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -38
  297. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -66
  298. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -58
  299. package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -61
  300. package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -64
  301. package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -45
  302. package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -41
  303. package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -51
  304. package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -42
  305. package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -63
  306. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -57
  307. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -75
  308. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -59
  309. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -67
  310. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -60
  311. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -66
  312. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -40
  313. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -45
  314. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -62
  315. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -55
  316. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -37
  317. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -55
  318. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -50
  319. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -43
  320. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -55
  321. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -51
  322. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -51
  323. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -56
  324. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -49
  325. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -57
  326. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -36
  327. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -64
  328. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -47
  329. package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -170
  330. package/lib/motion/shotcraft/upstream/references/workbench.md +157 -157
  331. package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -103
  332. package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -44
  333. package/lib/motion/shotcraft/upstream/template/package.json +20 -20
  334. package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -6
  335. package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -17
  336. package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -65
  337. package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -48
  338. package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -24
  339. package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -192
  340. package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -111
  341. package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -150
  342. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -158
  343. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -468
  344. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -552
  345. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -411
  346. package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -200
  347. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -324
  348. package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +388 -388
  349. package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -4
  350. package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -7
  351. package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -68
  352. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -1
  353. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -24
  354. package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -74
  355. package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -91
  356. package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -213
  357. package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -15
  358. package/lib/motion/style-frames.js +47 -12
  359. package/lib/motion-project.js +22 -3
  360. package/lib/motion-render-worker.js +31 -9
  361. package/lib/routing/router.js +12 -1
  362. package/lib/style-kernel.js +16 -6
  363. package/lib/video-trace-pool.js +128 -128
  364. package/package.json +1 -1
  365. package/LICENSE +0 -4175
@@ -1,230 +1,230 @@
1
- import React from 'react';
2
- import { AbsoluteFill, useCurrentFrame } from 'remotion';
3
- import { FakeDashboard, Card, G } from '../../_fixtures/Fixtures';
4
- import { EASE, Vignette, bezier, mix, ramp } from '../../_fixtures/Polish';
5
-
6
- // anime-impact 动漫打击帧〔组合〕:crash-zoom 急推撞停在目标卡上的那 3 帧,
7
- // 整幅画面反转成黑白负片 + 手绘放射集中线 + 红青通道 ±8px 色散——
8
- // 像素被打了一拳,第 4 帧一切撤掉恢复干净特写 + 6px 震屏衰减。
9
- // 节拍:0–22 建立全景(极缓 creep 1→1.012,目标卡 accent 描边亮起锁定)→
10
- // 22–28 预备回拉到 0.985(拳头往后收)→ 28–34 急推(6f ease-in cubic 到 2.25x,
11
- // 时间采样运动模糊)→ 34–36 冲击帧(3f 负片/集中线/RGB split,每帧换形态)→
12
- // 37 起恢复干净特写 + 震屏衰减 + 暗角压一拍 → ~50–120 静止读卡(≥2s 呼吸)。
13
-
14
- export const ANIME_IMPACT_DURATION = 120;
15
-
16
- const WIND = 22; // 预备回拉起点
17
- const ZOOM_START = 28;
18
- const ZOOM_END = 34; // 撞停帧
19
- const IMPACT_LEN = 3; // 冲击帧持续 3f(34/35/36)
20
- const RECOVER = ZOOM_END + IMPACT_LEN; // 37:恢复干净特写
21
-
22
- // 目标卡:盖在 3x2 网格中排第 2 格上(列 2 行 1)
23
- const CARD = { x: 808, y: 108, w: 524, h: 454 };
24
- const CX = CARD.x + CARD.w / 2; // 1070
25
- const CY = CARD.y + CARD.h / 2; // 335
26
- const SCALE_END = 2.25; // 卡高 454×2.25≈1021:撞停特写四周留 ~30px,描边不被画框切半
27
- const ACCENT = G.accent;
28
-
29
- const inCubic = bezier(0.55, 0.055, 0.675, 0.19); // ease-in cubic(md:6f ease-in(cubic))
30
-
31
- // seed 正弦哈希(禁 Math.random)
32
- const rnd = (i: number) => {
33
- const s = Math.sin(i * 127.3) * 43758.5453;
34
- return s - Math.floor(s);
35
- };
36
-
37
- // 相机:全景极缓 creep → 预备回拉 → ease-in 急推;返回 scale 与推近进度 p(卡心收敛到画面正中)
38
- const camAt = (f: number) => {
39
- const creep = mix(1, 1.012, ramp(f, 0, WIND, EASE.smooth));
40
- const wind = mix(creep, 0.985, ramp(f, WIND, ZOOM_START - WIND, EASE.smooth));
41
- const p = ramp(f, ZOOM_START, ZOOM_END - ZOOM_START, inCubic);
42
- const scale = f < ZOOM_START ? wind : mix(0.985, SCALE_END, p);
43
- return { scale, p };
44
- };
45
-
46
- const zoomStyle = (f: number): React.CSSProperties => {
47
- const { scale, p } = camAt(f);
48
- return {
49
- position: 'absolute',
50
- inset: 0,
51
- transform: `translate(${(960 - CX) * p}px, ${(540 - CY) * p}px) scale(${scale})`,
52
- transformOrigin: `${CX}px ${CY}px`,
53
- };
54
- };
55
-
56
- // 手绘放射集中线:外圈 34 根粗楔 + 22 根细针,内端落在卡周缘一带留出干净焦点;phase 每帧换形态
57
- const SpeedLines: React.FC<{ phase: number }> = ({ phase }) => {
58
- const cx = 960;
59
- const cy = 540;
60
- const R_OUT = 1300; // 超出画框对角(~1101)
61
- const wedge = (i: number, n: number, k: number, r0Min: number, r0Var: number, wMin: number, wVar: number) => {
62
- const ang = ((i + 0.5) / n) * Math.PI * 2 + (rnd(k) - 0.5) * 0.24;
63
- const r0 = r0Min + rnd(k + 1) * r0Var; // 内端长短参差
64
- const halfW = (wMin + rnd(k + 2) * wVar) / R_OUT; // 外端宽度
65
- const ax = cx + Math.cos(ang) * r0 * 1.18; // 横向略拉长:焦点区是卡片的宽椭圆
66
- const ay = cy + Math.sin(ang) * r0;
67
- const p1 = `${cx + Math.cos(ang - halfW) * R_OUT},${cy + Math.sin(ang - halfW) * R_OUT}`;
68
- const p2 = `${cx + Math.cos(ang + halfW) * R_OUT},${cy + Math.sin(ang + halfW) * R_OUT}`;
69
- return `${ax},${ay} ${p1} ${p2}`;
70
- };
71
- const thick = Array.from({ length: 34 }, (_, i) => wedge(i, 34, i * 13 + phase * 101, 330, 230, 9, 22));
72
- const thin = Array.from({ length: 22 }, (_, i) => wedge(i + 0.37, 22, i * 29 + phase * 57 + 7, 420, 260, 2, 4));
73
- return (
74
- <svg viewBox="0 0 1920 1080" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%' }}>
75
- <defs>
76
- {/* 焦点内缘柔化:集中线内端不是硬切,而是被一圈径向渐隐吃掉 */}
77
- <radialGradient id="ai-lines-fade" cx="960" cy="540" r="700" gradientUnits="userSpaceOnUse">
78
- <stop offset="0.38" stopColor="#fff" stopOpacity="0" />
79
- <stop offset="0.6" stopColor="#fff" stopOpacity="1" />
80
- </radialGradient>
81
- <mask id="ai-lines-mask">
82
- <rect width="1920" height="1080" fill="url(#ai-lines-fade)" />
83
- </mask>
84
- </defs>
85
- <g mask="url(#ai-lines-mask)">
86
- {thick.map((pts, i) => (
87
- <polygon key={`a${i}`} points={pts} fill={i % 5 === 0 ? '#0d0e12' : '#f4f2ee'} />
88
- ))}
89
- {thin.map((pts, i) => (
90
- <polygon key={`b${i}`} points={pts} fill="#f4f2ee" opacity={0.85} />
91
- ))}
92
- </g>
93
- </svg>
94
- );
95
- };
96
-
97
- // 目标卡叠层 + 全景底;lock = 目标卡 accent 描边亮起进度(0–1)
98
- const Scene: React.FC<{ lock: number }> = ({ lock }) => (
99
- <>
100
- <FakeDashboard variant="A" />
101
- <div style={{ position: 'absolute', left: CARD.x, top: CARD.y }}>
102
- <Card
103
- w={CARD.w}
104
- h={CARD.h}
105
- seed={9}
106
- style={{
107
- boxShadow:
108
- `0 0 0 ${(1.5 * lock).toFixed(2)}px ${ACCENT}, 0 0 0 ${(6 * lock).toFixed(2)}px rgba(91,99,211,${(0.14 * lock).toFixed(3)}), ` +
109
- `inset 0 1px 0 rgba(255,255,255,0.9), 0 2px 4px rgba(16,18,24,0.06), 0 ${mix(6, 22, lock)}px ${mix(18, 48, lock)}px -10px rgba(16,18,24,${mix(0.1, 0.22, lock).toFixed(3)})`,
110
- }}
111
- />
112
- </div>
113
- </>
114
- );
115
-
116
- // 急推段时间采样运动模糊:快门 0.6f 内取 N 个子帧叠化(第 k 层 opacity 1/(k+1) = 等权平均),
117
- // 每个子帧再按相邻子帧间距加一点高斯模糊把阶梯抹平;只给 28–33 的飞行帧,撞停帧本身锐利
118
- const SHUTTER = 0.6;
119
- const blurAt = (f: number) => {
120
- if (f <= ZOOM_START || f >= ZOOM_END) return { n: 1, sd: 0 };
121
- const a = camAt(f), b = camAt(f - SHUTTER);
122
- const edge = Math.abs(a.scale - b.scale) * 900 + Math.abs(a.p - b.p) * 160; // 画框边缘处位移 px
123
- const n = Math.max(1, Math.min(12, Math.ceil(edge / 10)));
124
- return { n, sd: n > 1 ? Math.min(6, (edge / (n - 1)) * 0.45) : 0 };
125
- };
126
-
127
- // 锐利中心遮罩:跟着卡心在屏幕上的位置走(transform-origin 在卡心,屏幕位置 = 卡心 + 平移)
128
- const sharpMask = (f: number) => {
129
- const { p } = camAt(f);
130
- const x = ((CX + (960 - CX) * p) / 1920) * 100;
131
- const y = ((CY + (540 - CY) * p) / 1080) * 100;
132
- return `radial-gradient(ellipse 30% 34% at ${x.toFixed(1)}% ${y.toFixed(1)}%, #000 0%, rgba(0,0,0,0.85) 45%, transparent 100%)`;
133
- };
134
-
135
- export const AnimeImpact: React.FC = () => {
136
- const frame = useCurrentFrame();
137
-
138
- const lock = ramp(frame, 6, 14, EASE.out); // 目标卡描边亮起:观众先知道"拳头要落在哪"
139
- const impact = frame >= ZOOM_END && frame < RECOVER;
140
- const phase = impact ? frame - ZOOM_END : 0; // 每 1f 换一次集中线形态
141
-
142
- // 撞停后震屏:6px 起步、指数衰减 τ≈2.2f;cos 起相首拍沿推进方向"下沉",相邻帧近乎反号的硬抖
143
- const since = frame - RECOVER;
144
- const env = since >= 0 ? 6 * Math.exp(-since / 2.2) : 0;
145
- const live = env > 0.12;
146
- const shakeX = live ? env * 0.7 * Math.sin(since * 2.5 + 0.6) : 0;
147
- const shakeY = live ? env * Math.cos(since * 2.9) : 0;
148
- const shakeR = live ? env * 0.04 * Math.sin(since * 3.3 + 1.7) : 0;
149
-
150
- // 撞停重量:暗角猛压一拍再退;目标卡外的页面压暗一点让特写"站出来"
151
- const hitK = frame >= RECOVER ? 1 - ramp(frame, RECOVER, 22, EASE.out) : 0;
152
- const vig = frame >= RECOVER ? mix(0.16, 0.42, hitK) : 0.12;
153
-
154
- const { n, sd } = blurAt(frame);
155
-
156
- return (
157
- <AbsoluteFill style={{ background: impact ? '#0d0e12' : G.bg, overflow: 'hidden' }}>
158
- <div
159
- style={{
160
- position: 'absolute',
161
- inset: 0,
162
- transform: `translate(${shakeX.toFixed(2)}px, ${shakeY.toFixed(2)}px) rotate(${shakeR.toFixed(3)}deg)`,
163
- }}
164
- >
165
- {/* 主层:冲击帧期间整幅高反差黑白负片;急推段 n>1 时做时间采样运动模糊 */}
166
- <div style={{ position: 'absolute', inset: 0, filter: impact ? 'invert(1) grayscale(1) contrast(1.45)' : 'none' }}>
167
- {Array.from({ length: n }, (_, k) => (
168
- <div
169
- key={k}
170
- style={{
171
- ...zoomStyle(frame - (SHUTTER * k) / Math.max(1, n - 1)),
172
- opacity: k === 0 ? 1 : 1 / (k + 1),
173
- filter: sd > 0.3 ? `blur(${sd.toFixed(2)}px)` : undefined,
174
- }}
175
- >
176
- <Scene lock={lock} />
177
- </div>
178
- ))}
179
- {/* 变焦模糊的径向性:画心(推进中心)位移最小 → 叠一层当前帧的锐利副本,径向遮罩只留中心 */}
180
- {n > 1 && (
181
- <div
182
- style={{
183
- position: 'absolute', inset: 0,
184
- WebkitMaskImage: sharpMask(frame),
185
- maskImage: sharpMask(frame),
186
- }}
187
- >
188
- <div style={zoomStyle(frame)}>
189
- <Scene lock={lock} />
190
- </div>
191
- </div>
192
- )}
193
- </div>
194
- {/* RGB split:红/青双层负片副本,screen 叠底、±8px 错位(随 phase 换向) */}
195
- {impact && (
196
- <>
197
- {[
198
- { dx: -8, dy: phase % 2 === 0 ? 4 : -4, tint: '#ff2a4a' },
199
- { dx: 8, dy: phase % 2 === 0 ? -4 : 4, tint: '#16e0ff' },
200
- ].map((c, i) => (
201
- <div
202
- key={i}
203
- style={{ position: 'absolute', inset: 0, mixBlendMode: 'screen', transform: `translate(${c.dx}px, ${c.dy}px)`, isolation: 'isolate' }}
204
- >
205
- <div style={{ ...zoomStyle(frame), filter: 'invert(1) grayscale(1) contrast(1.45)' }}>
206
- <Scene lock={lock} />
207
- </div>
208
- <div style={{ position: 'absolute', inset: 0, background: c.tint, mixBlendMode: 'multiply' }} />
209
- </div>
210
- ))}
211
- {/* 手绘放射集中线:每帧换形态 */}
212
- <SpeedLines phase={phase} />
213
- </>
214
- )}
215
- {/* 恢复后:目标卡外压暗(卡外大 spread 阴影当遮罩,随特写坐标走) */}
216
- {frame >= RECOVER && (
217
- <div style={zoomStyle(frame)}>
218
- <div
219
- style={{
220
- position: 'absolute', left: CARD.x, top: CARD.y, width: CARD.w, height: CARD.h, borderRadius: 14,
221
- boxShadow: `0 0 0 3000px rgba(14,15,20,${mix(0.1, 0.22, hitK).toFixed(3)})`,
222
- }}
223
- />
224
- </div>
225
- )}
226
- </div>
227
- {!impact && <Vignette strength={vig} inner={0.5} color="#0b0c12" />}
228
- </AbsoluteFill>
229
- );
230
- };
1
+ import React from 'react';
2
+ import { AbsoluteFill, useCurrentFrame } from 'remotion';
3
+ import { FakeDashboard, Card, G } from '../../_fixtures/Fixtures';
4
+ import { EASE, Vignette, bezier, mix, ramp } from '../../_fixtures/Polish';
5
+
6
+ // anime-impact 动漫打击帧〔组合〕:crash-zoom 急推撞停在目标卡上的那 3 帧,
7
+ // 整幅画面反转成黑白负片 + 手绘放射集中线 + 红青通道 ±8px 色散——
8
+ // 像素被打了一拳,第 4 帧一切撤掉恢复干净特写 + 6px 震屏衰减。
9
+ // 节拍:0–22 建立全景(极缓 creep 1→1.012,目标卡 accent 描边亮起锁定)→
10
+ // 22–28 预备回拉到 0.985(拳头往后收)→ 28–34 急推(6f ease-in cubic 到 2.25x,
11
+ // 时间采样运动模糊)→ 34–36 冲击帧(3f 负片/集中线/RGB split,每帧换形态)→
12
+ // 37 起恢复干净特写 + 震屏衰减 + 暗角压一拍 → ~50–120 静止读卡(≥2s 呼吸)。
13
+
14
+ export const ANIME_IMPACT_DURATION = 120;
15
+
16
+ const WIND = 22; // 预备回拉起点
17
+ const ZOOM_START = 28;
18
+ const ZOOM_END = 34; // 撞停帧
19
+ const IMPACT_LEN = 3; // 冲击帧持续 3f(34/35/36)
20
+ const RECOVER = ZOOM_END + IMPACT_LEN; // 37:恢复干净特写
21
+
22
+ // 目标卡:盖在 3x2 网格中排第 2 格上(列 2 行 1)
23
+ const CARD = { x: 808, y: 108, w: 524, h: 454 };
24
+ const CX = CARD.x + CARD.w / 2; // 1070
25
+ const CY = CARD.y + CARD.h / 2; // 335
26
+ const SCALE_END = 2.25; // 卡高 454×2.25≈1021:撞停特写四周留 ~30px,描边不被画框切半
27
+ const ACCENT = G.accent;
28
+
29
+ const inCubic = bezier(0.55, 0.055, 0.675, 0.19); // ease-in cubic(md:6f ease-in(cubic))
30
+
31
+ // seed 正弦哈希(禁 Math.random)
32
+ const rnd = (i: number) => {
33
+ const s = Math.sin(i * 127.3) * 43758.5453;
34
+ return s - Math.floor(s);
35
+ };
36
+
37
+ // 相机:全景极缓 creep → 预备回拉 → ease-in 急推;返回 scale 与推近进度 p(卡心收敛到画面正中)
38
+ const camAt = (f: number) => {
39
+ const creep = mix(1, 1.012, ramp(f, 0, WIND, EASE.smooth));
40
+ const wind = mix(creep, 0.985, ramp(f, WIND, ZOOM_START - WIND, EASE.smooth));
41
+ const p = ramp(f, ZOOM_START, ZOOM_END - ZOOM_START, inCubic);
42
+ const scale = f < ZOOM_START ? wind : mix(0.985, SCALE_END, p);
43
+ return { scale, p };
44
+ };
45
+
46
+ const zoomStyle = (f: number): React.CSSProperties => {
47
+ const { scale, p } = camAt(f);
48
+ return {
49
+ position: 'absolute',
50
+ inset: 0,
51
+ transform: `translate(${(960 - CX) * p}px, ${(540 - CY) * p}px) scale(${scale})`,
52
+ transformOrigin: `${CX}px ${CY}px`,
53
+ };
54
+ };
55
+
56
+ // 手绘放射集中线:外圈 34 根粗楔 + 22 根细针,内端落在卡周缘一带留出干净焦点;phase 每帧换形态
57
+ const SpeedLines: React.FC<{ phase: number }> = ({ phase }) => {
58
+ const cx = 960;
59
+ const cy = 540;
60
+ const R_OUT = 1300; // 超出画框对角(~1101)
61
+ const wedge = (i: number, n: number, k: number, r0Min: number, r0Var: number, wMin: number, wVar: number) => {
62
+ const ang = ((i + 0.5) / n) * Math.PI * 2 + (rnd(k) - 0.5) * 0.24;
63
+ const r0 = r0Min + rnd(k + 1) * r0Var; // 内端长短参差
64
+ const halfW = (wMin + rnd(k + 2) * wVar) / R_OUT; // 外端宽度
65
+ const ax = cx + Math.cos(ang) * r0 * 1.18; // 横向略拉长:焦点区是卡片的宽椭圆
66
+ const ay = cy + Math.sin(ang) * r0;
67
+ const p1 = `${cx + Math.cos(ang - halfW) * R_OUT},${cy + Math.sin(ang - halfW) * R_OUT}`;
68
+ const p2 = `${cx + Math.cos(ang + halfW) * R_OUT},${cy + Math.sin(ang + halfW) * R_OUT}`;
69
+ return `${ax},${ay} ${p1} ${p2}`;
70
+ };
71
+ const thick = Array.from({ length: 34 }, (_, i) => wedge(i, 34, i * 13 + phase * 101, 330, 230, 9, 22));
72
+ const thin = Array.from({ length: 22 }, (_, i) => wedge(i + 0.37, 22, i * 29 + phase * 57 + 7, 420, 260, 2, 4));
73
+ return (
74
+ <svg viewBox="0 0 1920 1080" style={{ position: 'absolute', inset: 0, width: '100%', height: '100%' }}>
75
+ <defs>
76
+ {/* 焦点内缘柔化:集中线内端不是硬切,而是被一圈径向渐隐吃掉 */}
77
+ <radialGradient id="ai-lines-fade" cx="960" cy="540" r="700" gradientUnits="userSpaceOnUse">
78
+ <stop offset="0.38" stopColor="#fff" stopOpacity="0" />
79
+ <stop offset="0.6" stopColor="#fff" stopOpacity="1" />
80
+ </radialGradient>
81
+ <mask id="ai-lines-mask">
82
+ <rect width="1920" height="1080" fill="url(#ai-lines-fade)" />
83
+ </mask>
84
+ </defs>
85
+ <g mask="url(#ai-lines-mask)">
86
+ {thick.map((pts, i) => (
87
+ <polygon key={`a${i}`} points={pts} fill={i % 5 === 0 ? '#0d0e12' : '#f4f2ee'} />
88
+ ))}
89
+ {thin.map((pts, i) => (
90
+ <polygon key={`b${i}`} points={pts} fill="#f4f2ee" opacity={0.85} />
91
+ ))}
92
+ </g>
93
+ </svg>
94
+ );
95
+ };
96
+
97
+ // 目标卡叠层 + 全景底;lock = 目标卡 accent 描边亮起进度(0–1)
98
+ const Scene: React.FC<{ lock: number }> = ({ lock }) => (
99
+ <>
100
+ <FakeDashboard variant="A" />
101
+ <div style={{ position: 'absolute', left: CARD.x, top: CARD.y }}>
102
+ <Card
103
+ w={CARD.w}
104
+ h={CARD.h}
105
+ seed={9}
106
+ style={{
107
+ boxShadow:
108
+ `0 0 0 ${(1.5 * lock).toFixed(2)}px ${ACCENT}, 0 0 0 ${(6 * lock).toFixed(2)}px rgba(91,99,211,${(0.14 * lock).toFixed(3)}), ` +
109
+ `inset 0 1px 0 rgba(255,255,255,0.9), 0 2px 4px rgba(16,18,24,0.06), 0 ${mix(6, 22, lock)}px ${mix(18, 48, lock)}px -10px rgba(16,18,24,${mix(0.1, 0.22, lock).toFixed(3)})`,
110
+ }}
111
+ />
112
+ </div>
113
+ </>
114
+ );
115
+
116
+ // 急推段时间采样运动模糊:快门 0.6f 内取 N 个子帧叠化(第 k 层 opacity 1/(k+1) = 等权平均),
117
+ // 每个子帧再按相邻子帧间距加一点高斯模糊把阶梯抹平;只给 28–33 的飞行帧,撞停帧本身锐利
118
+ const SHUTTER = 0.6;
119
+ const blurAt = (f: number) => {
120
+ if (f <= ZOOM_START || f >= ZOOM_END) return { n: 1, sd: 0 };
121
+ const a = camAt(f), b = camAt(f - SHUTTER);
122
+ const edge = Math.abs(a.scale - b.scale) * 900 + Math.abs(a.p - b.p) * 160; // 画框边缘处位移 px
123
+ const n = Math.max(1, Math.min(12, Math.ceil(edge / 10)));
124
+ return { n, sd: n > 1 ? Math.min(6, (edge / (n - 1)) * 0.45) : 0 };
125
+ };
126
+
127
+ // 锐利中心遮罩:跟着卡心在屏幕上的位置走(transform-origin 在卡心,屏幕位置 = 卡心 + 平移)
128
+ const sharpMask = (f: number) => {
129
+ const { p } = camAt(f);
130
+ const x = ((CX + (960 - CX) * p) / 1920) * 100;
131
+ const y = ((CY + (540 - CY) * p) / 1080) * 100;
132
+ return `radial-gradient(ellipse 30% 34% at ${x.toFixed(1)}% ${y.toFixed(1)}%, #000 0%, rgba(0,0,0,0.85) 45%, transparent 100%)`;
133
+ };
134
+
135
+ export const AnimeImpact: React.FC = () => {
136
+ const frame = useCurrentFrame();
137
+
138
+ const lock = ramp(frame, 6, 14, EASE.out); // 目标卡描边亮起:观众先知道"拳头要落在哪"
139
+ const impact = frame >= ZOOM_END && frame < RECOVER;
140
+ const phase = impact ? frame - ZOOM_END : 0; // 每 1f 换一次集中线形态
141
+
142
+ // 撞停后震屏:6px 起步、指数衰减 τ≈2.2f;cos 起相首拍沿推进方向"下沉",相邻帧近乎反号的硬抖
143
+ const since = frame - RECOVER;
144
+ const env = since >= 0 ? 6 * Math.exp(-since / 2.2) : 0;
145
+ const live = env > 0.12;
146
+ const shakeX = live ? env * 0.7 * Math.sin(since * 2.5 + 0.6) : 0;
147
+ const shakeY = live ? env * Math.cos(since * 2.9) : 0;
148
+ const shakeR = live ? env * 0.04 * Math.sin(since * 3.3 + 1.7) : 0;
149
+
150
+ // 撞停重量:暗角猛压一拍再退;目标卡外的页面压暗一点让特写"站出来"
151
+ const hitK = frame >= RECOVER ? 1 - ramp(frame, RECOVER, 22, EASE.out) : 0;
152
+ const vig = frame >= RECOVER ? mix(0.16, 0.42, hitK) : 0.12;
153
+
154
+ const { n, sd } = blurAt(frame);
155
+
156
+ return (
157
+ <AbsoluteFill style={{ background: impact ? '#0d0e12' : G.bg, overflow: 'hidden' }}>
158
+ <div
159
+ style={{
160
+ position: 'absolute',
161
+ inset: 0,
162
+ transform: `translate(${shakeX.toFixed(2)}px, ${shakeY.toFixed(2)}px) rotate(${shakeR.toFixed(3)}deg)`,
163
+ }}
164
+ >
165
+ {/* 主层:冲击帧期间整幅高反差黑白负片;急推段 n>1 时做时间采样运动模糊 */}
166
+ <div style={{ position: 'absolute', inset: 0, filter: impact ? 'invert(1) grayscale(1) contrast(1.45)' : 'none' }}>
167
+ {Array.from({ length: n }, (_, k) => (
168
+ <div
169
+ key={k}
170
+ style={{
171
+ ...zoomStyle(frame - (SHUTTER * k) / Math.max(1, n - 1)),
172
+ opacity: k === 0 ? 1 : 1 / (k + 1),
173
+ filter: sd > 0.3 ? `blur(${sd.toFixed(2)}px)` : undefined,
174
+ }}
175
+ >
176
+ <Scene lock={lock} />
177
+ </div>
178
+ ))}
179
+ {/* 变焦模糊的径向性:画心(推进中心)位移最小 → 叠一层当前帧的锐利副本,径向遮罩只留中心 */}
180
+ {n > 1 && (
181
+ <div
182
+ style={{
183
+ position: 'absolute', inset: 0,
184
+ WebkitMaskImage: sharpMask(frame),
185
+ maskImage: sharpMask(frame),
186
+ }}
187
+ >
188
+ <div style={zoomStyle(frame)}>
189
+ <Scene lock={lock} />
190
+ </div>
191
+ </div>
192
+ )}
193
+ </div>
194
+ {/* RGB split:红/青双层负片副本,screen 叠底、±8px 错位(随 phase 换向) */}
195
+ {impact && (
196
+ <>
197
+ {[
198
+ { dx: -8, dy: phase % 2 === 0 ? 4 : -4, tint: '#ff2a4a' },
199
+ { dx: 8, dy: phase % 2 === 0 ? -4 : 4, tint: '#16e0ff' },
200
+ ].map((c, i) => (
201
+ <div
202
+ key={i}
203
+ style={{ position: 'absolute', inset: 0, mixBlendMode: 'screen', transform: `translate(${c.dx}px, ${c.dy}px)`, isolation: 'isolate' }}
204
+ >
205
+ <div style={{ ...zoomStyle(frame), filter: 'invert(1) grayscale(1) contrast(1.45)' }}>
206
+ <Scene lock={lock} />
207
+ </div>
208
+ <div style={{ position: 'absolute', inset: 0, background: c.tint, mixBlendMode: 'multiply' }} />
209
+ </div>
210
+ ))}
211
+ {/* 手绘放射集中线:每帧换形态 */}
212
+ <SpeedLines phase={phase} />
213
+ </>
214
+ )}
215
+ {/* 恢复后:目标卡外压暗(卡外大 spread 阴影当遮罩,随特写坐标走) */}
216
+ {frame >= RECOVER && (
217
+ <div style={zoomStyle(frame)}>
218
+ <div
219
+ style={{
220
+ position: 'absolute', left: CARD.x, top: CARD.y, width: CARD.w, height: CARD.h, borderRadius: 14,
221
+ boxShadow: `0 0 0 3000px rgba(14,15,20,${mix(0.1, 0.22, hitK).toFixed(3)})`,
222
+ }}
223
+ />
224
+ </div>
225
+ )}
226
+ </div>
227
+ {!impact && <Vignette strength={vig} inner={0.5} color="#0b0c12" />}
228
+ </AbsoluteFill>
229
+ );
230
+ };