Skip to content

Commit

Permalink
1.18.3
Browse files Browse the repository at this point in the history
- IMPROVED: stronger workarounds for Firefox bugs that cause SVG elements that aren't rendered (like <symbol> or <def>) to throw exceptions when transformed. Certain scenarios with transforming SVGs in other browsers also work better now.

- IMPROVED: parsing of decimals that don't have a leading zero (like .5 instead of 0.5) that are nested in complex strings (like "matrix(1,0,0,1,.5,.999)")

- IMPROVED: parsing of mis-matched color formats in complex strings (like "radial-gradient(circle, #FFFFFF, #FF0000)" to "radial-gradient(circle, purple, rgb(0,0,255)")

- IMPROVED: ability to animate complex values like filters in certain cases.

- NEW: can animate multiple backgroundPosition values as long as they match beginning/ending quantities and the units match.

- FIXED: TweenMax.progress() and TweenMax.totalProgress() now accept a "suppressEvents" (2nd) parameter.

- FIXED: tweening "skewY" (with CSSPlugin) could cause subsequent tweens of "rotation" or "skewX" to look inaccurate (skewX, skewY, and rotation are all related in the matrix values).

- FIXED: regression that could cause a Draggable with autoScroll:true not to update the scroll position correctly if update() is called on a Draggable that is NOT being dragged.

- FIXED: if autoRotate was set to true in a BezierPlugin tween it could occasionally (very rarely) render the CSS value incorrectly on a mobile device.

- FIXED: Chrome deprecated offsetWidth/offsetHeight/offsetParent on SVG elements, so we worked around that.

- FIXED: in some cases an onUpdate wouldn't fire on zero-duration tweens that were encountered when running backwards on a parent timeline.

- FIXED: in rare cases a className wouldn't be applied properly if it partially matched another that already was applied.

- FIXED: if a negative delay is used on a tween with immediateRender:true, it now renders at its zero time properly.

- FIXED: if a transform-related value was tweened on an element that originally had a matrix3d() applied with a skew, the skew wasn't parsed out properly (very rare).

- FIXED: if the literal "transform" property of an SVG element was animated and at the same time its transformOrigin or svgOrigin was set, it could jump.

- FIXED: if there was a bezier tween that had no change (like values:[{x:0, y:0}, {x:0, y:0}]), it could result in subsequent x/y tweens on that element not to work. Again, extremely rare.

- FIXED: in a repeating TweenMax or TimelineMax, if you went beyond the first iteration/cycle and then back to that iteration's starting time, it would render at the end instead of the start (technically that's both the start and end time), but now it correctly discerns direction and will choose the start or end, whichever makes more sense in that context.
  • Loading branch information
