UNPKG

@belvo-finance/belvo-vue-components

Version:

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

77 lines (73 loc) 2.49 kB
function GradientProperty(elem,data,container){ this.data = data; this.c = createTypedArray('uint8c', data.p*4); var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p*4) : data.k.k.length - data.p*4; this.o = createTypedArray('float32', cLength); this._cmdf = false; this._omdf = false; this._collapsable = this.checkCollapsable(); this._hasOpacity = cLength; this.initDynamicPropertyContainer(container); this.prop = PropertyFactory.getProp(elem,data.k,1,null,this); this.k = this.prop.k; this.getValue(true); } GradientProperty.prototype.comparePoints = function(values, points) { var i = 0, len = this.o.length/2, diff; while(i < len) { diff = Math.abs(values[i*4] - values[points*4 + i*2]); if(diff > 0.01){ return false; } i += 1; } return true; }; GradientProperty.prototype.checkCollapsable = function() { if (this.o.length/2 !== this.c.length/4) { return false; } if (this.data.k.k[0].s) { var i = 0, len = this.data.k.k.length; while (i < len) { if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) { return false; } i += 1; } } else if(!this.comparePoints(this.data.k.k, this.data.p)) { return false; } return true; }; GradientProperty.prototype.getValue = function(forceRender){ this.prop.getValue(); this._mdf = false; this._cmdf = false; this._omdf = false; if(this.prop._mdf || forceRender){ var i, len = this.data.p*4; var mult, val; for(i=0;i<len;i+=1){ mult = i%4 === 0 ? 100 : 255; val = Math.round(this.prop.v[i]*mult); if(this.c[i] !== val){ this.c[i] = val; this._cmdf = !forceRender; } } if(this.o.length){ len = this.prop.v.length; for(i=this.data.p*4;i<len;i+=1){ mult = i%2 === 0 ? 100 : 1; val = i%2 === 0 ? Math.round(this.prop.v[i]*100):this.prop.v[i]; if(this.o[i-this.data.p*4] !== val){ this.o[i-this.data.p*4] = val; this._omdf = !forceRender; } } } this._mdf = !forceRender; } }; extendPrototype([DynamicPropertyContainer], GradientProperty);