{"version":3,"sources":["webpack:///./modules/ScrollToBtn.ts","webpack:///C:/agentEucerin/_work/362/s/Eucerin/Foundation/Eucerin.Foundation.Core/node_modules/smoothscroll-polyfill/dist/smoothscroll.js"],"names":["__webpack_require__","r","__webpack_exports__","smoothscroll_polyfill__WEBPACK_IMPORTED_MODULE_0__","smoothscroll_polyfill__WEBPACK_IMPORTED_MODULE_0___default","n","ScrollToBtn","element","this","scrollBtn","querySelector","getAttribute","charAt","scrollTo","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","_this","addEventListener","currentTarget","split","target","smoothScrollTo","y","getBoundingClientRect","top","window","scrollY","a","polyfill","scroll","behavior","module","exports","w","d","documentElement","style","__forceSmoothScrollPolyfill__","Element","HTMLElement","SCROLL_TIME","original","scrollBy","elementScroll","scrollElement","scrollIntoView","now","performance","bind","Date","ROUNDING_TOLERANCE","userAgent","RegExp","join","test","isMicrosoftBrowser","navigator","undefined","arguments","shouldBailOut","smoothScroll","call","body","left","scrollX","pageXOffset","pageYOffset","scrollLeft","scrollTop","SyntaxError","scrollableParent","el","isScrollable","parentNode","host","findScrollableParent","parentRects","clientRects","getComputedStyle","position","x","firstArg","TypeError","hasScrollableSpace","axis","clientHeight","scrollHeight","clientWidth","scrollWidth","canOverflow","overflowValue","isScrollableY","isScrollableX","step","context","value","currentX","currentY","elapsed","startTime","k","Math","cos","PI","ease","startX","startY","method","scrollable","requestAnimationFrame"],"mappings":"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","file":"./modules/ScrollToBtn.f6d5fe5a.js","sourcesContent":["const moduleSelector = '[data-module=\"ScrollToBtn\"]';\r\nimport smoothscroll from 'smoothscroll-polyfill';\r\n\r\nexport default class ScrollToBtn {\r\n    scrollBtn;\r\n    form;\r\n    formSection;\r\n    formSectionId;\r\n    static setup(selector: string = moduleSelector): void {\r\n        Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n            new ScrollToBtn(element);\r\n            element.dataset.moduleInitialized = 'true';\r\n        });\r\n    }\r\n\r\n    constructor(public element: HTMLElement) {\r\n        this.scrollBtn = this.element.querySelector(\".btn\") || this.element\r\n        if (this.scrollBtn && this.scrollBtn.getAttribute(\"href\")) {\r\n            if (this.scrollBtn.getAttribute(\"href\").charAt(0) == \"#\") {\r\n                this.scrollTo();\r\n            }\r\n        }\r\n    }\r\n\r\n    private scrollTo() {\r\n        this.scrollBtn.addEventListener('click', () => {\r\n            const currentTarget = this.scrollBtn.getAttribute('href').split('#')[1];\r\n            let target = document.querySelector(`[data-anchor-navigation-title=${currentTarget}]`);\r\n            if (target) {\r\n                this.smoothScrollTo(target);\r\n            }\r\n        })\r\n    }\r\n\r\n    private smoothScrollTo(target) {\r\n        const y = target.getBoundingClientRect().top + window.scrollY;\r\n        smoothscroll.polyfill();\r\n        window.scroll({\r\n            top: y,\r\n            behavior: 'smooth'\r\n        });\r\n    }\r\n}\r\n\r\nnew ScrollToBtn.setup();","/* 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"],"sourceRoot":""}