@motion-script/core 0.1.0
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/README.md +69 -0
- package/dist/assets/catalog.d.ts +83 -0
- package/dist/assets/catalog.d.ts.map +1 -0
- package/dist/assets/catalog.js +110 -0
- package/dist/assets/catalog.js.map +1 -0
- package/dist/assets/index.d.ts +5 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +4 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/assets/manager.d.ts +32 -0
- package/dist/assets/manager.d.ts.map +1 -0
- package/dist/assets/manager.js +108 -0
- package/dist/assets/manager.js.map +1 -0
- package/dist/assets/manager.test.d.ts +2 -0
- package/dist/assets/manager.test.d.ts.map +1 -0
- package/dist/assets/manager.test.js +133 -0
- package/dist/assets/manager.test.js.map +1 -0
- package/dist/assets/manifest.d.ts +38 -0
- package/dist/assets/manifest.d.ts.map +1 -0
- package/dist/assets/manifest.js +2 -0
- package/dist/assets/manifest.js.map +1 -0
- package/dist/assets/record.d.ts +40 -0
- package/dist/assets/record.d.ts.map +1 -0
- package/dist/assets/record.js +2 -0
- package/dist/assets/record.js.map +1 -0
- package/dist/assets/tracker.d.ts +69 -0
- package/dist/assets/tracker.d.ts.map +1 -0
- package/dist/assets/tracker.js +178 -0
- package/dist/assets/tracker.js.map +1 -0
- package/dist/attributes/audio/request.d.ts +21 -0
- package/dist/attributes/audio/request.d.ts.map +1 -0
- package/dist/attributes/audio/request.js +2 -0
- package/dist/attributes/audio/request.js.map +1 -0
- package/dist/attributes/audio/sound.d.ts +83 -0
- package/dist/attributes/audio/sound.d.ts.map +1 -0
- package/dist/attributes/audio/sound.js +106 -0
- package/dist/attributes/audio/sound.js.map +1 -0
- package/dist/attributes/index.d.ts +18 -0
- package/dist/attributes/index.d.ts.map +1 -0
- package/dist/attributes/index.js +17 -0
- package/dist/attributes/index.js.map +1 -0
- package/dist/attributes/layout/bounds.d.ts +12 -0
- package/dist/attributes/layout/bounds.d.ts.map +1 -0
- package/dist/attributes/layout/bounds.js +2 -0
- package/dist/attributes/layout/bounds.js.map +1 -0
- package/dist/attributes/layout/constraints.d.ts +6 -0
- package/dist/attributes/layout/constraints.d.ts.map +1 -0
- package/dist/attributes/layout/constraints.js +2 -0
- package/dist/attributes/layout/constraints.js.map +1 -0
- package/dist/attributes/layout/index.d.ts +6 -0
- package/dist/attributes/layout/index.d.ts.map +1 -0
- package/dist/attributes/layout/index.js +2 -0
- package/dist/attributes/layout/index.js.map +1 -0
- package/dist/attributes/layout/padding.d.ts +26 -0
- package/dist/attributes/layout/padding.d.ts.map +1 -0
- package/dist/attributes/layout/padding.js +17 -0
- package/dist/attributes/layout/padding.js.map +1 -0
- package/dist/attributes/layout/padding.test.d.ts +2 -0
- package/dist/attributes/layout/padding.test.d.ts.map +1 -0
- package/dist/attributes/layout/padding.test.js +32 -0
- package/dist/attributes/layout/padding.test.js.map +1 -0
- package/dist/attributes/layout/size.d.ts +14 -0
- package/dist/attributes/layout/size.d.ts.map +1 -0
- package/dist/attributes/layout/size.js +2 -0
- package/dist/attributes/layout/size.js.map +1 -0
- package/dist/attributes/layout/vector2.d.ts +8 -0
- package/dist/attributes/layout/vector2.d.ts.map +1 -0
- package/dist/attributes/layout/vector2.js +8 -0
- package/dist/attributes/layout/vector2.js.map +1 -0
- package/dist/attributes/layout/vector2.test.d.ts +2 -0
- package/dist/attributes/layout/vector2.test.d.ts.map +1 -0
- package/dist/attributes/layout/vector2.test.js +23 -0
- package/dist/attributes/layout/vector2.test.js.map +1 -0
- package/dist/attributes/mask/boolean.d.ts +2 -0
- package/dist/attributes/mask/boolean.d.ts.map +1 -0
- package/dist/attributes/mask/boolean.js +2 -0
- package/dist/attributes/mask/boolean.js.map +1 -0
- package/dist/attributes/mask/mask.d.ts +9 -0
- package/dist/attributes/mask/mask.d.ts.map +1 -0
- package/dist/attributes/mask/mask.js +2 -0
- package/dist/attributes/mask/mask.js.map +1 -0
- package/dist/attributes/properties/decorator.d.ts +45 -0
- package/dist/attributes/properties/decorator.d.ts.map +1 -0
- package/dist/attributes/properties/decorator.js +72 -0
- package/dist/attributes/properties/decorator.js.map +1 -0
- package/dist/attributes/properties/decorator.test.d.ts +2 -0
- package/dist/attributes/properties/decorator.test.d.ts.map +1 -0
- package/dist/attributes/properties/decorator.test.js +52 -0
- package/dist/attributes/properties/decorator.test.js.map +1 -0
- package/dist/attributes/shape/corners/border-radius.d.ts +32 -0
- package/dist/attributes/shape/corners/border-radius.d.ts.map +1 -0
- package/dist/attributes/shape/corners/border-radius.js +50 -0
- package/dist/attributes/shape/corners/border-radius.js.map +1 -0
- package/dist/attributes/shape/corners/border-radius.test.d.ts +2 -0
- package/dist/attributes/shape/corners/border-radius.test.d.ts.map +1 -0
- package/dist/attributes/shape/corners/border-radius.test.js +52 -0
- package/dist/attributes/shape/corners/border-radius.test.js.map +1 -0
- package/dist/attributes/shape/corners/index.d.ts +2 -0
- package/dist/attributes/shape/corners/index.d.ts.map +1 -0
- package/dist/attributes/shape/corners/index.js +2 -0
- package/dist/attributes/shape/corners/index.js.map +1 -0
- package/dist/attributes/shape/effects/chain.d.ts +145 -0
- package/dist/attributes/shape/effects/chain.d.ts.map +1 -0
- package/dist/attributes/shape/effects/chain.js +163 -0
- package/dist/attributes/shape/effects/chain.js.map +1 -0
- package/dist/attributes/shape/effects/chain.test.d.ts +2 -0
- package/dist/attributes/shape/effects/chain.test.d.ts.map +1 -0
- package/dist/attributes/shape/effects/chain.test.js +63 -0
- package/dist/attributes/shape/effects/chain.test.js.map +1 -0
- package/dist/attributes/shape/effects/effect-data.d.ts +18 -0
- package/dist/attributes/shape/effects/effect-data.d.ts.map +1 -0
- package/dist/attributes/shape/effects/effect-data.js +2 -0
- package/dist/attributes/shape/effects/effect-data.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/background-blur.d.ts +13 -0
- package/dist/attributes/shape/effects/implementations/background-blur.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/background-blur.js +6 -0
- package/dist/attributes/shape/effects/implementations/background-blur.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/bloom.d.ts +12 -0
- package/dist/attributes/shape/effects/implementations/bloom.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/bloom.js +11 -0
- package/dist/attributes/shape/effects/implementations/bloom.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/blur.d.ts +7 -0
- package/dist/attributes/shape/effects/implementations/blur.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/blur.js +6 -0
- package/dist/attributes/shape/effects/implementations/blur.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/bulge-pinch.d.ts +13 -0
- package/dist/attributes/shape/effects/implementations/bulge-pinch.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/bulge-pinch.js +15 -0
- package/dist/attributes/shape/effects/implementations/bulge-pinch.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/chromatic-aberration.d.ts +10 -0
- package/dist/attributes/shape/effects/implementations/chromatic-aberration.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/chromatic-aberration.js +10 -0
- package/dist/attributes/shape/effects/implementations/chromatic-aberration.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/grayscale.d.ts +7 -0
- package/dist/attributes/shape/effects/implementations/grayscale.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/grayscale.js +6 -0
- package/dist/attributes/shape/effects/implementations/grayscale.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/pixelate.d.ts +8 -0
- package/dist/attributes/shape/effects/implementations/pixelate.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/pixelate.js +10 -0
- package/dist/attributes/shape/effects/implementations/pixelate.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/sksl.d.ts +39 -0
- package/dist/attributes/shape/effects/implementations/sksl.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/sksl.js +48 -0
- package/dist/attributes/shape/effects/implementations/sksl.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/texture.d.ts +9 -0
- package/dist/attributes/shape/effects/implementations/texture.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/texture.js +11 -0
- package/dist/attributes/shape/effects/implementations/texture.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/vintage.d.ts +10 -0
- package/dist/attributes/shape/effects/implementations/vintage.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/vintage.js +10 -0
- package/dist/attributes/shape/effects/implementations/vintage.js.map +1 -0
- package/dist/attributes/shape/effects/implementations/zoom.d.ts +14 -0
- package/dist/attributes/shape/effects/implementations/zoom.d.ts.map +1 -0
- package/dist/attributes/shape/effects/implementations/zoom.js +13 -0
- package/dist/attributes/shape/effects/implementations/zoom.js.map +1 -0
- package/dist/attributes/shape/effects/index.d.ts +19 -0
- package/dist/attributes/shape/effects/index.d.ts.map +1 -0
- package/dist/attributes/shape/effects/index.js +4 -0
- package/dist/attributes/shape/effects/index.js.map +1 -0
- package/dist/attributes/shape/effects/registry.d.ts +4 -0
- package/dist/attributes/shape/effects/registry.d.ts.map +1 -0
- package/dist/attributes/shape/effects/registry.js +51 -0
- package/dist/attributes/shape/effects/registry.js.map +1 -0
- package/dist/attributes/shape/effects/union.d.ts +14 -0
- package/dist/attributes/shape/effects/union.d.ts.map +1 -0
- package/dist/attributes/shape/effects/union.js +2 -0
- package/dist/attributes/shape/effects/union.js.map +1 -0
- package/dist/attributes/shape/fill/blend.d.ts +13 -0
- package/dist/attributes/shape/fill/blend.d.ts.map +1 -0
- package/dist/attributes/shape/fill/blend.js +32 -0
- package/dist/attributes/shape/fill/blend.js.map +1 -0
- package/dist/attributes/shape/fill/blend.test.d.ts +2 -0
- package/dist/attributes/shape/fill/blend.test.d.ts.map +1 -0
- package/dist/attributes/shape/fill/blend.test.js +18 -0
- package/dist/attributes/shape/fill/blend.test.js.map +1 -0
- package/dist/attributes/shape/fill/chain.d.ts +127 -0
- package/dist/attributes/shape/fill/chain.d.ts.map +1 -0
- package/dist/attributes/shape/fill/chain.js +116 -0
- package/dist/attributes/shape/fill/chain.js.map +1 -0
- package/dist/attributes/shape/fill/chain.test.d.ts +2 -0
- package/dist/attributes/shape/fill/chain.test.d.ts.map +1 -0
- package/dist/attributes/shape/fill/chain.test.js +92 -0
- package/dist/attributes/shape/fill/chain.test.js.map +1 -0
- package/dist/attributes/shape/fill/color/constants.d.ts +13 -0
- package/dist/attributes/shape/fill/color/constants.d.ts.map +1 -0
- package/dist/attributes/shape/fill/color/constants.js +162 -0
- package/dist/attributes/shape/fill/color/constants.js.map +1 -0
- package/dist/attributes/shape/fill/color/parser.d.ts +39 -0
- package/dist/attributes/shape/fill/color/parser.d.ts.map +1 -0
- package/dist/attributes/shape/fill/color/parser.js +212 -0
- package/dist/attributes/shape/fill/color/parser.js.map +1 -0
- package/dist/attributes/shape/fill/color/parser.test.d.ts +2 -0
- package/dist/attributes/shape/fill/color/parser.test.d.ts.map +1 -0
- package/dist/attributes/shape/fill/color/parser.test.js +99 -0
- package/dist/attributes/shape/fill/color/parser.test.js.map +1 -0
- package/dist/attributes/shape/fill/implementations/color.d.ts +17 -0
- package/dist/attributes/shape/fill/implementations/color.d.ts.map +1 -0
- package/dist/attributes/shape/fill/implementations/color.js +24 -0
- package/dist/attributes/shape/fill/implementations/color.js.map +1 -0
- package/dist/attributes/shape/fill/implementations/conic-gradient.d.ts +24 -0
- package/dist/attributes/shape/fill/implementations/conic-gradient.d.ts.map +1 -0
- package/dist/attributes/shape/fill/implementations/conic-gradient.js +33 -0
- package/dist/attributes/shape/fill/implementations/conic-gradient.js.map +1 -0
- package/dist/attributes/shape/fill/implementations/image.d.ts +27 -0
- package/dist/attributes/shape/fill/implementations/image.d.ts.map +1 -0
- package/dist/attributes/shape/fill/implementations/image.js +16 -0
- package/dist/attributes/shape/fill/implementations/image.js.map +1 -0
- package/dist/attributes/shape/fill/implementations/linear-gradient.d.ts +24 -0
- package/dist/attributes/shape/fill/implementations/linear-gradient.d.ts.map +1 -0
- package/dist/attributes/shape/fill/implementations/linear-gradient.js +33 -0
- package/dist/attributes/shape/fill/implementations/linear-gradient.js.map +1 -0
- package/dist/attributes/shape/fill/implementations/noise.d.ts +22 -0
- package/dist/attributes/shape/fill/implementations/noise.d.ts.map +1 -0
- package/dist/attributes/shape/fill/implementations/noise.js +35 -0
- package/dist/attributes/shape/fill/implementations/noise.js.map +1 -0
- package/dist/attributes/shape/fill/implementations/radial-gradient.d.ts +24 -0
- package/dist/attributes/shape/fill/implementations/radial-gradient.d.ts.map +1 -0
- package/dist/attributes/shape/fill/implementations/radial-gradient.js +33 -0
- package/dist/attributes/shape/fill/implementations/radial-gradient.js.map +1 -0
- package/dist/attributes/shape/fill/implementations/stripe.d.ts +23 -0
- package/dist/attributes/shape/fill/implementations/stripe.d.ts.map +1 -0
- package/dist/attributes/shape/fill/implementations/stripe.js +36 -0
- package/dist/attributes/shape/fill/implementations/stripe.js.map +1 -0
- package/dist/attributes/shape/fill/implementations/video.d.ts +41 -0
- package/dist/attributes/shape/fill/implementations/video.d.ts.map +1 -0
- package/dist/attributes/shape/fill/implementations/video.js +51 -0
- package/dist/attributes/shape/fill/implementations/video.js.map +1 -0
- package/dist/attributes/shape/fill/index.d.ts +18 -0
- package/dist/attributes/shape/fill/index.d.ts.map +1 -0
- package/dist/attributes/shape/fill/index.js +5 -0
- package/dist/attributes/shape/fill/index.js.map +1 -0
- package/dist/attributes/shape/fill/lerp.d.ts +11 -0
- package/dist/attributes/shape/fill/lerp.d.ts.map +1 -0
- package/dist/attributes/shape/fill/lerp.js +17 -0
- package/dist/attributes/shape/fill/lerp.js.map +1 -0
- package/dist/attributes/shape/fill/lerp.test.d.ts +2 -0
- package/dist/attributes/shape/fill/lerp.test.d.ts.map +1 -0
- package/dist/attributes/shape/fill/lerp.test.js +18 -0
- package/dist/attributes/shape/fill/lerp.test.js.map +1 -0
- package/dist/attributes/shape/fill/registry.d.ts +28 -0
- package/dist/attributes/shape/fill/registry.d.ts.map +1 -0
- package/dist/attributes/shape/fill/registry.js +83 -0
- package/dist/attributes/shape/fill/registry.js.map +1 -0
- package/dist/attributes/shape/fill/union.d.ts +50 -0
- package/dist/attributes/shape/fill/union.d.ts.map +1 -0
- package/dist/attributes/shape/fill/union.js +11 -0
- package/dist/attributes/shape/fill/union.js.map +1 -0
- package/dist/attributes/shape/filters/chain.d.ts +65 -0
- package/dist/attributes/shape/filters/chain.d.ts.map +1 -0
- package/dist/attributes/shape/filters/chain.js +83 -0
- package/dist/attributes/shape/filters/chain.js.map +1 -0
- package/dist/attributes/shape/filters/chain.test.d.ts +2 -0
- package/dist/attributes/shape/filters/chain.test.d.ts.map +1 -0
- package/dist/attributes/shape/filters/chain.test.js +49 -0
- package/dist/attributes/shape/filters/chain.test.js.map +1 -0
- package/dist/attributes/shape/filters/implementations/alpha.d.ts +7 -0
- package/dist/attributes/shape/filters/implementations/alpha.d.ts.map +1 -0
- package/dist/attributes/shape/filters/implementations/alpha.js +7 -0
- package/dist/attributes/shape/filters/implementations/alpha.js.map +1 -0
- package/dist/attributes/shape/filters/implementations/blur.d.ts +7 -0
- package/dist/attributes/shape/filters/implementations/blur.d.ts.map +1 -0
- package/dist/attributes/shape/filters/implementations/blur.js +7 -0
- package/dist/attributes/shape/filters/implementations/blur.js.map +1 -0
- package/dist/attributes/shape/filters/implementations/color-adjustment.d.ts +26 -0
- package/dist/attributes/shape/filters/implementations/color-adjustment.d.ts.map +1 -0
- package/dist/attributes/shape/filters/implementations/color-adjustment.js +26 -0
- package/dist/attributes/shape/filters/implementations/color-adjustment.js.map +1 -0
- package/dist/attributes/shape/filters/implementations/color-matrix.d.ts +13 -0
- package/dist/attributes/shape/filters/implementations/color-matrix.d.ts.map +1 -0
- package/dist/attributes/shape/filters/implementations/color-matrix.js +12 -0
- package/dist/attributes/shape/filters/implementations/color-matrix.js.map +1 -0
- package/dist/attributes/shape/filters/implementations/curves.d.ts +17 -0
- package/dist/attributes/shape/filters/implementations/curves.d.ts.map +1 -0
- package/dist/attributes/shape/filters/implementations/curves.js +18 -0
- package/dist/attributes/shape/filters/implementations/curves.js.map +1 -0
- package/dist/attributes/shape/filters/implementations/exposure.d.ts +7 -0
- package/dist/attributes/shape/filters/implementations/exposure.d.ts.map +1 -0
- package/dist/attributes/shape/filters/implementations/exposure.js +7 -0
- package/dist/attributes/shape/filters/implementations/exposure.js.map +1 -0
- package/dist/attributes/shape/filters/implementations/grayscale.d.ts +7 -0
- package/dist/attributes/shape/filters/implementations/grayscale.d.ts.map +1 -0
- package/dist/attributes/shape/filters/implementations/grayscale.js +7 -0
- package/dist/attributes/shape/filters/implementations/grayscale.js.map +1 -0
- package/dist/attributes/shape/filters/index.d.ts +16 -0
- package/dist/attributes/shape/filters/index.d.ts.map +1 -0
- package/dist/attributes/shape/filters/index.js +5 -0
- package/dist/attributes/shape/filters/index.js.map +1 -0
- package/dist/attributes/shape/filters/registry.d.ts +37 -0
- package/dist/attributes/shape/filters/registry.d.ts.map +1 -0
- package/dist/attributes/shape/filters/registry.js +60 -0
- package/dist/attributes/shape/filters/registry.js.map +1 -0
- package/dist/attributes/shape/filters/registry.test.d.ts +5 -0
- package/dist/attributes/shape/filters/registry.test.d.ts.map +1 -0
- package/dist/attributes/shape/filters/registry.test.js +75 -0
- package/dist/attributes/shape/filters/registry.test.js.map +1 -0
- package/dist/attributes/shape/filters/union.d.ts +10 -0
- package/dist/attributes/shape/filters/union.d.ts.map +1 -0
- package/dist/attributes/shape/filters/union.js +2 -0
- package/dist/attributes/shape/filters/union.js.map +1 -0
- package/dist/attributes/shape/path/bezier.d.ts +28 -0
- package/dist/attributes/shape/path/bezier.d.ts.map +1 -0
- package/dist/attributes/shape/path/bezier.js +76 -0
- package/dist/attributes/shape/path/bezier.js.map +1 -0
- package/dist/attributes/shape/path/bezier.test.d.ts +2 -0
- package/dist/attributes/shape/path/bezier.test.d.ts.map +1 -0
- package/dist/attributes/shape/path/bezier.test.js +85 -0
- package/dist/attributes/shape/path/bezier.test.js.map +1 -0
- package/dist/attributes/shape/path/dash.d.ts +15 -0
- package/dist/attributes/shape/path/dash.d.ts.map +1 -0
- package/dist/attributes/shape/path/dash.js +299 -0
- package/dist/attributes/shape/path/dash.js.map +1 -0
- package/dist/attributes/shape/path/dash.test.d.ts +2 -0
- package/dist/attributes/shape/path/dash.test.d.ts.map +1 -0
- package/dist/attributes/shape/path/dash.test.js +36 -0
- package/dist/attributes/shape/path/dash.test.js.map +1 -0
- package/dist/attributes/shape/path/index.d.ts +5 -0
- package/dist/attributes/shape/path/index.d.ts.map +1 -0
- package/dist/attributes/shape/path/index.js +5 -0
- package/dist/attributes/shape/path/index.js.map +1 -0
- package/dist/attributes/shape/path/length.d.ts +14 -0
- package/dist/attributes/shape/path/length.d.ts.map +1 -0
- package/dist/attributes/shape/path/length.js +169 -0
- package/dist/attributes/shape/path/length.js.map +1 -0
- package/dist/attributes/shape/path/length.test.d.ts +2 -0
- package/dist/attributes/shape/path/length.test.d.ts.map +1 -0
- package/dist/attributes/shape/path/length.test.js +56 -0
- package/dist/attributes/shape/path/length.test.js.map +1 -0
- package/dist/attributes/shape/path/subpath.d.ts +15 -0
- package/dist/attributes/shape/path/subpath.d.ts.map +1 -0
- package/dist/attributes/shape/path/subpath.js +486 -0
- package/dist/attributes/shape/path/subpath.js.map +1 -0
- package/dist/attributes/shape/path/subpath.test.d.ts +2 -0
- package/dist/attributes/shape/path/subpath.test.d.ts.map +1 -0
- package/dist/attributes/shape/path/subpath.test.js +54 -0
- package/dist/attributes/shape/path/subpath.test.js.map +1 -0
- package/dist/attributes/shape/shadow/index.d.ts +5 -0
- package/dist/attributes/shape/shadow/index.d.ts.map +1 -0
- package/dist/attributes/shape/shadow/index.js +3 -0
- package/dist/attributes/shape/shadow/index.js.map +1 -0
- package/dist/attributes/shape/shadow/lerp.d.ts +3 -0
- package/dist/attributes/shape/shadow/lerp.d.ts.map +1 -0
- package/dist/attributes/shape/shadow/lerp.js +30 -0
- package/dist/attributes/shape/shadow/lerp.js.map +1 -0
- package/dist/attributes/shape/shadow/resolver.d.ts +22 -0
- package/dist/attributes/shape/shadow/resolver.d.ts.map +1 -0
- package/dist/attributes/shape/shadow/resolver.js +17 -0
- package/dist/attributes/shape/shadow/resolver.js.map +1 -0
- package/dist/attributes/shape/stroke/index.d.ts +5 -0
- package/dist/attributes/shape/stroke/index.d.ts.map +1 -0
- package/dist/attributes/shape/stroke/index.js +3 -0
- package/dist/attributes/shape/stroke/index.js.map +1 -0
- package/dist/attributes/shape/stroke/lerp.d.ts +3 -0
- package/dist/attributes/shape/stroke/lerp.d.ts.map +1 -0
- package/dist/attributes/shape/stroke/lerp.js +30 -0
- package/dist/attributes/shape/stroke/lerp.js.map +1 -0
- package/dist/attributes/shape/stroke/mapper.d.ts +24 -0
- package/dist/attributes/shape/stroke/mapper.d.ts.map +1 -0
- package/dist/attributes/shape/stroke/mapper.js +25 -0
- package/dist/attributes/shape/stroke/mapper.js.map +1 -0
- package/dist/attributes/text/align.d.ts +2 -0
- package/dist/attributes/text/align.d.ts.map +1 -0
- package/dist/attributes/text/align.js +2 -0
- package/dist/attributes/text/align.js.map +1 -0
- package/dist/attributes/text/lerp.d.ts +8 -0
- package/dist/attributes/text/lerp.d.ts.map +1 -0
- package/dist/attributes/text/lerp.js +38 -0
- package/dist/attributes/text/lerp.js.map +1 -0
- package/dist/attributes/text/lerp.test.d.ts +2 -0
- package/dist/attributes/text/lerp.test.d.ts.map +1 -0
- package/dist/attributes/text/lerp.test.js +39 -0
- package/dist/attributes/text/lerp.test.js.map +1 -0
- package/dist/attributes/text/span.d.ts +37 -0
- package/dist/attributes/text/span.d.ts.map +1 -0
- package/dist/attributes/text/span.js +2 -0
- package/dist/attributes/text/span.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx/jsx-dev-runtime.d.ts +19 -0
- package/dist/jsx/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/jsx/jsx-dev-runtime.js +16 -0
- package/dist/jsx/jsx-dev-runtime.js.map +1 -0
- package/dist/jsx/jsx-runtime.d.ts +19 -0
- package/dist/jsx/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx/jsx-runtime.js +16 -0
- package/dist/jsx/jsx-runtime.js.map +1 -0
- package/dist/layout/flex.d.ts +66 -0
- package/dist/layout/flex.d.ts.map +1 -0
- package/dist/layout/flex.js +196 -0
- package/dist/layout/flex.js.map +1 -0
- package/dist/layout/flex.test.d.ts +2 -0
- package/dist/layout/flex.test.d.ts.map +1 -0
- package/dist/layout/flex.test.js +336 -0
- package/dist/layout/flex.test.js.map +1 -0
- package/dist/layout/grid.d.ts +38 -0
- package/dist/layout/grid.d.ts.map +1 -0
- package/dist/layout/grid.js +117 -0
- package/dist/layout/grid.js.map +1 -0
- package/dist/layout/index.d.ts +6 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +6 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/padding.d.ts +19 -0
- package/dist/layout/padding.d.ts.map +1 -0
- package/dist/layout/padding.js +16 -0
- package/dist/layout/padding.js.map +1 -0
- package/dist/layout/padding.test.d.ts +2 -0
- package/dist/layout/padding.test.d.ts.map +1 -0
- package/dist/layout/padding.test.js +39 -0
- package/dist/layout/padding.test.js.map +1 -0
- package/dist/layout/size-resolver.d.ts +13 -0
- package/dist/layout/size-resolver.d.ts.map +1 -0
- package/dist/layout/size-resolver.js +22 -0
- package/dist/layout/size-resolver.js.map +1 -0
- package/dist/layout/size-resolver.test.d.ts +2 -0
- package/dist/layout/size-resolver.test.d.ts.map +1 -0
- package/dist/layout/size-resolver.test.js +24 -0
- package/dist/layout/size-resolver.test.js.map +1 -0
- package/dist/layout/tweens.d.ts +5 -0
- package/dist/layout/tweens.d.ts.map +1 -0
- package/dist/layout/tweens.js +16 -0
- package/dist/layout/tweens.js.map +1 -0
- package/dist/layout/tweens.test.d.ts +2 -0
- package/dist/layout/tweens.test.d.ts.map +1 -0
- package/dist/layout/tweens.test.js +26 -0
- package/dist/layout/tweens.test.js.map +1 -0
- package/dist/nodes/base/boolean-node.d.ts +14 -0
- package/dist/nodes/base/boolean-node.d.ts.map +1 -0
- package/dist/nodes/base/boolean-node.js +34 -0
- package/dist/nodes/base/boolean-node.js.map +1 -0
- package/dist/nodes/base/camera-node.d.ts +27 -0
- package/dist/nodes/base/camera-node.d.ts.map +1 -0
- package/dist/nodes/base/camera-node.js +31 -0
- package/dist/nodes/base/camera-node.js.map +1 -0
- package/dist/nodes/base/mask-node.d.ts +14 -0
- package/dist/nodes/base/mask-node.d.ts.map +1 -0
- package/dist/nodes/base/mask-node.js +37 -0
- package/dist/nodes/base/mask-node.js.map +1 -0
- package/dist/nodes/base/node.d.ts +284 -0
- package/dist/nodes/base/node.d.ts.map +1 -0
- package/dist/nodes/base/node.js +800 -0
- package/dist/nodes/base/node.js.map +1 -0
- package/dist/nodes/base/scene-node.d.ts +45 -0
- package/dist/nodes/base/scene-node.d.ts.map +1 -0
- package/dist/nodes/base/scene-node.js +122 -0
- package/dist/nodes/base/scene-node.js.map +1 -0
- package/dist/nodes/geometry/ellipse-node.d.ts +18 -0
- package/dist/nodes/geometry/ellipse-node.d.ts.map +1 -0
- package/dist/nodes/geometry/ellipse-node.js +55 -0
- package/dist/nodes/geometry/ellipse-node.js.map +1 -0
- package/dist/nodes/geometry/grid-node.d.ts +40 -0
- package/dist/nodes/geometry/grid-node.d.ts.map +1 -0
- package/dist/nodes/geometry/grid-node.js +138 -0
- package/dist/nodes/geometry/grid-node.js.map +1 -0
- package/dist/nodes/geometry/line-node.d.ts +17 -0
- package/dist/nodes/geometry/line-node.d.ts.map +1 -0
- package/dist/nodes/geometry/line-node.js +34 -0
- package/dist/nodes/geometry/line-node.js.map +1 -0
- package/dist/nodes/geometry/path-node.d.ts +17 -0
- package/dist/nodes/geometry/path-node.d.ts.map +1 -0
- package/dist/nodes/geometry/path-node.js +230 -0
- package/dist/nodes/geometry/path-node.js.map +1 -0
- package/dist/nodes/geometry/polygon-node.d.ts +20 -0
- package/dist/nodes/geometry/polygon-node.d.ts.map +1 -0
- package/dist/nodes/geometry/polygon-node.js +42 -0
- package/dist/nodes/geometry/polygon-node.js.map +1 -0
- package/dist/nodes/geometry/polygram-node.d.ts +27 -0
- package/dist/nodes/geometry/polygram-node.d.ts.map +1 -0
- package/dist/nodes/geometry/polygram-node.js +47 -0
- package/dist/nodes/geometry/polygram-node.js.map +1 -0
- package/dist/nodes/geometry/rect-node.d.ts +50 -0
- package/dist/nodes/geometry/rect-node.d.ts.map +1 -0
- package/dist/nodes/geometry/rect-node.js +275 -0
- package/dist/nodes/geometry/rect-node.js.map +1 -0
- package/dist/nodes/geometry/shape-node.d.ts +66 -0
- package/dist/nodes/geometry/shape-node.d.ts.map +1 -0
- package/dist/nodes/geometry/shape-node.js +127 -0
- package/dist/nodes/geometry/shape-node.js.map +1 -0
- package/dist/nodes/index.d.ts +17 -0
- package/dist/nodes/index.d.ts.map +1 -0
- package/dist/nodes/index.js +20 -0
- package/dist/nodes/index.js.map +1 -0
- package/dist/nodes/media/image-node.d.ts +28 -0
- package/dist/nodes/media/image-node.d.ts.map +1 -0
- package/dist/nodes/media/image-node.js +53 -0
- package/dist/nodes/media/image-node.js.map +1 -0
- package/dist/nodes/text/richtext-node.d.ts +46 -0
- package/dist/nodes/text/richtext-node.d.ts.map +1 -0
- package/dist/nodes/text/richtext-node.js +155 -0
- package/dist/nodes/text/richtext-node.js.map +1 -0
- package/dist/nodes/text/text-node.d.ts +42 -0
- package/dist/nodes/text/text-node.d.ts.map +1 -0
- package/dist/nodes/text/text-node.js +123 -0
- package/dist/nodes/text/text-node.js.map +1 -0
- package/dist/platform/audio-device.d.ts +40 -0
- package/dist/platform/audio-device.d.ts.map +1 -0
- package/dist/platform/audio-device.js +19 -0
- package/dist/platform/audio-device.js.map +1 -0
- package/dist/platform/index.d.ts +4 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +4 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/master-clock.d.ts +54 -0
- package/dist/platform/master-clock.d.ts.map +1 -0
- package/dist/platform/master-clock.js +85 -0
- package/dist/platform/master-clock.js.map +1 -0
- package/dist/platform/storage-adapter.d.ts +29 -0
- package/dist/platform/storage-adapter.d.ts.map +1 -0
- package/dist/platform/storage-adapter.js +70 -0
- package/dist/platform/storage-adapter.js.map +1 -0
- package/dist/project/config.d.ts +24 -0
- package/dist/project/config.d.ts.map +1 -0
- package/dist/project/config.js +14 -0
- package/dist/project/config.js.map +1 -0
- package/dist/project/config.test.d.ts +2 -0
- package/dist/project/config.test.d.ts.map +1 -0
- package/dist/project/config.test.js +28 -0
- package/dist/project/config.test.js.map +1 -0
- package/dist/project/index.d.ts +3 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +3 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/tree.d.ts +48 -0
- package/dist/project/tree.d.ts.map +1 -0
- package/dist/project/tree.js +11 -0
- package/dist/project/tree.js.map +1 -0
- package/dist/render/build-stage.d.ts +63 -0
- package/dist/render/build-stage.d.ts.map +1 -0
- package/dist/render/build-stage.js +91 -0
- package/dist/render/build-stage.js.map +1 -0
- package/dist/render/descriptors/ellipse.d.ts +10 -0
- package/dist/render/descriptors/ellipse.d.ts.map +1 -0
- package/dist/render/descriptors/ellipse.js +20 -0
- package/dist/render/descriptors/ellipse.js.map +1 -0
- package/dist/render/descriptors/image.d.ts +12 -0
- package/dist/render/descriptors/image.d.ts.map +1 -0
- package/dist/render/descriptors/image.js +12 -0
- package/dist/render/descriptors/image.js.map +1 -0
- package/dist/render/descriptors/latex.d.ts +6 -0
- package/dist/render/descriptors/latex.d.ts.map +1 -0
- package/dist/render/descriptors/latex.js +2 -0
- package/dist/render/descriptors/latex.js.map +1 -0
- package/dist/render/descriptors/line.d.ts +9 -0
- package/dist/render/descriptors/line.d.ts.map +1 -0
- package/dist/render/descriptors/line.js +19 -0
- package/dist/render/descriptors/line.js.map +1 -0
- package/dist/render/descriptors/path-builder.d.ts +14 -0
- package/dist/render/descriptors/path-builder.d.ts.map +1 -0
- package/dist/render/descriptors/path-builder.js +34 -0
- package/dist/render/descriptors/path-builder.js.map +1 -0
- package/dist/render/descriptors/path.d.ts +105 -0
- package/dist/render/descriptors/path.d.ts.map +1 -0
- package/dist/render/descriptors/path.js +45 -0
- package/dist/render/descriptors/path.js.map +1 -0
- package/dist/render/descriptors/path.test.d.ts +2 -0
- package/dist/render/descriptors/path.test.d.ts.map +1 -0
- package/dist/render/descriptors/path.test.js +40 -0
- package/dist/render/descriptors/path.test.js.map +1 -0
- package/dist/render/descriptors/polygon.d.ts +9 -0
- package/dist/render/descriptors/polygon.d.ts.map +1 -0
- package/dist/render/descriptors/polygon.js +19 -0
- package/dist/render/descriptors/polygon.js.map +1 -0
- package/dist/render/descriptors/polygram.d.ts +10 -0
- package/dist/render/descriptors/polygram.d.ts.map +1 -0
- package/dist/render/descriptors/polygram.js +20 -0
- package/dist/render/descriptors/polygram.js.map +1 -0
- package/dist/render/descriptors/rect.d.ts +9 -0
- package/dist/render/descriptors/rect.d.ts.map +1 -0
- package/dist/render/descriptors/rect.js +18 -0
- package/dist/render/descriptors/rect.js.map +1 -0
- package/dist/render/descriptors/richtext.d.ts +12 -0
- package/dist/render/descriptors/richtext.d.ts.map +1 -0
- package/dist/render/descriptors/richtext.js +20 -0
- package/dist/render/descriptors/richtext.js.map +1 -0
- package/dist/render/descriptors/shape.d.ts +6 -0
- package/dist/render/descriptors/shape.d.ts.map +1 -0
- package/dist/render/descriptors/shape.js +2 -0
- package/dist/render/descriptors/shape.js.map +1 -0
- package/dist/render/descriptors/text.d.ts +19 -0
- package/dist/render/descriptors/text.d.ts.map +1 -0
- package/dist/render/descriptors/text.js +27 -0
- package/dist/render/descriptors/text.js.map +1 -0
- package/dist/render/descriptors/transform.d.ts +16 -0
- package/dist/render/descriptors/transform.d.ts.map +1 -0
- package/dist/render/descriptors/transform.js +14 -0
- package/dist/render/descriptors/transform.js.map +1 -0
- package/dist/render/index.d.ts +17 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +16 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/measure-scope.d.ts +25 -0
- package/dist/render/measure-scope.d.ts.map +1 -0
- package/dist/render/measure-scope.js +11 -0
- package/dist/render/measure-scope.js.map +1 -0
- package/dist/render/render-context.d.ts +258 -0
- package/dist/render/render-context.d.ts.map +1 -0
- package/dist/render/render-context.js +95 -0
- package/dist/render/render-context.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/playback-controller.d.ts +105 -0
- package/dist/runtime/playback-controller.d.ts.map +1 -0
- package/dist/runtime/playback-controller.js +244 -0
- package/dist/runtime/playback-controller.js.map +1 -0
- package/dist/runtime/playback-controller.test.d.ts +2 -0
- package/dist/runtime/playback-controller.test.d.ts.map +1 -0
- package/dist/runtime/playback-controller.test.js +148 -0
- package/dist/runtime/playback-controller.test.js.map +1 -0
- package/dist/runtime/precompisition.d.ts +107 -0
- package/dist/runtime/precompisition.d.ts.map +1 -0
- package/dist/runtime/precompisition.js +202 -0
- package/dist/runtime/precompisition.js.map +1 -0
- package/dist/runtime/precompisition.test.d.ts +2 -0
- package/dist/runtime/precompisition.test.d.ts.map +1 -0
- package/dist/runtime/precompisition.test.js +138 -0
- package/dist/runtime/precompisition.test.js.map +1 -0
- package/dist/runtime/runtime.fixtures.d.ts +158 -0
- package/dist/runtime/runtime.fixtures.d.ts.map +1 -0
- package/dist/runtime/runtime.fixtures.js +264 -0
- package/dist/runtime/runtime.fixtures.js.map +1 -0
- package/dist/runtime/state-evaluator.d.ts +76 -0
- package/dist/runtime/state-evaluator.d.ts.map +1 -0
- package/dist/runtime/state-evaluator.js +162 -0
- package/dist/runtime/state-evaluator.js.map +1 -0
- package/dist/runtime/state-evaluator.test.d.ts +2 -0
- package/dist/runtime/state-evaluator.test.d.ts.map +1 -0
- package/dist/runtime/state-evaluator.test.js +122 -0
- package/dist/runtime/state-evaluator.test.js.map +1 -0
- package/dist/signals/create.d.ts +21 -0
- package/dist/signals/create.d.ts.map +1 -0
- package/dist/signals/create.js +74 -0
- package/dist/signals/create.js.map +1 -0
- package/dist/signals/create.test.d.ts +2 -0
- package/dist/signals/create.test.d.ts.map +1 -0
- package/dist/signals/create.test.js +81 -0
- package/dist/signals/create.test.js.map +1 -0
- package/dist/signals/host.d.ts +11 -0
- package/dist/signals/host.d.ts.map +1 -0
- package/dist/signals/host.js +10 -0
- package/dist/signals/host.js.map +1 -0
- package/dist/signals/index.d.ts +4 -0
- package/dist/signals/index.d.ts.map +1 -0
- package/dist/signals/index.js +3 -0
- package/dist/signals/index.js.map +1 -0
- package/dist/signals/signal-cell.test.d.ts +2 -0
- package/dist/signals/signal-cell.test.d.ts.map +1 -0
- package/dist/signals/signal-cell.test.js +202 -0
- package/dist/signals/signal-cell.test.js.map +1 -0
- package/dist/signals/signal.d.ts +46 -0
- package/dist/signals/signal.d.ts.map +1 -0
- package/dist/signals/signal.js +162 -0
- package/dist/signals/signal.js.map +1 -0
- package/dist/signals/signal.test.d.ts +2 -0
- package/dist/signals/signal.test.d.ts.map +1 -0
- package/dist/signals/signal.test.js +192 -0
- package/dist/signals/signal.test.js.map +1 -0
- package/dist/signals/subscriber.d.ts +5 -0
- package/dist/signals/subscriber.d.ts.map +1 -0
- package/dist/signals/subscriber.js +2 -0
- package/dist/signals/subscriber.js.map +1 -0
- package/dist/tween/animation-builder.d.ts +74 -0
- package/dist/tween/animation-builder.d.ts.map +1 -0
- package/dist/tween/animation-builder.js +99 -0
- package/dist/tween/animation-builder.js.map +1 -0
- package/dist/tween/ease/constants.d.ts +13 -0
- package/dist/tween/ease/constants.d.ts.map +1 -0
- package/dist/tween/ease/constants.js +71 -0
- package/dist/tween/ease/constants.js.map +1 -0
- package/dist/tween/ease/type.d.ts +2 -0
- package/dist/tween/ease/type.d.ts.map +1 -0
- package/dist/tween/ease/type.js +2 -0
- package/dist/tween/ease/type.js.map +1 -0
- package/dist/tween/eases.test.d.ts +2 -0
- package/dist/tween/eases.test.d.ts.map +1 -0
- package/dist/tween/eases.test.js +91 -0
- package/dist/tween/eases.test.js.map +1 -0
- package/dist/tween/generator.d.ts +22 -0
- package/dist/tween/generator.d.ts.map +1 -0
- package/dist/tween/generator.js +2 -0
- package/dist/tween/generator.js.map +1 -0
- package/dist/tween/index.d.ts +12 -0
- package/dist/tween/index.d.ts.map +1 -0
- package/dist/tween/index.js +12 -0
- package/dist/tween/index.js.map +1 -0
- package/dist/tween/lerp.d.ts +11 -0
- package/dist/tween/lerp.d.ts.map +1 -0
- package/dist/tween/lerp.js +13 -0
- package/dist/tween/lerp.js.map +1 -0
- package/dist/tween/lerp.test.d.ts +2 -0
- package/dist/tween/lerp.test.d.ts.map +1 -0
- package/dist/tween/lerp.test.js +22 -0
- package/dist/tween/lerp.test.js.map +1 -0
- package/dist/tween/parallel.d.ts +23 -0
- package/dist/tween/parallel.d.ts.map +1 -0
- package/dist/tween/parallel.js +79 -0
- package/dist/tween/parallel.js.map +1 -0
- package/dist/tween/prepare.d.ts +34 -0
- package/dist/tween/prepare.d.ts.map +1 -0
- package/dist/tween/prepare.js +52 -0
- package/dist/tween/prepare.js.map +1 -0
- package/dist/tween/prepare.test.d.ts +2 -0
- package/dist/tween/prepare.test.d.ts.map +1 -0
- package/dist/tween/prepare.test.js +44 -0
- package/dist/tween/prepare.test.js.map +1 -0
- package/dist/tween/sequence.d.ts +19 -0
- package/dist/tween/sequence.d.ts.map +1 -0
- package/dist/tween/sequence.js +22 -0
- package/dist/tween/sequence.js.map +1 -0
- package/dist/tween/sequence.test.d.ts +2 -0
- package/dist/tween/sequence.test.d.ts.map +1 -0
- package/dist/tween/sequence.test.js +68 -0
- package/dist/tween/sequence.test.js.map +1 -0
- package/dist/tween/stepper.d.ts +34 -0
- package/dist/tween/stepper.d.ts.map +1 -0
- package/dist/tween/stepper.js +4 -0
- package/dist/tween/stepper.js.map +1 -0
- package/dist/tween/tests/batched-parallel.test.d.ts +2 -0
- package/dist/tween/tests/batched-parallel.test.d.ts.map +1 -0
- package/dist/tween/tests/batched-parallel.test.js +76 -0
- package/dist/tween/tests/batched-parallel.test.js.map +1 -0
- package/dist/tween/tests/parallel.test.d.ts +2 -0
- package/dist/tween/tests/parallel.test.d.ts.map +1 -0
- package/dist/tween/tests/parallel.test.js +129 -0
- package/dist/tween/tests/parallel.test.js.map +1 -0
- package/dist/tween/tests/realtime.test.d.ts +2 -0
- package/dist/tween/tests/realtime.test.d.ts.map +1 -0
- package/dist/tween/tests/realtime.test.js +76 -0
- package/dist/tween/tests/realtime.test.js.map +1 -0
- package/dist/tween/tween.d.ts +18 -0
- package/dist/tween/tween.d.ts.map +1 -0
- package/dist/tween/tween.js +28 -0
- package/dist/tween/tween.js.map +1 -0
- package/dist/tween/tween.test.d.ts +2 -0
- package/dist/tween/tween.test.d.ts.map +1 -0
- package/dist/tween/tween.test.js +38 -0
- package/dist/tween/tween.test.js.map +1 -0
- package/dist/tween/wait.d.ts +19 -0
- package/dist/tween/wait.d.ts.map +1 -0
- package/dist/tween/wait.js +25 -0
- package/dist/tween/wait.js.map +1 -0
- package/dist/tween/wait.test.d.ts +2 -0
- package/dist/tween/wait.test.d.ts.map +1 -0
- package/dist/tween/wait.test.js +35 -0
- package/dist/tween/wait.test.js.map +1 -0
- package/dist/util/clamp.d.ts +12 -0
- package/dist/util/clamp.d.ts.map +1 -0
- package/dist/util/clamp.js +16 -0
- package/dist/util/clamp.js.map +1 -0
- package/dist/util/clamp.test.d.ts +2 -0
- package/dist/util/clamp.test.d.ts.map +1 -0
- package/dist/util/clamp.test.js +31 -0
- package/dist/util/clamp.test.js.map +1 -0
- package/dist/util/index.d.ts +4 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +4 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/random.d.ts +16 -0
- package/dist/util/random.d.ts.map +1 -0
- package/dist/util/random.js +28 -0
- package/dist/util/random.js.map +1 -0
- package/dist/util/random.test.d.ts +2 -0
- package/dist/util/random.test.d.ts.map +1 -0
- package/dist/util/random.test.js +42 -0
- package/dist/util/random.test.js.map +1 -0
- package/dist/util/range.d.ts +12 -0
- package/dist/util/range.d.ts.map +1 -0
- package/dist/util/range.js +11 -0
- package/dist/util/range.js.map +1 -0
- package/dist/util/reference.d.ts +15 -0
- package/dist/util/reference.d.ts.map +1 -0
- package/dist/util/reference.js +20 -0
- package/dist/util/reference.js.map +1 -0
- package/dist/util/reference.test.d.ts +2 -0
- package/dist/util/reference.test.d.ts.map +1 -0
- package/dist/util/reference.test.js +32 -0
- package/dist/util/reference.test.js.map +1 -0
- package/package.json +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# @motion-script/core
|
|
2
|
+
|
|
3
|
+
The engine-agnostic animation library at the heart of [Motion Script](https://motionscript.dev).
|
|
4
|
+
It provides the scene graph, generator-driven animation runtime, reactive
|
|
5
|
+
signals, tweening, flex layout, and the JSX runtime used to describe scenes
|
|
6
|
+
declaratively independent of any particular rendering backend.
|
|
7
|
+
|
|
8
|
+
```tsx
|
|
9
|
+
import { Scene, createRef, Rect, Ellipse } from '@motion-script/core';
|
|
10
|
+
|
|
11
|
+
export class ShapeScene extends Scene {
|
|
12
|
+
*build() {
|
|
13
|
+
const lens = createRef<Ellipse>();
|
|
14
|
+
|
|
15
|
+
this.add(
|
|
16
|
+
<Rect width={400} height={400} fill="white" borderRadius={20}>
|
|
17
|
+
<Ellipse ref={lens} x={200} y={200} width={350} height={350} />
|
|
18
|
+
</Rect>,
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
yield* lens().to({ x: 700 }, 3);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## What's in here
|
|
27
|
+
|
|
28
|
+
- **Nodes** — the scene graph (`Scene`, `Rect`, `Ellipse`, `Txt`, paths, and
|
|
29
|
+
more) with attributes for fills, gradients, filters, and SkSL shader effects.
|
|
30
|
+
- **Runtime** — drives animations from generators: `yield*` a tween or signal
|
|
31
|
+
change and the engine advances time, interpolating attributes frame by frame.
|
|
32
|
+
- **Signals** — reactive values that nodes and tweens can depend on.
|
|
33
|
+
- **Tweens** — interpolation and easing for animating attributes over time.
|
|
34
|
+
- **Layout** — a flexbox-based layout system for positioning nodes.
|
|
35
|
+
- **JSX runtime** — lets scenes be authored as TSX (`./jsx/jsx-runtime`,
|
|
36
|
+
`./jsx/jsx-dev-runtime`).
|
|
37
|
+
- **Project / render / platform / assets** — the abstractions a rendering
|
|
38
|
+
backend (such as [`@motion-script/web`](../web)) implements to turn a scene
|
|
39
|
+
graph into pixels, audio, and exported video.
|
|
40
|
+
|
|
41
|
+
This package has no rendering backend of its own — pair it with
|
|
42
|
+
[`@motion-script/web`](../web) (Skia/CanvasKit) or build your own backend
|
|
43
|
+
against the `platform`/`render` abstractions.
|
|
44
|
+
|
|
45
|
+
## Usage
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm install @motion-script/core
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
For a guided setup, scaffold a project instead with:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npm create motion-script@latest
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
See the [docs](https://motionscript.dev/docs) for the full feature set and API
|
|
58
|
+
reference.
|
|
59
|
+
|
|
60
|
+
## Development
|
|
61
|
+
|
|
62
|
+
From the monorepo root:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pnpm --filter @motion-script/core build
|
|
66
|
+
pnpm --filter @motion-script/core test
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
See [CONTRIBUTING.md](../../CONTRIBUTING.md) for the architecture overview.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { type AudioMeta, type FontMeta, type ImageMeta, AssetManifest, type VideoMeta } from "./manifest";
|
|
2
|
+
/**
|
|
3
|
+
* A read-only query engine for retrieving strongly-typed asset metadata from an {@link AssetManifest}.
|
|
4
|
+
* * Use this class to safely extract dimensions, durations, and specific configurations for images,
|
|
5
|
+
* videos, audio files, and fonts, with built-in runtime validation.
|
|
6
|
+
* * @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { AssetCatalog } from './catalog';
|
|
9
|
+
* import { manifest } from './generated-manifest';
|
|
10
|
+
* * const catalog = new AssetCatalog(manifest);
|
|
11
|
+
* const dimensions = catalog.getImageSize("hero-banner.png");
|
|
12
|
+
* console.log(dimensions.width); // 1920
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare class AssetCatalog {
|
|
16
|
+
private manifest;
|
|
17
|
+
/**
|
|
18
|
+
* Creates an instance of AssetCatalog.
|
|
19
|
+
* @param manifest - The underlying immutable asset manifest lookup structure.
|
|
20
|
+
*/
|
|
21
|
+
constructor(manifest: AssetManifest);
|
|
22
|
+
/**
|
|
23
|
+
* Retrieves the complete metadata object for a specified image.
|
|
24
|
+
* * @param src - The unique source path or identifier of the image asset.
|
|
25
|
+
* @returns The associated {@link ImageMeta} block.
|
|
26
|
+
* @throws {Error} If the image resource does not exist in the manifest.
|
|
27
|
+
*/
|
|
28
|
+
getImageMeta(src: string): ImageMeta;
|
|
29
|
+
/**
|
|
30
|
+
* Retrieves the complete metadata object for a specified video.
|
|
31
|
+
* * @param src - The unique source path or identifier of the video asset.
|
|
32
|
+
* @returns The associated {@link VideoMeta} block.
|
|
33
|
+
* @throws {Error} If the video resource does not exist in the manifest.
|
|
34
|
+
*/
|
|
35
|
+
getVideoMeta(src: string): VideoMeta;
|
|
36
|
+
/**
|
|
37
|
+
* Retrieves the complete metadata object for a specified audio track.
|
|
38
|
+
* * @param src - The unique source path or identifier of the audio asset.
|
|
39
|
+
* @returns The associated {@link AudioMeta} block.
|
|
40
|
+
* @throws {Error} If the audio resource does not exist in the manifest.
|
|
41
|
+
*/
|
|
42
|
+
getAudioMeta(src: string): AudioMeta;
|
|
43
|
+
/**
|
|
44
|
+
* Retrieves the complete metadata object for a specified font face.
|
|
45
|
+
* * @param key - The unique lookup key or family name of the font asset.
|
|
46
|
+
* @returns The associated {@link FontMeta} block.
|
|
47
|
+
* @throws {Error} If the font resource key does not exist in the manifest.
|
|
48
|
+
*/
|
|
49
|
+
getFontMeta(key: string): FontMeta;
|
|
50
|
+
/**
|
|
51
|
+
* Return every font face registered for a family, across all weights and
|
|
52
|
+
* slants. Used to register the whole family with the renderer so the font
|
|
53
|
+
* matcher can resolve any requested weight to its nearest available file.
|
|
54
|
+
* @param fontFamily - The font family name (e.g. "Inter").
|
|
55
|
+
* @returns All matching {@link FontMeta} entries; empty if the family is unknown.
|
|
56
|
+
*/
|
|
57
|
+
getFontFamilyMetas(fontFamily: string): FontMeta[];
|
|
58
|
+
/**
|
|
59
|
+
* Convenient shortcut to get the exact playback duration of a video asset.
|
|
60
|
+
* * @param src - The unique source path or identifier of the video asset.
|
|
61
|
+
* @returns The duration of the video in seconds (or frames, depending on manifest standard).
|
|
62
|
+
* @throws {Error} Inherits the missing asset error from {@link getVideoMeta}.
|
|
63
|
+
*/
|
|
64
|
+
getVideoDuration(src: string): number;
|
|
65
|
+
/**
|
|
66
|
+
* Convenient shortcut to get the exact playback duration of an audio asset.
|
|
67
|
+
* * @param src - The unique source path or identifier of the audio asset.
|
|
68
|
+
* @returns The duration of the audio in seconds.
|
|
69
|
+
* @throws {Error} Inherits the missing asset error from {@link getAudioMeta}.
|
|
70
|
+
*/
|
|
71
|
+
getAudioDuration(src: string): number;
|
|
72
|
+
/**
|
|
73
|
+
* Convenient shortcut to isolate the structural layout dimensions of an image asset.
|
|
74
|
+
* * @param src - The unique source path or identifier of the image asset.
|
|
75
|
+
* @returns An object containing the `width` and `height` dimensions of the asset.
|
|
76
|
+
* @throws {Error} Inherits the missing asset error from {@link getImageMeta}.
|
|
77
|
+
*/
|
|
78
|
+
getImageSize(src: string): {
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/assets/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1G;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY;IAKT,OAAO,CAAC,QAAQ;IAJ5B;;;OAGG;gBACiB,QAAQ,EAAE,aAAa;IAE3C;;;;;OAKG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAMpC;;;;;OAKG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAMpC;;;;;OAKG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAMpC;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAMlC;;;;;;OAMG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAIlD;;;;;OAKG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;;OAKG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;;OAKG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAI/D"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A read-only query engine for retrieving strongly-typed asset metadata from an {@link AssetManifest}.
|
|
3
|
+
* * Use this class to safely extract dimensions, durations, and specific configurations for images,
|
|
4
|
+
* videos, audio files, and fonts, with built-in runtime validation.
|
|
5
|
+
* * @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { AssetCatalog } from './catalog';
|
|
8
|
+
* import { manifest } from './generated-manifest';
|
|
9
|
+
* * const catalog = new AssetCatalog(manifest);
|
|
10
|
+
* const dimensions = catalog.getImageSize("hero-banner.png");
|
|
11
|
+
* console.log(dimensions.width); // 1920
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export class AssetCatalog {
|
|
15
|
+
manifest;
|
|
16
|
+
/**
|
|
17
|
+
* Creates an instance of AssetCatalog.
|
|
18
|
+
* @param manifest - The underlying immutable asset manifest lookup structure.
|
|
19
|
+
*/
|
|
20
|
+
constructor(manifest) {
|
|
21
|
+
this.manifest = manifest;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Retrieves the complete metadata object for a specified image.
|
|
25
|
+
* * @param src - The unique source path or identifier of the image asset.
|
|
26
|
+
* @returns The associated {@link ImageMeta} block.
|
|
27
|
+
* @throws {Error} If the image resource does not exist in the manifest.
|
|
28
|
+
*/
|
|
29
|
+
getImageMeta(src) {
|
|
30
|
+
const meta = this.manifest.image[src];
|
|
31
|
+
if (!meta)
|
|
32
|
+
throw new Error(`No image metadata for src: ${src}`);
|
|
33
|
+
return meta;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Retrieves the complete metadata object for a specified video.
|
|
37
|
+
* * @param src - The unique source path or identifier of the video asset.
|
|
38
|
+
* @returns The associated {@link VideoMeta} block.
|
|
39
|
+
* @throws {Error} If the video resource does not exist in the manifest.
|
|
40
|
+
*/
|
|
41
|
+
getVideoMeta(src) {
|
|
42
|
+
const meta = this.manifest.video[src];
|
|
43
|
+
if (!meta)
|
|
44
|
+
throw new Error(`No video metadata for src: ${src}`);
|
|
45
|
+
return meta;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Retrieves the complete metadata object for a specified audio track.
|
|
49
|
+
* * @param src - The unique source path or identifier of the audio asset.
|
|
50
|
+
* @returns The associated {@link AudioMeta} block.
|
|
51
|
+
* @throws {Error} If the audio resource does not exist in the manifest.
|
|
52
|
+
*/
|
|
53
|
+
getAudioMeta(src) {
|
|
54
|
+
const meta = this.manifest.audio[src];
|
|
55
|
+
if (!meta)
|
|
56
|
+
throw new Error(`No audio metadata for src: ${src}`);
|
|
57
|
+
return meta;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Retrieves the complete metadata object for a specified font face.
|
|
61
|
+
* * @param key - The unique lookup key or family name of the font asset.
|
|
62
|
+
* @returns The associated {@link FontMeta} block.
|
|
63
|
+
* @throws {Error} If the font resource key does not exist in the manifest.
|
|
64
|
+
*/
|
|
65
|
+
getFontMeta(key) {
|
|
66
|
+
const meta = this.manifest.font[key];
|
|
67
|
+
if (!meta)
|
|
68
|
+
throw new Error(`No font metadata for key: ${key}`);
|
|
69
|
+
return meta;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Return every font face registered for a family, across all weights and
|
|
73
|
+
* slants. Used to register the whole family with the renderer so the font
|
|
74
|
+
* matcher can resolve any requested weight to its nearest available file.
|
|
75
|
+
* @param fontFamily - The font family name (e.g. "Inter").
|
|
76
|
+
* @returns All matching {@link FontMeta} entries; empty if the family is unknown.
|
|
77
|
+
*/
|
|
78
|
+
getFontFamilyMetas(fontFamily) {
|
|
79
|
+
return Object.values(this.manifest.font).filter(meta => meta.fontFamily === fontFamily);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Convenient shortcut to get the exact playback duration of a video asset.
|
|
83
|
+
* * @param src - The unique source path or identifier of the video asset.
|
|
84
|
+
* @returns The duration of the video in seconds (or frames, depending on manifest standard).
|
|
85
|
+
* @throws {Error} Inherits the missing asset error from {@link getVideoMeta}.
|
|
86
|
+
*/
|
|
87
|
+
getVideoDuration(src) {
|
|
88
|
+
return this.getVideoMeta(src).duration;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Convenient shortcut to get the exact playback duration of an audio asset.
|
|
92
|
+
* * @param src - The unique source path or identifier of the audio asset.
|
|
93
|
+
* @returns The duration of the audio in seconds.
|
|
94
|
+
* @throws {Error} Inherits the missing asset error from {@link getAudioMeta}.
|
|
95
|
+
*/
|
|
96
|
+
getAudioDuration(src) {
|
|
97
|
+
return this.getAudioMeta(src).duration;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Convenient shortcut to isolate the structural layout dimensions of an image asset.
|
|
101
|
+
* * @param src - The unique source path or identifier of the image asset.
|
|
102
|
+
* @returns An object containing the `width` and `height` dimensions of the asset.
|
|
103
|
+
* @throws {Error} Inherits the missing asset error from {@link getImageMeta}.
|
|
104
|
+
*/
|
|
105
|
+
getImageSize(src) {
|
|
106
|
+
const { width, height } = this.getImageMeta(src);
|
|
107
|
+
return { width, height };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/assets/catalog.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,YAAY;IAKD;IAJpB;;;OAGG;IACH,YAAoB,QAAuB;QAAvB,aAAQ,GAAR,QAAQ,CAAe;IAAI,CAAC;IAEhD;;;;;OAKG;IACH,YAAY,CAAC,GAAW;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,GAAW;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,GAAW;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,GAAW;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB,CAAC,UAAkB;QACjC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,GAAW;QACpB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;CACJ"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { AssetCatalog } from "./catalog";
|
|
2
|
+
export type { ImageMeta, VideoMeta, AudioMeta, FontMeta, AssetMeta, AssetManifest } from "./manifest";
|
|
3
|
+
export { AssetTracker, type LoaderFunction } from "./tracker";
|
|
4
|
+
export { AssetManager } from "./manager";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAuB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AudioDevice } from "../platform/audio-device";
|
|
2
|
+
import { StorageAdapter } from "../platform/storage-adapter";
|
|
3
|
+
import { PrecompResult } from "../runtime/precompisition";
|
|
4
|
+
/**
|
|
5
|
+
* Coordinates asset loading and audio synchronization during playback.
|
|
6
|
+
* Wraps a {@link PrecompResult} and delegates storage/audio work to platform adapters.
|
|
7
|
+
*/
|
|
8
|
+
export declare class AssetManager {
|
|
9
|
+
private readonly precomp;
|
|
10
|
+
private readonly storageAdapter;
|
|
11
|
+
private readonly audioDevice;
|
|
12
|
+
private lastAudioRequestKey;
|
|
13
|
+
private lastAudioSrcs;
|
|
14
|
+
private audioFetching;
|
|
15
|
+
constructor(precomp: PrecompResult, storageAdapter: StorageAdapter, audioDevice: AudioDevice);
|
|
16
|
+
/**
|
|
17
|
+
* Blocking load for seek and initial render. Waits for every asset whose
|
|
18
|
+
* cacheAt <= frame and endFrame >= frame to be ready, then schedules audio.
|
|
19
|
+
*/
|
|
20
|
+
loadAt(frame: number): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Non-blocking incremental prefetch called after each render tick. Fires
|
|
23
|
+
* loads for assets whose cacheAt window has been reached without blocking.
|
|
24
|
+
*/
|
|
25
|
+
prefetch(frame: number): void;
|
|
26
|
+
/**
|
|
27
|
+
* Push the current audio working set to the AudioDevice. Called after each
|
|
28
|
+
* render tick so the device stays in sync with the scene's audio requests.
|
|
29
|
+
*/
|
|
30
|
+
syncAudio(frame: number): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/assets/manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;GAGG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,aAAa,CAAoC;gBAGrD,OAAO,EAAE,aAAa,EACtB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW;IAS5B;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1C;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU7B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CA4CjC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coordinates asset loading and audio synchronization during playback.
|
|
3
|
+
* Wraps a {@link PrecompResult} and delegates storage/audio work to platform adapters.
|
|
4
|
+
*/
|
|
5
|
+
export class AssetManager {
|
|
6
|
+
precomp;
|
|
7
|
+
storageAdapter;
|
|
8
|
+
audioDevice;
|
|
9
|
+
lastAudioRequestKey = "";
|
|
10
|
+
lastAudioSrcs = new Set();
|
|
11
|
+
audioFetching = new Map();
|
|
12
|
+
constructor(precomp, storageAdapter, audioDevice) {
|
|
13
|
+
this.precomp = precomp;
|
|
14
|
+
this.storageAdapter = storageAdapter;
|
|
15
|
+
this.audioDevice = audioDevice;
|
|
16
|
+
}
|
|
17
|
+
// ─── Public surface ───────────────────────────────────────────────────────
|
|
18
|
+
/**
|
|
19
|
+
* Blocking load for seek and initial render. Waits for every asset whose
|
|
20
|
+
* cacheAt <= frame and endFrame >= frame to be ready, then schedules audio.
|
|
21
|
+
*/
|
|
22
|
+
async loadAt(frame) {
|
|
23
|
+
const jobs = [];
|
|
24
|
+
for (const [key, track] of this.precomp.assets) {
|
|
25
|
+
if (track.cacheAt <= frame && track.record.endFrame >= frame) {
|
|
26
|
+
jobs.push(this.storageAdapter.loadAsset(key, track.record));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
await Promise.all(jobs);
|
|
30
|
+
this.syncAudio(frame);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Non-blocking incremental prefetch called after each render tick. Fires
|
|
34
|
+
* loads for assets whose cacheAt window has been reached without blocking.
|
|
35
|
+
*/
|
|
36
|
+
prefetch(frame) {
|
|
37
|
+
for (const [key, track] of this.precomp.assets) {
|
|
38
|
+
if (track.cacheAt <= frame && track.record.endFrame >= frame) {
|
|
39
|
+
this.storageAdapter.loadAsset(key, track.record).catch(err => {
|
|
40
|
+
console.error(`[AssetManager] prefetch failed for ${key}:`, err);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Push the current audio working set to the AudioDevice. Called after each
|
|
47
|
+
* render tick so the device stays in sync with the scene's audio requests.
|
|
48
|
+
*/
|
|
49
|
+
syncAudio(frame) {
|
|
50
|
+
const currentTime = frame / this.precomp.fps;
|
|
51
|
+
const inWindow = [];
|
|
52
|
+
const srcs = new Set();
|
|
53
|
+
const seen = new Set();
|
|
54
|
+
for (const scene of this.precomp.scenes) {
|
|
55
|
+
const sceneOffsetSecs = scene.startFrame / this.precomp.fps;
|
|
56
|
+
for (const req of scene.audioRequests) {
|
|
57
|
+
const globalStart = sceneOffsetSecs + req.startAt;
|
|
58
|
+
const globalEnd = sceneOffsetSecs + req.endAt;
|
|
59
|
+
if (globalEnd < currentTime || globalStart > currentTime + 10)
|
|
60
|
+
continue;
|
|
61
|
+
const stableId = stableKey(req, sceneOffsetSecs);
|
|
62
|
+
if (seen.has(stableId))
|
|
63
|
+
continue;
|
|
64
|
+
seen.add(stableId);
|
|
65
|
+
inWindow.push({ ...req, id: stableId, startAt: globalStart, endAt: globalEnd });
|
|
66
|
+
srcs.add(req.src);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
for (const src of srcs) {
|
|
70
|
+
if (!this.audioDevice.has(src) && !this.audioFetching.has(src)) {
|
|
71
|
+
const job = this.storageAdapter.fetchAudioData(src)
|
|
72
|
+
.then(data => this.audioDevice.append(src, data))
|
|
73
|
+
.finally(() => this.audioFetching.delete(src));
|
|
74
|
+
this.audioFetching.set(src, job);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const requestKey = audioSignature(inWindow);
|
|
78
|
+
if (requestKey !== this.lastAudioRequestKey) {
|
|
79
|
+
this.audioDevice.schedule(inWindow);
|
|
80
|
+
this.lastAudioRequestKey = requestKey;
|
|
81
|
+
}
|
|
82
|
+
if (!setsEqual(this.lastAudioSrcs, srcs)) {
|
|
83
|
+
this.audioDevice.retain(srcs);
|
|
84
|
+
this.lastAudioSrcs = srcs;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
89
|
+
/** Produce a deterministic string key that uniquely identifies an audio request's playback identity. */
|
|
90
|
+
function stableKey(req, sceneOffsetSecs) {
|
|
91
|
+
return `${req.src}|${sceneOffsetSecs + req.startAt}|${sceneOffsetSecs + req.endAt}|${req.trimStart}|${req.loop ? 1 : 0}|${req.volume}`;
|
|
92
|
+
}
|
|
93
|
+
/** Produce a stable hash of the active audio request set to detect scheduling changes. */
|
|
94
|
+
function audioSignature(reqs) {
|
|
95
|
+
if (reqs.length === 0)
|
|
96
|
+
return "";
|
|
97
|
+
return reqs.map(r => r.id).sort().join("\n");
|
|
98
|
+
}
|
|
99
|
+
/** Shallow equality check for two string sets (order-independent). */
|
|
100
|
+
function setsEqual(a, b) {
|
|
101
|
+
if (a.size !== b.size)
|
|
102
|
+
return false;
|
|
103
|
+
for (const v of a)
|
|
104
|
+
if (!b.has(v))
|
|
105
|
+
return false;
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/assets/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.test.d.ts","sourceRoot":"","sources":["../../src/assets/manager.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { AssetManager } from '@/assets/manager';
|
|
3
|
+
import { FakeStorageAdapter, FakeAudioDevice, asStorage, makePrecompResult, makeScenePrecomp, makeAssetTrack, makeImageRecord, makeAudioRequest, } from '../runtime/runtime.fixtures';
|
|
4
|
+
const flush = () => new Promise((r) => setTimeout(r, 0));
|
|
5
|
+
function setup(precomp = makePrecompResult({ scenes: [] })) {
|
|
6
|
+
const storage = new FakeStorageAdapter();
|
|
7
|
+
const audio = new FakeAudioDevice();
|
|
8
|
+
const mgr = new AssetManager(precomp, asStorage(storage), audio);
|
|
9
|
+
return { mgr, storage, audio };
|
|
10
|
+
}
|
|
11
|
+
describe('AssetManager.loadAt', () => {
|
|
12
|
+
const assets = new Map([
|
|
13
|
+
['a', makeAssetTrack({ cacheAt: 0, record: makeImageRecord({ src: 'a', endFrame: 10 }) })],
|
|
14
|
+
['b', makeAssetTrack({ cacheAt: 20, record: makeImageRecord({ src: 'b', endFrame: 30 }) })],
|
|
15
|
+
['c', makeAssetTrack({ cacheAt: 0, record: makeImageRecord({ src: 'c', endFrame: 2 }) })],
|
|
16
|
+
]);
|
|
17
|
+
it('loads only assets whose [cacheAt, endFrame] window contains the frame', async () => {
|
|
18
|
+
const { mgr, storage } = setup(makePrecompResult({ assets, scenes: [] }));
|
|
19
|
+
await mgr.loadAt(5);
|
|
20
|
+
expect(storage.loadAssetCalls.map((c) => c.key)).toEqual(['a']);
|
|
21
|
+
});
|
|
22
|
+
it('loads an asset whose cacheAt window has just opened', async () => {
|
|
23
|
+
const { mgr, storage } = setup(makePrecompResult({ assets, scenes: [] }));
|
|
24
|
+
await mgr.loadAt(25); // a: endFrame 10 < 25 (out); b: cacheAt20<=25, endFrame30>=25 (in); c: out
|
|
25
|
+
expect(storage.loadAssetCalls.map((c) => c.key)).toEqual(['b']);
|
|
26
|
+
});
|
|
27
|
+
it('resolves with no work when nothing is in range', async () => {
|
|
28
|
+
const { mgr, storage } = setup(makePrecompResult({ assets, scenes: [] }));
|
|
29
|
+
await mgr.loadAt(15); // a out (10<15), b not yet (20>15), c out
|
|
30
|
+
expect(storage.loadAssetCalls).toHaveLength(0);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('AssetManager.prefetch', () => {
|
|
34
|
+
it('fires loads for in-window assets without awaiting', () => {
|
|
35
|
+
const assets = new Map([
|
|
36
|
+
['a', makeAssetTrack({ cacheAt: 0, record: makeImageRecord({ src: 'a', endFrame: 10 }) })],
|
|
37
|
+
]);
|
|
38
|
+
const { mgr, storage } = setup(makePrecompResult({ assets, scenes: [] }));
|
|
39
|
+
mgr.prefetch(5);
|
|
40
|
+
expect(storage.loadAssetCalls.map((c) => c.key)).toEqual(['a']);
|
|
41
|
+
});
|
|
42
|
+
it('swallows load rejections (logs instead of throwing)', async () => {
|
|
43
|
+
const assets = new Map([
|
|
44
|
+
['a', makeAssetTrack({ cacheAt: 0, record: makeImageRecord({ src: 'a', endFrame: 10 }) })],
|
|
45
|
+
]);
|
|
46
|
+
const { mgr, storage } = setup(makePrecompResult({ assets, scenes: [] }));
|
|
47
|
+
storage.loadShouldReject = true;
|
|
48
|
+
const errSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
49
|
+
expect(() => mgr.prefetch(5)).not.toThrow();
|
|
50
|
+
await flush();
|
|
51
|
+
expect(errSpy).toHaveBeenCalled();
|
|
52
|
+
errSpy.mockRestore();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe('AssetManager.syncAudio', () => {
|
|
56
|
+
function precompWith(requests, startFrame = 0, fps = 10) {
|
|
57
|
+
return makePrecompResult({
|
|
58
|
+
fps,
|
|
59
|
+
scenes: [makeScenePrecomp({ startFrame, audioRequests: requests })],
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
it('schedules and retains a request that falls within the look-ahead window', () => {
|
|
63
|
+
const req = makeAudioRequest({ id: 'r1', src: 's1', startAt: 0, endAt: 1 });
|
|
64
|
+
const { mgr, audio, storage } = setup(precompWith([req]));
|
|
65
|
+
mgr.syncAudio(0);
|
|
66
|
+
expect(audio.scheduleCalls).toHaveLength(1);
|
|
67
|
+
expect(audio.scheduleCalls[0][0].src).toBe('s1');
|
|
68
|
+
expect(audio.retainCalls).toHaveLength(1);
|
|
69
|
+
expect([...audio.retainCalls[0]]).toEqual(['s1']);
|
|
70
|
+
// Not yet cached → triggers a fetch.
|
|
71
|
+
expect(storage.fetchAudioCalls).toEqual(['s1']);
|
|
72
|
+
});
|
|
73
|
+
it('rewrites request timing into global (scene-offset) seconds', () => {
|
|
74
|
+
const req = makeAudioRequest({ id: 'r1', src: 's1', startAt: 1, endAt: 2 });
|
|
75
|
+
// Scene starts at frame 10 (= 1s at 10fps), so global start = 1 + 1 = 2s.
|
|
76
|
+
const { mgr, audio } = setup(precompWith([req], 10, 10));
|
|
77
|
+
mgr.syncAudio(20); // currentTime = 2s
|
|
78
|
+
const scheduled = audio.scheduleCalls[0][0];
|
|
79
|
+
expect(scheduled.startAt).toBeCloseTo(2, 6);
|
|
80
|
+
expect(scheduled.endAt).toBeCloseTo(3, 6);
|
|
81
|
+
});
|
|
82
|
+
it('excludes requests that have already ended', () => {
|
|
83
|
+
const req = makeAudioRequest({ id: 'r1', src: 's1', startAt: 0, endAt: 1 });
|
|
84
|
+
const { mgr, audio } = setup(precompWith([req]));
|
|
85
|
+
mgr.syncAudio(50); // currentTime = 5s, request ended at 1s
|
|
86
|
+
expect(audio.scheduleCalls).toHaveLength(0);
|
|
87
|
+
});
|
|
88
|
+
it('excludes requests more than 10s beyond the current time', () => {
|
|
89
|
+
const req = makeAudioRequest({ id: 'r1', src: 's1', startAt: 100, endAt: 101 });
|
|
90
|
+
const { mgr, audio } = setup(precompWith([req]));
|
|
91
|
+
mgr.syncAudio(0);
|
|
92
|
+
expect(audio.scheduleCalls).toHaveLength(0);
|
|
93
|
+
});
|
|
94
|
+
it('does not fetch audio data already cached on the device', () => {
|
|
95
|
+
const req = makeAudioRequest({ id: 'r1', src: 's1', startAt: 0, endAt: 1 });
|
|
96
|
+
const { mgr, audio, storage } = setup(precompWith([req]));
|
|
97
|
+
audio.seed('s1');
|
|
98
|
+
mgr.syncAudio(0);
|
|
99
|
+
expect(storage.fetchAudioCalls).toHaveLength(0);
|
|
100
|
+
});
|
|
101
|
+
it('does not reschedule when the active window is unchanged', () => {
|
|
102
|
+
const req = makeAudioRequest({ id: 'r1', src: 's1', startAt: 0, endAt: 1 });
|
|
103
|
+
const { mgr, audio } = setup(precompWith([req]));
|
|
104
|
+
mgr.syncAudio(0);
|
|
105
|
+
mgr.syncAudio(0); // identical window
|
|
106
|
+
expect(audio.scheduleCalls).toHaveLength(1);
|
|
107
|
+
expect(audio.retainCalls).toHaveLength(1);
|
|
108
|
+
});
|
|
109
|
+
it('reschedules and re-retains when the window changes', () => {
|
|
110
|
+
const r1 = makeAudioRequest({ id: 'r1', src: 's1', startAt: 0, endAt: 1 });
|
|
111
|
+
const r2 = makeAudioRequest({ id: 'r2', src: 's2', startAt: 20, endAt: 21 });
|
|
112
|
+
const { mgr, audio } = setup(precompWith([r1, r2]));
|
|
113
|
+
mgr.syncAudio(0); // window = [r1] (r2 too far ahead)
|
|
114
|
+
mgr.syncAudio(150); // window = [r2] (r1 ended, r2 now near)
|
|
115
|
+
expect(audio.scheduleCalls).toHaveLength(2);
|
|
116
|
+
expect(audio.scheduleCalls[1][0].src).toBe('s2');
|
|
117
|
+
expect(audio.retainCalls).toHaveLength(2);
|
|
118
|
+
});
|
|
119
|
+
it('deduplicates identical requests emitted by multiple scenes', () => {
|
|
120
|
+
const shared = makeAudioRequest({ id: 'dup', src: 's1', startAt: 0, endAt: 1 });
|
|
121
|
+
const precomp = makePrecompResult({
|
|
122
|
+
fps: 10,
|
|
123
|
+
scenes: [
|
|
124
|
+
makeScenePrecomp({ startFrame: 0, audioRequests: [{ ...shared }] }),
|
|
125
|
+
makeScenePrecomp({ startFrame: 0, audioRequests: [{ ...shared }] }),
|
|
126
|
+
],
|
|
127
|
+
});
|
|
128
|
+
const { mgr, audio } = setup(precomp);
|
|
129
|
+
mgr.syncAudio(0);
|
|
130
|
+
expect(audio.scheduleCalls[0]).toHaveLength(1);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
//# sourceMappingURL=manager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../src/assets/manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Static metadata for an image asset, captured at build time. */
|
|
2
|
+
export interface ImageMeta {
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
sizeBytes: number;
|
|
6
|
+
src: string;
|
|
7
|
+
}
|
|
8
|
+
/** Static metadata for a video asset, captured at build time. */
|
|
9
|
+
export interface VideoMeta {
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
duration: number;
|
|
13
|
+
sizeBytes: number;
|
|
14
|
+
src: string;
|
|
15
|
+
}
|
|
16
|
+
/** Static metadata for an audio asset, captured at build time. */
|
|
17
|
+
export interface AudioMeta {
|
|
18
|
+
duration: number;
|
|
19
|
+
sizeBytes: number;
|
|
20
|
+
src: string;
|
|
21
|
+
}
|
|
22
|
+
/** Static metadata for a font face, captured at build time. */
|
|
23
|
+
export interface FontMeta {
|
|
24
|
+
fontFamily: string;
|
|
25
|
+
fontWeight: number;
|
|
26
|
+
src: string;
|
|
27
|
+
sizeBytes: number;
|
|
28
|
+
}
|
|
29
|
+
/** Discriminated union of all asset metadata shapes. */
|
|
30
|
+
export type AssetMeta = ImageMeta | VideoMeta | AudioMeta | FontMeta;
|
|
31
|
+
/** Build-time asset manifest keyed by source path (images/videos/audio) or family@weight (fonts). */
|
|
32
|
+
export interface AssetManifest {
|
|
33
|
+
image: Record<string, ImageMeta>;
|
|
34
|
+
video: Record<string, VideoMeta>;
|
|
35
|
+
audio: Record<string, AudioMeta>;
|
|
36
|
+
font: Record<string, FontMeta>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/assets/manifest.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACf;AAED,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACf;AAED,+DAA+D;AAC/D,MAAM,WAAW,QAAQ;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wDAAwD;AACxD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAErE,qGAAqG;AACrG,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAClC"}
|