@exponential_app/eui 0.3.0 → 0.4.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/catalog/a11y.json +10 -0
- package/catalog/core.catalog.json +284 -6
- package/catalog/core.schema.json +437 -4
- package/catalog/layout.json +3 -2
- package/catalog/limits.json +10 -1
- package/catalog/macros.json +1 -0
- package/catalog/recipes.json +3 -1
- package/catalog/strings.json +9 -2
- package/catalog/style.json +21 -0
- package/catalog/theme.schema.json +4435 -3676
- package/conformance/manifest.json +2 -2
- package/conformance/motion/build-corpus.ts +232 -0
- package/conformance/motion/corpus/SOURCES.md +117 -0
- package/conformance/motion/corpus/images/footage_0.json +1 -0
- package/conformance/motion/corpus/images/img_0.jpg +0 -0
- package/conformance/motion/corpus/images/img_1.jpg +0 -0
- package/conformance/motion/corpus/images/triangle.png +0 -0
- package/conformance/motion/corpus/skottie-3d-parenting-nocamera.json +367 -0
- package/conformance/motion/corpus/skottie-auto-orient-2.json +292 -0
- package/conformance/motion/corpus/skottie-auto-orient.json +717 -0
- package/conformance/motion/corpus/skottie-bezier-extranormal.json +199 -0
- package/conformance/motion/corpus/skottie-blendmode-hardmix.json +558 -0
- package/conformance/motion/corpus/skottie-chained-mattes.json +259 -0
- package/conformance/motion/corpus/skottie-dropshadow-ramp.json +852 -0
- package/conformance/motion/corpus/skottie-dropshadow-style.json +278 -0
- package/conformance/motion/corpus/skottie-effects-transform.json +385 -0
- package/conformance/motion/corpus/skottie-fill-effect.json +358 -0
- package/conformance/motion/corpus/skottie-fill-rule.json +457 -0
- package/conformance/motion/corpus/skottie-gaussian-blur.json +670 -0
- package/conformance/motion/corpus/skottie-gradient-opacity.json +451 -0
- package/conformance/motion/corpus/skottie-gradient-radial-highlight.json +581 -0
- package/conformance/motion/corpus/skottie-hidden-shapes-layers.json +381 -0
- package/conformance/motion/corpus/skottie-huesaturation-effect.json +1117 -0
- package/conformance/motion/corpus/skottie-invert-effect.json +665 -0
- package/conformance/motion/corpus/skottie-luma-matte.json +239 -0
- package/conformance/motion/corpus/skottie-mask-feather.json +892 -0
- package/conformance/motion/corpus/skottie-masking-opaque.json +2376 -0
- package/conformance/motion/corpus/skottie-masking-translucent.json +2376 -0
- package/conformance/motion/corpus/skottie-matte-blendmode.json +196 -0
- package/conformance/motion/corpus/skottie-matte-nonsequential.json +722 -0
- package/conformance/motion/corpus/skottie-matte-visible.json +666 -0
- package/conformance/motion/corpus/skottie-mergepaths-effect.json +722 -0
- package/conformance/motion/corpus/skottie-motion-blur-mask.json +120 -0
- package/conformance/motion/corpus/skottie-nested-animation.json +253 -0
- package/conformance/motion/corpus/skottie-offsetpaths-effect.json +525 -0
- package/conformance/motion/corpus/skottie-phonehub-connecting.json +947 -0
- package/conformance/motion/corpus/skottie-puckerbloat-effect.json +339 -0
- package/conformance/motion/corpus/skottie-repeater.json +234 -0
- package/conformance/motion/corpus/skottie-sample-1.json +168 -0
- package/conformance/motion/corpus/skottie-sample-search.json +329 -0
- package/conformance/motion/corpus/skottie-spatial-supernormal.json +898 -0
- package/conformance/motion/corpus/skottie-text-animator-1.json +1286 -0
- package/conformance/motion/corpus/skottie-text-fill-over-stroke.json +1014 -0
- package/conformance/motion/corpus/skottie-text-tracking.json +950 -0
- package/conformance/motion/corpus/skottie-text-valign.json +484 -0
- package/conformance/motion/corpus/skottie-time-reverse.json +297 -0
- package/conformance/motion/corpus/skottie-transform-skew.json +290 -0
- package/conformance/motion/corpus/skottie-trimpath-fill.json +933 -0
- package/conformance/motion/corpus/skottie-trimpath-modes.json +266 -0
- package/conformance/motion/corpus/skottie-tritone-effect.json +379 -0
- package/conformance/motion/corpus/spec-blend-mode.json +531 -0
- package/conformance/motion/corpus/spec-ellipse.json +142 -0
- package/conformance/motion/corpus/spec-fill.json +193 -0
- package/conformance/motion/corpus/spec-gradient-stroke.json +1263 -0
- package/conformance/motion/corpus/spec-gradient.json +1255 -0
- package/conformance/motion/corpus/spec-mask.json +773 -0
- package/conformance/motion/corpus/spec-masks.json +676 -0
- package/conformance/motion/corpus/spec-matte.json +390 -0
- package/conformance/motion/corpus/spec-metadata.json +1 -0
- package/conformance/motion/corpus/spec-path.json +177 -0
- package/conformance/motion/corpus/spec-pucker-bloat.json +179 -0
- package/conformance/motion/corpus/spec-rectangle.json +145 -0
- package/conformance/motion/corpus/spec-rounded-corners.json +187 -0
- package/conformance/motion/corpus/spec-slots.json +325 -0
- package/conformance/motion/corpus/spec-star.json +159 -0
- package/conformance/motion/corpus/spec-stroke.json +156 -0
- package/conformance/motion/corpus/spec-test-ellipse-xy-pos.json +141 -0
- package/conformance/motion/corpus/spec-test-gradient-fill.json +1 -0
- package/conformance/motion/corpus/spec-test-gradient-stroke.json +229 -0
- package/conformance/motion/corpus/spec-test-unknown-shape.json +63 -0
- package/conformance/motion/corpus/spec-time-remap.json +1090 -0
- package/conformance/motion/corpus/spec-time-stretch.json +594 -0
- package/conformance/motion/corpus/spec-transform.json +273 -0
- package/conformance/motion/corpus/spec-trim-path.json +209 -0
- package/conformance/motion/corpus/web-adrock.json +1 -0
- package/conformance/motion/corpus/web-bacon.json +1 -0
- package/conformance/motion/corpus/web-banner.json +1 -0
- package/conformance/motion/corpus/web-bodymovin.json +1 -0
- package/conformance/motion/corpus/web-dalek.json +1 -0
- package/conformance/motion/corpus/web-footage-data.json +1 -0
- package/conformance/motion/corpus/web-lights.json +1 -0
- package/conformance/motion/corpus/web-ripple.json +1 -0
- package/conformance/motion/corpus/web-starfish.json +1 -0
- package/conformance/motion/known-gaps.json +35 -0
- package/conformance/motion/parity/group-transforms-parenting@0.png +0 -0
- package/conformance/motion/parity/group-transforms-parenting@10.png +0 -0
- package/conformance/motion/parity/hidden-unknown-inactive@0.png +0 -0
- package/conformance/motion/parity/keyframes-transform@0.png +0 -0
- package/conformance/motion/parity/keyframes-transform@10.png +0 -0
- package/conformance/motion/parity/keyframes-transform@15.png +0 -0
- package/conformance/motion/parity/keyframes-transform@5.png +0 -0
- package/conformance/motion/parity/layer-opacity-blend@0.png +0 -0
- package/conformance/motion/parity/linear-gradient@0.png +0 -0
- package/conformance/motion/parity/masks-modes@0.png +0 -0
- package/conformance/motion/parity/matte-alpha@0.png +0 -0
- package/conformance/motion/parity/matte-luma@0.png +0 -0
- package/conformance/motion/parity/matte-parent-tp@0.png +0 -0
- package/conformance/motion/parity/path-evenodd@0.png +0 -0
- package/conformance/motion/parity/precomp-clip-offset@0.png +0 -0
- package/conformance/motion/parity/precomp-clip-offset@15.png +0 -0
- package/conformance/motion/parity/precomp-clip-offset@5.png +0 -0
- package/conformance/motion/parity/radial-gradient-highlight@0.png +0 -0
- package/conformance/motion/parity/rect-solid-fill@0.png +0 -0
- package/conformance/motion/parity/repeater@0.png +0 -0
- package/conformance/motion/parity/rounded-rect-ellipse@0.png +0 -0
- package/conformance/motion/parity/solid-and-image@0.png +0 -0
- package/conformance/motion/parity/split-position-skew@0.png +0 -0
- package/conformance/motion/parity/split-position-skew@10.png +0 -0
- package/conformance/motion/parity/star-polygon@0.png +0 -0
- package/conformance/motion/parity/stroke-caps-joins@0.png +0 -0
- package/conformance/motion/parity/stroke-dashes@0.png +0 -0
- package/conformance/motion/parity/stroke-dashes@10.png +0 -0
- package/conformance/motion/parity/time-remap@0.png +0 -0
- package/conformance/motion/parity/time-remap@10.png +0 -0
- package/conformance/motion/parity/time-remap@19.png +0 -0
- package/conformance/motion/parity/time-stretch@0.png +0 -0
- package/conformance/motion/parity/time-stretch@10.png +0 -0
- package/conformance/motion/parity/trim-individually@0.png +0 -0
- package/conformance/motion/parity/trim-path@0.png +0 -0
- package/conformance/motion/parity/trim-path@10.png +0 -0
- package/conformance/motion/refs/index.json +688 -0
- package/conformance/motion/refs/skottie-3d-parenting-nocamera@0.png +0 -0
- package/conformance/motion/refs/skottie-3d-parenting-nocamera@150.png +0 -0
- package/conformance/motion/refs/skottie-3d-parenting-nocamera@270.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient-2@0.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient-2@210.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient-2@378.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient@0.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient@300.png +0 -0
- package/conformance/motion/refs/skottie-auto-orient@540.png +0 -0
- package/conformance/motion/refs/skottie-bezier-extranormal@0.png +0 -0
- package/conformance/motion/refs/skottie-bezier-extranormal@150.png +0 -0
- package/conformance/motion/refs/skottie-bezier-extranormal@270.png +0 -0
- package/conformance/motion/refs/skottie-blendmode-hardmix@0.png +0 -0
- package/conformance/motion/refs/skottie-blendmode-hardmix@150.png +0 -0
- package/conformance/motion/refs/skottie-blendmode-hardmix@270.png +0 -0
- package/conformance/motion/refs/skottie-chained-mattes@0.png +0 -0
- package/conformance/motion/refs/skottie-chained-mattes@300.png +0 -0
- package/conformance/motion/refs/skottie-chained-mattes@540.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-ramp@0.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-ramp@135.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-ramp@75.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-style@0.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-style@300.png +0 -0
- package/conformance/motion/refs/skottie-dropshadow-style@540.png +0 -0
- package/conformance/motion/refs/skottie-effects-transform@0.png +0 -0
- package/conformance/motion/refs/skottie-effects-transform@450.png +0 -0
- package/conformance/motion/refs/skottie-effects-transform@810.png +0 -0
- package/conformance/motion/refs/skottie-fill-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-fill-effect@300.png +0 -0
- package/conformance/motion/refs/skottie-fill-effect@540.png +0 -0
- package/conformance/motion/refs/skottie-fill-rule@0.png +0 -0
- package/conformance/motion/refs/skottie-fill-rule@150.png +0 -0
- package/conformance/motion/refs/skottie-fill-rule@270.png +0 -0
- package/conformance/motion/refs/skottie-gaussian-blur@0.png +0 -0
- package/conformance/motion/refs/skottie-gaussian-blur@150.png +0 -0
- package/conformance/motion/refs/skottie-gaussian-blur@270.png +0 -0
- package/conformance/motion/refs/skottie-gradient-opacity@0.png +0 -0
- package/conformance/motion/refs/skottie-gradient-opacity@150.png +0 -0
- package/conformance/motion/refs/skottie-gradient-opacity@270.png +0 -0
- package/conformance/motion/refs/skottie-gradient-radial-highlight@0.png +0 -0
- package/conformance/motion/refs/skottie-gradient-radial-highlight@135.png +0 -0
- package/conformance/motion/refs/skottie-gradient-radial-highlight@75.png +0 -0
- package/conformance/motion/refs/skottie-hidden-shapes-layers@0.png +0 -0
- package/conformance/motion/refs/skottie-hidden-shapes-layers@150.png +0 -0
- package/conformance/motion/refs/skottie-hidden-shapes-layers@270.png +0 -0
- package/conformance/motion/refs/skottie-huesaturation-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-huesaturation-effect@30.png +0 -0
- package/conformance/motion/refs/skottie-huesaturation-effect@54.png +0 -0
- package/conformance/motion/refs/skottie-invert-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-invert-effect@300.png +0 -0
- package/conformance/motion/refs/skottie-invert-effect@540.png +0 -0
- package/conformance/motion/refs/skottie-luma-matte@0.png +0 -0
- package/conformance/motion/refs/skottie-luma-matte@150.png +0 -0
- package/conformance/motion/refs/skottie-luma-matte@270.png +0 -0
- package/conformance/motion/refs/skottie-mask-feather@0.png +0 -0
- package/conformance/motion/refs/skottie-mask-feather@150.png +0 -0
- package/conformance/motion/refs/skottie-mask-feather@270.png +0 -0
- package/conformance/motion/refs/skottie-masking-opaque@0.png +0 -0
- package/conformance/motion/refs/skottie-masking-opaque@135.png +0 -0
- package/conformance/motion/refs/skottie-masking-opaque@75.png +0 -0
- package/conformance/motion/refs/skottie-masking-translucent@0.png +0 -0
- package/conformance/motion/refs/skottie-masking-translucent@135.png +0 -0
- package/conformance/motion/refs/skottie-masking-translucent@75.png +0 -0
- package/conformance/motion/refs/skottie-matte-blendmode@0.png +0 -0
- package/conformance/motion/refs/skottie-matte-blendmode@150.png +0 -0
- package/conformance/motion/refs/skottie-matte-blendmode@270.png +0 -0
- package/conformance/motion/refs/skottie-matte-nonsequential@0.png +0 -0
- package/conformance/motion/refs/skottie-matte-nonsequential@150.png +0 -0
- package/conformance/motion/refs/skottie-matte-nonsequential@270.png +0 -0
- package/conformance/motion/refs/skottie-matte-visible@0.png +0 -0
- package/conformance/motion/refs/skottie-matte-visible@150.png +0 -0
- package/conformance/motion/refs/skottie-matte-visible@270.png +0 -0
- package/conformance/motion/refs/skottie-mergepaths-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-mergepaths-effect@210.png +0 -0
- package/conformance/motion/refs/skottie-mergepaths-effect@378.png +0 -0
- package/conformance/motion/refs/skottie-motion-blur-mask@0.png +0 -0
- package/conformance/motion/refs/skottie-motion-blur-mask@150.png +0 -0
- package/conformance/motion/refs/skottie-motion-blur-mask@270.png +0 -0
- package/conformance/motion/refs/skottie-nested-animation@0.png +0 -0
- package/conformance/motion/refs/skottie-nested-animation@300.png +0 -0
- package/conformance/motion/refs/skottie-nested-animation@540.png +0 -0
- package/conformance/motion/refs/skottie-offsetpaths-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-offsetpaths-effect@150.png +0 -0
- package/conformance/motion/refs/skottie-offsetpaths-effect@270.png +0 -0
- package/conformance/motion/refs/skottie-phonehub-connecting@0.png +0 -0
- package/conformance/motion/refs/skottie-puckerbloat-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-puckerbloat-effect@210.png +0 -0
- package/conformance/motion/refs/skottie-puckerbloat-effect@378.png +0 -0
- package/conformance/motion/refs/skottie-repeater@0.png +0 -0
- package/conformance/motion/refs/skottie-repeater@300.png +0 -0
- package/conformance/motion/refs/skottie-repeater@540.png +0 -0
- package/conformance/motion/refs/skottie-sample-1@0.png +0 -0
- package/conformance/motion/refs/skottie-sample-1@100.png +0 -0
- package/conformance/motion/refs/skottie-sample-1@180.png +0 -0
- package/conformance/motion/refs/skottie-sample-search@0.png +0 -0
- package/conformance/motion/refs/skottie-sample-search@27.png +0 -0
- package/conformance/motion/refs/skottie-sample-search@48.png +0 -0
- package/conformance/motion/refs/skottie-spatial-supernormal@0.png +0 -0
- package/conformance/motion/refs/skottie-spatial-supernormal@200.png +0 -0
- package/conformance/motion/refs/skottie-spatial-supernormal@360.png +0 -0
- package/conformance/motion/refs/skottie-text-animator-1@0.png +0 -0
- package/conformance/motion/refs/skottie-text-animator-1@150.png +0 -0
- package/conformance/motion/refs/skottie-text-animator-1@270.png +0 -0
- package/conformance/motion/refs/skottie-text-fill-over-stroke@0.png +0 -0
- package/conformance/motion/refs/skottie-text-fill-over-stroke@210.png +0 -0
- package/conformance/motion/refs/skottie-text-fill-over-stroke@378.png +0 -0
- package/conformance/motion/refs/skottie-text-tracking@0.png +0 -0
- package/conformance/motion/refs/skottie-text-tracking@108.png +0 -0
- package/conformance/motion/refs/skottie-text-tracking@60.png +0 -0
- package/conformance/motion/refs/skottie-text-valign@0.png +0 -0
- package/conformance/motion/refs/skottie-text-valign@150.png +0 -0
- package/conformance/motion/refs/skottie-text-valign@270.png +0 -0
- package/conformance/motion/refs/skottie-time-reverse@0.png +0 -0
- package/conformance/motion/refs/skottie-time-reverse@300.png +0 -0
- package/conformance/motion/refs/skottie-time-reverse@540.png +0 -0
- package/conformance/motion/refs/skottie-transform-skew@0.png +0 -0
- package/conformance/motion/refs/skottie-transform-skew@300.png +0 -0
- package/conformance/motion/refs/skottie-transform-skew@540.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-fill@0.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-fill@300.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-fill@540.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-modes@0.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-modes@300.png +0 -0
- package/conformance/motion/refs/skottie-trimpath-modes@540.png +0 -0
- package/conformance/motion/refs/skottie-tritone-effect@0.png +0 -0
- package/conformance/motion/refs/skottie-tritone-effect@300.png +0 -0
- package/conformance/motion/refs/skottie-tritone-effect@540.png +0 -0
- package/conformance/motion/refs/spec-blend-mode@0.png +0 -0
- package/conformance/motion/refs/spec-blend-mode@162.png +0 -0
- package/conformance/motion/refs/spec-blend-mode@90.png +0 -0
- package/conformance/motion/refs/spec-ellipse@0.png +0 -0
- package/conformance/motion/refs/spec-ellipse@162.png +0 -0
- package/conformance/motion/refs/spec-ellipse@90.png +0 -0
- package/conformance/motion/refs/spec-fill@0.png +0 -0
- package/conformance/motion/refs/spec-fill@162.png +0 -0
- package/conformance/motion/refs/spec-fill@90.png +0 -0
- package/conformance/motion/refs/spec-gradient-stroke@0.png +0 -0
- package/conformance/motion/refs/spec-gradient-stroke@162.png +0 -0
- package/conformance/motion/refs/spec-gradient-stroke@90.png +0 -0
- package/conformance/motion/refs/spec-gradient@0.png +0 -0
- package/conformance/motion/refs/spec-gradient@162.png +0 -0
- package/conformance/motion/refs/spec-gradient@90.png +0 -0
- package/conformance/motion/refs/spec-mask@0.png +0 -0
- package/conformance/motion/refs/spec-mask@300.png +0 -0
- package/conformance/motion/refs/spec-mask@540.png +0 -0
- package/conformance/motion/refs/spec-masks@0.png +0 -0
- package/conformance/motion/refs/spec-masks@135.png +0 -0
- package/conformance/motion/refs/spec-masks@75.png +0 -0
- package/conformance/motion/refs/spec-matte@0.png +0 -0
- package/conformance/motion/refs/spec-matte@162.png +0 -0
- package/conformance/motion/refs/spec-matte@90.png +0 -0
- package/conformance/motion/refs/spec-metadata@0.png +0 -0
- package/conformance/motion/refs/spec-metadata@162.png +0 -0
- package/conformance/motion/refs/spec-metadata@90.png +0 -0
- package/conformance/motion/refs/spec-path@0.png +0 -0
- package/conformance/motion/refs/spec-path@162.png +0 -0
- package/conformance/motion/refs/spec-path@90.png +0 -0
- package/conformance/motion/refs/spec-pucker-bloat@0.png +0 -0
- package/conformance/motion/refs/spec-pucker-bloat@162.png +0 -0
- package/conformance/motion/refs/spec-pucker-bloat@90.png +0 -0
- package/conformance/motion/refs/spec-rectangle@0.png +0 -0
- package/conformance/motion/refs/spec-rectangle@162.png +0 -0
- package/conformance/motion/refs/spec-rectangle@90.png +0 -0
- package/conformance/motion/refs/spec-rounded-corners@0.png +0 -0
- package/conformance/motion/refs/spec-rounded-corners@162.png +0 -0
- package/conformance/motion/refs/spec-rounded-corners@90.png +0 -0
- package/conformance/motion/refs/spec-slots@0.png +0 -0
- package/conformance/motion/refs/spec-slots@450.png +0 -0
- package/conformance/motion/refs/spec-slots@810.png +0 -0
- package/conformance/motion/refs/spec-star@0.png +0 -0
- package/conformance/motion/refs/spec-star@162.png +0 -0
- package/conformance/motion/refs/spec-star@90.png +0 -0
- package/conformance/motion/refs/spec-stroke@0.png +0 -0
- package/conformance/motion/refs/spec-stroke@162.png +0 -0
- package/conformance/motion/refs/spec-stroke@90.png +0 -0
- package/conformance/motion/refs/spec-test-ellipse-xy-pos@0.png +0 -0
- package/conformance/motion/refs/spec-test-ellipse-xy-pos@162.png +0 -0
- package/conformance/motion/refs/spec-test-ellipse-xy-pos@90.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-fill@0.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-fill@30.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-fill@54.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-stroke@0.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-stroke@30.png +0 -0
- package/conformance/motion/refs/spec-test-gradient-stroke@54.png +0 -0
- package/conformance/motion/refs/spec-test-unknown-shape@0.png +0 -0
- package/conformance/motion/refs/spec-test-unknown-shape@162.png +0 -0
- package/conformance/motion/refs/spec-test-unknown-shape@90.png +0 -0
- package/conformance/motion/refs/spec-time-remap@0.png +0 -0
- package/conformance/motion/refs/spec-time-remap@300.png +0 -0
- package/conformance/motion/refs/spec-time-remap@540.png +0 -0
- package/conformance/motion/refs/spec-time-stretch@0.png +0 -0
- package/conformance/motion/refs/spec-time-stretch@300.png +0 -0
- package/conformance/motion/refs/spec-time-stretch@540.png +0 -0
- package/conformance/motion/refs/spec-transform@0.png +0 -0
- package/conformance/motion/refs/spec-transform@162.png +0 -0
- package/conformance/motion/refs/spec-transform@90.png +0 -0
- package/conformance/motion/refs/spec-trim-path@0.png +0 -0
- package/conformance/motion/refs/spec-trim-path@162.png +0 -0
- package/conformance/motion/refs/spec-trim-path@90.png +0 -0
- package/conformance/motion/refs/web-adrock@0.png +0 -0
- package/conformance/motion/refs/web-adrock@10.png +0 -0
- package/conformance/motion/refs/web-adrock@18.png +0 -0
- package/conformance/motion/refs/web-bacon@0.png +0 -0
- package/conformance/motion/refs/web-bacon@126.png +0 -0
- package/conformance/motion/refs/web-bacon@70.png +0 -0
- package/conformance/motion/refs/web-banner@0.png +0 -0
- package/conformance/motion/refs/web-banner@301.png +0 -0
- package/conformance/motion/refs/web-banner@542.png +0 -0
- package/conformance/motion/refs/web-bodymovin@0.png +0 -0
- package/conformance/motion/refs/web-bodymovin@51.png +0 -0
- package/conformance/motion/refs/web-bodymovin@92.png +0 -0
- package/conformance/motion/refs/web-dalek@0.png +0 -0
- package/conformance/motion/refs/web-dalek@145.png +0 -0
- package/conformance/motion/refs/web-dalek@261.png +0 -0
- package/conformance/motion/refs/web-footage-data@0.png +0 -0
- package/conformance/motion/refs/web-footage-data@180.png +0 -0
- package/conformance/motion/refs/web-footage-data@324.png +0 -0
- package/conformance/motion/refs/web-lights@0.png +0 -0
- package/conformance/motion/refs/web-lights@150.png +0 -0
- package/conformance/motion/refs/web-lights@270.png +0 -0
- package/conformance/motion/refs/web-ripple@0.png +0 -0
- package/conformance/motion/refs/web-ripple@180.png +0 -0
- package/conformance/motion/refs/web-ripple@324.png +0 -0
- package/conformance/motion/refs/web-starfish@0.png +0 -0
- package/conformance/motion/refs/web-starfish@150.png +0 -0
- package/conformance/motion/refs/web-starfish@270.png +0 -0
- package/conformance/motion/render-refs.ts +126 -0
- package/conformance/motion/report.json +1367 -0
- package/conformance/motion/web-parity-gaps.json +12 -0
- package/conformance/motion-parity-entry.ts +3 -0
- package/conformance/motion-parity.ts +101 -0
- package/dist/chunks/{index-4z7f2bp1.js → index-4xczxey5.js} +35 -15
- package/dist/chunks/{index-4z7f2bp1.js.map → index-4xczxey5.js.map} +4 -4
- package/dist/chunks/{index-dx45asrf.js → index-5sjj5p84.js} +174 -8
- package/dist/chunks/{index-dx45asrf.js.map → index-5sjj5p84.js.map} +2 -2
- package/dist/chunks/{index-fy7y2nz8.js → index-cvf7bbs5.js} +23 -2
- package/dist/chunks/{index-fy7y2nz8.js.map → index-cvf7bbs5.js.map} +1 -1
- package/dist/chunks/index-dgkf6yw5.js +48 -0
- package/dist/chunks/index-dgkf6yw5.js.map +10 -0
- package/dist/chunks/{index-abcjanhc.js → index-f9wkb6aq.js} +192 -3
- package/dist/chunks/{index-abcjanhc.js.map → index-f9wkb6aq.js.map} +2 -2
- package/dist/chunks/index-t2mwfbb6.js +1515 -0
- package/dist/chunks/index-t2mwfbb6.js.map +15 -0
- package/dist/chunks/{index-h3zgfghf.js → index-vkn82srs.js} +179 -8
- package/dist/chunks/{index-h3zgfghf.js.map → index-vkn82srs.js.map} +2 -2
- package/dist/chunks/wasm-ctcc3cma.js +424 -0
- package/dist/chunks/wasm-ctcc3cma.js.map +11 -0
- package/dist/conformance.js +3154 -63
- package/dist/conformance.js.map +2 -2
- package/dist/entries/prompt.js +2 -2
- package/dist/entries/schema.js +3 -3
- package/dist/host/index.js +3 -3
- package/dist/index.js +333 -98
- package/dist/index.js.map +4 -4
- package/dist/types/src/catalog.generated.d.ts +50 -4
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/layout.d.ts +2 -0
- package/dist/types/src/limits.d.ts +1 -0
- package/dist/types/src/motion/index.d.ts +1 -0
- package/dist/types/src/motion/server.d.ts +9 -0
- package/dist/types/src/motion/wasm.d.ts +11 -0
- package/dist/types/src/web/coerce.d.ts +3 -0
- package/dist/types/src/web/focus.d.ts +8 -0
- package/dist/types/src/web/index.d.ts +5 -2
- package/dist/types/src/web/primitives/carousel.d.ts +1 -1
- package/dist/types/src/web/primitives/dock.d.ts +5 -2
- package/dist/types/src/web/primitives/index.d.ts +2 -0
- package/dist/types/src/web/primitives/motion-paint.d.ts +36 -0
- package/dist/types/src/web/primitives/motion.d.ts +162 -0
- package/dist/types/src/web/primitives/zoomable-image.d.ts +158 -0
- package/dist/types/src/web/table.d.ts +8 -0
- package/dist/types/src/zoom.d.ts +128 -0
- package/dist/types/wasm/motion/bytes.d.ts +1 -0
- package/dist/web/index.js +165 -230
- package/dist/web/index.js.map +8 -9
- package/dist/web/primitives/index.js +584 -7
- package/dist/web/primitives/index.js.map +7 -6
- package/docs/components.generated.json +392 -4
- package/docs/round-6-contract.md +5 -3
- package/docs/themes.generated.json +27 -0
- package/fixtures/bind-time.json +4 -0
- package/fixtures/catalog-components.json +930 -16
- package/fixtures/catalog-macros.json +11 -0
- package/fixtures/conformance-baseline.json +33020 -32952
- package/fixtures/conformance-known.json +64 -70
- package/fixtures/kitchen-sink.expanded.json +72 -0
- package/fixtures/kitchen-sink.json +33 -0
- package/fixtures/layout-geometry-round1.json +42 -42
- package/fixtures/motion-frames.json +2618 -0
- package/fixtures/motion-playback.json +528 -0
- package/fixtures/motion-state.json +722 -0
- package/fixtures/motion-validate.json +138 -0
- package/fixtures/primitive-specimens.json +1 -0
- package/fixtures/prompt-budget.json +16 -16
- package/fixtures/specimens.json +717 -21
- package/fixtures/theme-recipes.json +1518 -32
- package/fixtures/theme-resolved.json +732 -56
- package/fixtures/zoom.json +1382 -0
- package/generated/ExponentialUICatalog.generated.kt +20 -20
- package/generated/ExponentialUICatalog.generated.swift +20 -20
- package/generated/ExponentialUIThemes.generated.kt +7 -7
- package/generated/ExponentialUIThemes.generated.swift +7 -7
- package/generated/catalog.descriptions.generated.rs +1 -1
- package/generated/catalog.generated.rs +29 -29
- package/generated/catalog.themes.generated.rs +8 -8
- package/generated/core.descriptions.json +171 -5
- package/generated/core.runtime.json +189 -1
- package/package.json +1 -1
- package/themes/neutral.theme.json +172 -3
- package/dist/chunks/index-t6qz1770.js +0 -95
- package/dist/chunks/index-t6qz1770.js.map +0 -11
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
__chunks,
|
|
2
3
|
layoutSize2,
|
|
3
4
|
visualScale2,
|
|
4
5
|
elementScale2,
|
|
@@ -9,8 +10,27 @@ import {
|
|
|
9
10
|
voiceWaveName2,
|
|
10
11
|
voiceWaveClock2,
|
|
11
12
|
voiceWaveFitChild2,
|
|
12
|
-
VOICE_WAVE_CLASSES2
|
|
13
|
-
|
|
13
|
+
VOICE_WAVE_CLASSES2,
|
|
14
|
+
motionFitMatrix2,
|
|
15
|
+
motionConcat2,
|
|
16
|
+
motionFrameSize2,
|
|
17
|
+
MotionCanvasPool2,
|
|
18
|
+
paintMotionFrame2,
|
|
19
|
+
MOTION_MAX_PLAYING2,
|
|
20
|
+
MOTION_MAX_FPS2,
|
|
21
|
+
motionDeclaredSize2,
|
|
22
|
+
motionBoxStyle2,
|
|
23
|
+
motionFit2,
|
|
24
|
+
motionA11y2,
|
|
25
|
+
motionThemeSlots2,
|
|
26
|
+
motionCanPaint2,
|
|
27
|
+
motionFromDotLottie2,
|
|
28
|
+
motionDotLottie2,
|
|
29
|
+
MotionStateDriver2,
|
|
30
|
+
MotionView2,
|
|
31
|
+
resetMotionThemeIds2
|
|
32
|
+
} from "../../chunks/index-t2mwfbb6.js";
|
|
33
|
+
__chunks(import.meta.url,["ts0twve6","t2mwfbb6","ctcc3cma"],[["./index.js",1],["../../chunks/index-t2mwfbb6.js"],["../../chunks/wasm-ctcc3cma.js",1]],0);
|
|
14
34
|
|
|
15
35
|
// packages/exponential-ui/src/web/primitives/button.ts
|
|
16
36
|
import { cva } from "class-variance-authority";
|
|
@@ -207,7 +227,7 @@ function carouselCounterText(page, total) {
|
|
|
207
227
|
return `${page + 1} / ${total}`;
|
|
208
228
|
}
|
|
209
229
|
var CAROUSEL_CLASSES = {
|
|
210
|
-
counter: `pointer-events-none absolute
|
|
230
|
+
counter: `pointer-events-none absolute end-2 top-2 z-10 rounded-full bg-black/55 px-2 text-xs leading-5 font-medium text-white tabular-nums`,
|
|
211
231
|
thumbnails: `flex flex-row gap-[8px] overflow-x-auto pt-2 [scrollbar-width:none]`,
|
|
212
232
|
thumbnail: `relative size-[52px] shrink-0 cursor-pointer overflow-hidden rounded-md border-2 border-transparent bg-muted p-0 opacity-70 outline-none transition-opacity duration-fast hover:opacity-100 focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[current=true]:border-foreground data-[current=true]:opacity-100`,
|
|
213
233
|
thumbnailImage: `size-full object-cover`
|
|
@@ -992,8 +1012,8 @@ var DOCK_CARD_CLASSES = {
|
|
|
992
1012
|
icon: `mt-0.5 size-3.5 shrink-0`,
|
|
993
1013
|
text: `min-w-0 flex-1`,
|
|
994
1014
|
header: `mb-1 flex items-center gap-2`,
|
|
995
|
-
label: `truncate text-xs font-medium`,
|
|
996
|
-
caption: `min-w-0 truncate text-xs text-muted-foreground`,
|
|
1015
|
+
label: `max-w-full shrink-0 truncate text-xs font-medium`,
|
|
1016
|
+
caption: `min-w-0 flex-1 basis-0 truncate text-xs text-muted-foreground`,
|
|
997
1017
|
meta: `ml-auto shrink-0 text-xs text-muted-foreground`,
|
|
998
1018
|
row: `flex min-w-0 items-center gap-2`,
|
|
999
1019
|
title: `min-w-0 flex-1 truncate text-sm text-foreground/90`,
|
|
@@ -1377,6 +1397,531 @@ var TYPEAHEAD_PORTAL_SELECTOR = `[data-editor-autocomplete]`;
|
|
|
1377
1397
|
function isTypeaheadPortalInteraction(event) {
|
|
1378
1398
|
return event.target instanceof Element && event.target.closest(TYPEAHEAD_PORTAL_SELECTOR) !== null;
|
|
1379
1399
|
}
|
|
1400
|
+
// packages/exponential-ui/src/web/primitives/zoomable-image.ts
|
|
1401
|
+
var ZOOM_CONTROLS = [`auto`, `always`, `none`];
|
|
1402
|
+
var ZOOM_DOUBLE_TAP_MS = 300;
|
|
1403
|
+
var ZOOM_DOUBLE_TAP_SLOP = 24;
|
|
1404
|
+
var ZOOM_TAP_SLOP = 4;
|
|
1405
|
+
var ZOOM_WHEEL_SETTLE_MS = 150;
|
|
1406
|
+
function zoomBoxAspect(math, natural, styledHeight) {
|
|
1407
|
+
if (styledHeight)
|
|
1408
|
+
return null;
|
|
1409
|
+
if (!natural || !(natural.width > 0) || !(natural.height > 0))
|
|
1410
|
+
return 16 / 9;
|
|
1411
|
+
if (math.zoomIsTall(natural))
|
|
1412
|
+
return 1;
|
|
1413
|
+
return natural.width / natural.height;
|
|
1414
|
+
}
|
|
1415
|
+
function zoomDeclaredSize(width, height) {
|
|
1416
|
+
const w = typeof width === `number` && Number.isFinite(width) ? width : 0;
|
|
1417
|
+
const h = typeof height === `number` && Number.isFinite(height) ? height : 0;
|
|
1418
|
+
return w > 0 && h > 0 ? { width: w, height: h } : null;
|
|
1419
|
+
}
|
|
1420
|
+
function zoomPillOf(math, view, frame) {
|
|
1421
|
+
const { atMin, atMax } = math.zoomBounds(view, frame);
|
|
1422
|
+
return { percent: math.zoomPercent(view.scale), atMin, atMax, atRest: math.zoomAtRest(view, frame) };
|
|
1423
|
+
}
|
|
1424
|
+
var sameView = (a, b) => Math.abs(a.scale - b.scale) < 0.000001 && Math.abs(a.x - b.x) < 0.001 && Math.abs(a.y - b.y) < 0.001;
|
|
1425
|
+
var samePill = (a, b) => !!a && a.percent === b.percent && a.atMin === b.atMin && a.atMax === b.atMax && a.atRest === b.atRest;
|
|
1426
|
+
var now = () => typeof performance !== `undefined` ? performance.now() : Date.now();
|
|
1427
|
+
var raf = (fn) => typeof requestAnimationFrame === `function` ? requestAnimationFrame(fn) : setTimeout(() => fn(now()), 16);
|
|
1428
|
+
var cancelRaf = (id) => typeof cancelAnimationFrame === `function` ? cancelAnimationFrame(id) : clearTimeout(id);
|
|
1429
|
+
function createZoomController(o) {
|
|
1430
|
+
const m = o.math;
|
|
1431
|
+
const { root, image } = o;
|
|
1432
|
+
let view = { scale: 1, x: 0, y: 0 };
|
|
1433
|
+
let viewport = { width: 0, height: 0 };
|
|
1434
|
+
let painted = false;
|
|
1435
|
+
let pill = null;
|
|
1436
|
+
let lastEmitted = null;
|
|
1437
|
+
const pointers = new Map;
|
|
1438
|
+
let drag = null;
|
|
1439
|
+
let pinch = null;
|
|
1440
|
+
let safari = null;
|
|
1441
|
+
let momentum = 0;
|
|
1442
|
+
let wheelTimer = null;
|
|
1443
|
+
let tapTimer = null;
|
|
1444
|
+
let lastTap = null;
|
|
1445
|
+
let visible = true;
|
|
1446
|
+
let hideTimer = null;
|
|
1447
|
+
let hovered = false;
|
|
1448
|
+
let held = false;
|
|
1449
|
+
const frame = () => {
|
|
1450
|
+
const natural = o.natural();
|
|
1451
|
+
if (!natural || viewport.width <= 0 || viewport.height <= 0)
|
|
1452
|
+
return null;
|
|
1453
|
+
return { natural, viewport, initial: o.initial(), maxScale: o.maxScale() };
|
|
1454
|
+
};
|
|
1455
|
+
const point = (e) => {
|
|
1456
|
+
const r = root.getBoundingClientRect();
|
|
1457
|
+
return { x: e.clientX - r.left, y: e.clientY - r.top };
|
|
1458
|
+
};
|
|
1459
|
+
const cursor = () => {
|
|
1460
|
+
const f = frame();
|
|
1461
|
+
if (!f)
|
|
1462
|
+
return;
|
|
1463
|
+
root.style.cursor = drag && drag.type === `mouse` && drag.moved ? `grabbing` : m.zoomAtRest(view, f) ? `zoom-in` : `grab`;
|
|
1464
|
+
const room = m.zoomPanRoom(view, f);
|
|
1465
|
+
root.style.touchAction = room.x && room.y ? `none` : room.x ? `pan-y` : room.y ? `pan-x` : `pan-x pan-y`;
|
|
1466
|
+
};
|
|
1467
|
+
const paint = (next, animated = false) => {
|
|
1468
|
+
view = next;
|
|
1469
|
+
const transition = animated ? o.transition() : null;
|
|
1470
|
+
image.style.transition = transition ?? ``;
|
|
1471
|
+
image.style.transform = `translate(${next.x}px, ${next.y}px) scale(${next.scale})`;
|
|
1472
|
+
if (!painted) {
|
|
1473
|
+
painted = true;
|
|
1474
|
+
image.style.visibility = ``;
|
|
1475
|
+
}
|
|
1476
|
+
const f = frame();
|
|
1477
|
+
if (f) {
|
|
1478
|
+
const p = zoomPillOf(m, next, f);
|
|
1479
|
+
if (!samePill(pill, p)) {
|
|
1480
|
+
pill = p;
|
|
1481
|
+
o.onPill(p);
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
cursor();
|
|
1485
|
+
};
|
|
1486
|
+
const settle = () => {
|
|
1487
|
+
const f = frame();
|
|
1488
|
+
if (!f)
|
|
1489
|
+
return;
|
|
1490
|
+
if (lastEmitted !== null && Math.abs(lastEmitted - view.scale) < 0.000001)
|
|
1491
|
+
return;
|
|
1492
|
+
lastEmitted = view.scale;
|
|
1493
|
+
o.onZoom(view.scale, m.zoomAtRest(view, f));
|
|
1494
|
+
};
|
|
1495
|
+
const stopMotion = () => {
|
|
1496
|
+
if (momentum)
|
|
1497
|
+
cancelRaf(momentum);
|
|
1498
|
+
momentum = 0;
|
|
1499
|
+
};
|
|
1500
|
+
const setVisible = (next) => {
|
|
1501
|
+
if (visible === next)
|
|
1502
|
+
return;
|
|
1503
|
+
visible = next;
|
|
1504
|
+
o.onPillVisible(next);
|
|
1505
|
+
};
|
|
1506
|
+
const kept = () => {
|
|
1507
|
+
const el = o.pill();
|
|
1508
|
+
return held || hovered || !!el && typeof document !== `undefined` && el.contains(document.activeElement);
|
|
1509
|
+
};
|
|
1510
|
+
const armHide = () => {
|
|
1511
|
+
if (hideTimer)
|
|
1512
|
+
clearTimeout(hideTimer);
|
|
1513
|
+
hideTimer = null;
|
|
1514
|
+
if (!o.autoHide())
|
|
1515
|
+
return;
|
|
1516
|
+
hideTimer = setTimeout(() => {
|
|
1517
|
+
hideTimer = null;
|
|
1518
|
+
if (!kept())
|
|
1519
|
+
setVisible(false);
|
|
1520
|
+
}, m.ZOOM.autoHideMs);
|
|
1521
|
+
};
|
|
1522
|
+
const activity = () => {
|
|
1523
|
+
if (!o.autoHide())
|
|
1524
|
+
return;
|
|
1525
|
+
setVisible(true);
|
|
1526
|
+
armHide();
|
|
1527
|
+
};
|
|
1528
|
+
const jump = (next) => {
|
|
1529
|
+
stopMotion();
|
|
1530
|
+
paint(next, true);
|
|
1531
|
+
settle();
|
|
1532
|
+
activity();
|
|
1533
|
+
};
|
|
1534
|
+
const restView = (f) => {
|
|
1535
|
+
const rest = m.zoomRestView(f);
|
|
1536
|
+
const bound = o.boundScale();
|
|
1537
|
+
return bound !== undefined && Number.isFinite(bound) && bound > 0 ? m.zoomTo(rest, bound, m.zoomCentre(f), f) : rest;
|
|
1538
|
+
};
|
|
1539
|
+
const reset = () => {
|
|
1540
|
+
stopMotion();
|
|
1541
|
+
drag = null;
|
|
1542
|
+
pinch = null;
|
|
1543
|
+
const f = frame();
|
|
1544
|
+
if (!f) {
|
|
1545
|
+
painted = false;
|
|
1546
|
+
image.style.visibility = `hidden`;
|
|
1547
|
+
return;
|
|
1548
|
+
}
|
|
1549
|
+
paint(restView(f));
|
|
1550
|
+
lastEmitted = view.scale;
|
|
1551
|
+
};
|
|
1552
|
+
const measure = () => {
|
|
1553
|
+
const next = { width: root.clientWidth, height: root.clientHeight };
|
|
1554
|
+
if (next.width === viewport.width && next.height === viewport.height)
|
|
1555
|
+
return;
|
|
1556
|
+
const from = viewport;
|
|
1557
|
+
const before = frame();
|
|
1558
|
+
viewport = next;
|
|
1559
|
+
const f = frame();
|
|
1560
|
+
if (!f)
|
|
1561
|
+
return;
|
|
1562
|
+
if (!before || !painted) {
|
|
1563
|
+
paint(restView(f));
|
|
1564
|
+
lastEmitted = view.scale;
|
|
1565
|
+
return;
|
|
1566
|
+
}
|
|
1567
|
+
paint(m.zoomResize(view, from, f));
|
|
1568
|
+
};
|
|
1569
|
+
const tap = (at, type) => {
|
|
1570
|
+
const t = now();
|
|
1571
|
+
if (lastTap && t - lastTap.t < ZOOM_DOUBLE_TAP_MS && Math.hypot(at.x - lastTap.x, at.y - lastTap.y) < ZOOM_DOUBLE_TAP_SLOP) {
|
|
1572
|
+
if (tapTimer)
|
|
1573
|
+
clearTimeout(tapTimer);
|
|
1574
|
+
tapTimer = null;
|
|
1575
|
+
lastTap = null;
|
|
1576
|
+
const f = frame();
|
|
1577
|
+
if (f)
|
|
1578
|
+
jump(m.zoomDoubleTap(view, at, f));
|
|
1579
|
+
return;
|
|
1580
|
+
}
|
|
1581
|
+
lastTap = { t, x: at.x, y: at.y };
|
|
1582
|
+
if (tapTimer)
|
|
1583
|
+
clearTimeout(tapTimer);
|
|
1584
|
+
tapTimer = setTimeout(() => {
|
|
1585
|
+
tapTimer = null;
|
|
1586
|
+
lastTap = null;
|
|
1587
|
+
if (type === `touch` && o.autoHide()) {
|
|
1588
|
+
if (visible)
|
|
1589
|
+
setVisible(false);
|
|
1590
|
+
else
|
|
1591
|
+
activity();
|
|
1592
|
+
}
|
|
1593
|
+
const f = frame();
|
|
1594
|
+
if (f && m.zoomAtRest(view, f))
|
|
1595
|
+
o.onTap();
|
|
1596
|
+
}, ZOOM_DOUBLE_TAP_MS);
|
|
1597
|
+
};
|
|
1598
|
+
const release = (vx = 0, vy = 0) => {
|
|
1599
|
+
const f = frame();
|
|
1600
|
+
if (!f)
|
|
1601
|
+
return;
|
|
1602
|
+
const clamped = m.zoomClamp(view, f);
|
|
1603
|
+
if (!sameView(clamped, view)) {
|
|
1604
|
+
paint(clamped, true);
|
|
1605
|
+
settle();
|
|
1606
|
+
return;
|
|
1607
|
+
}
|
|
1608
|
+
settle();
|
|
1609
|
+
if (!m.zoomMomentumActive(vx, vy, 0))
|
|
1610
|
+
return;
|
|
1611
|
+
const from = view;
|
|
1612
|
+
const started = now();
|
|
1613
|
+
const step = () => {
|
|
1614
|
+
const t = now() - started;
|
|
1615
|
+
const g = frame();
|
|
1616
|
+
if (!g)
|
|
1617
|
+
return;
|
|
1618
|
+
paint(m.zoomMomentum(from, vx, vy, t, g));
|
|
1619
|
+
momentum = m.zoomMomentumActive(vx, vy, t) ? raf(step) : 0;
|
|
1620
|
+
};
|
|
1621
|
+
momentum = raf(step);
|
|
1622
|
+
};
|
|
1623
|
+
const velocity = (samples) => {
|
|
1624
|
+
const last = samples[samples.length - 1];
|
|
1625
|
+
if (!last || now() - last.t > 50)
|
|
1626
|
+
return { vx: 0, vy: 0 };
|
|
1627
|
+
const first = samples.find((s) => last.t - s.t <= 100) ?? last;
|
|
1628
|
+
const dt = last.t - first.t;
|
|
1629
|
+
return dt > 0 ? { vx: (last.x - first.x) / dt, vy: (last.y - first.y) / dt } : { vx: 0, vy: 0 };
|
|
1630
|
+
};
|
|
1631
|
+
const inPill = (target) => {
|
|
1632
|
+
const el = o.pill();
|
|
1633
|
+
return !!el && target instanceof Node && el.contains(target);
|
|
1634
|
+
};
|
|
1635
|
+
const startPinch = () => {
|
|
1636
|
+
const [a, b] = [...pointers.values()];
|
|
1637
|
+
if (!a || !b)
|
|
1638
|
+
return;
|
|
1639
|
+
drag = null;
|
|
1640
|
+
pinch = { start: view, dist: Math.max(1, Math.hypot(a.x - b.x, a.y - b.y)), mid: { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 } };
|
|
1641
|
+
};
|
|
1642
|
+
const onPointerDown = (e) => {
|
|
1643
|
+
if (inPill(e.target))
|
|
1644
|
+
return;
|
|
1645
|
+
if (e.pointerType === `mouse` && e.button !== 0)
|
|
1646
|
+
return;
|
|
1647
|
+
const f = frame();
|
|
1648
|
+
if (!f)
|
|
1649
|
+
return;
|
|
1650
|
+
stopMotion();
|
|
1651
|
+
if (image.style.transition)
|
|
1652
|
+
paint(view);
|
|
1653
|
+
const at = point(e);
|
|
1654
|
+
pointers.set(e.pointerId, { x: at.x, y: at.y, type: e.pointerType });
|
|
1655
|
+
try {
|
|
1656
|
+
root.setPointerCapture(e.pointerId);
|
|
1657
|
+
} catch {}
|
|
1658
|
+
if (pointers.size === 2 && e.pointerType === `touch`) {
|
|
1659
|
+
startPinch();
|
|
1660
|
+
return;
|
|
1661
|
+
}
|
|
1662
|
+
if (pointers.size === 1)
|
|
1663
|
+
drag = { id: e.pointerId, type: e.pointerType, start: view, sx: at.x, sy: at.y, moved: false, samples: [{ t: now(), x: at.x, y: at.y }] };
|
|
1664
|
+
};
|
|
1665
|
+
const onPointerMove = (e) => {
|
|
1666
|
+
if (e.pointerType === `mouse` || pointers.has(e.pointerId))
|
|
1667
|
+
activity();
|
|
1668
|
+
const p = pointers.get(e.pointerId);
|
|
1669
|
+
if (!p)
|
|
1670
|
+
return;
|
|
1671
|
+
const at = point(e);
|
|
1672
|
+
p.x = at.x;
|
|
1673
|
+
p.y = at.y;
|
|
1674
|
+
const f = frame();
|
|
1675
|
+
if (!f)
|
|
1676
|
+
return;
|
|
1677
|
+
if (pinch) {
|
|
1678
|
+
const [a, b] = [...pointers.values()];
|
|
1679
|
+
if (!a || !b)
|
|
1680
|
+
return;
|
|
1681
|
+
const mid = { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 };
|
|
1682
|
+
const dist = Math.max(1, Math.hypot(a.x - b.x, a.y - b.y));
|
|
1683
|
+
const start = { scale: pinch.start.scale, x: pinch.start.x + mid.x - pinch.mid.x, y: pinch.start.y + mid.y - pinch.mid.y };
|
|
1684
|
+
paint(m.zoomPinch(start, dist / pinch.dist, mid, f));
|
|
1685
|
+
e.preventDefault();
|
|
1686
|
+
return;
|
|
1687
|
+
}
|
|
1688
|
+
if (!drag || drag.id !== e.pointerId)
|
|
1689
|
+
return;
|
|
1690
|
+
let dx = at.x - drag.sx;
|
|
1691
|
+
let dy = at.y - drag.sy;
|
|
1692
|
+
if (!drag.moved && Math.hypot(dx, dy) < ZOOM_TAP_SLOP)
|
|
1693
|
+
return;
|
|
1694
|
+
if (drag.type === `touch`) {
|
|
1695
|
+
const room = m.zoomPanRoom(drag.start, f);
|
|
1696
|
+
if (!room.x)
|
|
1697
|
+
dx = 0;
|
|
1698
|
+
if (!room.y)
|
|
1699
|
+
dy = 0;
|
|
1700
|
+
if (!drag.moved && dx === 0 && dy === 0)
|
|
1701
|
+
return;
|
|
1702
|
+
}
|
|
1703
|
+
drag.moved = true;
|
|
1704
|
+
drag.samples.push({ t: now(), x: at.x, y: at.y });
|
|
1705
|
+
if (drag.samples.length > 8)
|
|
1706
|
+
drag.samples.shift();
|
|
1707
|
+
paint(m.zoomDrag(drag.start, dx, dy, f));
|
|
1708
|
+
e.preventDefault();
|
|
1709
|
+
};
|
|
1710
|
+
const onPointerUp = (e) => {
|
|
1711
|
+
const had = pointers.delete(e.pointerId);
|
|
1712
|
+
if (!had)
|
|
1713
|
+
return;
|
|
1714
|
+
const cancelled = e.type === `pointercancel`;
|
|
1715
|
+
if (pinch) {
|
|
1716
|
+
if (pointers.size < 2) {
|
|
1717
|
+
pinch = null;
|
|
1718
|
+
drag = null;
|
|
1719
|
+
release();
|
|
1720
|
+
}
|
|
1721
|
+
return;
|
|
1722
|
+
}
|
|
1723
|
+
const d = drag;
|
|
1724
|
+
if (!d || d.id !== e.pointerId)
|
|
1725
|
+
return;
|
|
1726
|
+
drag = null;
|
|
1727
|
+
if (!d.moved) {
|
|
1728
|
+
cursor();
|
|
1729
|
+
if (!cancelled)
|
|
1730
|
+
tap({ x: d.sx, y: d.sy }, d.type);
|
|
1731
|
+
return;
|
|
1732
|
+
}
|
|
1733
|
+
const v = d.type === `mouse` && !cancelled ? velocity(d.samples) : { vx: 0, vy: 0 };
|
|
1734
|
+
release(v.vx, v.vy);
|
|
1735
|
+
};
|
|
1736
|
+
const onWheel = (e) => {
|
|
1737
|
+
const f = frame();
|
|
1738
|
+
if (!f)
|
|
1739
|
+
return;
|
|
1740
|
+
const mode = e.deltaMode === 1 ? `line` : `pixel`;
|
|
1741
|
+
if (e.ctrlKey || e.metaKey) {
|
|
1742
|
+
e.preventDefault();
|
|
1743
|
+
stopMotion();
|
|
1744
|
+
const page = e.deltaMode === 2 ? viewport.height : 1;
|
|
1745
|
+
paint(m.zoomWheel(view, e.deltaY * page, mode, point(e), f));
|
|
1746
|
+
activity();
|
|
1747
|
+
if (wheelTimer)
|
|
1748
|
+
clearTimeout(wheelTimer);
|
|
1749
|
+
wheelTimer = setTimeout(() => {
|
|
1750
|
+
wheelTimer = null;
|
|
1751
|
+
settle();
|
|
1752
|
+
}, ZOOM_WHEEL_SETTLE_MS);
|
|
1753
|
+
return;
|
|
1754
|
+
}
|
|
1755
|
+
const unit = e.deltaMode === 1 ? m.ZOOM.wheelLinePx : e.deltaMode === 2 ? viewport.height : 1;
|
|
1756
|
+
const next = m.zoomScroll(view, e.deltaX * unit, e.deltaY * unit, f);
|
|
1757
|
+
if (sameView(next, view))
|
|
1758
|
+
return;
|
|
1759
|
+
e.preventDefault();
|
|
1760
|
+
stopMotion();
|
|
1761
|
+
paint(next);
|
|
1762
|
+
activity();
|
|
1763
|
+
};
|
|
1764
|
+
const onGestureStart = (e) => {
|
|
1765
|
+
e.preventDefault();
|
|
1766
|
+
const g = e;
|
|
1767
|
+
if (!frame())
|
|
1768
|
+
return;
|
|
1769
|
+
stopMotion();
|
|
1770
|
+
safari = { start: view, anchor: point(g) };
|
|
1771
|
+
};
|
|
1772
|
+
const onGestureChange = (e) => {
|
|
1773
|
+
e.preventDefault();
|
|
1774
|
+
const f = frame();
|
|
1775
|
+
if (!safari || !f)
|
|
1776
|
+
return;
|
|
1777
|
+
paint(m.zoomPinch(safari.start, e.scale, safari.anchor, f));
|
|
1778
|
+
activity();
|
|
1779
|
+
};
|
|
1780
|
+
const onGestureEnd = (e) => {
|
|
1781
|
+
e.preventDefault();
|
|
1782
|
+
if (!safari)
|
|
1783
|
+
return;
|
|
1784
|
+
safari = null;
|
|
1785
|
+
release();
|
|
1786
|
+
};
|
|
1787
|
+
const onKeyDown = (e) => {
|
|
1788
|
+
if (e.ctrlKey || e.metaKey || e.altKey || e.defaultPrevented)
|
|
1789
|
+
return;
|
|
1790
|
+
if (inPill(e.target) && (e.key === `Enter` || e.key === ` `))
|
|
1791
|
+
return;
|
|
1792
|
+
const f = frame();
|
|
1793
|
+
if (!f)
|
|
1794
|
+
return;
|
|
1795
|
+
const next = m.zoomKey(view, e.key, f);
|
|
1796
|
+
if (!next)
|
|
1797
|
+
return;
|
|
1798
|
+
e.preventDefault();
|
|
1799
|
+
jump(next);
|
|
1800
|
+
};
|
|
1801
|
+
const onFocusIn = () => activity();
|
|
1802
|
+
const onFocusOut = () => armHide();
|
|
1803
|
+
const onPointerOver = (e) => {
|
|
1804
|
+
hovered = inPill(e.target);
|
|
1805
|
+
};
|
|
1806
|
+
const onPointerOut = (e) => {
|
|
1807
|
+
if (!hovered || inPill(e.relatedTarget))
|
|
1808
|
+
return;
|
|
1809
|
+
hovered = false;
|
|
1810
|
+
armHide();
|
|
1811
|
+
};
|
|
1812
|
+
const onDragStart = (e) => e.preventDefault();
|
|
1813
|
+
root.addEventListener(`pointerdown`, onPointerDown);
|
|
1814
|
+
root.addEventListener(`pointermove`, onPointerMove);
|
|
1815
|
+
root.addEventListener(`pointerup`, onPointerUp);
|
|
1816
|
+
root.addEventListener(`pointercancel`, onPointerUp);
|
|
1817
|
+
root.addEventListener(`wheel`, onWheel, { passive: false });
|
|
1818
|
+
root.addEventListener(`gesturestart`, onGestureStart);
|
|
1819
|
+
root.addEventListener(`gesturechange`, onGestureChange);
|
|
1820
|
+
root.addEventListener(`gestureend`, onGestureEnd);
|
|
1821
|
+
root.addEventListener(`keydown`, onKeyDown);
|
|
1822
|
+
root.addEventListener(`focusin`, onFocusIn);
|
|
1823
|
+
root.addEventListener(`focusout`, onFocusOut);
|
|
1824
|
+
root.addEventListener(`dragstart`, onDragStart);
|
|
1825
|
+
root.addEventListener(`pointerover`, onPointerOver);
|
|
1826
|
+
root.addEventListener(`pointerout`, onPointerOut);
|
|
1827
|
+
let ro = null;
|
|
1828
|
+
if (typeof ResizeObserver === `function`) {
|
|
1829
|
+
ro = new ResizeObserver(() => measure());
|
|
1830
|
+
ro.observe(root);
|
|
1831
|
+
}
|
|
1832
|
+
if (!frame())
|
|
1833
|
+
image.style.visibility = `hidden`;
|
|
1834
|
+
measure();
|
|
1835
|
+
armHide();
|
|
1836
|
+
return {
|
|
1837
|
+
view: () => view,
|
|
1838
|
+
frame,
|
|
1839
|
+
step: (direction) => {
|
|
1840
|
+
const f = frame();
|
|
1841
|
+
if (f)
|
|
1842
|
+
jump(m.zoomStep(view, direction, f));
|
|
1843
|
+
},
|
|
1844
|
+
rest: () => {
|
|
1845
|
+
const f = frame();
|
|
1846
|
+
if (f)
|
|
1847
|
+
jump(m.zoomRestView(f));
|
|
1848
|
+
},
|
|
1849
|
+
zoomScale: (scale) => {
|
|
1850
|
+
const f = frame();
|
|
1851
|
+
if (f)
|
|
1852
|
+
jump(m.zoomTo(view, scale, m.zoomCentre(f), f));
|
|
1853
|
+
},
|
|
1854
|
+
syncScale: () => {
|
|
1855
|
+
const f = frame();
|
|
1856
|
+
const bound = o.boundScale();
|
|
1857
|
+
if (!f || bound === undefined || !Number.isFinite(bound) || Math.abs(bound - view.scale) < 0.0001)
|
|
1858
|
+
return;
|
|
1859
|
+
stopMotion();
|
|
1860
|
+
paint(m.zoomTo(view, bound, m.zoomCentre(f), f), true);
|
|
1861
|
+
lastEmitted = view.scale;
|
|
1862
|
+
},
|
|
1863
|
+
reset: () => {
|
|
1864
|
+
measure();
|
|
1865
|
+
reset();
|
|
1866
|
+
},
|
|
1867
|
+
holdPill: (hold) => {
|
|
1868
|
+
held = hold;
|
|
1869
|
+
if (hold)
|
|
1870
|
+
setVisible(true);
|
|
1871
|
+
else
|
|
1872
|
+
armHide();
|
|
1873
|
+
},
|
|
1874
|
+
destroy: () => {
|
|
1875
|
+
stopMotion();
|
|
1876
|
+
if (wheelTimer)
|
|
1877
|
+
clearTimeout(wheelTimer);
|
|
1878
|
+
if (tapTimer)
|
|
1879
|
+
clearTimeout(tapTimer);
|
|
1880
|
+
if (hideTimer)
|
|
1881
|
+
clearTimeout(hideTimer);
|
|
1882
|
+
ro?.disconnect();
|
|
1883
|
+
root.removeEventListener(`pointerdown`, onPointerDown);
|
|
1884
|
+
root.removeEventListener(`pointermove`, onPointerMove);
|
|
1885
|
+
root.removeEventListener(`pointerup`, onPointerUp);
|
|
1886
|
+
root.removeEventListener(`pointercancel`, onPointerUp);
|
|
1887
|
+
root.removeEventListener(`wheel`, onWheel);
|
|
1888
|
+
root.removeEventListener(`gesturestart`, onGestureStart);
|
|
1889
|
+
root.removeEventListener(`gesturechange`, onGestureChange);
|
|
1890
|
+
root.removeEventListener(`gestureend`, onGestureEnd);
|
|
1891
|
+
root.removeEventListener(`keydown`, onKeyDown);
|
|
1892
|
+
root.removeEventListener(`focusin`, onFocusIn);
|
|
1893
|
+
root.removeEventListener(`focusout`, onFocusOut);
|
|
1894
|
+
root.removeEventListener(`dragstart`, onDragStart);
|
|
1895
|
+
root.removeEventListener(`pointerover`, onPointerOver);
|
|
1896
|
+
root.removeEventListener(`pointerout`, onPointerOut);
|
|
1897
|
+
}
|
|
1898
|
+
};
|
|
1899
|
+
}
|
|
1900
|
+
function zoomableImageLayout(pill) {
|
|
1901
|
+
return {
|
|
1902
|
+
root: { overflow: `clip`, userSelect: `none` },
|
|
1903
|
+
image: { position: `absolute`, left: 0, top: 0, display: `block`, maxWidth: `none`, maxHeight: `none`, transformOrigin: `0 0`, pointerEvents: `none`, userSelect: `none` },
|
|
1904
|
+
pill: { position: `absolute`, left: `50%`, bottom: pill.inset, transform: `translateX(-50%)`, zIndex: 1, display: `flex`, flexDirection: `row`, alignItems: `center`, whiteSpace: `nowrap`, cursor: `default`, transition: `opacity var(--xui-motion-standard) var(--xui-ease-standard,ease)` },
|
|
1905
|
+
pillHidden: { opacity: 0, pointerEvents: `none` },
|
|
1906
|
+
button: { display: `inline-flex`, alignItems: `center`, justifyContent: `center`, cursor: `pointer`, flexShrink: 0 },
|
|
1907
|
+
percent: { display: `inline-flex`, alignItems: `center`, justifyContent: `center`, cursor: `pointer`, minWidth: pill.percentMinWidth, fontVariantNumeric: `tabular-nums`, flexShrink: 0 },
|
|
1908
|
+
divider: { alignSelf: `center`, flexShrink: 0 }
|
|
1909
|
+
};
|
|
1910
|
+
}
|
|
1911
|
+
var ZOOMABLE_IMAGE_NATIVE_TRANSITION = `transform var(--xui-motion-standard) var(--xui-ease-standard,ease)`;
|
|
1912
|
+
var ZOOMABLE_IMAGE_TRANSITION = `transform var(--motion-duration-standard,var(--xui-duration-standard,180ms)) var(--motion-ease-standard,cubic-bezier(0.2,0,0,1))`;
|
|
1913
|
+
function zoomImageStyle(natural) {
|
|
1914
|
+
return natural ? { width: natural.width, height: natural.height } : {};
|
|
1915
|
+
}
|
|
1916
|
+
var ZOOMABLE_IMAGE_CLASSES = {
|
|
1917
|
+
root: `relative w-full min-w-0 overflow-hidden rounded-md select-none outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,
|
|
1918
|
+
image: `pointer-events-none absolute top-0 left-0 block max-h-none max-w-none origin-top-left select-none`,
|
|
1919
|
+
pill: `absolute bottom-4 left-1/2 z-10 flex -translate-x-1/2 flex-row items-center gap-0.5 rounded-full border border-glass-stroke-card bg-popover p-1 whitespace-nowrap shadow-lg backdrop-blur-lg transition-opacity duration-standard ease-standard`,
|
|
1920
|
+
pillHidden: `pointer-events-none opacity-0`,
|
|
1921
|
+
button: `size-7 rounded-full border-0 bg-transparent`,
|
|
1922
|
+
percent: `h-7 min-w-14 rounded-full border-0 bg-transparent px-2 tabular-nums`,
|
|
1923
|
+
divider: `mx-0.5 h-4 w-px shrink-0 bg-border`
|
|
1924
|
+
};
|
|
1380
1925
|
export {
|
|
1381
1926
|
ALERT_CLASSES,
|
|
1382
1927
|
ALERT_DIALOG_CLASSES,
|
|
@@ -1434,6 +1979,11 @@ export {
|
|
|
1434
1979
|
MOBILE_SHEET_FULL,
|
|
1435
1980
|
MOSAIC_CLASSES,
|
|
1436
1981
|
MOSAIC_GEOMETRY,
|
|
1982
|
+
MOTION_MAX_FPS2 as MOTION_MAX_FPS,
|
|
1983
|
+
MOTION_MAX_PLAYING2 as MOTION_MAX_PLAYING,
|
|
1984
|
+
MotionCanvasPool2 as MotionCanvasPool,
|
|
1985
|
+
MotionStateDriver2 as MotionStateDriver,
|
|
1986
|
+
MotionView2 as MotionView,
|
|
1437
1987
|
OUTLINE_CLASSES,
|
|
1438
1988
|
OUTLINE_GEOMETRY,
|
|
1439
1989
|
POPOVER_CLASSES,
|
|
@@ -1478,6 +2028,14 @@ export {
|
|
|
1478
2028
|
VOICE_WAVE_CLASSES2 as VOICE_WAVE_CLASSES,
|
|
1479
2029
|
VOICE_WAVE_SIZES2 as VOICE_WAVE_SIZES,
|
|
1480
2030
|
VOICE_WAVE_SIZE_PX2 as VOICE_WAVE_SIZE_PX,
|
|
2031
|
+
ZOOMABLE_IMAGE_CLASSES,
|
|
2032
|
+
ZOOMABLE_IMAGE_NATIVE_TRANSITION,
|
|
2033
|
+
ZOOMABLE_IMAGE_TRANSITION,
|
|
2034
|
+
ZOOM_CONTROLS,
|
|
2035
|
+
ZOOM_DOUBLE_TAP_MS,
|
|
2036
|
+
ZOOM_DOUBLE_TAP_SLOP,
|
|
2037
|
+
ZOOM_TAP_SLOP,
|
|
2038
|
+
ZOOM_WHEEL_SETTLE_MS,
|
|
1481
2039
|
alertVariants,
|
|
1482
2040
|
avatarFallbackColors,
|
|
1483
2041
|
avatarFallbackHue,
|
|
@@ -1495,6 +2053,7 @@ export {
|
|
|
1495
2053
|
commandScore,
|
|
1496
2054
|
createCommandStore,
|
|
1497
2055
|
createToastStore,
|
|
2056
|
+
createZoomController,
|
|
1498
2057
|
dockPileGeometry,
|
|
1499
2058
|
elementScale2 as elementScale,
|
|
1500
2059
|
filterCommandItems,
|
|
@@ -1503,10 +2062,23 @@ export {
|
|
|
1503
2062
|
layoutSize2 as layoutSize,
|
|
1504
2063
|
middleTruncate,
|
|
1505
2064
|
mosaicTiles,
|
|
2065
|
+
motionA11y2 as motionA11y,
|
|
2066
|
+
motionBoxStyle2 as motionBoxStyle,
|
|
2067
|
+
motionCanPaint2 as motionCanPaint,
|
|
2068
|
+
motionConcat2 as motionConcat,
|
|
2069
|
+
motionDeclaredSize2 as motionDeclaredSize,
|
|
2070
|
+
motionDotLottie2 as motionDotLottie,
|
|
2071
|
+
motionFit2 as motionFit,
|
|
2072
|
+
motionFitMatrix2 as motionFitMatrix,
|
|
2073
|
+
motionFrameSize2 as motionFrameSize,
|
|
2074
|
+
motionFromDotLottie2 as motionFromDotLottie,
|
|
2075
|
+
motionThemeSlots2 as motionThemeSlots,
|
|
1506
2076
|
observeCommandListHeight,
|
|
1507
2077
|
outlineCountText,
|
|
2078
|
+
paintMotionFrame2 as paintMotionFrame,
|
|
1508
2079
|
progressIndicatorTransform,
|
|
1509
2080
|
progressRingPercent,
|
|
2081
|
+
resetMotionThemeIds2 as resetMotionThemeIds,
|
|
1510
2082
|
ringGeometry,
|
|
1511
2083
|
scrollAreaCornerStyle,
|
|
1512
2084
|
scrollAreaRootStyle,
|
|
@@ -1527,8 +2099,13 @@ export {
|
|
|
1527
2099
|
voiceWaveClock2 as voiceWaveClock,
|
|
1528
2100
|
voiceWaveFitChild2 as voiceWaveFitChild,
|
|
1529
2101
|
voiceWaveName2 as voiceWaveName,
|
|
1530
|
-
voiceWaveQuiet2 as voiceWaveQuiet
|
|
2102
|
+
voiceWaveQuiet2 as voiceWaveQuiet,
|
|
2103
|
+
zoomBoxAspect,
|
|
2104
|
+
zoomDeclaredSize,
|
|
2105
|
+
zoomImageStyle,
|
|
2106
|
+
zoomPillOf,
|
|
2107
|
+
zoomableImageLayout
|
|
1531
2108
|
};
|
|
1532
2109
|
|
|
1533
|
-
//# debugId=
|
|
2110
|
+
//# debugId=BD3177F492C31D0164756E2164756E21
|
|
1534
2111
|
//# sourceMappingURL=index.js.map
|