gsap 코드 분석

gsap-core.js 파일

  • 파일 구조
    • 라인 11: 유틸리티 심볼 정의

      • 라인 11:

        let _config = {
          autoSleep: 120,
          force3D: "auto",
          nullTargetWarn: 1,
          units: {lineHeight:""}
        },
      • 라인 52:

        _globals = {},
      • 라인 89 :

        _forEachName = (names, func) => ((names = names.split(",")).forEach(func)) || names
      • 라인 126 :

        _setDefaults = (obj, defaults) => {
            for (let p in defaults) {
              (p in obj) || (obj[p] = defaults[p]);
            }
            return obj;
        },
    • 라인 701 : Color 관련 심볼 정의

    • 라인 880 : Ticker 관련 심볼 정의

    • 라인 986 : easing 관련 심볼 정의

    • 라인 1110 : caching 관련 심볼 정의

      • 라인 1115 : GSCache 클래스 정의
    • 라인 1142 : animation 관련 심볼 정의

      • 라인 1148 : Animation 클래스 정의
    • 라인 1466 : timeline 관련 심볼 정의

      • 라인 1472 : Timeline 클래스 정의

      • 라인 1988 :

        _setDefaults(Timeline.prototype, {_lock:0, _hasPause:0, _forcing:0});
      • 라인 2290 :

        _forEachName(_staggerTweenProps + ",id,stagger,delay,duration,paused,scrollTrigger", name => _staggerPropsToSkip[name] = 1);
    • 라인 2314 : Tween 관련 심볼 정의

      • 라인 2320 : Tween 클래스 정의

      • 라인 2364 :

        _setDefaults(Tween.prototype, {_targets:[], _lazy:0, _startAt:0, _op:0, _onInit:0});
      • 라인 2365 :

        _forEachName("staggerTo,staggerFrom,staggerFromTo", name => {
          Tween[name] = function() {
            let tl = new Timeline(),
              params = _slice.call(arguments, 0);
            params.splice(name === "staggerFromTo" ? 5 : 4, 0, 0);
            return tl[name].apply(tl, params);
          }
        });
    • 라인 2699 : protween 관련 심볼 정의

      • 라인 2786 : PropTween 클래스 정의

      • 라인 2815 :

        //Initialization tasks
        _forEachName(_callbackNames + "parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger,easeReverse", name => _reservedProps[name] = 1);
        _globals.TweenMax = _globals.TweenLite = Tween;
        _globals.TimelineLite = _globals.TimelineMax = Timeline;
        _globalTimeline = new Timeline({sortChildren: false, defaults: _defaults, autoRemoveChildren: true, id:"root", smoothChildTiming: true});
        _config.stringFilter = _colorStringFilter;
    • 라인 2869 : Context 클래스 정의

    • 라인 2974 : MatchMedia 클래스 정의

    • 라인 3028 : _gsap 정의

    • 라인 3154 :

      _forEachName("to,from,fromTo,delayedCall,set,killTweensOf", name => _gsap[name] = Tween[name]);
      _ticker.add(Timeline.updateRoot);
      _quickTween = _gsap.to({}, {duration:0});
    • 라인 3161 : 플러그인

    • 라인 3249 : 버전

    • 라인 3250 :

      _coreReady = 1;
      _windowExists() && _wake();
    • 라인 3253 : export

      export const { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ } = _easeMap;
      export { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle };
       //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.
      export { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative }