{"version":3,"sources":["node_modules/locomotive-scroll/dist/locomotive-scroll.esm.js","public/app.js"],"names":["Smooth","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","prototype","_defineProperty","obj","value","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","arguments","source","forEach","getOwnPropertyDescriptors","defineProperties","_inherits","subClass","superClass","create","constructor","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","toString","call","e","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","Super","result","NewTarget","_superPropBase","property","hasOwnProperty","_get","receiver","get","base","desc","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","Array","isArray","_arrayLikeToArray","iter","Symbol","iterator","from","_arr","_n","_d","_e","undefined","_s","_i","next","done","err","minLen","n","slice","name","test","len","arr2","defaults","el","document","offset","repeat","smooth","initPosition","x","y","direction","gestureDirection","reloadOnContextChange","lerp","scrollbarContainer","scrollbarClass","scrollingClass","draggingClass","smoothClass","initClass","getSpeed","getDirection","scrollFromAnywhere","multiplier","firefoxMultiplier","touchMultiplier","resetNativeScroll","tablet","breakpoint","smartphone","_default","options","assign","namespace","html","documentElement","windowHeight","window","innerHeight","windowWidth","innerWidth","windowMiddle","els","currentElements","listeners","hasScrollTicking","hasCallEventSet","checkScroll","bind","checkResize","checkEvent","scroll","limit","offsetWidth","offsetHeight","isMobile","isTablet","context","directionAxis","speed","classList","add","addEventListener","initEvents","dispatchScroll","_this","resizeTick","requestAnimationFrame","resize","navigator","userAgent","platform","maxTouchPoints","oldContext","location","reload","_this2","scrollToEls","querySelectorAll","concat","setScrollTo","event","preventDefault","scrollTo","currentTarget","getAttribute","_this3","scrollTop","scrollBottom","scrollLeft","scrollRight","entries","_ref","_ref2","inView","left","right","setInView","top","bottom","width","progress","setOutOfView","height","current","dispatchCall","_this4","remove","way","callWay","callValue","split","map","item","trim","callObj","callEvent","Event","dispatchEvent","scrollEvent","func","list","detectElements","index","indexOf","splice","removeEventListener","_this5","type","replace","_this6","commonjsGlobal","globalThis","global","createCommonjsModule","fn","module","exports","smoothscroll","polyfill","w","d","style","__forceSmoothScrollPolyfill__","Element","HTMLElement","SCROLL_TIME","original","scrollBy","elementScroll","scrollElement","scrollIntoView","now","performance","ROUNDING_TOLERANCE","RegExp","join","shouldBailOut","smoothScroll","body","scrollX","pageXOffset","scrollY","pageYOffset","SyntaxError","behavior","scrollableParent","findScrollableParent","isScrollable","parentNode","host","parentRects","getBoundingClientRect","clientRects","getComputedStyle","position","firstArg","hasScrollableSpace","axis","clientHeight","scrollHeight","clientWidth","scrollWidth","canOverflow","overflowValue","isScrollableY","isScrollableX","step","time","currentX","currentY","k","elapsed","startTime","Math","cos","PI","startX","startY","method","scrollable","smoothscroll_1","_default$1","_Core","_super","history","scrollRestoration","smoothscrollPolyfill","addElements","addDirection","addSpeed","speedTs","max","updateElements","BCR","targetEl","cl","dataset","id","targetElBCR","querySelector","relativeOffset","getRelativeOffset","mappedEl","contains","includes","parseInt","callback","tagName","console","warn","isTargetReached","onScroll","duration","propIsEnumerable","propertyIsEnumerable","toObject","val","shouldUseNative","test1","String","getOwnPropertyNames","test2","fromCharCode","order2","test3","letter","objectAssign","to","s","E","on","ctx","once","listener","off","_","emit","data","evtArr","evts","liveEvents","tinyEmitter","lethargy","Lethargy","stability","sensitivity","tolerance","delay","abs","lastUpDeltas","ref","results","lastDownDeltas","deltasTimestamp","check","lastDelta","originalEvent","wheelDelta","deltaY","detail","shift","isInertia","lastDeltas","lastDeltasNew","lastDeltasOld","newAverage","newSum","oldAverage","oldSum","reduce","t","showLastUpDeltas","showLastDownDeltas","support","hasWheelEvent","hasMouseWheelEvent","hasTouch","TouchEvent","DocumentTouch","hasTouchWin","msMaxTouchPoints","hasPointer","msPointerEnabled","hasKeyDown","isFirefox","hasOwnProperty$1","bindallStandalone","functions","f","EVT_ID","src","VirtualScroll","keyCodes","LEFT","UP","RIGHT","DOWN","SPACE","mouseMultiplier","keyStep","preventTouch","unpreventTouchClass","limitInertia","useKeyboard","useTouch","_lethargy","_emitter","_event","deltaX","touchStartX","touchStartY","bodyTouchAction","passive","listenerOptions","start","end","amt","getTranslate","translate","transform","webkitTransform","mozTransform","mat","match","parseFloat","getParents","elem","parents","_notify","evt","_onWheel","wheelDeltaX","wheelDeltaY","deltaMode","_onMouseWheel","_onTouchStart","targetTouches","pageX","pageY","_onTouchMove","_onKeyDown","keyCode","shiftKey","_bind","msTouchAction","_unbind","cb","events","reset","destroy","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentT","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","src$1","mY1","mY2","Error","sampleValues","getTForX","currentSample","intervalStart","lastSample","dist","guessForT","initialSlope","keyCodes$1","TAB","PAGEUP","PAGEDOWN","HOME","END","_default$2","inertia","isScrolling","isDraggingScrollbar","isTicking","parallaxElements","stop","checkKey","setAttribute","delta","vs","updateDelta","startScrolling","setScrollLimit","initScrollBar","addSections","transformElements","totalWidth","nodes","children","startScrollTs","cancelAnimationFrame","checkScrollRaf","scrollToRaf","round","activeElement","isActiveElementScrollSensitive","stopScrolling","HTMLInputElement","HTMLTextAreaElement","HTMLButtonElement","HTMLSelectElement","forced","updateScroll","distance","timeSinceStart","animatingScroll","sections","section","persistent","opacity","pointerEvents","removeAttribute","hasScrollbar","scrollBarTranslation","scrollBarLimit","scrollbarThumb","checkContext","update","setScroll","scrollbar","createElement","append","getScrollBar","releaseScrollBar","moveScrollBar","scrollbarBCR","scrollbarHeight","scrollbarWidth","scrollbarThumbBCR","clientX","clientY","targetParents","_ref3","_ref4","find","sticky","middle","elBCR","elTop","elLeft","elDistance","_this7","sectionBCR","mappedSection","element","lerpX","lerpY","msTransform","isForced","_this8","setAllElements","scrollMiddle","_ref5","_ref6","transformDistance","_this9","isNaN","easing","disableLerp","targetBCR","offsetTop","offsetLeft","parentSection","candidate","_ref7","_ref8","parentSectionOffset","scrollStart","scrollDiff","min","render","loop","reinitScrollBar","destroyScrollBar","init","hash","getElementById","startScroll","stopScroll","setEvents","unsetEvents","Native","LocomotiveScroll","smoothMobile","OnClickThemeToggle","toggle","themeToggle"],"mappings":"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","file":"app.7e8ee190.js","sourceRoot":"..","sourcesContent":["/* locomotive-scroll v4.1.3 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar defaults = {\n el: document,\n name: 'scroll',\n offset: [0, 0],\n repeat: false,\n smooth: false,\n initPosition: {\n x: 0,\n y: 0\n },\n direction: 'vertical',\n gestureDirection: 'vertical',\n reloadOnContextChange: false,\n lerp: 0.1,\n \"class\": 'is-inview',\n scrollbarContainer: false,\n scrollbarClass: 'c-scrollbar',\n scrollingClass: 'has-scroll-scrolling',\n draggingClass: 'has-scroll-dragging',\n smoothClass: 'has-scroll-smooth',\n initClass: 'has-scroll-init',\n getSpeed: false,\n getDirection: false,\n scrollFromAnywhere: false,\n multiplier: 1,\n firefoxMultiplier: 50,\n touchMultiplier: 2,\n resetNativeScroll: true,\n tablet: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical',\n breakpoint: 1024\n },\n smartphone: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical'\n }\n};\n\nvar _default = /*#__PURE__*/function () {\n function _default() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n this.namespace = 'locomotive';\n this.html = document.documentElement;\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.els = {};\n this.currentElements = {};\n this.listeners = {};\n this.hasScrollTicking = false;\n this.hasCallEventSet = false;\n this.checkScroll = this.checkScroll.bind(this);\n this.checkResize = this.checkResize.bind(this);\n this.checkEvent = this.checkEvent.bind(this);\n this.instance = {\n scroll: {\n x: 0,\n y: 0\n },\n limit: {\n x: this.html.offsetWidth,\n y: this.html.offsetHeight\n },\n currentElements: this.currentElements\n };\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (this.isMobile) this.direction = this[this.context].direction;\n\n if (this.direction === 'horizontal') {\n this.directionAxis = 'x';\n } else {\n this.directionAxis = 'y';\n }\n\n if (this.getDirection) {\n this.instance.direction = null;\n }\n\n if (this.getDirection) {\n this.instance.speed = 0;\n }\n\n this.html.classList.add(this.initClass);\n window.addEventListener('resize', this.checkResize, false);\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.initEvents();\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n this.dispatchScroll();\n }\n }, {\n key: \"checkResize\",\n value: function checkResize() {\n var _this = this;\n\n if (!this.resizeTick) {\n this.resizeTick = true;\n requestAnimationFrame(function () {\n _this.resize();\n\n _this.resizeTick = false;\n });\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {}\n }, {\n key: \"checkContext\",\n value: function checkContext() {\n if (!this.reloadOnContextChange) return;\n this.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || this.windowWidth < this.tablet.breakpoint;\n this.isTablet = this.isMobile && this.windowWidth >= this.tablet.breakpoint;\n var oldContext = this.context;\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (oldContext != this.context) {\n var oldSmooth = oldContext == 'desktop' ? this.smooth : this[oldContext].smooth;\n var newSmooth = this.context == 'desktop' ? this.smooth : this[this.context].smooth;\n if (oldSmooth != newSmooth) window.location.reload();\n }\n }\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this2 = this;\n\n this.scrollToEls = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-to]\"));\n this.setScrollTo = this.setScrollTo.bind(this);\n this.scrollToEls.forEach(function (el) {\n el.addEventListener('click', _this2.setScrollTo, false);\n });\n }\n }, {\n key: \"setScrollTo\",\n value: function setScrollTo(event) {\n event.preventDefault();\n this.scrollTo(event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-href\")) || event.currentTarget.getAttribute('href'), {\n offset: event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-offset\"))\n });\n }\n }, {\n key: \"addElements\",\n value: function addElements() {}\n }, {\n key: \"detectElements\",\n value: function detectElements(hasCallEventSet) {\n var _this3 = this;\n\n var scrollTop = this.instance.scroll.y;\n var scrollBottom = scrollTop + this.windowHeight;\n var scrollLeft = this.instance.scroll.x;\n var scrollRight = scrollLeft + this.windowWidth;\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n if (el && (!el.inView || hasCallEventSet)) {\n if (_this3.direction === 'horizontal') {\n if (scrollRight >= el.left && scrollLeft < el.right) {\n _this3.setInView(el, i);\n }\n } else {\n if (scrollBottom >= el.top && scrollTop < el.bottom) {\n _this3.setInView(el, i);\n }\n }\n }\n\n if (el && el.inView) {\n if (_this3.direction === 'horizontal') {\n var width = el.right - el.left;\n el.progress = (_this3.instance.scroll.x - (el.left - _this3.windowWidth)) / (width + _this3.windowWidth);\n\n if (scrollRight < el.left || scrollLeft > el.right) {\n _this3.setOutOfView(el, i);\n }\n } else {\n var height = el.bottom - el.top;\n el.progress = (_this3.instance.scroll.y - (el.top - _this3.windowHeight)) / (height + _this3.windowHeight);\n\n if (scrollBottom < el.top || scrollTop > el.bottom) {\n _this3.setOutOfView(el, i);\n }\n }\n }\n }); // this.els = this.els.filter((current, i) => {\n // return current !== null;\n // });\n\n this.hasScrollTicking = false;\n }\n }, {\n key: \"setInView\",\n value: function setInView(current, i) {\n this.els[i].inView = true;\n current.el.classList.add(current[\"class\"]);\n this.currentElements[i] = current;\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'enter');\n\n if (!current.repeat) {\n this.els[i].call = false;\n }\n } // if (!current.repeat && !current.speed && !current.sticky) {\n // if (!current.call || current.call && this.hasCallEventSet) {\n // this.els[i] = null\n // }\n // }\n\n }\n }, {\n key: \"setOutOfView\",\n value: function setOutOfView(current, i) {\n var _this4 = this;\n\n // if (current.repeat || current.speed !== undefined) {\n this.els[i].inView = false; // }\n\n Object.keys(this.currentElements).forEach(function (el) {\n el === i && delete _this4.currentElements[el];\n });\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'exit');\n }\n\n if (current.repeat) {\n current.el.classList.remove(current[\"class\"]);\n }\n }\n }, {\n key: \"dispatchCall\",\n value: function dispatchCall(current, way) {\n this.callWay = way;\n this.callValue = current.call.split(',').map(function (item) {\n return item.trim();\n });\n this.callObj = current;\n if (this.callValue.length == 1) this.callValue = this.callValue[0];\n var callEvent = new Event(this.namespace + 'call');\n this.el.dispatchEvent(callEvent);\n }\n }, {\n key: \"dispatchScroll\",\n value: function dispatchScroll() {\n var scrollEvent = new Event(this.namespace + 'scroll');\n this.el.dispatchEvent(scrollEvent);\n }\n }, {\n key: \"setEvents\",\n value: function setEvents(event, func) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n\n var list = this.listeners[event];\n list.push(func);\n\n if (list.length === 1) {\n this.el.addEventListener(this.namespace + event, this.checkEvent, false);\n }\n\n if (event === 'call') {\n this.hasCallEventSet = true;\n this.detectElements(true);\n }\n }\n }, {\n key: \"unsetEvents\",\n value: function unsetEvents(event, func) {\n if (!this.listeners[event]) return;\n var list = this.listeners[event];\n var index = list.indexOf(func);\n if (index < 0) return;\n list.splice(index, 1);\n\n if (list.index === 0) {\n this.el.removeEventListener(this.namespace + event, this.checkEvent, false);\n }\n }\n }, {\n key: \"checkEvent\",\n value: function checkEvent(event) {\n var _this5 = this;\n\n var name = event.type.replace(this.namespace, '');\n var list = this.listeners[name];\n if (!list || list.length === 0) return;\n list.forEach(function (func) {\n switch (name) {\n case 'scroll':\n return func(_this5.instance);\n\n case 'call':\n return func(_this5.callValue, _this5.callWay, _this5.callObj);\n\n default:\n return func();\n }\n });\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {}\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {}\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance.scroll = {\n x: 0,\n y: 0\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n\n window.removeEventListener('resize', this.checkResize, false);\n Object.keys(this.listeners).forEach(function (event) {\n _this6.el.removeEventListener(_this6.namespace + event, _this6.checkEvent, false);\n });\n this.listeners = {};\n this.scrollToEls.forEach(function (el) {\n el.removeEventListener('click', _this6.setScrollTo, false);\n });\n this.html.classList.remove(this.initClass);\n }\n }]);\n\n return _default;\n}();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar smoothscroll = createCommonjsModule(function (module, exports) {\n/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\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 {\n // commonjs\n module.exports = { polyfill: polyfill };\n }\n\n}());\n});\nvar smoothscroll_1 = smoothscroll.polyfill;\n\nvar _default$1 = /*#__PURE__*/function (_Core) {\n _inherits(_default, _Core);\n\n var _super = _createSuper(_default);\n\n function _default() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n _this = _super.call(this, options);\n\n if (_this.resetNativeScroll) {\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual';\n }\n\n window.scrollTo(0, 0);\n }\n\n window.addEventListener('scroll', _this.checkScroll, false);\n\n if (window.smoothscrollPolyfill === undefined) {\n window.smoothscrollPolyfill = smoothscroll;\n window.smoothscrollPolyfill.polyfill();\n }\n\n return _this;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.instance.scroll.y = window.pageYOffset;\n this.addElements();\n this.detectElements();\n\n _get(_getPrototypeOf(_default.prototype), \"init\", this).call(this);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this2 = this;\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.instance.scroll.y = window.pageYOffset;\n\n if (Object.entries(this.els).length) {\n if (!this.hasScrollTicking) {\n requestAnimationFrame(function () {\n _this2.detectElements();\n });\n this.hasScrollTicking = true;\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (window.pageYOffset > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (window.pageYOffset < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (window.pageYOffset != this.instance.scroll.y) {\n this.instance.speed = (window.pageYOffset - this.instance.scroll.y) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n if (Object.entries(this.els).length) {\n this.windowHeight = window.innerHeight;\n this.updateElements();\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this3 = this;\n\n this.els = {};\n var els = this.el.querySelectorAll('[data-' + this.name + ']');\n els.forEach(function (el, index) {\n var BCR = el.getBoundingClientRect();\n var cl = el.dataset[_this3.name + 'Class'] || _this3[\"class\"];\n var id = typeof el.dataset[_this3.name + 'Id'] === 'string' ? el.dataset[_this3.name + 'Id'] : index;\n var top;\n var left;\n var offset = typeof el.dataset[_this3.name + 'Offset'] === 'string' ? el.dataset[_this3.name + 'Offset'].split(',') : _this3.offset;\n var repeat = el.dataset[_this3.name + 'Repeat'];\n var call = el.dataset[_this3.name + 'Call'];\n var target = el.dataset[_this3.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n top = targetElBCR.top + _this3.instance.scroll.y;\n left = targetElBCR.left + _this3.instance.scroll.x;\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this3.repeat;\n }\n\n var relativeOffset = _this3.getRelativeOffset(offset);\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n var mappedEl = {\n el: el,\n targetEl: targetEl,\n id: id,\n \"class\": cl,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call\n };\n _this3.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this3.setInView(_this3.els[id], id);\n }\n });\n }\n }, {\n key: \"updateElements\",\n value: function updateElements() {\n var _this4 = this;\n\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n var top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y;\n\n var bottom = top + el.targetEl.offsetHeight;\n\n var relativeOffset = _this4.getRelativeOffset(el.offset);\n\n _this4.els[i].top = top + relativeOffset[0];\n _this4.els[i].bottom = bottom - relativeOffset[1];\n });\n this.hasScrollTicking = false;\n }\n }, {\n key: \"getRelativeOffset\",\n value: function getRelativeOffset(offset) {\n var relativeOffset = [0, 0];\n\n if (offset) {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * this.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n }\n\n return relativeOffset;\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = this.html;\n } else if (target === 'bottom') {\n target = this.html.offsetHeight - window.innerHeight;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n offset = target.getBoundingClientRect().top + offset + this.instance.scroll.y;\n } else {\n offset = target + offset;\n }\n\n var isTargetReached = function isTargetReached() {\n return parseInt(window.pageYOffset) === parseInt(offset);\n };\n\n if (callback) {\n if (isTargetReached()) {\n callback();\n return;\n } else {\n var onScroll = function onScroll() {\n if (isTargetReached()) {\n window.removeEventListener('scroll', onScroll);\n callback();\n }\n };\n\n window.addEventListener('scroll', onScroll);\n }\n }\n\n window.scrollTo({\n top: offset,\n behavior: options.duration === 0 ? 'auto' : 'smooth'\n });\n }\n }, {\n key: \"update\",\n value: function update() {\n this.addElements();\n this.detectElements();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n window.removeEventListener('scroll', this.checkScroll, false);\n }\n }]);\n\n return _default;\n}(_default);\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nvar tinyEmitter = E;\n\nvar lethargy = createCommonjsModule(function (module, exports) {\n// Generated by CoffeeScript 1.9.2\n(function() {\n var root;\n\n root = exports !== null ? exports : this;\n\n root.Lethargy = (function() {\n function Lethargy(stability, sensitivity, tolerance, delay) {\n this.stability = stability != null ? Math.abs(stability) : 8;\n this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100;\n this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1;\n this.delay = delay != null ? delay : 150;\n this.lastUpDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.lastDownDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.deltasTimestamp = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n }\n\n Lethargy.prototype.check = function(e) {\n var lastDelta;\n e = e.originalEvent || e;\n if (e.wheelDelta != null) {\n lastDelta = e.wheelDelta;\n } else if (e.deltaY != null) {\n lastDelta = e.deltaY * -40;\n } else if ((e.detail != null) || e.detail === 0) {\n lastDelta = e.detail * -40;\n }\n this.deltasTimestamp.push(Date.now());\n this.deltasTimestamp.shift();\n if (lastDelta > 0) {\n this.lastUpDeltas.push(lastDelta);\n this.lastUpDeltas.shift();\n return this.isInertia(1);\n } else {\n this.lastDownDeltas.push(lastDelta);\n this.lastDownDeltas.shift();\n return this.isInertia(-1);\n }\n };\n\n Lethargy.prototype.isInertia = function(direction) {\n var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum;\n lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas;\n if (lastDeltas[0] === null) {\n return direction;\n }\n if (this.deltasTimestamp[(this.stability * 2) - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[(this.stability * 2) - 1]) {\n return false;\n }\n lastDeltasOld = lastDeltas.slice(0, this.stability);\n lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2);\n oldSum = lastDeltasOld.reduce(function(t, s) {\n return t + s;\n });\n newSum = lastDeltasNew.reduce(function(t, s) {\n return t + s;\n });\n oldAverage = oldSum / lastDeltasOld.length;\n newAverage = newSum / lastDeltasNew.length;\n if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && (this.sensitivity < Math.abs(newAverage))) {\n return direction;\n } else {\n return false;\n }\n };\n\n Lethargy.prototype.showLastUpDeltas = function() {\n return this.lastUpDeltas;\n };\n\n Lethargy.prototype.showLastDownDeltas = function() {\n return this.lastDownDeltas;\n };\n\n return Lethargy;\n\n })();\n\n}).call(commonjsGlobal);\n});\n\nvar support = (function getSupport() {\n return {\n hasWheelEvent: 'onwheel' in document,\n hasMouseWheelEvent: 'onmousewheel' in document,\n hasTouch: ('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,\n hasTouchWin: navigator.msMaxTouchPoints && navigator.msMaxTouchPoints > 1,\n hasPointer: !!window.navigator.msPointerEnabled,\n hasKeyDown: 'onkeydown' in document,\n isFirefox: navigator.userAgent.indexOf('Firefox') > -1\n };\n})();\n\nvar toString = Object.prototype.toString,\n hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\nvar bindallStandalone = function(object) {\n if(!object) return console.warn('bindAll requires at least one argument.');\n\n var functions = Array.prototype.slice.call(arguments, 1);\n\n if (functions.length === 0) {\n\n for (var method in object) {\n if(hasOwnProperty$1.call(object, method)) {\n if(typeof object[method] == 'function' && toString.call(object[method]) == \"[object Function]\") {\n functions.push(method);\n }\n }\n }\n }\n\n for(var i = 0; i < functions.length; i++) {\n var f = functions[i];\n object[f] = bind(object[f], object);\n }\n};\n\n/*\n Faster bind without specific-case checking. (see https://coderwall.com/p/oi3j3w).\n bindAll is only needed for events binding so no need to make slow fixes for constructor\n or partial application.\n*/\nfunction bind(func, context) {\n return function() {\n return func.apply(context, arguments);\n };\n}\n\nvar Lethargy = lethargy.Lethargy;\n\n\n\nvar EVT_ID = 'virtualscroll';\n\nvar src = VirtualScroll;\n\nvar keyCodes = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SPACE: 32\n};\n\nfunction VirtualScroll(options) {\n bindallStandalone(this, '_onWheel', '_onMouseWheel', '_onTouchStart', '_onTouchMove', '_onKeyDown');\n\n this.el = window;\n if (options && options.el) {\n this.el = options.el;\n delete options.el;\n }\n this.options = objectAssign({\n mouseMultiplier: 1,\n touchMultiplier: 2,\n firefoxMultiplier: 15,\n keyStep: 120,\n preventTouch: false,\n unpreventTouchClass: 'vs-touchmove-allowed',\n limitInertia: false,\n useKeyboard: true,\n useTouch: true\n }, options);\n\n if (this.options.limitInertia) this._lethargy = new Lethargy();\n\n this._emitter = new tinyEmitter();\n this._event = {\n y: 0,\n x: 0,\n deltaX: 0,\n deltaY: 0\n };\n this.touchStartX = null;\n this.touchStartY = null;\n this.bodyTouchAction = null;\n\n if (this.options.passive !== undefined) {\n this.listenerOptions = {passive: this.options.passive};\n }\n}\n\nVirtualScroll.prototype._notify = function(e) {\n var evt = this._event;\n evt.x += evt.deltaX;\n evt.y += evt.deltaY;\n\n this._emitter.emit(EVT_ID, {\n x: evt.x,\n y: evt.y,\n deltaX: evt.deltaX,\n deltaY: evt.deltaY,\n originalEvent: e\n });\n};\n\nVirtualScroll.prototype._onWheel = function(e) {\n var options = this.options;\n if (this._lethargy && this._lethargy.check(e) === false) return;\n var evt = this._event;\n\n // In Chrome and in Firefox (at least the new one)\n evt.deltaX = e.wheelDeltaX || e.deltaX * -1;\n evt.deltaY = e.wheelDeltaY || e.deltaY * -1;\n\n // for our purpose deltamode = 1 means user is on a wheel mouse, not touch pad\n // real meaning: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent#Delta_modes\n if(support.isFirefox && e.deltaMode == 1) {\n evt.deltaX *= options.firefoxMultiplier;\n evt.deltaY *= options.firefoxMultiplier;\n }\n\n evt.deltaX *= options.mouseMultiplier;\n evt.deltaY *= options.mouseMultiplier;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onMouseWheel = function(e) {\n if (this.options.limitInertia && this._lethargy.check(e) === false) return;\n\n var evt = this._event;\n\n // In Safari, IE and in Chrome if 'wheel' isn't defined\n evt.deltaX = (e.wheelDeltaX) ? e.wheelDeltaX : 0;\n evt.deltaY = (e.wheelDeltaY) ? e.wheelDeltaY : e.wheelDelta;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onTouchStart = function(e) {\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n};\n\nVirtualScroll.prototype._onTouchMove = function(e) {\n var options = this.options;\n if(options.preventTouch\n && !e.target.classList.contains(options.unpreventTouchClass)) {\n e.preventDefault();\n }\n\n var evt = this._event;\n\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n\n evt.deltaX = (t.pageX - this.touchStartX) * options.touchMultiplier;\n evt.deltaY = (t.pageY - this.touchStartY) * options.touchMultiplier;\n\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onKeyDown = function(e) {\n var evt = this._event;\n evt.deltaX = evt.deltaY = 0;\n var windowHeight = window.innerHeight - 40;\n\n switch(e.keyCode) {\n case keyCodes.LEFT:\n case keyCodes.UP:\n evt.deltaY = this.options.keyStep;\n break;\n\n case keyCodes.RIGHT:\n case keyCodes.DOWN:\n evt.deltaY = - this.options.keyStep;\n break;\n case e.shiftKey:\n evt.deltaY = windowHeight;\n break;\n case keyCodes.SPACE:\n evt.deltaY = - windowHeight;\n break;\n default:\n return;\n }\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._bind = function() {\n if(support.hasWheelEvent) this.el.addEventListener('wheel', this._onWheel, this.listenerOptions);\n if(support.hasMouseWheelEvent) this.el.addEventListener('mousewheel', this._onMouseWheel, this.listenerOptions);\n\n if(support.hasTouch && this.options.useTouch) {\n this.el.addEventListener('touchstart', this._onTouchStart, this.listenerOptions);\n this.el.addEventListener('touchmove', this._onTouchMove, this.listenerOptions);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n this.bodyTouchAction = document.body.style.msTouchAction;\n document.body.style.msTouchAction = 'none';\n this.el.addEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.addEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.addEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype._unbind = function() {\n if(support.hasWheelEvent) this.el.removeEventListener('wheel', this._onWheel);\n if(support.hasMouseWheelEvent) this.el.removeEventListener('mousewheel', this._onMouseWheel);\n\n if(support.hasTouch) {\n this.el.removeEventListener('touchstart', this._onTouchStart);\n this.el.removeEventListener('touchmove', this._onTouchMove);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n document.body.style.msTouchAction = this.bodyTouchAction;\n this.el.removeEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.removeEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.removeEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype.on = function(cb, ctx) {\n this._emitter.on(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (events && events[EVT_ID] && events[EVT_ID].length === 1) this._bind();\n};\n\nVirtualScroll.prototype.off = function(cb, ctx) {\n this._emitter.off(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (!events[EVT_ID] || events[EVT_ID].length <= 0) this._unbind();\n};\n\nVirtualScroll.prototype.reset = function() {\n var evt = this._event;\n evt.x = 0;\n evt.y = 0;\n};\n\nVirtualScroll.prototype.destroy = function() {\n this._emitter.off();\n this._unbind();\n};\n\nfunction lerp(start, end, amt) {\n return (1 - amt) * start + amt * end;\n}\n\nfunction getTranslate(el) {\n var translate = {};\n if (!window.getComputedStyle) return;\n var style = getComputedStyle(el);\n var transform = style.transform || style.webkitTransform || style.mozTransform;\n var mat = transform.match(/^matrix3d\\((.+)\\)$/);\n\n if (mat) {\n translate.x = mat ? parseFloat(mat[1].split(', ')[12]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[13]) : 0;\n } else {\n mat = transform.match(/^matrix\\((.+)\\)$/);\n translate.x = mat ? parseFloat(mat[1].split(', ')[4]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[5]) : 0;\n }\n\n return translate;\n}\n\n/**\n * Returns an array containing all the parent nodes of the given node\n * @param {object} node\n * @return {array} parent nodes\n */\nfunction getParents(elem) {\n // Set up a parent array\n var parents = []; // Push each parent element to the array\n\n for (; elem && elem !== document; elem = elem.parentNode) {\n parents.push(elem);\n } // Return our parent array\n\n\n return parents;\n} // https://gomakethings.com/how-to-get-the-closest-parent-element-with-a-matching-selector-using-vanilla-javascript/\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)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction 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.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction 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\nfunction 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\nfunction LinearEasing (x) {\n return x;\n}\n\nvar src$1 = 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\nvar keyCodes$1 = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SPACE: 32,\n TAB: 9,\n PAGEUP: 33,\n PAGEDOWN: 34,\n HOME: 36,\n END: 35\n};\n\nvar _default$2 = /*#__PURE__*/function (_Core) {\n _inherits(_default, _Core);\n\n var _super = _createSuper(_default);\n\n function _default() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual';\n }\n\n window.scrollTo(0, 0);\n _this = _super.call(this, options);\n if (_this.inertia) _this.lerp = _this.inertia * 0.1;\n _this.isScrolling = false;\n _this.isDraggingScrollbar = false;\n _this.isTicking = false;\n _this.hasScrollTicking = false;\n _this.parallaxElements = {};\n _this.stop = false;\n _this.scrollbarContainer = options.scrollbarContainer;\n _this.checkKey = _this.checkKey.bind(_assertThisInitialized(_this));\n window.addEventListener('keydown', _this.checkKey, false);\n return _this;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n this.html.classList.add(this.smoothClass);\n this.html.setAttribute(\"data-\".concat(this.name, \"-direction\"), this.direction);\n this.instance = _objectSpread2({\n delta: {\n x: this.initPosition.x,\n y: this.initPosition.y\n },\n scroll: {\n x: this.initPosition.x,\n y: this.initPosition.y\n }\n }, this.instance);\n this.vs = new src({\n el: this.scrollFromAnywhere ? document : this.el,\n mouseMultiplier: navigator.platform.indexOf('Win') > -1 ? 1 : 0.4,\n firefoxMultiplier: this.firefoxMultiplier,\n touchMultiplier: this.touchMultiplier,\n useKeyboard: false,\n passive: true\n });\n this.vs.on(function (e) {\n if (_this2.stop) {\n return;\n }\n\n if (!_this2.isDraggingScrollbar) {\n requestAnimationFrame(function () {\n _this2.updateDelta(e);\n\n if (!_this2.isScrolling) _this2.startScrolling();\n });\n }\n });\n this.setScrollLimit();\n this.initScrollBar();\n this.addSections();\n this.addElements();\n this.checkScroll(true);\n this.transformElements(true, true);\n\n _get(_getPrototypeOf(_default.prototype), \"init\", this).call(this);\n }\n }, {\n key: \"setScrollLimit\",\n value: function setScrollLimit() {\n this.instance.limit.y = this.el.offsetHeight - this.windowHeight;\n\n if (this.direction === 'horizontal') {\n var totalWidth = 0;\n var nodes = this.el.children;\n\n for (var i = 0; i < nodes.length; i++) {\n totalWidth += nodes[i].offsetWidth;\n }\n\n this.instance.limit.x = totalWidth - this.windowWidth;\n }\n }\n }, {\n key: \"startScrolling\",\n value: function startScrolling() {\n this.startScrollTs = Date.now(); // Record timestamp\n\n this.isScrolling = true;\n this.checkScroll();\n this.html.classList.add(this.scrollingClass);\n }\n }, {\n key: \"stopScrolling\",\n value: function stopScrolling() {\n cancelAnimationFrame(this.checkScrollRaf); // Prevent checkScroll to continue looping\n //Pevent scrollbar glitch/locking\n\n this.startScrollTs = undefined;\n\n if (this.scrollToRaf) {\n cancelAnimationFrame(this.scrollToRaf);\n this.scrollToRaf = null;\n }\n\n this.isScrolling = false;\n this.instance.scroll.y = Math.round(this.instance.scroll.y);\n this.html.classList.remove(this.scrollingClass);\n }\n }, {\n key: \"checkKey\",\n value: function checkKey(e) {\n var _this3 = this;\n\n if (this.stop) {\n // If we are stopped, we don't want any scroll to occur because of a keypress\n // Prevent tab to scroll to activeElement\n if (e.keyCode == keyCodes$1.TAB) {\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0;\n });\n }\n\n return;\n }\n\n switch (e.keyCode) {\n case keyCodes$1.TAB:\n // Do not remove the RAF\n // It allows to override the browser's native scrollTo, which is essential\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0; // Request scrollTo on the focusedElement, putting it at the center of the screen\n\n _this3.scrollTo(document.activeElement, {\n offset: -window.innerHeight / 2\n });\n });\n break;\n\n case keyCodes$1.UP:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] -= 240;\n }\n\n break;\n\n case keyCodes$1.DOWN:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] += 240;\n }\n\n break;\n\n case keyCodes$1.PAGEUP:\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n break;\n\n case keyCodes$1.PAGEDOWN:\n this.instance.delta[this.directionAxis] += window.innerHeight;\n break;\n\n case keyCodes$1.HOME:\n this.instance.delta[this.directionAxis] -= this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.END:\n this.instance.delta[this.directionAxis] += this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.SPACE:\n if (this.isActiveElementScrollSensitive()) {\n if (e.shiftKey) {\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n } else {\n this.instance.delta[this.directionAxis] += window.innerHeight;\n }\n }\n\n break;\n\n default:\n return;\n }\n\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.isScrolling = true;\n this.checkScroll();\n this.html.classList.add(this.scrollingClass);\n }\n }, {\n key: \"isActiveElementScrollSensitive\",\n value: function isActiveElementScrollSensitive() {\n return !(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement) && !(document.activeElement instanceof HTMLButtonElement) && !(document.activeElement instanceof HTMLSelectElement);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this4 = this;\n\n var forced = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (forced || this.isScrolling || this.isDraggingScrollbar) {\n if (!this.hasScrollTicking) {\n this.checkScrollRaf = requestAnimationFrame(function () {\n return _this4.checkScroll();\n });\n this.hasScrollTicking = true;\n }\n\n this.updateScroll();\n var distance = Math.abs(this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]);\n var timeSinceStart = Date.now() - this.startScrollTs; // Get the time since the scroll was started: the scroll can be stopped again only past 100ms\n\n if (!this.animatingScroll && timeSinceStart > 100 && (distance < 0.5 && this.instance.delta[this.directionAxis] != 0 || distance < 0.5 && this.instance.delta[this.directionAxis] == 0)) {\n this.stopScrolling();\n }\n\n Object.entries(this.sections).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n section = _ref2[1];\n\n if (section.persistent || _this4.instance.scroll[_this4.directionAxis] > section.offset[_this4.directionAxis] && _this4.instance.scroll[_this4.directionAxis] < section.limit[_this4.directionAxis]) {\n if (_this4.direction === 'horizontal') {\n _this4.transform(section.el, -_this4.instance.scroll[_this4.directionAxis], 0);\n } else {\n _this4.transform(section.el, 0, -_this4.instance.scroll[_this4.directionAxis]);\n }\n\n if (!section.inView) {\n section.inView = true;\n section.el.style.opacity = 1;\n section.el.style.pointerEvents = 'all';\n section.el.setAttribute(\"data-\".concat(_this4.name, \"-section-inview\"), '');\n }\n } else {\n if (section.inView || forced) {\n section.inView = false;\n section.el.style.opacity = 0;\n section.el.style.pointerEvents = 'none';\n section.el.removeAttribute(\"data-\".concat(_this4.name, \"-section-inview\"));\n }\n\n _this4.transform(section.el, 0, 0);\n }\n });\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.detectElements();\n this.transformElements();\n\n if (this.hasScrollbar) {\n var scrollBarTranslation = this.instance.scroll[this.directionAxis] / this.instance.limit[this.directionAxis] * this.scrollBarLimit[this.directionAxis];\n\n if (this.direction === 'horizontal') {\n this.transform(this.scrollbarThumb, scrollBarTranslation, 0);\n } else {\n this.transform(this.scrollbarThumb, 0, scrollBarTranslation);\n }\n }\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n this.hasScrollTicking = false;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.checkContext();\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.update();\n }\n }, {\n key: \"updateDelta\",\n value: function updateDelta(e) {\n var delta;\n var gestureDirection = this[this.context] && this[this.context].gestureDirection ? this[this.context].gestureDirection : this.gestureDirection;\n\n if (gestureDirection === 'both') {\n delta = e.deltaX + e.deltaY;\n } else if (gestureDirection === 'vertical') {\n delta = e.deltaY;\n } else if (gestureDirection === 'horizontal') {\n delta = e.deltaX;\n } else {\n delta = e.deltaY;\n }\n\n this.instance.delta[this.directionAxis] -= delta * this.multiplier;\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n }\n }, {\n key: \"updateScroll\",\n value: function updateScroll(e) {\n if (this.isScrolling || this.isDraggingScrollbar) {\n this.instance.scroll[this.directionAxis] = lerp(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis], this.lerp);\n } else {\n if (this.instance.scroll[this.directionAxis] > this.instance.limit[this.directionAxis]) {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.limit[this.directionAxis]);\n } else if (this.instance.scroll.y < 0) {\n this.setScroll(this.instance.scroll[this.directionAxis], 0);\n } else {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis]);\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (this.instance.delta.y > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (this.instance.delta.y < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n\n if (this.instance.delta.x > this.instance.scroll.x) {\n if (this.instance.direction !== 'right') {\n this.instance.direction = 'right';\n }\n } else if (this.instance.delta.x < this.instance.scroll.x) {\n if (this.instance.direction !== 'left') {\n this.instance.direction = 'left';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (this.instance.delta[this.directionAxis] != this.instance.scroll[this.directionAxis]) {\n this.instance.speed = (this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"initScrollBar\",\n value: function initScrollBar() {\n this.scrollbar = document.createElement('span');\n this.scrollbarThumb = document.createElement('span');\n this.scrollbar.classList.add(\"\".concat(this.scrollbarClass));\n this.scrollbarThumb.classList.add(\"\".concat(this.scrollbarClass, \"_thumb\"));\n this.scrollbar.append(this.scrollbarThumb);\n\n if (this.scrollbarContainer) {\n this.scrollbarContainer.append(this.scrollbar);\n } else {\n document.body.append(this.scrollbar);\n } // Scrollbar Events\n\n\n this.getScrollBar = this.getScrollBar.bind(this);\n this.releaseScrollBar = this.releaseScrollBar.bind(this);\n this.moveScrollBar = this.moveScrollBar.bind(this);\n this.scrollbarThumb.addEventListener('mousedown', this.getScrollBar);\n window.addEventListener('mouseup', this.releaseScrollBar);\n window.addEventListener('mousemove', this.moveScrollBar); // Set scrollbar values\n\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"reinitScrollBar\",\n value: function reinitScrollBar() {\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"destroyScrollBar\",\n value: function destroyScrollBar() {\n this.scrollbarThumb.removeEventListener('mousedown', this.getScrollBar);\n window.removeEventListener('mouseup', this.releaseScrollBar);\n window.removeEventListener('mousemove', this.moveScrollBar);\n this.scrollbar.remove();\n }\n }, {\n key: \"getScrollBar\",\n value: function getScrollBar(e) {\n this.isDraggingScrollbar = true;\n this.checkScroll();\n this.html.classList.remove(this.scrollingClass);\n this.html.classList.add(this.draggingClass);\n }\n }, {\n key: \"releaseScrollBar\",\n value: function releaseScrollBar(e) {\n this.isDraggingScrollbar = false;\n\n if (this.isScrolling) {\n this.html.classList.add(this.scrollingClass);\n }\n\n this.html.classList.remove(this.draggingClass);\n }\n }, {\n key: \"moveScrollBar\",\n value: function moveScrollBar(e) {\n var _this5 = this;\n\n if (this.isDraggingScrollbar) {\n requestAnimationFrame(function () {\n var x = (e.clientX - _this5.scrollbarBCR.left) * 100 / _this5.scrollbarWidth * _this5.instance.limit.x / 100;\n var y = (e.clientY - _this5.scrollbarBCR.top) * 100 / _this5.scrollbarHeight * _this5.instance.limit.y / 100;\n\n if (y > 0 && y < _this5.instance.limit.y) {\n _this5.instance.delta.y = y;\n }\n\n if (x > 0 && x < _this5.instance.limit.x) {\n _this5.instance.delta.x = x;\n }\n });\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this6 = this;\n\n this.els = {};\n this.parallaxElements = {}; // this.sections.forEach((section, y) => {\n\n var els = this.el.querySelectorAll(\"[data-\".concat(this.name, \"]\"));\n els.forEach(function (el, index) {\n // Try and find the target's parent section\n var targetParents = getParents(el);\n var section = Object.entries(_this6.sections).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n section = _ref4[1];\n\n return section;\n }).find(function (section) {\n return targetParents.includes(section.el);\n });\n var cl = el.dataset[_this6.name + 'Class'] || _this6[\"class\"];\n var id = typeof el.dataset[_this6.name + 'Id'] === 'string' ? el.dataset[_this6.name + 'Id'] : 'el' + index;\n var top;\n var left;\n var repeat = el.dataset[_this6.name + 'Repeat'];\n var call = el.dataset[_this6.name + 'Call'];\n var position = el.dataset[_this6.name + 'Position'];\n var delay = el.dataset[_this6.name + 'Delay'];\n var direction = el.dataset[_this6.name + 'Direction'];\n var sticky = typeof el.dataset[_this6.name + 'Sticky'] === 'string';\n var speed = el.dataset[_this6.name + 'Speed'] ? parseFloat(el.dataset[_this6.name + 'Speed']) / 10 : false;\n var offset = typeof el.dataset[_this6.name + 'Offset'] === 'string' ? el.dataset[_this6.name + 'Offset'].split(',') : _this6.offset;\n var target = el.dataset[_this6.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n\n if (section === null) {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n } else {\n if (!section.inView) {\n top = targetElBCR.top - getTranslate(section.el).y - getTranslate(targetEl).y;\n left = targetElBCR.left - getTranslate(section.el).x - getTranslate(targetEl).x;\n } else {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n }\n }\n\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n var middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n\n if (sticky) {\n var elBCR = el.getBoundingClientRect();\n var elTop = elBCR.top;\n var elLeft = elBCR.left;\n var elDistance = {\n x: elLeft - left,\n y: elTop - top\n };\n top += window.innerHeight;\n left += window.innerWidth;\n bottom = elTop + targetEl.offsetHeight - el.offsetHeight - elDistance[_this6.directionAxis];\n right = elLeft + targetEl.offsetWidth - el.offsetWidth - elDistance[_this6.directionAxis];\n middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n }\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this6.repeat;\n }\n\n var relativeOffset = [0, 0];\n\n if (offset) {\n if (_this6.direction === 'horizontal') {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowWidth / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n left = left + relativeOffset[0];\n right = right - relativeOffset[1];\n } else {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n }\n }\n\n var mappedEl = {\n el: el,\n id: id,\n \"class\": cl,\n section: section,\n top: top,\n middle: middle,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call,\n speed: speed,\n delay: delay,\n position: position,\n target: targetEl,\n direction: direction,\n sticky: sticky\n };\n _this6.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this6.setInView(_this6.els[id], id);\n }\n\n if (speed !== false || sticky) {\n _this6.parallaxElements[id] = mappedEl;\n }\n }); // });\n }\n }, {\n key: \"addSections\",\n value: function addSections() {\n var _this7 = this;\n\n this.sections = {};\n var sections = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-section]\"));\n\n if (sections.length === 0) {\n sections = [this.el];\n }\n\n sections.forEach(function (section, index) {\n var id = typeof section.dataset[_this7.name + 'Id'] === 'string' ? section.dataset[_this7.name + 'Id'] : 'section' + index;\n var sectionBCR = section.getBoundingClientRect();\n var offset = {\n x: sectionBCR.left - window.innerWidth * 1.5 - getTranslate(section).x,\n y: sectionBCR.top - window.innerHeight * 1.5 - getTranslate(section).y\n };\n var limit = {\n x: offset.x + sectionBCR.width + window.innerWidth * 2,\n y: offset.y + sectionBCR.height + window.innerHeight * 2\n };\n var persistent = typeof section.dataset[_this7.name + 'Persistent'] === 'string';\n section.setAttribute('data-scroll-section-id', id);\n var mappedSection = {\n el: section,\n offset: offset,\n limit: limit,\n inView: false,\n persistent: persistent,\n id: id\n };\n _this7.sections[id] = mappedSection;\n });\n }\n }, {\n key: \"transform\",\n value: function transform(element, x, y, delay) {\n var transform;\n\n if (!delay) {\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(x, \",\").concat(y, \",0,1)\");\n } else {\n var start = getTranslate(element);\n var lerpX = lerp(start.x, x, delay);\n var lerpY = lerp(start.y, y, delay);\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(lerpX, \",\").concat(lerpY, \",0,1)\");\n }\n\n element.style.webkitTransform = transform;\n element.style.msTransform = transform;\n element.style.transform = transform;\n }\n }, {\n key: \"transformElements\",\n value: function transformElements(isForced) {\n var _this8 = this;\n\n var setAllElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var scrollRight = this.instance.scroll.x + this.windowWidth;\n var scrollBottom = this.instance.scroll.y + this.windowHeight;\n var scrollMiddle = {\n x: this.instance.scroll.x + this.windowMiddle.x,\n y: this.instance.scroll.y + this.windowMiddle.y\n };\n Object.entries(this.parallaxElements).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n i = _ref6[0],\n current = _ref6[1];\n\n var transformDistance = false;\n\n if (isForced) {\n transformDistance = 0;\n }\n\n if (current.inView || setAllElements) {\n switch (current.position) {\n case 'top':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementTop':\n transformDistance = (scrollBottom - current.top) * -current.speed;\n break;\n\n case 'bottom':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollBottom + _this8.windowHeight) * current.speed;\n break;\n\n case 'left':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementLeft':\n transformDistance = (scrollRight - current.left) * -current.speed;\n break;\n\n case 'right':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollRight + _this8.windowHeight) * current.speed;\n break;\n\n default:\n transformDistance = (scrollMiddle[_this8.directionAxis] - current.middle[_this8.directionAxis]) * -current.speed;\n break;\n }\n }\n\n if (current.sticky) {\n if (current.inView) {\n if (_this8.direction === 'horizontal') {\n transformDistance = _this8.instance.scroll.x - current.left + window.innerWidth;\n } else {\n transformDistance = _this8.instance.scroll.y - current.top + window.innerHeight;\n }\n } else {\n if (_this8.direction === 'horizontal') {\n if (_this8.instance.scroll.x < current.left - window.innerWidth && _this8.instance.scroll.x < current.left - window.innerWidth / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.x > current.right && _this8.instance.scroll.x > current.right + 100) {\n transformDistance = current.right - current.left + window.innerWidth;\n } else {\n transformDistance = false;\n }\n } else {\n if (_this8.instance.scroll.y < current.top - window.innerHeight && _this8.instance.scroll.y < current.top - window.innerHeight / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.y > current.bottom && _this8.instance.scroll.y > current.bottom + 100) {\n transformDistance = current.bottom - current.top + window.innerHeight;\n } else {\n transformDistance = false;\n }\n }\n }\n }\n\n if (transformDistance !== false) {\n if (current.direction === 'horizontal' || _this8.direction === 'horizontal' && current.direction !== 'vertical') {\n _this8.transform(current.el, transformDistance, 0, isForced ? false : current.delay);\n } else {\n _this8.transform(current.el, 0, transformDistance, isForced ? false : current.delay);\n }\n }\n });\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var _this9 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var duration = !isNaN(parseInt(options.duration)) ? parseInt(options.duration) : 1000; // Duration of the scroll animation in milliseconds\n\n var easing = options.easing || [0.25, 0.0, 0.35, 1.0]; // An array of 4 floats between 0 and 1 defining the bezier curve for the animation's easing. See http://greweb.me/bezier-easing-editor/example/\n\n var disableLerp = options.disableLerp ? true : false; // Lerp effect won't be applied if set to true\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n easing = src$1.apply(void 0, _toConsumableArray(easing));\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = 0;\n } else if (target === 'bottom') {\n target = this.instance.limit.y;\n } else if (target === 'left') {\n target = 0;\n } else if (target === 'right') {\n target = this.instance.limit.x;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n // Verify the given target belongs to this scroll scope\n var targetInScope = getParents(target).includes(this.el);\n\n if (!targetInScope) {\n // If the target isn't inside our main element, abort any action\n return;\n } // Get target offset from top\n\n\n var targetBCR = target.getBoundingClientRect();\n var offsetTop = targetBCR.top;\n var offsetLeft = targetBCR.left; // Try and find the target's parent section\n\n var targetParents = getParents(target);\n var parentSection = targetParents.find(function (candidate) {\n return Object.entries(_this9.sections) // Get sections associative array as a regular array\n .map(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n key = _ref8[0],\n section = _ref8[1];\n\n return section;\n }) // map to section only (we dont need the key here)\n .find(function (section) {\n return section.el == candidate;\n }); // finally find the section that matches the candidate\n });\n var parentSectionOffset = 0;\n\n if (parentSection) {\n parentSectionOffset = getTranslate(parentSection)[this.directionAxis]; // We got a parent section, store it's current offset to remove it later\n } else {\n // if no parent section is found we need to use instance scroll directly\n parentSectionOffset = -this.instance.scroll[this.directionAxis];\n } // Final value of scroll destination : offsetTop + (optional offset given in options) - (parent's section translate)\n\n\n if (this.direction === 'horizontal') {\n offset = offsetLeft + offset - parentSectionOffset;\n } else {\n offset = offsetTop + offset - parentSectionOffset;\n }\n } else {\n offset = target + offset;\n } // Actual scrollto\n // ==========================================================================\n // Setup\n\n\n var scrollStart = parseFloat(this.instance.delta[this.directionAxis]);\n var scrollTarget = Math.max(0, Math.min(offset, this.instance.limit[this.directionAxis])); // Make sure our target is in the scroll boundaries\n\n var scrollDiff = scrollTarget - scrollStart;\n\n var render = function render(p) {\n if (disableLerp) {\n if (_this9.direction === 'horizontal') {\n _this9.setScroll(scrollStart + scrollDiff * p, _this9.instance.delta.y);\n } else {\n _this9.setScroll(_this9.instance.delta.x, scrollStart + scrollDiff * p);\n }\n } else {\n _this9.instance.delta[_this9.directionAxis] = scrollStart + scrollDiff * p;\n }\n }; // Prepare the scroll\n\n\n this.animatingScroll = true; // This boolean allows to prevent `checkScroll()` from calling `stopScrolling` when the animation is slow (i.e. at the beginning of an EaseIn)\n\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.startScrolling(); // Restart the scroll\n // Start the animation loop\n\n var start = Date.now();\n\n var loop = function loop() {\n var p = (Date.now() - start) / duration; // Animation progress\n\n if (p > 1) {\n // Animation ends\n render(1);\n _this9.animatingScroll = false;\n if (duration == 0) _this9.update();\n if (callback) callback();\n } else {\n _this9.scrollToRaf = requestAnimationFrame(loop);\n render(easing(p));\n }\n };\n\n loop();\n }\n }, {\n key: \"update\",\n value: function update() {\n this.setScrollLimit();\n this.addSections();\n this.addElements();\n this.detectElements();\n this.updateScroll();\n this.transformElements(true);\n this.reinitScrollBar();\n this.checkScroll(true);\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {\n this.stop = false;\n }\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {\n this.stop = true;\n }\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance = _objectSpread2(_objectSpread2({}, this.instance), {}, {\n scroll: {\n x: x,\n y: y\n },\n delta: {\n x: x,\n y: y\n },\n speed: 0\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n this.stopScrolling();\n this.html.classList.remove(this.smoothClass);\n this.vs.destroy();\n this.destroyScrollBar();\n window.removeEventListener('keydown', this.checkKey, false);\n }\n }]);\n\n return _default;\n}(_default);\n\nvar Smooth = /*#__PURE__*/function () {\n function Smooth() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Smooth);\n\n this.options = options; // Override default options with given ones\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n if (!this.smooth && this.direction == 'horizontal') console.warn('🚨 `smooth:false` & `horizontal` direction are not yet compatible');\n if (!this.tablet.smooth && this.tablet.direction == 'horizontal') console.warn('🚨 `smooth:false` & `horizontal` direction are not yet compatible (tablet)');\n if (!this.smartphone.smooth && this.smartphone.direction == 'horizontal') console.warn('🚨 `smooth:false` & `horizontal` direction are not yet compatible (smartphone)');\n this.init();\n }\n\n _createClass(Smooth, [{\n key: \"init\",\n value: function init() {\n this.options.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || window.innerWidth < this.tablet.breakpoint;\n this.options.isTablet = this.options.isMobile && window.innerWidth >= this.tablet.breakpoint;\n\n if (this.smooth && !this.options.isMobile || this.tablet.smooth && this.options.isTablet || this.smartphone.smooth && this.options.isMobile && !this.options.isTablet) {\n this.scroll = new _default$2(this.options);\n } else {\n this.scroll = new _default$1(this.options);\n }\n\n this.scroll.init();\n\n if (window.location.hash) {\n // Get the hash without the '#' and find the matching element\n var id = window.location.hash.slice(1, window.location.hash.length);\n var target = document.getElementById(id); // If found, scroll to the element\n\n if (target) this.scroll.scrollTo(target);\n }\n }\n }, {\n key: \"update\",\n value: function update() {\n this.scroll.update();\n }\n }, {\n key: \"start\",\n value: function start() {\n this.scroll.startScroll();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.scroll.stopScroll();\n }\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target, options) {\n this.scroll.scrollTo(target, options);\n }\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.scroll.setScroll(x, y);\n }\n }, {\n key: \"on\",\n value: function on(event, func) {\n this.scroll.setEvents(event, func);\n }\n }, {\n key: \"off\",\n value: function off(event, func) {\n this.scroll.unsetEvents(event, func);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.scroll.destroy();\n }\n }]);\n\n return Smooth;\n}();\n\nvar Native = /*#__PURE__*/function () {\n function Native() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Native);\n\n this.options = options; // Override default options with given ones\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n this.init();\n }\n\n _createClass(Native, [{\n key: \"init\",\n value: function init() {\n this.scroll = new _default$1(this.options);\n this.scroll.init();\n\n if (window.location.hash) {\n // Get the hash without the '#' and find the matching element\n var id = window.location.hash.slice(1, window.location.hash.length);\n var target = document.getElementById(id); // If found, scroll to the element\n\n if (target) this.scroll.scrollTo(target);\n }\n }\n }, {\n key: \"update\",\n value: function update() {\n this.scroll.update();\n }\n }, {\n key: \"start\",\n value: function start() {\n this.scroll.startScroll();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.scroll.stopScroll();\n }\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target, options) {\n this.scroll.scrollTo(target, options);\n }\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.scroll.setScroll(x, y);\n }\n }, {\n key: \"on\",\n value: function on(event, func) {\n this.scroll.setEvents(event, func);\n }\n }, {\n key: \"off\",\n value: function off(event, func) {\n this.scroll.unsetEvents(event, func);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.scroll.destroy();\n }\n }]);\n\n return Native;\n}();\n\nexport default Smooth;\nexport { Native, Smooth };\n","import LocomotiveScroll from 'locomotive-scroll';\n\n// Initialize Locomotive Scroll Instance\nconst scroll = new LocomotiveScroll({\n el: document.querySelector('[data-scroll-container]'),\n smooth: true,\n lerp: 0.05, // Linear Interpolation, 0 > 1 // Try 0.01 // was 0.06\n multiplier: 1, // Effect Multiplier // was 1.4\n reloadOnContextChange: true,\n scrollFromAnywhere: true,\n touchMultiplier: 2, // was 3\n smoothMobile: 1,\n smartphone: {\n smooth: 1,\n // breakpoint: 767\n },\n tablet: {\n smooth: 1,\n // breakpoint: 1024\n },\n});\n\n// document.getElementById('contact-button').addEventListener('click', function() {\n// document.getElementById('contact').scrollIntoView({ behavior: 'smooth' });\n// },\n\ndocument.addEventListener(\"DOMContentLoaded\", function(event) { \n document.body.classList.add('fade-in');\n document.body.classList.remove('fade-out');\n\n // Theme toggle switch\n document.getElementById('theme-toggle').addEventListener('click', OnClickThemeToggle);\n\n function OnClickThemeToggle() {\n document.body.classList.toggle('alternate');\n \n const themeToggle = document.getElementById('theme-toggle');\n themeToggle.classList.toggle('rotate-animation-1');\n themeToggle.classList.toggle('rotate-animation-2');\n }\n // Project Section - Show/Hide elements on hover\n // const projects = document.querySelectorAll('.project');\n // const hideOnHover = document.querySelectorAll('.hide-on-hover');\n\n // projects.forEach(project => {\n // const projectTitle = project.querySelector('.project-title');\n // const projectImage = project.querySelector('.project-image');\n // if (projectImage) {\n\n // projectTitle.addEventListener('mouseenter', function() {\n // projectImage.classList.add('fade-in');\n // projectImage.classList.remove('fade-out');\n // hideOnHover.forEach(el => el.classList.add('fade-out'))\n\n // });\n // projectTitle.addEventListener('mouseleave', function() {\n // projectImage.classList.remove('fade-in');\n // projectImage.classList.add('fade-out');\n // hideOnHover.forEach(el => el.classList.remove('fade-out'));\n // });\n // }\n // });\n\n // Initialize scroll after DOM is fully loaded\n scroll.init();\n});\n"]}