UNPKG

lottie-web

Version:

After Effects plugin for exporting animations to SVG + JavaScript or canvas + JavaScript

62 lines (57 loc) 1.84 kB
import { createTypedArray, } from '../helpers/arrays'; function ExpressionValue(elementProp, mult, type) { mult = mult || 1; var expressionValue; if (elementProp.k) { elementProp.getValue(); } var i; var len; var arrValue; var val; if (type) { if (type === 'color') { len = 4; expressionValue = createTypedArray('float32', len); arrValue = createTypedArray('float32', len); for (i = 0; i < len; i += 1) { arrValue[i] = (i < 3) ? elementProp.v[i] * mult : 1; expressionValue[i] = arrValue[i]; } expressionValue.value = arrValue; } } else if (elementProp.propType === 'unidimensional') { val = elementProp.v * mult; expressionValue = new Number(val); // eslint-disable-line no-new-wrappers expressionValue.value = val; } else { len = elementProp.pv.length; expressionValue = createTypedArray('float32', len); arrValue = createTypedArray('float32', len); for (i = 0; i < len; i += 1) { arrValue[i] = elementProp.v[i] * mult; expressionValue[i] = arrValue[i]; } expressionValue.value = arrValue; } expressionValue.numKeys = elementProp.keyframes ? elementProp.keyframes.length : 0; expressionValue.key = function (pos) { if (!expressionValue.numKeys) { return 0; } return elementProp.keyframes[pos - 1].t; }; expressionValue.valueAtTime = elementProp.getValueAtTime; expressionValue.speedAtTime = elementProp.getSpeedAtTime; expressionValue.velocityAtTime = elementProp.getVelocityAtTime; expressionValue.propertyGroup = elementProp.propertyGroup; Object.defineProperty(expressionValue, 'velocity', { get: function () { return elementProp.getVelocityAtTime(elementProp.comp.currentFrame); }, }); return expressionValue; } export default ExpressionValue;