{"version":3,"file":"vue-scrollto-DpewrMMZ.js","sources":["../../../node_modules/vue-scrollto/vue-scrollto.js"],"sourcesContent":["/*!\n * vue-scrollto v2.20.0\n * (c) 2019 Randjelovic Igor\n * @license MIT\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global['vue-scrollto'] = factory());\n}(this, (function () { 'use strict';\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n /**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\n function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\n function C (aA1) { return 3.0 * aA1; }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\n function binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n }\n\n function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function LinearEasing (x) {\n return x;\n }\n\n var src = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n };\n\n var easings = {\n ease: [0.25, 0.1, 0.25, 1.0],\n linear: [0.0, 0.0, 1.0, 1.0],\n 'ease-in': [0.42, 0.0, 1.0, 1.0],\n 'ease-out': [0.0, 0.0, 0.58, 1.0],\n 'ease-in-out': [0.42, 0.0, 0.58, 1.0]\n };\n\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n\n var _ = {\n $: function $(selector) {\n if (typeof selector !== 'string') {\n return selector;\n }\n\n return document.querySelector(selector);\n },\n on: function on(element, events, handler) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n passive: false\n };\n\n if (!(events instanceof Array)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n element.addEventListener(events[i], handler, supportsPassive ? opts : false);\n }\n },\n off: function off(element, events, handler) {\n if (!(events instanceof Array)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n element.removeEventListener(events[i], handler);\n }\n },\n cumulativeOffset: function cumulativeOffset(element) {\n var top = 0;\n var left = 0;\n\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n\n return {\n top: top,\n left: left\n };\n }\n };\n\n var abortEvents = ['mousedown', 'wheel', 'DOMMouseScroll', 'mousewheel', 'keyup', 'touchmove'];\n var defaults = {\n container: 'body',\n duration: 500,\n lazy: true,\n easing: 'ease',\n offset: 0,\n force: true,\n cancelable: true,\n onStart: false,\n onDone: false,\n onCancel: false,\n x: false,\n y: true\n };\n function setDefaults(options) {\n defaults = _extends({}, defaults, options);\n }\n var scroller = function scroller() {\n var element; // element to scroll to\n\n var container; // container to scroll\n\n var duration; // duration of the scrolling\n\n var easing; // easing to be used when scrolling\n\n var lazy; // checks the target position at each step\n\n var offset; // offset to be added (subtracted)\n\n var force; // force scroll, even if element is visible\n\n var cancelable; // indicates if user can cancel the scroll or not.\n\n var onStart; // callback when scrolling is started\n\n var onDone; // callback when scrolling is done\n\n var onCancel; // callback when scrolling is canceled / aborted\n\n var x; // scroll on x axis\n\n var y; // scroll on y axis\n\n var initialX; // initial X of container\n\n var targetX; // target X of container\n\n var initialY; // initial Y of container\n\n var targetY; // target Y of container\n\n var diffX; // difference\n\n var diffY; // difference\n\n var abort; // is scrolling aborted\n\n var cumulativeOffsetContainer;\n var cumulativeOffsetElement;\n var abortEv; // event that aborted scrolling\n\n var abortFn = function abortFn(e) {\n if (!cancelable) return;\n abortEv = e;\n abort = true;\n };\n\n var easingFn;\n var timeStart; // time when scrolling started\n\n var timeElapsed; // time elapsed since scrolling started\n\n var progress; // progress\n\n function scrollTop(container) {\n var scrollTop = container.scrollTop;\n\n if (container.tagName.toLowerCase() === 'body') {\n // in firefox body.scrollTop always returns 0\n // thus if we are trying to get scrollTop on a body tag\n // we need to get it from the documentElement\n scrollTop = scrollTop || document.documentElement.scrollTop;\n }\n\n return scrollTop;\n }\n\n function scrollLeft(container) {\n var scrollLeft = container.scrollLeft;\n\n if (container.tagName.toLowerCase() === 'body') {\n // in firefox body.scrollLeft always returns 0\n // thus if we are trying to get scrollLeft on a body tag\n // we need to get it from the documentElement\n scrollLeft = scrollLeft || document.documentElement.scrollLeft;\n }\n\n return scrollLeft;\n }\n\n function recalculateTargets() {\n cumulativeOffsetContainer = _.cumulativeOffset(container);\n cumulativeOffsetElement = _.cumulativeOffset(element);\n\n if (x) {\n targetX = cumulativeOffsetElement.left - cumulativeOffsetContainer.left + offset;\n diffX = targetX - initialX;\n }\n\n if (y) {\n targetY = cumulativeOffsetElement.top - cumulativeOffsetContainer.top + offset;\n diffY = targetY - initialY;\n }\n }\n\n function step(timestamp) {\n if (abort) return done();\n if (!timeStart) timeStart = timestamp; // When a site has a lot of media that can be loaded asynchronously,\n // the targetY/targetX may end up in the wrong place during scrolling.\n // So we will check this at each step\n\n if (!lazy) {\n recalculateTargets();\n }\n\n timeElapsed = timestamp - timeStart;\n progress = Math.min(timeElapsed / duration, 1);\n progress = easingFn(progress);\n topLeft(container, initialY + diffY * progress, initialX + diffX * progress);\n timeElapsed < duration ? window.requestAnimationFrame(step) : done();\n }\n\n function done() {\n if (!abort) topLeft(container, targetY, targetX);\n timeStart = false;\n\n _.off(container, abortEvents, abortFn);\n\n if (abort && onCancel) onCancel(abortEv, element);\n if (!abort && onDone) onDone(element);\n }\n\n function topLeft(element, top, left) {\n if (y) element.scrollTop = top;\n if (x) element.scrollLeft = left;\n\n if (element.tagName.toLowerCase() === 'body') {\n // in firefox body.scrollTop doesn't scroll the page\n // thus if we are trying to scrollTop on a body tag\n // we need to scroll on the documentElement\n if (y) document.documentElement.scrollTop = top;\n if (x) document.documentElement.scrollLeft = left;\n }\n }\n\n function scrollTo(target, _duration) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (_typeof(_duration) === 'object') {\n options = _duration;\n } else if (typeof _duration === 'number') {\n options.duration = _duration;\n }\n\n element = _.$(target);\n\n if (!element) {\n return console.warn('[vue-scrollto warn]: Trying to scroll to an element that is not on the page: ' + target);\n }\n\n container = _.$(options.container || defaults.container);\n duration = options.hasOwnProperty('duration') ? options.duration : defaults.duration;\n lazy = options.hasOwnProperty('lazy') ? options.lazy : defaults.lazy;\n easing = options.easing || defaults.easing;\n offset = options.hasOwnProperty('offset') ? options.offset : defaults.offset;\n force = options.hasOwnProperty('force') ? options.force !== false : defaults.force;\n cancelable = options.hasOwnProperty('cancelable') ? options.cancelable !== false : defaults.cancelable;\n onStart = options.onStart || defaults.onStart;\n onDone = options.onDone || defaults.onDone;\n onCancel = options.onCancel || defaults.onCancel;\n x = options.x === undefined ? defaults.x : options.x;\n y = options.y === undefined ? defaults.y : options.y;\n\n if (typeof offset === 'function') {\n offset = offset(element, container);\n }\n\n initialX = scrollLeft(container);\n initialY = scrollTop(container); // calculates cumulative offsets and targetX/Y + diffX/Y\n\n recalculateTargets();\n abort = false;\n\n if (!force) {\n // When the container is the default (body) we need to use the viewport\n // height, not the entire body height\n var containerHeight = container.tagName.toLowerCase() === 'body' ? document.documentElement.clientHeight || window.innerHeight : container.offsetHeight;\n var containerTop = initialY;\n var containerBottom = containerTop + containerHeight;\n var elementTop = targetY - offset;\n var elementBottom = elementTop + element.offsetHeight;\n\n if (elementTop >= containerTop && elementBottom <= containerBottom) {\n // make sure to call the onDone callback even if there is no need to\n // scroll the container. Fixes #111 (ref #118)\n if (onDone) onDone(element);\n return;\n }\n }\n\n if (onStart) onStart(element);\n\n if (!diffY && !diffX) {\n if (onDone) onDone(element);\n return;\n }\n\n if (typeof easing === 'string') {\n easing = easings[easing] || easings['ease'];\n }\n\n easingFn = src.apply(src, easing);\n\n _.on(container, abortEvents, abortFn, {\n passive: true\n });\n\n window.requestAnimationFrame(step);\n return function () {\n abortEv = null;\n abort = true;\n };\n }\n\n return scrollTo;\n };\n\n var _scroller = scroller();\n\n var bindings = []; // store binding data\n\n function deleteBinding(el) {\n for (var i = 0; i < bindings.length; ++i) {\n if (bindings[i].el === el) {\n bindings.splice(i, 1);\n return true;\n }\n }\n\n return false;\n }\n\n function findBinding(el) {\n for (var i = 0; i < bindings.length; ++i) {\n if (bindings[i].el === el) {\n return bindings[i];\n }\n }\n }\n\n function getBinding(el) {\n var binding = findBinding(el);\n\n if (binding) {\n return binding;\n }\n\n bindings.push(binding = {\n el: el,\n binding: {}\n });\n return binding;\n }\n\n function handleClick(e) {\n var ctx = getBinding(this).binding;\n if (!ctx.value) return;\n e.preventDefault();\n\n if (typeof ctx.value === 'string') {\n return _scroller(ctx.value);\n }\n\n _scroller(ctx.value.el || ctx.value.element, ctx.value);\n }\n\n var directiveHooks = {\n bind: function bind(el, binding) {\n getBinding(el).binding = binding;\n\n _.on(el, 'click', handleClick);\n },\n unbind: function unbind(el) {\n deleteBinding(el);\n\n _.off(el, 'click', handleClick);\n },\n update: function update(el, binding) {\n getBinding(el).binding = binding;\n }\n };\n var VueScrollTo = {\n bind: directiveHooks.bind,\n unbind: directiveHooks.unbind,\n update: directiveHooks.update,\n beforeMount: directiveHooks.bind,\n unmounted: directiveHooks.unbind,\n updated: directiveHooks.update,\n scrollTo: _scroller,\n bindings: bindings\n };\n\n var install = function install(Vue, options) {\n if (options) setDefaults(options);\n Vue.directive('scroll-to', VueScrollTo);\n var properties = Vue.config.globalProperties || Vue.prototype;\n properties.$scrollTo = VueScrollTo.scrollTo;\n };\n\n if (typeof window !== 'undefined' && window.Vue) {\n window.VueScrollTo = VueScrollTo;\n window.VueScrollTo.setDefaults = setDefaults;\n window.VueScrollTo.scroller = scroller;\n if (window.Vue.use) window.Vue.use(install);\n }\n\n VueScrollTo.install = install;\n\n return VueScrollTo;\n\n})));\n"],"names":["global","factory","module","this","_typeof","obj","_extends","target","i","source","key","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","x","src","mY1","mY2","sampleValues","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","easings","supportsPassive","opts","_","selector","element","events","handler","top","left","abortEvents","defaults","setDefaults","options","scroller","container","duration","easing","lazy","offset","force","cancelable","onStart","onDone","onCancel","initialX","targetX","initialY","targetY","diffX","diffY","abort","cumulativeOffsetContainer","cumulativeOffsetElement","abortEv","abortFn","e","easingFn","timeStart","timeElapsed","progress","scrollTop","scrollLeft","recalculateTargets","step","timestamp","done","topLeft","scrollTo","_duration","containerHeight","containerTop","containerBottom","elementTop","elementBottom","_scroller","bindings","deleteBinding","el","findBinding","getBinding","binding","handleClick","ctx","directiveHooks","VueScrollTo","install","Vue","properties"],"mappings":"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","x_google_ignoreList":[0]}