MCPcopy
hub / github.com/greensock/GSAP / init

Method init

src/ScrollTrigger.js:605–1295  ·  view source on GitHub ↗
(vars, animation)

Source from the content-addressed store, hash-verified

603 }
604
605 init(vars, animation) {
606 this.progress = this.start = 0;
607 this.vars && this.kill(true, true); // in case it's being initted again
608 if (!_enabled) {
609 this.update = this.refresh = this.kill = _passThrough;
610 return;
611 }
612 vars = _setDefaults((_isString(vars) || _isNumber(vars) || vars.nodeType) ? {trigger: vars} : vars, _defaults);
613 let {onUpdate, toggleClass, id, onToggle, onRefresh, scrub, trigger, pin, pinSpacing, invalidateOnRefresh, anticipatePin, onScrubComplete, onSnapComplete, once, snap, pinReparent, pinSpacer, containerAnimation, fastScrollEnd, preventOverlaps} = vars,
614 direction = vars.horizontal || (vars.containerAnimation && vars.horizontal !== false) ? _horizontal : _vertical,
615 isToggle = !scrub && scrub !== 0,
616 scroller = _getTarget(vars.scroller || _win),
617 scrollerCache = gsap.core.getCache(scroller),
618 isViewport = _isViewport(scroller),
619 useFixedPosition = ("pinType" in vars ? vars.pinType : _getProxyProp(scroller, "pinType") || (isViewport && "fixed")) === "fixed",
620 callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],
621 toggleActions = isToggle && vars.toggleActions.split(" "),
622 markers = "markers" in vars ? vars.markers : _defaults.markers,
623 borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0,
624 self = this,
625 onRefreshInit = vars.onRefreshInit && (() => vars.onRefreshInit(self)),
626 getScrollerSize = _getSizeFunc(scroller, isViewport, direction),
627 getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),
628 lastSnap = 0,
629 lastRefresh = 0,
630 prevProgress = 0,
631 scrollFunc = _getScrollFunc(scroller, direction),
632 tweenTo, pinCache, snapFunc, scroll1, scroll2, start, end, markerStart, markerEnd, markerStartTrigger, markerEndTrigger, markerVars, executingOnRefresh,
633 change, pinOriginalState, pinActiveState, pinState, spacer, offset, pinGetter, pinSetter, pinStart, pinChange, spacingStart, spacerState, markerStartSetter, pinMoves,
634 markerEndSetter, cs, snap1, snap2, scrubTween, scrubSmooth, snapDurClamp, snapDelayedCall, prevScroll, prevAnimProgress, caMarkerSetter, customRevertReturn;
635
636 // for the sake of efficiency, _startClamp/_endClamp serve like a truthy value indicating that clamping was enabled on the start/end, and ALSO store the actual pre-clamped numeric value. We tap into that in ScrollSmoother for speed effects. So for example, if start="clamp(top bottom)" results in a start of -100 naturally, it would get clamped to 0 but -100 would be stored in _startClamp.
637 self._startClamp = self._endClamp = false;
638 self._dir = direction;
639 anticipatePin *= 45;
640 self.scroller = scroller;
641 self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;
642 scroll1 = scrollFunc();
643 self.vars = vars;
644 animation = animation || vars.animation;
645 if ("refreshPriority" in vars) {
646 _sort = 1;
647 vars.refreshPriority === -9999 && (_primary = self); // used by ScrollSmoother
648 }
649 scrollerCache.tweenScroll = scrollerCache.tweenScroll || {
650 top: _getTweenCreator(scroller, _vertical),
651 left: _getTweenCreator(scroller, _horizontal)
652 };
653 self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];
654 self.scrubDuration = value => {
655 scrubSmooth = _isNumber(value) && value;
656 if (!scrubSmooth) {
657 scrubTween && scrubTween.progress(1).kill();
658 scrubTween = 0;
659 } else {
660 scrubTween ? scrubTween.duration(value) : (scrubTween = gsap.to(animation, {ease: "expo", totalProgress: "+=0", inherit: false, duration: scrubSmooth, paused: true, onComplete: () => onScrubComplete && onScrubComplete(self)}));
661 }
662 };

Callers 1

constructorMethod · 0.95

Calls 15

_getTargetFunction · 0.90
_getProxyPropFunction · 0.90
_getScrollFuncFunction · 0.90
onRefreshFunction · 0.85
durationMethod · 0.80
pauseMethod · 0.80
delayedCallMethod · 0.80
totalProgressMethod · 0.80
restartMethod · 0.80
getPropertyMethod · 0.80
eventCallbackMethod · 0.80
applyMethod · 0.80

Tested by

no test coverage detected