Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- NEW: ScrollTrigger plugin that empowers you to create jaw-dropping scroll-based animations with minimal code. You can define a scrollTrigger directly in any GSAP animation (Tween or Timeline). See https://greensock.com/scrolltrigger - IMPROVED: if you set a yoyoEase on a timeline (or a tween with a stagger), it will propagate down through its children accordingly on yoyo. - IMPROVED: you can now use an alias (like "rotate" instead of "rotation") in a gsap.quickSetter(). - IMPROVED: lots of TypeScript definition additions. - IMPROVED: you can now pass an Array as the motionPath with properties other than the recognised x/y ones (x, translateX, left, marginLeft, y, translateY, top, marginTop). There's also a helper function available to reproduce the type: "soft" from the old BezierPlugin here: https://greensock.com/forums/topic/24052-how-to-do-soft-bezier-with-motionpath/ - IMPROVED: if you have MotionPathPlugin plot a smooth path through points that you provide and the starting and ending points are basically on top of each other, it'll essentially "close" the path, making the curvature smooth at that point (where the start and end meet). - IMPROVED [possible breaking change, though very unlikely]: onReverseComplete gets called when the playhead returns to 0 after having been elsewhere even if the animation instance isn't technically in "reversed" mode. This is much more handy because previously it was very cumbersome to try to discern when a child animation (in a timeline) has its playhead hits the start when the parent's playhead is going backwards. If you need to only call the function when in reverse, you can simply add conditional logic in the callback, like if (this.reversed()) {...}. - FIXED: issue with the "sine" ease could cause the final value to be 0.999999999999 instead of 1, thus "tweens" of the "display" property (that should just toggle at the very end) wouldn't toggle properly. - FIXED: PixiPlugin now works around the fact that PixiJS returns a string hexidecimal formatted like "0xFF52CC" instead of "#FF52CC" or numeric 0xFF52CC for things like fillColor. See https://greensock.com/forums/topic/23574-gsap-v3-pixijs-v5-pixiplugin-w-stagger-issue-with-graphics-fill/ - FIXED: if you define a "resolution" in your pixi:{} object for PixiPlugin, it doesn't throw a warning about "resolution" not being a valid property. - FIXED: if you called invalidate() on a from() or fromTo() tween whose playhead is at 0 and then tried rendering at exactly 0, the starting values wouldn't be rendered properly. - FIXED: if you clear() a timeline that's paused, it would remember the playhead position from before it was cleared so that when it resumes, it starts from that place. See https://greensock.com/forums/topic/23681-timelineinvalidate-doesnt-seem-to/ - FIXED: killTweensOf() failed to completely remove a tween from its parent timeline if that tween had a stagger applied (basically if it had an internal timeline). See https://greensock.com/forums/topic/23729-how-to-createinterrupt-a-repeating-idle-animation/?tab=comments#comment-112523 - FIXED: when a transform-related value is animated and the target didn't have an offsetParent, it could get temporarily appended to the documentElement (and immediately swapped back) for accurate measurement on the first render even when it wasn't necessary. This wouldn't cause any visual problems, but it could cause a MutationObserver to fire. See #375 - FIXED: if you set a tween's duration to a string of exactly "0", it wouldn't render the end values. - FIXED: if you set the timeScale of an infinitely-repeating animation to a small negative number, it could cause odd behavior. - FIXED: a zero-duration tween (or callback) that's positioned at the very start of a yoyo-ing timeline may not get called on each yoyo cycle. See #7 (comment) - FIXED:an addPause() at the very beginning of a repeating timeline may intermittently cause rendering problems in that timeline if the timing conditions were just right. See https://greensock.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 - FIXED: if a .from() tween had css-related values wrapped in a css:{} object, the initial state wasn't rendered properly with those values (of course it's typically wasteful to wrap them anyway). See https://greensock.com/forums/topic/24008-inital-states-problem/ - FIXED: if you declare a function-based end value in InertiaPlugin, that function would get called twice. See https://greensock.com/forums/topic/23986-inertia-plugin-end-prop-double-firing/ - FIXED: if you set a Draggable to only allow one direction, like type: "x" or type: "y" but you drag on the opposite axis initially, it could ignore that drag (thinking it was locked on the other axis initially, thus ignoring the movement). - FIXED: overwrite: "auto" didn't properly kill overlapping AttrPlugin values - FIXED: setting box-sizing: border-box on a Draggable target could cause its bounds not to include the border correctly. - FIXED: Draggable wasn't completely preventing the context menu on long-press on Android devices - FIXED: on some touch devices, Draggable wasn't preventing scroll and the touch event would get cancelled prematurely. - FIXED: some of the coordinate conversion (and alignment) functionality in MotionPathPlugin didn't work properly if both elements were SVG and had different ownerSVGElements. See https://greensock.com/forums/topic/23592-align-one-svg-to-a-child-element-of-another-svg/ - FIXED: in some cases (due to a rounding issue internally), a set() call may not have immediateRender: true (it'd wait one tick) - FIXED: in some very rare cases, a tween's repeatRefresh would use the starting values rather than the ending values after invalidating/refreshing. - FIXED: if a <rect> has an rx attribute defined but not an ry, browsers use the same value as rx but MorphSVGPlugin.convertToPath() didn't accommodate that. - FIXED: if motionPath tween with an align defined was aligning an element that had an ancestor element with a scale of 0, it wouldn't align properly.
- Loading branch information