edit.mjs 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import { removeItem } from 'motion-utils';
  2. import { getEasingForSegment } from '../../../easing/utils/get-easing-for-segment.mjs';
  3. import { mixNumber } from '../../../utils/mix/number.mjs';
  4. function eraseKeyframes(sequence, startTime, endTime) {
  5. for (let i = 0; i < sequence.length; i++) {
  6. const keyframe = sequence[i];
  7. if (keyframe.at > startTime && keyframe.at < endTime) {
  8. removeItem(sequence, keyframe);
  9. // If we remove this item we have to push the pointer back one
  10. i--;
  11. }
  12. }
  13. }
  14. function addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) {
  15. /**
  16. * Erase every existing value between currentTime and targetTime,
  17. * this will essentially splice this timeline into any currently
  18. * defined ones.
  19. */
  20. eraseKeyframes(sequence, startTime, endTime);
  21. for (let i = 0; i < keyframes.length; i++) {
  22. sequence.push({
  23. value: keyframes[i],
  24. at: mixNumber(startTime, endTime, offset[i]),
  25. easing: getEasingForSegment(easing, i),
  26. });
  27. }
  28. }
  29. export { addKeyframes, eraseKeyframes };