import { getEasingForSegment } from '../../../easing/utils/get-easing-for-segment.mjs'; import { removeItem } from '../../../utils/array.mjs'; import { mix } from '../../../utils/mix.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: mix(startTime, endTime, offset[i]), easing: getEasingForSegment(easing, i), }); } } export { addKeyframes, eraseKeyframes };