observe.mjs 527 B

123456789101112131415161718
  1. import { frame, cancelFrame } from 'motion-dom';
  2. function observeTimeline(update, timeline) {
  3. let prevProgress;
  4. const onFrame = () => {
  5. const { currentTime } = timeline;
  6. const percentage = currentTime === null ? 0 : currentTime.value;
  7. const progress = percentage / 100;
  8. if (prevProgress !== progress) {
  9. update(progress);
  10. }
  11. prevProgress = progress;
  12. };
  13. frame.update(onFrame, true);
  14. return () => cancelFrame(onFrame);
  15. }
  16. export { observeTimeline };