{"version":3,"file":"ScrollToPlugin.min.js","sources":["../src/ScrollToPlugin.js"],"sourcesContent":["/*!\n * ScrollToPlugin 3.1.1\n * https://greensock.com\n *\n * @license Copyright 2008-2020, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n/* eslint-disable */\n\nlet gsap, _coreInitted, _window, _docEl, _body, _toArray, _config,\n\t_windowExists = () => typeof(window) !== \"undefined\",\n\t_getGSAP = () => gsap || (_windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap),\n\t_isString = value => typeof(value) === \"string\",\n\t_max = (element, axis) => {\n\t\tlet dim = (axis === \"x\") ? \"Width\" : \"Height\",\n\t\t\tscroll = \"scroll\" + dim,\n\t\t\tclient = \"client\" + dim;\n\t\treturn (element === _window || element === _docEl || element === _body) ? Math.max(_docEl[scroll], _body[scroll]) - (_window[\"inner\" + dim] || _docEl[client] || _body[client]) : element[scroll] - element[\"offset\" + dim];\n\t},\n\t_buildGetter = (e, axis) => { //pass in an element and an axis (\"x\" or \"y\") and it'll return a getter function for the scroll position of that element (like scrollTop or scrollLeft, although if the element is the window, it'll use the pageXOffset/pageYOffset or the documentElement's scrollTop/scrollLeft or document.body's. Basically this streamlines things and makes a very fast getter across browsers.\n\t\tlet p = \"scroll\" + ((axis === \"x\") ? \"Left\" : \"Top\");\n\t\tif (e === _window) {\n\t\t\tif (e.pageXOffset != null) {\n\t\t\t\tp = \"page\" + axis.toUpperCase() + \"Offset\";\n\t\t\t} else {\n\t\t\t\te = _docEl[p] != null ? _docEl : _body;\n\t\t\t}\n\t\t}\n\t\treturn () => e[p];\n\t},\n\t_getOffset = (element, container) => {\n\t\tlet rect = _toArray(element)[0].getBoundingClientRect(),\n\t\t\tisRoot = (!container || container === _window || container === _body),\n\t\t\tcRect = isRoot ? {top:_docEl.clientTop - (_window.pageYOffset || _docEl.scrollTop || _body.scrollTop || 0), left:_docEl.clientLeft - (_window.pageXOffset || _docEl.scrollLeft || _body.scrollLeft || 0)} : container.getBoundingClientRect(),\n\t\t\toffsets = {x: rect.left - cRect.left, y: rect.top - cRect.top};\n\t\tif (!isRoot && container) { //only add the current scroll position if it's not the window/body.\n\t\t\toffsets.x += _buildGetter(container, \"x\")();\n\t\t\toffsets.y += _buildGetter(container, \"y\")();\n\t\t}\n\t\treturn offsets;\n\t},\n\t_parseVal = (value, target, axis, currentVal) => !isNaN(value) ? parseFloat(value) : (_isString(value) && value.charAt(1) === \"=\") ? parseFloat(value.substr(2)) * (value.charAt(0) === \"-\" ? -1 : 1) + currentVal : (value === \"max\") ? _max(target, axis) : Math.min(_max(target, axis), _getOffset(value, target)[axis]),\n\t_initCore = () => {\n\t\tgsap = _getGSAP();\n\t\tif (_windowExists() && gsap && document.body) {\n\t\t\t_window = window;\n\t\t\t_body = document.body;\n\t\t\t_docEl = document.documentElement;\n\t\t\t_toArray = gsap.utils.toArray;\n\t\t\tgsap.config({autoKillThreshold:7});\n\t\t\t_config = gsap.config();\n\t\t\t_coreInitted = 1;\n\t\t}\n\t};\n\n\nexport const ScrollToPlugin = {\n\tversion:\"3.1.1\",\n\tname:\"scrollTo\",\n\trawVars:1,\n\tregister(core) {\n\t\tgsap = core;\n\t\t_initCore();\n\t},\n\tinit(target, value, tween, index, targets) {\n\t\tif (!_coreInitted) {\n\t\t\t_initCore();\n\t\t}\n\t\tlet data = this;\n\t\tdata.isWin = (target === _window);\n\t\tdata.target = target;\n\t\tdata.tween = tween;\n\t\tif (typeof(value) !== \"object\") {\n\t\t\tvalue = {y:value}; //if we don't receive an object as the parameter, assume the user intends \"y\".\n\t\t\tif (_isString(value.y) && value.y !== \"max\" && value.y.charAt(1) !== \"=\") {\n\t\t\t\tvalue.x = value.y;\n\t\t\t}\n\t\t} else if (value.nodeType) {\n\t\t\tvalue = {y:value, x:value};\n\t\t}\n\t\tdata.vars = value;\n\t\tdata.autoKill = !!value.autoKill;\n\t\tdata.getX = _buildGetter(target, \"x\");\n\t\tdata.getY = _buildGetter(target, \"y\");\n\t\tdata.x = data.xPrev = data.getX();\n\t\tdata.y = data.yPrev = data.getY();\n\t\tif (value.x != null) {\n\t\t\tdata.add(data, \"x\", data.x, _parseVal(value.x, target, \"x\", data.x) - (value.offsetX || 0), index, targets, Math.round);\n\t\t\tdata._props.push(\"scrollTo_x\");\n\t\t} else {\n\t\t\tdata.skipX = 1;\n\t\t}\n\t\tif (value.y != null) {\n\t\t\tdata.add(data, \"y\", data.y, _parseVal(value.y, target, \"y\", data.y) - (value.offsetY || 0), index, targets, Math.round);\n\t\t\tdata._props.push(\"scrollTo_y\");\n\t\t} else {\n\t\t\tdata.skipY = 1;\n\t\t}\n\t},\n\trender(ratio, data) {\n\t\tlet pt = data._pt,\n\t\t\t{ target, tween, autoKill, xPrev, yPrev, isWin } = data,\n\t\t\tx, y, yDif, xDif, threshold;\n\t\twhile (pt) {\n\t\t\tpt.r(ratio, pt.d);\n\t\t\tpt = pt._next;\n\t\t}\n\t\tx = (isWin || !data.skipX) ? data.getX() : xPrev;\n\t\ty = (isWin || !data.skipY) ? data.getY() : yPrev;\n\t\tyDif = y - yPrev;\n\t\txDif = x - xPrev;\n\t\tthreshold = _config.autoKillThreshold;\n\t\tif (data.x < 0) { //can't scroll to a position less than 0! Might happen if someone uses a Back.easeOut or Elastic.easeOut when scrolling back to the top of the page (for example)\n\t\t\tdata.x = 0;\n\t\t}\n\t\tif (data.y < 0) {\n\t\t\tdata.y = 0;\n\t\t}\n\t\tif (autoKill) {\n\t\t\t//note: iOS has a bug that throws off the scroll by several pixels, so we need to check if it's within 7 pixels of the previous one that we set instead of just looking for an exact match.\n\t\t\tif (!data.skipX && (xDif > threshold || xDif < -threshold) && x < _max(target, \"x\")) {\n\t\t\t\tdata.skipX = 1; //if the user scrolls separately, we should stop tweening!\n\t\t\t}\n\t\t\tif (!data.skipY && (yDif > threshold || yDif < -threshold) && y < _max(target, \"y\")) {\n\t\t\t\tdata.skipY = 1; //if the user scrolls separately, we should stop tweening!\n\t\t\t}\n\t\t\tif (data.skipX && data.skipY) {\n\t\t\t\ttween.kill();\n\t\t\t\tif (data.vars.onAutoKill) {\n\t\t\t\t\tdata.vars.onAutoKill.apply(tween, data.vars.onAutoKillParams || []);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (isWin) {\n\t\t\t_window.scrollTo((!data.skipX) ? data.x : x, (!data.skipY) ? data.y : y);\n\t\t} else {\n\t\t\tif (!data.skipY) {\n\t\t\t\ttarget.scrollTop = data.y;\n\t\t\t}\n\t\t\tif (!data.skipX) {\n\t\t\t\ttarget.scrollLeft = data.x;\n\t\t\t}\n\t\t}\n\t\tdata.xPrev = data.x;\n\t\tdata.yPrev = data.y;\n\t},\n\tkill(property) {\n\t\tlet both = (property === \"scrollTo\");\n\t\tif (both || property === \"scrollTo_x\") {\n\t\t\tthis.skipX = 1;\n\t\t}\n\t\tif (both || property === \"scrollTo_y\") {\n\t\t\tthis.skipY = 1;\n\t\t}\n\t}\n};\n\nScrollToPlugin.max = _max;\nScrollToPlugin.getOffset = _getOffset;\nScrollToPlugin.buildGetter = _buildGetter;\n\n_getGSAP() && gsap.registerPlugin(ScrollToPlugin);\n\nexport { ScrollToPlugin as default };"],"names":["_windowExists","window","_getGSAP","gsap","registerPlugin","_isString","value","_max","element","axis","dim","scroll","client","_window","_docEl","_body","Math","max","_buildGetter","e","p","pageXOffset","toUpperCase","_getOffset","container","rect","_toArray","getBoundingClientRect","isRoot","cRect","top","clientTop","pageYOffset","scrollTop","left","clientLeft","scrollLeft","offsets","x","y","_parseVal","target","currentVal","isNaN","charAt","parseFloat","substr","min","_initCore","document","body","documentElement","utils","toArray","config","autoKillThreshold","_config","_coreInitted","ScrollToPlugin","version","name","rawVars","register","core","init","tween","index","targets","data","this","isWin","nodeType","vars","autoKill","getX","getY","xPrev","yPrev","add","offsetX","round","_props","push","skipX","offsetY","skipY","render","ratio","yDif","xDif","threshold","pt","_pt","r","d","_next","kill","onAutoKill","apply","onAutoKillParams","scrollTo","property","both","getOffset","buildGetter"],"mappings":"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"}