Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Snyk has created this PR to upgrade multiple dependencies.
👯♂ The following dependencies are linked and will therefore be updated together.ℹ️ Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
@testing-library/jest-dom
from 5.14.1 to 5.17.0 | 9 versions ahead of your current version | a year ago
on 2023-07-18
gsap
from 3.7.1 to 3.12.5 | 20 versions ahead of your current version | 8 months ago
on 2024-01-18
Release notes
Package name: @testing-library/jest-dom
5.17.0 (2023-07-18)
Features
toHaveAccessibleErrorMessage
better implementing the spec, deprecatetoHaveErrorMessage
(#503) (d717c66)5.16.5 (2022-08-04)
Bug Fixes
5.16.4 (2022-04-05)
Bug Fixes
5.16.3 (2022-03-24)
Bug Fixes
.not
(#447) (6988a67)5.16.2 (2022-02-03)
Bug Fixes
toBeDisabled
(#368) (8162115)5.16.1 (2021-12-06)
Bug Fixes
toHaveClass
error message format (#405) (a9beb47)5.16.0 (2021-12-03)
Features
5.15.1 (2021-11-23)
Bug Fixes
5.15.0 (2021-11-02)
Features
5.14.1 (2021-06-11)
Bug Fixes
Package name: gsap
IMPROVED: ScrollTrigger's ignoreMobileResize is true by default now because a few versions back we switched to calculating the window height based on 100vh instead of window.innerHeight, so it really isn't necessary to force a .refresh() on mobile resize (address bar showing/hiding). This change improves performance on mobile devices because it skips the expensive refresh() when the address bar shows/hides.
IMPROVED: removed a DisplayObject check in PixiPlugin so that it's more compatible with the upcoming release of Pixi.js version 8. See #561
IMPROVED: the anticipatePin feature works when scrolling in either direction (previously it worked when scrolling forward only). See https://gsap.com/community/forums/topic/39521-anticipatepin-in-reverse/
FIXED: regression in 3.12.3 could cause a ScrollTrigger that has a numeric scrub value and a snap to prematurely jump to the final progress value when the snap finished rather than waiting for the scrub to finish. See https://gsap.com/community/forums/topic/39363-scrolltrigger-scrub-clip-path-flicker-when-scroll-back/ and #567
FIXED: regression in 3.12.3 could cause a tween with repeatRefresh: true AND a non-zero repeatDelay not to refresh. See https://codepen.io/GreenSock/pen/yLwLgNQ/db88d564d6308b9fcff7b65efb95febf?editors=1010
FIXED: if you set a ScrollSmoother's effects() in a delayed fashion (after two ticks elapse after page load), it may not calculate offsets properly. See https://gsap.com/community/forums/topic/39380-scroll-smoother-effects-targets-jump-on-effectstrue/
FIXED: regression in 3.12.3: if the playhead lands exactly on top of the yoyo position of a keyframed tween, it may render at the state before the animation started (just for 1 tick). See #558
FIXED: if you set invalidateOnRefresh: true on a ScrollTrigger that's attached to a .fromTo() tween, it may not render at the initial state on refresh(). See https://gsap.com/community/forums/topic/39386-svgdraw-window-resize-issues/
FIXED: if you create a gsap.matchMedia() inside a gsap.context() and then revert() that Context, it may not clear out non-matching media queries (they may fire again when matching). See https://gsap.com/community/forums/topic/39481-pin-spacer-is-double-the-height-it-should-be-after-window-resize/
FIXED: if the system clock changes backwards to an earlier time, it could cause animations to stop. See #568
FIXED: if a flexbox child is pinned by ScrollTrigger and pinSpacing is false, flex-basis is now set to the pixel height/width of the element to avoid common layout problems.
FIXED: missing TypeScript parameter for ScrollTrigger.clearScrollMemory(). See #571
FIXED: if you set a default stagger value via gsap.defaults(), it could cause an error in ScrollTrigger if you create one with a numeric scrub. See https://gsap.com/community/forums/topic/39600-scrolltrigger-numeric-scrub-throws-console-errors-in-gsap-core-cannot-read-properties-of-undefined-reading-totalprogress/
FIXED: if a motionPath tween had a start or end value that wraps around and would land precisely on an anchor point that is not at the very start or end of a path, it could render incorrectly. See https://gsap.com/community/forums/topic/39594-why-are-content-1-and-content-2-overlaped-also-what-is-the-best-way-to-add-a-timeline-to-a-main-tween-or-timeline/
FIXED: regression in 3.12.3 could cause ScrollTriggers in gsap.matchMedia() to stop functioning after quick resizes that pass the matchMedia bounds. See https://gsap.com/community/forums/topic/39241-animations-freeze-after-a-few-window-resizes-and-using-gsapmatchmedia/
FIXED: overwriting a scrollTo tween in such a way that didn't leave any more properties tweening, onInterrupt() wasn't invoked.
FIXED: SplitText TypeScript definitions file needed an "elements" property. See #564
FIXED: if you Promise.all() or .then() a timeline that already finished and has a zero duration, that Promise may not resolve properly. See https://gsap.com/community/forums/topic/39291-promiseall-dont-resolve-when-overwrite/
FIXED: regression in 3.12.3 could cause transforms (x, y, scaleX, scaleY, rotation, etc.) on SVG elements to calculate the origin incorrectly. See https://gsap.com/community/forums/topic/39197-update-3123-broke-my-code-for-animating-clip-paths and #563
IMPROVED: gsap.context() and gsap.matchMedia() functions will get a 2nd argument that we'll call "contextSafe" which is like a wrapper for any function that you'd like to keep in the context. So any GSAP animations/ScrollTriggers/Draggables/Observers that are created during the execution of that function will be added to the context and the selector text will be scoped.
IMPROVED: added a suppressEvents parameter to Tween/Timeline/Animation .timeScale() method so that you can optionally prevent it from suppressing events when altering the timeScale. See #551
IMPROVED added an ignoreSpeed [3rd] parameter to ScrollSmoother's offset() method to allow you to specify whether you want to get the value that corresponds to the window's scroll position or the ScrollSmoother's scrollTop value. See https://greensock.com/forums/topic/35108-problems-with-the-scrollsmoother-plug-in-speed-option-in-gsap-3114/
IMPROVED: Observer now fires an onStop with an onMove (previously it would only fire after a press). See https://greensock.com/forums/topic/38469-observer-misunderstanding-with-onchange-onmove-and-onstop/
IMPROVED: slight change to TypeScript definitions for EaseString allows arbitrary strings while also activating code hinting for the common ones in more environments. See #556
IMPROVED: animations/ScrollTriggers created inside a ScrollTrigger's callback like onEnter/onLeave/onToggle/onEnterBack/onLeaveBack will be added to the original Context (if one existed), meaning selector text will be scoped properly. See https://gsap.com/community/forums/topic/38850-reactgsap-why-i-cant-use-class-selector-in-scrolltrigger-inside-gsapcontext/
IMPROVED: a ScrollTrigger's snap end position is limited to the resolution of the browser's scroll (whole pixels only), thus if you have a scrubbed animation that's supposed to snap to a very specific spot on that animation, it may end slightly off of that but now a correction runs at the end of the snap to ensure that it gets set PRECISELY to that snapped position. See https://gsap.com/community/forums/topic/38937-scrolltrigger-timeline-snapping-with-label-doesnt-snap-precisely-to-label-position/
IMPROVED: the gsap-trial files will now work on domains that end in ".local" (for testing only please)
FIXED: for an Observer, if you pressed, started dragging but released within 3 pixels of the original press, it wouldn't fire the onDragEnd. See https://greensock.com/forums/topic/37510-the-problem-that-ondragend-is-not-called-in-observer/
FIXED: if you revert() a context/matchMedia that has a reversed animation, it may not render things in the proper order, potentially leaving inline styles when it shouldn't. See https://greensock.com/forums/topic/37432-issues-with-horizontalloop-helper/
FIXED: if Draggable is applied to an where the document isn't defined initially, an error could be thrown. See #549
FIXED: if you apply a speed to a ScrollSmoother (other than 1), the offset() method would return a value that corresponds to the window's scroll position rather than the ScrollSmoother's scrollTop (which is affected by speed). See https://greensock.com/forums/topic/35108-problems-with-the-scrollsmoother-plug-in-speed-option-in-gsap-3114/
FIXED: if you apply an onUpdate to a .fromTo() tween, the scope ("this") would be linked to the zero-duration "from" tween instead of the actual tween instance you'd expect, thus its progress() would be 1 instead of 0 at the very start.
FIXED: if you define position: absolute on a SplitText and then revert(), the width/height inline styles could remain instead of getting cleared out. See https://greensock.com/forums/topic/38391-responsive-behavior-using-splittext/
FIXED: if you create a ScrollTrigger with a "snap" and pin inside a gsap.matchMedia(), it could lead to incorrect positioning of the pinned element after a resize that makes it no longer match.
FIXED: if you set a CSS value to "auto" (like height or width) via a GSAP tween and then you revert() it, the original computed value could be left as an inline style instead of cleared out.
FIXED: if you call kill() or revert() on a MotionPathHelper in certain specific conditions, it may delete the original itself.
FIXED: worked around a very rare scenario where document.createElement() returns undefined and would consequently throw an error in CSSPlugin. See #553
FIXED: if you create a staggered animation inside a gsap.context() or gsap.matchMedia() that affects the same element(s) as a gsap.set() that happened before that staggered animation and then the context/matchMedia gets reverted, the initial value may not get reverted properly.
FIXED: if you animate a percentage-based width/height of an element whose parent has padding and/or is flexbox/grid, and the target element doesn't have that property already set inline, it may miscalculate the starting value of the tween. Related to https://gsap.com/community/forums/topic/38599-how-to-animate-object-fit/
FIXED: if you create multiple SplitText instances on the same element inside a gsap.context() and then revert() that Context, it may not fully revert the element to its original state. See https://gsap.com/community/forums/topic/38734-splittext-innerwrap-renders-twice-in-strictmode/
FIXED: if you set allowNestedScroll: true in the ScrollTrigger.normalizeScroll() feature, touch-scrolling on a link on a mobile device could result in a click event firing on that link. See https://gsap.com/community/forums/topic/38770-why-does-the-burger-menu-scroll-along-with-the-content-on-mobile/#comment-193009
FIXED: if you set end: "max" or clamp() the end of a ScrollTrigger that has a pin, and the pinSpacing was extending the page taller, the dynamic adjustment of the end value would also affect the pinSpacing, reducing the maximum scroll area which then wouldn't be accurately reflected in the final end value.
FIXED: if you define a stagger with grid: "auto" on an Array of elements that don't wrap at all (not really a grid), the last element's timing wouldn't be correct. See https://gsap.com/community/forums/topic/38536-when-scrolling-down-a-batch-the-stagger-doesnt-seem-to-work-correctly/
FIXED: if you clamp() a ScrollTrigger's start value and it would naturally (without clamping) resolve to beyond the maximum scroll position, it wouldn't get clamped. Starting values were only clamped such that they weren't allowed to be negative (focused on the top of the page only, not the bottom too).
FIXED: if you dynamically added/created a ScrollTrigger while ScrollSmoother was mid-scrub, it could lead to the scroll jumping. See https://gsap.com/community/forums/topic/37515-dynamic-scrolltrigger-with-pin-inside-a-scrollsmoother/
FIXED: if you run SplitText on text that has words separated by non-breaking spaces ( ), it wouldn't recognize that as a word delimiter. See https://gsap.com/community/forums/topic/37271-why-does-the-splitted-node-from-splittext-includes-extra-whitespace-note-only-the-node-which-is-next-tag/
FIXED: Flip.fit() is now gsap.context()-aware so that it'll revert inline styles when the context is reverted.
FIXED: regression in 3.11 that could cause transformOrigin to lose its "z" portion if you apply it in a .from() or .fromTo() tween or a context that gets reverted. See https://gsap.com/community/forums/topic/38958-rotatey-not-working-in-nuxt/
FIXED: if you call gsap.registerPlugin(Observer) multiple times, it could throw an error.
IMPROVED: on mobile devices where the address bar shows/hides and sometimes causes a jump after scrolling stops, particularly if there are multiple pins, ScrollTrigger now calculates positions based on 100vh instead of window.innerHeight because the former doesn't change whereas the latter does. This essentially avoids the "jump" in most cases (unless the elements on your page actually resize).
IMPROVED: consolidated "scroll" event listeners in ScrollTrigger so fewer are added to the main document. Functionally it makes no difference, but there is at least one synthetic test online that would [incorrectly] complain.
FIXED: regression in PixiPlugin caused an error related to filters. See #541
FIXED: regression in 3.12.0 caused ScrollTriggers that were applied to timelines inside a gsap.context() not to get reverted properly when revert() was called on the context. See https://greensock.com/forums/topic/37278-updating-to-312-3121-breaks-pinning/
FIXED: if you insert a tween/callback into a timeline at a position EARLIER than where the playhead currently is, it may not render immediately, or if it's a callback it may fire on the next render when it actually shouldn't. See https://greensock.com/forums/topic/37218-timeline-trigger-all-callbacks-with-specific-timing-when-play/
FIXED: regression in 3.12.0 caused an error in Draggable if you enable inertia and then disable() the Draggable instance. See https://greensock.com/forums/topic/37397-draggable-error-in-version-12-when-using-disable/
FIXED: regression in 3.11.0 could cause a repeating tween/timeline to render at the wrong iteration if it was reversed and then a totalTime() was set that was beyond the first iteration.
FIXED: if you revert() a gsap.context() that has a reversed animation that'd cause its startTime to be lower than -1 and it had .fromTo() tweens, the "from" revert happened out of order which might have left the starting values incorrect.
FIXED: regression in 3.12.0 could cause a ScrollTrigger's snapping to act incorrectly in a very specific scenario, like if mid-scroll the start/end values change.
FIXED: For a ScrollTrigger with a containerAnimation, a regression in 3.12.0 caused values passed into .setPositions() to be interpreted as scroll positions instead of time values. See https://greensock.com/forums/topic/36910-horizontal-scrollsmoother-with-scrolltrigger-and-anchors/#comment-185615
FIXED: Regression in 3.12.0 caused ScrollSmoother's "lag" feature not to function properly.
NEW: Ever had ScrollTriggered animations at the very top of your page start out partially-scrubbed? Now you can clamp() them! Wrap your ScrollTrigger start/end values with "clamp()" to prevent them from "leaking" outside the bounds of the page. They'll never start before a scroll position of 0, nor will they finish after the maximum scroll. Clamped ScrollTriggers make all your "above the fold" elements start off in their native positions.
NEW: For ScrollSmoother, you can now wrap your data-speed value in "clamp()" to make the associated element start out in its natural position if it's within the viewport at the top of the page (meaning the resulting ScrollTrigger would otherwise have a negative start value), and it also will have the same effect if the element is at the very bottom of the page and the associated effect's ScrollTrigger would normally have an end value that exceeds the maximum scroll position. See https://greensock.com/forums/topic/36177-scrollsmoother-data-speed-and-firstlast-folds/
NEW: ScrollSmoother officially recognizes a new "speed" property that you can use to make the page scroll faster or slower.
IMPROVED: TypeScript string-based eases added to improve code hinting in some editors. See #533
IMPROVED: if you set dragClickables: false in a React app, since React adds an onclick handler on the root, things wouldn't be draggable. So having an onclick handler no longer causes something to be deemed "clickable". You can always use the clickableTest function if you'd like to run your own logic. See https://greensock.com/forums/topic/36854-using-a-handle-touchpoint-to-manipulate-a-draggable-object-allowing-for-form-interaction/
IMPROVED: PixiPlugin now recognizes the new location for filters in Pixi version 7.1 and later. See https://greensock.com/forums/topic/36997-pixi-plugin-deprecation-v7/
FIXED: regression in 3.11.5 could cause a motionPath tween to throw an error if the target is not a DOM element and you're animating transform-related properties like "x" or "y". See #531
FIXED: if a Flip-related tween is reverted when it is paused, it wouldn't clear out the inline styles properly. Related to this thread in the forums: https://greensock.com/forums/topic/36259-flip-resize/
FIXED: ScrollSmoother might appear to jump slightly on the very first scroll in a specific situation. See https://greensock.com/forums/topic/35244-there-is-a-lag-with-page-scrolling-while-using-scrollsmoother/
FIXED: Some frameworks like Vue make the value of Refs into Proxies, so when you store a gsap.context() or gsap.matchMedia() in a Ref and then revert() it (perhaps onUnmount()), the Proxy that the framework imposed interfered with GSAP's ability to match up the original object with the Proxy, so a matchMedia() may not get properly killed in some edge cases. See https://greensock.com/forums/topic/36313-use-matchmedia-with-scrolltrigger-pin-in-nuxt3-will-get-error-after-breakpoint-change/
FIXED: if you create a timeline inside a gsap.context() with a callback like onComplete it may still get called after revert() is called on the context. Timelines are now properly killed in the context.revert() call. See https://greensock.com/forums/topic/35365-react-and-gsap-timelines-callbacks/
FIXED: if you disable() a Draggable that's in the middle of an inertia animation, it'll kill() that animation.
FIXED: in 3.11.5 if you set overflow-y: scroll on the and you used ScrollTrigger to pin something on a page that natively doesn't have any scroll, it might horizontally size things slightly wrong (as if there was an extra scrollbar's worth of space).
FIXED: if you set a "speed" on a ScrollSmoother and then the content resizes when the page is scrolled all the way to the bottom, it may jump the scroll position incorrectly. See https://greensock.com/forums/topic/36602-scrollsmoother-with-accordion-animation-makes-page-jump/
FIXED: if you create a staggered tween inside a gsap.context() and then kill()/revert() the context, it could throw an error. See #536
FIXED: if you use selector text for an endTrigger of a ScrollTrigger that was created inside of a scoped gsap.context(), it may not honor that scope. See #537
FIXED: if you initiate a ScrollTriggered from() animation that has a stagger BEFORE ScrollSmoother is created, it may render incorrectly initially. See https://greensock.com/forums/topic/36777-scrollsmoother-splittext-nextjs/ and https://codepen.io/GreenSock/pen/eYPyPpd?editors=0010
FIXED: if you create a ScrollSmoother AFTER already creating ScrollTriggers, and you revert() and then re-create the ScrollSmoother (sometimes happens in environments like Next.js), it may revert() those pre-existing ScrollTriggers even if they weren't created inside the context in which the ScrollSmoother was created. See https://greensock.com/forums/topic/36777-scrollsmoother-splittext-nextjs/
FIXED: if you apply a ScrollTrigger to an element that also has data-speed and ScrollSmoother is controlling it, the end scroll position may be miscalculated. See https://greensock.com/forums/topic/36930-scrollsmoother-with-data-speed-causes-wrong-scrolltrigger-positions/
FIXED: if you create a gsap.context() or gsap.matchMedia() inside a scoped gsap.context() (nested), it wouldn't honor the outer scope as the default.
FIXED: a regression in 3.11.x could cause timeline event callbacks and onEnter/onLeave ScrollTrigger callbacks not to fire properly on a ScrollTrigger-scrubbed timeline when the page is reloaded after scrolling down (scroll restoration). See #538
FIXED: if you use data-speed="auto" on an element with ScrollSmoother, a very specific aspect ratio could cause the element to move in the wrong direction. See https://greensock.com/forums/topic/37185-issues-with-scrollsmoother-for-images-past-a-certain-width/
IMPROVED: if you set up an animation with a ScrollTrigger based on a containerAnimation and it has a negative start position (happens BEFORE the containerAnimation), it will render it initially at the spot where the containerAnimation begins (to avoid a jump). See https://greensock.com/forums/topic/35184-gsap-horizontal-scroll-with-parallax-need-to-figure-the-first-element-parallax-position-before-the-scroller-pins-and-animation-starts/
IMPROVED: if you try using MotionPathPlugin.getPositionOnPath() on a RawPath that hasn't had cacheRawPathMeasurements() on it, now it'll automatically call that for you rather than throwing an error.
IMPROVED: GSDevTools is context-aware now.
IMPROVED: Draggable now saves the target's original inline styles (transform/top/left) and then reverts them when its revert() method is called (and it works with gsap.matchMedia() and gsap.context()). See https://greensock.com/forums/topic/35287-gsapmatchmedia-draggable-not-reverting/
IMPROVED: ScrollSmoother will automatically watch for when the content element resizes and check to see if the current scroll position is greater than the new maximum and adjust things accordingly. See https://greensock.com/forums/topic/32353-scrollsmoother-not-refresh-the-page-height-when-accordion-is-openclosed/#comment-179179
IMPROVED: ScrollTrigger.normalizeScroll() will now automatically cancel its momentum-based scroll on mobile devices when it senses that something else changed the scroll (like if you do a scrollTo tween). It also cancels it when there's a touchmove event. See https://greensock.com/forums/topic/35970-scrolltrigger-makes-jump-on-mobile-vertical-fullscreen-slider/
IMPROVED: better compatibility with worker and SSR environments by delaying the auto-registration of CSSPlugin internally if the window doesn't exist yet. See #524
FIXED: if you set a "speed" that's not 1 directly on a ScrollSmoother instance, the .offset() or scrollTo() methods wouldn't factor that into the results. See https://greensock.com/forums/topic/35108-problems-with-the-scrollsmoother-plug-in-speed-option-in-gsap-3114/
FIXED: in some browsers (like Firefox), screen repaints weren't consistent (seemingly the scroll thread and main thread got out of sync sometimes) unless we put SOMETHING (anything, even an empty function) into the requestAnimationFrame() queue at all times. So ScrollTrigger does that now as a workaround.
FIXED: ScrollTrigger.normalizeScroll() may still allow "jitter" in some cases like on Android with a pinType that's "transform"...but that has been resolved now. See https://greensock.com/forums/topic/35157-scrolltrigger-pinning-causes-jitter-when-using-touch-on-safari/
FIXED: if you applied an onUpdate to a tween that's a containerAnimation for a ScrollTrigger, "this" (the scope) inside that function wouldn't properly refer to the animation instance itself.
FIXED: a regression in 3.11.4 could cause ScrollSmoother to initially jump slightly (on the very first scroll movement). See https://greensock.com/forums/topic/35244-there-is-a-lag-with-page-scrolling-while-using-scrollsmoother/
FIXED: if you set a negative delay on an animation and then invert the timeScale to a negative value and then change it again, it could adjust the startTime incorrectly. See https://greensock.com/forums/topic/35243-reversed-animation/
FIXED: (regression in 3.11.4) if a ScrollSmoother was resized after being scrolled, it may jump to a scrolled position and back again (see https://greensock.com/forums/topic/35529-scrollsmoother-strange-behavior-when-resizing-a-window/)
FIXED: if you right-click (context menu) on an Observer's target, it would act as though the pointer stays down (dragging) after the context menu is released. Now it'll ignore the event if its "button" value is truthy. See https://greensock.com/forums/topic/35505-strange-behaviour-with-observer/
FIXED: if you apply snapping to a ScrollTrigger and dynamically recreate it after scrolling, it could incorrectly restore the scroll position. See https://greensock.com/forums/topic/35545-%F0%9F%9A%92-need-help-with-scrolltrigger-refresh-events
FIXED: if a ScrollSmoother's content resized, it would [correctly] call a refresh() but any ScrollTriggers that had a scrub applied may inadvertently start again from their beginning at that point. See https://greensock.com/forums/topic/35536-smoothscroller-ignoremobileresize-for-non-touch-devices
FIXED: if you set a "speed" on a ScrollSmoother instance (other than 1) and then toggle paused() true/false, it could render the page at the wrong position. See https://greensock.com/forums/topic/35612-scrollsmoother-speed-option-bug-in-gsap-3114/
FIXED: a regression in 3.11.3 caused ScrollTriggers with a pinnedContainer and pin defined to sometimes not pin initially in a particular edge case.
FIXED: a regression in 3.11.2 could cause ScrollTriggers with a numeric scrub value to initially jump to their starting position and then scrub on the very first onEnter. See https://greensock.com/forums/topic/35725-nested-scrolltrigger-doesnt-seem-to-be-initializing-properly
FIXED: if you have a repeating timeline with yoyo: true and you also have a non-zero repeatDelay and repeatRefresh: true, it would skip the repeatRefresh See https://greensock.com/forums/topic/18961-positioning-elements-along-a-bezier-curve
FIXED: if you set a repeat on a timeline that had repeatRefresh: true and it had an onStart callback, that onStart would be called on each iteration instead of only on the first one.
FIXED: if you Flip.fit() an element that has 3D transforms (particular rotations), it could cause the matrix3d() to get re-interpreted in a way that'd change the mix of rotations/scales which would technically look exactly the same, so visually nothing would change but the values themselves could be different. See https://greensock.com/forums/topic/35803-using-flipfit-with-3d-rotation/#comment-179207
FIXED: ScrollTrigger.maxScroll() won't return a negative value (like if the viewport is taller than the content).
FIXED: if ScrollSmoother is applied to a page and the content resizes, pointer-events: none was temporarily set on the wrapper and then reverted to work around an iOS browser bug, but that could cause pointer events to fire again, like mouseenter. So we've opted for a different workaround in that case.
FIXED: if ScrollTrigger.normalizeScroll() was enabled on a page that used ScrollSmoother with smoothTouch enabled, on touch devices it may intermittently seem like the scroll position isn't getting updated (temporarily). See https://greensock.com/forums/topic/35826-problems-with-scrollsmoother-3115-beta-on-touch-screen-devices/
FIXED: if you animate a camelCased CSS variable in a from() or fromTo() animation, a regression in 3.11.0 could cause it to seem "stuck". See https://greensock.com/forums/topic/31518-how-to-get-after-pseudo-element/?do=findComment&comment=179817
FIXED: if you define a containerAnimation on a ScrollTrigger and use a numeric value for "start", it wouldn't interpret that as a scroll position properly. If you use a relative value for "end" like "+=500" when the start is numeric, it wouldn't be interpreted properly either. See https://greensock.com/forums/topic/36004-horizontal-scroll-section-with-absolutely-positioned-sidebar-issues-with-resizing/
FIXED: a ScrollTrigger that has a containerAnimation may not render at the correct position on the very first render after a refresh() (but scrolling even once would correct it). See https://greensock.com/forums/topic/36004-horizontal-scroll-section-with-absolutely-positioned-sidebar-issues-with-resizing/
FIXED: if you apply a ScrollTrigger to a page that has no scrollable content (no scrollbar), but the ScrollTrigger adds pinSpacing that would create a scrollbar, it now adjusts for that scrollbar space (previously the pin-spacer may have a width that reflects the width of the viewport without the scrollbar). See https://greensock.com/forums/topic/36019-scrolltrigger-during-horizontal-scroll-border-is-hidden-under-scrollbar/
FIXED: if you define a pinnedContainer on a ScrollTrigger and a ScrollTrigger.refresh() occurs (like on window resize) when scrolled beyond where the pinning occurs, the start/end of the ScrollTrigger may be miscalculated. See https://greensock.com/forums/topic/35987-scrolltoplugin-and-scrolltrigger-with-scrub-not-getting-along/?do=findComment&comment=180473
FIXED: For ScrollTrigger.normalizeScroll() on an iOS device, in a very rare case (typically when the page is inside an iframe), scrolling could appear to vibrate very quickly between a "stuck" state and the "real" state.
IMPROVED: SplitText, Draggable, and Observer are all now gsap.context()-aware. So for example if you SplitText within a context and then .revert() that context, the SplitText will also get reverted. And any Observer/Draggable that's created in a gsap.context() will get killed when that context gets reverted.
FIXED: added MotionPathHelper's kill() method to the TypeScript definitions
FIXED: if you pause a ScrollSmoother on a mobile/touch device that doesn't use touch events, it could trigger a "click" event when releasing the pointer/touch. See https://greensock.com/forums/topic/34265-scrollsmoother-causes-touch-scrolling-to-trigger-link-click/
FIXED: in a very unusual scenario, a .fromTo() tween might render incorrectly for one tick. See https://greensock.com/forums/topic/34175-animation-flickering-using-fromto-opacity-transform/
FIXED: if you animate the scaleY to a different value than scaleX and then subsequently you animate scale (not x or y), it would use the scaleX for the starting value for scaleY too. See https://greensock.com/forums/topic/34300-possible-bug-with-transform-origin/
FIXED: when the Flip animation is finished, Flip now removes the scale, translate, and rotate inline CSS properties that are added during the flip to prevent CSS rules from contaminating transforms.
FIXED: in a very rare circumstance if you omit the in the head on an iOS device, a ScrollTrigger that pins an element that originally had a transform may render it incorrectly. See https://greensock.com/forums/topic/34293-safari-ios-hides-pinned-div-in-odd-pinning-scenario/
FIXED: of you set allowNestedScroll: true on ScrollTrigger.normalizeScroll(), it wouldn't always work if the event was dispatched by an element inside a container that wasn't scrollable but an ancestor was. Alternate solution: https://greensock.com/forums/topic/32836-scrolltriggernormalizescrollallownestedscroll-true-with-scrollable-div/
FIXED: if you set a ScrollTrigger's pinReparent to true and resize the viewport while that ScrollTrigger is active, it may render incorrectly. See https://greensock.com/forums/topic/34400-react-useeffect-re-rendering-a-timeline/
FIXED: if you set gsap.ticker.lagSmoothing(false) the timing mechanism could fail after about 27 hours straight. See https://greensock.com/forums/topic/34544-gsap-3-stops-working-after-2-3-days/
FIXED: ScrollToPlugin is now ScrollTrigger-aware so that it calls ScrollTrigger.update() after rendering which can prevent slight jumps/flashes when pinning, as described at https://greensock.com/forums/topic/31468-navigation-in-mixed-scrolling-horizontal-vertical/
FIXED: if you disable() a Draggable instance, its onClick event would still fire. See https://greensock.com/forums/topic/34675-click-event-on-draggable-svg-element-still-fires-after-disable-and-kill/
FIXED: if you set allowNestedScroll: true in ScrollTrigger's (or ScrollSmoother's) normalizeScroll option, it may not work on horizontally-scrolling elements. See https://greensock.com/forums/topic/34672-scroll-with-trackpad-and-touchpad-on-overflow/
FIXED: on some Android devices, if you apply snapping to a ScrollTrigger that does pinning, it might occasionally appear to unpin for a brief moment. See https://greensock.com/forums/topic/34703-scrollsmoother-scrolltrigger-snapping-causing-jankiness-in-a-pinned-element
FIXED: ScrollTrigger.killAll() may leave some instances alive. See https://greensock.com/forums/topic/35012-scrolltrigger-killall-is-buggy/
FIXED: if you create a fromTo() tween in a timeline that's inside a gsap.context() and you set immediateRender: false on that .fromTo() and then force the playhead to the end and back again, when the context reverts it may render incorrectly.
FIXED: if you use selector text for a SplitText inside a gsap.context() that had a scope defined, it wouldn't limit the scope accordingly. See https://greensock.com/forums/topic/35061-selector-leak-outside-scope-with-splittext-plugin-inside-gsapcontext-in-react/
IMPROVED: if you use ScrollTrigger to pin something inside a pinnedContainer (and both have pinSpacing), it'll now adjust the padding/sizing of that pinnedContainer's pin-container element. So nested pinning has better support now.
IMPROVED: Previously, MotionPathHelper would only set the pathColor, pathWidth, and opacity if the path that was defined wasn't an svg (if it created a new one), but now it'll honor those properties even if you're using an existing path. See https://greensock.com/forums/topic/34009-arguments-in-the-motionpathhelper-function-are-ignored/
IMPROVED: added a console.warn() for when you forget to define a "content" element for a ScrollSmoother.
IMPROVED: MotionPathHelper is gsap.context()-aware and has a kill() method for better management.
FIXED: regression in 3.11.2 that could cause a .fromTo() tween to render its starting values immediately after .revert() is called. See https://greensock.com/forums/topic/34016-fromto-not-reverting-inline-styles-as-expected/
FIXED: if you set a pin value in a ScrollTrigger and fail to set any pinSpacing (true or false) and the pin element's parentNode is NOT a valid Element, it could throw an error. See https://greensock.com/forums/topic/34021-pinned-element-using-scrolltrigger-breaking-the-flow-on-litdev-app-error-failed-to-execute-getcomputedstyle-on-window-parameter-1-is-not-of-type-element
FIXED: if ScrollTrigger.refresh() is called when a ScrollTrigger is pinned and the scroll position is not at the very top/left, it could render that pinned element incorrectly.
FIXED: When calling ScrollTrigger.refresh(), it may (in certain circumstances) cause ScrollSmoother to jump to the top. See https://greensock.com/forums/topic/33877-scrollsmoother-scrolling-to-top-with-scrolltriggerrefresh/
FIXED: if you enable snapping on a ScrollTrigger and have scroll-behavior: smooth on the scroller, it may not settle properly. 3.11.3 sets scroll-behavior to auto automatically in that condition now.
FIXED: if you call setPositions() on a ScrollTrigger that pins and has pinSpacing, it'll adjust the pin spacer's height/padding accordingly rather than just changing the start/end.
FIXED: in 3.10.0, ScrollTrigger switched to waiting for a requestAnimationFrame() tick to update after a "scroll" event, but newer version of Safari repaint earlier which could lead to things looking jerky in certain cases, so we switched back to immediately updating ScrollTrigger on every "scroll" event. See https://greensock.com/forums/topic/34062-greensock-scrolltrigger-animation-jumping-when-scrolling/
FIXED: in some rare cases, a ScrollSmoother-based page couldn't be scrolled all the way to the bottom. This is usually related to nested pins. See https://greensock.com/forums/topic/34056-nested-pins-dont-work/
IMPROVED: Flip plugin tweens that are created inside a gsap.matchMedia() or gsap.context() will now jump to the end which is the more intuitive behavior.
IMPROVED: you can set autoResize: false on a ScrollSmoother's configuration object to have it NOT automatically resize the body when the content resizes.
IMPROVED: ScrollSmoother is gsap.context()-aware, meaning when a ScrollSmoother is created inside a context and that context gets reverted, the ScrollSmoother will also get killed. This applies to gsap.matchMedia() as well.
FIXED: regression in 3.11.1 - if you ScrollTrigger.refresh() when the scroll position is already in the active part of a ScrollTrigger with callbacks, it may fire those even though there was no movement.
FIXED: checking the scroll() of a ScrollTrigger immediately after you manually change the scroll position may result in a cached value being used instead of the new/fresh one.
FIXED: if you alter a child tween's duration when it's inside of a timeline that has smoothChildTiming set to false, the duration of the parent timeline may not be updated. See https://greensock.com/forums/topic/33806-adding-a-new-tween-to-a-played-timeline-and-play-it-again
FIXED: if a ScrollSmoother is in the process of smoothly animating the scroll when the content resizes and/or a ScrollTrigger.refresh() is triggered, it will now continue properly instead of stopping. See