animl-cli 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +34 -0
- package/README.md +21 -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 +57 -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,162 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Ringing Bell</title>
|
|
7
|
+
<!-- Template for index.html: `node tools/build-web.ts` inlines the runtime and bell.ani. -->
|
|
8
|
+
<style>
|
|
9
|
+
:root {
|
|
10
|
+
--paper: #faf9f5;
|
|
11
|
+
--ink: #141413;
|
|
12
|
+
--muted: #6b6a64;
|
|
13
|
+
--line: #e3e1d7;
|
|
14
|
+
--accent: #d97757;
|
|
15
|
+
--serif: ui-serif, Georgia, 'Times New Roman', serif;
|
|
16
|
+
--sans: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
|
|
17
|
+
--mono: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
18
|
+
}
|
|
19
|
+
@media (prefers-color-scheme: dark) {
|
|
20
|
+
:root:not([data-theme='light']) {
|
|
21
|
+
--paper: #1f1e1d;
|
|
22
|
+
--ink: #f0eee6;
|
|
23
|
+
--muted: #a3a29a;
|
|
24
|
+
--line: #3a3934;
|
|
25
|
+
--accent: #e08a6d;
|
|
26
|
+
color-scheme: dark;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
:root[data-theme='dark'] {
|
|
30
|
+
--paper: #1f1e1d;
|
|
31
|
+
--ink: #f0eee6;
|
|
32
|
+
--muted: #a3a29a;
|
|
33
|
+
--line: #3a3934;
|
|
34
|
+
--accent: #e08a6d;
|
|
35
|
+
color-scheme: dark;
|
|
36
|
+
}
|
|
37
|
+
html,
|
|
38
|
+
body {
|
|
39
|
+
height: 100%;
|
|
40
|
+
}
|
|
41
|
+
body {
|
|
42
|
+
margin: 0;
|
|
43
|
+
background: var(--paper);
|
|
44
|
+
color: var(--ink);
|
|
45
|
+
font: 15px/1.5 var(--sans);
|
|
46
|
+
display: grid;
|
|
47
|
+
place-items: center;
|
|
48
|
+
padding: 32px 16px;
|
|
49
|
+
}
|
|
50
|
+
main {
|
|
51
|
+
width: 100%;
|
|
52
|
+
max-width: 420px;
|
|
53
|
+
display: grid;
|
|
54
|
+
justify-items: center;
|
|
55
|
+
gap: 20px;
|
|
56
|
+
text-align: center;
|
|
57
|
+
}
|
|
58
|
+
header {
|
|
59
|
+
display: grid;
|
|
60
|
+
gap: 4px;
|
|
61
|
+
}
|
|
62
|
+
.eyebrow {
|
|
63
|
+
margin: 0;
|
|
64
|
+
font-size: 12px;
|
|
65
|
+
letter-spacing: 0.08em;
|
|
66
|
+
text-transform: uppercase;
|
|
67
|
+
color: var(--muted);
|
|
68
|
+
}
|
|
69
|
+
h1 {
|
|
70
|
+
margin: 0;
|
|
71
|
+
font: 400 28px/1.2 var(--serif);
|
|
72
|
+
letter-spacing: -0.01em;
|
|
73
|
+
}
|
|
74
|
+
/* The tile is 24 grid units at 10 px per unit; the icon's box is its 20-unit grid and the
|
|
75
|
+
motion bleeds 2 units past it on every side, as in the Rive version. */
|
|
76
|
+
.stage {
|
|
77
|
+
width: 240px;
|
|
78
|
+
max-width: 100%;
|
|
79
|
+
aspect-ratio: 1;
|
|
80
|
+
display: grid;
|
|
81
|
+
place-items: center;
|
|
82
|
+
border: 1px solid var(--line);
|
|
83
|
+
border-radius: 24px;
|
|
84
|
+
box-sizing: border-box;
|
|
85
|
+
}
|
|
86
|
+
anima-icon {
|
|
87
|
+
width: 200px;
|
|
88
|
+
height: 200px;
|
|
89
|
+
color: var(--ink);
|
|
90
|
+
--anima-accent: var(--accent);
|
|
91
|
+
border-radius: 12px;
|
|
92
|
+
}
|
|
93
|
+
anima-icon:focus-visible {
|
|
94
|
+
outline: 2px solid var(--accent);
|
|
95
|
+
outline-offset: 22px;
|
|
96
|
+
}
|
|
97
|
+
.hint {
|
|
98
|
+
margin: 0;
|
|
99
|
+
color: var(--muted);
|
|
100
|
+
font-size: 14px;
|
|
101
|
+
}
|
|
102
|
+
kbd {
|
|
103
|
+
font: 12px var(--mono);
|
|
104
|
+
color: var(--ink);
|
|
105
|
+
border: 1px solid var(--line);
|
|
106
|
+
border-bottom-width: 2px;
|
|
107
|
+
border-radius: 4px;
|
|
108
|
+
padding: 0 5px;
|
|
109
|
+
}
|
|
110
|
+
.count {
|
|
111
|
+
font-variant-numeric: tabular-nums;
|
|
112
|
+
color: var(--ink);
|
|
113
|
+
}
|
|
114
|
+
footer {
|
|
115
|
+
font-size: 12px;
|
|
116
|
+
color: var(--muted);
|
|
117
|
+
}
|
|
118
|
+
footer code {
|
|
119
|
+
font: 12px var(--mono);
|
|
120
|
+
}
|
|
121
|
+
</style>
|
|
122
|
+
</head>
|
|
123
|
+
<body>
|
|
124
|
+
<main>
|
|
125
|
+
<header>
|
|
126
|
+
<p class="eyebrow">Glyph · 20 px grid · Anima</p>
|
|
127
|
+
<h1>Ring the bell</h1>
|
|
128
|
+
</header>
|
|
129
|
+
|
|
130
|
+
<div class="stage">
|
|
131
|
+
<anima-icon id="bell"
|
|
132
|
+
><script type="application/vnd.anima+json">
|
|
133
|
+
<!-- BELL -->
|
|
134
|
+
</script></anima-icon
|
|
135
|
+
>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<p class="hint">
|
|
139
|
+
Click the bell, or focus it and press <kbd>Enter</kbd>.
|
|
140
|
+
<span class="count" id="count" aria-live="polite"></span>
|
|
141
|
+
</p>
|
|
142
|
+
|
|
143
|
+
<footer>
|
|
144
|
+
<code>bell.svg</code> from the Glyphy set, animated in <code>bell.ani</code>, played by
|
|
145
|
+
<code><anima-icon></code>
|
|
146
|
+
</footer>
|
|
147
|
+
</main>
|
|
148
|
+
|
|
149
|
+
<script type="module">
|
|
150
|
+
/* RUNTIME */
|
|
151
|
+
|
|
152
|
+
// Theming is plain CSS (color and --anima-accent above); the page only counts rings.
|
|
153
|
+
let rings = 0;
|
|
154
|
+
const count = document.getElementById('count');
|
|
155
|
+
document.getElementById('bell').addEventListener('anima:event', (e) => {
|
|
156
|
+
if (e.detail.name !== 'rang') return;
|
|
157
|
+
rings += 1;
|
|
158
|
+
count.textContent = rings === 1 ? 'Rang once.' : `Rang ${rings} times.`;
|
|
159
|
+
});
|
|
160
|
+
</script>
|
|
161
|
+
</body>
|
|
162
|
+
</html>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
data ink=FFF0EEE6
|
|
2
|
+
data paper=FF1D1D1D
|
|
3
|
+
advance 1
|
|
4
|
+
screenshot build/frames/00-rest.png
|
|
5
|
+
pointer move@120,120
|
|
6
|
+
advance 300ms
|
|
7
|
+
screenshot build/frames/01-hover.png
|
|
8
|
+
pointer click@120,120
|
|
9
|
+
advance 50ms
|
|
10
|
+
screenshot build/frames/02-ring-f3.png
|
|
11
|
+
advance 67ms
|
|
12
|
+
screenshot build/frames/03-ring-f7.png
|
|
13
|
+
advance 167ms
|
|
14
|
+
screenshot build/frames/04-ring-f17.png
|
|
15
|
+
advance 167ms
|
|
16
|
+
screenshot build/frames/05-ring-f27.png
|
|
17
|
+
advance 500ms
|
|
18
|
+
screenshot build/frames/06-ring-f57.png
|
|
19
|
+
advance 700ms
|
|
20
|
+
screenshot build/frames/07-rested.png
|
|
21
|
+
pointer exit@300,300
|
|
22
|
+
advance 400ms
|
|
23
|
+
screenshot build/frames/08-out.png
|
|
24
|
+
data-dump build/frames/vm.json
|
package/llms.txt
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Anima CLI
|
|
2
|
+
|
|
3
|
+
`anima` is the CLI for Anima, an open `.ani` JSON animation format with AniML markup and a small deterministic web runtime.
|
|
4
|
+
|
|
5
|
+
Authoring loop:
|
|
6
|
+
1. Edit `.animl`.
|
|
7
|
+
2. `anima validate scene.animl --format=json`
|
|
8
|
+
3. `anima sample scene.animl -e "<script>"`
|
|
9
|
+
4. `anima render scene.animl -o out.png` when visual checking is useful.
|
|
10
|
+
5. `anima build scene.animl -o scene.ani`
|
|
11
|
+
|
|
12
|
+
Discovery commands:
|
|
13
|
+
- `anima help` — command overview.
|
|
14
|
+
- `anima features` — feature inventory and details.
|
|
15
|
+
- `anima search <words>` — ranked discovery search.
|
|
16
|
+
- `anima examples` — examples, optionally filtered by topic/name.
|
|
17
|
+
- `anima schema <topic>` — registry-backed schema and spellings.
|
|
18
|
+
- `anima docs <topic>` — docs by module, feature, capability row, element or section.
|
|
19
|
+
- `anima help --json` — machine-readable command metadata.
|
|
20
|
+
|
|
21
|
+
All commands (`anima help <command>` for each):
|
|
22
|
+
- Write: `anima new`, `anima fmt`, `anima import`, `anima decompile`, `anima flatten`, `anima library`
|
|
23
|
+
- Check: `anima validate`, `anima compare`, `anima bench`, `anima doctor`
|
|
24
|
+
- See: `anima inspect`, `anima sample`, `anima session`, `anima render`, `anima playground`, `anima docs`, `anima schema`
|
|
25
|
+
- Find: `anima features`, `anima search`, `anima examples`, `anima help`
|
|
26
|
+
- Ship: `anima build`, `anima bundle`, `anima completion`, `anima version`
|
|
27
|
+
- Fonts and assets: `anima import-font`
|
|
28
|
+
|
|
29
|
+
Agent guide: https://github.com/MRoiban/anima/blob/main/docs/FOR-AGENTS.md
|
|
30
|
+
Generated CLI reference: https://github.com/MRoiban/anima/blob/main/docs/CLI.md
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Node semantics
|
|
2
|
+
|
|
3
|
+
Static labels, explicit boxes, simple painted groups, state bindings and queued actions
|
|
4
|
+
are available, including text layout boxes and unions of visible child boxes.
|
|
5
|
+
`a11y.tree-bounds` remains planned specifically for exact painted path and stroke extents;
|
|
6
|
+
use explicit `bounds` for those shapes. See SPEC.md for the remaining bounds work.
|
|
7
|
+
|
|
8
|
+
```xml
|
|
9
|
+
<anima version="0.1" name="mute" grid="20" requires="a11y focus">
|
|
10
|
+
<bool name="muted"/>
|
|
11
|
+
<rect id="mute" x0="2" y0="2" width="16" height="16" fill="#000">
|
|
12
|
+
<a11y role="checkbox" label="Mute" checked="muted" bounds="2 2 16 16"/>
|
|
13
|
+
</rect>
|
|
14
|
+
</anima>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Use `anima validate`, `anima schema circle.a11y`, and
|
|
18
|
+
`anima sample file.animl --semantics -e 'semantic mute tap\nsnapshot'`.
|
|
19
|
+
For a slider bind value to a number input or data path and set min/max/step.
|
|
20
|
+
Use value-text for independent spoken text, either a literal or a string data path.
|
|
21
|
+
See examples/slider-value-text.animl for `$volume` plus a derived `$volumeText`
|
|
22
|
+
that speaks "Volume 40 %". Anima has no standalone string inputs. Bind text or states
|
|
23
|
+
to `$path` only when data is declared and loaded. Semantic tap toggles a bound
|
|
24
|
+
checked/pressed/selected bool unless activate explicitly names a bool or trigger.
|
|
25
|
+
Traits follow from role/states; do not write trait bits. Root `<a11y>` is unchanged.
|
|
26
|
+
|
|
27
|
+
See [SPEC.md](SPEC.md) for the tree contract, diagnostics and remaining gaps.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
For static labels/roles load only `@anima-format/web/a11y` (add `@anima-format/web/markup-a11y` when the page compiles AniML in the browser). For interaction and
|
|
31
|
+
focus policy load `@anima-format/web/a11y-actions` (which imports that base entry),
|
|
32
|
+
plus the optional focus module when needed. The runtime key for the companion is
|
|
33
|
+
`a11yactions`. The CLI registers both automatically. Core hosts import `a11y` and
|
|
34
|
+
`a11yActions` from their respective entries and register both. `semanticDiff` is now
|
|
35
|
+
exported by `@anima-format/core/a11y-actions`.
|
|
36
|
+
|
|
37
|
+
Read-only semantic controls and bindings to read-only data (for example list length)
|
|
38
|
+
expose focus when eligible, but no edit actions. Multiple taps before a step queue
|
|
39
|
+
multiple toggles. A group without explicit bounds unions its visible child boxes;
|
|
40
|
+
use explicit bounds for paths/strokes until their exact extents are implemented.
|
|
41
|
+
|
|
42
|
+
`semantics mute` prints only that subtree. `snapshot --semantics $path` combines
|
|
43
|
+
semantic inspection with a filtered values snapshot. Omitted bool states are false
|
|
44
|
+
for platform consumers; traits are derived and are never authored or serialized.
|
|
45
|
+
|
|
46
|
+
With logical focus on a semantic control, headless keys use its native behavior:
|
|
47
|
+
`semantic volume focus`, `key down ArrowRight`, `key up ArrowRight`. Space needs
|
|
48
|
+
a down/up pair; button/switch/link Enter activates on down. Tab-list arrows/Home/End
|
|
49
|
+
rove enabled tabs. Numeric range actions compose before a step and respect both
|
|
50
|
+
semantic and input/data limits. Repeated targets use `rows.0.item`; author
|
|
51
|
+
`<focus edge="parent-scope"/>` on the repeat to leave a row at its child edge.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## Tab list: selection follows focus
|
|
55
|
+
|
|
56
|
+
Arrow/Home/End keys rove focus; selection is explicit. Bind each tab's `selected` to a bool and
|
|
57
|
+
handle its focus event to set the selection, so keyboard focus and selection agree:
|
|
58
|
+
|
|
59
|
+
```xml
|
|
60
|
+
<anima version="0.1" name="tabs" grid="20" requires="a11y focus">
|
|
61
|
+
<bool name="first" default="true"/><bool name="second"/>
|
|
62
|
+
<group id="tabs">
|
|
63
|
+
<a11y role="tab-list" label="Views"/>
|
|
64
|
+
<rect id="one" x0="0" y0="0" width="8" height="8" fill="#000">
|
|
65
|
+
<a11y role="tab" label="First" selected="first"/>
|
|
66
|
+
</rect>
|
|
67
|
+
<rect id="two" x0="10" y0="0" width="8" height="8" fill="#000">
|
|
68
|
+
<a11y role="tab" label="Second" selected="second"/>
|
|
69
|
+
</rect>
|
|
70
|
+
</group>
|
|
71
|
+
<listener on="focus" target="one" set="first=true"/>
|
|
72
|
+
<listener on="focus" target="one" set="second=false"/>
|
|
73
|
+
<listener on="focus" target="two" set="first=false"/>
|
|
74
|
+
<listener on="focus" target="two" set="second=true"/>
|
|
75
|
+
</anima>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Check with `semantic one focus`, `key down ArrowRight`, `expect second == true`.
|
|
79
|
+
Apply the same selection writes to your panel visibility bindings. Keep disabled tabs out of the
|
|
80
|
+
selection; arrow navigation skips them. Explicit focus listeners also cover pointer/host focus.
|
|
81
|
+
|
|
82
|
+
## Progress, status and controlled dialogs
|
|
83
|
+
|
|
84
|
+
These are **node** semantics (`<a11y>` inside a node), not the smaller root accessibility block.
|
|
85
|
+
`anima schema a11y` lists every node role and state. `modal` (dialog/alert-dialog) and
|
|
86
|
+
`expanded` (button/link/group/list-item) are existing bool literal/input/data-path fields;
|
|
87
|
+
the downstream kit's claim that expanded/modal are unavailable was a discoverability gap.
|
|
88
|
+
|
|
89
|
+
```xml
|
|
90
|
+
<anima version="0.1" name="progress" grid="40" requires="a11y">
|
|
91
|
+
<number name="amount" default="40"/>
|
|
92
|
+
<bool name="open"/><bool name="closed" default="true"/>
|
|
93
|
+
<group id="loading"><a11y role="progressbar" label="Loading" value="amount" min="0" max="100"/></group>
|
|
94
|
+
<group id="waiting"><a11y role="progressbar" label="Waiting"/></group>
|
|
95
|
+
<group id="capacity"><a11y role="meter" label="Capacity" value="amount"/></group>
|
|
96
|
+
<group id="message"><a11y role="status" label="Ready"/></group>
|
|
97
|
+
<group id="opener"><a11y role="button" label="Details" expanded="open" activate="open" controls="panel"/></group>
|
|
98
|
+
<group id="panel"><a11y role="dialog" label="Details" modal="open" hidden="closed"/></group>
|
|
99
|
+
</anima>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Omit progressbar `value` for indeterminate progress; meter requires a number binding.
|
|
103
|
+
Status announces label changes politely. `controls` names another semantic node in the same
|
|
104
|
+
component and becomes `aria-controls`; it does not open, focus or reveal that node.
|
|
105
|
+
Use a separate bool input/data property for `hidden` (state fields accept bindings, not expressions).
|
|
106
|
+
Modal dialogs suppress semantic siblings while active; manage entry/return focus explicitly.
|
|
107
|
+
CLI `semantics` and `snapshot --semantics` expose these roles and relations, and
|
|
108
|
+
`anima sample file.animl --semantics` includes them without a browser.
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
# Node accessibility
|
|
2
|
+
|
|
3
|
+
The fixed per-entry budgets are reported in REPORT.md. Root document `a11y` in SPEC §10 retains its
|
|
4
|
+
existing shape, validation and behavior. See REPORT.md for remaining gaps.
|
|
5
|
+
|
|
6
|
+
## Authoring
|
|
7
|
+
|
|
8
|
+
Every node can have `a11y`, declared with `requires: ["a11y"]`, or an AniML
|
|
9
|
+
`<a11y …/>` child. Registry entries in `core/registry.ts` own both spellings.
|
|
10
|
+
|
|
11
|
+
| JSON field | AniML attribute | Values |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| role | role | button, checkbox, switch, radio, radio-group, slider, tab, tab-list, toolbar, grid, row, gridcell, link, list, list-item, group, dialog, alert-dialog, heading, text, img, none, progressbar, meter, status |
|
|
14
|
+
| label, hint, value | same | literal string or `$path` string data binding; slider/meter value requires a number input/path; progressbar value is optional and numeric when present |
|
|
15
|
+
| valueText | value-text | slider/progressbar/meter: literal string or `$path` string data binding; spoken value independent of numeric value |
|
|
16
|
+
| level | level | integer 1–6 or number input/data path; heading only; bound AniML values are JSON strings (`"depth"`) |
|
|
17
|
+
| href | href | string; link only |
|
|
18
|
+
| controls | controls | local id of another node with a non-none a11y role; maps to aria-controls |
|
|
19
|
+
| checked | checked | bool literal, bool input name or `$path` |
|
|
20
|
+
| checkedMixed | checked-mixed | bool literal/input/path; checkbox only; true overrides checked with `mixed` |
|
|
21
|
+
| pressed, selected, expanded, disabled, hidden, required, readonly, modal | same | bool literal/input/path |
|
|
22
|
+
| live | live | off (default), polite, assertive |
|
|
23
|
+
| activate | activate | trigger input (fire), or bool input (toggle) |
|
|
24
|
+
| min, max, step | same | min/max for slider/progressbar/meter, step for slider only; defaults 0, 100, 1; min < max, step > 0 |
|
|
25
|
+
| bounds | bounds | local [x,y,w,h]; nonnegative width and height; defaults to painted bounds |
|
|
26
|
+
|
|
27
|
+
Anima has no standalone string inputs: label, hint, non-slider value and valueText
|
|
28
|
+
bind strings through `$path`. This keeps mutable text in the typed data model, with
|
|
29
|
+
its existing instance scope, derived values and subscriptions, instead of adding a
|
|
30
|
+
second string-input system. Numeric slider values and heading levels, and boolean
|
|
31
|
+
states, may bind to number/bool inputs or data paths. Text matching a numeric or
|
|
32
|
+
boolean input name is diagnosed as input-type; other non-path text is literal; unknown `$path` and required action/state bindings are errors. Alternate
|
|
33
|
+
role spellings such as `radioButton` are rejected. Traits are derived, never authored:
|
|
34
|
+
checked implies checkable; pressed implies toggleable; selected implies selectable;
|
|
35
|
+
expanded implies expandable; required implies requirable; disabled implies enablable;
|
|
36
|
+
a focus target implies focusable. These states may be false without losing their trait.
|
|
37
|
+
|
|
38
|
+
`unknown-input`, `input-type`, `bad-value`, `undeclared-feature` carry their field's
|
|
39
|
+
JSON pointer. `a11y-role-state` rejects a role-incompatible state and its hint lists
|
|
40
|
+
allowed states. Checked is allowed on checkbox/switch/radio, pressed on button,
|
|
41
|
+
selected on tab/list-item/radio, expanded on button/link/group/list-item, required
|
|
42
|
+
on checkbox/switch/radio/radio-group/slider, readonly on checkbox/switch/slider,
|
|
43
|
+
modal on dialog/alert-dialog. Disabled and hidden apply to all roles.
|
|
44
|
+
|
|
45
|
+
## Shared tree and actions
|
|
46
|
+
|
|
47
|
+
`SemanticNode`, `SemanticAction`, `SemanticDiff` are exported as types from the core
|
|
48
|
+
entry. `semanticDiff` is exported as a function from `@anima-format/core/a11y-actions`. `test/fixtures/tree.json` is the tree contract, checked by
|
|
49
|
+
`test/core/semantics.test.ts`. The tree is an ordered forest. Every node has id,
|
|
50
|
+
role, states, world-grid bounds [x,y,w,h], actions and children; optional fields are
|
|
51
|
+
label, hint, value (string/number), valueText (string), level, href, controls, min, max, step. States include
|
|
52
|
+
checked (boolean or `mixed`), pressed, selected, expanded, disabled, required,
|
|
53
|
+
readonly, modal, focused, live (`polite`/`assertive`). No DOM objects are exposed.
|
|
54
|
+
|
|
55
|
+
`player.semantics()` lifts descendants through nodes without semantics and through
|
|
56
|
+
role none. Hidden/invisible subtrees are excluded, opacity does not hide. A modal
|
|
57
|
+
sibling suppresses its siblings. IDs in component instances and repeated rows are
|
|
58
|
+
dotted. Intended bounds are transformed painted bounds, or an explicit local box.
|
|
59
|
+
The lean browser entry keeps explicit bounds or a geometry union; the optional P7-8 calculator below adds painted-stroke extents. Static bounds are propagated from visible children in reverse structural order. Explicit semantic bounds override that node's computed box. A node without measurable descendants falls back to its world-space origin as a zero-size box. Nested instances and repeat items are visited at their owning node, before its next authored sibling.
|
|
60
|
+
The tree is cached across unchanged reads and steps; changed semantic inputs,
|
|
61
|
+
geometry or focus invalidate it. Late registration of action/focus peers invalidates a cached static tree. A same-signature owner replacement refreshes action ownership while retaining the immutable tree snapshot. Hosts must treat returned snapshots as read-only. A retained dependency check covers each visited player's resolved geometry/transform/visibility
|
|
62
|
+
addresses, focus, semantic input/data bindings, focus-enabled inputs, nested owner identity/count,
|
|
63
|
+
list length/item-player identity and module generation. Unchanged reads return before scene
|
|
64
|
+
collection, bounds work or signature construction. Opacity/draw-order addresses do not affect the boxes. Paint addresses are excluded in the lean
|
|
65
|
+
browser entry and tracked when the optional painted-bounds calculator is installed. Unchanged list steps retain the
|
|
66
|
+
cache despite the renderer's revision advancing. A changed dependency recollects; equal resolved
|
|
67
|
+
signatures retain snapshot identity while refreshing owners. These are retained value readers,
|
|
68
|
+
not event subscriptions or a new host notification API. Hosts must treat snapshots as read-only.
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
With `a11y-actions` registered, `semanticDiff(previous,next)` and `player.semanticDiff` return added and removed ids
|
|
72
|
+
in tree order, and `{id,keys}` changes in next-tree order. Children compare immediate
|
|
73
|
+
child ids; a descendant's state change does not also mark its ancestors changed.
|
|
74
|
+
|
|
75
|
+
With `a11y-actions` registered, `semanticAction(id,action)` rejects missing ids or unavailable actions with false.
|
|
76
|
+
Tap fires activate or queues a bool toggle; repeated taps before a step compose in queue order; absent activate it toggles the first bound
|
|
77
|
+
checked/pressed/selected field. Increase/decrease add/subtract step and clamp value
|
|
78
|
+
to min/max, then to the numeric input/data property limits. Range writes evaluate against the committed value at their queue position, so repeated actions before a step compose. A per-owner/input prediction reports false at a narrower limit, including an already queued limit. Writes are queued for the next step. Disabled controls expose no actions;
|
|
79
|
+
readonly controls expose no edit actions, including when the binding names a read-only data input such as list length. They may still expose focus. Focus delegates to the optional focus module.
|
|
80
|
+
Focusable ancestors report focused; hidden focus retargets toward a focusable ancestor,
|
|
81
|
+
then the next focusable node in tree order, then clears. Focus/traversal stays in focus.
|
|
82
|
+
When focus and the companion are registered, eligible items exclude
|
|
83
|
+
semantic hidden, disabled and modal-suppressed nodes, including on the first read.
|
|
84
|
+
`focusItems(true)` still exposes structural items for cleanup. Machine focus
|
|
85
|
+
conditions include focusable semantic ancestors; focus-only documents retain their
|
|
86
|
+
existing behavior. Twelve module arrival orders are verified. Already compiled semantic
|
|
87
|
+
models keep inert focus configurations even without focus loaded; registering the
|
|
88
|
+
optional focus module invalidates the cached tree and makes them actionable.
|
|
89
|
+
Repeated row targets use `repeatId.index.localId`, with the same owner, world point,
|
|
90
|
+
pointer matrix and scope rules as component instances. To traverse beyond a child
|
|
91
|
+
row's edge, use `focus edge="parent-scope"` on the repeat, as on component instances.
|
|
92
|
+
Shrinking a repeat retargets before generic focus cleanup. Nested/repeated semantic
|
|
93
|
+
roots are refreshed after each step even when their host has no own semantic node.
|
|
94
|
+
Directional traversal uses semantic box centers for synthesized targets without explicit focus
|
|
95
|
+
bounds, and excludes ancestors of the current target from directional candidates. Explicit focus
|
|
96
|
+
bounds and scoped closed-loop behavior retain their existing policy. The native child → right
|
|
97
|
+
sibling → next outside sequence matches; see `spec/conformance/a11y-spatial-focus`.
|
|
98
|
+
Native ancestor-condition coverage matches six PNG marker stages in `oracle/p3c8-condition`: entry,
|
|
99
|
+
parent targeting, sequential and directional movement, departure and hidden-child retargeting. The
|
|
100
|
+
native comparator targets the node, and equal/notEqual choose focused/unfocused; its right-hand
|
|
101
|
+
boolean does not provide inversion. Native semantic bounds can lag animated paint and are retained
|
|
102
|
+
as a numbered finding rather than used as a substitute for the PNG comparison.
|
|
103
|
+
|
|
104
|
+
## Headless commands (SPEC §11.2 extension)
|
|
105
|
+
|
|
106
|
+
| Command | Effect |
|
|
107
|
+
|---|---|
|
|
108
|
+
| semantics [id] | One JSON line: forest, or the identified subtree; unknown subtree id is a script error |
|
|
109
|
+
| semantic id tap\|increase\|decrease\|focus | Queue the action, then step(0) |
|
|
110
|
+
| snapshot --semantics | Snapshot with an additional semantics tree |
|
|
111
|
+
|
|
112
|
+
`anima sample --semantics` requests semantic snapshots. The script integration is
|
|
113
|
+
one dispatch plus an import; the command implementation is tooling only.
|
|
114
|
+
|
|
115
|
+
### Native semantic keys
|
|
116
|
+
|
|
117
|
+
In scripts, `key down|up <key>` and input-module `key repeat <key>` on a focused
|
|
118
|
+
semantic control take the overlay's native route before generic focus traversal.
|
|
119
|
+
Slider ArrowRight/Up increase, ArrowLeft/Down decrease; Home/End reach the ends.
|
|
120
|
+
Button, switch and tab Enter activate on down; Space activates on release after a down
|
|
121
|
+
on the same control. Checkbox/radio use Space; an already checked radio stays
|
|
122
|
+
checked. Links use Enter. Arrows in a tab-list rove enabled direct tabs, wrapping;
|
|
123
|
+
Home/End choose its first/last tab. Focus order matches the loaded focus module.
|
|
124
|
+
Readonly/disabled action policy still applies. Shift is accepted; control/alt/meta
|
|
125
|
+
and explicit targets other than the focused node use the generic input route.
|
|
126
|
+
These events are handled once, using the semantic routing owner rather than drawn-node
|
|
127
|
+
key listeners. Other unmodified semantic keys are consumed without generic spatial
|
|
128
|
+
traversal; Tab/Shift+Tab use the focus module, including repeated child tab stops. Key translation lives only in core/commands.ts (tooling); browser
|
|
129
|
+
entries use native buttons for tab activation, adding no key emulation bytes.
|
|
130
|
+
|
|
131
|
+
The derived example `examples/slider-value-text.animl` uses numeric `$volume`
|
|
132
|
+
and read-only `$volumeText` via a template converter to speak "Volume 40 %".
|
|
133
|
+
`valueText` off a slider reports bad-value at its field; wrong type, missing data
|
|
134
|
+
and unknown path use input-type, undeclared-feature and unknown-input respectively.
|
|
135
|
+
|
|
136
|
+
## Traits, defaults and remaining gaps
|
|
137
|
+
|
|
138
|
+
Traits are descriptive consequences of the role and authored states, not fields in
|
|
139
|
+
`SemanticNode`. A checkbox/switch/radio is checkable; button `pressed` makes it
|
|
140
|
+
toggleable; tab and `selected` make it selectable. An authored `expanded`, `required`
|
|
141
|
+
or `disabled` state indicates the corresponding expandable, requirable or enablable
|
|
142
|
+
trait even when false. Focusability follows eligible focus items when the optional
|
|
143
|
+
focus module is registered; actions synthesizes focus for button, checkbox, switch,
|
|
144
|
+
radio, slider, tab, link and list-item. There are no authored trait flags.
|
|
145
|
+
|
|
146
|
+
Omitted bool states remain absent in the serialized tree; platform consumers treat
|
|
147
|
+
them as false. `live` defaults to off (absent from the tree). Slider defaults are
|
|
148
|
+
0, 100 and 1, exposed while enabled; a disabled slider retains the prototype's
|
|
149
|
+
omission of that metadata. An omitted activation binding does not make a static
|
|
150
|
+
literal checked/pressed/selected state writable. Explicit activate takes precedence
|
|
151
|
+
and may name a trigger or writable bool. Numeric input/data constraints still apply
|
|
152
|
+
after the semantic range clamp. The optional text consumer infers labels as specified in [TEXT.md](TEXT.md), without adding
|
|
153
|
+
fields to the shared tree contract.
|
|
154
|
+
|
|
155
|
+
Independent conformance now covers every role (including none/heading),
|
|
156
|
+
state changes through semantic actions, a legal role × state trait matrix, live
|
|
157
|
+
politeness during label changes, bound properties, range clamps and focus ancestry.
|
|
158
|
+
`test/core/closure.test.ts` covers filtered inspection and structural/reorder diffs.
|
|
159
|
+
Native captures compare states/values around tap/increase/decrease plus properties,
|
|
160
|
+
remaining states, heading metadata and the none/modal seams; see oracle/roles/.
|
|
161
|
+
See REPORT.md for per-row closure evidence and remaining gaps.
|
|
162
|
+
|
|
163
|
+
## Painted-bounds seam
|
|
164
|
+
|
|
165
|
+
The optional P7-8 calculator below is shared by tooling and the browser overlay. It uses geometric
|
|
166
|
+
extrema and stroke support instead of the earlier proposed DOM bounding-box inflation. The
|
|
167
|
+
installed Chromium ignores getBBox's stroke option while Firefox honors it, and a blanket
|
|
168
|
+
half-width inflation cannot reproduce butt caps or miter joins. A shared pure calculator avoids
|
|
169
|
+
that platform divergence, following the separation described in docs/research/rive-web-runtime.md.
|
|
170
|
+
Explicit authored boxes still win. Caps take their direction from the subpath's first/last
|
|
171
|
+
non-zero tangent; a zero-length open subpath with round or square caps is a dot or a square aligned
|
|
172
|
+
with the local x axis, as SVG draws it. The P8 extension below adds clipping, masks, trims, viewport strokes and feather support;
|
|
173
|
+
standard centered geometry retains its independent tests.
|
|
174
|
+
|
|
175
|
+
Design follows `design/p3b/DESIGN.md` §3.1–3.3. Research context:
|
|
176
|
+
`docs/research/rive-format-and-graph.md` (registry discipline),
|
|
177
|
+
`docs/research/rive-animation-and-state.md` (deterministic queued actions),
|
|
178
|
+
`docs/research/rive-web-runtime.md` (separate core semantics and platform overlay).
|
|
179
|
+
No source algorithms or documentation text from Rive were copied.
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## Module seam
|
|
183
|
+
|
|
184
|
+
`@anima-format/web/a11y` registers validation, registry shapes and the static semantic
|
|
185
|
+
forest. It installs only `player.semantics()`. Static snapshots have empty action
|
|
186
|
+
arrays and no derived focus state. Node slider min/max/step metadata remains in the base
|
|
187
|
+
tree, with the prototype's disabled-node omission retained.
|
|
188
|
+
|
|
189
|
+
`@anima-format/web/a11y-actions` imports the base web entry and registers its
|
|
190
|
+
companion afterward (`after: ['a11y']`). It adds action descriptions, semanticAction,
|
|
191
|
+
semanticDiff, synthesized focus configuration, ancestor focus states and retargeting.
|
|
192
|
+
|
|
193
|
+
`@anima-format/web/markup-a11y` registers the registry-driven structural forms so that
|
|
194
|
+
in-browser AniML can use `<a11y …/>` children, as `markup-paint` does for paint. Pages that
|
|
195
|
+
load compiled `.ani` do not need it.
|
|
196
|
+
The runtime registry key is `a11yactions`, following the existing `host-values` /
|
|
197
|
+
`hostvalues` convention: core's current module-name grammar rejects hyphens. Core
|
|
198
|
+
consumers register both modules; either arrival order is supported. Initialization
|
|
199
|
+
defers until the base is present. The browser entry loads its dependency.
|
|
200
|
+
Root document a11y behavior is unchanged.
|
|
201
|
+
|
|
202
|
+
The base module exposes an internal `runtime` seam on the active registry entry.
|
|
203
|
+
The companion reads this seam during init; it does not import a second runtime cache
|
|
204
|
+
into a separately bundled entry. A post-build callback decorates the tree and may
|
|
205
|
+
request a rebuild after changing focus. Both tree traversal and diffs use one shared
|
|
206
|
+
flatten helper; actions reuse core's clamp. Headless commands remain tooling-only and
|
|
207
|
+
are imported by neither browser entry. The companion's 1,024 B budget is incremental
|
|
208
|
+
over its imported base entry, as with other layered module entries.
|
|
209
|
+
|
|
210
|
+
This split follows the platform separation described in
|
|
211
|
+
`docs/research/rive-web-runtime.md` and the shared-registry discipline described in
|
|
212
|
+
`docs/research/rive-format-and-graph.md`; no external algorithm is ported. The phase statuses remain planned. See REPORT.md for the 2,104 B centered-stroke
|
|
213
|
+
probe that exceeded the fixed budget and was reverted. Remaining work and measured limits are recorded in REPORT.md; no additional runtime module was added.
|
|
214
|
+
|
|
215
|
+
## Additional Anima roles and relations (BF-4)
|
|
216
|
+
|
|
217
|
+
`progressbar`, `meter`, `status` and `controls` are Anima extensions; the parity inventory
|
|
218
|
+
has no corresponding rows. No inventory status or new row is inferred. Progressbar and meter
|
|
219
|
+
expose numeric min/max (0/100 by default), and a bound number value; meter requires value,
|
|
220
|
+
progressbar without value is indeterminate. Neither range role synthesizes range-edit or focus actions. Explicit activate bindings retain the
|
|
221
|
+
ordinary authored action policy.
|
|
222
|
+
`valueText` may supply independent spoken text on these roles. Numeric values use the ordinary
|
|
223
|
+
input/data constraints; metadata does not install additional clamping. `status` defaults to
|
|
224
|
+
`live: polite`; an authored polite/assertive live priority overrides that default.
|
|
225
|
+
`controls` is a local node id, never a data binding. Its target must have a non-none semantic
|
|
226
|
+
role in the same component; invalid targets produce `bad-value` at the controls field with a hint.
|
|
227
|
+
The shared tree prefixes the relation with the same instance/repeat path as its owning node.
|
|
228
|
+
A hidden target may be omitted from the tree/overlay; controls does not force it visible.
|
|
229
|
+
|
|
230
|
+
Headless keys mirror radio-group arrows/Home/End: move to the enabled radio in focus order,
|
|
231
|
+
then tap it unless already checked. Group exclusivity belongs to authored selection state,
|
|
232
|
+
just as for pointer activation; a shared selected index with derived checked values or selection
|
|
233
|
+
triggers can express it. Browser Tab entry uses the checked enabled radio, else the first;
|
|
234
|
+
arrow movement wraps and selects. Tabs retain manual activation. This extends the existing
|
|
235
|
+
`a11y.roving-focus` policy rather than introducing a new focus system.
|
|
236
|
+
|
|
237
|
+
## Optional text consumer (P6)
|
|
238
|
+
|
|
239
|
+
[TEXT.md](TEXT.md) specifies grapheme host/listener access, inferred labels, and measured
|
|
240
|
+
text layout bounds. Painted geometric bounds and their two intentional differences are specified below.
|
|
241
|
+
|
|
242
|
+
### Painted geometric bounds (P7-8)
|
|
243
|
+
|
|
244
|
+
Tooling automatically installs the painted-geometry calculator. Browsers opt into
|
|
245
|
+
`@anima-format/web/a11y-bounds`; the overlay and headless `player.semantics()` then use the same
|
|
246
|
+
world-space result. Explicit semantic bounds still win. Cubics use derivative roots instead of
|
|
247
|
+
control hulls/chords; standard centered strokes include butt/round/square caps, bevel/round/miter
|
|
248
|
+
joins (the SVG/Canvas default miter limit of 4), transformed circles and rounded rectangles.
|
|
249
|
+
Stroke/paint changes now invalidate the semantic cache while this calculator is installed.
|
|
250
|
+
|
|
251
|
+
Clips intersect the target box (and exposed descendant boxes) with the clip source's world
|
|
252
|
+
**geometry** box: source paint, visibility, opacity and source compositing are ignored. Masks
|
|
253
|
+
intersect with the source subtree's world painted box, including its own clips/masks and visible
|
|
254
|
+
children. Source ancestors supply transforms, not visibility. Inverted masks retain the target
|
|
255
|
+
box: the complement can paint outside the source, so intersecting with it would be incorrect.
|
|
256
|
+
These are intersections of axis-aligned boxes, not a boolean path operation. A disjoint
|
|
257
|
+
intersection is a zero-size box at the componentwise maximum of the two box origins; an empty
|
|
258
|
+
mask retains the target origin with zero size. Explicit authored semantic boxes still win.
|
|
259
|
+
|
|
260
|
+
Legacy trims and contour trims bound only retained pieces, including caps at cut ends. Empty
|
|
261
|
+
trims contribute no paint. Sequential, synchronized and wrapped contour trims use the resolved
|
|
262
|
+
contour geometry; legacy trims use the same bounded de Casteljau subdivision as contour
|
|
263
|
+
(0.0001 local-grid control-polygon excess, depth 20), followed by length slicing. The primitive
|
|
264
|
+
outline starts and directions remain those in SPEC §4. Stroke caps use the retained piece's tangent.
|
|
265
|
+
|
|
266
|
+
Fixed strokes transform the outline into viewport coordinates, apply the unchanged numeric stroke
|
|
267
|
+
width/caps/joins there, then map the resulting box back into world-grid units. Host resize and fit
|
|
268
|
+
refresh this scale and invalidate the shared semantic cache even for settled players. Nonuniform
|
|
269
|
+
node transforms never serve as a scalar width correction. Headless tools without a host use one
|
|
270
|
+
viewport unit per grid unit; `a11y-tree-bounds-fixed/host-sizes.json` supplies two host scales to
|
|
271
|
+
the pure conformance test (`expected.jsonl` and `host-large/expected.jsonl`), and both browsers
|
|
272
|
+
test actual 100/200 CSS-pixel hosts.
|
|
273
|
+
|
|
274
|
+
Feather boxes grow to the three-standard-deviation outer falloff distance specified by surface's
|
|
275
|
+
Gaussian model, including the local offset vector. Local falloff projects through the world
|
|
276
|
+
matrix; world-space falloff grows equally on both grid axes. The box encloses the original paint
|
|
277
|
+
and its offset/grown support. Inner feather remains inside the original alpha and adds no extent.
|
|
278
|
+
The Gaussian's mathematical infinite tail is not a useful accessibility rectangle; the specified
|
|
279
|
+
three-sigma extent gives its finite geometric support policy. Disabled feather preserves the box.
|
|
280
|
+
|
|
281
|
+
Two intentional differences close the remaining extents:
|
|
282
|
+
|
|
283
|
+
- **Dash:** ordinary dashes use the undashed stroke box, a conservative superset. For contour effect
|
|
284
|
+
stacks, use the contour entering the first dash (including preceding trims); subsequent effects
|
|
285
|
+
only remove paint. Walking dash gaps again on every semantic frame would cost work only to
|
|
286
|
+
shrink end gaps and does not improve accessibility targeting.
|
|
287
|
+
- **Text ink:** text uses the measured logical line boxes from the optional text consumer, including
|
|
288
|
+
its layout clipping, rather than glyph ink or text-stroke outlines. DOM text rectangles and
|
|
289
|
+
screen-reader highlights use logical boxes; this also keeps platform font rendering differences
|
|
290
|
+
out of the shared semantic geometry contract.
|
|
291
|
+
|
|
292
|
+
The bounds refinement composes with the native-field semantic refinement regardless of module
|
|
293
|
+
registration order. A small pure contour reader exposes the incoming undashed contour through the
|
|
294
|
+
active module registry; no contour renderer or extra effect walk is bundled into the base a11y entry.
|
|
295
|
+
This preserves the core/platform separation in `docs/research/rive-web-runtime.md` §3 and Lessons
|
|
296
|
+
5–6. Independent conformance cases are `a11y-tree-bounds-*`; both engine overlays consume these same
|
|
297
|
+
boxes. No Rive algorithm or documentation text is copied.
|
|
298
|
+
|
|
299
|
+
Native semantic JSON reports the uninflated rectangle. In the new explicitly linear control,
|
|
300
|
+
animation lag does not reproduce. The capture and measured difference are retained under `tests/oracle/p7-8-semantic-bounds/`.
|
|
301
|
+
|
|
302
|
+
Toolbar/grid/row/gridcell native browser navigation is specified in
|
|
303
|
+
[the overlay contract](../a11y-dom/SPEC.md). Gridcells are implicit focus targets
|
|
304
|
+
when a11y-actions and focus are installed; toolbar, grid and row are containers.
|