@sandlada/vue-mdc
Version:

58 lines (57 loc) • 1.72 kB
JavaScript
/**
* @license
* Copyright 2025 Sandlada & Kai Orion
* SPDX-License-Identifier: MIT
*/
import { MaterialDesignSystem } from "../../utils/material-design-system.js";
async function animateOpen(tooltipEl, animationSignal) {
const signal = animationSignal.start();
const tooltipElementAnimation = tooltipEl.animate([{ transform: "scale(0.8)", opacity: "0" }, { transform: "scale(1)", opacity: "1" }], {
duration: 200,
easing: MaterialDesignSystem.Motion.Easing.Emphasized
});
let resolveAnimation = (value) => {
};
const animationFinished = new Promise((resolve) => {
resolveAnimation = resolve;
});
signal.addEventListener("abort", () => {
tooltipElementAnimation.cancel();
resolveAnimation(true);
});
tooltipElementAnimation.addEventListener("finish", () => {
animationSignal.finish();
resolveAnimation(false);
});
return await animationFinished;
}
function animateClose(tooltipEl, animationSignal) {
let resolve;
const animationEnded = new Promise((res) => {
resolve = res;
});
if (!tooltipEl) {
resolve(false);
return animationEnded;
}
const signal = animationSignal.start();
const tooltipElementAnimation = tooltipEl.animate([{ transform: "scale(1)", opacity: "1" }, { transform: "scale(0.8)", opacity: "0" }], {
duration: 100,
delay: 200
});
signal.addEventListener("abort", () => {
tooltipElementAnimation.cancel();
resolve(false);
});
tooltipElementAnimation.addEventListener("finish", () => {
animationSignal.finish();
tooltipEl.dispatchEvent(new Event("closed"));
resolve(true);
});
return animationEnded;
}
export {
animateClose,
animateOpen
};
//# sourceMappingURL=animation.js.map