animl-cli 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +34 -0
- package/README.md +25 -2
- package/docs/AUTHORING.md +1530 -0
- package/docs/CLI.md +627 -0
- package/docs/parity/inventory.json +34570 -0
- package/examples/bell.ani +359 -0
- package/examples/bell.animl +114 -0
- package/examples/composite.ani +110 -0
- package/examples/composite.animl +21 -0
- package/examples/feather.ani +56 -0
- package/examples/feather.animl +20 -0
- package/examples/image-paints.ani +32 -0
- package/examples/image-paints.animl +8 -0
- package/examples/lib/cards.animl +9 -0
- package/examples/lib/shared.animl +10 -0
- package/examples/lib/ui.animl +8 -0
- package/examples/moon-toggle.png +0 -0
- package/examples/moon.ani +250 -0
- package/examples/moon.animl +55 -0
- package/examples/motion.ani +94 -0
- package/examples/motion.animl +24 -0
- package/examples/paint.ani +91 -0
- package/examples/paint.animl +21 -0
- package/examples/photo.ani +29 -0
- package/examples/photo.animl +6 -0
- package/examples/progress.ani +43 -0
- package/examples/progress.animl +6 -0
- package/examples/shapes.ani +109 -0
- package/examples/shapes.animl +16 -0
- package/examples/slice.ani +32 -0
- package/examples/slice.animl +9 -0
- package/examples/switch.ani +91 -0
- package/examples/switch.animl +22 -0
- package/examples/toolbar.ani +480 -0
- package/examples/toolbar.animl +115 -0
- package/examples/trash-ring.png +0 -0
- package/examples/trash.ani +357 -0
- package/examples/trash.animl +88 -0
- package/examples/web/index.html +520 -0
- package/examples/web/template.html +162 -0
- package/fixtures/bell/rive-reference/frames/00-rest.png +0 -0
- package/fixtures/bell/rive-reference/frames/01-hover.png +0 -0
- package/fixtures/bell/rive-reference/frames/02-ring-f3.png +0 -0
- package/fixtures/bell/rive-reference/frames/03-ring-f7.png +0 -0
- package/fixtures/bell/rive-reference/frames/04-ring-f17.png +0 -0
- package/fixtures/bell/rive-reference/frames/05-ring-f27.png +0 -0
- package/fixtures/bell/rive-reference/frames/06-ring-f57.png +0 -0
- package/fixtures/bell/rive-reference/frames/07-rested.png +0 -0
- package/fixtures/bell/rive-reference/frames/08-out.png +0 -0
- package/fixtures/bell/rive-reference/frames/commands.txt +24 -0
- package/llms.txt +30 -0
- package/modules/a11y/AUTHORING.md +108 -0
- package/modules/a11y/SPEC.md +304 -0
- package/modules/a11y/capabilities/a11y-focus-condition/example.ani +69 -0
- package/modules/a11y/capabilities/a11y-focus-condition/example.animl +17 -0
- package/modules/a11y/capabilities/a11y-inferred-text/example.ani +47 -0
- package/modules/a11y/capabilities/a11y-inferred-text/example.animl +13 -0
- package/modules/a11y/capabilities/a11y-property-heading-level/example.ani +26 -0
- package/modules/a11y/capabilities/a11y-property-heading-level/example.animl +6 -0
- package/modules/a11y/capabilities/a11y-tree-bounds/example.ani +88 -0
- package/modules/a11y/capabilities/a11y-tree-bounds/example.animl +18 -0
- package/modules/a11y/capabilities/a11y-tree-visibility/example.ani +16 -0
- package/modules/a11y/capabilities/a11y-tree-visibility/example.animl +4 -0
- package/modules/a11y/core/commands.source +135 -0
- package/modules/a11y/examples/contract.ani +74 -0
- package/modules/a11y/examples/contract.animl +15 -0
- package/modules/a11y/examples/focus-ancestor-policy.ani +72 -0
- package/modules/a11y/examples/focus-ancestor-policy.animl +16 -0
- package/modules/a11y/examples/painted-extents.ani +331 -0
- package/modules/a11y/examples/painted-extents.animl +62 -0
- package/modules/a11y/examples/painted-groups.ani +88 -0
- package/modules/a11y/examples/painted-groups.animl +18 -0
- package/modules/a11y/examples/slider-value-text.ani +53 -0
- package/modules/a11y/examples/slider-value-text.animl +11 -0
- package/modules/a11y/manifest.source +49 -0
- package/modules/a11y-actions/manifest.source +22 -0
- package/modules/a11y-dom/AUTHORING.md +35 -0
- package/modules/a11y-dom/SPEC.md +165 -0
- package/modules/a11y-dom/examples/mute.ani +28 -0
- package/modules/a11y-dom/examples/mute.animl +6 -0
- package/modules/a11y-dom/examples/navigation.ani +152 -0
- package/modules/a11y-dom/examples/navigation.animl +35 -0
- package/modules/a11y-dom/manifest.source +22 -0
- package/modules/assetio/SPEC.md +16 -0
- package/modules/assetio/manifest.source +12 -0
- package/modules/assets/SPEC.md +23 -0
- package/modules/assets/capabilities/assets-audio/example.ani +60 -0
- package/modules/assets/capabilities/assets-audio/example.animl +16 -0
- package/modules/assets/capabilities/assets-audio-clip/example.ani +62 -0
- package/modules/assets/capabilities/assets-audio-clip/example.animl +17 -0
- package/modules/assets/capabilities/assets-audio-export-source/example.ani +60 -0
- package/modules/assets/capabilities/assets-audio-export-source/example.animl +16 -0
- package/modules/assets/capabilities/assets-audio-import-flac/example.ani +63 -0
- package/modules/assets/capabilities/assets-audio-import-flac/example.animl +17 -0
- package/modules/assets/capabilities/assets-audio-import-mp3/example.ani +63 -0
- package/modules/assets/capabilities/assets-audio-import-mp3/example.animl +17 -0
- package/modules/assets/capabilities/assets-audio-import-wav/example.ani +60 -0
- package/modules/assets/capabilities/assets-audio-import-wav/example.animl +16 -0
- package/modules/assets/capabilities/assets-blob/example.ani +52 -0
- package/modules/assets/capabilities/assets-blob/example.animl +13 -0
- package/modules/assets/capabilities/assets-cdn-disable/example.ani +48 -0
- package/modules/assets/capabilities/assets-cdn-disable/example.animl +12 -0
- package/modules/assets/capabilities/assets-exclude-export/example.ani +49 -0
- package/modules/assets/capabilities/assets-exclude-export/example.animl +12 -0
- package/modules/assets/capabilities/assets-host-decode-audio/example.ani +60 -0
- package/modules/assets/capabilities/assets-host-decode-audio/example.animl +16 -0
- package/modules/assets/capabilities/assets-image-encoding-jpeg/example.ani +50 -0
- package/modules/assets/capabilities/assets-image-encoding-jpeg/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-encoding-png/example.ani +50 -0
- package/modules/assets/capabilities/assets-image-encoding-png/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-encoding-webp/example.ani +50 -0
- package/modules/assets/capabilities/assets-image-encoding-webp/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-export-controls/example.ani +49 -0
- package/modules/assets/capabilities/assets-image-export-controls/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-filter-bilinear/example.ani +49 -0
- package/modules/assets/capabilities/assets-image-filter-bilinear/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-filter-nearest/example.ani +49 -0
- package/modules/assets/capabilities/assets-image-filter-nearest/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-import-jpeg/example.ani +49 -0
- package/modules/assets/capabilities/assets-image-import-jpeg/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-import-jpg/example.ani +49 -0
- package/modules/assets/capabilities/assets-image-import-jpg/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-import-png/example.ani +49 -0
- package/modules/assets/capabilities/assets-image-import-png/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-import-webp/example.ani +49 -0
- package/modules/assets/capabilities/assets-image-import-webp/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-wrap-x-clamp/example.ani +50 -0
- package/modules/assets/capabilities/assets-image-wrap-x-clamp/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-wrap-x-mirror/example.ani +50 -0
- package/modules/assets/capabilities/assets-image-wrap-x-mirror/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-wrap-x-repeat/example.ani +50 -0
- package/modules/assets/capabilities/assets-image-wrap-x-repeat/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-wrap-y-clamp/example.ani +50 -0
- package/modules/assets/capabilities/assets-image-wrap-y-clamp/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-wrap-y-mirror/example.ani +50 -0
- package/modules/assets/capabilities/assets-image-wrap-y-mirror/example.animl +12 -0
- package/modules/assets/capabilities/assets-image-wrap-y-repeat/example.ani +50 -0
- package/modules/assets/capabilities/assets-image-wrap-y-repeat/example.animl +12 -0
- package/modules/assets/capabilities/assets-lottie-import/example.ani +58 -0
- package/modules/assets/capabilities/assets-lottie-import/example.animl +20 -0
- package/modules/assets/capabilities/assets-metadata/example.ani +53 -0
- package/modules/assets/capabilities/assets-metadata/example.animl +12 -0
- package/modules/assets/capabilities/assets-replacement-scope-image/example.ani +48 -0
- package/modules/assets/capabilities/assets-replacement-scope-image/example.animl +12 -0
- package/modules/assets/capabilities/assets-svg-import/example.ani +52 -0
- package/modules/assets/capabilities/assets-svg-import/example.animl +11 -0
- package/modules/assets/capabilities/host-api-asset-cdn-policy/example.ani +48 -0
- package/modules/assets/capabilities/host-api-asset-cdn-policy/example.animl +12 -0
- package/modules/assets/capabilities/host-api-asset-loader/example.ani +48 -0
- package/modules/assets/capabilities/host-api-asset-loader/example.animl +12 -0
- package/modules/assets/capabilities/host-api-asset-metadata/example.ani +53 -0
- package/modules/assets/capabilities/host-api-asset-metadata/example.animl +12 -0
- package/modules/assets/manifest.source +79 -0
- package/modules/bind/AUTHORING.md +49 -0
- package/modules/bind/capabilities/data-bind-listener-actions/example.ani +30 -0
- package/modules/bind/capabilities/data-bind-listener-actions/example.animl +5 -0
- package/modules/bind/core/expression.source +224 -0
- package/modules/bind/examples/filtering-list.ani +122 -0
- package/modules/bind/examples/filtering-list.animl +29 -0
- package/modules/bind/manifest.source +58 -0
- package/modules/canvas/capabilities/host-api-device-pixel-ratio/example.ani +16 -0
- package/modules/canvas/capabilities/host-api-device-pixel-ratio/example.animl +3 -0
- package/modules/canvas/capabilities/host-api-resize-backing-surface/example.ani +16 -0
- package/modules/canvas/capabilities/host-api-resize-backing-surface/example.animl +3 -0
- package/modules/canvas/capabilities/platforms-web-canvas/example.ani +16 -0
- package/modules/canvas/capabilities/platforms-web-canvas/example.animl +3 -0
- package/modules/canvas/manifest.source +16 -0
- package/modules/colormix/examples/switch.ani +51 -0
- package/modules/colormix/examples/switch.animl +13 -0
- package/modules/colormix/manifest.source +39 -0
- package/modules/componentpaint/capabilities/drawing-paint-paint-artboard/example.ani +72 -0
- package/modules/componentpaint/capabilities/drawing-paint-paint-artboard/example.animl +13 -0
- package/modules/componentpaint/examples/live.ani +72 -0
- package/modules/componentpaint/examples/live.animl +13 -0
- package/modules/componentpaint/manifest.source +29 -0
- package/modules/components/manifest.source +61 -0
- package/modules/composite/manifest.source +49 -0
- package/modules/contour/capabilities/drawing-paint-asymmetric-vertex/example.ani +32 -0
- package/modules/contour/capabilities/drawing-paint-asymmetric-vertex/example.animl +5 -0
- package/modules/contour/capabilities/drawing-paint-detached-vertex/example.ani +32 -0
- package/modules/contour/capabilities/drawing-paint-detached-vertex/example.animl +5 -0
- package/modules/contour/capabilities/drawing-paint-effect-order/example.ani +28 -0
- package/modules/contour/capabilities/drawing-paint-effect-order/example.animl +3 -0
- package/modules/contour/capabilities/drawing-paint-fill-rule-clockwise/example.ani +17 -0
- package/modules/contour/capabilities/drawing-paint-fill-rule-clockwise/example.animl +3 -0
- package/modules/contour/capabilities/drawing-paint-geometry-origin/example.ani +35 -0
- package/modules/contour/capabilities/drawing-paint-geometry-origin/example.animl +5 -0
- package/modules/contour/capabilities/drawing-paint-mirrored-vertex/example.ani +31 -0
- package/modules/contour/capabilities/drawing-paint-mirrored-vertex/example.animl +5 -0
- package/modules/contour/capabilities/drawing-paint-rounded-vertex/example.ani +31 -0
- package/modules/contour/capabilities/drawing-paint-rounded-vertex/example.animl +5 -0
- package/modules/contour/capabilities/drawing-paint-shared-effects/example.ani +26 -0
- package/modules/contour/capabilities/drawing-paint-shared-effects/example.animl +3 -0
- package/modules/contour/capabilities/drawing-paint-straight-vertex/example.ani +30 -0
- package/modules/contour/capabilities/drawing-paint-straight-vertex/example.animl +5 -0
- package/modules/contour/capabilities/drawing-paint-trim-sequential/example.ani +22 -0
- package/modules/contour/capabilities/drawing-paint-trim-sequential/example.animl +3 -0
- package/modules/contour/capabilities/drawing-paint-trim-synchronized/example.ani +22 -0
- package/modules/contour/capabilities/drawing-paint-trim-synchronized/example.animl +3 -0
- package/modules/contour/manifest.source +47 -0
- package/modules/convert/SPEC.md +140 -0
- package/modules/convert/capabilities/data-converter-color-formatting/example.ani +44 -0
- package/modules/convert/capabilities/data-converter-color-formatting/example.animl +8 -0
- package/modules/convert/capabilities/data-converter-trigger/example.ani +78 -0
- package/modules/convert/capabilities/data-converter-trigger/example.animl +22 -0
- package/modules/convert/core/math.source +126 -0
- package/modules/convert/examples/score.ani +60 -0
- package/modules/convert/examples/score.animl +12 -0
- package/modules/convert/examples/travelling-indicator.ani +41 -0
- package/modules/convert/examples/travelling-indicator.animl +8 -0
- package/modules/convert/manifest.source +53 -0
- package/modules/corners/examples/switch.ani +20 -0
- package/modules/corners/examples/switch.animl +3 -0
- package/modules/corners/manifest.source +25 -0
- package/modules/data/SPEC.md +216 -0
- package/modules/data/capabilities/data-bind-conditions/example.ani +52 -0
- package/modules/data/capabilities/data-bind-conditions/example.animl +17 -0
- package/modules/data/capabilities/data-bind-converter-options/example.ani +16 -0
- package/modules/data/capabilities/data-bind-converter-options/example.animl +4 -0
- package/modules/data/capabilities/data-bind-instance-values/example.ani +66 -0
- package/modules/data/capabilities/data-bind-instance-values/example.animl +17 -0
- package/modules/data/capabilities/data-bind-keyframes/example.ani +16 -0
- package/modules/data/capabilities/data-bind-keyframes/example.animl +4 -0
- package/modules/data/capabilities/data-bind-script-inputs/example.ani +16 -0
- package/modules/data/capabilities/data-bind-script-inputs/example.animl +4 -0
- package/modules/data/capabilities/data-bind-text/example.ani +16 -0
- package/modules/data/capabilities/data-bind-text/example.animl +4 -0
- package/modules/data/capabilities/data-binding-absolute/example.ani +43 -0
- package/modules/data/capabilities/data-binding-absolute/example.animl +13 -0
- package/modules/data/capabilities/data-binding-once/example.ani +58 -0
- package/modules/data/capabilities/data-binding-once/example.animl +20 -0
- package/modules/data/capabilities/data-binding-relative/example.ani +16 -0
- package/modules/data/capabilities/data-binding-relative/example.animl +4 -0
- package/modules/data/capabilities/data-binding-to-source/example.ani +58 -0
- package/modules/data/capabilities/data-binding-to-source/example.animl +20 -0
- package/modules/data/capabilities/data-binding-two-way-prefer-source/example.ani +59 -0
- package/modules/data/capabilities/data-binding-two-way-prefer-source/example.animl +20 -0
- package/modules/data/capabilities/data-binding-two-way-prefer-target/example.ani +59 -0
- package/modules/data/capabilities/data-binding-two-way-prefer-target/example.animl +20 -0
- package/modules/data/capabilities/data-component-public-data/example.ani +66 -0
- package/modules/data/capabilities/data-component-public-data/example.animl +17 -0
- package/modules/data/capabilities/data-custom-property-boolean/example.ani +35 -0
- package/modules/data/capabilities/data-custom-property-boolean/example.animl +9 -0
- package/modules/data/capabilities/data-custom-property-color/example.ani +38 -0
- package/modules/data/capabilities/data-custom-property-color/example.animl +9 -0
- package/modules/data/capabilities/data-custom-property-enum/example.ani +40 -0
- package/modules/data/capabilities/data-custom-property-enum/example.animl +9 -0
- package/modules/data/capabilities/data-custom-property-number/example.ani +35 -0
- package/modules/data/capabilities/data-custom-property-number/example.animl +9 -0
- package/modules/data/capabilities/data-custom-property-string/example.ani +35 -0
- package/modules/data/capabilities/data-custom-property-string/example.animl +9 -0
- package/modules/data/capabilities/data-custom-property-trigger/example.ani +52 -0
- package/modules/data/capabilities/data-custom-property-trigger/example.animl +15 -0
- package/modules/data/capabilities/data-default-instance/example.ani +43 -0
- package/modules/data/capabilities/data-default-instance/example.animl +13 -0
- package/modules/data/capabilities/data-editor-preview-instance/example.ani +16 -0
- package/modules/data/capabilities/data-editor-preview-instance/example.animl +4 -0
- package/modules/data/capabilities/data-enum-members/example.ani +41 -0
- package/modules/data/capabilities/data-enum-members/example.animl +8 -0
- package/modules/data/capabilities/data-global-model/example.ani +64 -0
- package/modules/data/capabilities/data-global-model/example.animl +17 -0
- package/modules/data/capabilities/data-instance-export/example.ani +41 -0
- package/modules/data/capabilities/data-instance-export/example.animl +8 -0
- package/modules/data/capabilities/data-list-items/example.ani +55 -0
- package/modules/data/capabilities/data-list-items/example.animl +16 -0
- package/modules/data/capabilities/data-model-definition/example.ani +43 -0
- package/modules/data/capabilities/data-model-definition/example.animl +13 -0
- package/modules/data/capabilities/data-named-instances/example.ani +43 -0
- package/modules/data/capabilities/data-named-instances/example.animl +13 -0
- package/modules/data/capabilities/data-operation-operand-view-model/example.ani +32 -0
- package/modules/data/capabilities/data-operation-operand-view-model/example.animl +9 -0
- package/modules/data/capabilities/data-property-artboard/example.ani +16 -0
- package/modules/data/capabilities/data-property-artboard/example.animl +4 -0
- package/modules/data/capabilities/data-property-asset-blob/example.ani +40 -0
- package/modules/data/capabilities/data-property-asset-blob/example.animl +10 -0
- package/modules/data/capabilities/data-property-asset-font/example.ani +40 -0
- package/modules/data/capabilities/data-property-asset-font/example.animl +10 -0
- package/modules/data/capabilities/data-property-asset-image/example.ani +40 -0
- package/modules/data/capabilities/data-property-asset-image/example.animl +12 -0
- package/modules/data/capabilities/data-property-boolean/example.ani +28 -0
- package/modules/data/capabilities/data-property-boolean/example.animl +7 -0
- package/modules/data/capabilities/data-property-color/example.ani +29 -0
- package/modules/data/capabilities/data-property-color/example.animl +7 -0
- package/modules/data/capabilities/data-property-enum-custom/example.ani +29 -0
- package/modules/data/capabilities/data-property-enum-custom/example.animl +7 -0
- package/modules/data/capabilities/data-property-enum-system/example.ani +29 -0
- package/modules/data/capabilities/data-property-enum-system/example.animl +7 -0
- package/modules/data/capabilities/data-property-list/example.ani +55 -0
- package/modules/data/capabilities/data-property-list/example.animl +16 -0
- package/modules/data/capabilities/data-property-number/example.ani +29 -0
- package/modules/data/capabilities/data-property-number/example.animl +7 -0
- package/modules/data/capabilities/data-property-string/example.ani +29 -0
- package/modules/data/capabilities/data-property-string/example.animl +7 -0
- package/modules/data/capabilities/data-property-symbol-list-index/example.ani +16 -0
- package/modules/data/capabilities/data-property-symbol-list-index/example.animl +4 -0
- package/modules/data/capabilities/data-property-text-style/example.ani +16 -0
- package/modules/data/capabilities/data-property-text-style/example.animl +4 -0
- package/modules/data/capabilities/data-property-trigger/example.ani +51 -0
- package/modules/data/capabilities/data-property-trigger/example.animl +17 -0
- package/modules/data/capabilities/data-property-view-model/example.ani +55 -0
- package/modules/data/capabilities/data-property-view-model/example.animl +16 -0
- package/modules/data/capabilities/data-script-model-api/example.ani +16 -0
- package/modules/data/capabilities/data-script-model-api/example.animl +4 -0
- package/modules/data/capabilities/data-scripted-converter/example.ani +16 -0
- package/modules/data/capabilities/data-scripted-converter/example.animl +4 -0
- package/modules/data/capabilities/data-state-action-trigger/example.ani +51 -0
- package/modules/data/capabilities/data-state-action-trigger/example.animl +17 -0
- package/modules/data/capabilities/data-system-enum-horizontal-text-align/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-horizontal-text-align/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-layout-alignment/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-layout-alignment/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-layout-direction/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-layout-direction/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-layout-display/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-layout-display/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-layout-flex-direction/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-layout-flex-direction/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-layout-position/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-layout-position/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-layout-position-units/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-layout-position-units/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-layout-scale-type/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-layout-scale-type/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-layout-wrap/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-layout-wrap/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-scroll-direction/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-scroll-direction/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-semantic-check-state/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-semantic-check-state/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-text-box/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-text-box/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-text-overflow/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-text-overflow/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-text-trim-bottom/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-text-trim-bottom/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-text-trim-top/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-text-trim-top/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-vertical-text-align/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-vertical-text-align/example.animl +7 -0
- package/modules/data/capabilities/data-system-enum-word-wrap/example.ani +29 -0
- package/modules/data/capabilities/data-system-enum-word-wrap/example.animl +7 -0
- package/modules/data/capabilities/drawing-paint-gradient-channel-binding/example.ani +46 -0
- package/modules/data/capabilities/drawing-paint-gradient-channel-binding/example.animl +14 -0
- package/modules/data/capabilities/input-data-listener/example.ani +41 -0
- package/modules/data/capabilities/input-data-listener/example.animl +10 -0
- package/modules/data/capabilities/input-write-data-constant/example.ani +41 -0
- package/modules/data/capabilities/input-write-data-constant/example.animl +10 -0
- package/modules/data/capabilities/input-write-data-copy/example.ani +39 -0
- package/modules/data/capabilities/input-write-data-copy/example.animl +10 -0
- package/modules/data/capabilities/input-write-focused/example.ani +39 -0
- package/modules/data/capabilities/input-write-focused/example.animl +11 -0
- package/modules/data/capabilities/input-write-gamepad-axis/example.ani +38 -0
- package/modules/data/capabilities/input-write-gamepad-axis/example.animl +9 -0
- package/modules/data/capabilities/input-write-gamepad-button-pressed/example.ani +38 -0
- package/modules/data/capabilities/input-write-gamepad-button-pressed/example.animl +9 -0
- package/modules/data/capabilities/input-write-gamepad-button-value/example.ani +38 -0
- package/modules/data/capabilities/input-write-gamepad-button-value/example.animl +9 -0
- package/modules/data/capabilities/input-write-gamepad-changed-value/example.ani +38 -0
- package/modules/data/capabilities/input-write-gamepad-changed-value/example.animl +9 -0
- package/modules/data/examples/data-extras.ani +109 -0
- package/modules/data/examples/data-extras.animl +28 -0
- package/modules/data/examples/scoreboard.ani +74 -0
- package/modules/data/examples/scoreboard.animl +18 -0
- package/modules/data/manifest.source +111 -0
- package/modules/data-artboard/SPEC.md +94 -0
- package/modules/data-artboard/capabilities/components-host-artboard-reference/example.ani +16 -0
- package/modules/data-artboard/capabilities/components-host-artboard-reference/example.animl +26 -0
- package/modules/data-artboard/capabilities/data-host-artboard/example.ani +16 -0
- package/modules/data-artboard/capabilities/data-host-artboard/example.animl +18 -0
- package/modules/data-artboard/capabilities/host-api-bindable-artboards/example.ani +16 -0
- package/modules/data-artboard/capabilities/host-api-bindable-artboards/example.animl +34 -0
- package/modules/data-artboard/capabilities/host-api-data-artboard/example.ani +16 -0
- package/modules/data-artboard/capabilities/host-api-data-artboard/example.animl +18 -0
- package/modules/data-artboard/manifest.source +41 -0
- package/modules/data-host/SPEC.md +50 -0
- package/modules/data-host/examples/nested.ani +82 -0
- package/modules/data-host/examples/nested.animl +21 -0
- package/modules/data-host/manifest.source +26 -0
- package/modules/derive/SPEC.md +66 -0
- package/modules/derive/examples/scoreboard.ani +121 -0
- package/modules/derive/examples/scoreboard.animl +27 -0
- package/modules/derive/manifest.source +24 -0
- package/modules/devtools/SPEC.md +25 -0
- package/modules/devtools/capabilities/host-api-deprecation-policy/example.ani +16 -0
- package/modules/devtools/capabilities/host-api-deprecation-policy/example.animl +3 -0
- package/modules/devtools/capabilities/host-api-fps-counter/example.ani +16 -0
- package/modules/devtools/capabilities/host-api-fps-counter/example.animl +9 -0
- package/modules/devtools/capabilities/host-api-performance-marks/example.ani +16 -0
- package/modules/devtools/capabilities/host-api-performance-marks/example.animl +3 -0
- package/modules/devtools/capabilities/host-api-stop/example.ani +16 -0
- package/modules/devtools/capabilities/host-api-stop/example.animl +3 -0
- package/modules/devtools/manifest.source +13 -0
- package/modules/events/examples/events.ani +75 -0
- package/modules/events/examples/events.animl +23 -0
- package/modules/events/examples/share-evidence/README.md +48 -0
- package/modules/events/examples/share-evidence/clicks.jsonl +51 -0
- package/modules/events/examples/share-evidence/clicks.script +102 -0
- package/modules/events/examples/share-evidence/interrupt.jsonl +3 -0
- package/modules/events/examples/share-evidence/interrupt.script +7 -0
- package/modules/events/examples/share-evidence/perf.txt +4 -0
- package/modules/events/examples/share-evidence/pulse.jsonl +10 -0
- package/modules/events/examples/share-evidence/pulse.script +20 -0
- package/modules/events/examples/share-evidence/rest-diff.txt +1 -0
- package/modules/events/examples/share-evidence/size.txt +18 -0
- package/modules/events/examples/share-evidence/verify.py +48 -0
- package/modules/events/examples/share-tone.wav +0 -0
- package/modules/events/examples/share.ani +186 -0
- package/modules/events/examples/share.animl +40 -0
- package/modules/events/manifest.source +74 -0
- package/modules/focus/capabilities/input-focus-clear/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-clear/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-down/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-down/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-edge-closed-loop/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-edge-closed-loop/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-edge-parent-scope/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-edge-parent-scope/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-edge-stop/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-edge-stop/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-enabled/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-enabled/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-left/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-left/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-next/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-next/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-pointer/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-pointer/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-previous/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-previous/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-right/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-right/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-target/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-target/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-traverse/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-traverse/example.animl +28 -0
- package/modules/focus/capabilities/input-focus-up/example.ani +116 -0
- package/modules/focus/capabilities/input-focus-up/example.animl +28 -0
- package/modules/focus/capabilities/input-listen-blur/example.ani +116 -0
- package/modules/focus/capabilities/input-listen-blur/example.animl +28 -0
- package/modules/focus/capabilities/input-listen-focus/example.ani +116 -0
- package/modules/focus/capabilities/input-listen-focus/example.animl +28 -0
- package/modules/focus/examples/README.md +10 -0
- package/modules/focus/examples/traversal.ani +70 -0
- package/modules/focus/examples/traversal.animl +16 -0
- package/modules/focus/manifest.source +48 -0
- package/modules/fonts/SPEC.md +92 -0
- package/modules/fonts/capabilities/assets-font/example.ani +23 -0
- package/modules/fonts/capabilities/assets-font/example.animl +5 -0
- package/modules/fonts/capabilities/assets-host-decode-font/example.ani +23 -0
- package/modules/fonts/capabilities/assets-host-decode-font/example.animl +5 -0
- package/modules/fonts/capabilities/assets-replacement-scope-font/example.ani +23 -0
- package/modules/fonts/capabilities/assets-replacement-scope-font/example.animl +5 -0
- package/modules/fonts/capabilities/data-host-font/example.ani +23 -0
- package/modules/fonts/capabilities/data-host-font/example.animl +5 -0
- package/modules/fonts/capabilities/host-api-data-font/example.ani +23 -0
- package/modules/fonts/capabilities/host-api-data-font/example.animl +5 -0
- package/modules/fonts/capabilities/host-api-font-fallback/example.ani +23 -0
- package/modules/fonts/capabilities/host-api-font-fallback/example.animl +5 -0
- package/modules/fonts/capabilities/text-font-assets/example.ani +23 -0
- package/modules/fonts/capabilities/text-font-assets/example.animl +5 -0
- package/modules/fonts/capabilities/text-font-decoding/example.ani +43 -0
- package/modules/fonts/capabilities/text-font-decoding/example.animl +9 -0
- package/modules/fonts/capabilities/text-font-fallback/example.ani +23 -0
- package/modules/fonts/capabilities/text-font-fallback/example.animl +5 -0
- package/modules/fonts/capabilities/text-font-metrics/example.ani +40 -0
- package/modules/fonts/capabilities/text-font-metrics/example.animl +9 -0
- package/modules/fonts/capabilities/text-opentype-features/example.ani +23 -0
- package/modules/fonts/capabilities/text-opentype-features/example.animl +7 -0
- package/modules/fonts/capabilities/text-variable-axes/example.ani +23 -0
- package/modules/fonts/capabilities/text-variable-axes/example.animl +9 -0
- package/modules/fonts/manifest.source +57 -0
- package/modules/host/AUTHORING.md +33 -0
- package/modules/host/SPEC.md +76 -0
- package/modules/host/examples/page.html +23 -0
- package/modules/host/examples/score.ani +48 -0
- package/modules/host/examples/score.animl +10 -0
- package/modules/host/manifest.source +19 -0
- package/modules/host-edit/AUTHORING.md +66 -0
- package/modules/host-edit/SPEC.md +96 -0
- package/modules/host-edit/examples/board.ani +72 -0
- package/modules/host-edit/examples/board.animl +17 -0
- package/modules/host-edit/examples/page.html +34 -0
- package/modules/host-edit/manifest.source +21 -0
- package/modules/host-fit/capabilities/host-api-fit-layout/example.ani +55 -0
- package/modules/host-fit/capabilities/host-api-fit-layout/example.animl +11 -0
- package/modules/host-fit/examples/tile.ani +19 -0
- package/modules/host-fit/examples/tile.animl +3 -0
- package/modules/host-fit/manifest.source +22 -0
- package/modules/host-values/SPEC.md +9 -0
- package/modules/host-values/manifest.source +22 -0
- package/modules/ik/capabilities/rigging-ik/example.ani +16 -0
- package/modules/ik/capabilities/rigging-ik/example.animl +11 -0
- package/modules/ik/capabilities/rigging-ik-bend/example.ani +16 -0
- package/modules/ik/capabilities/rigging-ik-bend/example.animl +11 -0
- package/modules/ik/examples/reach.ani +100 -0
- package/modules/ik/examples/reach.animl +18 -0
- package/modules/ik/manifest.source +30 -0
- package/modules/input/SPEC.md +397 -0
- package/modules/input/capabilities/host-api-coordinate-mapping/example.ani +32 -0
- package/modules/input/capabilities/host-api-coordinate-mapping/example.animl +7 -0
- package/modules/input/capabilities/host-api-dom-listener-control/example.ani +32 -0
- package/modules/input/capabilities/host-api-dom-listener-control/example.animl +7 -0
- package/modules/input/capabilities/host-api-gamepad/example.ani +34 -0
- package/modules/input/capabilities/host-api-gamepad/example.animl +7 -0
- package/modules/input/capabilities/host-api-low-level-pointer/example.ani +32 -0
- package/modules/input/capabilities/host-api-low-level-pointer/example.animl +7 -0
- package/modules/input/capabilities/host-api-low-level-scroll/example.ani +32 -0
- package/modules/input/capabilities/host-api-low-level-scroll/example.animl +7 -0
- package/modules/input/capabilities/host-api-manual-gamepad-batch/example.ani +34 -0
- package/modules/input/capabilities/host-api-manual-gamepad-batch/example.animl +7 -0
- package/modules/input/capabilities/host-api-multitouch/example.ani +32 -0
- package/modules/input/capabilities/host-api-multitouch/example.animl +7 -0
- package/modules/input/capabilities/host-api-pointer-exit/example.ani +31 -0
- package/modules/input/capabilities/host-api-pointer-exit/example.animl +7 -0
- package/modules/input/capabilities/host-api-scroll-hit-policy/example.ani +32 -0
- package/modules/input/capabilities/host-api-scroll-hit-policy/example.animl +7 -0
- package/modules/input/capabilities/host-api-scroll-latching/example.ani +32 -0
- package/modules/input/capabilities/host-api-scroll-latching/example.animl +7 -0
- package/modules/input/capabilities/input-align-preserve/example.ani +43 -0
- package/modules/input/capabilities/input-align-preserve/example.animl +9 -0
- package/modules/input/capabilities/input-align-snap/example.ani +43 -0
- package/modules/input/capabilities/input-align-snap/example.animl +9 -0
- package/modules/input/capabilities/input-bounded-hit-tests/example.ani +32 -0
- package/modules/input/capabilities/input-bounded-hit-tests/example.animl +7 -0
- package/modules/input/capabilities/input-button-middle/example.ani +33 -0
- package/modules/input/capabilities/input-button-middle/example.animl +7 -0
- package/modules/input/capabilities/input-button-secondary/example.ani +33 -0
- package/modules/input/capabilities/input-button-secondary/example.animl +7 -0
- package/modules/input/capabilities/input-capture-phase/example.ani +60 -0
- package/modules/input/capabilities/input-capture-phase/example.animl +11 -0
- package/modules/input/capabilities/input-cursor-arrow/example.ani +33 -0
- package/modules/input/capabilities/input-cursor-arrow/example.animl +7 -0
- package/modules/input/capabilities/input-cursor-hidden/example.ani +33 -0
- package/modules/input/capabilities/input-cursor-hidden/example.animl +7 -0
- package/modules/input/capabilities/input-cursor-intent/example.ani +33 -0
- package/modules/input/capabilities/input-cursor-intent/example.animl +7 -0
- package/modules/input/capabilities/input-cursor-pointer/example.ani +33 -0
- package/modules/input/capabilities/input-cursor-pointer/example.animl +7 -0
- package/modules/input/capabilities/input-cursor-resize-horizontal/example.ani +33 -0
- package/modules/input/capabilities/input-cursor-resize-horizontal/example.animl +7 -0
- package/modules/input/capabilities/input-cursor-resize-vertical/example.ani +33 -0
- package/modules/input/capabilities/input-cursor-resize-vertical/example.animl +7 -0
- package/modules/input/capabilities/input-cursor-text/example.ani +33 -0
- package/modules/input/capabilities/input-cursor-text/example.animl +7 -0
- package/modules/input/capabilities/input-disable-listeners/example.ani +32 -0
- package/modules/input/capabilities/input-disable-listeners/example.animl +7 -0
- package/modules/input/capabilities/input-gamepad-axis/example.ani +34 -0
- package/modules/input/capabilities/input-gamepad-axis/example.animl +7 -0
- package/modules/input/capabilities/input-gamepad-button/example.ani +32 -0
- package/modules/input/capabilities/input-gamepad-button/example.animl +7 -0
- package/modules/input/capabilities/input-gamepad-button-phases/example.ani +33 -0
- package/modules/input/capabilities/input-gamepad-button-phases/example.animl +7 -0
- package/modules/input/capabilities/input-gamepad-connected/example.ani +31 -0
- package/modules/input/capabilities/input-gamepad-connected/example.animl +7 -0
- package/modules/input/capabilities/input-gamepad-disconnected/example.ani +31 -0
- package/modules/input/capabilities/input-gamepad-disconnected/example.animl +7 -0
- package/modules/input/capabilities/input-gamepad-host/example.ani +34 -0
- package/modules/input/capabilities/input-gamepad-host/example.animl +7 -0
- package/modules/input/capabilities/input-gamepad-index-mapping/example.ani +34 -0
- package/modules/input/capabilities/input-gamepad-index-mapping/example.animl +7 -0
- package/modules/input/capabilities/input-hit-occlusion-query/example.ani +42 -0
- package/modules/input/capabilities/input-hit-occlusion-query/example.animl +8 -0
- package/modules/input/capabilities/input-hit-parent-chain/example.ani +39 -0
- package/modules/input/capabilities/input-hit-parent-chain/example.animl +9 -0
- package/modules/input/capabilities/input-hit-shape-geometry/example.ani +32 -0
- package/modules/input/capabilities/input-hit-shape-geometry/example.animl +7 -0
- package/modules/input/capabilities/input-hit-test-host/example.ani +32 -0
- package/modules/input/capabilities/input-hit-test-host/example.animl +7 -0
- package/modules/input/capabilities/input-key-down/example.ani +32 -0
- package/modules/input/capabilities/input-key-down/example.animl +7 -0
- package/modules/input/capabilities/input-key-filter/example.ani +32 -0
- package/modules/input/capabilities/input-key-filter/example.animl +7 -0
- package/modules/input/capabilities/input-key-modifiers/example.ani +33 -0
- package/modules/input/capabilities/input-key-modifiers/example.animl +7 -0
- package/modules/input/capabilities/input-key-repeat/example.ani +32 -0
- package/modules/input/capabilities/input-key-repeat/example.animl +7 -0
- package/modules/input/capabilities/input-key-up/example.ani +32 -0
- package/modules/input/capabilities/input-key-up/example.animl +7 -0
- package/modules/input/capabilities/input-keyboard-bubbling/example.ani +45 -0
- package/modules/input/capabilities/input-keyboard-bubbling/example.animl +10 -0
- package/modules/input/capabilities/input-multi-touch/example.ani +32 -0
- package/modules/input/capabilities/input-multi-touch/example.animl +7 -0
- package/modules/input/capabilities/input-multi-trigger-listener/example.ani +32 -0
- package/modules/input/capabilities/input-multi-trigger-listener/example.animl +7 -0
- package/modules/input/capabilities/input-opaque-targets/example.ani +42 -0
- package/modules/input/capabilities/input-opaque-targets/example.animl +8 -0
- package/modules/input/capabilities/input-pointer-cancel/example.ani +31 -0
- package/modules/input/capabilities/input-pointer-cancel/example.animl +7 -0
- package/modules/input/capabilities/input-pointer-drag/example.ani +58 -0
- package/modules/input/capabilities/input-pointer-drag/example.animl +17 -0
- package/modules/input/capabilities/input-pointer-drag-end/example.ani +58 -0
- package/modules/input/capabilities/input-pointer-drag-end/example.animl +17 -0
- package/modules/input/capabilities/input-pointer-drag-start/example.ani +58 -0
- package/modules/input/capabilities/input-pointer-drag-start/example.animl +17 -0
- package/modules/input/capabilities/input-pointer-enable/example.ani +32 -0
- package/modules/input/capabilities/input-pointer-enable/example.animl +7 -0
- package/modules/input/capabilities/input-touch-page-scroll/example.ani +32 -0
- package/modules/input/capabilities/input-touch-page-scroll/example.animl +7 -0
- package/modules/input/capabilities/input-trackpad-scroll/example.ani +32 -0
- package/modules/input/capabilities/input-trackpad-scroll/example.animl +7 -0
- package/modules/input/capabilities/input-wheel-scroll/example.ani +32 -0
- package/modules/input/capabilities/input-wheel-scroll/example.animl +7 -0
- package/modules/input/capabilities/input-write-key-pressed/example.ani +39 -0
- package/modules/input/capabilities/input-write-key-pressed/example.animl +7 -0
- package/modules/input/capabilities/input-write-pointer-delta-x/example.ani +39 -0
- package/modules/input/capabilities/input-write-pointer-delta-x/example.animl +7 -0
- package/modules/input/capabilities/input-write-pointer-delta-y/example.ani +39 -0
- package/modules/input/capabilities/input-write-pointer-delta-y/example.animl +7 -0
- package/modules/input/capabilities/input-write-pointer-x/example.ani +39 -0
- package/modules/input/capabilities/input-write-pointer-x/example.animl +7 -0
- package/modules/input/capabilities/input-write-pointer-y/example.ani +39 -0
- package/modules/input/capabilities/input-write-pointer-y/example.animl +7 -0
- package/modules/input/capabilities/transforms-collapse/example.ani +39 -0
- package/modules/input/capabilities/transforms-collapse/example.animl +9 -0
- package/modules/input/capabilities/transforms-solo/example.ani +48 -0
- package/modules/input/capabilities/transforms-solo/example.animl +10 -0
- package/modules/input/core/commands.source +64 -0
- package/modules/input/core/types.source +97 -0
- package/modules/input/examples/README.md +9 -0
- package/modules/input/examples/drag-slider.ani +50 -0
- package/modules/input/examples/drag-slider.animl +11 -0
- package/modules/input/manifest.source +98 -0
- package/modules/layout/SPEC.md +210 -0
- package/modules/layout/capabilities/data-bind-layout/example.ani +60 -0
- package/modules/layout/capabilities/data-bind-layout/example.animl +10 -0
- package/modules/layout/capabilities/layout-alignment/example.ani +44 -0
- package/modules/layout/capabilities/layout-alignment/example.animl +6 -0
- package/modules/layout/capabilities/layout-animated-reflow/example.ani +62 -0
- package/modules/layout/capabilities/layout-animated-reflow/example.animl +12 -0
- package/modules/layout/capabilities/layout-containers/example.ani +62 -0
- package/modules/layout/capabilities/layout-containers/example.animl +9 -0
- package/modules/layout/capabilities/layout-fill-sizing/example.ani +45 -0
- package/modules/layout/capabilities/layout-fill-sizing/example.animl +6 -0
- package/modules/layout/capabilities/layout-fixed-sizing/example.ani +46 -0
- package/modules/layout/capabilities/layout-fixed-sizing/example.animl +6 -0
- package/modules/layout/capabilities/layout-flex-align-items/example.ani +43 -0
- package/modules/layout/capabilities/layout-flex-align-items/example.animl +6 -0
- package/modules/layout/capabilities/layout-flex-direction/example.ani +43 -0
- package/modules/layout/capabilities/layout-flex-direction/example.animl +6 -0
- package/modules/layout/capabilities/layout-flex-justify/example.ani +42 -0
- package/modules/layout/capabilities/layout-flex-justify/example.animl +6 -0
- package/modules/layout/capabilities/layout-hug-sizing/example.ani +42 -0
- package/modules/layout/capabilities/layout-hug-sizing/example.animl +6 -0
- package/modules/layout/capabilities/layout-intrinsic/example.ani +40 -0
- package/modules/layout/capabilities/layout-intrinsic/example.animl +6 -0
- package/modules/layout/capabilities/layout-paint/example.ani +60 -0
- package/modules/layout/capabilities/layout-paint/example.animl +8 -0
- package/modules/layout/capabilities/layout-participants/example.ani +40 -0
- package/modules/layout/capabilities/layout-participants/example.animl +6 -0
- package/modules/layout/capabilities/layout-self-alignment/example.ani +45 -0
- package/modules/layout/capabilities/layout-self-alignment/example.animl +6 -0
- package/modules/layout/capabilities/layout-size-bounds/example.ani +49 -0
- package/modules/layout/capabilities/layout-size-bounds/example.animl +6 -0
- package/modules/layout/capabilities/layout-spacing/example.ani +45 -0
- package/modules/layout/capabilities/layout-spacing/example.animl +6 -0
- package/modules/layout/capabilities/layout-visibility/example.ani +56 -0
- package/modules/layout/capabilities/layout-visibility/example.animl +7 -0
- package/modules/layout/examples/button.ani +61 -0
- package/modules/layout/examples/button.animl +12 -0
- package/modules/layout/examples/reflow.ani +62 -0
- package/modules/layout/examples/reflow.animl +12 -0
- package/modules/layout/examples/wrapped.ani +55 -0
- package/modules/layout/examples/wrapped.animl +11 -0
- package/modules/layout/manifest.source +73 -0
- package/modules/lists/SPEC.md +44 -0
- package/modules/lists/capabilities/components-explicit-context/example.ani +81 -0
- package/modules/lists/capabilities/components-explicit-context/example.animl +22 -0
- package/modules/lists/capabilities/components-inherited-context/example.ani +99 -0
- package/modules/lists/capabilities/components-inherited-context/example.animl +24 -0
- package/modules/lists/capabilities/components-list/example.ani +77 -0
- package/modules/lists/capabilities/components-list/example.animl +19 -0
- package/modules/lists/capabilities/components-list-map/example.ani +116 -0
- package/modules/lists/capabilities/components-list-map/example.animl +29 -0
- package/modules/lists/capabilities/components-list-size-override/example.ani +83 -0
- package/modules/lists/capabilities/components-list-size-override/example.animl +20 -0
- package/modules/lists/capabilities/data-binding-relative/example.ani +77 -0
- package/modules/lists/capabilities/data-binding-relative/example.animl +19 -0
- package/modules/lists/capabilities/data-converter-number-to-list/example.ani +109 -0
- package/modules/lists/capabilities/data-converter-number-to-list/example.animl +29 -0
- package/modules/lists/capabilities/data-property-symbol-list-index/example.ani +77 -0
- package/modules/lists/capabilities/data-property-symbol-list-index/example.animl +19 -0
- package/modules/lists/examples/players.ani +77 -0
- package/modules/lists/examples/players.animl +19 -0
- package/modules/lists/manifest.source +43 -0
- package/modules/machine/capabilities/state-machine-any-state/example.ani +62 -0
- package/modules/machine/capabilities/state-machine-any-state/example.animl +22 -0
- package/modules/machine/capabilities/state-machine-blend-1d-data/example.ani +74 -0
- package/modules/machine/capabilities/state-machine-blend-1d-data/example.animl +23 -0
- package/modules/machine/capabilities/state-machine-blend-1d-input/example.ani +70 -0
- package/modules/machine/capabilities/state-machine-blend-1d-input/example.animl +23 -0
- package/modules/machine/capabilities/state-machine-blend-additive/example.ani +69 -0
- package/modules/machine/capabilities/state-machine-blend-additive/example.animl +23 -0
- package/modules/machine/capabilities/state-machine-blend-direct/example.ani +64 -0
- package/modules/machine/capabilities/state-machine-blend-direct/example.animl +21 -0
- package/modules/machine/capabilities/state-machine-blend-exit-clock/example.ani +72 -0
- package/modules/machine/capabilities/state-machine-blend-exit-clock/example.animl +25 -0
- package/modules/machine/capabilities/state-machine-blend-weight-constant/example.ani +64 -0
- package/modules/machine/capabilities/state-machine-blend-weight-constant/example.animl +21 -0
- package/modules/machine/capabilities/state-machine-blend-weight-data/example.ani +71 -0
- package/modules/machine/capabilities/state-machine-blend-weight-data/example.animl +23 -0
- package/modules/machine/capabilities/state-machine-blend-weight-input/example.ani +69 -0
- package/modules/machine/capabilities/state-machine-blend-weight-input/example.animl +23 -0
- package/modules/machine/capabilities/state-machine-condition-artboard/example.ani +50 -0
- package/modules/machine/capabilities/state-machine-condition-artboard/example.animl +13 -0
- package/modules/machine/capabilities/state-machine-condition-component/example.ani +76 -0
- package/modules/machine/capabilities/state-machine-condition-component/example.animl +19 -0
- package/modules/machine/capabilities/state-machine-condition-data/example.ani +54 -0
- package/modules/machine/capabilities/state-machine-condition-data/example.animl +15 -0
- package/modules/machine/capabilities/state-machine-condition-focus/example.ani +49 -0
- package/modules/machine/capabilities/state-machine-condition-focus/example.animl +13 -0
- package/modules/machine/capabilities/state-machine-continue-on-exit/example.ani +58 -0
- package/modules/machine/capabilities/state-machine-continue-on-exit/example.animl +21 -0
- package/modules/machine/capabilities/state-machine-entry-state/example.ani +56 -0
- package/modules/machine/capabilities/state-machine-entry-state/example.animl +19 -0
- package/modules/machine/capabilities/state-machine-exit-state/example.ani +46 -0
- package/modules/machine/capabilities/state-machine-exit-state/example.animl +15 -0
- package/modules/machine/capabilities/state-machine-exit-time-relative/example.ani +52 -0
- package/modules/machine/capabilities/state-machine-exit-time-relative/example.animl +19 -0
- package/modules/machine/capabilities/state-machine-literal-asset/example.ani +62 -0
- package/modules/machine/capabilities/state-machine-literal-asset/example.animl +18 -0
- package/modules/machine/capabilities/state-machine-literal-boolean/example.ani +53 -0
- package/modules/machine/capabilities/state-machine-literal-boolean/example.animl +15 -0
- package/modules/machine/capabilities/state-machine-literal-color/example.ani +54 -0
- package/modules/machine/capabilities/state-machine-literal-color/example.animl +15 -0
- package/modules/machine/capabilities/state-machine-literal-enum/example.ani +54 -0
- package/modules/machine/capabilities/state-machine-literal-enum/example.animl +15 -0
- package/modules/machine/capabilities/state-machine-literal-string/example.ani +54 -0
- package/modules/machine/capabilities/state-machine-literal-string/example.animl +15 -0
- package/modules/machine/capabilities/state-machine-literal-trigger/example.ani +53 -0
- package/modules/machine/capabilities/state-machine-literal-trigger/example.animl +15 -0
- package/modules/machine/capabilities/state-machine-state-entry-actions/example.ani +56 -0
- package/modules/machine/capabilities/state-machine-state-entry-actions/example.animl +16 -0
- package/modules/machine/capabilities/state-machine-state-exit-actions/example.ani +56 -0
- package/modules/machine/capabilities/state-machine-state-exit-actions/example.animl +16 -0
- package/modules/machine/capabilities/state-machine-state-random/example.ani +53 -0
- package/modules/machine/capabilities/state-machine-state-random/example.animl +17 -0
- package/modules/machine/capabilities/state-machine-state-reset/example.ani +52 -0
- package/modules/machine/capabilities/state-machine-state-reset/example.animl +18 -0
- package/modules/machine/capabilities/state-machine-transition-actions/example.ani +56 -0
- package/modules/machine/capabilities/state-machine-transition-actions/example.animl +16 -0
- package/modules/machine/capabilities/state-machine-transition-disabled/example.ani +57 -0
- package/modules/machine/capabilities/state-machine-transition-disabled/example.animl +19 -0
- package/modules/machine/capabilities/state-machine-transition-duration-relative/example.ani +57 -0
- package/modules/machine/capabilities/state-machine-transition-duration-relative/example.animl +21 -0
- package/modules/machine/capabilities/state-machine-transition-end-actions/example.ani +56 -0
- package/modules/machine/capabilities/state-machine-transition-end-actions/example.animl +16 -0
- package/modules/machine/capabilities/state-machine-transition-random-weight/example.ani +53 -0
- package/modules/machine/capabilities/state-machine-transition-random-weight/example.animl +17 -0
- package/modules/machine/examples/README.md +12 -0
- package/modules/machine/examples/blend-pulse.ani +115 -0
- package/modules/machine/examples/blend-pulse.animl +32 -0
- package/modules/machine/manifest.source +73 -0
- package/modules/markup/manifest.source +26 -0
- package/modules/markup-animation/manifest.source +23 -0
- package/modules/markup-hooks/manifest.source +13 -0
- package/modules/markup-libraries/SPEC.md +56 -0
- package/modules/markup-libraries/capabilities/components-library-export/example.ani +45 -0
- package/modules/markup-libraries/capabilities/components-library-export/example.animl +4 -0
- package/modules/markup-libraries/capabilities/components-library-models/example.ani +45 -0
- package/modules/markup-libraries/capabilities/components-library-models/example.animl +4 -0
- package/modules/markup-libraries/capabilities/components-library-update/example.ani +45 -0
- package/modules/markup-libraries/capabilities/components-library-update/example.animl +4 -0
- package/modules/markup-libraries/manifest.source +38 -0
- package/modules/media/manifest.source +21 -0
- package/modules/mesh/capabilities/rigging-mesh/example.ani +50 -0
- package/modules/mesh/capabilities/rigging-mesh/example.animl +9 -0
- package/modules/mesh/capabilities/rigging-mesh-animation/example.ani +65 -0
- package/modules/mesh/capabilities/rigging-mesh-animation/example.animl +15 -0
- package/modules/mesh/examples/flag.ani +108 -0
- package/modules/mesh/examples/flag.animl +23 -0
- package/modules/mesh/manifest.source +37 -0
- package/modules/mix/capabilities/drawing-paint-additive-strength/example.ani +34 -0
- package/modules/mix/capabilities/drawing-paint-additive-strength/example.animl +4 -0
- package/modules/mix/capabilities/drawing-paint-blend-additive/example.ani +33 -0
- package/modules/mix/capabilities/drawing-paint-blend-additive/example.animl +4 -0
- package/modules/mix/capabilities/drawing-paint-paint-blend-override/example.ani +37 -0
- package/modules/mix/capabilities/drawing-paint-paint-blend-override/example.animl +4 -0
- package/modules/mix/capabilities/host-api-factory/example.ani +16 -0
- package/modules/mix/capabilities/host-api-factory/example.animl +3 -0
- package/modules/mix/capabilities/host-api-renderer/example.ani +16 -0
- package/modules/mix/capabilities/host-api-renderer/example.animl +3 -0
- package/modules/mix/manifest.source +36 -0
- package/modules/motion/capabilities/animation-cubic-value/example.ani +40 -0
- package/modules/motion/capabilities/animation-cubic-value/example.animl +9 -0
- package/modules/motion/capabilities/animation-elastic-in/example.ani +40 -0
- package/modules/motion/capabilities/animation-elastic-in/example.animl +9 -0
- package/modules/motion/capabilities/animation-elastic-in-out/example.ani +40 -0
- package/modules/motion/capabilities/animation-elastic-in-out/example.animl +9 -0
- package/modules/motion/capabilities/animation-host-loop-override/example.ani +28 -0
- package/modules/motion/capabilities/animation-host-loop-override/example.animl +6 -0
- package/modules/motion/capabilities/animation-host-play-pause-stop/example.ani +28 -0
- package/modules/motion/capabilities/animation-host-play-pause-stop/example.animl +6 -0
- package/modules/motion/capabilities/animation-keys-reference/example.ani +55 -0
- package/modules/motion/capabilities/animation-keys-reference/example.animl +12 -0
- package/modules/motion/capabilities/animation-keys-signed-integer/example.ani +46 -0
- package/modules/motion/capabilities/animation-keys-signed-integer/example.animl +11 -0
- package/modules/motion/capabilities/animation-keys-string/example.ani +46 -0
- package/modules/motion/capabilities/animation-keys-string/example.animl +11 -0
- package/modules/motion/capabilities/animation-keys-unsigned-integer/example.ani +46 -0
- package/modules/motion/capabilities/animation-keys-unsigned-integer/example.animl +11 -0
- package/modules/motion/capabilities/animation-mix-discrete/example.ani +38 -0
- package/modules/motion/capabilities/animation-mix-discrete/example.animl +9 -0
- package/modules/motion/capabilities/animation-mix-numeric/example.ani +42 -0
- package/modules/motion/capabilities/animation-mix-numeric/example.animl +11 -0
- package/modules/motion/capabilities/animation-quantized-playback/example.ani +41 -0
- package/modules/motion/capabilities/animation-quantized-playback/example.animl +9 -0
- package/modules/motion/capabilities/animation-reverse/example.ani +47 -0
- package/modules/motion/capabilities/animation-reverse/example.animl +12 -0
- package/modules/motion/capabilities/animation-seek/example.ani +28 -0
- package/modules/motion/capabilities/animation-seek/example.animl +6 -0
- package/modules/motion/capabilities/animation-work-area/example.ani +42 -0
- package/modules/motion/capabilities/animation-work-area/example.animl +9 -0
- package/modules/motion/capabilities/data-bind-keyframes/example.ani +52 -0
- package/modules/motion/capabilities/data-bind-keyframes/example.animl +15 -0
- package/modules/motion/capabilities/host-api-animation-metadata/example.ani +31 -0
- package/modules/motion/capabilities/host-api-animation-metadata/example.animl +6 -0
- package/modules/motion/capabilities/host-api-low-level-animation/example.ani +28 -0
- package/modules/motion/capabilities/host-api-low-level-animation/example.animl +6 -0
- package/modules/motion/capabilities/host-api-low-level-scene-query/example.ani +41 -0
- package/modules/motion/capabilities/host-api-low-level-scene-query/example.animl +9 -0
- package/modules/motion/capabilities/host-api-multi-state-machine/example.ani +62 -0
- package/modules/motion/capabilities/host-api-multi-state-machine/example.animl +22 -0
- package/modules/motion/capabilities/host-api-scrub/example.ani +29 -0
- package/modules/motion/capabilities/host-api-scrub/example.animl +6 -0
- package/modules/motion/capabilities/state-machine-exit-time-seconds/example.ani +60 -0
- package/modules/motion/capabilities/state-machine-exit-time-seconds/example.animl +15 -0
- package/modules/motion/capabilities/transforms-origin-animation/example.ani +45 -0
- package/modules/motion/capabilities/transforms-origin-animation/example.animl +10 -0
- package/modules/motion/examples/README.md +42 -0
- package/modules/motion/examples/data-keys.ani +52 -0
- package/modules/motion/examples/data-keys.animl +15 -0
- package/modules/motion/examples/evidence/hover.jsonl +8 -0
- package/modules/motion/examples/evidence/phase.jsonl +9 -0
- package/modules/motion/examples/evidence/reduced.jsonl +6 -0
- package/modules/motion/examples/evidence/rest.jsonl +1 -0
- package/modules/motion/examples/evidence/spin.jsonl +6 -0
- package/modules/motion/examples/evidence/stop.jsonl +10 -0
- package/modules/motion/examples/evidence/sweep.jsonl +26 -0
- package/modules/motion/examples/scripts/hover.txt +21 -0
- package/modules/motion/examples/scripts/phase.txt +28 -0
- package/modules/motion/examples/scripts/reduced.txt +16 -0
- package/modules/motion/examples/scripts/rest.txt +2 -0
- package/modules/motion/examples/scripts/spin.txt +14 -0
- package/modules/motion/examples/scripts/stop.txt +26 -0
- package/modules/motion/examples/scripts/sweep.txt +71 -0
- package/modules/motion/examples/sync.ani +272 -0
- package/modules/motion/examples/sync.animl +64 -0
- package/modules/motion/examples/verify.py +71 -0
- package/modules/motion/manifest.source +67 -0
- package/modules/nested/SPEC.md +79 -0
- package/modules/nested/capabilities/components-leaf-fit/example.ani +50 -0
- package/modules/nested/capabilities/components-leaf-fit/example.animl +9 -0
- package/modules/nested/capabilities/components-nested-quantize/example.ani +65 -0
- package/modules/nested/capabilities/components-nested-quantize/example.animl +15 -0
- package/modules/nested/capabilities/components-nested-remap/example.ani +65 -0
- package/modules/nested/capabilities/components-nested-remap/example.animl +15 -0
- package/modules/nested/capabilities/components-stateful-output/example.ani +51 -0
- package/modules/nested/capabilities/components-stateful-output/example.animl +12 -0
- package/modules/nested/capabilities/data-property-artboard/example.ani +63 -0
- package/modules/nested/capabilities/data-property-artboard/example.animl +14 -0
- package/modules/nested/capabilities/state-machine-literal-artboard/example.ani +76 -0
- package/modules/nested/capabilities/state-machine-literal-artboard/example.animl +19 -0
- package/modules/nested/examples/component-guard.ani +76 -0
- package/modules/nested/examples/component-guard.animl +19 -0
- package/modules/nested/examples/controls.ani +100 -0
- package/modules/nested/examples/controls.animl +21 -0
- package/modules/nested/manifest.source +39 -0
- package/modules/paint/capabilities/drawing-paint-gradient-angular/example.ani +33 -0
- package/modules/paint/capabilities/drawing-paint-gradient-angular/example.animl +8 -0
- package/modules/paint/capabilities/drawing-paint-gradient-transform/example.ani +34 -0
- package/modules/paint/capabilities/drawing-paint-gradient-transform/example.animl +8 -0
- package/modules/paint/capabilities/drawing-paint-image-fit-resize/example.ani +49 -0
- package/modules/paint/capabilities/drawing-paint-image-fit-resize/example.animl +12 -0
- package/modules/paint/capabilities/drawing-paint-image-wrap-clamp/example.ani +50 -0
- package/modules/paint/capabilities/drawing-paint-image-wrap-clamp/example.animl +12 -0
- package/modules/paint/capabilities/drawing-paint-image-wrap-mirror/example.ani +50 -0
- package/modules/paint/capabilities/drawing-paint-image-wrap-mirror/example.animl +12 -0
- package/modules/paint/capabilities/drawing-paint-image-wrap-repeat/example.ani +50 -0
- package/modules/paint/capabilities/drawing-paint-image-wrap-repeat/example.animl +12 -0
- package/modules/paint/manifest.source +77 -0
- package/modules/pathfollow/capabilities/rigging-follow-path/example.ani +16 -0
- package/modules/pathfollow/capabilities/rigging-follow-path/example.animl +7 -0
- package/modules/pathfollow/capabilities/rigging-list-follow-path/example.ani +16 -0
- package/modules/pathfollow/capabilities/rigging-list-follow-path/example.animl +9 -0
- package/modules/pathfollow/examples/orbit.ani +130 -0
- package/modules/pathfollow/examples/orbit.animl +17 -0
- package/modules/pathfollow/manifest.source +35 -0
- package/modules/posepad/examples/look.ani +124 -0
- package/modules/posepad/examples/look.animl +22 -0
- package/modules/posepad/manifest.source +43 -0
- package/modules/rig/AUTHORING.md +24 -0
- package/modules/rig/capabilities/rigging-bone-chains/example.ani +61 -0
- package/modules/rig/capabilities/rigging-bone-chains/example.animl +22 -0
- package/modules/rig/capabilities/rigging-constraint-order/example.ani +123 -0
- package/modules/rig/capabilities/rigging-constraint-order/example.animl +33 -0
- package/modules/rig/capabilities/rigging-constraint-strength/example.ani +105 -0
- package/modules/rig/capabilities/rigging-constraint-strength/example.animl +28 -0
- package/modules/rig/capabilities/rigging-distance-closer/example.ani +160 -0
- package/modules/rig/capabilities/rigging-distance-closer/example.animl +44 -0
- package/modules/rig/capabilities/rigging-distance-exact/example.ani +160 -0
- package/modules/rig/capabilities/rigging-distance-exact/example.animl +44 -0
- package/modules/rig/capabilities/rigging-distance-further/example.ani +160 -0
- package/modules/rig/capabilities/rigging-distance-further/example.animl +44 -0
- package/modules/rig/capabilities/rigging-root-bones/example.ani +63 -0
- package/modules/rig/capabilities/rigging-root-bones/example.animl +22 -0
- package/modules/rig/capabilities/rigging-rotation/example.ani +143 -0
- package/modules/rig/capabilities/rigging-rotation/example.animl +32 -0
- package/modules/rig/capabilities/rigging-scale/example.ani +144 -0
- package/modules/rig/capabilities/rigging-scale/example.animl +32 -0
- package/modules/rig/capabilities/rigging-transform/example.ani +132 -0
- package/modules/rig/capabilities/rigging-transform/example.animl +30 -0
- package/modules/rig/capabilities/rigging-translation/example.ani +248 -0
- package/modules/rig/capabilities/rigging-translation/example.animl +54 -0
- package/modules/rig/examples/arm.ani +120 -0
- package/modules/rig/examples/arm.animl +29 -0
- package/modules/rig/manifest.source +55 -0
- package/modules/scroll/capabilities/rigging-scroll/example.ani +16 -0
- package/modules/scroll/capabilities/rigging-scroll/example.animl +11 -0
- package/modules/scroll/examples/list.ani +115 -0
- package/modules/scroll/examples/list.animl +15 -0
- package/modules/scroll/manifest.source +31 -0
- package/modules/skin/capabilities/rigging-cubic-weights/example.ani +66 -0
- package/modules/skin/capabilities/rigging-cubic-weights/example.animl +17 -0
- package/modules/skin/capabilities/rigging-skin/example.ani +165 -0
- package/modules/skin/capabilities/rigging-skin/example.animl +33 -0
- package/modules/skin/capabilities/rigging-weights/example.ani +147 -0
- package/modules/skin/capabilities/rigging-weights/example.animl +37 -0
- package/modules/skin/examples/sleeve.ani +91 -0
- package/modules/skin/examples/sleeve.animl +14 -0
- package/modules/skin/manifest.source +41 -0
- package/modules/surface/manifest.source +52 -0
- package/modules/text/SPEC.md +269 -0
- package/modules/text/capabilities/data-bind-text/example.ani +63 -0
- package/modules/text/capabilities/data-bind-text/example.animl +8 -0
- package/modules/text/capabilities/data-property-text-style/example.ani +63 -0
- package/modules/text/capabilities/data-property-text-style/example.animl +8 -0
- package/modules/text/capabilities/host-api-nested-text-run/example.ani +44 -0
- package/modules/text/capabilities/host-api-nested-text-run/example.animl +10 -0
- package/modules/text/capabilities/host-api-text-run/example.ani +27 -0
- package/modules/text/capabilities/host-api-text-run/example.animl +6 -0
- package/modules/text/capabilities/text-fit-baseline/example.ani +30 -0
- package/modules/text/capabilities/text-fit-baseline/example.animl +6 -0
- package/modules/text/capabilities/text-fit-layout-measure/example.ani +30 -0
- package/modules/text/capabilities/text-fit-layout-measure/example.animl +6 -0
- package/modules/text/capabilities/text-flatten/example.ani +16 -0
- package/modules/text/capabilities/text-flatten/example.animl +6 -0
- package/modules/text/capabilities/text-font-size/example.ani +59 -0
- package/modules/text/capabilities/text-font-size/example.animl +15 -0
- package/modules/text/capabilities/text-horizontal-alignment/example.ani +28 -0
- package/modules/text/capabilities/text-horizontal-alignment/example.animl +6 -0
- package/modules/text/capabilities/text-line-spacing/example.ani +28 -0
- package/modules/text/capabilities/text-line-spacing/example.animl +6 -0
- package/modules/text/capabilities/text-origin/example.ani +32 -0
- package/modules/text/capabilities/text-origin/example.animl +6 -0
- package/modules/text/capabilities/text-overflow-clipped/example.ani +29 -0
- package/modules/text/capabilities/text-overflow-clipped/example.animl +6 -0
- package/modules/text/capabilities/text-overflow-ellipsis/example.ani +29 -0
- package/modules/text/capabilities/text-overflow-ellipsis/example.animl +6 -0
- package/modules/text/capabilities/text-overflow-fit/example.ani +29 -0
- package/modules/text/capabilities/text-overflow-fit/example.animl +6 -0
- package/modules/text/capabilities/text-overflow-fit-font-size/example.ani +29 -0
- package/modules/text/capabilities/text-overflow-fit-font-size/example.animl +6 -0
- package/modules/text/capabilities/text-overflow-hidden/example.ani +29 -0
- package/modules/text/capabilities/text-overflow-hidden/example.animl +7 -0
- package/modules/text/capabilities/text-overflow-visible/example.ani +29 -0
- package/modules/text/capabilities/text-overflow-visible/example.animl +6 -0
- package/modules/text/capabilities/text-paint/example.ani +30 -0
- package/modules/text/capabilities/text-paint/example.animl +6 -0
- package/modules/text/capabilities/text-paragraph-spacing/example.ani +28 -0
- package/modules/text/capabilities/text-paragraph-spacing/example.animl +7 -0
- package/modules/text/capabilities/text-rich-runs/example.ani +34 -0
- package/modules/text/capabilities/text-rich-runs/example.animl +8 -0
- package/modules/text/capabilities/text-run-list/example.ani +59 -0
- package/modules/text/capabilities/text-run-list/example.animl +7 -0
- package/modules/text/capabilities/text-script-hit-testing/example.ani +47 -0
- package/modules/text/capabilities/text-script-hit-testing/example.animl +10 -0
- package/modules/text/capabilities/text-sizing-auto-height/example.ani +28 -0
- package/modules/text/capabilities/text-sizing-auto-height/example.animl +6 -0
- package/modules/text/capabilities/text-sizing-auto-width/example.ani +27 -0
- package/modules/text/capabilities/text-sizing-auto-width/example.animl +6 -0
- package/modules/text/capabilities/text-sizing-fixed/example.ani +26 -0
- package/modules/text/capabilities/text-sizing-fixed/example.animl +6 -0
- package/modules/text/capabilities/text-style-reference/example.ani +31 -0
- package/modules/text/capabilities/text-style-reference/example.animl +7 -0
- package/modules/text/capabilities/text-tracking/example.ani +28 -0
- package/modules/text/capabilities/text-tracking/example.animl +6 -0
- package/modules/text/capabilities/text-vertical-alignment/example.ani +28 -0
- package/modules/text/capabilities/text-vertical-alignment/example.animl +6 -0
- package/modules/text/capabilities/text-vertical-trim/example.ani +29 -0
- package/modules/text/capabilities/text-vertical-trim/example.animl +6 -0
- package/modules/text/capabilities/text-word-break/example.ani +28 -0
- package/modules/text/capabilities/text-word-break/example.animl +6 -0
- package/modules/text/capabilities/text-wrap/example.ani +28 -0
- package/modules/text/capabilities/text-wrap/example.animl +6 -0
- package/modules/text/manifest.source +92 -0
- package/modules/text-effects/SPEC.md +134 -0
- package/modules/text-effects/capabilities/text-background/example.ani +32 -0
- package/modules/text-effects/capabilities/text-background/example.animl +7 -0
- package/modules/text-effects/capabilities/text-modifier-follow-path/example.ani +34 -0
- package/modules/text-effects/capabilities/text-modifier-follow-path/example.animl +8 -0
- package/modules/text-effects/capabilities/text-modifier-opacity/example.ani +34 -0
- package/modules/text-effects/capabilities/text-modifier-opacity/example.animl +8 -0
- package/modules/text-effects/capabilities/text-modifier-origin/example.ani +36 -0
- package/modules/text-effects/capabilities/text-modifier-origin/example.animl +8 -0
- package/modules/text-effects/capabilities/text-modifier-rotation/example.ani +34 -0
- package/modules/text-effects/capabilities/text-modifier-rotation/example.animl +8 -0
- package/modules/text-effects/capabilities/text-modifier-scale/example.ani +35 -0
- package/modules/text-effects/capabilities/text-modifier-scale/example.animl +8 -0
- package/modules/text-effects/capabilities/text-modifier-translation/example.ani +35 -0
- package/modules/text-effects/capabilities/text-modifier-translation/example.animl +8 -0
- package/modules/text-effects/capabilities/text-modifier-variation/example.ani +36 -0
- package/modules/text-effects/capabilities/text-modifier-variation/example.animl +8 -0
- package/modules/text-effects/capabilities/text-range-combine/example.ani +47 -0
- package/modules/text-effects/capabilities/text-range-combine/example.animl +11 -0
- package/modules/text-effects/capabilities/text-range-easing/example.ani +38 -0
- package/modules/text-effects/capabilities/text-range-easing/example.animl +8 -0
- package/modules/text-effects/capabilities/text-range-falloff/example.ani +37 -0
- package/modules/text-effects/capabilities/text-range-falloff/example.animl +8 -0
- package/modules/text-effects/capabilities/text-range-run/example.ani +37 -0
- package/modules/text-effects/capabilities/text-range-run/example.animl +8 -0
- package/modules/text-effects/capabilities/text-range-units/example.ani +37 -0
- package/modules/text-effects/capabilities/text-range-units/example.animl +8 -0
- package/modules/text-effects/capabilities/text-script-direction/example.ani +30 -0
- package/modules/text-effects/capabilities/text-script-direction/example.animl +7 -0
- package/modules/text-effects/examples/title-wave.ani +68 -0
- package/modules/text-effects/examples/title-wave.animl +15 -0
- package/modules/text-effects/manifest.source +58 -0
- package/modules/text-input/SPEC.md +189 -0
- package/modules/text-input/capabilities/text-input-placeholder/example.ani +16 -0
- package/modules/text-input/capabilities/text-input-placeholder/example.animl +13 -0
- package/modules/text-input/capabilities/text-input-selection/example.ani +66 -0
- package/modules/text-input/capabilities/text-input-selection/example.animl +13 -0
- package/modules/text-input/examples/search-card.ani +195 -0
- package/modules/text-input/examples/search-card.animl +49 -0
- package/modules/text-input/examples/search.txt +6 -0
- package/modules/text-input/manifest.source +79 -0
- package/modules/tooling/capabilities/tooling-benchmark/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-benchmark/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-data-breakpoints/example.ani +75 -0
- package/modules/tooling/capabilities/tooling-data-breakpoints/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-data-debugger/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-data-debugger/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-command-session/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-command-session/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-data/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-data/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-data-dump/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-data-dump/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-data-filter/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-data-filter/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-data-stream/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-data-stream/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-gamepad/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-gamepad/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-key/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-key/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-pointer/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-pointer/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-touch/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-touch/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-headless-wheel/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-headless-wheel/example.animl +13 -0
- package/modules/tooling/capabilities/tooling-seed/example.ani +76 -0
- package/modules/tooling/capabilities/tooling-seed/example.animl +21 -0
- package/modules/tooling/capabilities/tooling-test-assertions/example.ani +16 -0
- package/modules/tooling/capabilities/tooling-test-assertions/example.animl +13 -0
- package/modules/tooling/examples/agent-tools.ani +75 -0
- package/modules/tooling/examples/agent-tools.animl +13 -0
- package/modules/tooling/manifest.source +15 -0
- package/package.json +58 -4
- package/packages/cli/package.json +4 -0
- package/packages/cli/src/asset-info.d.ts +8 -0
- package/packages/cli/src/asset-info.js +122 -0
- package/packages/cli/src/assets.d.ts +8 -0
- package/packages/cli/src/assets.js +66 -0
- package/packages/cli/src/audio.d.ts +3 -0
- package/packages/cli/src/audio.js +77 -0
- package/packages/cli/src/bench.d.ts +32 -0
- package/packages/cli/src/bench.js +46 -0
- package/packages/cli/src/build-assets.d.ts +10 -0
- package/packages/cli/src/build-assets.js +139 -0
- package/packages/cli/src/bundle.d.ts +7 -0
- package/packages/cli/src/bundle.js +53 -0
- package/packages/cli/src/cli.d.ts +19 -0
- package/packages/cli/src/cli.js +1532 -0
- package/packages/cli/src/commands.d.ts +47 -0
- package/packages/cli/src/commands.js +608 -0
- package/packages/cli/src/compare-png.d.ts +21 -0
- package/packages/cli/src/compare-png.js +39 -0
- package/packages/cli/src/compare.d.ts +7 -0
- package/packages/cli/src/compare.js +84 -0
- package/packages/cli/src/completion.d.ts +2 -0
- package/packages/cli/src/completion.js +153 -0
- package/packages/cli/src/discover/api.d.ts +55 -0
- package/packages/cli/src/discover/api.js +185 -0
- package/packages/cli/src/discover/build.d.ts +14 -0
- package/packages/cli/src/discover/build.js +590 -0
- package/packages/cli/src/discover/synonyms.d.ts +1 -0
- package/packages/cli/src/discover/synonyms.js +68 -0
- package/packages/cli/src/docs-view.d.ts +4 -0
- package/packages/cli/src/docs-view.js +279 -0
- package/packages/cli/src/doctor.d.ts +11 -0
- package/packages/cli/src/doctor.js +151 -0
- package/packages/cli/src/encode.d.ts +9 -0
- package/packages/cli/src/encode.js +100 -0
- package/packages/cli/src/font/README.md +45 -0
- package/packages/cli/src/font/binary.d.ts +8 -0
- package/packages/cli/src/font/binary.js +54 -0
- package/packages/cli/src/font/browser.d.ts +4 -0
- package/packages/cli/src/font/browser.js +54 -0
- package/packages/cli/src/font/cff.d.ts +6 -0
- package/packages/cli/src/font/cff.js +154 -0
- package/packages/cli/src/font/container.d.ts +5 -0
- package/packages/cli/src/font/container.js +97 -0
- package/packages/cli/src/font/document.d.ts +28 -0
- package/packages/cli/src/font/document.js +143 -0
- package/packages/cli/src/font/features.d.ts +1 -0
- package/packages/cli/src/font/features.js +1 -0
- package/packages/cli/src/font/flatten.d.ts +5 -0
- package/packages/cli/src/font/flatten.js +146 -0
- package/packages/cli/src/font/import.d.ts +12 -0
- package/packages/cli/src/font/import.js +92 -0
- package/packages/cli/src/font/index.d.ts +8 -0
- package/packages/cli/src/font/index.js +27 -0
- package/packages/cli/src/font/measure.d.ts +37 -0
- package/packages/cli/src/font/measure.js +131 -0
- package/packages/cli/src/font/reader.d.ts +13 -0
- package/packages/cli/src/font/reader.js +26 -0
- package/packages/cli/src/font/subset.d.ts +6 -0
- package/packages/cli/src/font/subset.js +87 -0
- package/packages/cli/src/font/svg.d.ts +3 -0
- package/packages/cli/src/font/svg.js +109 -0
- package/packages/cli/src/font/truetype.d.ts +3 -0
- package/packages/cli/src/font/truetype.js +38 -0
- package/packages/cli/src/font/variation.d.ts +1 -0
- package/packages/cli/src/font/variation.js +1 -0
- package/packages/cli/src/font/woff2.d.ts +3 -0
- package/packages/cli/src/font/woff2.js +166 -0
- package/packages/cli/src/glyphs.d.ts +5 -0
- package/packages/cli/src/glyphs.js +59 -0
- package/packages/cli/src/help.d.ts +5 -0
- package/packages/cli/src/help.js +149 -0
- package/packages/cli/src/html.d.ts +5 -0
- package/packages/cli/src/html.js +119 -0
- package/packages/cli/src/import-lottie.d.ts +2 -0
- package/packages/cli/src/import-lottie.js +274 -0
- package/packages/cli/src/import-svg.d.ts +8 -0
- package/packages/cli/src/import-svg.js +300 -0
- package/packages/cli/src/index.d.ts +1 -0
- package/packages/cli/src/index.js +4 -0
- package/packages/cli/src/inspect-summary.d.ts +7 -0
- package/packages/cli/src/inspect-summary.js +158 -0
- package/packages/cli/src/library.d.ts +6 -0
- package/packages/cli/src/library.js +67 -0
- package/packages/cli/src/locate.d.ts +13 -0
- package/packages/cli/src/locate.js +118 -0
- package/packages/cli/src/main.d.ts +2 -0
- package/packages/cli/src/main.js +13 -0
- package/packages/cli/src/playground.d.ts +11 -0
- package/packages/cli/src/playground.js +169 -0
- package/packages/cli/src/project.d.ts +15 -0
- package/packages/cli/src/project.js +160 -0
- package/packages/cli/src/render-options.d.ts +6 -0
- package/packages/cli/src/render-options.js +40 -0
- package/packages/cli/src/render.d.ts +30 -0
- package/packages/cli/src/render.js +90 -0
- package/packages/cli/src/scaffold.d.ts +17 -0
- package/packages/cli/src/scaffold.js +96 -0
- package/packages/cli/src/schema-view.d.ts +9 -0
- package/packages/cli/src/schema-view.js +493 -0
- package/packages/cli/src/session.d.ts +8 -0
- package/packages/cli/src/session.js +96 -0
- package/packages/cli/src/suggest.d.ts +3 -0
- package/packages/cli/src/suggest.js +62 -0
- package/packages/cli/src/video.d.ts +2 -0
- package/packages/cli/src/video.js +73 -0
- package/packages/core/src/script.source +897 -0
- package/spec/ANIML.md +598 -0
- package/spec/MODULES.md +406 -0
- package/spec/SPEC.md +4083 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<anima version="0.1" name="transforms-collapse" grid="20" requires="input">
|
|
2
|
+
<number name="n"/>
|
|
3
|
+
|
|
4
|
+
<group id="parent" collapsed="true">
|
|
5
|
+
<circle id="disc" cx="10" cy="10" r="5" fill="#000"/>
|
|
6
|
+
</group>
|
|
7
|
+
|
|
8
|
+
<listener on="down" target="disc" write="{"pointerId":"n"}"/>
|
|
9
|
+
</anima>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"anima": "0.1",
|
|
3
|
+
"name": "transforms-solo",
|
|
4
|
+
"grid": 20,
|
|
5
|
+
"requires": ["input"],
|
|
6
|
+
"inputs": {
|
|
7
|
+
"n": {
|
|
8
|
+
"type": "number"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"nodes": [
|
|
12
|
+
{
|
|
13
|
+
"id": "parent",
|
|
14
|
+
"type": "group",
|
|
15
|
+
"children": [
|
|
16
|
+
{
|
|
17
|
+
"id": "disc",
|
|
18
|
+
"type": "circle",
|
|
19
|
+
"center": [10, 10],
|
|
20
|
+
"r": 5,
|
|
21
|
+
"fill": {
|
|
22
|
+
"color": "#000"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "other",
|
|
27
|
+
"type": "circle",
|
|
28
|
+
"center": [10, 10],
|
|
29
|
+
"r": 5,
|
|
30
|
+
"fill": {
|
|
31
|
+
"color": "#000"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"solo": 1
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"listeners": [
|
|
39
|
+
{
|
|
40
|
+
"on": "down",
|
|
41
|
+
"target": "disc",
|
|
42
|
+
"set": {},
|
|
43
|
+
"write": {
|
|
44
|
+
"pointerId": "n"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<anima version="0.1" name="transforms-solo" grid="20" requires="input">
|
|
2
|
+
<number name="n"/>
|
|
3
|
+
|
|
4
|
+
<group id="parent" solo="1">
|
|
5
|
+
<circle id="disc" cx="10" cy="10" r="5" fill="#000"/>
|
|
6
|
+
<circle id="other" cx="10" cy="10" r="5" fill="#000"/>
|
|
7
|
+
</group>
|
|
8
|
+
|
|
9
|
+
<listener on="down" target="disc" write="{"pointerId":"n"}"/>
|
|
10
|
+
</anima>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Tooling-only command dispatcher. The shared sample switch can delegate its default here.
|
|
2
|
+
import type { Player } from '../../../packages/core/src/player.ts';
|
|
3
|
+
import type { GamepadRecord, KeyOptions, ScrollOptions } from './types.ts';
|
|
4
|
+
const number = (text: string | undefined): number => {
|
|
5
|
+
if (text === undefined || text.trim() === '' || !Number.isFinite(Number(text)))
|
|
6
|
+
throw Error('expected a finite number');
|
|
7
|
+
return Number(text);
|
|
8
|
+
};
|
|
9
|
+
/** Returns false for commands owned by the base language; true commands need a subsequent step(0). */
|
|
10
|
+
export function inputCommand(player: Player, command: string, args: string[]): boolean {
|
|
11
|
+
if (
|
|
12
|
+
!['contact', 'key', 'scroll', 'gamepads', 'pointer-enable', 'scroll-cancel'].includes(command)
|
|
13
|
+
)
|
|
14
|
+
return false;
|
|
15
|
+
const c = player.input();
|
|
16
|
+
if (command === 'contact') {
|
|
17
|
+
if (
|
|
18
|
+
!['move', 'down', 'up', 'leave', 'cancel'].includes(args[0]!) ||
|
|
19
|
+
![2, 4, 5].includes(args.length)
|
|
20
|
+
)
|
|
21
|
+
throw Error('use contact <move|down|up|leave|cancel> <id> [x y [button]]');
|
|
22
|
+
const kind = args[0] as Parameters<typeof c.pointer>[0];
|
|
23
|
+
if (kind === 'leave' || kind === 'cancel' ? args.length !== 2 : args.length < 4)
|
|
24
|
+
throw Error('contact leave/cancel takes only an id; other phases need x y');
|
|
25
|
+
c.pointer(kind, args.length > 2 ? number(args[2]) : 0, args.length > 2 ? number(args[3]) : 0, {
|
|
26
|
+
id: number(args[1]),
|
|
27
|
+
button: args[4] === undefined ? 0 : number(args[4]),
|
|
28
|
+
});
|
|
29
|
+
} else if (command === 'key') {
|
|
30
|
+
if (!['down', 'up', 'repeat'].includes(args[0]!) || args.length < 2 || args.length > 4)
|
|
31
|
+
throw Error('use key <down|up|repeat> <key|Space> [shift+control+alt+meta|-] [target]');
|
|
32
|
+
const opts: KeyOptions = { repeat: args[0] === 'repeat', target: args[3] };
|
|
33
|
+
const mods = args[2] && args[2] !== '-' ? args[2].split('+') : [];
|
|
34
|
+
if (
|
|
35
|
+
mods.some((m) => !['shift', 'control', 'alt', 'meta'].includes(m)) ||
|
|
36
|
+
new Set(mods).size !== mods.length
|
|
37
|
+
)
|
|
38
|
+
throw Error('unknown or duplicate key modifier');
|
|
39
|
+
for (const key of mods) opts[key as 'shift' | 'control' | 'alt' | 'meta'] = true;
|
|
40
|
+
c.key(args[0] === 'up' ? 'up' : 'down', args[1] === 'Space' ? ' ' : args[1]!, opts);
|
|
41
|
+
} else if (command === 'scroll') {
|
|
42
|
+
if (args.length < 4 || args.length > 6)
|
|
43
|
+
throw Error('use scroll <x> <y> <dx> <dy> [start|move|end|cancel] [seconds]');
|
|
44
|
+
const phase = args[4] as ScrollOptions['phase'];
|
|
45
|
+
if (phase && !['start', 'move', 'end', 'cancel'].includes(phase))
|
|
46
|
+
throw Error('unknown scroll phase');
|
|
47
|
+
c.scroll(number(args[0]), number(args[1]), number(args[2]), number(args[3]), {
|
|
48
|
+
phase,
|
|
49
|
+
time: args[5] === undefined ? undefined : number(args[5]),
|
|
50
|
+
});
|
|
51
|
+
} else if (command === 'gamepads') {
|
|
52
|
+
const batch: GamepadRecord[] = JSON.parse(args.join(' '));
|
|
53
|
+
if (!Array.isArray(batch)) throw Error('gamepads expects a JSON array');
|
|
54
|
+
c.gamepads(batch);
|
|
55
|
+
} else if (command === 'pointer-enable') {
|
|
56
|
+
if (args.length !== 2 || !['true', 'false'].includes(args[1]!))
|
|
57
|
+
throw Error('use pointer-enable <id> <true|false>');
|
|
58
|
+
c.enablePointer(number(args[0]), args[1] === 'true');
|
|
59
|
+
} else {
|
|
60
|
+
if (args.length) throw Error('scroll-cancel takes no arguments');
|
|
61
|
+
c.cancelScroll();
|
|
62
|
+
}
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { ListenerM } from '../../../packages/core/src/load.ts';
|
|
2
|
+
export const events = [
|
|
3
|
+
'enter',
|
|
4
|
+
'leave',
|
|
5
|
+
'move',
|
|
6
|
+
'down',
|
|
7
|
+
'up',
|
|
8
|
+
'click',
|
|
9
|
+
'cancel',
|
|
10
|
+
'drag-start',
|
|
11
|
+
'drag',
|
|
12
|
+
'drag-end',
|
|
13
|
+
'key-down',
|
|
14
|
+
'key-repeat',
|
|
15
|
+
'key-up',
|
|
16
|
+
'scroll',
|
|
17
|
+
'gamepad-axis',
|
|
18
|
+
'gamepad-button',
|
|
19
|
+
'gamepad-connected',
|
|
20
|
+
'gamepad-disconnected',
|
|
21
|
+
] as const;
|
|
22
|
+
export type InputEvent = (typeof events)[number];
|
|
23
|
+
export type PointerEventKind = 'move' | 'down' | 'up' | 'leave' | 'cancel';
|
|
24
|
+
export interface PointerOptions {
|
|
25
|
+
id?: number;
|
|
26
|
+
button?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface KeyOptions {
|
|
29
|
+
repeat?: boolean;
|
|
30
|
+
shift?: boolean;
|
|
31
|
+
control?: boolean;
|
|
32
|
+
alt?: boolean;
|
|
33
|
+
meta?: boolean;
|
|
34
|
+
target?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ScrollOptions {
|
|
37
|
+
phase?: 'start' | 'move' | 'end' | 'cancel';
|
|
38
|
+
time?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface GamepadRecord {
|
|
41
|
+
index: number;
|
|
42
|
+
connected: boolean;
|
|
43
|
+
mapping?: string;
|
|
44
|
+
axes?: number[];
|
|
45
|
+
buttons?: { value: number; pressed: boolean }[];
|
|
46
|
+
}
|
|
47
|
+
export interface InputListener {
|
|
48
|
+
action: ListenerM;
|
|
49
|
+
on: string[];
|
|
50
|
+
target: number;
|
|
51
|
+
order: number;
|
|
52
|
+
depth: number;
|
|
53
|
+
button?: number;
|
|
54
|
+
capture?: boolean;
|
|
55
|
+
consume?: boolean;
|
|
56
|
+
propagate?: boolean;
|
|
57
|
+
key?: string;
|
|
58
|
+
modifiers?: string;
|
|
59
|
+
index?: number;
|
|
60
|
+
control?: number;
|
|
61
|
+
mapping?: 'standard' | 'raw';
|
|
62
|
+
phase?: 'press' | 'release' | 'both';
|
|
63
|
+
write?: Record<string, string>;
|
|
64
|
+
align?: 'preserve' | 'snap';
|
|
65
|
+
}
|
|
66
|
+
export const cursors = [
|
|
67
|
+
'arrow',
|
|
68
|
+
'hidden',
|
|
69
|
+
'pointer',
|
|
70
|
+
'resize-horizontal',
|
|
71
|
+
'resize-vertical',
|
|
72
|
+
'text',
|
|
73
|
+
] as const;
|
|
74
|
+
export type Cursor = (typeof cursors)[number];
|
|
75
|
+
export const fields = [
|
|
76
|
+
'x',
|
|
77
|
+
'y',
|
|
78
|
+
'dx',
|
|
79
|
+
'dy',
|
|
80
|
+
'startX',
|
|
81
|
+
'startY',
|
|
82
|
+
'pointerId',
|
|
83
|
+
'button',
|
|
84
|
+
'value',
|
|
85
|
+
'pressed',
|
|
86
|
+
'index',
|
|
87
|
+
'control',
|
|
88
|
+
'deltaX',
|
|
89
|
+
'deltaY',
|
|
90
|
+
'text-index', // seam(P6-7): grapheme hit position from the optional text-hit adapter.
|
|
91
|
+
'pointer-x',
|
|
92
|
+
'pointer-y',
|
|
93
|
+
'pointer-delta-x',
|
|
94
|
+
'pointer-delta-y',
|
|
95
|
+
'key-pressed',
|
|
96
|
+
] as const;
|
|
97
|
+
export type Data = Partial<Record<(typeof fields)[number], number | boolean | string>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Drag slider
|
|
2
|
+
|
|
3
|
+
Build with `anima build modules/input/examples/drag-slider.animl`.
|
|
4
|
+
The rail maps normalized x to grid x=2+16*level. The knob compensates its width.
|
|
5
|
+
Event x is in rail coordinates; write maps x → level. Preserve alignment retains
|
|
6
|
+
the initial grab offset, while the declared input bounds clamp the result.
|
|
7
|
+
|
|
8
|
+
Try `anima sample modules/input/examples/drag-slider.animl -e "contact down 0 11 10; contact move 0 15 10; snapshot level knob.x"`.
|
|
9
|
+
The initial center is x=10, so grabbing at 11 then moving to 15 yields level=.75.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"anima": "0.1",
|
|
3
|
+
"name": "drag-slider",
|
|
4
|
+
"grid": 20,
|
|
5
|
+
"requires": ["input", "bind"],
|
|
6
|
+
"inputs": {
|
|
7
|
+
"level": {
|
|
8
|
+
"type": "number",
|
|
9
|
+
"default": 0.5,
|
|
10
|
+
"min": 0,
|
|
11
|
+
"max": 1
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"nodes": [
|
|
15
|
+
{
|
|
16
|
+
"id": "rail",
|
|
17
|
+
"type": "group",
|
|
18
|
+
"x": 2,
|
|
19
|
+
"y": 10,
|
|
20
|
+
"scaleX": 16,
|
|
21
|
+
"children": [
|
|
22
|
+
{
|
|
23
|
+
"id": "knob",
|
|
24
|
+
"type": "circle",
|
|
25
|
+
"center": [0, 0],
|
|
26
|
+
"r": 2,
|
|
27
|
+
"x": 0.5,
|
|
28
|
+
"scaleX": 0.0625,
|
|
29
|
+
"fill": {
|
|
30
|
+
"color": "#4263eb"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"listeners": [
|
|
37
|
+
{
|
|
38
|
+
"on": "drag-start|drag|drag-end",
|
|
39
|
+
"target": "knob",
|
|
40
|
+
"set": {},
|
|
41
|
+
"write": {
|
|
42
|
+
"x": "level"
|
|
43
|
+
},
|
|
44
|
+
"align": "preserve"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"bind": {
|
|
48
|
+
"knob.x": "level"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<anima version="0.1" name="drag-slider" grid="20" requires="input bind">
|
|
2
|
+
<number name="level" default="0.5" min="0" max="1"/>
|
|
3
|
+
|
|
4
|
+
<group id="rail" x="2" y="10" scaleX="16">
|
|
5
|
+
<circle id="knob" cx="0" cy="0" r="2" x="0.5" scaleX="0.0625" fill="#4263eb"/>
|
|
6
|
+
</group>
|
|
7
|
+
|
|
8
|
+
<bind target="knob.x" value="level"/>
|
|
9
|
+
|
|
10
|
+
<listener on="drag-start|drag|drag-end" target="knob" write="{"x":"level"}" align="preserve"/>
|
|
11
|
+
</anima>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Input extends the listener shape after components has added scoped event names.
|
|
2
|
+
export const after: string[] = ['components'];
|
|
3
|
+
export default {
|
|
4
|
+
...{
|
|
5
|
+
name: 'input',
|
|
6
|
+
summary:
|
|
7
|
+
'Input: pointer, keyboard, wheel and gamepad listeners, cursors, dragging and hit testing.',
|
|
8
|
+
after: [],
|
|
9
|
+
core: { entry: 'core/index.ts', export: 'input', svg: 'core/svg.ts', svgExport: 'inputSVG' },
|
|
10
|
+
web: [{ name: 'input', budget: 7104 }],
|
|
11
|
+
adapters: {
|
|
12
|
+
'packages/core/src/modules/input/index.ts': 'core/index.ts',
|
|
13
|
+
'packages/core/src/modules/input/svg.ts': 'core/svg.ts',
|
|
14
|
+
'packages/markup/src/input.ts': 'markup/index.ts',
|
|
15
|
+
'packages/web/src/input.ts': 'web/index.ts',
|
|
16
|
+
},
|
|
17
|
+
exports: {
|
|
18
|
+
'core:./input': 'packages/core/src/modules/input/index.ts',
|
|
19
|
+
'markup:./input': 'packages/markup/src/input.ts',
|
|
20
|
+
'web:./input': 'packages/web/src/input.ts',
|
|
21
|
+
},
|
|
22
|
+
tests: [
|
|
23
|
+
'modules/input/test/**/*.test.ts',
|
|
24
|
+
'packages/markup/test/corpus.test.ts',
|
|
25
|
+
'packages/markup/test/names.test.ts',
|
|
26
|
+
'packages/markup/test/module-fields.test.ts',
|
|
27
|
+
'packages/markup/test/decompile.test.ts',
|
|
28
|
+
],
|
|
29
|
+
conformance: [
|
|
30
|
+
'input-bf4-data-writes',
|
|
31
|
+
'input-focus-machine-integration',
|
|
32
|
+
'input-key-focused-component',
|
|
33
|
+
'host-api-coordinate-mapping',
|
|
34
|
+
'host-api-dom-listener-control',
|
|
35
|
+
'host-api-gamepad',
|
|
36
|
+
'host-api-low-level-pointer',
|
|
37
|
+
'host-api-low-level-scroll',
|
|
38
|
+
'host-api-manual-gamepad-batch',
|
|
39
|
+
'host-api-multitouch',
|
|
40
|
+
'host-api-pointer-exit',
|
|
41
|
+
'host-api-scroll-hit-policy',
|
|
42
|
+
'host-api-scroll-latching',
|
|
43
|
+
'input-align-preserve',
|
|
44
|
+
'input-align-snap',
|
|
45
|
+
'input-bounded-hit-tests',
|
|
46
|
+
'input-button-middle',
|
|
47
|
+
'input-button-secondary',
|
|
48
|
+
'input-capture-phase',
|
|
49
|
+
'input-cursor-arrow',
|
|
50
|
+
'input-cursor-hidden',
|
|
51
|
+
'input-cursor-intent',
|
|
52
|
+
'input-cursor-pointer',
|
|
53
|
+
'input-cursor-resize-horizontal',
|
|
54
|
+
'input-cursor-resize-vertical',
|
|
55
|
+
'input-cursor-text',
|
|
56
|
+
'input-disable-listeners',
|
|
57
|
+
'input-gamepad-axis',
|
|
58
|
+
'input-gamepad-button',
|
|
59
|
+
'input-gamepad-button-phases',
|
|
60
|
+
'input-gamepad-connected',
|
|
61
|
+
'input-gamepad-disconnected',
|
|
62
|
+
'input-gamepad-host',
|
|
63
|
+
'input-gamepad-index-mapping',
|
|
64
|
+
'input-hit-draw-order',
|
|
65
|
+
'input-focus-pointer-draw-order',
|
|
66
|
+
'input-hit-occlusion-query',
|
|
67
|
+
'input-hit-parent-chain',
|
|
68
|
+
'input-hit-shape-geometry',
|
|
69
|
+
'input-hit-test-host',
|
|
70
|
+
'input-key-down',
|
|
71
|
+
'input-key-filter',
|
|
72
|
+
'input-key-modifiers',
|
|
73
|
+
'input-key-repeat',
|
|
74
|
+
'input-key-up',
|
|
75
|
+
'input-keyboard-bubbling',
|
|
76
|
+
'input-multi-touch',
|
|
77
|
+
'input-multi-trigger-listener',
|
|
78
|
+
'input-opaque-targets',
|
|
79
|
+
'input-pointer-cancel',
|
|
80
|
+
'input-pointer-drag',
|
|
81
|
+
'input-pointer-drag-end',
|
|
82
|
+
'input-pointer-drag-start',
|
|
83
|
+
'input-pointer-enable',
|
|
84
|
+
'input-touch-page-scroll',
|
|
85
|
+
'input-trackpad-scroll',
|
|
86
|
+
'input-wheel-scroll',
|
|
87
|
+
'transforms-collapse',
|
|
88
|
+
'transforms-solo',
|
|
89
|
+
'input-write-key-pressed',
|
|
90
|
+
'input-write-pointer-x',
|
|
91
|
+
'input-write-pointer-y',
|
|
92
|
+
'input-write-pointer-delta-x',
|
|
93
|
+
'input-write-pointer-delta-y',
|
|
94
|
+
],
|
|
95
|
+
docs: ['spec/SPEC.md', 'spec/ANIML.md', 'docs/WEB.md', 'modules/input/SPEC.md'],
|
|
96
|
+
},
|
|
97
|
+
after,
|
|
98
|
+
};
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Layout
|
|
2
|
+
|
|
3
|
+
`requires: ["layout"]` installs a dependency-free, single-line layout pass. Lengths are grid units.
|
|
4
|
+
It adds no code to the base core/web entries. This is an independently implemented subset of
|
|
5
|
+
[CSS Flexbox §9](https://www.w3.org/TR/css-flexbox-1/#layout-algorithm), with normalized positive
|
|
6
|
+
fill weights, zero fill basis, no implicit shrink, no flex-line wrapping, percentages or auto margins.
|
|
7
|
+
It is not an implementation of Rive's layout engine.
|
|
8
|
+
|
|
9
|
+
## Nodes and both spellings
|
|
10
|
+
|
|
11
|
+
A container is `{id, type: "layout", children: […]}` / `<layout id="…">…</layout>`.
|
|
12
|
+
Its properties are:
|
|
13
|
+
|
|
14
|
+
| JSON / AniML | Values and default |
|
|
15
|
+
| --- | --- |
|
|
16
|
+
| `width`, `height` | nonnegative number, `hug` (default), `fill`, `fill(w)` with finite `w > 0` |
|
|
17
|
+
| `direction` | `row` (default), `column`, `row-reverse`, `column-reverse` |
|
|
18
|
+
| `justify` | `start` (default), `center`, `end`, `space-between`, `space-around`, `space-evenly` |
|
|
19
|
+
| `align` | `start` (default), `center`, `end`, `stretch`, `baseline` |
|
|
20
|
+
| `gap` | nonnegative number or `[row, column]`; AniML `gap="row column"`; default zero |
|
|
21
|
+
| `padding` | nonnegative number or 1–4 physical edges; AniML whitespace list; default zero |
|
|
22
|
+
| `minWidth` / `min-width`, `maxWidth` / `max-width` | nonnegative bounds, default zero / unbounded |
|
|
23
|
+
| `minHeight` / `min-height`, `maxHeight` / `max-height` | same for height |
|
|
24
|
+
| `fill`, `stroke` | the ordinary registered node paint objects / flattened paint attributes |
|
|
25
|
+
| `corners` | nonnegative uniform rectangle radius, default zero; SVG ellipse clamping applies |
|
|
26
|
+
|
|
27
|
+
Padding and margin expand in top/right/bottom/left order, using CSS's 1–4-value expansion.
|
|
28
|
+
Dimensions include padding; stroke does not consume layout space. Paint is behind the children.
|
|
29
|
+
Root `x`, `y` keep their ordinary transform meanings. Root fill resolves against the artboard's
|
|
30
|
+
viewBox dimensions. A per-player `layoutSize` override replaces root dimensions through their normal min/max bounds;
|
|
31
|
+
without it the authored dimensions apply. Roots beneath ordinary groups follow the same rule.
|
|
32
|
+
The host-fit adapter supplies grid units, using one CSS pixel per unit in `fit="layout"`.
|
|
33
|
+
|
|
34
|
+
Every direct child participates. Child JSON is `layout: {width, height, minWidth, maxWidth,
|
|
35
|
+
minHeight, maxHeight, alignSelf, margin, display, reflow}`. The corresponding AniML attributes are
|
|
36
|
+
`layout-width`, `layout-height`, `min-width`, `max-width`, `min-height`, `max-height`, `align-self`,
|
|
37
|
+
`margin`, `display`, `reflow`. `alignSelf` uses the `align` vocabulary and defaults to inheritance;
|
|
38
|
+
`display` is `flex` (default) or `none`. On a nested layout, its own width/height/bounds also
|
|
39
|
+
serve as child sizing unless the JSON child `layout` explicitly overrides them. AniML writes
|
|
40
|
+
bounds once on the nested container. Children may be layouts themselves.
|
|
41
|
+
|
|
42
|
+
Omitted child dimensions use intrinsic dimensions. `hug` explicitly selects them. Rectangles
|
|
43
|
+
contribute authored `w`/`h`, circles/arcs their diameter, paths and optional shapes their registered flattened outline bounds,
|
|
44
|
+
images their authored viewport (explicit hug selects declared asset dimensions, falling back to the authored viewport), text the text
|
|
45
|
+
module's measured box, instances their selected child player's component viewBox (zero when cleared). Changing a dynamic selection remeasures the instance on that step. Images retain the assets module's
|
|
46
|
+
required authored viewport fields. A group without measurable geometry contributes zero.
|
|
47
|
+
Transforms, stroke and paint do not affect intrinsic sizing. Normalized geometry starts at the
|
|
48
|
+
allocated top-left; authored child `x`/`y` are replaced by layout placement, while rotation,
|
|
49
|
+
pivot and scale remain authored transforms. Instance viewBox minima retain the component's
|
|
50
|
+
existing coordinate convention.
|
|
51
|
+
|
|
52
|
+
`none` contributes no size, margin or gap and does not draw, including its descendants. It has a
|
|
53
|
+
zero box at the origin. `visible: false` hides drawing but still reserves layout space.
|
|
54
|
+
|
|
55
|
+
## Algorithm
|
|
56
|
+
|
|
57
|
+
Measure nested hug containers bottom-up. Sum the children's outer main sizes plus gaps; take the
|
|
58
|
+
largest outer cross size (baseline rows also sum the largest ascent and descent); then add padding and clamp the container's size. Resolve actual sizes
|
|
59
|
+
top-down, so a nested fill container receives its parent's allocated box.
|
|
60
|
+
|
|
61
|
+
Fixed and hug children are not shrunk when space is negative. Fill starts with zero basis and
|
|
62
|
+
shares the remaining main space proportionally by its positive weight. Clamp proposed sizes to
|
|
63
|
+
min/max. Sum the signed clamp violations: freeze minimum violations for a positive total,
|
|
64
|
+
maximum violations for a negative total, all for zero. Redistribute the remaining space among
|
|
65
|
+
unfrozen fill children until all are resolved. Minimum wins if animated bounds cross.
|
|
66
|
+
|
|
67
|
+
After sizing, distribute remaining space according to `justify`. Space variants add to the gap;
|
|
68
|
+
negative free space uses start placement for space variants, and signed offsets for center/end.
|
|
69
|
+
A single `space-between` child starts at the leading padding. Reverse directions reverse the
|
|
70
|
+
placement axis, retaining source/drawing order and physical margin sides.
|
|
71
|
+
|
|
72
|
+
Cross-axis fill consumes the available cross size minus margins, then clamps to bounds.
|
|
73
|
+
Stretch does so for an omitted cross dimension. Explicit fixed/hug dimensions do not stretch.
|
|
74
|
+
Start/center/end use the remaining cross space; in rows, baseline aligns measured text baselines
|
|
75
|
+
and uses the bottom edge for other participants. In columns baseline falls back to start.
|
|
76
|
+
|
|
77
|
+
## Step, caching, drawing and guards
|
|
78
|
+
|
|
79
|
+
Layout is a named stage after state resolution, bindings and clamping, before drawing. It uses
|
|
80
|
+
resolved properties and text measurement. It runs through the optional post-step chain, after
|
|
81
|
+
component stepping and earlier post-step consumers, without changing the base Player pipeline.
|
|
82
|
+
Each player also initializes its boxes from its initial pose during construction, independently
|
|
83
|
+
of whether a renderer ever draws. `step(0)` applies bindings and reflows normally.
|
|
84
|
+
|
|
85
|
+
Each container keeps its previous resolved-input signature as its dirty flag. Unchanged signatures
|
|
86
|
+
reuse the allocated boxes. A changed box advances that node's draw revision; it does not consume
|
|
87
|
+
the renderer's dirty-slot reads. Constrained text measurements receive an explicit child width or maximum width when authored. Text is measured directly through `measureText(player, nodeId, maxWidth?)` from the text module;
|
|
88
|
+
there is no fallback adapter. After top-down width allocation, text is remeasured within its actual
|
|
89
|
+
width (including fill widths). When a browser font becomes ready, the fonts text consumer re-resolves
|
|
90
|
+
layout for the affected players without stepping or consuming queued inputs. Repeat measurement/allocation until the text sizes stop changing,
|
|
91
|
+
bounded by node count plus one passes so nested hug heights propagate to ancestors. The generated
|
|
92
|
+
font's 100-unit line gap is included: size 2 yields 2.2 per line. Drawing uses the same constraint
|
|
93
|
+
and font preparation without changing the text module's standalone measurement cache.
|
|
94
|
+
|
|
95
|
+
`player.layoutBox(id)` returns a detached `{x,y,width,height}`, or undefined for nonparticipants.
|
|
96
|
+
Child positions are in the immediate container's space. `local()`/`world()` expose the drawn positions (equal to targets without reflow); layout containers have the ordinary rectangle hit outline. Root box positions are the root's `x/y`.
|
|
97
|
+
`player.values()` / CLI snapshots additionally expose `<id>.layoutBox.x`, `.y`, `.width`, `.height`.
|
|
98
|
+
These are observations, not writable binding destinations. Boxes are written into the neutral
|
|
99
|
+
frame's container/rect/image geometry and child transforms, including shape scaling; per-corner
|
|
100
|
+
rectangles (`corners`) build their corner path in the allocated box. SVG and
|
|
101
|
+
canvas consume the same frame. Hit testing and pointer coordinate mapping use that frame’s allocated geometry and geometry-to-artboard transform, including shape normalization; semantic bounds use the same transform. Semantic caches track every collected player’s draw revision, so host size changes and reflow frames invalidate bounds even when sampled properties stay unchanged. A painted container draws its background then its child tree.
|
|
102
|
+
|
|
103
|
+
The `layout` browser entry includes its `layout-svg` backend entry; the backend registration is separately bundled to keep each entry within its byte ceiling.
|
|
104
|
+
|
|
105
|
+
With `machine`, a guard operand `{layout: "id.width"}` (or `.x`, `.y`, `.height`) observes the
|
|
106
|
+
previous step's box. Before the first step it sees the initial pose box. The current step never
|
|
107
|
+
re-enters the machine after layout. This choice follows the update/feedback-loop pitfall in
|
|
108
|
+
[the state-machine research](../../docs/research/rive-animation-and-state.md).
|
|
109
|
+
|
|
110
|
+
## Bindings, timelines and diagnostics
|
|
111
|
+
|
|
112
|
+
The existing binding/timeline priority applies. Numeric addresses are container `width`, `height`,
|
|
113
|
+
`gap`, `padding`, `corners`, `minWidth`, `maxWidth`, `minHeight`, `maxHeight`; child equivalents
|
|
114
|
+
start with `layout.`. Expanded physical edge components use `.0` through `.3`; gap uses `.0/.1`.
|
|
115
|
+
A numeric address replaces a hug/fill mode with a fixed size (including its numeric rest); fill/hug validation runs after bindings and timeline addresses compile, so a bound or animated parent axis is definite. Omitted numeric rest defaults to zero.
|
|
116
|
+
Child `layout.display` supports discrete string bindings (`flex`/`none`). AniML addresses use
|
|
117
|
+
registered spellings, e.g. `child.layout-width` becomes `child.layout.width`. Numeric size writes
|
|
118
|
+
clamp to zero before layout; negative margins remain allowed. Static mode strings are not numeric
|
|
119
|
+
keyframe values. Other layout configuration is static in this entry.
|
|
120
|
+
|
|
121
|
+
Custom load diagnostics have a code, JSON pointer, explanation and corrective hint:
|
|
122
|
+
|
|
123
|
+
| Code | Pointer example | Correction |
|
|
124
|
+
| --- | --- | --- |
|
|
125
|
+
| `layout-value` | `/nodes/0/width` or `/nodes/0/padding` | nonnegative size, valid positive fill weight, valid edge list |
|
|
126
|
+
| `layout-bounds` | `/nodes/0/children/0/layout/minWidth` | minimum must not exceed maximum |
|
|
127
|
+
| `layout-fill-hug` | `/nodes/0/children/0/layout/width` | give the parent a definite size on that axis or use hug |
|
|
128
|
+
| `layout-outside` | `/nodes/0/layout` | put child layout properties inside a layout container |
|
|
129
|
+
| `layout-target` | `/machine/layers/main/states/a/on/0/guard/left/layout` | name a participating node and a box field |
|
|
130
|
+
|
|
131
|
+
The generated JSON Schema and CLI validation/inspection/sample/render use this registry and the
|
|
132
|
+
same player. `examples/button.animl` is the data-bound-label button: its background hugs the
|
|
133
|
+
measured label plus physical padding. Reflow animation is the separate P7-4 entry.
|
|
134
|
+
|
|
135
|
+
## Independent comparisons and intentional native differences
|
|
136
|
+
|
|
137
|
+
The reference probes use independently authored native layout containers and participants, with
|
|
138
|
+
only local headless rendering; no native engine source or binary is used. Native 3×3 alignment
|
|
139
|
+
maps onto our separate justify/align controls. Compare the scenes and raw capture sessions under
|
|
140
|
+
`tests/oracle/layout-*`; the comparison report is `ORACLES.md` in this module.
|
|
141
|
+
|
|
142
|
+
Two differences are intentional:
|
|
143
|
+
|
|
144
|
+
- `align-self` is independently honored by Anima. In the captured native CLI, authoring a child's
|
|
145
|
+
`alignSelfValue=flexEnd` did not change its placement. The failed native frame is retained as
|
|
146
|
+
an evidenced unavailable counterpart, rather than rewriting its position to mimic the result.
|
|
147
|
+
- Fill sizing uses the signed-violation, zero-basis algorithm above. The retained mixed-bound
|
|
148
|
+
native probe allocates 10.5/2.5 units where Anima allocates 9/4, for 13 available units, equal
|
|
149
|
+
weights, first minimum 8 and second maximum 4. We keep the specified algorithm and independent
|
|
150
|
+
vectors. Fixed min/max sizing has a separate native comparison. Baseline is likewise an explicit
|
|
151
|
+
extension of our independent cross-axis vocabulary; native positional-picker equivalence is not
|
|
152
|
+
a claim of native baseline support.
|
|
153
|
+
|
|
154
|
+
These are semantic differences, never rasterizer tolerances. Flex-line wrapping remains outside this entry; text wrapping is supplied by the text module.
|
|
155
|
+
|
|
156
|
+
## Animated reflow (`layout-reflow`)
|
|
157
|
+
|
|
158
|
+
Load `@anima-format/web/layout-reflow` in addition to `layout` to animate boxes. Tooling installs
|
|
159
|
+
it automatically. With only the base layout entry, boxes snap as before; the reflow entry adds no
|
|
160
|
+
new `requires` feature or base core/web bytes. It also installs runtime validation of its settings.
|
|
161
|
+
|
|
162
|
+
A container's JSON `reflow` and AniML `reflow` accept a finite nonnegative duration in seconds,
|
|
163
|
+
or a string `"<seconds> <ease>"`, e.g. `"0.25 out"`. The default ease is `linear`; the ease vocabulary
|
|
164
|
+
is SPEC §5 (`linear`, `hold`, `in`, `out`, `inOut`, `cubic(...)`, `elastic(...)`), plus
|
|
165
|
+
`elastic-in(...)` and `elastic-in-out(...)` when the document declares `motion`. These are
|
|
166
|
+
weight eases, not timeline value curves. The design's illustrative `ease-out` means §5 `out`.
|
|
167
|
+
Duration zero explicitly disables animation. Settings are static, not binding/track destinations.
|
|
168
|
+
|
|
169
|
+
Participants override their own box with `layout: {reflow: ...}` / `reflow="..."`. Otherwise they
|
|
170
|
+
inherit from the nearest container declaring `reflow`, walking ancestors if needed; no declaration
|
|
171
|
+
means snap. A nested container's `layout.reflow` affects its own box; its container `reflow` is what
|
|
172
|
+
its descendants inherit. A nested container's own `reflow` also applies to its own box unless
|
|
173
|
+
`layout.reflow` overrides it. In AniML the nested container's `reflow` is the container setting;
|
|
174
|
+
JSON can additionally express the independent child override.
|
|
175
|
+
|
|
176
|
+
First allocation snaps. After the target layout has converged, each changed box starts a flight
|
|
177
|
+
from the box currently drawn to its new target, interpolating all four components in the immediate
|
|
178
|
+
container's coordinate space. At a step boundary, first advance the old flight to `player.time`,
|
|
179
|
+
then retarget from that exact drawn box at progress zero. Thus a write followed by `step(0)` does
|
|
180
|
+
not move the drawing. A write followed by `step(dt)` advances any old flight by `dt` before starting
|
|
181
|
+
the new flight. Subsequent steps use elapsed time / duration and the selected ease. The endpoint
|
|
182
|
+
is exactly the target even for `hold` or overshooting eases. Interpolated dimensions clamp at zero
|
|
183
|
+
so elastic undershoot never emits an invalid negative drawing size; positions may overshoot freely. Unchanged targets do not restart flights.
|
|
184
|
+
Reduced motion snaps active and newly changed boxes on the next step and clears the flights.
|
|
185
|
+
Re-enabling motion does not resume an old flight. `step().settled` stays false and `player.busy`
|
|
186
|
+
stays true until every flight ends; other player activity retains its ordinary settled rules.
|
|
187
|
+
|
|
188
|
+
`player.layoutBox(id)` and machine guards always observe the target box. The detached
|
|
189
|
+
`player.drawnLayoutBox(id)` observes the current drawn box, or undefined for a nonparticipant;
|
|
190
|
+
without reflow it equals the target. With the optional entry (and always in tooling), CLI snapshots / `values()` expose
|
|
191
|
+
`<id>.drawnLayoutBox.x`, `.y`, `.width`, `.height`. Drawing, container hit outlines, and child
|
|
192
|
+
`local()` / `world()` translations use drawn boxes. Text is laid out for drawing at its drawn
|
|
193
|
+
width; those visual line breaks do not feed back into the target calculation during a flight.
|
|
194
|
+
|
|
195
|
+
`layout-reflow` is a load diagnostic at the exact container `/reflow` or participant
|
|
196
|
+
`/layout/reflow` pointer for an invalid duration or ease, with a corrective hint. Registry shapes
|
|
197
|
+
and the module's existing AniML hook supply both spellings, schema and CLI validation. The paired
|
|
198
|
+
`examples/reflow.animl` / `.ani` is the data-bound label button. Conformance samples cover the start,
|
|
199
|
+
midpoint, nonzero-dt retarget, completion and reduced-motion snap. Both browser engines also verify
|
|
200
|
+
SVG/canvas drawing and scheduler completion.
|
|
201
|
+
|
|
202
|
+
The implementation is independent of native engine code. The native probe and raw pixel differences
|
|
203
|
+
are retained under `tests/oracle/layout-animated-reflow` and `verification/p7-4`. The local native
|
|
204
|
+
CLI starts a changed-size interpolation on a positive update frame, whereas Anima's `step(0)` starts
|
|
205
|
+
it immediately. Adding an explicit native update frame aligns the first midpoint, but the retained
|
|
206
|
+
mid-flight retarget samples still disagree. Anima keeps the deterministic boundary contract above;
|
|
207
|
+
no raster tolerance disguises this timing/geometry difference. Native parity remains pending an
|
|
208
|
+
accepted comparison mapping or explicit closure decision. This distinction follows the update-pass
|
|
209
|
+
pitfall in [the state-machine research](../../docs/research/rive-animation-and-state.md) and the
|
|
210
|
+
independent-renderer cautions in [the web research](../../docs/research/rive-web-runtime.md).
|