@synergy-design-system/components
Version:
This package provides the base of the Synergy Design System as native web components. It uses [lit](https://www.lit.dev) and parts of [shoelace](https://shoelace.style/). Synergy officially supports the latest two versions of all major browsers (as define
56 lines (53 loc) • 1.6 kB
JavaScript
import {
__spreadProps,
__spreadValues
} from "./chunk.Z4XV3SMG.js";
// src/internal/animate.ts
function animateTo(el, keyframes, options) {
return new Promise((resolve) => {
if ((options == null ? void 0 : options.duration) === Infinity) {
throw new Error("Promise-based animations must be finite.");
}
const animation = el.animate(keyframes, __spreadProps(__spreadValues({}, options), {
duration: prefersReducedMotion() ? 0 : options.duration
}));
animation.addEventListener("cancel", resolve, { once: true });
animation.addEventListener("finish", resolve, { once: true });
});
}
function parseDuration(delay) {
delay = delay.toString().toLowerCase();
if (delay.indexOf("ms") > -1) {
return parseFloat(delay);
}
if (delay.indexOf("s") > -1) {
return parseFloat(delay) * 1e3;
}
return parseFloat(delay);
}
function prefersReducedMotion() {
const query = window.matchMedia("(prefers-reduced-motion: reduce)");
return query.matches;
}
function stopAnimations(el) {
return Promise.all(
el.getAnimations().map((animation) => {
return new Promise((resolve) => {
animation.cancel();
requestAnimationFrame(resolve);
});
})
);
}
function shimKeyframesHeightAuto(keyframes, calculatedHeight) {
return keyframes.map((keyframe) => __spreadProps(__spreadValues({}, keyframe), {
height: keyframe.height === "auto" ? `${calculatedHeight}px` : keyframe.height
}));
}
export {
animateTo,
parseDuration,
stopAnimations,
shimKeyframesHeightAuto
};
//# sourceMappingURL=chunk.G6ITZTTW.js.map