| 12345678910111213141516171819202122232425262728293031 |
- import { removeItem } from 'motion-utils';
- import { getEasingForSegment } from '../../../easing/utils/get-easing-for-segment.mjs';
- import { mixNumber } from '../../../utils/mix/number.mjs';
- function eraseKeyframes(sequence, startTime, endTime) {
- for (let i = 0; i < sequence.length; i++) {
- const keyframe = sequence[i];
- if (keyframe.at > startTime && keyframe.at < endTime) {
- removeItem(sequence, keyframe);
- // If we remove this item we have to push the pointer back one
- i--;
- }
- }
- }
- function addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) {
- /**
- * Erase every existing value between currentTime and targetTime,
- * this will essentially splice this timeline into any currently
- * defined ones.
- */
- eraseKeyframes(sequence, startTime, endTime);
- for (let i = 0; i < keyframes.length; i++) {
- sequence.push({
- value: keyframes[i],
- at: mixNumber(startTime, endTime, offset[i]),
- easing: getEasingForSegment(easing, i),
- });
- }
- }
- export { addKeyframes, eraseKeyframes };
|