UNPKG

@omicrxn/mercury

Version:

Mercury is a Svelte animation library powered by Motion. It simplifies complex animations with Svelte actions, provides layout and exit animations, and integrates seamlessly with Svelte features.

41 lines (40 loc) 1.36 kB
import { mapTransitionToAnimeJS } from './utils.js'; let animeModule = null; let loadPromise = null; export async function loadAnime() { if (animeModule) return animeModule; const globalAnime = typeof window !== 'undefined' ? window.anime : undefined; if (globalAnime) { animeModule = globalAnime; return animeModule; } if (!loadPromise) { loadPromise = import('animejs').then((mod) => { animeModule = mod; return animeModule; }, () => { throw new Error('Please install AnimeJS: npm install animejs'); }); } return loadPromise; } export const DEFAULT_LAYOUT_CHILDREN = '[data-layout], [data-layout-id], [data-layout=""]'; export function mapTransitionToAnimeLayout(transition, callbacks, anime) { const mapped = mapTransitionToAnimeJS(transition, callbacks); if (transition?.type === 'spring' && anime?.createSpring) { mapped.ease = anime.createSpring({ stiffness: transition.stiffness, damping: transition.damping, mass: transition.mass, velocity: transition.velocity }); } return mapped; } export function prefersReducedMotion() { return (typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches); }