@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
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared mock/fake implementations for the runtime test suite.
|
|
3
|
+
*
|
|
4
|
+
* These stand in for the heavy CanvasKit-backed Scene graph and the platform
|
|
5
|
+
* adapters (clock, audio, storage, render context) so the runtime orchestration
|
|
6
|
+
* logic can be exercised in a plain Node environment. Each fake records the
|
|
7
|
+
* calls it receives so tests can assert on ordering and arguments.
|
|
8
|
+
*
|
|
9
|
+
* Excluded from the published build via `src/**\/*.fixtures.ts` in tsconfig.
|
|
10
|
+
*/
|
|
11
|
+
import { AudioDevice } from "@/platform/audio-device";
|
|
12
|
+
import { MasterClock } from "@/platform/master-clock";
|
|
13
|
+
import { MeasureScope } from "@/render/measure-scope";
|
|
14
|
+
// ─── Scene graph fakes ──────────────────────────────────────────────────────
|
|
15
|
+
/** A minimal tree node used to test getTreeState / getNodeState walking. */
|
|
16
|
+
export class FakeNode {
|
|
17
|
+
id;
|
|
18
|
+
name;
|
|
19
|
+
children;
|
|
20
|
+
properties;
|
|
21
|
+
constructor(id, name, children = [], properties = {}) {
|
|
22
|
+
this.id = id;
|
|
23
|
+
this.name = name;
|
|
24
|
+
this.children = children;
|
|
25
|
+
this.properties = properties;
|
|
26
|
+
}
|
|
27
|
+
waveform() { return undefined; }
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Stand-in for a `Scene`. Implements exactly the surface the runtime touches and
|
|
31
|
+
* records every call. The build() generator yields `yieldCount` times, which the
|
|
32
|
+
* runtime translates into that many frames.
|
|
33
|
+
*/
|
|
34
|
+
export class FakeScene {
|
|
35
|
+
id;
|
|
36
|
+
name;
|
|
37
|
+
properties;
|
|
38
|
+
children;
|
|
39
|
+
yieldCount;
|
|
40
|
+
onPrepare;
|
|
41
|
+
// Call recorders.
|
|
42
|
+
resetCount = 0;
|
|
43
|
+
buildCount = 0;
|
|
44
|
+
disposeCount = 0;
|
|
45
|
+
renderCount = 0;
|
|
46
|
+
setCalls = [];
|
|
47
|
+
bindAssetsCalls = [];
|
|
48
|
+
ellapseCalls = [];
|
|
49
|
+
layoutCalls = [];
|
|
50
|
+
prepareCount = 0;
|
|
51
|
+
constructor(opts = {}) {
|
|
52
|
+
this.id = opts.id ?? "scene";
|
|
53
|
+
this.name = opts.name ?? "Scene";
|
|
54
|
+
this.yieldCount = opts.yieldCount ?? 5;
|
|
55
|
+
this.children = opts.children ?? [];
|
|
56
|
+
this.properties = opts.properties ?? {};
|
|
57
|
+
this.onPrepare = opts.onPrepare;
|
|
58
|
+
}
|
|
59
|
+
set(props) {
|
|
60
|
+
this.setCalls.push(props);
|
|
61
|
+
}
|
|
62
|
+
reset() {
|
|
63
|
+
this.resetCount++;
|
|
64
|
+
}
|
|
65
|
+
bindAssets(catalog) {
|
|
66
|
+
this.bindAssetsCalls.push(catalog);
|
|
67
|
+
}
|
|
68
|
+
ellapse(time) {
|
|
69
|
+
this.ellapseCalls.push(time);
|
|
70
|
+
}
|
|
71
|
+
layout(rect) {
|
|
72
|
+
this.layoutCalls.push({ rect });
|
|
73
|
+
}
|
|
74
|
+
render() {
|
|
75
|
+
this.renderCount++;
|
|
76
|
+
}
|
|
77
|
+
prepareAssets(tracker) {
|
|
78
|
+
this.onPrepare?.(tracker, this.prepareCount);
|
|
79
|
+
this.prepareCount++;
|
|
80
|
+
}
|
|
81
|
+
dispose() {
|
|
82
|
+
this.disposeCount++;
|
|
83
|
+
}
|
|
84
|
+
waveform() { return undefined; }
|
|
85
|
+
build() {
|
|
86
|
+
this.buildCount++;
|
|
87
|
+
const n = this.yieldCount;
|
|
88
|
+
return (function* () {
|
|
89
|
+
for (let i = 0; i < n; i++)
|
|
90
|
+
yield;
|
|
91
|
+
})();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Cast a fake scene to the Scene type the runtime expects. */
|
|
95
|
+
export function asScene(scene) {
|
|
96
|
+
return scene;
|
|
97
|
+
}
|
|
98
|
+
export function asScenes(scenes) {
|
|
99
|
+
return scenes;
|
|
100
|
+
}
|
|
101
|
+
// ─── Platform / render fakes ────────────────────────────────────────────────
|
|
102
|
+
export class FakeMeasureScope extends MeasureScope {
|
|
103
|
+
measureText(text) {
|
|
104
|
+
return text.length * 10;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export class FakeAssetCatalog {
|
|
108
|
+
videoDurations;
|
|
109
|
+
constructor(videoDurations = {}) {
|
|
110
|
+
this.videoDurations = videoDurations;
|
|
111
|
+
}
|
|
112
|
+
getVideoDuration(src) {
|
|
113
|
+
return this.videoDurations[src] ?? 10;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export function asCatalog(c) {
|
|
117
|
+
return c;
|
|
118
|
+
}
|
|
119
|
+
export class FakeRenderContext {
|
|
120
|
+
renderCount = 0;
|
|
121
|
+
screenshotValue = "data:image/png;base64,FAKE";
|
|
122
|
+
/** Invokes the draw callback, mirroring the real render() contract. */
|
|
123
|
+
render(cb) {
|
|
124
|
+
this.renderCount++;
|
|
125
|
+
cb();
|
|
126
|
+
}
|
|
127
|
+
screenshot() {
|
|
128
|
+
return this.screenshotValue;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export function asRenderContext(c) {
|
|
132
|
+
return c;
|
|
133
|
+
}
|
|
134
|
+
export class FakeStorageAdapter {
|
|
135
|
+
loadAssetCalls = [];
|
|
136
|
+
fetchAudioCalls = [];
|
|
137
|
+
/** When set, loadAsset rejects with this error (to exercise prefetch's catch). */
|
|
138
|
+
loadShouldReject = false;
|
|
139
|
+
loadAsset(key, record) {
|
|
140
|
+
this.loadAssetCalls.push({ key, record });
|
|
141
|
+
return this.loadShouldReject ? Promise.reject(new Error("load failed")) : Promise.resolve();
|
|
142
|
+
}
|
|
143
|
+
fetchAudioData(src) {
|
|
144
|
+
this.fetchAudioCalls.push(src);
|
|
145
|
+
return Promise.resolve(new ArrayBuffer(8));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
export function asStorage(s) {
|
|
149
|
+
return s;
|
|
150
|
+
}
|
|
151
|
+
export class FakeAudioDevice extends AudioDevice {
|
|
152
|
+
cache = new Set();
|
|
153
|
+
appendCalls = [];
|
|
154
|
+
scheduleCalls = [];
|
|
155
|
+
retainCalls = [];
|
|
156
|
+
syncToCalls = [];
|
|
157
|
+
playCalls = [];
|
|
158
|
+
stopCount = 0;
|
|
159
|
+
/** Seed the cache so `has()` returns true without an append round-trip. */
|
|
160
|
+
seed(src) {
|
|
161
|
+
this.cache.add(src);
|
|
162
|
+
}
|
|
163
|
+
has(src) {
|
|
164
|
+
return this.cache.has(src);
|
|
165
|
+
}
|
|
166
|
+
async append(src) {
|
|
167
|
+
this.appendCalls.push({ src });
|
|
168
|
+
this.cache.add(src);
|
|
169
|
+
}
|
|
170
|
+
retain(keep) {
|
|
171
|
+
this.retainCalls.push(keep);
|
|
172
|
+
}
|
|
173
|
+
schedule(requests) {
|
|
174
|
+
this.scheduleCalls.push([...requests]);
|
|
175
|
+
}
|
|
176
|
+
syncTo(sceneTime) {
|
|
177
|
+
this.syncToCalls.push(sceneTime);
|
|
178
|
+
}
|
|
179
|
+
play(time, speed, reverse) {
|
|
180
|
+
this.playCalls.push({ time, speed, reverse });
|
|
181
|
+
}
|
|
182
|
+
stop() {
|
|
183
|
+
this.stopCount++;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* A MasterClock whose time is driven manually. `simulateTick` sets the time and
|
|
188
|
+
* runs the registered tick callbacks (awaiting their async work).
|
|
189
|
+
*/
|
|
190
|
+
export class FakeClock extends MasterClock {
|
|
191
|
+
seekCalls = [];
|
|
192
|
+
disposeCount = 0;
|
|
193
|
+
seek(t) {
|
|
194
|
+
this.seekCalls.push(t);
|
|
195
|
+
this.setCurrentTime(t);
|
|
196
|
+
}
|
|
197
|
+
/** Set the current time without firing tick callbacks. */
|
|
198
|
+
setTime(t) {
|
|
199
|
+
this.setCurrentTime(t);
|
|
200
|
+
}
|
|
201
|
+
/** Set the time then run all onTick callbacks to completion. */
|
|
202
|
+
async simulateTick(t) {
|
|
203
|
+
this.setCurrentTime(t);
|
|
204
|
+
await this.tick();
|
|
205
|
+
}
|
|
206
|
+
dispose() {
|
|
207
|
+
this.disposeCount++;
|
|
208
|
+
super.dispose();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// ─── PrecompResult builders ──────────────────────────────────────────────────
|
|
212
|
+
export function makeAudioRequest(over = {}) {
|
|
213
|
+
return {
|
|
214
|
+
id: "req",
|
|
215
|
+
src: "sound.mp3",
|
|
216
|
+
startAt: 0,
|
|
217
|
+
endAt: 1,
|
|
218
|
+
trimStart: 0,
|
|
219
|
+
volume: 1,
|
|
220
|
+
loop: false,
|
|
221
|
+
...over,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
export function makeImageRecord(over = {}) {
|
|
225
|
+
return {
|
|
226
|
+
type: "image",
|
|
227
|
+
src: "img.png",
|
|
228
|
+
startFrame: 0,
|
|
229
|
+
endFrame: 0,
|
|
230
|
+
width: 100,
|
|
231
|
+
height: 100,
|
|
232
|
+
...over,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
export function makeAssetTrack(over = {}) {
|
|
236
|
+
return {
|
|
237
|
+
record: over.record ?? makeImageRecord(),
|
|
238
|
+
cacheAt: over.cacheAt ?? 0,
|
|
239
|
+
discardAt: over.discardAt ?? null,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
export function makeScenePrecomp(over = {}) {
|
|
243
|
+
return {
|
|
244
|
+
frameCount: 10,
|
|
245
|
+
startFrame: 0,
|
|
246
|
+
audioRequests: [],
|
|
247
|
+
lifespans: new Map(),
|
|
248
|
+
...over,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
export function makePrecompResult(over = {}) {
|
|
252
|
+
const scenes = over.scenes ?? [makeScenePrecomp()];
|
|
253
|
+
const totalFrames = over.totalFrames ?? scenes.reduce((n, s) => n + s.frameCount, 0);
|
|
254
|
+
const fps = over.fps ?? 30;
|
|
255
|
+
return {
|
|
256
|
+
fps,
|
|
257
|
+
scenes,
|
|
258
|
+
totalFrames,
|
|
259
|
+
totalDuration: over.totalDuration ?? totalFrames / fps,
|
|
260
|
+
assets: over.assets ?? new Map(),
|
|
261
|
+
buildErrors: over.buildErrors ?? [],
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=runtime.fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.fixtures.js","sourceRoot":"","sources":["../../src/runtime/runtime.fixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { RenderContext } from "../render/render-context";
|
|
2
|
+
import { Scene } from "../nodes/base/scene-node";
|
|
3
|
+
import { Size2D } from "../attributes/layout/size";
|
|
4
|
+
import { AssetCatalog } from "../assets/catalog";
|
|
5
|
+
import { MeasureScope } from "../render/measure-scope";
|
|
6
|
+
/**
|
|
7
|
+
* Drives scene generators forward in time and exposes the evaluated state for
|
|
8
|
+
* layout and rendering. It is the stateful playback engine that `PlaybackController`
|
|
9
|
+
* calls on every tick (and on seek).
|
|
10
|
+
*
|
|
11
|
+
* Each scene gets a `SceneSlot` that holds its generator and the highest local
|
|
12
|
+
* frame it has reached. Forward seeks simply advance the generator; backward
|
|
13
|
+
* seeks within a scene reset that slot and replay from frame 0. Scenes that
|
|
14
|
+
* haven't been entered yet are initialised lazily when first needed.
|
|
15
|
+
*
|
|
16
|
+
* Call order per frame:
|
|
17
|
+
* 1. `stateAt(frame)` — advance generator(s) to the requested frame.
|
|
18
|
+
* 2. `layout(scope)` — lay out the current scene's node tree.
|
|
19
|
+
* 3. `render(context)` — draw the current scene into the render context.
|
|
20
|
+
*/
|
|
21
|
+
export declare class StateEvaluator {
|
|
22
|
+
private scenes;
|
|
23
|
+
private slots;
|
|
24
|
+
private _currentFrame;
|
|
25
|
+
private fps;
|
|
26
|
+
private viewport;
|
|
27
|
+
private assets;
|
|
28
|
+
/** Most-recently evaluated global frame (integer). */
|
|
29
|
+
get currentFrame(): number;
|
|
30
|
+
private readonly stage;
|
|
31
|
+
/**
|
|
32
|
+
* @param scenes Scene list in timeline order.
|
|
33
|
+
* @param viewport Render viewport size; passed to each scene on init.
|
|
34
|
+
* @param fps Frames per second — used to convert frames ↔ seconds.
|
|
35
|
+
* @param assets Asset catalog bound to scenes before each generator step.
|
|
36
|
+
* @param tracks Per-scene frame counts in timeline order (one entry per
|
|
37
|
+
* scene). Used to build global frame ranges so `stateAt`
|
|
38
|
+
* can jump directly to the owning scene without scanning.
|
|
39
|
+
*/
|
|
40
|
+
constructor(scenes: Scene[], viewport: Size2D, fps: number, assets: AssetCatalog, tracks: number[]);
|
|
41
|
+
private _currentScene;
|
|
42
|
+
get currentScene(): Scene;
|
|
43
|
+
/** Index of the current scene in the scenes array, or -1 if none. */
|
|
44
|
+
get currentSceneIndex(): number;
|
|
45
|
+
private get dt();
|
|
46
|
+
private bindAssets;
|
|
47
|
+
private ellapse;
|
|
48
|
+
/** Find the slot that owns the given global frame. */
|
|
49
|
+
private slotAt;
|
|
50
|
+
/**
|
|
51
|
+
* Resets a single scene slot and primes its generator up to local frame 0.
|
|
52
|
+
* Scenes that come *after* this one in the timeline are left untouched —
|
|
53
|
+
* they will be lazily initialised when first needed.
|
|
54
|
+
*/
|
|
55
|
+
private resetSlot;
|
|
56
|
+
/** Lay out the current scene's node tree against the full viewport. */
|
|
57
|
+
layout(scope: MeasureScope): void;
|
|
58
|
+
/** Render the current scene's node tree into `context`. */
|
|
59
|
+
render(context: RenderContext): void;
|
|
60
|
+
/**
|
|
61
|
+
* Advance (or rewind) state to the given global `frame`.
|
|
62
|
+
*
|
|
63
|
+
* - If `frame` matches the current frame and the generator is already
|
|
64
|
+
* primed, this is a no-op (early return).
|
|
65
|
+
* - If the target is within the current slot but behind the generator's
|
|
66
|
+
* position, the slot is reset and replayed from frame 0.
|
|
67
|
+
* - If the target belongs to a different scene, that slot is entered
|
|
68
|
+
* (resetting it if necessary) and advanced to the local target frame.
|
|
69
|
+
*
|
|
70
|
+
* @param frame Global frame index (float accepted; fractional part ignored).
|
|
71
|
+
*/
|
|
72
|
+
stateAt(frame: number): void;
|
|
73
|
+
/** Dispose all scenes and drop generator references. */
|
|
74
|
+
dispose(): void;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=state-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-evaluator.d.ts","sourceRoot":"","sources":["../../src/runtime/state-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AActD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAe;IAE7B,sDAAsD;IACtD,IAAI,YAAY,WAEf;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IAEnC;;;;;;;;OAQG;gBACS,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE;IA6BlG,OAAO,CAAC,aAAa,CAAS;IAE9B,IAAW,YAAY,IAAI,KAAK,CAE/B;IAED,qEAAqE;IACrE,IAAW,iBAAiB,IAAI,MAAM,CAErC;IAED,OAAO,KAAK,EAAE,GAEb;IAED,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,OAAO;IAMf,sDAAsD;IACtD,OAAO,CAAC,MAAM;IAQd;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAYjB,uEAAuE;IACvE,MAAM,CAAC,KAAK,EAAE,YAAY;IAK1B,2DAA2D;IAC3D,MAAM,CAAC,OAAO,EAAE,aAAa;IAI7B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA+B5B,wDAAwD;IACxD,OAAO,IAAI,IAAI;CAMlB"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { BuildStage } from "../render/build-stage";
|
|
2
|
+
/**
|
|
3
|
+
* Drives scene generators forward in time and exposes the evaluated state for
|
|
4
|
+
* layout and rendering. It is the stateful playback engine that `PlaybackController`
|
|
5
|
+
* calls on every tick (and on seek).
|
|
6
|
+
*
|
|
7
|
+
* Each scene gets a `SceneSlot` that holds its generator and the highest local
|
|
8
|
+
* frame it has reached. Forward seeks simply advance the generator; backward
|
|
9
|
+
* seeks within a scene reset that slot and replay from frame 0. Scenes that
|
|
10
|
+
* haven't been entered yet are initialised lazily when first needed.
|
|
11
|
+
*
|
|
12
|
+
* Call order per frame:
|
|
13
|
+
* 1. `stateAt(frame)` — advance generator(s) to the requested frame.
|
|
14
|
+
* 2. `layout(scope)` — lay out the current scene's node tree.
|
|
15
|
+
* 3. `render(context)` — draw the current scene into the render context.
|
|
16
|
+
*/
|
|
17
|
+
export class StateEvaluator {
|
|
18
|
+
scenes;
|
|
19
|
+
slots = [];
|
|
20
|
+
_currentFrame = 0;
|
|
21
|
+
fps;
|
|
22
|
+
viewport;
|
|
23
|
+
assets;
|
|
24
|
+
/** Most-recently evaluated global frame (integer). */
|
|
25
|
+
get currentFrame() {
|
|
26
|
+
return this._currentFrame;
|
|
27
|
+
}
|
|
28
|
+
stage;
|
|
29
|
+
/**
|
|
30
|
+
* @param scenes Scene list in timeline order.
|
|
31
|
+
* @param viewport Render viewport size; passed to each scene on init.
|
|
32
|
+
* @param fps Frames per second — used to convert frames ↔ seconds.
|
|
33
|
+
* @param assets Asset catalog bound to scenes before each generator step.
|
|
34
|
+
* @param tracks Per-scene frame counts in timeline order (one entry per
|
|
35
|
+
* scene). Used to build global frame ranges so `stateAt`
|
|
36
|
+
* can jump directly to the owning scene without scanning.
|
|
37
|
+
*/
|
|
38
|
+
constructor(scenes, viewport, fps, assets, tracks) {
|
|
39
|
+
this.fps = fps;
|
|
40
|
+
this.viewport = viewport;
|
|
41
|
+
this.scenes = scenes;
|
|
42
|
+
this.assets = assets;
|
|
43
|
+
this.stage = new BuildStage(viewport, fps);
|
|
44
|
+
for (const s of scenes) {
|
|
45
|
+
s.set({ width: viewport.width, height: viewport.height });
|
|
46
|
+
}
|
|
47
|
+
let offset = 0;
|
|
48
|
+
for (let i = 0; i < scenes.length; i++) {
|
|
49
|
+
const duration = tracks[i] ?? 0;
|
|
50
|
+
this.slots.push({
|
|
51
|
+
scene: scenes[i],
|
|
52
|
+
startFrame: offset,
|
|
53
|
+
endFrame: offset + duration - 1,
|
|
54
|
+
generator: null,
|
|
55
|
+
localFrame: -1,
|
|
56
|
+
});
|
|
57
|
+
offset += duration;
|
|
58
|
+
}
|
|
59
|
+
if (this.slots.length > 0) {
|
|
60
|
+
this._currentScene = this.slots[0].scene;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
_currentScene;
|
|
64
|
+
get currentScene() {
|
|
65
|
+
return this._currentScene;
|
|
66
|
+
}
|
|
67
|
+
/** Index of the current scene in the scenes array, or -1 if none. */
|
|
68
|
+
get currentSceneIndex() {
|
|
69
|
+
return this.scenes.indexOf(this._currentScene);
|
|
70
|
+
}
|
|
71
|
+
get dt() {
|
|
72
|
+
return 1 / this.fps;
|
|
73
|
+
}
|
|
74
|
+
bindAssets() {
|
|
75
|
+
for (const s of this.scenes) {
|
|
76
|
+
s.bindAssets(this.assets);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
ellapse(time) {
|
|
80
|
+
for (const s of this.scenes) {
|
|
81
|
+
s.ellapse(time);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Find the slot that owns the given global frame. */
|
|
85
|
+
slotAt(frame) {
|
|
86
|
+
for (const slot of this.slots) {
|
|
87
|
+
if (frame >= slot.startFrame && frame <= slot.endFrame)
|
|
88
|
+
return slot;
|
|
89
|
+
}
|
|
90
|
+
// Past the last frame — return the last slot so currentScene stays valid.
|
|
91
|
+
return this.slots[this.slots.length - 1] ?? null;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Resets a single scene slot and primes its generator up to local frame 0.
|
|
95
|
+
* Scenes that come *after* this one in the timeline are left untouched —
|
|
96
|
+
* they will be lazily initialised when first needed.
|
|
97
|
+
*/
|
|
98
|
+
resetSlot(slot) {
|
|
99
|
+
slot.scene.reset();
|
|
100
|
+
slot.scene.bindAssets(this.assets);
|
|
101
|
+
slot.scene.ellapse(0);
|
|
102
|
+
this.stage.reset();
|
|
103
|
+
const gen = slot.scene.build(this.stage);
|
|
104
|
+
// Prime: advance to the first yield so frame-0 nodes are registered.
|
|
105
|
+
gen.next(this.dt);
|
|
106
|
+
slot.generator = gen;
|
|
107
|
+
slot.localFrame = 0;
|
|
108
|
+
}
|
|
109
|
+
/** Lay out the current scene's node tree against the full viewport. */
|
|
110
|
+
layout(scope) {
|
|
111
|
+
const bounds = { x: 0, y: 0, width: this.viewport.width, height: this.viewport.height };
|
|
112
|
+
this.currentScene.layout(bounds, scope);
|
|
113
|
+
}
|
|
114
|
+
/** Render the current scene's node tree into `context`. */
|
|
115
|
+
render(context) {
|
|
116
|
+
this.currentScene.render(context);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Advance (or rewind) state to the given global `frame`.
|
|
120
|
+
*
|
|
121
|
+
* - If `frame` matches the current frame and the generator is already
|
|
122
|
+
* primed, this is a no-op (early return).
|
|
123
|
+
* - If the target is within the current slot but behind the generator's
|
|
124
|
+
* position, the slot is reset and replayed from frame 0.
|
|
125
|
+
* - If the target belongs to a different scene, that slot is entered
|
|
126
|
+
* (resetting it if necessary) and advanced to the local target frame.
|
|
127
|
+
*
|
|
128
|
+
* @param frame Global frame index (float accepted; fractional part ignored).
|
|
129
|
+
*/
|
|
130
|
+
stateAt(frame) {
|
|
131
|
+
const clampedFrame = Math.max(0, Math.floor(frame));
|
|
132
|
+
if (clampedFrame === this._currentFrame && this.slotAt(clampedFrame)?.generator !== null)
|
|
133
|
+
return;
|
|
134
|
+
const targetSlot = this.slotAt(clampedFrame);
|
|
135
|
+
if (!targetSlot)
|
|
136
|
+
return;
|
|
137
|
+
this._currentScene = targetSlot.scene;
|
|
138
|
+
const localTarget = clampedFrame - targetSlot.startFrame;
|
|
139
|
+
// If we need to go backwards within this slot, reset only this slot.
|
|
140
|
+
if (targetSlot.generator === null || targetSlot.localFrame > localTarget) {
|
|
141
|
+
this.resetSlot(targetSlot);
|
|
142
|
+
}
|
|
143
|
+
const dt = this.dt;
|
|
144
|
+
// Advance this slot's generator from its current local frame to localTarget.
|
|
145
|
+
while (targetSlot.localFrame < localTarget) {
|
|
146
|
+
targetSlot.localFrame++;
|
|
147
|
+
const globalTime = (targetSlot.startFrame + targetSlot.localFrame) * dt;
|
|
148
|
+
this.bindAssets();
|
|
149
|
+
this.ellapse(globalTime);
|
|
150
|
+
targetSlot.generator.next(dt);
|
|
151
|
+
}
|
|
152
|
+
this._currentFrame = clampedFrame;
|
|
153
|
+
}
|
|
154
|
+
/** Dispose all scenes and drop generator references. */
|
|
155
|
+
dispose() {
|
|
156
|
+
for (const slot of this.slots) {
|
|
157
|
+
slot.scene.dispose();
|
|
158
|
+
slot.generator = null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=state-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-evaluator.js","sourceRoot":"","sources":["../../src/runtime/state-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-evaluator.test.d.ts","sourceRoot":"","sources":["../../src/runtime/state-evaluator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { StateEvaluator } from '@/runtime/state-evaluator';
|
|
3
|
+
import { FakeScene, FakeMeasureScope, FakeRenderContext, FakeAssetCatalog, asScenes, asCatalog, asRenderContext, } from './runtime.fixtures';
|
|
4
|
+
const VIEWPORT = { width: 100, height: 50 };
|
|
5
|
+
const FPS = 4; // dt = 0.25 → clean global-time arithmetic
|
|
6
|
+
const catalog = asCatalog(new FakeAssetCatalog());
|
|
7
|
+
const scope = new FakeMeasureScope();
|
|
8
|
+
function single(yieldCount = 10) {
|
|
9
|
+
const scene = new FakeScene({ id: 'a', yieldCount });
|
|
10
|
+
const evaluator = new StateEvaluator(asScenes([scene]), VIEWPORT, FPS, catalog, [yieldCount]);
|
|
11
|
+
return { scene, evaluator };
|
|
12
|
+
}
|
|
13
|
+
describe('StateEvaluator – construction', () => {
|
|
14
|
+
it('sizes every scene to the viewport and selects the first as current', () => {
|
|
15
|
+
const a = new FakeScene({ id: 'a', yieldCount: 5 });
|
|
16
|
+
const b = new FakeScene({ id: 'b', yieldCount: 5 });
|
|
17
|
+
const evaluator = new StateEvaluator(asScenes([a, b]), VIEWPORT, FPS, catalog, [5, 5]);
|
|
18
|
+
expect(a.setCalls).toEqual([{ width: 100, height: 50 }]);
|
|
19
|
+
expect(b.setCalls).toEqual([{ width: 100, height: 50 }]);
|
|
20
|
+
expect(evaluator.currentFrame).toBe(0);
|
|
21
|
+
expect(evaluator.currentScene).toBe(a);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe('StateEvaluator – priming & forward advance', () => {
|
|
25
|
+
it('primes the slot on the first stateAt without advancing past frame 0', () => {
|
|
26
|
+
const { scene, evaluator } = single();
|
|
27
|
+
evaluator.stateAt(0);
|
|
28
|
+
expect(scene.resetCount).toBe(1);
|
|
29
|
+
expect(scene.buildCount).toBe(1);
|
|
30
|
+
expect(scene.ellapseCalls).toEqual([0]); // only resetSlot's ellapse(0)
|
|
31
|
+
expect(evaluator.currentFrame).toBe(0);
|
|
32
|
+
});
|
|
33
|
+
it('advances the generator one step per frame with increasing global time', () => {
|
|
34
|
+
const { scene, evaluator } = single();
|
|
35
|
+
evaluator.stateAt(3);
|
|
36
|
+
// resetSlot ellapse(0) + advances at frames 1,2,3 → times 0.25, 0.5, 0.75.
|
|
37
|
+
expect(scene.ellapseCalls).toEqual([0, 0.25, 0.5, 0.75]);
|
|
38
|
+
expect(evaluator.currentFrame).toBe(3);
|
|
39
|
+
});
|
|
40
|
+
it('is a no-op when asked for the frame it is already on', () => {
|
|
41
|
+
const { scene, evaluator } = single();
|
|
42
|
+
evaluator.stateAt(3);
|
|
43
|
+
const ellapsedBefore = scene.ellapseCalls.length;
|
|
44
|
+
evaluator.stateAt(3);
|
|
45
|
+
expect(scene.ellapseCalls.length).toBe(ellapsedBefore);
|
|
46
|
+
});
|
|
47
|
+
it('floors fractional frames and clamps negatives to 0', () => {
|
|
48
|
+
const { evaluator } = single();
|
|
49
|
+
evaluator.stateAt(2.9);
|
|
50
|
+
expect(evaluator.currentFrame).toBe(2);
|
|
51
|
+
evaluator.stateAt(-5);
|
|
52
|
+
expect(evaluator.currentFrame).toBe(0);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe('StateEvaluator – backward seek', () => {
|
|
56
|
+
it('resets and replays the slot when seeking earlier within a scene', () => {
|
|
57
|
+
const { scene, evaluator } = single();
|
|
58
|
+
evaluator.stateAt(3);
|
|
59
|
+
expect(scene.resetCount).toBe(1);
|
|
60
|
+
expect(scene.buildCount).toBe(1);
|
|
61
|
+
evaluator.stateAt(1);
|
|
62
|
+
expect(scene.resetCount).toBe(2); // re-primed
|
|
63
|
+
expect(scene.buildCount).toBe(2);
|
|
64
|
+
expect(evaluator.currentFrame).toBe(1);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe('StateEvaluator – multi-scene timeline', () => {
|
|
68
|
+
function pair() {
|
|
69
|
+
const a = new FakeScene({ id: 'a', yieldCount: 10 });
|
|
70
|
+
const b = new FakeScene({ id: 'b', yieldCount: 5 });
|
|
71
|
+
const evaluator = new StateEvaluator(asScenes([a, b]), VIEWPORT, FPS, catalog, [10, 5]);
|
|
72
|
+
return { a, b, evaluator };
|
|
73
|
+
}
|
|
74
|
+
it('routes a frame to the scene that owns it and lazily primes only that scene', () => {
|
|
75
|
+
const { a, b, evaluator } = pair();
|
|
76
|
+
evaluator.stateAt(12); // global 12 → scene B local 2
|
|
77
|
+
expect(evaluator.currentScene).toBe(b);
|
|
78
|
+
expect(b.buildCount).toBe(1);
|
|
79
|
+
expect(a.buildCount).toBe(0); // scene A never needed
|
|
80
|
+
});
|
|
81
|
+
it('switches current scene back to an earlier scene and re-primes it', () => {
|
|
82
|
+
const { a, evaluator } = pair();
|
|
83
|
+
evaluator.stateAt(12);
|
|
84
|
+
evaluator.stateAt(3); // back into scene A
|
|
85
|
+
expect(evaluator.currentScene).toBe(a);
|
|
86
|
+
expect(a.buildCount).toBe(1);
|
|
87
|
+
expect(evaluator.currentFrame).toBe(3);
|
|
88
|
+
});
|
|
89
|
+
it('clamps to the last slot when seeking past the end of the timeline', () => {
|
|
90
|
+
const { b, evaluator } = pair();
|
|
91
|
+
evaluator.stateAt(20); // past end (last frame is 14)
|
|
92
|
+
expect(evaluator.currentScene).toBe(b);
|
|
93
|
+
expect(evaluator.currentFrame).toBe(20);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe('StateEvaluator – layout & render delegation', () => {
|
|
97
|
+
it('lays out the current scene against the full viewport rect', () => {
|
|
98
|
+
const { scene, evaluator } = single();
|
|
99
|
+
evaluator.stateAt(1);
|
|
100
|
+
evaluator.layout(scope);
|
|
101
|
+
expect(scene.layoutCalls).toHaveLength(1);
|
|
102
|
+
expect(scene.layoutCalls[0].rect).toEqual({ x: 0, y: 0, width: 100, height: 50 });
|
|
103
|
+
});
|
|
104
|
+
it('renders the current scene through the render context', () => {
|
|
105
|
+
const { scene, evaluator } = single();
|
|
106
|
+
const ctx = new FakeRenderContext();
|
|
107
|
+
evaluator.stateAt(1);
|
|
108
|
+
evaluator.render(asRenderContext(ctx));
|
|
109
|
+
expect(scene.renderCount).toBe(1);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
describe('StateEvaluator – dispose', () => {
|
|
113
|
+
it('disposes every scene', () => {
|
|
114
|
+
const a = new FakeScene({ id: 'a', yieldCount: 5 });
|
|
115
|
+
const b = new FakeScene({ id: 'b', yieldCount: 5 });
|
|
116
|
+
const evaluator = new StateEvaluator(asScenes([a, b]), VIEWPORT, FPS, catalog, [5, 5]);
|
|
117
|
+
evaluator.dispose();
|
|
118
|
+
expect(a.disposeCount).toBe(1);
|
|
119
|
+
expect(b.disposeCount).toBe(1);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=state-evaluator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-evaluator.test.js","sourceRoot":"","sources":["../../src/runtime/state-evaluator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,eAAe,GAClB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,2CAA2C;AAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;AAClD,MAAM,KAAK,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAErC,SAAS,MAAM,CAAC,UAAU,GAAG,EAAE;IAC3B,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9F,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEvF,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,YAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC3E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QACtC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;QACvE,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC7E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QACtC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,2EAA2E;QAC3E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QACtC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;QACjD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACvE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QACtC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEjC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;QAC9C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACnD,SAAS,IAAI;QACT,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QAClF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;QACnC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B;QACrD,MAAM,CAAC,SAAS,CAAC,YAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;QAChC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;QAC1C,MAAM,CAAC,SAAS,CAAC,YAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QACzE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;QAChC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B;QACrD,MAAM,CAAC,SAAS,CAAC,YAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACjE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QACtC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC5B,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvF,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|