gsap-dev committed Apr 20, 2016
1 parent b3d1ec5 commit 329f35f
Show file tree
Hide file tree
Showing 18 changed files with 296 additions and 166 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "gsap",
"version": "1.18.2",
"version": "1.18.3",
"description": "Think of GSAP as the Swiss Army Knife of animation...but better. It animates anything JavaScript can touch (CSS properties, canvas library objects, SVG, generic objects, whatever) and it solves lots of browser inconsistencies, all with blazing speed (up to 20x faster than jQuery). See http://greensock.com/why-gsap/ for details. Other libraries like jQuery, Velocity, Transit, and Zepto only tween CSS properties. Plus, their sequencing abilities and runtime controls pale by comparison. Simply put, GSAP is the most flexible high-performance animation library on the planet. And unlike monolithic frameworks like Famo.us or Angular that dictate how you structure your apps, GSAP simply owns the animation layer; sprinkle it wherever you want. GSAP stands for the GreenSock Animation Platform. There's a jQuery plugin that hijacks the native jQuery.animate() method so that animations perform much better and additional properties can be tweened, like colors, transforms (2D and 3D), boxShadow, borderRadius, clip, and lots more. GSAP has no dependencies on jQuery or other libraries. See http://greensock.com/gsap/ for details.",
"author": {
"name": "Jack Doyle",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "gsap",
"filename": "TweenMax.min.js",
"version": "1.18.2",
"version": "1.18.3",
"description": "Think of GSAP as the Swiss Army Knife of web animation...but better. It animates anything JavaScript can touch (CSS properties, canvas library objects, SVG, generic objects, whatever) and it solves lots of browser inconsistencies, all with blazing speed (up to 20x faster than jQuery). See http://greensock.com/why-gsap/ for details. Simply put, GSAP is the most flexible high-performance animation library on the planet. And unlike monolithic frameworks that dictate how you must structure your apps, GSAP simply owns the animation layer; sprinkle it wherever you want. GSAP stands for the GreenSock Animation Platform. There's a jQuery plugin that hijacks the native jQuery.animate() method so that animations perform much better and additional properties can be tweened, like colors, transforms (2D and 3D), boxShadow, borderRadius, clip, and lots more. GSAP has no dependencies on jQuery or other libraries. See http://greensock.com/gsap/ for details.",
"homepage": "http://greensock.com/gsap/",
"main": "./src/uncompressed/TweenMax.js",
Expand Down
6 changes: 3 additions & 3 deletions src/minified/TimelineLite.min.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/minified/TimelineMax.min.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/minified/TweenLite.min.js

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions src/minified/TweenMax.min.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/minified/plugins/BezierPlugin.min.js

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions src/minified/plugins/CSSPlugin.min.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/minified/plugins/ColorPropsPlugin.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions src/minified/utils/Draggable.min.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/uncompressed/TimelineLite.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*!
* VERSION: 1.18.2
* DATE: 2015-12-22
* VERSION: 1.18.3
* DATE: 2016-04-19
* UPDATES AND DOCS AT: http://greensock.com
*
* @license Copyright (c) 2008-2016, GreenSock. All rights reserved.
Expand Down Expand Up @@ -69,7 +69,7 @@ var _gsScope = (typeof(module) !== "undefined" && module.exports && typeof(globa
},
p = TimelineLite.prototype = new SimpleTimeline();

TimelineLite.version = "1.18.2";
TimelineLite.version = "1.18.3";
p.constructor = TimelineLite;
p.kill()._gc = p._forcingPlayhead = p._hasPause = false;

Expand Down
10 changes: 5 additions & 5 deletions src/uncompressed/TimelineMax.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*!
* VERSION: 1.18.2
* DATE: 2015-12-22
* VERSION: 1.18.3
* DATE: 2016-04-19
* UPDATES AND DOCS AT: http://greensock.com
*
* @license Copyright (c) 2008-2016, GreenSock. All rights reserved.
Expand Down Expand Up @@ -33,7 +33,7 @@ var _gsScope = (typeof(module) !== "undefined" && module.exports && typeof(globa

p.constructor = TimelineMax;
p.kill()._gc = false;
TimelineMax.version = "1.18.2";
TimelineMax.version = "1.18.3";

p.invalidate = function() {
this._yoyo = (this.vars.yoyo === true);
Expand Down Expand Up @@ -183,7 +183,7 @@ var _gsScope = (typeof(module) !== "undefined" && module.exports && typeof(globa
if (this._repeat !== 0) {
cycleDuration = dur + this._repeatDelay;
this._cycle = (this._totalTime / cycleDuration) >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but it gets reported as 0.79999999!)
if (this._cycle !== 0) if (this._cycle === this._totalTime / cycleDuration) {
if (this._cycle !== 0) if (this._cycle === this._totalTime / cycleDuration && prevTotalTime <= time) {
this._cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning)
}
this._time = this._totalTime - (this._cycle * cycleDuration);
Expand Down Expand Up @@ -573,7 +573,7 @@ var _gsScope = (typeof(module) !== "undefined" && module.exports && typeof(globa
},
p = TimelineLite.prototype = new SimpleTimeline();

TimelineLite.version = "1.18.2";
TimelineLite.version = "1.18.3";
p.constructor = TimelineLite;
p.kill()._gc = p._forcingPlayhead = p._hasPause = false;

Expand Down
12 changes: 6 additions & 6 deletions src/uncompressed/TweenLite.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*!
* VERSION: 1.18.2
* DATE: 2015-12-22
* VERSION: 1.18.3
* DATE: 2016-04-19
* UPDATES AND DOCS AT: http://greensock.com
*
* @license Copyright (c) 2008-2016, GreenSock. All rights reserved.
Expand Down Expand Up @@ -897,7 +897,7 @@
}
if (this.vars.immediateRender || (duration === 0 && this._delay === 0 && this.vars.immediateRender !== false)) {
this._time = -_tinyNum; //forces a render without having to set the render() "force" parameter to true because we want to allow lazying by default (using the "force" parameter always forces an immediate full render)
this.render(-this._delay);
this.render(Math.min(0, -this._delay)); //in case delay is negative
}
}, true),
_isSelector = function(v) {
Expand Down Expand Up @@ -925,7 +925,7 @@
p._firstPT = p._targets = p._overwrittenProps = p._startAt = null;
p._notifyPluginsOfEnabled = p._lazy = false;

TweenLite.version = "1.18.2";
TweenLite.version = "1.18.3";
TweenLite.defaultEase = p._ease = new Ease(null, null, 1, 1);
TweenLite.defaultOverwrite = "auto";
TweenLite.ticker = _ticker;
Expand Down Expand Up @@ -1513,7 +1513,7 @@
if (time < 0) if (this._startAt && time !== -0.0001) { //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values.
this._startAt.render(time, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.
}
if (!suppressEvents) if (this._time !== prevTime || isComplete) {
if (!suppressEvents) if (this._time !== prevTime || isComplete || force) {
this._callback("onUpdate");
}
}
Expand Down Expand Up @@ -1637,7 +1637,7 @@
Animation.prototype.invalidate.call(this);
if (this.vars.immediateRender) {
this._time = -_tinyNum; //forces a render without having to set the render() "force" parameter to true because we want to allow lazying by default (using the "force" parameter always forces an immediate full render)
this.render(-this._delay);
this.render(Math.min(0, -this._delay)); //in case delay is negative.
}
return this;
};
Expand Down
Loading

0 comments on commit 329f35f

Please sign in to comment.