{"version":3,"file":"js/smoothscroll-polyfill.e457a5e2.js","mappings":"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","sources":["webpack://purple-ribbon-registration/./node_modules/smoothscroll-polyfill/dist/smoothscroll.js"],"sourcesContent":["/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict';\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = { polyfill: polyfill };\n } else {\n // global\n polyfill();\n }\n\n}());\n"],"names":["polyfill","w","window","d","document","documentElement","style","__forceSmoothScrollPolyfill__","Element","HTMLElement","SCROLL_TIME","original","scroll","scrollTo","scrollBy","elementScroll","prototype","scrollElement","scrollIntoView","now","performance","bind","Date","ROUNDING_TOLERANCE","isMicrosoftBrowser","navigator","userAgent","undefined","arguments","shouldBailOut","smoothScroll","call","body","left","scrollX","pageXOffset","top","scrollY","pageYOffset","this","scrollLeft","scrollTop","SyntaxError","behavior","scrollableParent","findScrollableParent","parentRects","getBoundingClientRect","clientRects","getComputedStyle","position","userAgentPatterns","RegExp","join","test","x","y","ease","k","Math","cos","PI","firstArg","TypeError","hasScrollableSpace","el","axis","clientHeight","scrollHeight","clientWidth","scrollWidth","canOverflow","overflowValue","isScrollable","isScrollableY","isScrollableX","parentNode","host","step","context","value","currentX","currentY","time","elapsed","startTime","startX","startY","method","scrollable","requestAnimationFrame","module","exports"],"sourceRoot":""}