UNPKG

@belvo-finance/belvo-vue-components

Version:

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

149 lines (141 loc) 5.25 kB
var TextSelectorProp = (function(){ var max = Math.max; var min = Math.min; var floor = Math.floor; function TextSelectorProp(elem,data){ this._currentTextLength = -1; this.k = false; this.data = data; this.elem = elem; this.comp = elem.comp; this.finalS = 0; this.finalE = 0; this.initDynamicPropertyContainer(elem); this.s = PropertyFactory.getProp(elem,data.s || {k:0},0,0,this); if('e' in data){ this.e = PropertyFactory.getProp(elem,data.e,0,0,this); }else{ this.e = {v:100}; } this.o = PropertyFactory.getProp(elem,data.o || {k:0},0,0,this); this.xe = PropertyFactory.getProp(elem,data.xe || {k:0},0,0,this); this.ne = PropertyFactory.getProp(elem,data.ne || {k:0},0,0,this); this.a = PropertyFactory.getProp(elem,data.a,0,0.01,this); if(!this.dynamicProperties.length){ this.getValue(); } } TextSelectorProp.prototype = { getMult: function(ind) { if(this._currentTextLength !== this.elem.textProperty.currentData.l.length) { this.getValue(); } //var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1); var x1 = 0; var y1 = 0; var x2 = 1; var y2 = 1; if(this.ne.v > 0) { x1 = this.ne.v / 100.0; } else { y1 = -this.ne.v / 100.0; } if(this.xe.v > 0) { x2 = 1.0 - this.xe.v / 100.0; } else { y2 = 1.0 + this.xe.v / 100.0; } var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get; var mult = 0; var s = this.finalS; var e = this.finalE; var type = this.data.sh; if (type === 2){ if (e === s) { mult = ind >= e ? 1 : 0; } else { mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); } mult = easer(mult); } else if(type === 3) { if (e === s) { mult = ind >= e ? 0 : 1; }else{ mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s),1)); } mult = easer(mult); } else if (type === 4) { if (e === s) { mult = 0; } else { mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); if (mult < 0.5) { mult *= 2; } else { mult = 1 - 2 * (mult - 0.5); } } mult = easer(mult); } else if (type === 5) { if (e === s){ mult = 0; } else { var tot = e - s; /*ind += 0.5; mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind;*/ ind = min(max(0, ind + 0.5 - s), e - s); var x = -tot/2+ind; var a = tot/2; mult = Math.sqrt(1 - (x * x) / (a * a)); } mult = easer(mult); } else if (type === 6) { if (e === s){ mult = 0; } else { ind = min(max(0, ind + 0.5 - s), e - s); mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2; } mult = easer(mult); } else { if (ind >= floor(s)) { if (ind - s < 0) { mult = max(0, min(min(e, 1) - (s - ind), 1)); } else { mult = max(0, min(e - ind, 1)); } } mult = easer(mult); } return mult*this.a.v; }, getValue: function(newCharsFlag) { this.iterateDynamicProperties(); this._mdf = newCharsFlag || this._mdf; this._currentTextLength = this.elem.textProperty.currentData.l.length || 0; if(newCharsFlag && this.data.r === 2) { this.e.v = this._currentTextLength; } var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars; var o = this.o.v/divisor; var s = this.s.v/divisor + o; var e = (this.e.v/divisor) + o; if(s>e){ var _s = s; s = e; e = _s; } this.finalS = s; this.finalE = e; } } extendPrototype([DynamicPropertyContainer], TextSelectorProp); function getTextSelectorProp(elem, data,arr) { return new TextSelectorProp(elem, data, arr); } return { getTextSelectorProp: getTextSelectorProp }; }());