greensock-rails 1.11.5.0 → 1.11.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/greensock/rails/version.rb +1 -1
- data/vendor/assets/javascripts/greensock/TimelineLite.js +6 -6
- data/vendor/assets/javascripts/greensock/TimelineMax.js +10 -10
- data/vendor/assets/javascripts/greensock/TweenLite.js +13 -10
- data/vendor/assets/javascripts/greensock/TweenMax.js +56 -31
- data/vendor/assets/javascripts/greensock/plugins/BezierPlugin.js +9 -3
- data/vendor/assets/javascripts/greensock/plugins/CSSPlugin.js +23 -10
- data/vendor/assets/javascripts/greensock/utils/Draggable.js +14 -4
- data/vendor/bundle/cache/rake-10.2.2.gem +0 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/command_line_usage.rdoc +158 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/example/a.c +6 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/example/b.c +6 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/example/main.c +11 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/glossary.rdoc +51 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/jamis.rb +591 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/rake.1.gz +0 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/rakefile.rdoc +653 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/rational.rdoc +151 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.4.14.rdoc +23 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.4.15.rdoc +35 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.5.0.rdoc +53 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.5.3.rdoc +78 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.5.4.rdoc +46 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.6.0.rdoc +141 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.7.0.rdoc +119 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.7.1.rdoc +59 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.7.2.rdoc +121 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.7.3.rdoc +47 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.8.0.rdoc +114 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.8.2.rdoc +165 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.8.3.rdoc +112 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.8.4.rdoc +147 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.8.5.rdoc +53 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.8.6.rdoc +37 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.8.7.rdoc +55 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.9.0.rdoc +112 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.9.1.rdoc +52 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.9.2.rdoc +49 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.9.3.rdoc +102 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.9.4.rdoc +60 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.9.5.rdoc +55 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-0.9.6.rdoc +64 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-10.0.0.rdoc +178 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-10.0.1.rdoc +58 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-10.0.2.rdoc +53 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-10.0.3.rdoc +191 -0
- data/vendor/bundle/gems/rake-10.2.2/doc/release_notes/rake-10.1.0.rdoc +61 -0
- data/vendor/cache/rake-10.2.2.gem +0 -0
- metadata +46 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 414016c8637d637cc362bf7b2c6dc55932176457
|
4
|
+
data.tar.gz: 6eddaef27ab877fda7781c68b329d10411378965
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f01074f944b2742894e8fd062b70c5ef0cb4e71a58b3770eff741d154366493fb381559c14f79557e791681a23d92ce9f279d70ccc586fed678b8b187cceaac
|
7
|
+
data.tar.gz: bfba92ca543ca328ad2988781eb6761ce4b8f145997dc51a08d401e7d7ae9924772f0352787c52dc99faf9690970432f8bf9bbfd1433fe7285db19104a5ed23d
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
|
-
* VERSION: 1.11.
|
3
|
-
* DATE: 2014-
|
2
|
+
* VERSION: 1.11.6
|
3
|
+
* DATE: 2014-03-26
|
4
4
|
* UPDATES AND DOCS AT: http://www.greensock.com
|
5
5
|
*
|
6
6
|
* @license Copyright (c) 2008-2014, GreenSock. All rights reserved.
|
@@ -55,7 +55,7 @@
|
|
55
55
|
_slice = _blankArray.slice,
|
56
56
|
p = TimelineLite.prototype = new SimpleTimeline();
|
57
57
|
|
58
|
-
TimelineLite.version = "1.11.
|
58
|
+
TimelineLite.version = "1.11.6";
|
59
59
|
p.constructor = TimelineLite;
|
60
60
|
p.kill()._gc = false;
|
61
61
|
|
@@ -323,12 +323,12 @@
|
|
323
323
|
}
|
324
324
|
}
|
325
325
|
}
|
326
|
-
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime ===
|
326
|
+
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
327
327
|
time = totalDur + 0.0001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off). Try (999999999999.7 - 999999999999) * 1 = 0.699951171875 instead of 0.7.
|
328
328
|
|
329
329
|
} else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
|
330
330
|
this._totalTime = this._time = 0;
|
331
|
-
if (prevTime !== 0 || (this._duration === 0 && (this._rawPrevTime >
|
331
|
+
if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime !== _tinyNum && (this._rawPrevTime > 0 || (time < 0 && this._rawPrevTime >= 0)))) {
|
332
332
|
callback = "onReverseComplete";
|
333
333
|
isComplete = this._reversed;
|
334
334
|
}
|
@@ -339,7 +339,7 @@
|
|
339
339
|
}
|
340
340
|
this._rawPrevTime = time;
|
341
341
|
} else {
|
342
|
-
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime ===
|
342
|
+
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
343
343
|
|
344
344
|
time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline)
|
345
345
|
if (!this._initted) {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
|
-
* VERSION: 1.11.
|
3
|
-
* DATE: 2014-
|
2
|
+
* VERSION: 1.11.6
|
3
|
+
* DATE: 2014-03-26
|
4
4
|
* UPDATES AND DOCS AT: http://www.greensock.com
|
5
5
|
*
|
6
6
|
* @license Copyright (c) 2008-2014, GreenSock. All rights reserved.
|
@@ -31,7 +31,7 @@
|
|
31
31
|
|
32
32
|
p.constructor = TimelineMax;
|
33
33
|
p.kill()._gc = false;
|
34
|
-
TimelineMax.version = "1.11.
|
34
|
+
TimelineMax.version = "1.11.6";
|
35
35
|
|
36
36
|
p.invalidate = function() {
|
37
37
|
this._yoyo = (this.vars.yoyo === true);
|
@@ -123,7 +123,7 @@
|
|
123
123
|
}
|
124
124
|
}
|
125
125
|
}
|
126
|
-
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime ===
|
126
|
+
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
127
127
|
if (this._yoyo && (this._cycle & 1) !== 0) {
|
128
128
|
this._time = time = 0;
|
129
129
|
} else {
|
@@ -136,7 +136,7 @@
|
|
136
136
|
this._totalTime = this._cycle = 0;
|
137
137
|
}
|
138
138
|
this._time = 0;
|
139
|
-
if (prevTime !== 0 || (dur === 0 && (prevRawPrevTime >
|
139
|
+
if (prevTime !== 0 || (dur === 0 && prevRawPrevTime !== _tinyNum && (prevRawPrevTime > 0 || (time < 0 && prevRawPrevTime >= 0)) && !this._locked)) { //edge case for checking time < 0 && prevRawPrevTime >= 0: a zero-duration fromTo() tween inside a zero-duration timeline (yeah, very rare)
|
140
140
|
callback = "onReverseComplete";
|
141
141
|
isComplete = this._reversed;
|
142
142
|
}
|
@@ -147,7 +147,7 @@
|
|
147
147
|
}
|
148
148
|
this._rawPrevTime = time;
|
149
149
|
} else {
|
150
|
-
this._rawPrevTime = (dur || !suppressEvents || time || this._rawPrevTime ===
|
150
|
+
this._rawPrevTime = (dur || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
151
151
|
time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline)
|
152
152
|
if (!this._initted) {
|
153
153
|
internalForce = true;
|
@@ -494,7 +494,7 @@
|
|
494
494
|
_slice = _blankArray.slice,
|
495
495
|
p = TimelineLite.prototype = new SimpleTimeline();
|
496
496
|
|
497
|
-
TimelineLite.version = "1.11.
|
497
|
+
TimelineLite.version = "1.11.6";
|
498
498
|
p.constructor = TimelineLite;
|
499
499
|
p.kill()._gc = false;
|
500
500
|
|
@@ -762,12 +762,12 @@
|
|
762
762
|
}
|
763
763
|
}
|
764
764
|
}
|
765
|
-
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime ===
|
765
|
+
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
766
766
|
time = totalDur + 0.0001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off). Try (999999999999.7 - 999999999999) * 1 = 0.699951171875 instead of 0.7.
|
767
767
|
|
768
768
|
} else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
|
769
769
|
this._totalTime = this._time = 0;
|
770
|
-
if (prevTime !== 0 || (this._duration === 0 && (this._rawPrevTime >
|
770
|
+
if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime !== _tinyNum && (this._rawPrevTime > 0 || (time < 0 && this._rawPrevTime >= 0)))) {
|
771
771
|
callback = "onReverseComplete";
|
772
772
|
isComplete = this._reversed;
|
773
773
|
}
|
@@ -778,7 +778,7 @@
|
|
778
778
|
}
|
779
779
|
this._rawPrevTime = time;
|
780
780
|
} else {
|
781
|
-
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime ===
|
781
|
+
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
782
782
|
|
783
783
|
time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline)
|
784
784
|
if (!this._initted) {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
|
-
* VERSION: 1.11.
|
3
|
-
* DATE: 2014-
|
2
|
+
* VERSION: 1.11.6
|
3
|
+
* DATE: 2014-03-26
|
4
4
|
* UPDATES AND DOCS AT: http://www.greensock.com
|
5
5
|
*
|
6
6
|
* @license Copyright (c) 2008-2014, GreenSock. All rights reserved.
|
@@ -412,21 +412,21 @@
|
|
412
412
|
|
413
413
|
|
414
414
|
p.play = function(from, suppressEvents) {
|
415
|
-
if (
|
415
|
+
if (from != null) {
|
416
416
|
this.seek(from, suppressEvents);
|
417
417
|
}
|
418
418
|
return this.reversed(false).paused(false);
|
419
419
|
};
|
420
420
|
|
421
421
|
p.pause = function(atTime, suppressEvents) {
|
422
|
-
if (
|
422
|
+
if (atTime != null) {
|
423
423
|
this.seek(atTime, suppressEvents);
|
424
424
|
}
|
425
425
|
return this.paused(true);
|
426
426
|
};
|
427
427
|
|
428
428
|
p.resume = function(from, suppressEvents) {
|
429
|
-
if (
|
429
|
+
if (from != null) {
|
430
430
|
this.seek(from, suppressEvents);
|
431
431
|
}
|
432
432
|
return this.paused(false);
|
@@ -441,7 +441,7 @@
|
|
441
441
|
};
|
442
442
|
|
443
443
|
p.reverse = function(from, suppressEvents) {
|
444
|
-
if (
|
444
|
+
if (from != null) {
|
445
445
|
this.seek((from || this.totalDuration()), suppressEvents);
|
446
446
|
}
|
447
447
|
return this.reversed(true).paused(false);
|
@@ -872,7 +872,7 @@
|
|
872
872
|
p._firstPT = p._targets = p._overwrittenProps = p._startAt = null;
|
873
873
|
p._notifyPluginsOfEnabled = false;
|
874
874
|
|
875
|
-
TweenLite.version = "1.11.
|
875
|
+
TweenLite.version = "1.11.6";
|
876
876
|
TweenLite.defaultEase = p._ease = new Ease(null, null, 1, 1);
|
877
877
|
TweenLite.defaultOverwrite = "auto";
|
878
878
|
TweenLite.ticker = _ticker;
|
@@ -1165,19 +1165,22 @@
|
|
1165
1165
|
}
|
1166
1166
|
if (duration === 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
|
1167
1167
|
rawPrevTime = this._rawPrevTime;
|
1168
|
+
if (this._startTime === this._timeline._duration) { //if a zero-duration tween is at the VERY end of a timeline and that timeline renders at its end, it will typically add a tiny bit of cushion to the render time to prevent rounding errors from getting in the way of tweens rendering their VERY end. If we then reverse() that timeline, the zero-duration tween will trigger its onReverseComplete even though technically the playhead didn't pass over it again. It's a very specific edge case we must accommodate.
|
1169
|
+
time = 0;
|
1170
|
+
}
|
1168
1171
|
if (time === 0 || rawPrevTime < 0 || rawPrevTime === _tinyNum) if (rawPrevTime !== time) {
|
1169
1172
|
force = true;
|
1170
1173
|
if (rawPrevTime > _tinyNum) {
|
1171
1174
|
callback = "onReverseComplete";
|
1172
1175
|
}
|
1173
1176
|
}
|
1174
|
-
this._rawPrevTime = rawPrevTime = (!suppressEvents || time ||
|
1177
|
+
this._rawPrevTime = rawPrevTime = (!suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
1175
1178
|
}
|
1176
1179
|
|
1177
1180
|
} else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
|
1178
1181
|
this._totalTime = this._time = 0;
|
1179
1182
|
this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
|
1180
|
-
if (prevTime !== 0 || (duration === 0 && this._rawPrevTime > _tinyNum)) {
|
1183
|
+
if (prevTime !== 0 || (duration === 0 && this._rawPrevTime > 0 && this._rawPrevTime !== _tinyNum)) {
|
1181
1184
|
callback = "onReverseComplete";
|
1182
1185
|
isComplete = this._reversed;
|
1183
1186
|
}
|
@@ -1187,7 +1190,7 @@
|
|
1187
1190
|
if (this._rawPrevTime >= 0) {
|
1188
1191
|
force = true;
|
1189
1192
|
}
|
1190
|
-
this._rawPrevTime = rawPrevTime = (!suppressEvents || time || this._rawPrevTime ===
|
1193
|
+
this._rawPrevTime = rawPrevTime = (!suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
1191
1194
|
}
|
1192
1195
|
} else if (!this._initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
|
1193
1196
|
force = true;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
|
-
* VERSION: 1.11.
|
3
|
-
* DATE: 2014-
|
2
|
+
* VERSION: 1.11.6
|
3
|
+
* DATE: 2014-03-26
|
4
4
|
* UPDATES AND DOCS AT: http://www.greensock.com
|
5
5
|
*
|
6
6
|
* Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin
|
@@ -34,7 +34,7 @@
|
|
34
34
|
p = TweenMax.prototype = TweenLite.to({}, 0.1, {}),
|
35
35
|
_blankArray = [];
|
36
36
|
|
37
|
-
TweenMax.version = "1.11.
|
37
|
+
TweenMax.version = "1.11.6";
|
38
38
|
p.constructor = TweenMax;
|
39
39
|
p.kill()._gc = false;
|
40
40
|
TweenMax.killTweensOf = TweenMax.killDelayedCallsTo = TweenLite.killTweensOf;
|
@@ -121,19 +121,22 @@
|
|
121
121
|
}
|
122
122
|
if (duration === 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
|
123
123
|
rawPrevTime = this._rawPrevTime;
|
124
|
+
if (this._startTime === this._timeline._duration) { //if a zero-duration tween is at the VERY end of a timeline and that timeline renders at its end, it will typically add a tiny bit of cushion to the render time to prevent rounding errors from getting in the way of tweens rendering their VERY end. If we then reverse() that timeline, the zero-duration tween will trigger its onReverseComplete even though technically the playhead didn't pass over it again. It's a very specific edge case we must accommodate.
|
125
|
+
time = 0;
|
126
|
+
}
|
124
127
|
if (time === 0 || rawPrevTime < 0 || rawPrevTime === _tinyNum) if (rawPrevTime !== time) {
|
125
128
|
force = true;
|
126
129
|
if (rawPrevTime > _tinyNum) {
|
127
130
|
callback = "onReverseComplete";
|
128
131
|
}
|
129
132
|
}
|
130
|
-
this._rawPrevTime = rawPrevTime = (!suppressEvents || time ||
|
133
|
+
this._rawPrevTime = rawPrevTime = (!suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
131
134
|
}
|
132
135
|
|
133
136
|
} else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
|
134
137
|
this._totalTime = this._time = this._cycle = 0;
|
135
138
|
this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
|
136
|
-
if (prevTotalTime !== 0 || (duration === 0 && this._rawPrevTime > _tinyNum)) {
|
139
|
+
if (prevTotalTime !== 0 || (duration === 0 && this._rawPrevTime > 0 && this._rawPrevTime !== _tinyNum)) {
|
137
140
|
callback = "onReverseComplete";
|
138
141
|
isComplete = this._reversed;
|
139
142
|
}
|
@@ -143,7 +146,7 @@
|
|
143
146
|
if (this._rawPrevTime >= 0) {
|
144
147
|
force = true;
|
145
148
|
}
|
146
|
-
this._rawPrevTime = rawPrevTime = (!suppressEvents || time || this._rawPrevTime ===
|
149
|
+
this._rawPrevTime = rawPrevTime = (!suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
147
150
|
}
|
148
151
|
} else if (!this._initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
|
149
152
|
force = true;
|
@@ -607,7 +610,7 @@
|
|
607
610
|
_slice = _blankArray.slice,
|
608
611
|
p = TimelineLite.prototype = new SimpleTimeline();
|
609
612
|
|
610
|
-
TimelineLite.version = "1.11.
|
613
|
+
TimelineLite.version = "1.11.6";
|
611
614
|
p.constructor = TimelineLite;
|
612
615
|
p.kill()._gc = false;
|
613
616
|
|
@@ -875,12 +878,12 @@
|
|
875
878
|
}
|
876
879
|
}
|
877
880
|
}
|
878
|
-
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime ===
|
881
|
+
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
879
882
|
time = totalDur + 0.0001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off). Try (999999999999.7 - 999999999999) * 1 = 0.699951171875 instead of 0.7.
|
880
883
|
|
881
884
|
} else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
|
882
885
|
this._totalTime = this._time = 0;
|
883
|
-
if (prevTime !== 0 || (this._duration === 0 && (this._rawPrevTime >
|
886
|
+
if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime !== _tinyNum && (this._rawPrevTime > 0 || (time < 0 && this._rawPrevTime >= 0)))) {
|
884
887
|
callback = "onReverseComplete";
|
885
888
|
isComplete = this._reversed;
|
886
889
|
}
|
@@ -891,7 +894,7 @@
|
|
891
894
|
}
|
892
895
|
this._rawPrevTime = time;
|
893
896
|
} else {
|
894
|
-
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime ===
|
897
|
+
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
895
898
|
|
896
899
|
time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline)
|
897
900
|
if (!this._initted) {
|
@@ -1204,7 +1207,7 @@
|
|
1204
1207
|
|
1205
1208
|
p.constructor = TimelineMax;
|
1206
1209
|
p.kill()._gc = false;
|
1207
|
-
TimelineMax.version = "1.11.
|
1210
|
+
TimelineMax.version = "1.11.6";
|
1208
1211
|
|
1209
1212
|
p.invalidate = function() {
|
1210
1213
|
this._yoyo = (this.vars.yoyo === true);
|
@@ -1296,7 +1299,7 @@
|
|
1296
1299
|
}
|
1297
1300
|
}
|
1298
1301
|
}
|
1299
|
-
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime ===
|
1302
|
+
this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
1300
1303
|
if (this._yoyo && (this._cycle & 1) !== 0) {
|
1301
1304
|
this._time = time = 0;
|
1302
1305
|
} else {
|
@@ -1309,7 +1312,7 @@
|
|
1309
1312
|
this._totalTime = this._cycle = 0;
|
1310
1313
|
}
|
1311
1314
|
this._time = 0;
|
1312
|
-
if (prevTime !== 0 || (dur === 0 && (prevRawPrevTime >
|
1315
|
+
if (prevTime !== 0 || (dur === 0 && prevRawPrevTime !== _tinyNum && (prevRawPrevTime > 0 || (time < 0 && prevRawPrevTime >= 0)) && !this._locked)) { //edge case for checking time < 0 && prevRawPrevTime >= 0: a zero-duration fromTo() tween inside a zero-duration timeline (yeah, very rare)
|
1313
1316
|
callback = "onReverseComplete";
|
1314
1317
|
isComplete = this._reversed;
|
1315
1318
|
}
|
@@ -1320,7 +1323,7 @@
|
|
1320
1323
|
}
|
1321
1324
|
this._rawPrevTime = time;
|
1322
1325
|
} else {
|
1323
|
-
this._rawPrevTime = (dur || !suppressEvents || time || this._rawPrevTime ===
|
1326
|
+
this._rawPrevTime = (dur || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
1324
1327
|
time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline)
|
1325
1328
|
if (!this._initted) {
|
1326
1329
|
internalForce = true;
|
@@ -1925,6 +1928,7 @@
|
|
1925
1928
|
BezierPlugin = window._gsDefine.plugin({
|
1926
1929
|
propName: "bezier",
|
1927
1930
|
priority: -1,
|
1931
|
+
version: "1.3.1",
|
1928
1932
|
API: 2,
|
1929
1933
|
global:true,
|
1930
1934
|
|
@@ -1976,6 +1980,7 @@
|
|
1976
1980
|
}
|
1977
1981
|
|
1978
1982
|
if ((autoRotate = this._autoRotate)) {
|
1983
|
+
this._initialRotations = [];
|
1979
1984
|
if (!(autoRotate[0] instanceof Array)) {
|
1980
1985
|
this._autoRotate = autoRotate = [autoRotate];
|
1981
1986
|
}
|
@@ -1985,8 +1990,11 @@
|
|
1985
1990
|
p = autoRotate[i][j];
|
1986
1991
|
this._func[p] = (typeof(target[p]) === "function") ? target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ] : false;
|
1987
1992
|
}
|
1993
|
+
p = autoRotate[i][2];
|
1994
|
+
this._initialRotations[i] = this._func[p] ? this._func[p].call(this._target) : this._target[p];
|
1988
1995
|
}
|
1989
1996
|
}
|
1997
|
+
this._startRatio = tween.vars.runBackwards ? 1 : 0; //we determine the starting ratio when the tween inits which is always 0 unless the tween has runBackwards:true (indicating it's a from() tween) in which case it's 1.
|
1990
1998
|
return true;
|
1991
1999
|
},
|
1992
2000
|
|
@@ -1995,6 +2003,7 @@
|
|
1995
2003
|
var segments = this._segCount,
|
1996
2004
|
func = this._func,
|
1997
2005
|
target = this._target,
|
2006
|
+
notStart = (v !== this._startRatio),
|
1998
2007
|
curIndex, inv, i, p, b, t, val, l, lengths, curSeg;
|
1999
2008
|
if (!this._timeRes) {
|
2000
2009
|
curIndex = (v < 0) ? 0 : (v >= 1) ? segments - 1 : (segments * v) >> 0;
|
@@ -2088,7 +2097,7 @@
|
|
2088
2097
|
y1 += (y2 - y1) * t;
|
2089
2098
|
y2 += ((b2.c + (b2.d - b2.c) * t) - y2) * t;
|
2090
2099
|
|
2091
|
-
val = Math.atan2(y2 - y1, x2 - x1) * conv + add;
|
2100
|
+
val = notStart ? Math.atan2(y2 - y1, x2 - x1) * conv + add : this._initialRotations[i];
|
2092
2101
|
|
2093
2102
|
if (func[p]) {
|
2094
2103
|
target[p](val);
|
@@ -2226,9 +2235,10 @@
|
|
2226
2235
|
p = CSSPlugin.prototype = new TweenPlugin("css");
|
2227
2236
|
|
2228
2237
|
p.constructor = CSSPlugin;
|
2229
|
-
CSSPlugin.version = "1.11.
|
2238
|
+
CSSPlugin.version = "1.11.6";
|
2230
2239
|
CSSPlugin.API = 2;
|
2231
2240
|
CSSPlugin.defaultTransformPerspective = 0;
|
2241
|
+
CSSPlugin.defaultSkewType = "compensated";
|
2232
2242
|
p = "px"; //we'll reuse the "p" variable to keep file size down
|
2233
2243
|
CSSPlugin.suffixMap = {top:p, right:p, bottom:p, left:p, width:p, height:p, fontSize:p, padding:p, margin:p, perspective:p, lineHeight:""};
|
2234
2244
|
|
@@ -2350,7 +2360,7 @@
|
|
2350
2360
|
* @param {boolean=} recurse If true, the call is a recursive one. In some browsers (like IE7/8), occasionally the value isn't accurately reported initially, but if we run the function again it will take effect.
|
2351
2361
|
* @return {number} value in pixels
|
2352
2362
|
*/
|
2353
|
-
_convertToPixels = function(t, p, v, sfx, recurse) {
|
2363
|
+
_convertToPixels = _internals.convertToPixels = function(t, p, v, sfx, recurse) {
|
2354
2364
|
if (sfx === "px" || !sfx) { return v; }
|
2355
2365
|
if (sfx === "auto" || !v) { return 0; }
|
2356
2366
|
var horiz = _horizExp.test(p),
|
@@ -2380,7 +2390,7 @@
|
|
2380
2390
|
}
|
2381
2391
|
return neg ? -pix : pix;
|
2382
2392
|
},
|
2383
|
-
_calculateOffset = function(t, p, cs) { //for figuring out "top" or "left" in px when it's "auto". We need to factor in margin with the offsetLeft/offsetTop
|
2393
|
+
_calculateOffset = _internals.calculateOffset = function(t, p, cs) { //for figuring out "top" or "left" in px when it's "auto". We need to factor in margin with the offsetLeft/offsetTop
|
2384
2394
|
if (_getStyle(t, "position", cs) !== "absolute") { return 0; }
|
2385
2395
|
var dim = ((p === "left") ? "Left" : "Top"),
|
2386
2396
|
v = _getStyle(t, "margin" + dim, cs);
|
@@ -3239,6 +3249,9 @@
|
|
3239
3249
|
_transformPropCSS = _prefixCSS + "transform",
|
3240
3250
|
_transformOriginProp = _checkPropPrefix("transformOrigin"),
|
3241
3251
|
_supports3D = (_checkPropPrefix("perspective") !== null),
|
3252
|
+
Transform = _internals.Transform = function() {
|
3253
|
+
this.skewY = 0;
|
3254
|
+
},
|
3242
3255
|
|
3243
3256
|
/**
|
3244
3257
|
* Parses the transform values for an element, returning an object with x, y, z, scaleX, scaleY, scaleZ, rotation, rotationX, rotationY, skewX, and skewY properties. Note: by default (for performance reasons), all skewing is combined into skewX and rotation but skewY still has a place in the transform object so that we can record how much of the skew is attributed to skewX vs skewY. Remember, a skewY of 10 looks the same as a rotation of 10 and skewX of -10.
|
@@ -3248,11 +3261,11 @@
|
|
3248
3261
|
* @param {boolean=} parse if true, we'll ignore any _gsTransform values that already exist on the element, and force a reparsing of the css (calculated style)
|
3249
3262
|
* @return {object} object containing all of the transform properties/values like {x:0, y:0, z:0, scaleX:1...}
|
3250
3263
|
*/
|
3251
|
-
_getTransform = function(t, cs, rec, parse) {
|
3264
|
+
_getTransform = _internals.getTransform = function(t, cs, rec, parse) {
|
3252
3265
|
if (t._gsTransform && rec && !parse) {
|
3253
3266
|
return t._gsTransform; //if the element already has a _gsTransform, use that. Note: some browsers don't accurately return the calculated style for the transform (particularly for SVG), so it's almost always safest to just use the values we've already applied rather than re-parsing things.
|
3254
3267
|
}
|
3255
|
-
var tm = rec ? t._gsTransform ||
|
3268
|
+
var tm = rec ? t._gsTransform || new Transform() : new Transform(),
|
3256
3269
|
invX = (tm.scaleX < 0), //in order to interpret things properly, we need to know if the user applied a negative scaleX previously so that we can adjust the rotation and skewX accordingly. Otherwise, if we always interpret a flipped matrix as affecting scaleY and the user only wants to tween the scaleX on multiple sequential tweens, it would keep the negative scaleY without that being the user's intent.
|
3257
3270
|
min = 0.00002,
|
3258
3271
|
rnd = 100000,
|
@@ -3494,7 +3507,7 @@
|
|
3494
3507
|
}
|
3495
3508
|
},
|
3496
3509
|
|
3497
|
-
_set3DTransformRatio = function(v) {
|
3510
|
+
_set3DTransformRatio = _internals.set3DTransformRatio = function(v) {
|
3498
3511
|
var t = this.data, //refers to the element's _gsTransform object
|
3499
3512
|
style = this.t.style,
|
3500
3513
|
angle = t.rotation * _DEG2RAD,
|
@@ -3525,9 +3538,16 @@
|
|
3525
3538
|
angle -= t.skewX * _DEG2RAD;
|
3526
3539
|
cos = Math.cos(angle);
|
3527
3540
|
sin = Math.sin(angle);
|
3541
|
+
if (t.skewType === "simple") { //by default, we compensate skewing on the other axis to make it look more natural, but you can set the skewType to "simple" to use the uncompensated skewing that CSS does
|
3542
|
+
t1 = Math.tan(t.skewX * _DEG2RAD);
|
3543
|
+
t1 = Math.sqrt(1 + t1 * t1);
|
3544
|
+
cos *= t1;
|
3545
|
+
sin *= t1;
|
3546
|
+
}
|
3528
3547
|
}
|
3529
3548
|
a12 = -sin;
|
3530
3549
|
a22 = cos;
|
3550
|
+
|
3531
3551
|
} else if (!t.rotationY && !t.rotationX && sz === 1 && !perspective) { //if we're only translating and/or 2D scaling, this is faster...
|
3532
3552
|
style[_transformProp] = "translate3d(" + t.x + "px," + t.y + "px," + t.z +"px)" + ((sx !== 1 || sy !== 1) ? " scale(" + sx + "," + sy + ")" : "");
|
3533
3553
|
return;
|
@@ -3601,7 +3621,7 @@
|
|
3601
3621
|
style[_transformProp] = "matrix3d(" + [ (((a11 * rnd) | 0) / rnd), (((a21 * rnd) | 0) / rnd), (((a31 * rnd) | 0) / rnd), (((a41 * rnd) | 0) / rnd), (((a12 * rnd) | 0) / rnd), (((a22 * rnd) | 0) / rnd), (((a32 * rnd) | 0) / rnd), (((a42 * rnd) | 0) / rnd), (((a13 * rnd) | 0) / rnd), (((a23 * rnd) | 0) / rnd), (((a33 * rnd) | 0) / rnd), (((a43 * rnd) | 0) / rnd), a14, a24, a34, (perspective ? (1 + (-a34 / perspective)) : 1) ].join(",") + ")";
|
3602
3622
|
},
|
3603
3623
|
|
3604
|
-
_set2DTransformRatio = function(v) {
|
3624
|
+
_set2DTransformRatio = _internals.set2DTransformRatio = function(v) {
|
3605
3625
|
var t = this.data, //refers to the element's _gsTransform object
|
3606
3626
|
targ = this.t,
|
3607
3627
|
style = targ.style,
|
@@ -3624,7 +3644,7 @@
|
|
3624
3644
|
}
|
3625
3645
|
};
|
3626
3646
|
|
3627
|
-
_registerComplexSpecialProp("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,transformPerspective,directionalRotation,parseTransform,force3D", {parser:function(t, e, p, cssp, pt, plugin, vars) {
|
3647
|
+
_registerComplexSpecialProp("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType", {parser:function(t, e, p, cssp, pt, plugin, vars) {
|
3628
3648
|
if (cssp._transform) { return pt; } //only need to parse the transform once, and only if the browser supports it.
|
3629
3649
|
var m1 = cssp._transform = _getTransform(t, _cs, true, vars.parseTransform),
|
3630
3650
|
style = t.style,
|
@@ -3678,6 +3698,8 @@
|
|
3678
3698
|
hasChange = true;
|
3679
3699
|
}
|
3680
3700
|
|
3701
|
+
m1.skewType = v.skewType || m1.skewType || CSSPlugin.defaultSkewType;
|
3702
|
+
|
3681
3703
|
has3D = (m1.force3D || m1.z || m1.rotationX || m1.rotationY || m2.z || m2.rotationX || m2.rotationY || m2.perspective);
|
3682
3704
|
if (!has3D && v.scale != null) {
|
3683
3705
|
m2.scaleZ = 1; //no need to tween scaleZ.
|
@@ -5420,21 +5442,21 @@
|
|
5420
5442
|
|
5421
5443
|
|
5422
5444
|
p.play = function(from, suppressEvents) {
|
5423
|
-
if (
|
5445
|
+
if (from != null) {
|
5424
5446
|
this.seek(from, suppressEvents);
|
5425
5447
|
}
|
5426
5448
|
return this.reversed(false).paused(false);
|
5427
5449
|
};
|
5428
5450
|
|
5429
5451
|
p.pause = function(atTime, suppressEvents) {
|
5430
|
-
if (
|
5452
|
+
if (atTime != null) {
|
5431
5453
|
this.seek(atTime, suppressEvents);
|
5432
5454
|
}
|
5433
5455
|
return this.paused(true);
|
5434
5456
|
};
|
5435
5457
|
|
5436
5458
|
p.resume = function(from, suppressEvents) {
|
5437
|
-
if (
|
5459
|
+
if (from != null) {
|
5438
5460
|
this.seek(from, suppressEvents);
|
5439
5461
|
}
|
5440
5462
|
return this.paused(false);
|
@@ -5449,7 +5471,7 @@
|
|
5449
5471
|
};
|
5450
5472
|
|
5451
5473
|
p.reverse = function(from, suppressEvents) {
|
5452
|
-
if (
|
5474
|
+
if (from != null) {
|
5453
5475
|
this.seek((from || this.totalDuration()), suppressEvents);
|
5454
5476
|
}
|
5455
5477
|
return this.reversed(true).paused(false);
|
@@ -5880,7 +5902,7 @@
|
|
5880
5902
|
p._firstPT = p._targets = p._overwrittenProps = p._startAt = null;
|
5881
5903
|
p._notifyPluginsOfEnabled = false;
|
5882
5904
|
|
5883
|
-
TweenLite.version = "1.11.
|
5905
|
+
TweenLite.version = "1.11.6";
|
5884
5906
|
TweenLite.defaultEase = p._ease = new Ease(null, null, 1, 1);
|
5885
5907
|
TweenLite.defaultOverwrite = "auto";
|
5886
5908
|
TweenLite.ticker = _ticker;
|
@@ -6173,19 +6195,22 @@
|
|
6173
6195
|
}
|
6174
6196
|
if (duration === 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
|
6175
6197
|
rawPrevTime = this._rawPrevTime;
|
6198
|
+
if (this._startTime === this._timeline._duration) { //if a zero-duration tween is at the VERY end of a timeline and that timeline renders at its end, it will typically add a tiny bit of cushion to the render time to prevent rounding errors from getting in the way of tweens rendering their VERY end. If we then reverse() that timeline, the zero-duration tween will trigger its onReverseComplete even though technically the playhead didn't pass over it again. It's a very specific edge case we must accommodate.
|
6199
|
+
time = 0;
|
6200
|
+
}
|
6176
6201
|
if (time === 0 || rawPrevTime < 0 || rawPrevTime === _tinyNum) if (rawPrevTime !== time) {
|
6177
6202
|
force = true;
|
6178
6203
|
if (rawPrevTime > _tinyNum) {
|
6179
6204
|
callback = "onReverseComplete";
|
6180
6205
|
}
|
6181
6206
|
}
|
6182
|
-
this._rawPrevTime = rawPrevTime = (!suppressEvents || time ||
|
6207
|
+
this._rawPrevTime = rawPrevTime = (!suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
6183
6208
|
}
|
6184
6209
|
|
6185
6210
|
} else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0.
|
6186
6211
|
this._totalTime = this._time = 0;
|
6187
6212
|
this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
|
6188
|
-
if (prevTime !== 0 || (duration === 0 && this._rawPrevTime > _tinyNum)) {
|
6213
|
+
if (prevTime !== 0 || (duration === 0 && this._rawPrevTime > 0 && this._rawPrevTime !== _tinyNum)) {
|
6189
6214
|
callback = "onReverseComplete";
|
6190
6215
|
isComplete = this._reversed;
|
6191
6216
|
}
|
@@ -6195,7 +6220,7 @@
|
|
6195
6220
|
if (this._rawPrevTime >= 0) {
|
6196
6221
|
force = true;
|
6197
6222
|
}
|
6198
|
-
this._rawPrevTime = rawPrevTime = (!suppressEvents || time || this._rawPrevTime ===
|
6223
|
+
this._rawPrevTime = rawPrevTime = (!suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.
|
6199
6224
|
}
|
6200
6225
|
} else if (!this._initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
|
6201
6226
|
force = true;
|