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,520 @@
|
|
|
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
|
+
{
|
|
134
|
+
"anima": "0.1",
|
|
135
|
+
"name": "bell",
|
|
136
|
+
"title": "Bell",
|
|
137
|
+
"grid": 20,
|
|
138
|
+
"viewBox": [-2, -2, 24, 24],
|
|
139
|
+
"colors": {
|
|
140
|
+
"ink": "currentColor",
|
|
141
|
+
"accent": "#d97757"
|
|
142
|
+
},
|
|
143
|
+
"glyphs": {
|
|
144
|
+
"bell": {
|
|
145
|
+
"source": "glyphy",
|
|
146
|
+
"sha256": "866d168f0377ff78a07856f02ba519771ec8b8f9389695d32b338bb8b86a04ae",
|
|
147
|
+
"d": "M9.493 4.473C9.423 4.49 9.326 4.517 9.256 4.493L8.602 4.66C8.543 4.675 8.464 4.703 8.409 4.73L7.835 5.016L7.366 5.328L6.888 5.748L6.485 6.211C6.428 6.277 6.354 6.377 6.313 6.452L6.009 6.998C5.984 7.043 5.955 7.099 5.939 7.147L5.714 7.805C5.692 7.871 5.666 7.981 5.659 8.05L5.605 8.614L5.605 10.357C5.605 10.417 5.589 10.486 5.579 10.545C5.532 10.817 5.449 11.086 5.338 11.338C5.317 11.387 5.297 11.444 5.27 11.488L4.972 11.98C4.945 12.023 4.907 12.062 4.876 12.102C4.846 12.139 4.818 12.183 4.788 12.218L4.223 12.866C3.945 13.187 3.76 13.793 3.974 14.186C4.04 14.307 4.138 14.394 4.25 14.469C4.326 14.519 4.484 14.621 4.575 14.621L15.38 14.621C15.516 14.621 15.657 14.542 15.762 14.463C16.203 14.128 16.199 13.552 15.949 13.102C15.905 13.022 15.841 12.912 15.778 12.849L15.262 12.333C15.21 12.281 15.161 12.215 15.114 12.156C14.893 11.882 14.696 11.575 14.579 11.241C14.538 11.125 14.522 11.001 14.487 10.883C14.477 10.847 14.455 10.811 14.447 10.776C14.441 10.749 14.445 10.722 14.434 10.697C14.428 10.684 14.398 10.661 14.398 10.658L14.374 8.304C14.35 8.276 14.373 8.247 14.367 8.216L14.24 7.579C14.222 7.485 14.157 7.3 14.115 7.214L13.8 6.572C13.72 6.411 13.607 6.256 13.495 6.115C13.47 6.084 13.444 6.043 13.417 6.017L12.947 5.547C12.927 5.526 12.92 5.529 12.898 5.516C12.883 5.507 12.878 5.481 12.865 5.471L12.413 5.133L11.93 4.86L11.457 4.664L10.924 4.514C10.806 4.481 10.672 4.484 10.551 4.467L10.551 2.953C10.551 2.912 10.512 2.871 10.497 2.835C10.474 2.782 10.458 2.725 10.417 2.681C10.372 2.631 10.297 2.601 10.236 2.578C9.97 2.476 9.694 2.537 9.563 2.807C9.549 2.835 9.494 2.901 9.494 2.929L9.494 4.444C9.494 4.454 9.494 4.463 9.493 4.473ZM4.988 13.492L5.57 12.823L5.897 12.351L6.137 11.92L6.358 11.384C6.407 11.263 6.477 11.018 6.489 10.891L6.545 10.312L6.545 8.664C6.545 8.614 6.568 8.563 6.573 8.512C6.58 8.444 6.573 8.313 6.587 8.257L6.71 7.763C6.721 7.718 6.738 7.661 6.758 7.62L7.019 7.091C7.058 7.011 7.125 6.899 7.182 6.833L7.559 6.399L7.966 6.043C8.038 5.979 8.127 5.927 8.209 5.876C8.503 5.697 8.827 5.552 9.16 5.462C9.221 5.446 9.292 5.422 9.355 5.416L10.001 5.357L10.614 5.413C10.668 5.418 10.728 5.436 10.781 5.449C11.13 5.532 11.472 5.678 11.777 5.869C11.84 5.908 11.913 5.949 11.968 5.997L12.49 6.456C12.575 6.53 12.646 6.628 12.713 6.719C12.983 7.089 13.202 7.524 13.324 7.966C13.343 8.033 13.369 8.111 13.374 8.18L13.422 8.861L13.422 10.639C13.422 10.953 13.543 11.337 13.66 11.626C13.685 11.687 13.709 11.758 13.741 11.815L14.074 12.399L14.402 12.831C14.43 12.868 14.462 12.899 14.492 12.932L14.939 13.423C14.958 13.444 15.03 13.561 15.033 13.584L4.974 13.584L4.988 13.492ZM10.173 17.469C10.219 17.457 10.27 17.455 10.317 17.447C10.414 17.431 10.51 17.412 10.605 17.387C10.759 17.347 10.907 17.289 11.051 17.224C11.154 17.178 11.26 17.133 11.355 17.073C11.622 16.905 11.838 16.646 12.005 16.382C12.185 16.099 12.376 15.685 12.262 15.346C12.18 15.101 11.838 14.963 11.598 15.035C11.507 15.062 11.439 15.133 11.367 15.19C11.348 15.204 11.322 15.216 11.306 15.233C11.289 15.25 11.282 15.299 11.274 15.322C11.231 15.45 11.196 15.587 11.14 15.71C11.101 15.796 11.036 15.869 10.973 15.939C10.712 16.229 10.312 16.462 9.908 16.385C9.864 16.377 9.821 16.362 9.777 16.355C9.721 16.346 9.663 16.346 9.609 16.328C9.567 16.314 9.529 16.285 9.49 16.264C9.432 16.233 9.368 16.208 9.313 16.171C9.28 16.149 9.256 16.115 9.226 16.089C9.2 16.068 9.17 16.053 9.144 16.032C9.08 15.981 9.027 15.917 8.982 15.849C8.89 15.713 8.848 15.547 8.795 15.393C8.777 15.341 8.764 15.275 8.73 15.231C8.676 15.16 8.597 15.123 8.517 15.089C8.441 15.056 8.361 15.024 8.278 15.02C8.155 15.015 8.045 15.079 7.945 15.141C7.929 15.151 7.896 15.183 7.878 15.185C7.831 15.281 7.747 15.389 7.735 15.497C7.722 15.609 7.777 15.702 7.803 15.807C7.818 15.871 7.823 15.939 7.844 16.002C7.873 16.085 7.93 16.162 7.972 16.24C8.027 16.344 8.067 16.457 8.136 16.554C8.356 16.859 8.86 17.208 9.212 17.339C9.521 17.454 9.849 17.458 10.173 17.469Z"
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"a11y": {
|
|
151
|
+
"role": "button",
|
|
152
|
+
"label": "Ring the bell",
|
|
153
|
+
"activate": "ring",
|
|
154
|
+
"held": "down"
|
|
155
|
+
},
|
|
156
|
+
"inputs": {
|
|
157
|
+
"ring": {
|
|
158
|
+
"type": "trigger"
|
|
159
|
+
},
|
|
160
|
+
"hover": {
|
|
161
|
+
"type": "bool"
|
|
162
|
+
},
|
|
163
|
+
"down": {
|
|
164
|
+
"type": "bool"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"hit": {
|
|
168
|
+
"circle": [10, 10, 10.8]
|
|
169
|
+
},
|
|
170
|
+
"nodes": [
|
|
171
|
+
{
|
|
172
|
+
"id": "icon",
|
|
173
|
+
"type": "group",
|
|
174
|
+
"pivot": [10, 10],
|
|
175
|
+
"children": [
|
|
176
|
+
{
|
|
177
|
+
"id": "waves",
|
|
178
|
+
"type": "group",
|
|
179
|
+
"children": [
|
|
180
|
+
{
|
|
181
|
+
"id": "wave-r1",
|
|
182
|
+
"type": "arc",
|
|
183
|
+
"center": [10, 7],
|
|
184
|
+
"r": 6.6,
|
|
185
|
+
"from": -46,
|
|
186
|
+
"to": -18,
|
|
187
|
+
"pivot": [10, 7],
|
|
188
|
+
"opacity": 0,
|
|
189
|
+
"stroke": {
|
|
190
|
+
"color": "ink",
|
|
191
|
+
"width": 1,
|
|
192
|
+
"cap": "round"
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"id": "wave-r2",
|
|
197
|
+
"type": "arc",
|
|
198
|
+
"center": [10, 7],
|
|
199
|
+
"r": 8.2,
|
|
200
|
+
"from": -46,
|
|
201
|
+
"to": -18,
|
|
202
|
+
"pivot": [10, 7],
|
|
203
|
+
"opacity": 0,
|
|
204
|
+
"stroke": {
|
|
205
|
+
"color": "ink",
|
|
206
|
+
"width": 1,
|
|
207
|
+
"cap": "round"
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": "wave-l1",
|
|
212
|
+
"type": "arc",
|
|
213
|
+
"center": [10, 7],
|
|
214
|
+
"r": 6.6,
|
|
215
|
+
"from": -162,
|
|
216
|
+
"to": -134,
|
|
217
|
+
"pivot": [10, 7],
|
|
218
|
+
"opacity": 0,
|
|
219
|
+
"stroke": {
|
|
220
|
+
"color": "ink",
|
|
221
|
+
"width": 1,
|
|
222
|
+
"cap": "round"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"id": "wave-l2",
|
|
227
|
+
"type": "arc",
|
|
228
|
+
"center": [10, 7],
|
|
229
|
+
"r": 8.2,
|
|
230
|
+
"from": -162,
|
|
231
|
+
"to": -134,
|
|
232
|
+
"pivot": [10, 7],
|
|
233
|
+
"opacity": 0,
|
|
234
|
+
"stroke": {
|
|
235
|
+
"color": "ink",
|
|
236
|
+
"width": 1,
|
|
237
|
+
"cap": "round"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
]
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"id": "swing",
|
|
244
|
+
"type": "group",
|
|
245
|
+
"pivot": [10, 2.5],
|
|
246
|
+
"children": [
|
|
247
|
+
{
|
|
248
|
+
"id": "body",
|
|
249
|
+
"type": "path",
|
|
250
|
+
"glyph": "bell",
|
|
251
|
+
"subpaths": [0, 1],
|
|
252
|
+
"fill": {
|
|
253
|
+
"color": "ink",
|
|
254
|
+
"rule": "evenodd"
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"id": "clapper",
|
|
259
|
+
"type": "path",
|
|
260
|
+
"glyph": "bell",
|
|
261
|
+
"subpaths": [2],
|
|
262
|
+
"pivot": [10, 9],
|
|
263
|
+
"fill": {
|
|
264
|
+
"color": "ink",
|
|
265
|
+
"rule": "evenodd"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"id": "dot",
|
|
270
|
+
"type": "circle",
|
|
271
|
+
"center": [14.9, 4.6],
|
|
272
|
+
"r": 1.5,
|
|
273
|
+
"pivot": [14.9, 4.6],
|
|
274
|
+
"scale": 0,
|
|
275
|
+
"fill": {
|
|
276
|
+
"color": "accent"
|
|
277
|
+
},
|
|
278
|
+
"knockout": 1.2
|
|
279
|
+
}
|
|
280
|
+
]
|
|
281
|
+
}
|
|
282
|
+
]
|
|
283
|
+
}
|
|
284
|
+
],
|
|
285
|
+
"timelines": {
|
|
286
|
+
"ring": {
|
|
287
|
+
"$comment": "Times are the Rive version's 60 fps frames in seconds (frame / 60, 6 decimals); angles are its radians in degrees.",
|
|
288
|
+
"duration": 1.4,
|
|
289
|
+
"reducedMotion": "end",
|
|
290
|
+
"tracks": {
|
|
291
|
+
"swing.rotate": [
|
|
292
|
+
[0, 0, "cubic(0.2, 0, 0.3, 1)"],
|
|
293
|
+
[0.116667, 17.1887, "cubic(0.45, 0, 0.55, 1)"],
|
|
294
|
+
[0.283333, -13.751, "cubic(0.45, 0, 0.55, 1)"],
|
|
295
|
+
[0.45, 9.1673, "cubic(0.45, 0, 0.55, 1)"],
|
|
296
|
+
[0.616667, -5.7296, "cubic(0.45, 0, 0.55, 1)"],
|
|
297
|
+
[0.783333, 3.1513, "cubic(0.45, 0, 0.55, 1)"],
|
|
298
|
+
[0.95, -1.1459, "cubic(0.45, 0, 0.55, 1)"],
|
|
299
|
+
[1.1, 0]
|
|
300
|
+
],
|
|
301
|
+
"clapper.rotate": [
|
|
302
|
+
[0, 0, "cubic(0.2, 0, 0.3, 1)"],
|
|
303
|
+
[0.083333, -6.8755, "cubic(0.45, 0, 0.55, 1)"],
|
|
304
|
+
[0.216667, 9.7403, "cubic(0.45, 0, 0.55, 1)"],
|
|
305
|
+
[0.383333, -7.4485, "cubic(0.45, 0, 0.55, 1)"],
|
|
306
|
+
[0.55, 5.1566, "cubic(0.45, 0, 0.55, 1)"],
|
|
307
|
+
[0.716667, -2.8648, "cubic(0.45, 0, 0.55, 1)"],
|
|
308
|
+
[0.883333, 1.1459, "cubic(0.45, 0, 0.55, 1)"],
|
|
309
|
+
[1.05, 0]
|
|
310
|
+
],
|
|
311
|
+
"dot.scale": [
|
|
312
|
+
[0, 0, "hold"],
|
|
313
|
+
[0.666667, 0, "elastic(1, 0.45)"],
|
|
314
|
+
[0.966667, 1]
|
|
315
|
+
],
|
|
316
|
+
"wave-r1.opacity": [
|
|
317
|
+
[0, 0, "hold"],
|
|
318
|
+
[0.016667, 0, "cubic(0.2, 0, 0.3, 1)"],
|
|
319
|
+
[0.133333, 1, "cubic(0.2, 0, 0.3, 1)"],
|
|
320
|
+
[0.516667, 0]
|
|
321
|
+
],
|
|
322
|
+
"wave-r1.scale": [
|
|
323
|
+
[0, 0.82, "hold"],
|
|
324
|
+
[0.016667, 0.82, "cubic(0.2, 0, 0.3, 1)"],
|
|
325
|
+
[0.516667, 1.08]
|
|
326
|
+
],
|
|
327
|
+
"wave-l1.opacity": [
|
|
328
|
+
[0, 0, "hold"],
|
|
329
|
+
[0.016667, 0, "cubic(0.2, 0, 0.3, 1)"],
|
|
330
|
+
[0.133333, 1, "cubic(0.2, 0, 0.3, 1)"],
|
|
331
|
+
[0.516667, 0]
|
|
332
|
+
],
|
|
333
|
+
"wave-l1.scale": [
|
|
334
|
+
[0, 0.82, "hold"],
|
|
335
|
+
[0.016667, 0.82, "cubic(0.2, 0, 0.3, 1)"],
|
|
336
|
+
[0.516667, 1.08]
|
|
337
|
+
],
|
|
338
|
+
"wave-r2.opacity": [
|
|
339
|
+
[0, 0, "hold"],
|
|
340
|
+
[0.116667, 0, "cubic(0.2, 0, 0.3, 1)"],
|
|
341
|
+
[0.233333, 1, "cubic(0.2, 0, 0.3, 1)"],
|
|
342
|
+
[0.616667, 0]
|
|
343
|
+
],
|
|
344
|
+
"wave-r2.scale": [
|
|
345
|
+
[0, 0.82, "hold"],
|
|
346
|
+
[0.116667, 0.82, "cubic(0.2, 0, 0.3, 1)"],
|
|
347
|
+
[0.616667, 1.08]
|
|
348
|
+
],
|
|
349
|
+
"wave-l2.opacity": [
|
|
350
|
+
[0, 0, "hold"],
|
|
351
|
+
[0.116667, 0, "cubic(0.2, 0, 0.3, 1)"],
|
|
352
|
+
[0.233333, 1, "cubic(0.2, 0, 0.3, 1)"],
|
|
353
|
+
[0.616667, 0]
|
|
354
|
+
],
|
|
355
|
+
"wave-l2.scale": [
|
|
356
|
+
[0, 0.82, "hold"],
|
|
357
|
+
[0.116667, 0.82, "cubic(0.2, 0, 0.3, 1)"],
|
|
358
|
+
[0.616667, 1.08]
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
"machine": {
|
|
364
|
+
"layers": {
|
|
365
|
+
"ring": {
|
|
366
|
+
"initial": "idle",
|
|
367
|
+
"states": {
|
|
368
|
+
"idle": {
|
|
369
|
+
"pose": {
|
|
370
|
+
"dot.scale": 0
|
|
371
|
+
},
|
|
372
|
+
"on": [
|
|
373
|
+
{
|
|
374
|
+
"when": "ring",
|
|
375
|
+
"to": "ringing"
|
|
376
|
+
}
|
|
377
|
+
]
|
|
378
|
+
},
|
|
379
|
+
"ringing": {
|
|
380
|
+
"play": "ring",
|
|
381
|
+
"emit": "rang",
|
|
382
|
+
"on": [
|
|
383
|
+
{
|
|
384
|
+
"when": "@end",
|
|
385
|
+
"to": "rested"
|
|
386
|
+
}
|
|
387
|
+
]
|
|
388
|
+
},
|
|
389
|
+
"rested": {
|
|
390
|
+
"pose": {
|
|
391
|
+
"dot.scale": 1
|
|
392
|
+
},
|
|
393
|
+
"on": [
|
|
394
|
+
{
|
|
395
|
+
"when": "ring",
|
|
396
|
+
"to": "ringing"
|
|
397
|
+
}
|
|
398
|
+
]
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
"hover": {
|
|
403
|
+
"initial": "rest",
|
|
404
|
+
"states": {
|
|
405
|
+
"rest": {
|
|
406
|
+
"pose": {},
|
|
407
|
+
"on": [
|
|
408
|
+
{
|
|
409
|
+
"when": "hover",
|
|
410
|
+
"to": "hover",
|
|
411
|
+
"blend": 0.18,
|
|
412
|
+
"interruptible": false
|
|
413
|
+
}
|
|
414
|
+
]
|
|
415
|
+
},
|
|
416
|
+
"hover": {
|
|
417
|
+
"pose": {
|
|
418
|
+
"icon.scale": 1.05,
|
|
419
|
+
"icon.rotate": -2.0054
|
|
420
|
+
},
|
|
421
|
+
"on": [
|
|
422
|
+
{
|
|
423
|
+
"when": "!hover",
|
|
424
|
+
"to": "rest",
|
|
425
|
+
"blend": 0.22,
|
|
426
|
+
"interruptible": false
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"when": "down",
|
|
430
|
+
"to": "press",
|
|
431
|
+
"blend": 0.09,
|
|
432
|
+
"interruptible": false
|
|
433
|
+
}
|
|
434
|
+
]
|
|
435
|
+
},
|
|
436
|
+
"press": {
|
|
437
|
+
"pose": {
|
|
438
|
+
"icon.scale": 0.95,
|
|
439
|
+
"icon.rotate": -0.8594
|
|
440
|
+
},
|
|
441
|
+
"on": [
|
|
442
|
+
{
|
|
443
|
+
"when": "!hover",
|
|
444
|
+
"to": "rest",
|
|
445
|
+
"blend": 0.22,
|
|
446
|
+
"interruptible": false
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"when": "!down",
|
|
450
|
+
"to": "hover",
|
|
451
|
+
"blend": 0.16,
|
|
452
|
+
"interruptible": false
|
|
453
|
+
}
|
|
454
|
+
]
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
"listeners": [
|
|
461
|
+
{
|
|
462
|
+
"on": "click",
|
|
463
|
+
"fire": "ring"
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"on": "enter",
|
|
467
|
+
"set": {
|
|
468
|
+
"hover": true
|
|
469
|
+
}
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"on": "leave",
|
|
473
|
+
"set": {
|
|
474
|
+
"hover": false,
|
|
475
|
+
"down": false
|
|
476
|
+
}
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
"on": "down",
|
|
480
|
+
"set": {
|
|
481
|
+
"down": true
|
|
482
|
+
}
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
"on": "up",
|
|
486
|
+
"set": {
|
|
487
|
+
"down": false
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
]
|
|
491
|
+
}
|
|
492
|
+
</script></anima-icon
|
|
493
|
+
>
|
|
494
|
+
</div>
|
|
495
|
+
|
|
496
|
+
<p class="hint">
|
|
497
|
+
Click the bell, or focus it and press <kbd>Enter</kbd>.
|
|
498
|
+
<span class="count" id="count" aria-live="polite"></span>
|
|
499
|
+
</p>
|
|
500
|
+
|
|
501
|
+
<footer>
|
|
502
|
+
<code>bell.svg</code> from the Glyphy set, animated in <code>bell.ani</code>, played by
|
|
503
|
+
<code><anima-icon></code>
|
|
504
|
+
</footer>
|
|
505
|
+
</main>
|
|
506
|
+
|
|
507
|
+
<script type="module">
|
|
508
|
+
var e=class extends Error{at;constructor(e,t){super(e),this.at=t}},t={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7,z:0},i=/[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?/y;function r(r){let n,a=[],o=0,l=r.length,h=(t,i=o)=>{throw new e(t,i)},d=()=>{for(;o<l&&/[\s,]/.test(r[o]);)o++},u=()=>{d(),i.lastIndex=o;let e=i.exec(r);return e&&isFinite(+e[0])?(o+=e[0].length,+e[0]):h("")},p=()=>{d();let e=r[o++];return"0"===e||"1"===e?+e:h("",o-1)},c=0,f=0,m=0,y=0,g=0,v=0,b="",k="",w=(e,...t)=>n.segs.push(e,...t);for(d();o<l;){let e=r[o];/[a-z]/i.test(e)?(e.toLowerCase()in t||h(""),k=e,o++):k?("z"===k||"Z"===k)&&h(""):h("");let i=k.toLowerCase(),M=k===i;!n&&"m"!==i&&h("",o-1);let x=o-1,$=[];for(let e=0;e<t[i];e++)$.push("a"!==i||3!==e&&4!==e?u():p());let A=M?c:0,E=M?f:0;if("a"===i?($[5]+=A,$[6]+=E):"v"===i?$[0]+=E:$.forEach((e,t)=>$[t]=e+(t%2?E:A)),("s"===i||"t"===i)&&$.unshift(...("s"===i?/[cs]/:/[qt]/).test(b)?[2*c-g,2*f-v]:[c,f]),"m"===i)n&&(n.end=x),n={start:x,end:l,absolute:!M,segs:[]},a.push(n),w(0,c=m=$[0],f=y=$[1]),k=M?"l":"L";else if("z"===i)w(3),c=m,f=y;else if("c"===i||"s"===i)w(2,...$),[g,v,c,f]=$.slice(2);else if("q"===i||"t"===i){let[e,t,i,r]=$;w(2,c+2/3*(e-c),f+2/3*(t-f),i+2/3*(e-i),r+2/3*(t-r),i,r),[g,v,c,f]=$}else"a"===i?(s(c,f,$,n.segs),c=$[5],f=$[6]):("h"===i&&$.push(f),"v"===i&&$.unshift(c),w(1,c=$[0],f=$[1]));b="m"===i?"l":i,d()}return a.length||h("",0),a}function s(e,t,i,r){let[,,s,n,a,o,l]=i,h=Math.abs(i[0]),d=Math.abs(i[1]);if(e===o&&t===l||!h||!d)return void((e!==o||t!==l)&&r.push(1,o,l));let u=s*Math.PI/180,p=Math.cos(u),c=Math.sin(u),f=(e-o)/2,m=(t-l)/2,y=p*f+c*m,g=-c*f+p*m,v=y*y/(h*h)+g*g/(d*d);v>1&&(h*=Math.sqrt(v),d*=Math.sqrt(v));let b=(n===a?-1:1)*Math.sqrt(Math.max(0,(h*h*d*d-h*h*g*g-d*d*y*y)/(h*h*g*g+d*d*y*y))),k=b*h*g/d,w=-b*d*y/h,M=p*k-c*w+(e+o)/2,x=c*k+p*w+(t+l)/2,$=(e,t,i,r)=>Math.atan2(e*r-t*i,e*i+t*r),A=$(1,0,(y-k)/h,(g-w)/d),E=$((y-k)/h,(g-w)/d,(-y-k)/h,(-g-w)/d);!a&&E>0&&(E-=2*Math.PI),a&&E<0&&(E+=2*Math.PI);let O=Math.ceil(Math.abs(E)/(Math.PI/2)-1e-9),j=E/O,S=4/3*Math.tan(j/4),P=e=>{let t=Math.cos(e),i=Math.sin(e);return[M+h*t*p-d*i*c,x+h*t*c+d*i*p,-h*i*p-d*t*c,-h*i*c+d*t*p]};for(let e=0;e<O;e++){let t=P(A+e*j),i=P(A+(e+1)*j),s=e===O-1?[o,l]:[i[0],i[1]];r.push(2,t[0]+S*t[2],t[1]+S*t[3],i[0]-S*i[2],i[1]-S*i[3],s[0],s[1])}}var n=e=>String(Math.round(1e4*e)/1e4||0);function a(e){let t="";for(let i of e){let e=i.segs;for(let i=0;i<e.length;){let r=e[i++],s=2===r?6:3===r?0:2;t+="MLCZ"[r]+e.slice(i,i+s).map(n).join(" "),i+=s}}return t}function o(e,t=12,i=1/0){let r=[];for(let s of e){let e=s.segs,n=[],a=!1,o=0,l=0,h=0,d=0;for(let s=0;s<e.length;){let u=e[s++];if(a&&0!==u&&(r.push({pts:n,closed:a}),n=[o,l],a=!1),0===u)n.length&&r.push({pts:n,closed:a}),n=[h=o=e[s++],d=l=e[s++]],a=!1;else if(1===u)n.push(o=e[s++],l=e[s++]);else if(2===u){let[r,a,h,d,u,p]=e.slice(s,s+=6),c=Math.min(1e4,Math.max(t,Math.ceil(Math.sqrt(.75*Math.max(Math.hypot(o-2*r+h,l-2*a+d),Math.hypot(r-2*h+u,a-2*d+p))/i))||0));for(let e=1;e<=c;e++){let t=e/c,i=1-t;n.push(i*i*i*o+3*i*i*t*r+3*i*t*t*h+t*t*t*u,i*i*i*l+3*i*i*t*a+3*i*t*t*d+t*t*t*p)}o=u,l=p}else a=!0,o=h,l=d}n.length&&r.push({pts:n,closed:a})}return r}function l(e,t=1e-4){let i=(e,t)=>Math.hypot(e[0]-t[0],e[1]-t[1]),s=(e,t)=>[(e[0]+t[0])/2,(e[1]+t[1])/2],n=(e,r,a,o,l)=>{let h=i(e,o),d=i(e,r)+i(r,a)+i(a,o);if(20===l||d-h<=t)return(d+h)/2;let u=s(e,r),p=s(r,a),c=s(a,o),f=s(u,p),m=s(p,c),y=s(f,m);return n(e,u,f,y,l+1)+n(y,m,c,o,l+1)},a=0;for(let t of r(e)){let e=[0,0],r=e;for(let s=0;s<t.segs.length;){let o=t.segs[s++];if(3===o){a+=i(e,r),e=r;continue}let l=t.segs.slice(s+(2===o?4:0),s+(2===o?6:2));0===o?r=l:a+=2===o?n(e,t.segs.slice(s,s+2),t.segs.slice(s+2,s+4),l,0):i(e,l),e=l,s+=2===o?6:2}}return a}var h=(e,t,i)=>Math.min(i,Math.max(t,e)),d=[1,0,0,1,0,0],u=(e,t)=>[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]],p=(e,t,i)=>[e[0]*t+e[2]*i+e[4],e[1]*t+e[3]*i+e[5]];function c(e,t,i){let r=1/0;for(let{pts:s,closed:n}of e){let e=s.length,a=n?e:e-2;2===e&&(r=Math.min(r,Math.hypot(t-s[0],i-s[1])));for(let n=0;n<a;n+=2){let a=s[n],o=s[n+1],l=s[(n+2)%e]-a,h=s[(n+3)%e]-o,d=l*l+h*h,u=d?Math.max(0,Math.min(1,((t-a)*l+(i-o)*h)/d)):0;r=Math.min(r,Math.hypot(t-a-u*l,i-o-u*h))}}return r}function f(e){let t=/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(e);if(!t)return null;let i=t[1];return 3===i.length&&(i=i.replace(/./g,"$&$&")),6===i.length&&(i+="ff"),[0,2,4,6].map(e=>parseInt(i.slice(e,e+2),16))}function m(e){return"#"+e.slice(0,255===e[3]?3:4).map(e=>e.toString(16).padStart(2,"0")).join("")}var y=class{list=[];err(e,t,i,r,s="error"){let n={code:e,severity:s,pointer:t,message:i||e};r&&(n.hint=r),this.list.push(n)}warn(e,t,i){this.err(e,t,i,!1,"warning")}get failed(){return this.list.some(e=>"error"===e.severity)}},g=(e,t)=>e+"/"+String(t).replace(/~/g,"~0").replace(/\//g,"~1"),v=(e,t,i)=>({type:"number",def:e,min:t,max:i}),b={x:v(0),y:v(0),rotate:v(0),scale:v(1),scaleX:v(1),scaleY:v(1),opacity:v(1,0,1),visible:{type:"bool",def:!0}},k=["group","path","circle","rect","arc"],w=["path","circle","rect","arc"],M={group:{},path:{},circle:{r:v(void 0,0)},rect:{w:{...v(void 0,0),markup:"width"},h:{...v(void 0,0),markup:"height"},rx:v(0,0)},arc:{r:v(void 0,0),from:v(),to:v()}},x={fill:{color:{type:"color",markup:"fill"}},stroke:{color:{type:"color",markup:"stroke"},width:{...v(1,0),markup:"stroke-width"},trimStart:v(0,0,1),trimEnd:v(1,0,1),trimOffset:v(0)}},$=/^[a-z][a-zA-Z0-9-]*$/,A=/^[a-z0-9]+(-[a-z0-9]+)*$/,E=(e,t)=>({k:"str",re:e,of:t}),O=(e={})=>({k:"num",...e}),j={k:"bool"},S=(e,t)=>({k:"arr",of:e,min:t}),P=(e,t=e.length)=>({k:"tup",of:e,min:t}),z=(e,t,i)=>({k:"obj",p:e,req:t,reserved:i}),C=(e,t)=>({k:"map",of:e,key:t}),I=(...e)=>({k:"alt",of:e}),q=P([O(),O()]),N=(e,t)=>({...e,markup:t}),R=I(E($),S(E($),1)),F=e=>({..."bool"===e.type?j:"color"===e.type||"path"===e.type?E():O({min:e.min,max:e.max}),markup:e.markup,feature:e.feature}),L=z({color:F(x.fill.color),rule:N(E(void 0,["nonzero","evenodd"]),"fill-rule")},["color"]),B=z({color:F(x.stroke.color),width:F(x.stroke.width),cap:N(E(void 0,["butt","round","square"]),"stroke-linecap"),join:N(E(void 0,["miter","round","bevel"]),"stroke-linejoin"),trimStart:F(x.stroke.trimStart),trimEnd:F(x.stroke.trimEnd),trimOffset:O()},["color"]),T={group:{children:S({k:"node"})},path:{glyph:E($),subpaths:S(O({min:0,int:!0}),1),d:E()},circle:{center:N(q,"cx cy")},rect:{x0:O(),y0:O()},arc:{center:N(q,"cx cy")}},H={},V=new Map;function D(e){let t=V.get(e);if(!t){let i={id:E($),type:E(void 0,k),pivot:q};for(let[t,r]of Object.entries({...b,...M[e]}))i[t]=F(r);Object.assign(i,T[e]),w.includes(e)&&Object.assign(i,{fill:L,stroke:B,knockout:O({min:0})});let r=["id","type",...Object.keys(M[e]).filter(t=>void 0===M[e][t].def)];("circle"===e||"arc"===e)&&r.push("center"),"rect"===e&&r.push("x0","y0"),t={k:"obj",p:i,req:r},V.set(e,t)}return t}var Z=I(O(),j,E(),S({k:"any"})),W=z({when:E(),to:E($),blend:O({min:0}),ease:E(),interruptible:j},["when","to"]),Y=z({pose:C(Z),play:E($),speed:O({gt:0}),emit:E($),on:S(W)},void 0),J=z({initial:E($),states:C(Y,$)},["initial","states"],{mode:""}),U=z({duration:O({gt:0}),loop:E(void 0,["once","loop","pingpong"]),reducedMotion:E(void 0,["play","end","skip"]),tracks:C(S(P([O(),Z,E()],2))),events:S(P([O(),E($)]))},["duration","tracks"],{colorSpace:""}),X=z({$schema:E(),anima:E(),name:E(A),title:E(),grid:O({gt:0}),viewBox:P([O(),O(),O({gt:0}),O({gt:0})]),requires:S(E()),meta:{k:"any"},colors:C(E(),$),glyphs:C(z({source:E(),pick:E(),sha256:E(/^[0-9a-f]{64}$/),d:E()},["d"]),$),a11y:z({role:E(void 0,["button","switch","img"]),label:E(),activate:E($),pressed:E($),held:E($)}),inputs:C(z({type:N(E(void 0,["bool","number","trigger"]),"element name"),default:I(O(),j),min:O(),max:O(),buffer:O({min:0})},["type"]),$),hit:z({circle:P([O(),O(),O({gt:0})]),rect:P([O(),O(),O({gt:0}),O({gt:0})])}),nodes:S({k:"node"},1),timelines:C(U,$),machine:z({layers:C(J,$)},["layers"]),listeners:S(z({on:E(void 0,["enter","leave","down","up","click","move"]),target:E($),hitPadding:O({min:0}),fire:R,set:C(I(O(),j,{...E(),feature:"bind"}),$),toggle:R,emit:E($)},["on"]))},["anima","name","grid","nodes"]),G=[M,T,...Object.values(M),...Object.values(T),...Object.values(x),X.p,J.p,X.p.listeners.of.p,U.p,Y.p,W.p,L.p,B.p].map(e=>[e,{...e}]),K=k.length,Q=w.length,_="((?:\\$[a-zA-Z][a-zA-Z0-9-]*:)?\\$?[a-zA-Z][a-zA-Z0-9-]*(?:\\.[a-zA-Z0-9-]+)*)",ee="(-?(?:\\d+\\.?\\d*|\\.\\d+)(?:[eE][-+]?\\d+)?)",te=new RegExp(`^(!?)\\s*${_}$`),ie=new RegExp(`^${_}\\s*(==|!=|<=|>=|<|>)\\s*${ee}$`),re=new RegExp(`^@after\\(\\s*${ee}\\s*\\)$`);function se(e){let t=[""];for(let i of e.split(/("(?:[^"\\]|\\.)*"|&&)/))"&&"===i?t.push(""):t[t.length-1]+=i;let i=[];for(let e of t){let t,r=e.trim();if("@end"===r)i.push({k:"end"});else if(t=re.exec(r)){let e=Number(t[1]);if(e<0)return"";i.push({k:"after",s:e})}else if(t=te.exec(r))i.push({k:"is",name:t[2],not:"!"===t[1]});else if(t=ie.exec(r))i.push({k:"cmp",name:t[1],op:t[2],value:Number(t[3])});else{if(!(t=/^(.+?)\s*(==|!=|<=|>=|<|>)\s*(.+)$/.exec(r)))return"";i.push({k:"expr",a:t[1],op:t[2],b:t[3]})}}return i}function ne(e,t,i){return{"==":e===t,"!=":e!==t,"<":e<t,"<=":e<=t,">":e>t,">=":e>=t}[i]}function ae(e,t,i,r){let s,n=/^([a-z][a-zA-Z0-9-]*)\(\s*("(?:[^"\\]|\\.)*")\s*\)$/.exec(t.b.trim()),a=e.guardLiterals,o=n&&a&&Object.hasOwn(a,n[1])&&a[n[1]];if(!o)return!1;try{s=o(JSON.parse(n[2]),t.a.trim())}catch{}return(void 0===s||!["==","!="].includes(t.op))&&r.err("guard-literal",i,!1,!1),t.test=e=>ne(e.get(t.a.trim()),s,t.op),!0}var oe=(e,t)=>e>=t-1e-9,le=(e,t)=>Math.abs(e-t)<=1e-9?t:e;Symbol("anima event fraction");var he=(e,t)=>"function"==typeof e?e(t):e;function de(e,t,i){if(e.sample)return e.sample(t,i);let r=e.times,s=r.length-1;if(!oe(t,r[0]))return he(e.values[0],i);if(oe(t,r[s]))return he(e.values[s],i);let n=0;for(;oe(t,r[n+1]);)n++;t=le(t,r[n]);let a=he(e.values[n],i),o=he(e.values[n+1],i);if("boolean"==typeof a)return a;let l=e.eases[n]((t-r[n])/(r[n+1]-r[n]));return ue(a,o,l)}var ue=(e,t,i)=>"string"==typeof e?[...fe.values()].map(r=>r.interpolate?.(e,t,i)).find(e=>void 0!==e)??e:"number"==typeof e?e+(t-e)*i:"boolean"==typeof e?e||t:2===e.length?e.map((e,r)=>e+(t[r]-e)*i):((e,t,i)=>e.map((e,r)=>h(Math.floor(e+(t[r]-e)*i+.5),0,255)))(e,t,i);function pe(e,t,i,r,s,n,a,o){let l=Math.max(r,s),h=Math.min(1e4,Math.max(2,Math.ceil(Math.abs(a-n)/6),l>o?Math.ceil(Math.abs(a-n)*Math.PI/180/(2*Math.acos(1-o/l))):0));for(let o=0;o<=h;o++){let l=(n+(a-n)*o/h)*Math.PI/180;e.push(t+r*Math.cos(l),i+s*Math.sin(l))}return e}var ce=class{seed;model;playbackPolicy;onChange;nested;addrs;#e;#t;#i;#r;#s=new Map;#n=[];#a;#o=[];#l=!1;#h=new Set;drawVersions;drawRevision=0;reducedMotion=!1;#d=!1;time=0;#u;#p=null;#c=[0,0];#f=0;#m=new Map;constructor(e,t={}){this.seed=t.seed,this.model=e,this.drawVersions=e.nodes.map(()=>0),this.#d=this.reducedMotion=!!t.reducedMotion,this.addrs=[...e.addrs.keys()];let i=this.#e=new Map(this.addrs.map((e,t)=>[e,t]));this.#t=this.addrs.map(t=>e.addrs.get(t).rest),this.#r=e.inputScope?.(this)??new Map;for(let t of e.inputs.values())"trigger"!==t.type&&this.#r.set(t.name,t.def);this.#a=e.layers.map(t=>({m:t,w:t.states.map(t=>new Map(t.pose?[...t.pose].map(([e,t])=>[i.get(e),()=>t]):void 0!==t.play?e.timelines[t.play].tracks.map(e=>[i.get(e.addr),t=>de(e,t,this)]):[])),state:t.initial,prev:-1,time:0,fade:null,frozen:-1})),this.playbackPolicy=e.playback?.(this),this.#a.forEach(e=>{this.#y(e,e.state,0,null,0,null,this.#o),e.prev=-1}),this.#u=e.listeners.map(()=>!1),this.#i=this.#t.slice();for(let e of this.#a)this.#g(e,this.#i);this.#i.forEach((e,t)=>{let i=this.model.addrs.get(this.addrs[t]).prop;"number"==typeof e&&(this.#i[t]=h(e,i.min??-1/0,i.max??1/0))}),this.nested=e.nesting?.(this)}#v(e,t){let i=this.model.inputs.get(e);if(!i||!t.includes(i.type))throw new Error("anima: "+e);return i}set(e,t){let i=this.#v(e,["bool","number","string","color"]);if(i.readonly)throw new Error("anima: "+e);if(!(i.accepts?.(t)??("bool"===i.type?"boolean"==typeof t:"number"==typeof t&&Number.isFinite(t))))throw new Error("anima: "+e);this.#n.push(["set",e,t])}fire(e){this.#v(e,["trigger"]),this.#n.push(["fire",this.model.inputs.get(e).name])}toggle(e){this.#v(e,["bool"]),this.#n.push(["toggle",e])}get(e){return this.nested?.get(e)??this.#r.get(e)}get busy(){return this.#d!==this.reducedMotion||this.#n.length>0||!!this.playbackPolicy?.busy||!this.#l}states(){let e={};for(let t of this.#a)e[t.m.name]=t.m.states[t.state].name;return Object.assign(e,this.nested?.states(),this.playbackPolicy?.states())}inspect(){return this.#a.map(e=>{let t=e.m.states[e.state],i=void 0===t.play?void 0:this.model.timelines[t.play];return{layer:e.m.name,state:t.name,prev:e.prev<0?null:e.m.states[e.prev].name,blend:e.fade?Math.min(1,e.fade.t/e.fade.dur):null,locked:!!e.fade?.lock,timeline:i?.name??null,time:this.#b(e)}}).concat(this.nested?.inspect()??[],this.playbackPolicy?.inspect()??[])}value(e){let t=this.#e.get(e);if(void 0===t)return this.nested?.values()[e];let i=this.#i[t];return Array.isArray(i)&&4===i.length?m(i):i}values(){let e={};for(let t of this.addrs)e[t]=this.value(t);return Object.assign(e,this.nested?.values())}writes(){let e=new Set;for(let t of this.#a){for(let i of t.w[t.state].keys())e.add(i);for(let i of t.fade?.from.keys()??[])e.add(i)}return[...new Set([...e].map(e=>this.addrs[e]).concat([...this.model.bindings?.keys()??[]]))]}takeDirty(){let e=[...this.#h];return this.#h.clear(),e}prop(e,t){let i=this.model.nodes[e],r=this.#e.get(i.id+"."+t);return void 0!==r?this.#i[r]:t.split(".").reduce((e,t)=>e?.[t],i.raw)}num(e,t,i){let r=this.prop(e,t);return"number"==typeof r?r:i}local(e){let t=this.num(e,"scale",1),i=this.playbackPolicy?.pivot(this,e)??this.model.nodes[e].raw.pivot??[0,0];return((e,t,i,r,s,n,a)=>{let o=s*Math.PI/180,l=Math.cos(o),h=Math.sin(o),d=l*n,u=h*n,p=-h*a,c=l*a;return[d,u,p,c,e+i-d*i-p*r,t+r-u*i-c*r]})(this.num(e,"x",0),this.num(e,"y",0),i[0],i[1],this.num(e,"rotate",0),t*this.num(e,"scaleX",1),t*this.num(e,"scaleY",1))}hitFrame;world(e){let t=d;for(let i=e;i>=0;i=this.model.nodes[i].parent)t=u(this.local(i),t);return t}visible(e){for(let t=e;t>=0;t=this.model.nodes[t].parent)if(!1===this.prop(t,"visible"))return!1;return!0}pointer(e,t=0,i=0){this.nested?.pointer(e,t,i);let r=this.model.listeners,s=r.map(r=>"leave"!==e&&this.hits(r,t,i)),n=(e,t)=>r.forEach((i,r)=>{i.on===e&&t(r)&&this.act(i)});n("leave",e=>this.#u[e]&&!s[e]),n("enter",e=>!this.#u[e]&&s[e]),n(e,e=>s[e]),("move"===e||"up"===e)&&(this.#f=Math.max(this.#f,Math.hypot(t-this.#c[0],i-this.#c[1])));let a=this.#p;"up"===e&&a&&this.#f<.5&&n("click",e=>s[e]&&a[e]),"down"===e?(this.#p=s,this.#c=[t,i],this.#f=0):"move"!==e&&(this.#p=null),this.#u=s}act(e){this.#n.push(e)}hits(e,t,i){if(e.target<0){let r=this.model.doc.hit;if(r?.circle)return Math.hypot(t-r.circle[0],i-r.circle[1])<=r.circle[2]+e.pad;let[s,n,a,o]=r?.rect??this.model.viewBox;return t>=s-e.pad&&i>=n-e.pad&&t<=s+a+e.pad&&i<=n+o+e.pad}let r=s=>{let n=this.model.nodes[s];if(!1===this.prop(s,"visible"))return!1;if("group"===n.type)return n.children.some(r);let a=this.nested?.hits(s,t,i);if(void 0!==a)return a;let o=this.hitFrame?.(),l=((e,t,i=e.hitFrame?.())=>{if(!i)return e.world(t);let r=d;for(let s=t;s>=0;s=e.model.nodes[s].parent)r=u(i.nodes[s].transform,r);return r})(this,s,o),h=(e=>{let t=e[0]*e[3]-e[1]*e[2];return t?[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[3]*e[4])/t,(e[1]*e[4]-e[0]*e[5])/t]:null})(l);if(!h)return!1;let f,[m,y]=p(h,t,i),g=(Math.hypot(l[0]+l[3],l[1]-l[2])+Math.hypot(l[0]-l[3],l[1]+l[2]))/2,v=this.#k(s,o?.nodes[s]?.geometry,.05/g),b=n.raw,k=b.paints??[b],w=(e,t)=>k[e][t]&&!1!==this.prop(s,(b.paints?`paints.${e}.`:"")+t+".visible"),M=0;k.forEach((e,t)=>{w(t,"stroke")&&(M=Math.max(M,this.num(s,(b.paints?`paints.${t}.`:"")+"stroke.width",1)/2))});for(let e of fe.values())if(f=e.fillContains?.(this,s,v,m,y),void 0!==f)break;if(f??k.some((e,t)=>w(t,"fill")&&((e,t,i,r)=>{let s=0;for(let r of e){let e=r.length;for(let n=0;n<e;n+=2){let a=r[n],o=r[n+1],l=r[(n+3)%e];(o<=i?l>i:l<=i)&&a+(i-o)/(l-o)*(r[(n+2)%e]-a)>t&&(s+=l>o?1:-1)}}return r?s%2!=0:0!==s})(v.map(e=>e.pts),m,y,"evenodd"===e.fill.rule)))return!0;let x=k.some((e,t)=>w(t,"fill")),$=k.some((e,t)=>w(t,"stroke")),A=!b.paints&&$&&this.#w(s),E=A?((e,t,i)=>{let r=[];if(i<=0)return r;let s=e.map(({pts:e,closed:t})=>{let i=t?[...e,e[0],e[1]]:e,r=[0];for(let e=2;e<i.length;e+=2)r.push(r[r.length-1]+Math.hypot(i[e]-i[e-2],i[e+1]-i[e-1]));return{p:i,at:r}}),n=s.reduce((e,t)=>e+t.at[t.at.length-1],0),a=(t%1+1)%1*n,o=a+i*n;for(let{p:e,at:t}of s){let i=(i,s)=>{let n=[];for(let r=0;r<t.length-1;r++){let a=t[r],o=t[r+1];if(o<i||a>s)continue;let l=e=>o>a?(Math.min(Math.max(e,a),o)-a)/(o-a):0;for(let t of n.length?[l(s)]:[l(i),l(s)])n.push(e[2*r]+(e[2*r+2]-e[2*r])*t,e[2*r+1]+(e[2*r+3]-e[2*r+1])*t)}n.length&&r.push({pts:n,closed:!1})};i(a,o),o>n&&i(0,o-n)}return r})(v,A[0],A[1]):v;if($&&c(E,m,y)<=M)return!0;let O=(e,r)=>c(e.map(e=>{let t=[];for(let i=0;i<e.pts.length;i+=2)t.push(...p(l,e.pts[i],e.pts[i+1]));return{pts:t,closed:r||e.closed}}),t,i);return e.pad>0&&(x&&O(v,!0)<=e.pad||$&&O(E)<=e.pad+M*Math.abs(l[0]*l[3]-l[1]*l[2])/g)};return this.visible(e.target)&&r(e.target)}#w(e){let t=(t,i)=>this.num(e,"stroke."+t,i),i=Math.min(1,t("trimEnd",1)-t("trimStart",0));return i<1?[t("trimStart",0)+t("trimOffset",0),i]:void 0}#k(e,t,i){let r=this.model.nodes[e],s=r.raw;if((void 0!==t?.width||"rect"===r.type)&&!(t?t.d:s.corners)){let[r,n,a,o]=[t?.x??s.x0,t?.y??s.y0,t?.width??this.num(e,"w",0),t?.height??this.num(e,"h",0)],l=t?t.rx??0:this.num(e,"rx",0),[h,d]=[Math.min(l,a/2),Math.min(l,o/2)];if(h>0&&d>0){let e=[r+h,n];return pe(e,r+a-h,n+d,h,d,-90,0,i),pe(e,r+a-h,n+o-d,h,d,0,90,i),pe(e,r+h,n+o-d,h,d,90,180,i),[{pts:pe(e,r+h,n+d,h,d,180,270,i),closed:!0}]}return[{pts:[r,n,r+a,n,r+a,n+o,r,n+o],closed:!0}]}for(let t of fe.values()){let i=t.outline?.(this,e);if(i)return i}if("path"===r.type){let t=this.#m.get(e);return t?.[0]!==i&&this.#m.set(e,t=[i,o(r.geom,12,i)]),t[1]}let[n,a]=s.center,l=this.num(e,"r",0),h="circle"===r.type?0:this.num(e,"from",0);return[{pts:pe([],n,a,l,l,h,"circle"===r.type?360:h+Math.min(360,Math.max(0,this.num(e,"to",0)-h)),i),closed:"circle"===r.type}]}#M(e,t,i,r){if(!this.nested?.input(e,t,i))if("fire"===e)t=this.model.inputs.get(t).name,this.model.signal?.(this,t),this.#s.has(t)||this.#s.set(t,0);else if("toggle"===e)this.#r.set(t,!this.#r.get(t));else if("emit"===e)r.push({name:t,layer:null,time:0});else{let e=this.model.inputs.get(t);this.#r.set(t,"number"==typeof i?h(i,e.min,e.max):i)}}#x(e,t){if(!e)return;let i=e.set.map(([e,t])=>[e,"function"==typeof t?t(this.#r):t]);for(let i of e.fire)this.#M("fire",i,void 0,t);for(let[e,r]of i)this.#M("set",e,r,t);for(let i of e.toggle)this.#M("toggle",i,void 0,t);e.emit&&this.#M("emit",e.emit,void 0,t)}step(e,t){if(!(e>=0&&e<1/0))throw new Error("");let i=this.#o;this.#o=[],this.time+=e;for(let e of this.#n)Array.isArray(e)?this.#M(e[0],e[1],e[2],i):this.#x(e,i);if(this.#n=[],this.model.prepareInputs?.(this,this.#r,e),this.#d!==this.reducedMotion){this.#d=this.reducedMotion;for(let e of this.#a){let t=e.m.states[e.state];if(this.reducedMotion&&e.fade&&(e.fade=null,this.model.eventSignal?.(i,"transition-end",e.m.name,t.name,this)),void 0===t.play)continue;let r=this.model.timelines[t.play];if(this.reducedMotion&&"play"!==r.reduced&&e.frozen<0){let s=this.#b(e),n=[];if(e.frozen=this.playbackPolicy?this.playbackPolicy.reduce(r,t.speed,"end"===r.reduced,e.m.name,n):"end"===r.reduced?r.duration:0,!this.playbackPolicy&&"end"===r.reduced)for(let[t,i]of r.events)n.push({name:i,layer:e.m.name,time:t});e.frozen!==s&&i.push(...n.filter(t=>e.frozen>=s?!oe(s,t.time):!oe(t.time,s)))}else!this.reducedMotion&&e.frozen>=0&&"once"!==r.loop&&(this.playbackPolicy?this.playbackPolicy.resume(e,e.frozen):e.time=e.frozen/t.speed,e.frozen=-1)}}let r=this.#a.map(e=>e.time);for(let t of this.#a)this.playbackPolicy?.prepare(t,t.m.states[t.state],e,e=>!t.fade?.lock&&this.#$(e,t,t.m.states[t.state],new Set,!0)),t.time+=e,t.fade&&oe(t.fade.t+=e,t.fade.dur)&&(t.fade=null,this.model.eventSignal?.(i,"transition-end",t.m.name,t.m.states[t.state].name,this));let s=new Set,n=t?this.addrs.map((e,i)=>t(e)??this.#t[i]):this.#t.slice();this.#a.forEach((e,t)=>{let a=e.m.states[e.state],o=new Set,l=e.fade?.lock?void 0:a.on.find(t=>this.#$(t,e,a,o));void 0!==a.play&&e.frozen<0&&this.#A(e,a,r[t],e.time,!1,i);for(let t=0;;t++){let r=e.m.states[e.state],a=0===t?l:e.fade?.lock?void 0:r.on.find(t=>this.#$(t,e,r,o));if(!a)break;if(16===t){i.push({name:"@limit",layer:e.m.name,time:0});break}let h=n.slice();this.#g(e,h);let d=new Set([...e.fade?.from.keys()??[],...e.w[e.state].keys()]),u=new Map([...d].map(e=>[e,h[e]]));for(let e of a.triggers)o.add(e),s.add(e);this.#y(e,a.to,this.#E(a,e,r),u,a.blend,a.ease,i,!a.interruptible,a)}this.#g(e,n)}),this.model.bindings?.forEach((e,t)=>{n[this.#e.get(t)]=e(this.#r)}),this.model.resolveBindings?.(this,n,this.#r,e);let a=this.playbackPolicy?.compose(e,n,i)??!0;n.forEach((e,t)=>{let i=this.model.addrs.get(this.addrs[t]);if("number"==typeof e){let r=i.prop;n[t]=e=h(e,r.min??-1/0,r.max??1/0)}let r=this.#i[t];(Array.isArray(e)&&Array.isArray(r)?e.some((e,t)=>e!==r[t]):e!==r)&&this.#h.add(t),this.drawVersions[i.node]=++this.drawRevision}),this.#i=n;for(let[t,i]of this.#s){let r=this.model.inputs.get(t).buffer;!s.has(t)&&r&&oe(r,i+e)?this.#s.set(t,i+e):this.#s.delete(t)}this.model.reportEvents?.(this,i);let o=this.nested?.step(e);return o&&i.push(...o.events),this.model.afterStep?.(this),this.#l=a&&!this.#n.length&&(o?.settled??!0)&&!this.#s.size&&this.#a.every(e=>this.#O(e)),{events:i,settled:this.#l}}#O(e){if(e.fade)return!1;let t=e.m.states[e.state];if(void 0!==t.play&&e.frozen<0){let i=this.model.timelines[t.play];if(!(this.playbackPolicy?.rest(e,t)||"once"===i.loop&&this.#j(e,t)))return!1}return!t.on.some(t=>t.terms.some(t=>"after"===t.k&&!oe(e.time,t.s)))}#j(e,t){return void 0!==t.play&&(e.frozen>=0||(this.playbackPolicy?this.playbackPolicy.finished(this.model.timelines[t.play],e.time,e):oe(e.time*t.speed,this.model.timelines[t.play].duration)))}#$(e,t,i,r,s=!1){return e.terms.every(e=>"expr"===e.k?e.test(this.#r):"end"===e.k?this.#j(t,i):"after"===e.k?oe(t.time,e.s):"cmp"===e.k?ne(this.get(e.name),e.value,e.op):"trigger"===this.model.inputs.get(e.name).type?this.#s.has(this.model.inputs.get(e.name).name)&&!r.has(this.model.inputs.get(e.name).name):!this.get(e.name)===e.not)&&(s||(this.playbackPolicy?.gate(e,i,t.time,t)??!0))}#E(e,t,i){let r=0;for(let s of e.terms)"after"===s.k&&(r=Math.max(r,t.time-s.s)),"end"===s.k&&(r=Math.max(r,t.frozen>=0?t.time:t.time-(this.playbackPolicy?.duration(this.model.timelines[i.play],i.speed,t)??this.model.timelines[i.play].duration/i.speed)));let s=this.playbackPolicy?.carry(e,i,t.time,t);return void 0===s?r:e.terms.some(e=>"after"===e.k||"end"===e.k)?Math.min(r,s):s}#y(e,t,i,r,s,n,a,o=!1,l){let h=e.m.states[t],d=l&&(this.playbackPolicy?.transition?.(l)??l);if(l&&(this.#x(e.m.states[e.state].exit,a),this.#x(l.actions,a),this.model.eventSignal?.(a,"state-end",e.m.name,e.m.states[e.state].name,this,d),this.model.eventSignal?.(a,"transition-start",e.m.name,h.name,this,d)),this.playbackPolicy?.enter(e,l?e.m.states[e.state]:void 0,h,l,i),e.prev=e.state,e.state=t,e.time=i,e.frozen=-1,this.reducedMotion&&(s=0),e.fade=r&&s>0&&!oe(i,s)?{lock:o,from:r,dur:s,ease:n,t:i}:null,l&&!e.fade&&this.model.eventSignal?.(a,"transition-end",e.m.name,h.name,this,d),this.#x(h.entry,a),h.emit&&a.push({name:h.emit,layer:e.m.name,time:0}),void 0===h.play)return;let u=this.model.timelines[h.play];if(this.reducedMotion&&"play"!==u.reduced){if(this.playbackPolicy)e.frozen=this.playbackPolicy.reduce(u,h.speed,"end"===u.reduced,e.m.name,a);else if(e.frozen="end"===u.reduced?u.duration:0,"end"===u.reduced)for(let[t,i]of u.events)a.push({name:i,layer:e.m.name,time:t})}else this.#A(e,h,0,i,!0,a)}#A(e,t,i,r,s,n,a){let o=this.model.timelines[t.play];if(!a){let s=this.model.timelineMarkers?.(o);s&&this.#A(e,t,i,r,!1,n,s)}if(a??=o.events,this.playbackPolicy)return this.playbackPolicy.events(o,i,r,s,e.m.name,n,t.speed,e,a);if(i*=t.speed,r*=t.speed,!a.length||r<i)return;let l=o.duration,h=[],d=e=>(s?oe(e,i):!oe(i,e))&&oe(r,e),u="once"===o.loop,p="loop"===o.loop,c=p?l:2*l;a.forEach(([e,t])=>{let s=u?0:Math.max(0,Math.floor(i/c)-1),n=u?0:Math.min(s+1e4,Math.floor(r/c)+1),a=new Set;for(let i=0,r=s;i<=n-s;r=s+ ++i)for(let i of p||u||0===e||e===l?[e+r*c]:[e+2*r*l,2*(r+1)*l-e])d(i)&&!a.has(i)&&(a.add(i),h.push([i,e,t]))}),h.sort((e,t)=>e[0]-t[0]);for(let[t,i,r]of h)n.push({name:r,layer:e.m.name,time:i})}#b(e){let t=e.m.states[e.state];return void 0===t.play?null:e.frozen>=0?e.frozen:this.playbackPolicy?.local(this.model.timelines[t.play],e.time,t.speed,e)??((e,t)=>{let i=e.duration;return"once"===e.loop?Math.min(le(le(t,0),i),i):((e,t,i)=>{let r=((e,t)=>{let i=Math.round(e/t);return le(e,i*t)===i*t?i:Math.floor(e/t)})(e,t),s=le(e-r*t,0);return i&&1===Math.abs(r%2)?t-s:s})(t,i,"pingpong"===e.loop)})(this.model.timelines[t.play],e.time*t.speed)}#g(e,t){let i=e.w[e.state],r=this.#b(e)??0,s=e.fade;if(!s){for(let[e,s]of i)t[e]=s(r);return}let n=s.ease(Math.min(1,s.t/s.dur)),a=new Map([...i].map(([e,t])=>[e,t(r)]));for(let e of new Set([...s.from.keys(),...a.keys()]))t[e]=this.model.addrs.get(this.addrs[e]).prop.discrete?a.get(e)??t[e]:ue(s.from.get(e)??t[e],a.get(e)??t[e],n)}},fe=new Map,me=["knockout"],ye=new Map;function ge(e,t,i){let r=i;if(t.node&&!k.includes(r)&&(k.push(r),M[r]={},T[r]={},t.node.painted&&w.push(r)),k.includes(r))for(let[e,i]of Object.entries(t.shapes))t.props?.[e]||(T[r][e]=i);if(t.props)for(let[r,s]of Object.entries(t.props))(x[i]??M[i])[r]={...s,feature:e.name};let s="fill"===i?L:"stroke"===i?B:"timeline"===i?U:"state"===i?Y:"transition"===i?W:"document"===i?X:"layer"===i?X.p.machine.p.layers.of:"listener"===i?X.p.listeners.of:D(i);t.node&&(s.p.type={...s.p.type,feature:e.name});for(let[i,r]of Object.entries(t.shapes))s.p[i]={...r,feature:r.feature??e.name};Object.assign(H,t.elements),t.required&&(s.req=t.required)}var ve=new WeakMap;function be(e){let t=e.draw;if(!t){let i=[];t={nodes:e.nodes.map((e,t)=>(e.parent<0&&i.push(t),{node:t,kind:"arc"===e.type?"path":e.type,parent:e.parent,children:e.children,knockout:e.raw.knockout})),roots:i,resources:[]},e.drawModules=[...fe.values()].filter(t=>e.doc.requires?.includes(t.name)||e.doc.requires?.includes(t.name.split("@")[0]));for(let i of e.drawModules)i.draw?.tree?.(e,t);e.draw=t}return t}var ke=(e,t)=>{if(Array.isArray(t))return m(t);let i=t;return Object.hasOwn(e.model.colors,i)?{slot:i,fallback:e.model.colors[i]}:i};function we(e,t,i,r=i,s=e.model.nodes[t].raw[i]){if(!s)return;let n=(i,s)=>e.num(t,r+"."+i,s);return{kind:i,key:r,color:ke(e,e.prop(t,r+".color")),rule:s.rule,visible:!0,..."stroke"===i?{width:n("width",1),cap:s.cap??"round",join:s.join??"round",trim:["trimStart","trimEnd","trimOffset"].some(i=>i in s||void 0!==e.prop(t,r+"."+i))?{start:n("trimStart",0),end:n("trimEnd",1),offset:n("trimOffset",0)}:void 0}:{}}}var Me=e=>String(Math.round(1e5*e)/1e5||0);function xe(e,t){let i=e.model.nodes[t],r=i.raw,s=i=>e.num(t,i,0);if("path"===i.type)return{kind:"path",d:i.d};if("circle"===i.type)return{kind:"circle",cx:r.center[0],cy:r.center[1],r:s("r")};if("rect"===i.type)return{kind:"rect",x:r.x0,y:r.y0,width:s("w"),height:s("h"),rx:s("rx")};if("arc"===i.type){let[e,t]=r.center,i=s("r"),n=s("from"),a=Math.min(360,Math.max(0,s("to")-n)),o=r=>`${Me(e+i*Math.cos(r*Math.PI/180))} ${Me(t+i*Math.sin(r*Math.PI/180))}`,l=`M${o(n)}`;for(let e of a>180?[a/2,a/2]:[a])n+=e,l+=`A${Me(i)} ${Me(i)} 0 0 1 ${o(n)}`;return{kind:"path",d:l}}}function $e(e){let t=e.drawData??={revision:-1,tree:be(e.model),nodes:[],viewBox:e.model.viewBox,changed:[]};if(t.revision===e.drawRevision)return t;t.changed=[];for(let i=0;i<e.model.nodes.length;i++){if((t.tree.nodes[i].dependencies??[i]).every(i=>e.drawVersions[i]<=t.revision))continue;let r={transform:e.local(i),opacity:e.num(i,"opacity",1),visible:!1!==e.prop(i,"visible"),geometry:xe(e,i),paints:[]};for(let t of["fill","stroke"]){let s=we(e,i,t);s&&r.paints.push(s)}for(let s of e.model.drawModules)s.draw?.frame?.(e,i,r,t.tree.nodes[i],t);t.nodes[i]=r,t.changed.push(i)}for(let i of e.model.drawModules)i.draw?.end?.(e,t);return t.revision=e.drawRevision,t}var Ae=e=>"str"===e.k?"string":"num"===e.k?"number":"bool"===e.k?"boolean":"arr"===e.k||"tup"===e.k?"array":"any"===e.k?"any":"object";function Ee(e,t,i,r,s){if(s>96)return r.err("limit-exceeded",i,!1);if(t.feature&&!t.feature.split("|").some(e=>r.features?.includes(e))&&r.err("undeclared-feature",i,!1,!1),"any"===t.k){let t=new Set;for(let n=[[e,s]];n.length;){let[e,s]=n.pop();if(s>96)return r.err("limit-exceeded",i,!1);if(e&&"object"==typeof e&&!t.has(e)){t.add(e);for(let t of Object.values(e))n.push([t,s+1])}}return}let n=(e=>null===e?"null":Array.isArray(e)?"array":typeof e)(e);if("alt"===t.k){let a=t.of.find(e=>Ae(e)===n);return a?Ee(e,a,i,r,s):r.err("type",i,!1)}if(n!==Ae(t)||"number"===n&&!Number.isFinite(e))return r.err("type",i,!1);switch(t.k){case"str":{let s=e;return t.re&&!t.re.test(s)?r.err(t.re===$||t.re===A?"bad-name":"bad-value",i,!1,!1):void(t.of&&!t.of.includes(s)&&r.err("bad-value",i,!1,!1))}case"num":{let s=e;return s<(t.min??-1/0)||s>(t.max??1/0)||s<=(t.gt??-1/0)?r.err("bad-value",i,!1,!1):void(t.int&&!Number.isInteger(s)&&r.err("bad-value",i,!1))}case"arr":case"tup":{let n=e;return t.min&&n.length<t.min||"tup"===t.k&&n.length>t.of.length?r.err("bad-value",i,!1):n.forEach((e,n)=>Ee(e,"arr"===t.k?t.of:t.of[n],i+"/"+n,r,s+1))}case"map":for(let[n,a]of Object.entries(e)){let e=g(i,n);"$comment"!==n&&(t.key&&!t.key.test(n)?r.err("bad-name",e,!1,!1):Ee(a,t.of,e,r,s+1))}return;case"obj":return Oe(e,t,i,r,s);case"node":{let t=e;return"type"in t?"string"==typeof t.type&&k.includes(t.type)?Oe(t,D(t.type),i,r,s):r.err("unknown-node-type",i+"/type",!1,!1):r.err("missing-key",i,!1,!1)}}}function Oe(e,t,i,r,s){for(let[n,a]of Object.entries(e)){let e=g(i,n);"$comment"===n?"string"!=typeof a&&r.err("type",e,!1):Object.hasOwn(t.p,n)?Ee(a,t.p[n],e,r,s+1):t.reserved&&Object.hasOwn(t.reserved,n)?r.err("reserved",e,!1):r.err("unknown-key",e,!1,!1)}for(let s of t.req??[])s in e||r.err("missing-key",i,!1)}var je="\\s*(-?(?:\\d+\\.?\\d*|\\.\\d+)(?:[eE][-+]?\\d+)?)\\s*",Se=new RegExp(`^cubic\\(${je},${je},${je},${je}\\)$`),Pe=new RegExp(`^elastic\\(${je},${je}\\)$`),ze=e=>e,Ce=()=>0;function Ie(e,t,i,r){let s=(e,t,i)=>{let r=1-e;return 3*r*r*e*t+3*r*e*e*i+e*e*e},n=t=>{let r=1-t;return 3*r*r*e+6*r*t*(i-e)+3*t*t*(1-i)};return a=>{if(a<=0)return 0;if(a>=1)return 1;let o=a;for(let l=0;l<8;l++){let l=s(o,e,i)-a,h=n(o);if(Math.abs(l)<1e-12&&h>.001)return s(o,t,r);if(h<1e-6||(o-=l/h,o<0||o>1))break}let l=0,h=1;for(let t=0;t<48;t++)o=(l+h)/2,s(o,e,i)<a?l=o:h=o;return s((l+h)/2,t,r)}}var qe={linear:ze,hold:Ce,in:Ie(.42,0,1,1),out:Ie(0,0,.58,1),inOut:Ie(.42,0,.58,1)};function Ne(e,t,i,r,s,n){if(e.doc.requires?.includes("bind"))return fe.get("bind")?.expression?.(t,new Map([...e.inputs].map(([e,t])=>[e,t.type])),i,r,s,n);s.err("undeclared-feature",r,!1,!1)}var Re=1<<20,Fe=32,Le=2048,Be=2e4,Te=64,He=256,Ve=e=>void 0===e?[]:Array.isArray(e)?e:[e],De=e=>Object.entries(e??{}).filter(([e])=>"$comment"!==e);function Ze(e){let t=new y;if("string"!=typeof e)return We(e,t);let i,r=e.length>Re?e.length:0;if(!r&&3*e.length>Re)for(let t of e){let e=t.codePointAt(0);r+=e<128?1:e<2048?2:e<65536?3:4}if(r>Re)return t.err("limit-exceeded","",!1),{diagnostics:t.list};try{i=JSON.parse(e)}catch(e){return t.err("json-syntax","",!1),{diagnostics:t.list}}return We(i,t)}function We(e,t){let i=((e,t)=>{if("object"!=typeof e||null===e||Array.isArray(e))return t.err("type","",!1);let i=e.anima;if("0.1"!==i)return void 0===i?t.err("missing-key","",!1,!1):t.err("version-unsupported","/anima",!1,!1);let r=e.requires;if(Array.isArray(r)&&r.forEach((e,i)=>{"string"==typeof e&&!me.includes(e)&&t.err("unknown-feature","/requires/"+i,!1,!1)}),!t.failed)try{if(((e,t)=>{let i=t.list.length,r=e?.requires;return t.features=Array.isArray(r)?r:[],Ee(e,t.features.includes("components")?{...X,p:{...X.p,nodes:{...X.p.nodes,min:0}}}:X,"",t,0),t.list.length===i})(e,t))return((e,t)=>{/-\d+$/.test(e.name)&&t.err("bad-name","/name",!1,!1);let i=Object.fromEntries(De(e.colors));for(let[e,r]of Object.entries(i))"currentColor"!==r&&!f(r)&&t.err("bad-color",g("/colors",e),!1,!1);let r=(e,r)=>{"currentColor"===e||f(e)||Object.hasOwn(i,e)||($.test(e)?t.err("unknown-color-slot",r,!1,!1):t.err("bad-color",r,!1,!1))},s=new Map;for(let[i,r]of De(e.glyphs)){let e=Ye(r.d,g("/glyphs",i)+"/d",t);s.set(i,e&&{d:r.d,sp:e})}let n=[],o=new Map,l=(e,i,h,d)=>{e.forEach((e,u)=>{let p=h+"/"+u;if(d>Fe)return t.err("limit-exceeded",p,!1);if(n.length>=Le)return t.err("limit-exceeded",p,!1);o.has(e.id)&&t.err("duplicate-id",p+"/id",!1);let c={id:e.id,type:e.type,raw:e,parent:i,children:[]},f=n.push(c)-1;o.set(e.id,f),i>=0&&n[i].children.push(f),((e,t,i,r,s)=>{let n=e.raw;if("path"===e.type){let s,o=n.d;if("glyph"in n=="d"in n)i.err("path-source",t,!1);else if("glyph"in n){let e=r.get(n.glyph);e?[s,o]=[e.sp,e.d]:r.has(n.glyph)||i.err("unknown-glyph",t+"/glyph",!1,!1)}else s=Ye(n.d,t+"/d",i);if(s){let r=n.subpaths,l=r?.findIndex((e,t)=>e>=s.length||r.indexOf(e)!==t)??-1;r&&l>=0?i.err("bad-subpath",`${t}/subpaths/${l}`,!1):Object.assign(e,((e,t,i)=>{let r=i?[...i].sort((e,t)=>e-t).map(e=>t[e]):t;return{geom:r,d:r.length===t.length?e:r.every(e=>e.absolute)?r.map(t=>e.slice(t.start,t.end).trim()).join(""):a(r)}})(o,s,r))}}if(!w.includes(e.type))return;for(let e of["fill","stroke"])void 0!==n[e]?.color&&s(n[e].color,t+"/"+e+"/color");if("arc"===e.type){n.fill&&i.err("arc-fill",t+"/fill",!1);let e=n.to-n.from;e>0&&e<=360||i.err("bad-value",t+"/to",!1,!1)}let o=n.stroke;o&&e.geom&&e.geom.length>1&&["trimStart","trimEnd","trimOffset"].some(e=>e in o)&&i.err("trim-multi-subpath",t+"/stroke",!1,!1)})(c,p,t,s,r),e.children&&l(e.children,f,p+"/children",d+1)})};l(e.nodes,-1,"/nodes",1),e.hit&&1!==Object.keys(e.hit).filter(e=>"$comment"!==e).length&&t.err("bad-value","/hit",!1);let h=new Map;for(let[i,r]of De(e.inputs)){let e=g("/inputs",i),s=r.type,n=i=>t.err("unknown-key",e+"/"+i,!1);if("number"!==s)for(let e of["min","max"])e in r&&n(e);"trigger"!==s&&"buffer"in r&&n("buffer"),"trigger"===s&&"default"in r&&n("default");let a=r.min??-1/0,o=r.max??1/0;a>o&&t.err("bad-value",e+"/max",!1);let l=r.default??("number"===s&&0);"trigger"!==s&&typeof l!=("bool"===s?"boolean":"number")?t.err("value-type",e+"/default",!1):"number"===s&&(l<a||l>o)&&t.err("bad-value",e+"/default",!1),h.set(i,{name:i,type:s,def:l,min:a,max:o,buffer:r.buffer??0})}let d=(e,i,r,s)=>{let n=h.get(e);return n?r.includes(n.type)||t.err("input-type",i,!1,!1):t.err("unknown-input",i,!1,!1),n},u={doc:e,grid:e.grid,viewBox:e.viewBox??[0,0,e.grid,e.grid],colors:i,nodes:n,ids:o,inputs:h,addrs:new Map,timelines:[],layers:[],listeners:[]};for(let e of fe.values())e.prepare?.(u,t);for(let e of fe.values())e.resolve?.(u,t);let p=new Map,c=0,m=(i,r)=>{let s=Je(i,n,o);if(Array.isArray(s))t.err(s[0],r,s[1],s[2]);else{if(s.prop.feature&&!e.requires?.includes(s.prop.feature)&&t.err("undeclared-feature",r,!1,!1),"color"!==s.prop.type||Array.isArray(s.rest))return p.has(i)||p.set(i,s),s;t.err("color-slot-animated",r,!1,!1)}},y=(e,r,s)=>{let n=e.prop.type;if("number"!==n&&"bool"!==n&&"color"!==n)return fe.get(e.prop.feature)?.value?.(e,r,s,t);if("color"===n){if("string"!=typeof r)return void t.err("value-type",s,!1);let e=f(r);return e||("currentColor"===r||Object.hasOwn(i,r)?t.err("color-slot-animated",s,!1):t.err("bad-color",s,!1)),e??void 0}return typeof r!=("bool"===n?"boolean":"number")?void t.err("value-type",s,!1):r},v=(e,i)=>{if(void 0===e)return ze;if(/^spring\(/.test(e))return t.err("reserved",i,!1),ze;for(let r of fe.values()){let s=r.ease?.(e,i,t);if(s)return s}let r=(e=>{let t=Object.hasOwn(qe,e)?qe[e]:void 0;if(t)return t;let i=Se.exec(e);if(i){let[e,t,r,s]=i.slice(1).map(Number);return e<0||e>1||r<0||r>1?"":isFinite(t)&&isFinite(s)?Ie(e,t,r,s):""}if(i=Pe.exec(e),i){let[e,t]=i.slice(1).map(Number);return e>=0&&t>0&&isFinite(e)&&isFinite(t)?((e,t)=>{let i=Math.max(e,1),r=t/(2*Math.PI)*Math.asin(1/i);return e=>e<=0?0:e>=1?1:i*2**(-10*e)*Math.sin(2*(e-r)*Math.PI/t)+1})(e,t):""}return""})(e);return"string"==typeof r?(t.err("bad-ease",i,!1,!1),ze):r},b=[],k=new Map;for(let[i,r]of De(e.timelines)){let e=g("/timelines",i),s={name:i,duration:r.duration,loop:r.loop??"once",reduced:r.reducedMotion??"end",tracks:[],events:[]};for(let[i,n]of De(r.tracks)){let r=g(e+"/tracks",i),a=m(i,r);if(!n.length){t.err("empty-track",r,!1);continue}(c+=n.length)>Be&&t.err("limit-exceeded",r,!1);let o={addr:i,times:[],values:[],eases:[]};if(n.forEach((e,i)=>{let n=r+"/"+i,[l,h,d]=e;(l<0||l>s.duration)&&t.err("key-range",n+"/0",!1),i&&l<=o.times[i-1]&&t.err("key-order",n+"/0",!1,!1);let p=v(d,n+"/2");"bool"===a?.prop.type&&void 0!==d&&p!==Ce&&t.err("bad-ease",n+"/2",!1),o.times.push(l),o.values.push(a?u.keyValue?.(a,h,n+"/1",t)??y(a,h,n+"/1")??0:0),o.eases.push(p)}),a){for(let e of fe.values())e.track?.(o,a,n,r,t);s.tracks.push(o)}}(r.events??[]).forEach((i,r)=>{(i[0]<0||i[0]>s.duration)&&t.err("key-range",`${e}/events/${r}/0`,!1),s.events.push([i[0],i[1]])}),s.events.sort((e,t)=>e[0]-t[0]),k.set(i,b.push(s)-1)}let M=(e,i)=>{let r=Ve(e.fire),s=Ve(e.toggle);r.forEach(e=>d(e,i+"/fire",["trigger"])),s.forEach(e=>d(e,i+"/toggle",["bool"]));let n=[];for(let[r,s]of De(e.set)){let e=g(i+"/set",r),a=d(r,e,["bool","number","string","color"]);if(a?.readonly&&t.err("data-readonly",e,!1,!1),"string"==typeof s&&a&&"trigger"!==a.type){let i=Ne(u,s,a.type,e,t,e=>{});i&&n.push([r,i]);continue}a&&"trigger"!==a.type&&!(a.accepts?.(s)??typeof s==("bool"===a.type?"boolean":"number"))&&t.err("input-type",e,!1),"string"!=typeof s&&n.push([r,s])}return{fire:r,set:n,toggle:s,emit:e.emit}},x=[],A=De(e.machine?.layers);A.length>Te&&t.err("limit-exceeded","/machine/layers",!1);for(let[i,r]of A){let s=g("/machine/layers",i),n=De(r.states).map(e=>e[0]);n.length>He&&t.err("limit-exceeded",s+"/states",!1);let a=(e,i)=>{let r=n.indexOf(e);return r<0&&t.err("unknown-state",i,!1,!1),r},o={name:i,initial:a(r.initial,s+"/initial"),states:[]};n.forEach((i,n)=>{let l,p=r.states[i],c=g(s+"/states",i),f={name:i,speed:p.speed??1,emit:p.emit,on:[],writes:[]};if(p.entry&&(f.entry=M(p.entry,c+"/entry")),p.exit&&(f.exit=M(p.exit,c+"/exit")),f.speed<=0&&!e.requires?.includes("motion")&&t.err("undeclared-feature",c+"/speed",!1,!1),"pose"in p=="play"in p&&t.err("state-kind",c,!1),"speed"in p&&!("play"in p)&&t.err("state-kind",c+"/speed",!1),p.pose){f.pose=new Map;for(let[e,t]of De(p.pose)){let i=g(c+"/pose",e),r=m(e,i),s=r&&y(r,t,i);void 0!==s&&f.pose.set(e,s)}f.writes=[...f.pose.keys()]}if(void 0!==p.play){let e=k.get(p.play);void 0===e?t.err("unknown-timeline",c+"/play",!1,!1):(f.play=e,l=b[e],f.writes=l.tracks.map(e=>e.addr))}(p.on??[]).forEach((i,r)=>{let s=`${c}/on/${r}`,o=a(i.to,s+"/to"),p=se(i.when);if(e.requires?.includes("bind")&&/\b(?:or|not)\b|^\s*\(/.test(i.when.replace(/"(?:[^"\\]|\\.)*"/g,""))){let e=i.when.replace(/("(?:[^"\\]|\\.)*"|&&|!(?!=))/g,e=>"&&"===e?" and ":"!"===e?"not ":e),r=Ne(u,e,"bool",s+"/when",t,e=>{});p=r?[{k:"expr",a:"",b:"",op:"==",test(e){return!!r(e)}}]:[]}let m={actions:i.actions?M(i.actions,s+"/actions"):void 0,to:o,terms:[],triggers:[],blend:i.blend??0,ease:v(i.ease,s+"/ease"),interruptible:i.interruptible??!0},y=s+"/when";if("string"==typeof p)t.err("bad-condition",y,!1,!1);else{m.terms=p;for(let e of p)if("is"===e.k){let i=d(e.name,y,["bool","trigger"]);"trigger"===i?.type&&(e.not&&t.err("input-type",y,!1),m.triggers.push(i.name))}else if("cmp"===e.k)d(e.name,y,["number"]);else if("expr"===e.k){if(e.test||ae(u,e,y,t)||u.guard?.(e,y,t))continue;let i=Ne(u,`${e.a} ${e.op} ${e.b}`,"bool",y,t,e=>{});i&&(e.test=e=>!!i(e))}else"end"===e.k&&(!l||"once"!==l.loop)&&t.err("bad-end",y,!1);o===n&&!p.some(e=>"end"===e.k||"after"===e.k||"is"===e.k&&"trigger"===h.get(e.name)?.type)&&t.err("self-transition",y,!1,!1)}f.on.push(m)}),o.states.push(f)}),x.push(o)}let E=[];(e.listeners??[]).forEach((e,i)=>{let r="/listeners/"+i,s=-1;void 0!==e.target&&(s=o.get(e.target)??-1,s<0&&t.err("unknown-target",r+"/target",!1,!1)),["fire","set","toggle","emit","copy"].some(t=>t in e)||t.err("missing-key",r,!1,!1),E.push({on:e.on,target:s,pad:e.hitPadding??0,...M(e,r)})});let O=e.a11y;if(O){for(let e of["activate","pressed","held"])O[e]&&d(O[e],"/a11y/"+e,"activate"===e?["trigger","bool"]:["bool"]);"switch"===O.role&&!O.pressed&&t.err("missing-key","/a11y",!1,!1)}return Object.assign(u,{addrs:p,timelines:b,layers:x,listeners:E})})(e,t)}catch(e){if(!(e instanceof RangeError))throw e;t.err("limit-exceeded","",!1)}})(e,t);if(i)for(let e of fe.values())e.load?.(i,i.doc,t);return i&&!t.failed?(be(i),{model:i,diagnostics:t.list}):{diagnostics:t.list}}function Ye(t,i,s){try{return r(t)}catch(t){if(!(t instanceof e))throw t;s.err("bad-path",i,!1,!1)}}function Je(e,t,i){let r=e.indexOf(".");if(r<0)return["unknown-address",!1,!1];let s=e.slice(0,r),n=e.slice(r+1),a=i.get(s);if(void 0===a)return["unknown-address",!1,!1];let o=t[a];for(let e of fe.values()){let t=e.model?.(o,n);if(t)return{node:a,key:n,...t}}if("d"===n)return["reserved",!1,!1];let l=/^(fill|stroke)\.(.+)$/.exec(n);if(l){let e=l[1],t=l[2];if(!w.includes(o.type)||!o.raw[e])return["unknown-address",!1,!1];let i=Object.hasOwn(x[e],t)?x[e][t]:void 0;if(!i)return Object.hasOwn(D(o.type).p[e].p,t)?["not-animatable",!1,!1]:["unknown-address",!1,!1];let r=o.raw[e][t];return void 0===r&&void 0===i.def?["unknown-address",!1,!1]:{node:a,key:n,prop:i,rest:"color"===i.type?f(r)??r:r??i.def}}let h={...b,...M[o.type]},d=Object.hasOwn(h,n)?h[n]:void 0;return d?{node:a,key:n,prop:d,rest:o.raw[n]??d.def}:Object.hasOwn(T[o.type],n)||["pivot","id","type","fill","stroke","knockout"].includes(n)?["not-animatable",!1,!1]:["unknown-address",!1,!1]}var Ue=new Map;function Xe(e,t){Ue.set(e,t);let i=[...fe.keys()],r=e=>i.indexOf(e.replace("-",""))>>>0,s=[...Ue].sort((e,t)=>r(e[0])-r(t[0]));Ue.clear();for(let[e,t]of s)Ue.set(e,t)}var Ge=e=>Math.abs(e)<1e-9?"0":Math.abs(e)<.001?String(Number(e.toPrecision(6))):Me(e),Ke=e=>`matrix(${e.map(Ge).join(" ")})`,Qe={slot(e,t){return`var(--anima-${e}, ${t})`}};function _e(e,t){return"object"==typeof e?t.slot(e.slot,e.fallback):e}function et(e,t,i,r){let s=((e,t,i,r)=>{if(t.role.startsWith("module:"))return{};let s=t.node,n=e.nodes[s],a=e.tree.nodes[s];if("wrap"===t.role)return{mask:`url(#${r}k${s})`};if("mask"===t.role||"bg"===t.role){let[i,n,a,o]=e.viewBox,l={x:Me(i-a),y:Me(n-o),width:Me(3*a),height:Me(3*o)};return"bg"===t.role?{...l,fill:"#fff"}:{id:`${r}k${s}`,maskUnits:"userSpaceOnUse",...l}}if("node"===t.role||"cutg"===t.role)return{transform:Ke(n.transform),opacity:Me(n.opacity),display:n.visible?"inline":"none"};let o={};((e,t)=>{if(e)for(let i in e)if("kind"!==i&&"image"!==i){let r=e[i];t[i]="rx"!==i||r?"number"==typeof r?Me(r):r:null}})(n.geometry,o);let h=n.paints.find(e=>"fill"===e.kind),d=n.paints.find(e=>"stroke"===e.kind);if("cut"===t.role){let e=(d?.width??0)+2*a.knockout;return Object.assign(o,{fill:h?"#000":"none","fill-rule":"evenodd"===h?.rule?"evenodd":null,stroke:e>0&&(h||d)?"#000":"none","stroke-width":Me(e),"stroke-linejoin":"round","stroke-linecap":"round"})}return((e,t,i,r,s=1)=>{if(r.fill=e?_e(e.color,i):"none",r["fill-rule"]="evenodd"===e?.rule?"evenodd":null,t){let e=t.trim,n=Math.min(1,(e?.end??1)-(e?.start??0)),a=e?((e.start+e.offset)%1+1)%1:0,o=a+n>1;Object.assign(r,{stroke:n>0?_e(t.color,i):"none","stroke-width":Me(t.width),"stroke-linecap":t.cap,"stroke-linejoin":t.join,pathLength:null,"stroke-dasharray":e&&n<1?`${Me(n*s)} ${Me((o?1-n:2)*s)}`:null,"stroke-dashoffset":e&&n<1?Me(-a*s):null})}})(h,d,i,o,d?.trim&&d.trim.end-d.trim.start<1?((e,t=e)=>{if(!e)return 0;let i,r=[e.d,e.r,e.width,e.height,e.rx],s=ve.get(t);if(s&&r.every((e,t)=>e===s.signature[t]))return s.value;if(void 0!==e.d)i=l(e.d);else if("circle"===e.kind)i=2*Math.PI*e.r;else{let t=e.width,r=e.height,s=e.rx??0,n=Math.min(s,t/2),a=Math.min(s,r/2);i=2*(t+r-2*n-2*a)+(n&&a?4*l(`M${n} 0A${n} ${a} 0 0 1 0 ${a}`):0)}return ve.set(t,{signature:r,value:i}),i})(n.geometry,a):1),o})(e,t,i,r);for(let n of Ue.values())n.attrs?.(e,t,i,r,s,et);return s}var tt="http://www.w3.org/2000/svg",it=new Set,rt=0;function st(e){rt=0;for(let t of it)t.frame(e);it.size&&!rt&&(rt=requestAnimationFrame(st))}function nt(e,t){t?it.add(e):it.delete(e),!it.size&&rt?(cancelAnimationFrame(rt),rt=0):it.size&&!rt&&(rt=requestAnimationFrame(st))}var at,ot=new WeakMap,lt=new Map,ht=new Map,dt=0,ut=class e extends HTMLElement{loadModel(t){this.#r=t;let i=e.selectModel?.(this,t);if(i&&!i.model)return void this.#A(i.diagnostics);t=i?.model??t,this.#s=void 0,++this.#M,this.#k=!1,this.#j(),this.#$(),nt(this,!1),this.#u=-1,this.#c="",this.#m=0,e.eventHook?.(this,"cleanup",null),this.player=void 0;let r=this.#M,s=i=>{if(r!==this.#M)return;this.player=new ce(t);let s=this.player;this.#t=i||void 0,this.#S(s),s.onChange=()=>{this.player===s&&this.#P()},this.#z();for(let e of this.#i.splice(0))e(s);this.#b(t),this.#C(),(this.hasAttribute("paused")||(e.eventHook?.(this,"play",null),this.#I(0),r===this.#M))&&(this.#a(),this.dispatchEvent(new CustomEvent("anima:load",{detail:this.info})))};t.doc.assets&&e.loadAssets?e.loadAssets(this,t).then(s,e=>{r===this.#M&&this.#A(Array.isArray(e)?e:[{code:"asset-load",severity:"error",pointer:"/assets",message:String(e)}])}):s()}static registration=0;static refresh(){this.registration++,ot=new WeakMap,lt.clear(),ht.clear(),queueMicrotask(()=>dispatchEvent(new Event("anima:register")))}static markupHooks={};static registerMarkup(e,t){this.markupHooks[e]=t,this.refresh()}static registerModule(t){(e=>{if(!/^[a-z][a-z0-9]*(?:@[1-9]\d*)?$/.test(e.name))throw new Error("invalid module name");if(ye.has(e.name))return;ye.set(e.name,e);let t=new Map([...ye].sort(([e],[t])=>e<t?-1:e>t?1:0)),i=[];for(;t.size;){let r=[...t.values()].find(e=>(e.after??[]).every(e=>!t.has(e)));if(!r)throw ye.delete(e.name),new Error("module dependency cycle");i.push(r),t.delete(r.name)}(()=>{for(let[e,t]of G){for(let t of Object.keys(e))Reflect.deleteProperty(e,t);Object.assign(e,t)}k.splice(K),w.splice(Q),V.clear()})();for(let e of Object.keys(H))Reflect.deleteProperty(H,e);fe.clear(),me.splice(1);for(let e of i){e=e.init?.(fe,{DOC:X,nodeShape:D,PAINTED:w,FILL:L,STROKE:B,PAINT:x,resolveAddress:Je,inputExpression:Ne,load:Ze,Player:ce,sampleTrack:de,mixValues:ue})??e,fe.set(e.name,e),me.push(e.name,...e.name.includes("@")?[e.name.split("@")[0]]:[]);for(let t of e.entries){let i="node"===t.target?k:"painted"===t.target?w:[t.target];for(let r of i)ge(e,t,r)}}for(let e of fe.values())for(let t of e.entries)if("node"===t.target||"painted"===t.target)for(let i of"node"===t.target?k:w)ge(e,t,i)})(t),e.refresh()}static inputEvents=new WeakSet;static registerSVGBackend=Xe;static modules=fe;static registry={DOC:X,FILL:L,STROKE:B};static renderers={};#e;#t;#i=[];#r;static observedAttributes=["src","motion","label","speed","paused","alignment","fit","align","renderer"];player;ready;trace;#s;#n=()=>{!this.#s||!this.isConnected||this.#k||(this.ready=new Promise((e,t)=>{this.#a=e,this.#o=t}),this.ready.catch(()=>{}),this.#s())};#a;#o;#l;#h;#d=[];#u=-1;#p=!0;#c="";#f=0;#m=0;#v;#w=!1;#k=!1;#M=0;#x=(()=>matchMedia("(prefers-reduced-motion: reduce)"))();#O="a"+ ++dt+"-";constructor(){super(),this.#l=this.attachShadow({mode:"open"}),this.ready=new Promise((e,t)=>{this.#a=e,this.#o=t}),this.ready.catch(()=>{}),this.#j()}#j(){if(!this.#v){this.#v=new AbortController;for(let[e,t]of[["pointermove",e=>this.#q("move",e)],["pointerdown",e=>0===e.button&&this.#q("down",e)],["pointerup",e=>0===e.button&&this.#q("up",e)],["pointerleave",e=>this.#q("leave",e)],["pointercancel",e=>this.#q("leave",e)],["keydown",e=>this.#N(e,!0)],["keyup",e=>this.#N(e,!1)],["blur",()=>this.#R(0)]])this.addEventListener(e,t,{signal:this.#v.signal})}}set src(e){this.setAttribute("src",e)}get src(){return this.getAttribute("src")}connectedCallback(){this.#k||(this.#j(),queueMicrotask(()=>{if(this.isConnected&&!this.#k&&!this.player){if(this.#s)return void this.#n();let e=this.querySelector('script[type="application/vnd.anima+json"],script[type="application/vnd.anima+xml"]');e&&this.#E(e.text,e.type.endsWith("xml"),document.baseURI)}}),this.#$(),this.#e?.connect(),this.#g(),this.player?.busy&&this.#P())}#$(){this.#w||!this.isConnected||(this.#w=!0,addEventListener("anima:register",this.#n),(at??=new IntersectionObserver(e=>{for(let t of e)t.target.#F(t.isIntersecting)})).observe(this),this.#x.addEventListener("change",this.#z),document.addEventListener("visibilitychange",this.#z))}disconnectedCallback(){e.eventHook?.(this,"cleanup",null),this.#e?.disconnect(),this.#w=!1,removeEventListener("anima:register",this.#n),at?.unobserve(this),this.#x.removeEventListener("change",this.#z),document.removeEventListener("visibilitychange",this.#z),nt(this,!1)}attributeChangedCallback(t,i,r){if("src"===t&&r){let t=++this.#M;(e.sourceLoader?.(this,r)??fetch(r).then(e=>e.text())).then(e=>{t===this.#M&&this.#E(e,/\.animl(?:[?#]|$)/.test(r),new URL(r,document.baseURI).href)},()=>{t===this.#M&&this.#A([{code:"fetch",severity:"error",pointer:"",message:`cannot fetch ${r}`}])})}else"motion"===t?this.#z():"label"===t?this.#C():"paused"===t?(i!==r&&e.eventHook?.(this,null===r?"play":"pause",null),null!==r?nt(this,!1):this.player&&(this.#I(0),this.player?.busy&&this.#P())):"renderer"===t&&this.player?this.#b(this.player.model):"fit"===t||"align"===t||"alignment"===t?this.#g():"speed"===t&&(0===this.speed?nt(this,!1):this.player?.busy&&this.#P())}async#E(t,i,r){if("string"!=typeof t)return void this.loadModel(t);let s=()=>{this.#E(t,i,r)};this.#s=void 0;let n=e.registration;if(i&&e.compilerAsync){let a=this.#M,o=JSON.stringify([r,t]),l=ht.get(o);l?(ht.delete(o),ht.set(o,l)):(l=e.compilerAsync(t,r),ht.set(o,l),ht.size>16&&ht.delete(ht.keys().next().value),l.then(e=>{e.doc||ht.delete(o)},()=>ht.delete(o)));let h=await l;if(a!==this.#M||this.#k)return;if(h.doc)this.load(h.doc);else{if(n!==e.registration)return this.#E(t,i,r);this.#s=s,this.#A(h.diagnostics)}}else this.load(t,i);this.#s&&=s}load(t,i=!1){this.#s=()=>{this.load(t,i)};let r=e.compile(t,i),s=r.model&&e.selectModel?.(this,r.model),n=s?s.model:r.model,a=[...r.diagnostics,...s?.diagnostics??[]];return n?(this.loadModel(n),a):(this.#A(a),a)}static compile(t,i=!1){let r="string"==typeof t?(i?"m":"j")+t:void 0,s=void 0===r?ot.get(t):lt.get(r);if(s)return void 0!==r&&(lt.delete(r),lt.set(r,s)),s;let n=i&&"string"==typeof t?e.compiler?.(t)??{diagnostics:[{code:"markup-unavailable",severity:"error",pointer:"",message:"load @anima-format/web/markup or run anima build page.html"}]}:void 0,a=n&&!n.doc?{model:void 0,diagnostics:n.diagnostics}:Ze(n?.doc??t);return a.model&&(void 0===r?ot.set(t,a):(lt.set(r,a),lt.size>16&<.delete(lt.keys().next().value))),a}get speed(){let e=Number(this.getAttribute("speed")??1);return Number.isFinite(e)&&e>=0?e:1}set speed(e){this.setAttribute("speed",String(Number.isFinite(e)&&e>=0?e:1))}get playback(){return this.player?this.hasAttribute("paused")?"paused":this.player.busy?"playing":"settled":"empty"}pause(){this.setAttribute("paused","")}stop(){this.setAttribute("paused","")}play(){this.hasAttribute("paused")?this.removeAttribute("paused"):this.player?.busy&&this.#P()}get(e){return this.player?.get(e)}get info(){let e=this.player?.model;return e?{name:e.doc.name,title:e.doc.title,grid:e.grid,viewBox:[...e.viewBox],inputs:[...e.inputs.values()].map(e=>({name:e.name,type:e.type,default:Array.isArray(e.def)?[...e.def]:e.def,..."number"===e.type&&Number.isFinite(e.min)?{min:e.min}:{},..."number"===e.type&&Number.isFinite(e.max)?{max:e.max}:{}})),timelines:e.timelines.map(e=>({name:e.name,duration:e.duration,loop:e.loop})),layers:e.layers.map(e=>({name:e.name,initial:e.states[e.initial].name,states:e.states.map(e=>e.name)}))}:null}reset(){this.player&&this.loadModel(this.#r)}destroy(){++this.#M,this.#k=!0,this.#s=void 0,this.disconnectedCallback(),this.#v?.abort(),this.#v=void 0,this.player=void 0,this.#t=void 0,this.#e?.destroy(),this.#e=void 0,this.#h=void 0,this.#d=[],this.#l.replaceChildren(),this.#m=0,this.#C()}invalidate(){if(this.player){for(let e of this.#d)e[2]={};this.#L(!0)}}set(e,t){this.trace?.push(["set",e,t]),this.player?this.player.set(e,t):this.#i.push(i=>i.set(e,t)),this.#P()}fire(e){this.trace?.push(["fire",e]),this.player?this.player.fire(e):this.#i.push(t=>t.fire(e)),this.#P()}settle(){if(!this.player)return this.#i.push(()=>this.#y()),!1;let e=this.#y();return this.#L(!0),this.#C(),nt(this,!1),this.#u=-1,e||this.#P(),e}#y(){let e=this.player,t=t=>(this.trace?.push(["step",t]),e.step(t).settled),i=t(0);for(let e=0;!i&&e<240;e++)i=t(.25);return this.#c=JSON.stringify(e.states()),i}toggle(e){this.trace?.push(["toggle",e]),this.player?this.player.toggle(e):this.#i.push(t=>t.toggle(e)),this.#P()}values(){return this.player?.values()??{}}#A(t){let i=this.#s;e.eventHook?.(this,"loaderror",t),this.destroy(),i&&(this.#k=!1,this.#s=i,this.#j(),this.#$()),console.error(`anima-icon: ${t.map(e=>`${e.message} at ${e.line?`${e.line}:${e.column}`:e.pointer||"/"}`).join(", ")}`),this.dispatchEvent(new CustomEvent("anima:error",{detail:t})),this.#o(t)}#b(t){this.#e?.destroy(),this.#e=void 0,this.#h=void 0,this.#d=[];let i=this.getAttribute("renderer");if(i&&"svg"!==i){this.#l.replaceChildren();let t=e.renderers[i];return void(t?(this.#e=t(this),this.#L(!0)):this.dispatchEvent(new CustomEvent("anima:error",{detail:[{code:"unsupported-render",severity:"error",pointer:"",message:`renderer ${i} is unavailable`,hint:"import @anima-format/web/"+i}]})))}let[r,s,n,a]=t.viewBox,o=t.grid,l=e=>e/o*100+"%",h=n===a?`left:${l(r)};top:${l(s)};width:${l(n)};height:${l(a)}`:n>a?`left:${l(r)};top:0;width:${l(n)};height:auto;transform:translateY(${s/a*100}%)`:`left:0;top:${l(s)};width:auto;height:${l(a)};transform:translateX(${r/n*100}%)`;this.#l.innerHTML=`<style>:host{display:inline-block;position:relative;width:1em;aspect-ratio:${n}/${a};vertical-align:-.125em;touch-action:manipulation;-webkit-tap-highlight-color:transparent}svg{position:absolute;${h};overflow:visible}</style>`;let d=this.#h=document.createElementNS(tt,"svg");d.setAttribute("viewBox",`${r} ${s} ${n} ${a}`),d.setAttribute("aria-hidden","true"),d.setAttribute("part","svg"),this.#d=[];let u=(e,t)=>{let i=document.createElementNS(tt,e.tag);t.append(i),this.#d.push([e,i,{}]);for(let t of e.kids)u(t,i)},{root:p,defs:c}=(e=>{let t=be(e),i=[],r=(e,i)=>({tag:t.nodes[e].kind,role:i,node:e,kids:[]}),s=e=>{let n=[];for(let a of e){let e=t.nodes[a];void 0!==e.knockout&&n.length&&(n=[{tag:"g",role:"wrap",node:a,kids:n}],i.push({tag:"mask",role:"mask",node:a,kids:[{tag:"rect",role:"bg",node:a,kids:[]},{tag:"g",role:"cutg",node:a,kids:[r(a,"cut")]}]})),n.push({tag:"g",role:"node",node:a,kids:"group"===e.kind?s(e.children):[r(a,"shape")]})}return n},n={root:s(t.roots),defs:i};for(let e of Ue.values())e.tree?.(t,n);return n})(t);if(c.length){let e=document.createElementNS(tt,"defs");d.append(e);for(let t of c)u(t,e)}for(let e of p)u(e,d);this.#l.append(d),this.#g(),this.#L(!0)}#g(){let t=this.#h;if(t&&e.viewBox?.(this,t))return void(t.style.transform="none");this.#e?.layout();let i=this.player?.model;if(!t||!i)return;let r=this.getAttribute("fit"),s=this.getAttribute("align")??"center";/^(center|(?:top|bottom)(?:-left|-right)?|left|right)$/.test(s)||(s="center");let n=(e,t)=>s.includes(e)?"Min":s.includes(t)?"Max":"Mid",a=n("left","right"),o=n("top","bottom");if(t.setAttribute("preserveAspectRatio","fill"===r?"none":`x${a}Y${o} ${"cover"===r?"slice":"meet"}`),"none"===r){let e=(e,t)=>{let i="Min"===e?0:"Mid"===e?.5:1;return`calc(${100*i}% - ${t*i}px)`};t.style.transform="none",t.style.width=i.viewBox[2]+"px",t.style.height=i.viewBox[3]+"px",t.style.left=e(a,i.viewBox[2]),t.style.top=e(o,i.viewBox[3])}else t.removeAttribute("style")}#B(){e.orderSVG?.($e(this.player),this.#d)}#S(t){if(!this.#t)return!1;let i=this.#t(t),r=t.nested,s=e.modules.get("lists");for(let e of[...r?.players?.values()??[],...r?.sources?.values()??[],...s?.listState(t)?.runs.flatMap(e=>e.items.map(e=>e.player))??[]])i=this.#S(e)||i;return i&&t.drawVersions.fill(++t.drawRevision),i}#L(t=!1){this.#S(this.player);let i=$e(this.player);if(this.#e)return this.#e.draw(i,t),void e.eventHook?.(this,"draw",{revision:i.revision});let r=new Set(i.changed);for(let[e,s,n]of this.#d){if(!t&&!r.has(e.node))continue;let a=et(i,e,Qe,this.#O);for(let e in a){let t=a[e];t!==n[e]&&(null===t?s.removeAttribute(e):s.setAttribute(e,t),n[e]=t)}}this.#B(),e.eventHook?.(this,"draw",{revision:i.revision})}#C(){let e=this.player?.model.doc.a11y,t=this.getAttribute("label")??e?.label,i="button"===e?.role||"switch"===e?.role,r=(e,t)=>null===t?this.removeAttribute(e):this.setAttribute(e,t);r("role",i?e.role:t?"img":null),r("aria-label",t??null),r("aria-hidden",t||i?null:"true"),i?(this.hasAttribute("tabindex")||(this.tabIndex=0,this.#f|=1),this.style.cursor||(this.style.cursor="pointer",this.#f|=2)):(1&this.#f&&"0"===this.getAttribute("tabindex")&&this.removeAttribute("tabindex"),2&this.#f&&"pointer"===this.style.cursor&&(this.style.cursor=""),this.#f=0);let s="switch"===e?.role;r(s?"aria-pressed":"aria-checked",null),r(s?"aria-checked":"aria-pressed",e?.pressed?String(!!this.player.get(e.pressed)):null),this.#T()}#T(){let e=this.player?.model.doc.a11y;if(!e?.pressed)return;let t="switch"===e.role?"aria-checked":"aria-pressed",i=String(!!this.player.get(e.pressed));this.getAttribute(t)!==i&&this.setAttribute(t,i)}flush(){this.player&&this.#I(0)}#I(t){let i=this.player;this.trace?.push(["step",t]);let{events:r,settled:s}=i.step(t);this.#L(),e.eventHook?.(this,"advance",{dt:t,events:r,settled:s});for(let t of r)if(e.eventHook?.(this,"event",t),this.dispatchEvent(new CustomEvent("anima:event",{detail:t,bubbles:!0,composed:!0})),this.player!==i)return;this.#T();let n=JSON.stringify(i.states());n!==this.#c&&(this.#c=n,e.eventHook?.(this,"statechange",i.states()),this.#C(),this.dispatchEvent(new CustomEvent("anima:state",{detail:i.states(),bubbles:!0,composed:!0}))),this.player===i&&!i.busy&&nt(this,!1)}frame(e){if(!this.player||this.hasAttribute("paused")||0===this.speed||!this.isConnected)return void nt(this,!1);let t=this.#u<0?0:h((e-this.#u)/1e3,0,.25);this.#u=e,this.#I(t*this.speed)}#P(){!this.player||this.hasAttribute("paused")||0===this.speed||!this.isConnected||!this.#p||document.hidden||(it.has(this)||(this.#u=performance.now()),nt(this,!0))}#F(e){this.#p=e,!this.#k&&(e&&this.player?.busy&&!this.hasAttribute("paused")&&!document.hidden?(this.#u=-1,this.#I(0),this.player?.busy&&this.#P()):e||nt(this,!1))}#z=()=>{if(!this.player)return;let e=this.getAttribute("motion");this.player.reducedMotion="reduce"===e||"full"!==e&&this.#x.matches,document.hidden?nt(this,!1):this.player.busy&&this.#P()};#q(t,i){if(e.inputEvents.has(i)||i.composedPath()[0].hasAttribute("data-semantic"))return;let r=this.player;if(!r||!this.#h&&!this.#e)return;let s=0,n=0;if("leave"!==t){let e=this.#h?.getScreenCTM()?.inverse();if(!e&&!this.#e)return;({x:s,y:n}=this.#e?this.#e.point(i.clientX,i.clientY):new DOMPoint(i.clientX,i.clientY).matrixTransform(e)),"down"===t&&this.setPointerCapture?.(i.pointerId)}this.trace?.push(["pointer",t,s,n]),r.pointer(t,s,n),this.hasAttribute("paused")||this.#I(0),this.#P()}#N(t,i){if(e.inputEvents.has(t)||t.composedPath()[0].hasAttribute("data-semantic"))return;let r=this.player?.model.doc.a11y;if(!r||"button"!==r.role&&"switch"!==r.role||"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),i&&t.repeat))return;r.activate&&"Enter"===t.key===i&&("bool"===this.player.model.inputs.get(r.activate).type?this.toggle(r.activate):this.fire(r.activate));let s="Enter"===t.key?1:2;this.#R(i?this.#m|s:this.#m&~s)}#R(e){let t=this.player?.model.doc.a11y,i=this.#m;this.#m=e,t?.held&&!i!=!e&&this.set(t.held,!!e)}};customElements.get("anima-icon")||customElements.define("anima-icon",ut);export{ut as AnimaIcon};
|
|
509
|
+
|
|
510
|
+
// Theming is plain CSS (color and --anima-accent above); the page only counts rings.
|
|
511
|
+
let rings = 0;
|
|
512
|
+
const count = document.getElementById('count');
|
|
513
|
+
document.getElementById('bell').addEventListener('anima:event', (e) => {
|
|
514
|
+
if (e.detail.name !== 'rang') return;
|
|
515
|
+
rings += 1;
|
|
516
|
+
count.textContent = rings === 1 ? 'Rang once.' : `Rang ${rings} times.`;
|
|
517
|
+
});
|
|
518
|
+
</script>
|
|
519
|
+
</body>
|
|
520
|
+
</html>
|