MCPcopy Index your code
hub / github.com/web-animations/web-animations-js / normalizeKeyframes

Function normalizeKeyframes

src/normalize-keyframes.js:220–312  ·  view source on GitHub ↗
(effectInput)

Source from the content-addressed store, hash-verified

218 };
219
220 function normalizeKeyframes(effectInput) {
221 if (effectInput == null) {
222 return [];
223 }
224
225 if (window.Symbol && Symbol.iterator && Array.prototype.from && effectInput[Symbol.iterator]) {
226 // Handle custom iterables in most browsers by converting to an array
227 effectInput = Array.from(effectInput);
228 }
229
230 if (!Array.isArray(effectInput)) {
231 effectInput = convertToArrayForm(effectInput);
232 }
233
234 var keyframes = effectInput.map(function(originalKeyframe) {
235 var keyframe = {};
236 for (var member in originalKeyframe) {
237 var memberValue = originalKeyframe[member];
238 if (member == 'offset') {
239 if (memberValue != null) {
240 memberValue = Number(memberValue);
241 if (!isFinite(memberValue))
242 throw new TypeError('Keyframe offsets must be numbers.');
243 if (memberValue < 0 || memberValue > 1)
244 throw new TypeError('Keyframe offsets must be between 0 and 1.');
245 }
246 } else if (member == 'composite') {
247 if (memberValue == 'add' || memberValue == 'accumulate') {
248 throw {
249 type: DOMException.NOT_SUPPORTED_ERR,
250 name: 'NotSupportedError',
251 message: 'add compositing is not supported'
252 };
253 } else if (memberValue != 'replace') {
254 throw new TypeError('Invalid composite mode ' + memberValue + '.');
255 }
256 } else if (member == 'easing') {
257 memberValue = shared.normalizeEasing(memberValue);
258 } else {
259 memberValue = '' + memberValue;
260 }
261 expandShorthandAndAntiAlias(member, memberValue, keyframe);
262 }
263 if (keyframe.offset == undefined)
264 keyframe.offset = null;
265 if (keyframe.easing == undefined)
266 keyframe.easing = 'linear';
267 return keyframe;
268 });
269
270 var everyFrameHasOffset = true;
271 var looselySortedByOffset = true;
272 var previousOffset = -Infinity;
273 for (var i = 0; i < keyframes.length; i++) {
274 var offset = keyframes[i].offset;
275 if (offset != null) {
276 if (offset < previousOffset) {
277 throw new TypeError('Keyframes are not loosely sorted by offset. Sort or specify offsets.');

Callers 1

keyframes.jsFile · 0.85

Calls 3

convertToArrayFormFunction · 0.85
spaceKeyframesFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…