/*! * VERSION: 0.1.3 * DATE: 2018-08-27 * UPDATES AND DOCS AT: http://greensock.com * * @license Copyright (c) 2008-2019, GreenSock. All rights reserved. * This work is subject to the terms at http://greensock.com/standard-license or for * Club GreenSock members, the software agreement that was issued with your membership. * * @author: Jack Doyle, jack@greensock.com */ /* eslint-disable */ import { _gsScope } from "./TweenLite.js"; export var EndArrayPlugin = _gsScope._gsDefine.plugin({ propName: "endArray", API: 2, version: "0.1.3", //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run. init: function(target, value, tween) { var i = value.length, a = this.a = [], start, end; this.target = target; this._mod = 0; if (!i) { return false; } while (--i > -1) { start = target[i]; end = value[i]; if (start !== end) { a.push({i:i, s:start, c:end - start}); } } return true; }, mod: function(lookup) { if (typeof(lookup.endArray) === "function") { this._mod = lookup.endArray; } }, //called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.) set: function(ratio) { var target = this.target, a = this.a, i = a.length, mod = this._mod, e, val; if (mod) { while (--i > -1) { e = a[i]; target[e.i] = mod(e.s + e.c * ratio, target); } } else { while (--i > -1) { e = a[i]; val = e.s + e.c * ratio; target[e.i] = (val < 0.000001 && val > -0.000001) ? 0 : val; } } } }); export { EndArrayPlugin as default };