UNPKG

@belvo-finance/belvo-vue-components

Version:

## Project setup ``` npm install ```

97 lines (88 loc) 3.71 kB
var ExpressionPropertyInterface = (function() { var defaultUnidimensionalValue = {pv:0, v:0, mult: 1} var defaultMultidimensionalValue = {pv:[0,0,0], v:[0,0,0], mult: 1} function completeProperty(expressionValue, property, type) { Object.defineProperty(expressionValue, 'velocity', { get: function(){ return property.getVelocityAtTime(property.comp.currentFrame); } }); expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0; expressionValue.key = function(pos) { if (!expressionValue.numKeys) { return 0; } else { var value = ''; if ('s' in property.keyframes[pos-1]) { value = property.keyframes[pos-1].s; } else if ('e' in property.keyframes[pos-2]) { value = property.keyframes[pos-2].e; } else { value = property.keyframes[pos-2].s; } var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); valueProp.time = property.keyframes[pos-1].t / property.elem.comp.globalData.frameRate; return valueProp; } }; expressionValue.valueAtTime = property.getValueAtTime; expressionValue.speedAtTime = property.getSpeedAtTime; expressionValue.velocityAtTime = property.getVelocityAtTime; expressionValue.propertyGroup = property.propertyGroup; } function UnidimensionalPropertyInterface(property) { if(!property || !('pv' in property)) { property = defaultUnidimensionalValue; } var mult = 1 / property.mult; var val = property.pv * mult; var expressionValue = new Number(val); expressionValue.value = val; completeProperty(expressionValue, property, 'unidimensional'); return function() { if (property.k) { property.getValue(); } val = property.v * mult; if(expressionValue.value !== val) { expressionValue = new Number(val); expressionValue.value = val; completeProperty(expressionValue, property, 'unidimensional'); } return expressionValue; } } function MultidimensionalPropertyInterface(property) { if(!property || !('pv' in property)) { property = defaultMultidimensionalValue; } var mult = 1 / property.mult; var len = property.pv.length; var expressionValue = createTypedArray('float32', len); var arrValue = createTypedArray('float32', len); expressionValue.value = arrValue; completeProperty(expressionValue, property, 'multidimensional'); return function() { if (property.k) { property.getValue(); } for (var i = 0; i < len; i += 1) { expressionValue[i] = arrValue[i] = property.v[i] * mult; } return expressionValue; } } //TODO: try to avoid using this getter function defaultGetter() { return defaultUnidimensionalValue; } return function(property) { if(!property) { return defaultGetter; } else if (property.propType === 'unidimensional') { return UnidimensionalPropertyInterface(property); } else { return MultidimensionalPropertyInterface(property); } } }());