@mkja/flip-motion
v0.1.1
Published
Tiny FLIP animation utility (translate + optional scale) with Promise-based play and reduced-motion support.
Readme
flip-motion
Tiny FLIP animation utility (translate + optional scale) with Promise-based play and reduced-motion support.
Install
Install from npm:
npm install @mkja/flip-motionUsage
import flip from '@mkja/flip-motion';
const elements = document.querySelectorAll('li');
const ctrl = flip(elements);
// Mutate DOM (reorder/insert/remove)
// ...
await ctrl.play({ duration: 300, easing: 'ease' }).finished;API
flip(elements)→ controller with:play(options)→{ animations: Animation[], finished: Promise<void>, cancel() }measure()→ refresh internal measurementsupdate([elements])→ rebind or just refresh measurementscancel()→ cancel in-flight animationsdisconnect()→ release references
Options
duration(ms, default 100)easing(defaultease)delay(default 0)stagger(ms per index, default 0)fill(defaultauto)direction(defaultnormal)composite(defaultadd)shouldScale(defaulttrue)respectReducedMotion(defaulttrue)transformOrigin(default"0 0")epsilon(px threshold to skip, default0.5)
Development
- Dev demo:
npm run dev(servestest/index.htmlwith Vite) - Tests:
npm test - Lint:
npm run lint - Format:
npm run format
Browser support
Uses WAAPI (element.animate). If unavailable, calls are no-ops. Honors prefers-reduced-motion.
License
MIT
