UNPKG

@sandlada/vue-mdc

Version:

![Vue MDC Logo](https://raw.githubusercontent.com/sandlada/vue-mdc/refs/heads/main/docs/vue-mdc-cover.png)

58 lines (57 loc) 1.72 kB
/** * @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