From 8b40b1a92ef7609fcbd8de27b355040d1ad4da38 Mon Sep 17 00:00:00 2001 From: Deven Caron Date: Mon, 18 Oct 2021 16:45:40 -0400 Subject: [PATCH] build assets --- www/assets/scripts/app.js | 12 ++++++------ www/assets/scripts/app.js.map | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/www/assets/scripts/app.js b/www/assets/scripts/app.js index 997623dd..3496f3ea 100644 --- a/www/assets/scripts/app.js +++ b/www/assets/scripts/app.js @@ -1,9 +1,9 @@ -(()=>{var Ft=Object.create;var U=Object.defineProperty;var Xt=Object.getOwnPropertyDescriptor;var Kt=Object.getOwnPropertyNames;var $t=Object.getPrototypeOf,Gt=Object.prototype.hasOwnProperty;var dt=n=>U(n,"__esModule",{value:!0});var Zt=(n,s)=>()=>(s||n((s={exports:{}}).exports,s),s.exports),Jt=(n,s)=>{dt(n);for(var t in s)U(n,t,{get:s[t],enumerable:!0})},Qt=(n,s,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let e of Kt(s))!Gt.call(n,e)&&e!=="default"&&U(n,e,{get:()=>s[e],enumerable:!(t=Xt(s,e))||t.enumerable});return n},te=n=>Qt(dt(U(n!=null?Ft($t(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var Yt=Zt((Ht,Z)=>{(function(n,s){typeof define=="function"&&define.amd?define([],function(){return n.svg4everybody=s()}):typeof Z=="object"&&Z.exports?Z.exports=s():n.svg4everybody=s()})(Ht,function(){function n(i,r,o){if(o){var a=document.createDocumentFragment(),l=!r.hasAttribute("viewBox")&&o.getAttribute("viewBox");l&&r.setAttribute("viewBox",l);for(var c=o.cloneNode(!0);c.childNodes.length;)a.appendChild(c.firstChild);i.appendChild(a)}}function s(i){i.onreadystatechange=function(){if(i.readyState===4){var r=i._cachedDocument;r||(r=i._cachedDocument=document.implementation.createHTMLDocument(""),r.body.innerHTML=i.responseText,i._cachedTarget={}),i._embeds.splice(0).map(function(o){var a=i._cachedTarget[o.id];a||(a=i._cachedTarget[o.id]=r.getElementById(o.id)),n(o.parent,o.svg,a)})}},i.onreadystatechange()}function t(i){function r(){for(var A=0;A0)&&m(r,67)}var o,a=Object(i),l=/\bTrident\/[567]\b|\bMSIE (?:9|10)\.0\b/,c=/\bAppleWebKit\/(\d+)\b/,f=/\bEdge\/12\.(\d+)\b/,u=/\bEdge\/.(\d+)\b/,v=window.top!==window.self;o="polyfill"in a?a.polyfill:l.test(navigator.userAgent)||(navigator.userAgent.match(f)||[])[1]<10547||(navigator.userAgent.match(c)||[])[1]<537||u.test(navigator.userAgent)&&v;var h={},m=window.requestAnimationFrame||setTimeout,C=document.getElementsByTagName("use"),D=0;o&&r()}function e(i){for(var r=i;r.nodeName.toLowerCase()!=="svg"&&(r=r.parentNode););return r}return t})});function V(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?V=function(s){return typeof s}:V=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},V(n)}function vt(n,s){if(!(n instanceof s))throw new TypeError("Cannot call a class as a function")}function pt(n,s){for(var t=0;tn.length)&&(s=n.length);for(var t=0,e=new Array(s);tet,Scroll:()=>at});function ce(n,s){if(!(n instanceof s))throw new TypeError("Cannot call a class as a function")}function wt(n,s){for(var t=0;tn.length)&&(s=n.length);for(var t=0,e=new Array(s);t-1||(this.reset(),this.getStateOptions())}},{key:"reset",value:function(){this.isLoading&&(this.controller.abort(),this.isLoading=!1,this.controller=new AbortController),window.clearTimeout(this.enterTimeout),this.isInserted&&this.removeContainer(),this.classContainer=this.html,Object.assign(this,this.defaults,this.options)}},{key:"getClickOptions",value:function(t){this.transition=t.getAttribute("data-"+this.name),this.isUrl=t.getAttribute("data-"+this.name+"-url");var e=t.getAttribute("href"),i=t.getAttribute("target");if(i=="_blank"){window.open(e,"_blank");return}if(this.transition=="false"){window.location=e;return}this.setOptions(e,!0)}},{key:"getStateOptions",value:function(){this.transitionsHistory?this.transition=history.state:this.transition=!1;var t=window.location.href;this.setOptions(t)}},{key:"goTo",value:function(t,e,i){this.reset(),this.transition=e,this.isUrl=i,this.setOptions(t,!0)}},{key:"setOptions",value:function(t,e){var i="["+this.container+"]",r;this.transition&&this.transition!="true"&&(this.transitionContainer="["+this.container+'="'+this.transition+'"]',this.loadingClass=this.transitions[this.transition].loadingClass||this.loadingClass,this.loadedClass=this.transitions[this.transition].loadedClass||this.loadedClass,this.readyClass=this.transitions[this.transition].readyClass||this.readyClass,this.transitionsPrefix=this.transitions[this.transition].transitionsPrefix||this.transitionsPrefix,this.enterDelay=this.transitions[this.transition].enterDelay||this.enterDelay,this.exitDelay=this.transitions[this.transition].exitDelay||this.exitDelay,this.loadedDelay=this.transitions[this.transition].loadedDelay||this.loadedDelay,r=document.querySelector(this.transitionContainer)),r?(i=this.transitionContainer,this.oldContainer=r,this.classContainer=this.oldContainer.parentNode,this.subContainer||history.replaceState(this.transition,null,this.href),this.subContainer=!0):(this.oldContainer=document.querySelector(i),this.subContainer&&history.replaceState(this.prevTransition,null,this.href),this.subContainer=!1),this.href=t,this.parentContainer=this.oldContainer.parentNode,this.isUrl===""||this.isUrl!=null&&this.isUrl!="false"&&this.isUrl!=!1?history.pushState(this.transition,null,t):(this.oldContainer.classList.add("is-old"),this.setLoading(),this.startEnterDelay(),this.loadHref(t,i,e))}},{key:"setLoading",value:function(){this.classContainer.classList.remove(this.loadedClass,this.readyClass),this.classContainer.classList.add(this.loadingClass),this.classContainer.classList.remove(this.transitionsPrefix+this.prevTransition),this.transition&&this.classContainer.classList.add(this.transitionsPrefix+this.transition),this.subContainer||(this.prevTransition=this.transition);var t=new Event(this.namespace+"loading");window.dispatchEvent(t)}},{key:"startEnterDelay",value:function(){var t=this;this.enterTimeout=window.setTimeout(function(){t.isEntered=!0,t.isLoaded&&t.transitionContainers()},this.enterDelay)}},{key:"loadHref",value:function(t,e,i){var r=this;this.isLoading=!0;var o=this.controller.signal;fetch(t,{signal:o}).then(function(a){return a.text()}).then(function(a){i&&history.pushState(r.transition,null,t);var l=new DOMParser;r.data=l.parseFromString(a,"text/html"),r.newContainer=r.data.querySelector(e),r.newContainer.classList.add("is-new"),r.parentNewContainer=r.newContainer.parentNode,r.hideContainer(),r.parentContainer.insertBefore(r.newContainer,r.oldContainer),r.isInserted=!0,r.setSvgs(),r.isLoaded=!0,r.isEntered&&r.transitionContainers(),r.loadEls(r.newContainer),r.isLoading=!1}).catch(function(a){window.location=t})}},{key:"transitionContainers",value:function(){var t=this;this.setAttributes(),this.showContainer(),this.setLoaded(),setTimeout(function(){t.removeContainer(),t.setReady()},this.exitDelay)}},{key:"setSvgs",value:function(){if(this.isChrome){var t=this.newContainer.querySelectorAll("use");t.length&&t.forEach(function(e){var i=e.getAttribute("xlink:href");if(i)e.parentNode.innerHTML='';else{var r=e.getAttribute("href");r&&(e.parentNode.innerHTML='')}})}}},{key:"setAttributes",value:function(){var t=this,e=this.data.getElementsByTagName("title")[0],i=this.data.head.querySelector('meta[name="description"]'),r=document.head.querySelector('meta[name="description"]'),o,a;this.subContainer?(a=this.parentNewContainer,o=document.querySelector(this.transitionContainer).parentNode):(a=this.data.querySelector("html"),o=document.querySelector("html"));var l=Object.assign({},a.dataset);e&&(document.title=e.innerText),r&&i&&r.setAttribute("content",i.getAttribute("content")),l&&Object.entries(l).forEach(function(c){var f=ue(c,2),u=f[0],v=f[1];o.setAttribute("data-"+t.toDash(u),v)})}},{key:"toDash",value:function(t){return t.split(/(?=[A-Z])/).join("-").toLowerCase()}},{key:"hideContainer",value:function(){this.newContainer.style.visibility="hidden",this.newContainer.style.height=0,this.newContainer.style.overflow="hidden"}},{key:"showContainer",value:function(){this.newContainer.style.visibility="",this.newContainer.style.height="",this.newContainer.style.overflow=""}},{key:"loadEls",value:function(t){var e=this,i=[];this.loadAttributes.forEach(function(r){var o="data-"+e.name+"-"+r,a=t.querySelectorAll("["+o+"]");a.length&&a.forEach(function(l){var c=l.getAttribute(o);if(l.setAttribute(r,c),r=="src"||r=="srcset"){var f=new Promise(function(u){l.onload=function(){return u(l)}});i.push(f)}})}),Promise.all(i).then(function(r){var o=new Event(e.namespace+"images");window.dispatchEvent(o)})}},{key:"setLoaded",value:function(){var t=this;this.classContainer.classList.remove(this.loadingClass),setTimeout(function(){t.classContainer.classList.add(t.loadedClass)},this.loadedDelay);var e=new Event(this.namespace+"loaded");window.dispatchEvent(e)}},{key:"removeContainer",value:function(){this.parentContainer.removeChild(this.oldContainer),this.newContainer.classList.remove("is-new"),this.isInserted=!1}},{key:"setReady",value:function(){this.classContainer.classList.add(this.readyClass);var t=new Event(this.namespace+"ready");window.dispatchEvent(t)}},{key:"on",value:function(t,e){var i=this;window.addEventListener(this.namespace+t,function(){switch(t){case"loading":return e(i.transition,i.oldContainer);case"loaded":return e(i.transition,i.oldContainer,i.newContainer);case"ready":return e(i.transition,i.newContainer);default:return e()}},!1)}}]),n}(),kt=me;var et=class extends F{constructor(n){super(n)}init(){new kt({enterDelay:0,transitions:{customTransition:{}}}).on("loaded",(s,t,e)=>{this.call("destroy",t,"app"),this.call("update",e,"app")})}};function X(n,s){if(!(n instanceof s))throw new TypeError("Cannot call a class as a function")}function Et(n,s){for(var t=0;tn.length)&&(s=n.length);for(var t=0,e=new Array(s);t0&&arguments[0]!==void 0?arguments[0]:{};X(this,n),Object.assign(this,W,s),this.smartphone=W.smartphone,s.smartphone&&Object.assign(this.smartphone,s.smartphone),this.tablet=W.tablet,s.tablet&&Object.assign(this.tablet,s.tablet),this.namespace="locomotive",this.html=document.documentElement,this.windowHeight=window.innerHeight,this.windowWidth=window.innerWidth,this.windowMiddle={x:this.windowWidth/2,y:this.windowHeight/2},this.els={},this.currentElements={},this.listeners={},this.hasScrollTicking=!1,this.hasCallEventSet=!1,this.checkScroll=this.checkScroll.bind(this),this.checkResize=this.checkResize.bind(this),this.checkEvent=this.checkEvent.bind(this),this.instance={scroll:{x:0,y:0},limit:{x:this.html.offsetWidth,y:this.html.offsetHeight},currentElements:this.currentElements},this.isMobile?this.isTablet?this.context="tablet":this.context="smartphone":this.context="desktop",this.isMobile&&(this.direction=this[this.context].direction),this.direction==="horizontal"?this.directionAxis="x":this.directionAxis="y",this.getDirection&&(this.instance.direction=null),this.getDirection&&(this.instance.speed=0),this.html.classList.add(this.initClass),window.addEventListener("resize",this.checkResize,!1)}return K(n,[{key:"init",value:function(){this.initEvents()}},{key:"checkScroll",value:function(){this.dispatchScroll()}},{key:"checkResize",value:function(){var t=this;this.resizeTick||(this.resizeTick=!0,requestAnimationFrame(function(){t.resize(),t.resizeTick=!1}))}},{key:"resize",value:function(){}},{key:"checkContext",value:function(){if(!!this.reloadOnContextChange){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;var t=this.context;if(this.isMobile?this.isTablet?this.context="tablet":this.context="smartphone":this.context="desktop",t!=this.context){var e=t=="desktop"?this.smooth:this[t].smooth,i=this.context=="desktop"?this.smooth:this[this.context].smooth;e!=i&&window.location.reload()}}}},{key:"initEvents",value:function(){var t=this;this.scrollToEls=this.el.querySelectorAll("[data-".concat(this.name,"-to]")),this.setScrollTo=this.setScrollTo.bind(this),this.scrollToEls.forEach(function(e){e.addEventListener("click",t.setScrollTo,!1)})}},{key:"setScrollTo",value:function(t){t.preventDefault(),this.scrollTo(t.currentTarget.getAttribute("data-".concat(this.name,"-href"))||t.currentTarget.getAttribute("href"),{offset:t.currentTarget.getAttribute("data-".concat(this.name,"-offset"))})}},{key:"addElements",value:function(){}},{key:"detectElements",value:function(t){var e=this,i=this.instance.scroll.y,r=i+this.windowHeight,o=this.instance.scroll.x,a=o+this.windowWidth;Object.entries(this.els).forEach(function(l){var c=R(l,2),f=c[0],u=c[1];if(u&&(!u.inView||t)&&(e.direction==="horizontal"?a>=u.left&&o=u.top&&iu.right)&&e.setOutOfView(u,f)}else{var h=u.bottom-u.top;u.progress=(e.instance.scroll.y-(u.top-e.windowHeight))/(h+e.windowHeight),(ru.bottom)&&e.setOutOfView(u,f)}}),this.hasScrollTicking=!1}},{key:"setInView",value:function(t,e){this.els[e].inView=!0,t.el.classList.add(t.class),this.currentElements[e]=t,t.call&&this.hasCallEventSet&&(this.dispatchCall(t,"enter"),t.repeat||(this.els[e].call=!1))}},{key:"setOutOfView",value:function(t,e){var i=this;this.els[e].inView=!1,Object.keys(this.currentElements).forEach(function(r){r===e&&delete i.currentElements[r]}),t.call&&this.hasCallEventSet&&this.dispatchCall(t,"exit"),t.repeat&&t.el.classList.remove(t.class)}},{key:"dispatchCall",value:function(t,e){this.callWay=e,this.callValue=t.call.split(",").map(function(r){return r.trim()}),this.callObj=t,this.callValue.length==1&&(this.callValue=this.callValue[0]);var i=new Event(this.namespace+"call");this.el.dispatchEvent(i)}},{key:"dispatchScroll",value:function(){var t=new Event(this.namespace+"scroll");this.el.dispatchEvent(t)}},{key:"setEvents",value:function(t,e){this.listeners[t]||(this.listeners[t]=[]);var i=this.listeners[t];i.push(e),i.length===1&&this.el.addEventListener(this.namespace+t,this.checkEvent,!1),t==="call"&&(this.hasCallEventSet=!0,this.detectElements(!0))}},{key:"unsetEvents",value:function(t,e){if(!!this.listeners[t]){var i=this.listeners[t],r=i.indexOf(e);r<0||(i.splice(r,1),i.index===0&&this.el.removeEventListener(this.namespace+t,this.checkEvent,!1))}}},{key:"checkEvent",value:function(t){var e=this,i=t.type.replace(this.namespace,""),r=this.listeners[i];!r||r.length===0||r.forEach(function(o){switch(i){case"scroll":return o(e.instance);case"call":return o(e.callValue,e.callWay,e.callObj);default:return o()}})}},{key:"startScroll",value:function(){}},{key:"stopScroll",value:function(){}},{key:"setScroll",value:function(t,e){this.instance.scroll={x:0,y:0}}},{key:"destroy",value:function(){var t=this;window.removeEventListener("resize",this.checkResize,!1),Object.keys(this.listeners).forEach(function(e){t.el.removeEventListener(t.namespace+e,t.checkEvent,!1)}),this.listeners={},this.scrollToEls.forEach(function(e){e.removeEventListener("click",t.setScrollTo,!1)}),this.html.classList.remove(this.initClass)}}]),n}(),xe=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Dt(n,s){return s={exports:{}},n(s,s.exports),s.exports}var Lt=Dt(function(n,s){(function(){function t(){var e=window,i=document;if("scrollBehavior"in i.documentElement.style&&e.__forceSmoothScrollPolyfill__!==!0)return;var r=e.HTMLElement||e.Element,o=468,a={scroll:e.scroll||e.scrollTo,scrollBy:e.scrollBy,elementScroll:r.prototype.scroll||u,scrollIntoView:r.prototype.scrollIntoView},l=e.performance&&e.performance.now?e.performance.now.bind(e.performance):Date.now;function c(d){var p=["MSIE ","Trident/","Edge/"];return new RegExp(p.join("|")).test(d)}var f=c(e.navigator.userAgent)?1:0;function u(d,p){this.scrollLeft=d,this.scrollTop=p}function v(d){return .5*(1-Math.cos(Math.PI*d))}function h(d){if(d===null||typeof d!="object"||d.behavior===void 0||d.behavior==="auto"||d.behavior==="instant")return!0;if(typeof d=="object"&&d.behavior==="smooth")return!1;throw new TypeError("behavior member of ScrollOptions "+d.behavior+" is not a valid value for enumeration ScrollBehavior.")}function m(d,p){if(p==="Y")return d.clientHeight+f1?1:g,b=v(g),y=d.startX+(d.x-d.startX)*b,T=d.startY+(d.y-d.startY)*b,d.method.call(d.scrollable,y,T),(y!==d.x||T!==d.y)&&e.requestAnimationFrame(E.bind(e,d))}function w(d,p,b){var y,T,g,S,j=l();d===i.body?(y=e,T=e.scrollX||e.pageXOffset,g=e.scrollY||e.pageYOffset,S=a.scroll):(y=d,T=d.scrollLeft,g=d.scrollTop,S=u),E({scrollable:y,method:S,startTime:j,startX:T,startY:g,x:p,y:b})}e.scroll=e.scrollTo=function(){if(arguments[0]!==void 0){if(h(arguments[0])===!0){a.scroll.call(e,arguments[0].left!==void 0?arguments[0].left:typeof arguments[0]!="object"?arguments[0]:e.scrollX||e.pageXOffset,arguments[0].top!==void 0?arguments[0].top:arguments[1]!==void 0?arguments[1]:e.scrollY||e.pageYOffset);return}w.call(e,i.body,arguments[0].left!==void 0?~~arguments[0].left:e.scrollX||e.pageXOffset,arguments[0].top!==void 0?~~arguments[0].top:e.scrollY||e.pageYOffset)}},e.scrollBy=function(){if(arguments[0]!==void 0){if(h(arguments[0])){a.scrollBy.call(e,arguments[0].left!==void 0?arguments[0].left:typeof arguments[0]!="object"?arguments[0]:0,arguments[0].top!==void 0?arguments[0].top:arguments[1]!==void 0?arguments[1]:0);return}w.call(e,i.body,~~arguments[0].left+(e.scrollX||e.pageXOffset),~~arguments[0].top+(e.scrollY||e.pageYOffset))}},r.prototype.scroll=r.prototype.scrollTo=function(){if(arguments[0]!==void 0){if(h(arguments[0])===!0){if(typeof arguments[0]=="number"&&arguments[1]===void 0)throw new SyntaxError("Value could not be converted");a.elementScroll.call(this,arguments[0].left!==void 0?~~arguments[0].left:typeof arguments[0]!="object"?~~arguments[0]:this.scrollLeft,arguments[0].top!==void 0?~~arguments[0].top:arguments[1]!==void 0?~~arguments[1]:this.scrollTop);return}var d=arguments[0].left,p=arguments[0].top;w.call(this,this,typeof d=="undefined"?this.scrollLeft:~~d,typeof p=="undefined"?this.scrollTop:~~p)}},r.prototype.scrollBy=function(){if(arguments[0]!==void 0){if(h(arguments[0])===!0){a.elementScroll.call(this,arguments[0].left!==void 0?~~arguments[0].left+this.scrollLeft:~~arguments[0]+this.scrollLeft,arguments[0].top!==void 0?~~arguments[0].top+this.scrollTop:~~arguments[1]+this.scrollTop);return}this.scroll({left:~~arguments[0].left+this.scrollLeft,top:~~arguments[0].top+this.scrollTop,behavior:arguments[0].behavior})}},r.prototype.scrollIntoView=function(){if(h(arguments[0])===!0){a.scrollIntoView.call(this,arguments[0]===void 0?!0:arguments[0]);return}var d=A(this),p=d.getBoundingClientRect(),b=this.getBoundingClientRect();d!==i.body?(w.call(this,d,d.scrollLeft+b.left-p.left,d.scrollTop+b.top-p.top),e.getComputedStyle(d).position!=="fixed"&&e.scrollBy({left:p.left,top:p.top,behavior:"smooth"})):e.scrollBy({left:b.left,top:b.top,behavior:"smooth"})}}n.exports={polyfill:t}})()}),ai=Lt.polyfill,Oe=function(n){At(t,n);var s=_t(t);function t(){var e,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return X(this,t),e=s.call(this,i),e.resetNativeScroll&&(history.scrollRestoration&&(history.scrollRestoration="manual"),window.scrollTo(0,0)),window.addEventListener("scroll",e.checkScroll,!1),window.smoothscrollPolyfill===void 0&&(window.smoothscrollPolyfill=Lt,window.smoothscrollPolyfill.polyfill()),e}return K(t,[{key:"init",value:function(){this.instance.scroll.y=window.pageYOffset,this.addElements(),this.detectElements(),I(L(t.prototype),"init",this).call(this)}},{key:"checkScroll",value:function(){var i=this;I(L(t.prototype),"checkScroll",this).call(this),this.getDirection&&this.addDirection(),this.getSpeed&&(this.addSpeed(),this.speedTs=Date.now()),this.instance.scroll.y=window.pageYOffset,Object.entries(this.els).length&&(this.hasScrollTicking||(requestAnimationFrame(function(){i.detectElements()}),this.hasScrollTicking=!0))}},{key:"addDirection",value:function(){window.pageYOffset>this.instance.scroll.y?this.instance.direction!=="down"&&(this.instance.direction="down"):window.pageYOffset1&&arguments[1]!==void 0?arguments[1]:{},o=parseInt(r.offset)||0,a=r.callback?r.callback:!1;if(typeof i=="string"){if(i==="top")i=this.html;else if(i==="bottom")i=this.html.offsetHeight-window.innerHeight;else if(i=document.querySelector(i),!i)return}else if(typeof i=="number")i=parseInt(i);else if(!(i&&i.tagName)){console.warn("`target` parameter is not valid");return}typeof i!="number"?o=i.getBoundingClientRect().top+o+this.instance.scroll.y:o=i+o;var l=function(){return parseInt(window.pageYOffset)===parseInt(o)};if(a)if(l()){a();return}else{var c=function f(){l()&&(window.removeEventListener("scroll",f),a())};window.addEventListener("scroll",c)}window.scrollTo({top:o,behavior:"smooth"})}},{key:"update",value:function(){this.addElements(),this.detectElements()}},{key:"destroy",value:function(){I(L(t.prototype),"destroy",this).call(this),window.removeEventListener("scroll",this.checkScroll,!1)}}]),t}(Ot);var Mt=Object.getOwnPropertySymbols,De=Object.prototype.hasOwnProperty,Le=Object.prototype.propertyIsEnumerable;function Me(n){if(n==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(n)}function Ie(){try{if(!Object.assign)return!1;var n=new String("abc");if(n[5]="de",Object.getOwnPropertyNames(n)[0]==="5")return!1;for(var s={},t=0;t<10;t++)s["_"+String.fromCharCode(t)]=t;var e=Object.getOwnPropertyNames(s).map(function(r){return s[r]});if(e.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(r){i[r]=r}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(r){return!1}}var Pe=Ie()?Object.assign:function(n,s){for(var t,e=Me(n),i,r=1;r=c;1<=c?l++:l--)f.push(null);return f}.call(this),this.lastDownDeltas=function(){var l,c,f;for(f=[],l=1,c=this.stability*2;1<=c?l<=c:l>=c;1<=c?l++:l--)f.push(null);return f}.call(this),this.deltasTimestamp=function(){var l,c,f;for(f=[],l=1,c=this.stability*2;1<=c?l<=c:l>=c;1<=c?l++:l--)f.push(null);return f}.call(this)}return e.prototype.check=function(i){var r;return i=i.originalEvent||i,i.wheelDelta!=null?r=i.wheelDelta:i.deltaY!=null?r=i.deltaY*-40:(i.detail!=null||i.detail===0)&&(r=i.detail*-40),this.deltasTimestamp.push(Date.now()),this.deltasTimestamp.shift(),r>0?(this.lastUpDeltas.push(r),this.lastUpDeltas.shift(),this.isInertia(1)):(this.lastDownDeltas.push(r),this.lastDownDeltas.shift(),this.isInertia(-1))},e.prototype.isInertia=function(i){var r,o,a,l,c,f,u;return r=i===-1?this.lastDownDeltas:this.lastUpDeltas,r[0]===null?i:this.deltasTimestamp[this.stability*2-2]+this.delay>Date.now()&&r[0]===r[this.stability*2-1]?!1:(a=r.slice(0,this.stability),o=r.slice(this.stability,this.stability*2),u=a.reduce(function(v,h){return v+h}),c=o.reduce(function(v,h){return v+h}),f=u/a.length,l=c/o.length,Math.abs(f)1,hasPointer:!!window.navigator.msPointerEnabled,hasKeyDown:"onkeydown"in document,isFirefox:navigator.userAgent.indexOf("Firefox")>-1}}(),Re=Object.prototype.toString,We=Object.prototype.hasOwnProperty,He=function(n){if(!n)return console.warn("bindAll requires at least one argument.");var s=Array.prototype.slice.call(arguments,1);if(s.length===0)for(var t in n)We.call(n,t)&&typeof n[t]=="function"&&Re.call(n[t])=="[object Function]"&&s.push(t);for(var e=0;e0?t=o:s=o;while(Math.abs(r)>qe&&++a=Ve?$e(l,h,s,e):m===0?h:Ke(l,c,c+$,s,e)}return function(c){return c===0?0:c===1?1:G(a(c),t,i)}},P={LEFT:37,UP:38,RIGHT:39,DOWN:40,SPACE:32,TAB:9,PAGEUP:33,PAGEDOWN:34,HOME:36,END:35},Je=function(n){At(t,n);var s=_t(t);function t(){var e,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return X(this,t),history.scrollRestoration&&(history.scrollRestoration="manual"),window.scrollTo(0,0),e=s.call(this,i),e.inertia&&(e.lerp=e.inertia*.1),e.isScrolling=!1,e.isDraggingScrollbar=!1,e.isTicking=!1,e.hasScrollTicking=!1,e.parallaxElements={},e.stop=!1,e.scrollbarContainer=i.scrollbarContainer,e.checkKey=e.checkKey.bind(Ct(e)),window.addEventListener("keydown",e.checkKey,!1),e}return K(t,[{key:"init",value:function(){var i=this;this.html.classList.add(this.smoothClass),this.html.setAttribute("data-".concat(this.name,"-direction"),this.direction),this.instance=it({delta:{x:this.initPosition.x,y:this.initPosition.y},scroll:{x:this.initPosition.x,y:this.initPosition.y}},this.instance),this.vs=new Ne({el:this.scrollFromAnywhere?document:this.el,mouseMultiplier:navigator.platform.indexOf("Win")>-1?1:.4,firefoxMultiplier:this.firefoxMultiplier,touchMultiplier:this.touchMultiplier,useKeyboard:!1,passive:!0}),this.vs.on(function(r){i.stop||i.isDraggingScrollbar||requestAnimationFrame(function(){i.updateDelta(r),i.isScrolling||i.startScrolling()})}),this.setScrollLimit(),this.initScrollBar(),this.addSections(),this.addElements(),this.checkScroll(!0),this.transformElements(!0,!0),I(L(t.prototype),"init",this).call(this)}},{key:"setScrollLimit",value:function(){if(this.instance.limit.y=this.el.offsetHeight-this.windowHeight,this.direction==="horizontal"){for(var i=0,r=this.el.children,o=0;othis.instance.limit[this.directionAxis]&&(this.instance.delta[this.directionAxis]=this.instance.limit[this.directionAxis]),this.stopScrolling(),this.isScrolling=!0,this.checkScroll(),this.html.classList.add(this.scrollingClass)}},{key:"checkScroll",value:function(){var i=this,r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(r||this.isScrolling||this.isDraggingScrollbar){this.hasScrollTicking||(this.checkScrollRaf=requestAnimationFrame(function(){return i.checkScroll()}),this.hasScrollTicking=!0),this.updateScroll();var o=Math.abs(this.instance.delta[this.directionAxis]-this.instance.scroll[this.directionAxis]),a=Date.now()-this.startScrollTs;if(!this.animatingScroll&&a>100&&(o<.5&&this.instance.delta[this.directionAxis]!=0||o<.5&&this.instance.delta[this.directionAxis]==0)&&this.stopScrolling(),Object.entries(this.sections).forEach(function(c){var f=R(c,2),u=f[0],v=f[1];v.persistent||i.instance.scroll[i.directionAxis]>v.offset[i.directionAxis]&&i.instance.scroll[i.directionAxis]this.instance.limit[this.directionAxis]&&(this.instance.delta[this.directionAxis]=this.instance.limit[this.directionAxis])}},{key:"updateScroll",value:function(i){this.isScrolling||this.isDraggingScrollbar?this.instance.scroll[this.directionAxis]=rt(this.instance.scroll[this.directionAxis],this.instance.delta[this.directionAxis],this.lerp):this.instance.scroll[this.directionAxis]>this.instance.limit[this.directionAxis]?this.setScroll(this.instance.scroll[this.directionAxis],this.instance.limit[this.directionAxis]):this.instance.scroll.y<0?this.setScroll(this.instance.scroll[this.directionAxis],0):this.setScroll(this.instance.scroll[this.directionAxis],this.instance.delta[this.directionAxis])}},{key:"addDirection",value:function(){this.instance.delta.y>this.instance.scroll.y?this.instance.direction!=="down"&&(this.instance.direction="down"):this.instance.delta.ythis.instance.scroll.x?this.instance.direction!=="right"&&(this.instance.direction="right"):this.instance.delta.x0&&a0&&o1&&arguments[1]!==void 0?arguments[1]:!1,a=this.instance.scroll.x+this.windowWidth,l=this.instance.scroll.y+this.windowHeight,c={x:this.instance.scroll.x+this.windowMiddle.x,y:this.instance.scroll.y+this.windowMiddle.y};Object.entries(this.parallaxElements).forEach(function(f){var u=R(f,2),v=u[0],h=u[1],m=!1;if(i&&(m=0),h.inView||o)switch(h.position){case"top":m=r.instance.scroll[r.directionAxis]*-h.speed;break;case"elementTop":m=(l-h.top)*-h.speed;break;case"bottom":m=(r.instance.limit[r.directionAxis]-l+r.windowHeight)*h.speed;break;case"left":m=r.instance.scroll[r.directionAxis]*-h.speed;break;case"elementLeft":m=(a-h.left)*-h.speed;break;case"right":m=(r.instance.limit[r.directionAxis]-a+r.windowHeight)*h.speed;break;default:m=(c[r.directionAxis]-h.middle[r.directionAxis])*-h.speed;break}h.sticky&&(h.inView?r.direction==="horizontal"?m=r.instance.scroll.x-h.left+window.innerWidth:m=r.instance.scroll.y-h.top+window.innerHeight:r.direction==="horizontal"?r.instance.scroll.xh.right&&r.instance.scroll.x>h.right+100?m=h.right-h.left+window.innerWidth:m=!1:r.instance.scroll.yh.bottom&&r.instance.scroll.y>h.bottom+100?m=h.bottom-h.top+window.innerHeight:m=!1),m!==!1&&(h.direction==="horizontal"||r.direction==="horizontal"&&h.direction!=="vertical"?r.transform(h.el,m,0,i?!1:h.delay):r.transform(h.el,0,m,i?!1:h.delay))})}},{key:"scrollTo",value:function(i){var r=this,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=parseInt(o.offset)||0,l=isNaN(parseInt(o.duration))?1e3:parseInt(o.duration),c=o.easing||[.25,0,.35,1],f=!!o.disableLerp,u=o.callback?o.callback:!1;if(c=Ze.apply(void 0,Se(c)),typeof i=="string"){if(i==="top")i=0;else if(i==="bottom")i=this.instance.limit.y;else if(i==="left")i=0;else if(i==="right")i=this.instance.limit.x;else if(i=document.querySelector(i),!i)return}else if(typeof i=="number")i=parseInt(i);else if(!(i&&i.tagName)){console.warn("`target` parameter is not valid");return}if(typeof i!="number"){var v=ot(i).includes(this.el);if(!v)return;var h=i.getBoundingClientRect(),m=h.top,C=h.left,D=ot(i),A=D.find(function(g){return Object.entries(r.sections).map(function(S){var j=R(S,2),J=j[0],N=j[1];return N}).find(function(S){return S.el==g})}),E=0;A?E=O(A)[this.directionAxis]:E=-this.instance.scroll[this.directionAxis],this.direction==="horizontal"?a=C+a-E:a=m+a-E}else a=i+a;var w=parseFloat(this.instance.delta[this.directionAxis]),d=Math.max(0,Math.min(a,this.instance.limit[this.directionAxis])),p=d-w,b=function(S){f?r.direction==="horizontal"?r.setScroll(w+p*S,r.instance.delta.y):r.setScroll(r.instance.delta.x,w+p*S):r.instance.delta[r.directionAxis]=w+p*S};this.animatingScroll=!0,this.stopScrolling(),this.startScrolling();var y=Date.now(),T=function g(){var S=(Date.now()-y)/l;S>1?(b(1),r.animatingScroll=!1,l==0&&r.update(),u&&u()):(r.scrollToRaf=requestAnimationFrame(g),b(c(S)))};T()}},{key:"update",value:function(){this.setScrollLimit(),this.addSections(),this.addElements(),this.detectElements(),this.updateScroll(),this.transformElements(!0),this.reinitScrollBar(),this.checkScroll(!0)}},{key:"startScroll",value:function(){this.stop=!1}},{key:"stopScroll",value:function(){this.stop=!0}},{key:"setScroll",value:function(i,r){this.instance=it(it({},this.instance),{},{scroll:{x:i,y:r},delta:{x:i,y:r},speed:0})}},{key:"destroy",value:function(){I(L(t.prototype),"destroy",this).call(this),this.stopScrolling(),this.html.classList.remove(this.smoothClass),this.vs.destroy(),this.destroyScrollBar(),window.removeEventListener("keydown",this.checkKey,!1)}}]),t}(Ot),Qe=function(){function n(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};X(this,n),this.options=s,Object.assign(this,W,s),this.smartphone=W.smartphone,s.smartphone&&Object.assign(this.smartphone,s.smartphone),this.tablet=W.tablet,s.tablet&&Object.assign(this.tablet,s.tablet),!this.smooth&&this.direction=="horizontal"&&console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible"),!this.tablet.smooth&&this.tablet.direction=="horizontal"&&console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible (tablet)"),!this.smartphone.smooth&&this.smartphone.direction=="horizontal"&&console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible (smartphone)"),this.init()}return K(n,[{key:"init",value:function(){if(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,this.smooth&&!this.options.isMobile||this.tablet.smooth&&this.options.isTablet||this.smartphone.smooth&&this.options.isMobile&&!this.options.isTablet?this.scroll=new Je(this.options):this.scroll=new Oe(this.options),this.scroll.init(),window.location.hash){var t=window.location.hash.slice(1,window.location.hash.length),e=document.getElementById(t);e&&this.scroll.scrollTo(e)}}},{key:"update",value:function(){this.scroll.update()}},{key:"start",value:function(){this.scroll.startScroll()}},{key:"stop",value:function(){this.scroll.stopScroll()}},{key:"scrollTo",value:function(t,e){this.scroll.scrollTo(t,e)}},{key:"setScroll",value:function(t,e){this.scroll.setScroll(t,e)}},{key:"on",value:function(t,e){this.scroll.setEvents(t,e)}},{key:"off",value:function(t,e){this.scroll.unsetEvents(t,e)}},{key:"destroy",value:function(){this.scroll.destroy()}}]),n}();var Wt=Qe;var at=class extends F{constructor(n){super(n)}init(){this.scroll=new Wt({el:this.el,smooth:!0}),this.scroll.on("call",(n,s,t,e)=>{this.call(n[0],{way:s,obj:t},n[1],n[2])}),this.scroll.on("scroll",n=>{})}toggleLazy(n){let s=this.getData("lazy",n.obj.el);s.length&&(n.obj.el.tagName==="IMG"?n.obj.el.src=s:n.obj.el.style.backgroundImage=`url('${s}')`,this.setData("lazy","",n.obj.el))}destroy(){this.scroll.destroy()}};var zt=te(Yt());function Nt(){(0,zt.default)()}var z=document.documentElement,pi=document.body,mi=z.hasAttribute("data-debug");var Ut=new bt({modules:lt});window.onload=n=>{let s=document.getElementById("main-css");s?s.isLoaded?Vt():s.addEventListener("load",t=>{Vt()}):console.warn('The "main-css" stylesheet not found')};function Vt(){Nt(),Ut.init(Ut),z.classList.add("is-loaded"),z.classList.add("is-ready"),z.classList.remove("is-loading")}})(); +(()=>{var te=Object.create;var H=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var ie=Object.getOwnPropertyNames,dt=Object.getOwnPropertySymbols,ne=Object.getPrototypeOf,vt=Object.prototype.hasOwnProperty,se=Object.prototype.propertyIsEnumerable;var pt=(n,s,t)=>s in n?H(n,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[s]=t,mt=(n,s)=>{for(var t in s||(s={}))vt.call(s,t)&&pt(n,t,s[t]);if(dt)for(var t of dt(s))se.call(s,t)&&pt(n,t,s[t]);return n};var yt=n=>H(n,"__esModule",{value:!0});var re=(n,s)=>()=>(s||n((s={exports:{}}).exports,s),s.exports),oe=(n,s)=>{yt(n);for(var t in s)H(n,t,{get:s[t],enumerable:!0})},ae=(n,s,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of ie(s))!vt.call(n,i)&&i!=="default"&&H(n,i,{get:()=>s[i],enumerable:!(t=ee(s,i))||t.enumerable});return n},le=n=>ae(yt(H(n!=null?te(ne(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var gt=(n,s,t)=>new Promise((i,e)=>{var r=l=>{try{a(t.next(l))}catch(c){e(c)}},o=l=>{try{a(t.throw(l))}catch(c){e(c)}},a=l=>l.done?i(l.value):Promise.resolve(l.value).then(r,o);a((t=t.apply(n,s)).next())});var Kt=re((Xt,Z)=>{(function(n,s){typeof define=="function"&&define.amd?define([],function(){return n.svg4everybody=s()}):typeof Z=="object"&&Z.exports?Z.exports=s():n.svg4everybody=s()})(Xt,function(){function n(e,r,o){if(o){var a=document.createDocumentFragment(),l=!r.hasAttribute("viewBox")&&o.getAttribute("viewBox");l&&r.setAttribute("viewBox",l);for(var c=o.cloneNode(!0);c.childNodes.length;)a.appendChild(c.firstChild);e.appendChild(a)}}function s(e){e.onreadystatechange=function(){if(e.readyState===4){var r=e._cachedDocument;r||(r=e._cachedDocument=document.implementation.createHTMLDocument(""),r.body.innerHTML=e.responseText,e._cachedTarget={}),e._embeds.splice(0).map(function(o){var a=e._cachedTarget[o.id];a||(a=e._cachedTarget[o.id]=r.getElementById(o.id)),n(o.parent,o.svg,a)})}},e.onreadystatechange()}function t(e){function r(){for(var A=0;A0)&&m(r,67)}var o,a=Object(e),l=/\bTrident\/[567]\b|\bMSIE (?:9|10)\.0\b/,c=/\bAppleWebKit\/(\d+)\b/,f=/\bEdge\/12\.(\d+)\b/,u=/\bEdge\/.(\d+)\b/,v=window.top!==window.self;o="polyfill"in a?a.polyfill:l.test(navigator.userAgent)||(navigator.userAgent.match(f)||[])[1]<10547||(navigator.userAgent.match(c)||[])[1]<537||u.test(navigator.userAgent)&&v;var h={},m=window.requestAnimationFrame||setTimeout,C=document.getElementsByTagName("use"),D=0;o&&r()}function i(e){for(var r=e;r.nodeName.toLowerCase()!=="svg"&&(r=r.parentNode););return r}return t})});function V(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?V=function(s){return typeof s}:V=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},V(n)}function bt(n,s){if(!(n instanceof s))throw new TypeError("Cannot call a class as a function")}function wt(n,s){for(var t=0;tn.length)&&(s=n.length);for(var t=0,i=new Array(s);tet,Scroll:()=>at});function ye(n,s){if(!(n instanceof s))throw new TypeError("Cannot call a class as a function")}function At(n,s){for(var t=0;tn.length)&&(s=n.length);for(var t=0,i=new Array(s);t-1||(this.reset(),this.getStateOptions())}},{key:"reset",value:function(){this.isLoading&&(this.controller.abort(),this.isLoading=!1,this.controller=new AbortController),window.clearTimeout(this.enterTimeout),this.isInserted&&this.removeContainer(),this.classContainer=this.html,Object.assign(this,this.defaults,this.options)}},{key:"getClickOptions",value:function(t){this.transition=t.getAttribute("data-"+this.name),this.isUrl=t.getAttribute("data-"+this.name+"-url");var i=t.getAttribute("href"),e=t.getAttribute("target");if(e=="_blank"){window.open(i,"_blank");return}if(this.transition=="false"){window.location=i;return}this.setOptions(i,!0)}},{key:"getStateOptions",value:function(){this.transitionsHistory?this.transition=history.state:this.transition=!1;var t=window.location.href;this.setOptions(t)}},{key:"goTo",value:function(t,i,e){this.reset(),this.transition=i,this.isUrl=e,this.setOptions(t,!0)}},{key:"setOptions",value:function(t,i){var e="["+this.container+"]",r;this.transition&&this.transition!="true"&&(this.transitionContainer="["+this.container+'="'+this.transition+'"]',this.loadingClass=this.transitions[this.transition].loadingClass||this.loadingClass,this.loadedClass=this.transitions[this.transition].loadedClass||this.loadedClass,this.readyClass=this.transitions[this.transition].readyClass||this.readyClass,this.transitionsPrefix=this.transitions[this.transition].transitionsPrefix||this.transitionsPrefix,this.enterDelay=this.transitions[this.transition].enterDelay||this.enterDelay,this.exitDelay=this.transitions[this.transition].exitDelay||this.exitDelay,this.loadedDelay=this.transitions[this.transition].loadedDelay||this.loadedDelay,r=document.querySelector(this.transitionContainer)),r?(e=this.transitionContainer,this.oldContainer=r,this.classContainer=this.oldContainer.parentNode,this.subContainer||history.replaceState(this.transition,null,this.href),this.subContainer=!0):(this.oldContainer=document.querySelector(e),this.subContainer&&history.replaceState(this.prevTransition,null,this.href),this.subContainer=!1),this.href=t,this.parentContainer=this.oldContainer.parentNode,this.isUrl===""||this.isUrl!=null&&this.isUrl!="false"&&this.isUrl!=!1?history.pushState(this.transition,null,t):(this.oldContainer.classList.add("is-old"),this.setLoading(),this.startEnterDelay(),this.loadHref(t,e,i))}},{key:"setLoading",value:function(){this.classContainer.classList.remove(this.loadedClass,this.readyClass),this.classContainer.classList.add(this.loadingClass),this.classContainer.classList.remove(this.transitionsPrefix+this.prevTransition),this.transition&&this.classContainer.classList.add(this.transitionsPrefix+this.transition),this.subContainer||(this.prevTransition=this.transition);var t=new Event(this.namespace+"loading");window.dispatchEvent(t)}},{key:"startEnterDelay",value:function(){var t=this;this.enterTimeout=window.setTimeout(function(){t.isEntered=!0,t.isLoaded&&t.transitionContainers()},this.enterDelay)}},{key:"loadHref",value:function(t,i,e){var r=this;this.isLoading=!0;var o=this.controller.signal;fetch(t,{signal:o}).then(function(a){return a.text()}).then(function(a){e&&history.pushState(r.transition,null,t);var l=new DOMParser;r.data=l.parseFromString(a,"text/html"),r.newContainer=r.data.querySelector(i),r.newContainer.classList.add("is-new"),r.parentNewContainer=r.newContainer.parentNode,r.hideContainer(),r.parentContainer.insertBefore(r.newContainer,r.oldContainer),r.isInserted=!0,r.setSvgs(),r.isLoaded=!0,r.isEntered&&r.transitionContainers(),r.loadEls(r.newContainer),r.isLoading=!1}).catch(function(a){window.location=t})}},{key:"transitionContainers",value:function(){var t=this;this.setAttributes(),this.showContainer(),this.setLoaded(),setTimeout(function(){t.removeContainer(),t.setReady()},this.exitDelay)}},{key:"setSvgs",value:function(){if(this.isChrome){var t=this.newContainer.querySelectorAll("use");t.length&&t.forEach(function(i){var e=i.getAttribute("xlink:href");if(e)i.parentNode.innerHTML='';else{var r=i.getAttribute("href");r&&(i.parentNode.innerHTML='')}})}}},{key:"setAttributes",value:function(){var t=this,i=this.data.getElementsByTagName("title")[0],e=this.data.head.querySelector('meta[name="description"]'),r=document.head.querySelector('meta[name="description"]'),o,a;this.subContainer?(a=this.parentNewContainer,o=document.querySelector(this.transitionContainer).parentNode):(a=this.data.querySelector("html"),o=document.querySelector("html"));var l=Object.assign({},a.dataset);i&&(document.title=i.innerText),r&&e&&r.setAttribute("content",e.getAttribute("content")),l&&Object.entries(l).forEach(function(c){var f=be(c,2),u=f[0],v=f[1];o.setAttribute("data-"+t.toDash(u),v)})}},{key:"toDash",value:function(t){return t.split(/(?=[A-Z])/).join("-").toLowerCase()}},{key:"hideContainer",value:function(){this.newContainer.style.visibility="hidden",this.newContainer.style.height=0,this.newContainer.style.overflow="hidden"}},{key:"showContainer",value:function(){this.newContainer.style.visibility="",this.newContainer.style.height="",this.newContainer.style.overflow=""}},{key:"loadEls",value:function(t){var i=this,e=[];this.loadAttributes.forEach(function(r){var o="data-"+i.name+"-"+r,a=t.querySelectorAll("["+o+"]");a.length&&a.forEach(function(l){var c=l.getAttribute(o);if(l.setAttribute(r,c),r=="src"||r=="srcset"){var f=new Promise(function(u){l.onload=function(){return u(l)}});e.push(f)}})}),Promise.all(e).then(function(r){var o=new Event(i.namespace+"images");window.dispatchEvent(o)})}},{key:"setLoaded",value:function(){var t=this;this.classContainer.classList.remove(this.loadingClass),setTimeout(function(){t.classContainer.classList.add(t.loadedClass)},this.loadedDelay);var i=new Event(this.namespace+"loaded");window.dispatchEvent(i)}},{key:"removeContainer",value:function(){this.parentContainer.removeChild(this.oldContainer),this.newContainer.classList.remove("is-new"),this.isInserted=!1}},{key:"setReady",value:function(){this.classContainer.classList.add(this.readyClass);var t=new Event(this.namespace+"ready");window.dispatchEvent(t)}},{key:"on",value:function(t,i){var e=this;window.addEventListener(this.namespace+t,function(){switch(t){case"loading":return i(e.transition,e.oldContainer);case"loaded":return i(e.transition,e.oldContainer,e.newContainer);case"ready":return i(e.transition,e.newContainer);default:return i()}},!1)}}]),n}(),xt=Te;var et=class extends F{constructor(n){super(n)}init(){new xt({enterDelay:0,transitions:{customTransition:{}}}).on("loaded",(s,t,i)=>{this.call("destroy",t,"app"),this.call("update",i,"app")})}};function _t(n,s){for(Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(t){for(var i=(this.document||this.ownerDocument).querySelectorAll(t),e=i.length;--e>=0&&i.item(e)!==this;);return e>-1});n&&n!==document;n=n.parentNode)if(n.matches(s))return n;return null}var Ot=[];function Ae(n,s={}){return new Promise((t,i)=>{let e=new Image;s.crossOrigin&&(e.crossOrigin=s.crossOrigin);let r=()=>{t(mt({element:e},Ce(e)))};e.decode?(e.src=n,e.decode().then(r).catch(o=>{i(o)})):(e.onload=r,e.onerror=o=>{i(o)},e.src=n)})}function Ce(n){return{url:n.src,width:n.naturalWidth,height:n.naturalHeight,ratio:n.naturalWidth/n.naturalHeight}}function Dt(n,s,t=()=>{}){return gt(this,null,function*(){let i=s||n.dataset.src,e=Ot.find(r=>r.url===i);if(!e){if(e=yield Ae(i),!e.url)return;Ot.push(e)}n.src!==i&&(n.tagName=="IMG"?n.src=e.url:n.style.backgroundImage=`url(${e.url})`,requestAnimationFrame(()=>{let r=_t(n,".c-lazy");r&&(r.classList.add("-lazy-loaded"),r.style.backgroundImage=""),n.classList.add("-lazy-loaded"),t==null||t()}))})}function X(n,s){if(!(n instanceof s))throw new TypeError("Cannot call a class as a function")}function Lt(n,s){for(var t=0;tn.length)&&(s=n.length);for(var t=0,i=new Array(s);t0&&arguments[0]!==void 0?arguments[0]:{};X(this,n),Object.assign(this,W,s),this.smartphone=W.smartphone,s.smartphone&&Object.assign(this.smartphone,s.smartphone),this.tablet=W.tablet,s.tablet&&Object.assign(this.tablet,s.tablet),this.namespace="locomotive",this.html=document.documentElement,this.windowHeight=window.innerHeight,this.windowWidth=window.innerWidth,this.windowMiddle={x:this.windowWidth/2,y:this.windowHeight/2},this.els={},this.currentElements={},this.listeners={},this.hasScrollTicking=!1,this.hasCallEventSet=!1,this.checkScroll=this.checkScroll.bind(this),this.checkResize=this.checkResize.bind(this),this.checkEvent=this.checkEvent.bind(this),this.instance={scroll:{x:0,y:0},limit:{x:this.html.offsetWidth,y:this.html.offsetHeight},currentElements:this.currentElements},this.isMobile?this.isTablet?this.context="tablet":this.context="smartphone":this.context="desktop",this.isMobile&&(this.direction=this[this.context].direction),this.direction==="horizontal"?this.directionAxis="x":this.directionAxis="y",this.getDirection&&(this.instance.direction=null),this.getDirection&&(this.instance.speed=0),this.html.classList.add(this.initClass),window.addEventListener("resize",this.checkResize,!1)}return K(n,[{key:"init",value:function(){this.initEvents()}},{key:"checkScroll",value:function(){this.dispatchScroll()}},{key:"checkResize",value:function(){var t=this;this.resizeTick||(this.resizeTick=!0,requestAnimationFrame(function(){t.resize(),t.resizeTick=!1}))}},{key:"resize",value:function(){}},{key:"checkContext",value:function(){if(!!this.reloadOnContextChange){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;var t=this.context;if(this.isMobile?this.isTablet?this.context="tablet":this.context="smartphone":this.context="desktop",t!=this.context){var i=t=="desktop"?this.smooth:this[t].smooth,e=this.context=="desktop"?this.smooth:this[this.context].smooth;i!=e&&window.location.reload()}}}},{key:"initEvents",value:function(){var t=this;this.scrollToEls=this.el.querySelectorAll("[data-".concat(this.name,"-to]")),this.setScrollTo=this.setScrollTo.bind(this),this.scrollToEls.forEach(function(i){i.addEventListener("click",t.setScrollTo,!1)})}},{key:"setScrollTo",value:function(t){t.preventDefault(),this.scrollTo(t.currentTarget.getAttribute("data-".concat(this.name,"-href"))||t.currentTarget.getAttribute("href"),{offset:t.currentTarget.getAttribute("data-".concat(this.name,"-offset"))})}},{key:"addElements",value:function(){}},{key:"detectElements",value:function(t){var i=this,e=this.instance.scroll.y,r=e+this.windowHeight,o=this.instance.scroll.x,a=o+this.windowWidth;Object.entries(this.els).forEach(function(l){var c=R(l,2),f=c[0],u=c[1];if(u&&(!u.inView||t)&&(i.direction==="horizontal"?a>=u.left&&o=u.top&&eu.right)&&i.setOutOfView(u,f)}else{var h=u.bottom-u.top;u.progress=(i.instance.scroll.y-(u.top-i.windowHeight))/(h+i.windowHeight),(ru.bottom)&&i.setOutOfView(u,f)}}),this.hasScrollTicking=!1}},{key:"setInView",value:function(t,i){this.els[i].inView=!0,t.el.classList.add(t.class),this.currentElements[i]=t,t.call&&this.hasCallEventSet&&(this.dispatchCall(t,"enter"),t.repeat||(this.els[i].call=!1))}},{key:"setOutOfView",value:function(t,i){var e=this;this.els[i].inView=!1,Object.keys(this.currentElements).forEach(function(r){r===i&&delete e.currentElements[r]}),t.call&&this.hasCallEventSet&&this.dispatchCall(t,"exit"),t.repeat&&t.el.classList.remove(t.class)}},{key:"dispatchCall",value:function(t,i){this.callWay=i,this.callValue=t.call.split(",").map(function(r){return r.trim()}),this.callObj=t,this.callValue.length==1&&(this.callValue=this.callValue[0]);var e=new Event(this.namespace+"call");this.el.dispatchEvent(e)}},{key:"dispatchScroll",value:function(){var t=new Event(this.namespace+"scroll");this.el.dispatchEvent(t)}},{key:"setEvents",value:function(t,i){this.listeners[t]||(this.listeners[t]=[]);var e=this.listeners[t];e.push(i),e.length===1&&this.el.addEventListener(this.namespace+t,this.checkEvent,!1),t==="call"&&(this.hasCallEventSet=!0,this.detectElements(!0))}},{key:"unsetEvents",value:function(t,i){if(!!this.listeners[t]){var e=this.listeners[t],r=e.indexOf(i);r<0||(e.splice(r,1),e.index===0&&this.el.removeEventListener(this.namespace+t,this.checkEvent,!1))}}},{key:"checkEvent",value:function(t){var i=this,e=t.type.replace(this.namespace,""),r=this.listeners[e];!r||r.length===0||r.forEach(function(o){switch(e){case"scroll":return o(i.instance);case"call":return o(i.callValue,i.callWay,i.callObj);default:return o()}})}},{key:"startScroll",value:function(){}},{key:"stopScroll",value:function(){}},{key:"setScroll",value:function(t,i){this.instance.scroll={x:0,y:0}}},{key:"destroy",value:function(){var t=this;window.removeEventListener("resize",this.checkResize,!1),Object.keys(this.listeners).forEach(function(i){t.el.removeEventListener(t.namespace+i,t.checkEvent,!1)}),this.listeners={},this.scrollToEls.forEach(function(i){i.removeEventListener("click",t.setScrollTo,!1)}),this.html.classList.remove(this.initClass)}}]),n}(),We=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Wt(n,s){return s={exports:{}},n(s,s.exports),s.exports}var Ht=Wt(function(n,s){(function(){function t(){var i=window,e=document;if("scrollBehavior"in e.documentElement.style&&i.__forceSmoothScrollPolyfill__!==!0)return;var r=i.HTMLElement||i.Element,o=468,a={scroll:i.scroll||i.scrollTo,scrollBy:i.scrollBy,elementScroll:r.prototype.scroll||u,scrollIntoView:r.prototype.scrollIntoView},l=i.performance&&i.performance.now?i.performance.now.bind(i.performance):Date.now;function c(d){var p=["MSIE ","Trident/","Edge/"];return new RegExp(p.join("|")).test(d)}var f=c(i.navigator.userAgent)?1:0;function u(d,p){this.scrollLeft=d,this.scrollTop=p}function v(d){return .5*(1-Math.cos(Math.PI*d))}function h(d){if(d===null||typeof d!="object"||d.behavior===void 0||d.behavior==="auto"||d.behavior==="instant")return!0;if(typeof d=="object"&&d.behavior==="smooth")return!1;throw new TypeError("behavior member of ScrollOptions "+d.behavior+" is not a valid value for enumeration ScrollBehavior.")}function m(d,p){if(p==="Y")return d.clientHeight+f1?1:g,b=v(g),y=d.startX+(d.x-d.startX)*b,T=d.startY+(d.y-d.startY)*b,d.method.call(d.scrollable,y,T),(y!==d.x||T!==d.y)&&i.requestAnimationFrame(k.bind(i,d))}function w(d,p,b){var y,T,g,S,B=l();d===e.body?(y=i,T=i.scrollX||i.pageXOffset,g=i.scrollY||i.pageYOffset,S=a.scroll):(y=d,T=d.scrollLeft,g=d.scrollTop,S=u),k({scrollable:y,method:S,startTime:B,startX:T,startY:g,x:p,y:b})}i.scroll=i.scrollTo=function(){if(arguments[0]!==void 0){if(h(arguments[0])===!0){a.scroll.call(i,arguments[0].left!==void 0?arguments[0].left:typeof arguments[0]!="object"?arguments[0]:i.scrollX||i.pageXOffset,arguments[0].top!==void 0?arguments[0].top:arguments[1]!==void 0?arguments[1]:i.scrollY||i.pageYOffset);return}w.call(i,e.body,arguments[0].left!==void 0?~~arguments[0].left:i.scrollX||i.pageXOffset,arguments[0].top!==void 0?~~arguments[0].top:i.scrollY||i.pageYOffset)}},i.scrollBy=function(){if(arguments[0]!==void 0){if(h(arguments[0])){a.scrollBy.call(i,arguments[0].left!==void 0?arguments[0].left:typeof arguments[0]!="object"?arguments[0]:0,arguments[0].top!==void 0?arguments[0].top:arguments[1]!==void 0?arguments[1]:0);return}w.call(i,e.body,~~arguments[0].left+(i.scrollX||i.pageXOffset),~~arguments[0].top+(i.scrollY||i.pageYOffset))}},r.prototype.scroll=r.prototype.scrollTo=function(){if(arguments[0]!==void 0){if(h(arguments[0])===!0){if(typeof arguments[0]=="number"&&arguments[1]===void 0)throw new SyntaxError("Value could not be converted");a.elementScroll.call(this,arguments[0].left!==void 0?~~arguments[0].left:typeof arguments[0]!="object"?~~arguments[0]:this.scrollLeft,arguments[0].top!==void 0?~~arguments[0].top:arguments[1]!==void 0?~~arguments[1]:this.scrollTop);return}var d=arguments[0].left,p=arguments[0].top;w.call(this,this,typeof d=="undefined"?this.scrollLeft:~~d,typeof p=="undefined"?this.scrollTop:~~p)}},r.prototype.scrollBy=function(){if(arguments[0]!==void 0){if(h(arguments[0])===!0){a.elementScroll.call(this,arguments[0].left!==void 0?~~arguments[0].left+this.scrollLeft:~~arguments[0]+this.scrollLeft,arguments[0].top!==void 0?~~arguments[0].top+this.scrollTop:~~arguments[1]+this.scrollTop);return}this.scroll({left:~~arguments[0].left+this.scrollLeft,top:~~arguments[0].top+this.scrollTop,behavior:arguments[0].behavior})}},r.prototype.scrollIntoView=function(){if(h(arguments[0])===!0){a.scrollIntoView.call(this,arguments[0]===void 0?!0:arguments[0]);return}var d=A(this),p=d.getBoundingClientRect(),b=this.getBoundingClientRect();d!==e.body?(w.call(this,d,d.scrollLeft+b.left-p.left,d.scrollTop+b.top-p.top),i.getComputedStyle(d).position!=="fixed"&&i.scrollBy({left:p.left,top:p.top,behavior:"smooth"})):i.scrollBy({left:b.left,top:b.top,behavior:"smooth"})}}n.exports={polyfill:t}})()}),wi=Ht.polyfill,He=function(n){It(t,n);var s=Bt(t);function t(){var i,e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return X(this,t),i=s.call(this,e),i.resetNativeScroll&&(history.scrollRestoration&&(history.scrollRestoration="manual"),window.scrollTo(0,0)),window.addEventListener("scroll",i.checkScroll,!1),window.smoothscrollPolyfill===void 0&&(window.smoothscrollPolyfill=Ht,window.smoothscrollPolyfill.polyfill()),i}return K(t,[{key:"init",value:function(){this.instance.scroll.y=window.pageYOffset,this.addElements(),this.detectElements(),I(L(t.prototype),"init",this).call(this)}},{key:"checkScroll",value:function(){var e=this;I(L(t.prototype),"checkScroll",this).call(this),this.getDirection&&this.addDirection(),this.getSpeed&&(this.addSpeed(),this.speedTs=Date.now()),this.instance.scroll.y=window.pageYOffset,Object.entries(this.els).length&&(this.hasScrollTicking||(requestAnimationFrame(function(){e.detectElements()}),this.hasScrollTicking=!0))}},{key:"addDirection",value:function(){window.pageYOffset>this.instance.scroll.y?this.instance.direction!=="down"&&(this.instance.direction="down"):window.pageYOffset1&&arguments[1]!==void 0?arguments[1]:{},o=parseInt(r.offset)||0,a=r.callback?r.callback:!1;if(typeof e=="string"){if(e==="top")e=this.html;else if(e==="bottom")e=this.html.offsetHeight-window.innerHeight;else if(e=document.querySelector(e),!e)return}else if(typeof e=="number")e=parseInt(e);else if(!(e&&e.tagName)){console.warn("`target` parameter is not valid");return}typeof e!="number"?o=e.getBoundingClientRect().top+o+this.instance.scroll.y:o=e+o;var l=function(){return parseInt(window.pageYOffset)===parseInt(o)};if(a)if(l()){a();return}else{var c=function f(){l()&&(window.removeEventListener("scroll",f),a())};window.addEventListener("scroll",c)}window.scrollTo({top:o,behavior:"smooth"})}},{key:"update",value:function(){this.addElements(),this.detectElements()}},{key:"destroy",value:function(){I(L(t.prototype),"destroy",this).call(this),window.removeEventListener("scroll",this.checkScroll,!1)}}]),t}(Rt);var zt=Object.getOwnPropertySymbols,ze=Object.prototype.hasOwnProperty,Ye=Object.prototype.propertyIsEnumerable;function Ne(n){if(n==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(n)}function Ue(){try{if(!Object.assign)return!1;var n=new String("abc");if(n[5]="de",Object.getOwnPropertyNames(n)[0]==="5")return!1;for(var s={},t=0;t<10;t++)s["_"+String.fromCharCode(t)]=t;var i=Object.getOwnPropertyNames(s).map(function(r){return s[r]});if(i.join("")!=="0123456789")return!1;var e={};return"abcdefghijklmnopqrst".split("").forEach(function(r){e[r]=r}),Object.keys(Object.assign({},e)).join("")==="abcdefghijklmnopqrst"}catch(r){return!1}}var Ve=Ue()?Object.assign:function(n,s){for(var t,i=Ne(n),e,r=1;r=c;1<=c?l++:l--)f.push(null);return f}.call(this),this.lastDownDeltas=function(){var l,c,f;for(f=[],l=1,c=this.stability*2;1<=c?l<=c:l>=c;1<=c?l++:l--)f.push(null);return f}.call(this),this.deltasTimestamp=function(){var l,c,f;for(f=[],l=1,c=this.stability*2;1<=c?l<=c:l>=c;1<=c?l++:l--)f.push(null);return f}.call(this)}return i.prototype.check=function(e){var r;return e=e.originalEvent||e,e.wheelDelta!=null?r=e.wheelDelta:e.deltaY!=null?r=e.deltaY*-40:(e.detail!=null||e.detail===0)&&(r=e.detail*-40),this.deltasTimestamp.push(Date.now()),this.deltasTimestamp.shift(),r>0?(this.lastUpDeltas.push(r),this.lastUpDeltas.shift(),this.isInertia(1)):(this.lastDownDeltas.push(r),this.lastDownDeltas.shift(),this.isInertia(-1))},i.prototype.isInertia=function(e){var r,o,a,l,c,f,u;return r=e===-1?this.lastDownDeltas:this.lastUpDeltas,r[0]===null?e:this.deltasTimestamp[this.stability*2-2]+this.delay>Date.now()&&r[0]===r[this.stability*2-1]?!1:(a=r.slice(0,this.stability),o=r.slice(this.stability,this.stability*2),u=a.reduce(function(v,h){return v+h}),c=o.reduce(function(v,h){return v+h}),f=u/a.length,l=c/o.length,Math.abs(f)1,hasPointer:!!window.navigator.msPointerEnabled,hasKeyDown:"onkeydown"in document,isFirefox:navigator.userAgent.indexOf("Firefox")>-1}}(),Xe=Object.prototype.toString,Ke=Object.prototype.hasOwnProperty,Ge=function(n){if(!n)return console.warn("bindAll requires at least one argument.");var s=Array.prototype.slice.call(arguments,1);if(s.length===0)for(var t in n)Ke.call(n,t)&&typeof n[t]=="function"&&Xe.call(n[t])=="[object Function]"&&s.push(t);for(var i=0;i0?t=o:s=o;while(Math.abs(r)>ei&&++a=ti?ri(l,h,s,i):m===0?h:si(l,c,c+G,s,i)}return function(c){return c===0?0:c===1?1:$(a(c),t,e)}},P={LEFT:37,UP:38,RIGHT:39,DOWN:40,SPACE:32,TAB:9,PAGEUP:33,PAGEDOWN:34,HOME:36,END:35},li=function(n){It(t,n);var s=Bt(t);function t(){var i,e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return X(this,t),history.scrollRestoration&&(history.scrollRestoration="manual"),window.scrollTo(0,0),i=s.call(this,e),i.inertia&&(i.lerp=i.inertia*.1),i.isScrolling=!1,i.isDraggingScrollbar=!1,i.isTicking=!1,i.hasScrollTicking=!1,i.parallaxElements={},i.stop=!1,i.scrollbarContainer=e.scrollbarContainer,i.checkKey=i.checkKey.bind(Pt(i)),window.addEventListener("keydown",i.checkKey,!1),i}return K(t,[{key:"init",value:function(){var e=this;this.html.classList.add(this.smoothClass),this.html.setAttribute("data-".concat(this.name,"-direction"),this.direction),this.instance=it({delta:{x:this.initPosition.x,y:this.initPosition.y},scroll:{x:this.initPosition.x,y:this.initPosition.y}},this.instance),this.vs=new Je({el:this.scrollFromAnywhere?document:this.el,mouseMultiplier:navigator.platform.indexOf("Win")>-1?1:.4,firefoxMultiplier:this.firefoxMultiplier,touchMultiplier:this.touchMultiplier,useKeyboard:!1,passive:!0}),this.vs.on(function(r){e.stop||e.isDraggingScrollbar||requestAnimationFrame(function(){e.updateDelta(r),e.isScrolling||e.startScrolling()})}),this.setScrollLimit(),this.initScrollBar(),this.addSections(),this.addElements(),this.checkScroll(!0),this.transformElements(!0,!0),I(L(t.prototype),"init",this).call(this)}},{key:"setScrollLimit",value:function(){if(this.instance.limit.y=this.el.offsetHeight-this.windowHeight,this.direction==="horizontal"){for(var e=0,r=this.el.children,o=0;othis.instance.limit[this.directionAxis]&&(this.instance.delta[this.directionAxis]=this.instance.limit[this.directionAxis]),this.stopScrolling(),this.isScrolling=!0,this.checkScroll(),this.html.classList.add(this.scrollingClass)}},{key:"checkScroll",value:function(){var e=this,r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(r||this.isScrolling||this.isDraggingScrollbar){this.hasScrollTicking||(this.checkScrollRaf=requestAnimationFrame(function(){return e.checkScroll()}),this.hasScrollTicking=!0),this.updateScroll();var o=Math.abs(this.instance.delta[this.directionAxis]-this.instance.scroll[this.directionAxis]),a=Date.now()-this.startScrollTs;if(!this.animatingScroll&&a>100&&(o<.5&&this.instance.delta[this.directionAxis]!=0||o<.5&&this.instance.delta[this.directionAxis]==0)&&this.stopScrolling(),Object.entries(this.sections).forEach(function(c){var f=R(c,2),u=f[0],v=f[1];v.persistent||e.instance.scroll[e.directionAxis]>v.offset[e.directionAxis]&&e.instance.scroll[e.directionAxis]this.instance.limit[this.directionAxis]&&(this.instance.delta[this.directionAxis]=this.instance.limit[this.directionAxis])}},{key:"updateScroll",value:function(e){this.isScrolling||this.isDraggingScrollbar?this.instance.scroll[this.directionAxis]=rt(this.instance.scroll[this.directionAxis],this.instance.delta[this.directionAxis],this.lerp):this.instance.scroll[this.directionAxis]>this.instance.limit[this.directionAxis]?this.setScroll(this.instance.scroll[this.directionAxis],this.instance.limit[this.directionAxis]):this.instance.scroll.y<0?this.setScroll(this.instance.scroll[this.directionAxis],0):this.setScroll(this.instance.scroll[this.directionAxis],this.instance.delta[this.directionAxis])}},{key:"addDirection",value:function(){this.instance.delta.y>this.instance.scroll.y?this.instance.direction!=="down"&&(this.instance.direction="down"):this.instance.delta.ythis.instance.scroll.x?this.instance.direction!=="right"&&(this.instance.direction="right"):this.instance.delta.x0&&a0&&o1&&arguments[1]!==void 0?arguments[1]:!1,a=this.instance.scroll.x+this.windowWidth,l=this.instance.scroll.y+this.windowHeight,c={x:this.instance.scroll.x+this.windowMiddle.x,y:this.instance.scroll.y+this.windowMiddle.y};Object.entries(this.parallaxElements).forEach(function(f){var u=R(f,2),v=u[0],h=u[1],m=!1;if(e&&(m=0),h.inView||o)switch(h.position){case"top":m=r.instance.scroll[r.directionAxis]*-h.speed;break;case"elementTop":m=(l-h.top)*-h.speed;break;case"bottom":m=(r.instance.limit[r.directionAxis]-l+r.windowHeight)*h.speed;break;case"left":m=r.instance.scroll[r.directionAxis]*-h.speed;break;case"elementLeft":m=(a-h.left)*-h.speed;break;case"right":m=(r.instance.limit[r.directionAxis]-a+r.windowHeight)*h.speed;break;default:m=(c[r.directionAxis]-h.middle[r.directionAxis])*-h.speed;break}h.sticky&&(h.inView?r.direction==="horizontal"?m=r.instance.scroll.x-h.left+window.innerWidth:m=r.instance.scroll.y-h.top+window.innerHeight:r.direction==="horizontal"?r.instance.scroll.xh.right&&r.instance.scroll.x>h.right+100?m=h.right-h.left+window.innerWidth:m=!1:r.instance.scroll.yh.bottom&&r.instance.scroll.y>h.bottom+100?m=h.bottom-h.top+window.innerHeight:m=!1),m!==!1&&(h.direction==="horizontal"||r.direction==="horizontal"&&h.direction!=="vertical"?r.transform(h.el,m,0,e?!1:h.delay):r.transform(h.el,0,m,e?!1:h.delay))})}},{key:"scrollTo",value:function(e){var r=this,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=parseInt(o.offset)||0,l=isNaN(parseInt(o.duration))?1e3:parseInt(o.duration),c=o.easing||[.25,0,.35,1],f=!!o.disableLerp,u=o.callback?o.callback:!1;if(c=ai.apply(void 0,Le(c)),typeof e=="string"){if(e==="top")e=0;else if(e==="bottom")e=this.instance.limit.y;else if(e==="left")e=0;else if(e==="right")e=this.instance.limit.x;else if(e=document.querySelector(e),!e)return}else if(typeof e=="number")e=parseInt(e);else if(!(e&&e.tagName)){console.warn("`target` parameter is not valid");return}if(typeof e!="number"){var v=ot(e).includes(this.el);if(!v)return;var h=e.getBoundingClientRect(),m=h.top,C=h.left,D=ot(e),A=D.find(function(g){return Object.entries(r.sections).map(function(S){var B=R(S,2),J=B[0],U=B[1];return U}).find(function(S){return S.el==g})}),k=0;A?k=O(A)[this.directionAxis]:k=-this.instance.scroll[this.directionAxis],this.direction==="horizontal"?a=C+a-k:a=m+a-k}else a=e+a;var w=parseFloat(this.instance.delta[this.directionAxis]),d=Math.max(0,Math.min(a,this.instance.limit[this.directionAxis])),p=d-w,b=function(S){f?r.direction==="horizontal"?r.setScroll(w+p*S,r.instance.delta.y):r.setScroll(r.instance.delta.x,w+p*S):r.instance.delta[r.directionAxis]=w+p*S};this.animatingScroll=!0,this.stopScrolling(),this.startScrolling();var y=Date.now(),T=function g(){var S=(Date.now()-y)/l;S>1?(b(1),r.animatingScroll=!1,l==0&&r.update(),u&&u()):(r.scrollToRaf=requestAnimationFrame(g),b(c(S)))};T()}},{key:"update",value:function(){this.setScrollLimit(),this.addSections(),this.addElements(),this.detectElements(),this.updateScroll(),this.transformElements(!0),this.reinitScrollBar(),this.checkScroll(!0)}},{key:"startScroll",value:function(){this.stop=!1}},{key:"stopScroll",value:function(){this.stop=!0}},{key:"setScroll",value:function(e,r){this.instance=it(it({},this.instance),{},{scroll:{x:e,y:r},delta:{x:e,y:r},speed:0})}},{key:"destroy",value:function(){I(L(t.prototype),"destroy",this).call(this),this.stopScrolling(),this.html.classList.remove(this.smoothClass),this.vs.destroy(),this.destroyScrollBar(),window.removeEventListener("keydown",this.checkKey,!1)}}]),t}(Rt),ci=function(){function n(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};X(this,n),this.options=s,Object.assign(this,W,s),this.smartphone=W.smartphone,s.smartphone&&Object.assign(this.smartphone,s.smartphone),this.tablet=W.tablet,s.tablet&&Object.assign(this.tablet,s.tablet),!this.smooth&&this.direction=="horizontal"&&console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible"),!this.tablet.smooth&&this.tablet.direction=="horizontal"&&console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible (tablet)"),!this.smartphone.smooth&&this.smartphone.direction=="horizontal"&&console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible (smartphone)"),this.init()}return K(n,[{key:"init",value:function(){if(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,this.smooth&&!this.options.isMobile||this.tablet.smooth&&this.options.isTablet||this.smartphone.smooth&&this.options.isMobile&&!this.options.isTablet?this.scroll=new li(this.options):this.scroll=new He(this.options),this.scroll.init(),window.location.hash){var t=window.location.hash.slice(1,window.location.hash.length),i=document.getElementById(t);i&&this.scroll.scrollTo(i)}}},{key:"update",value:function(){this.scroll.update()}},{key:"start",value:function(){this.scroll.startScroll()}},{key:"stop",value:function(){this.scroll.stopScroll()}},{key:"scrollTo",value:function(t,i){this.scroll.scrollTo(t,i)}},{key:"setScroll",value:function(t,i){this.scroll.setScroll(t,i)}},{key:"on",value:function(t,i){this.scroll.setEvents(t,i)}},{key:"off",value:function(t,i){this.scroll.unsetEvents(t,i)}},{key:"destroy",value:function(){this.scroll.destroy()}}]),n}();var Ft=ci;var at=class extends F{constructor(n){super(n)}init(){this.scroll=new Ft({el:this.el,smooth:!0}),this.scroll.on("call",(n,s,t,i)=>{this.call(n[0],{way:s,obj:t},n[1],n[2])}),this.scroll.on("scroll",n=>{})}lazyLoad(n){Dt(n.obj.target,null,()=>{})}destroy(){this.scroll.destroy()}};var Gt=le(Kt());function $t(){(0,Gt.default)()}var N=document.documentElement,Oi=document.body,Di=N.hasAttribute("data-debug");var Zt=new Tt({modules:lt});window.onload=n=>{let s=document.getElementById("main-css");s?s.isLoaded?Jt():s.addEventListener("load",t=>{Jt()}):console.warn('The "main-css" stylesheet not found')};function Jt(){$t(),Zt.init(Zt),N.classList.add("is-loaded"),N.classList.add("is-ready"),N.classList.remove("is-loading")}})(); /* object-assign (c) Sindre Sorhus diff --git a/www/assets/scripts/app.js.map b/www/assets/scripts/app.js.map index b28b8d42..5c893484 100644 --- a/www/assets/scripts/app.js.map +++ b/www/assets/scripts/app.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../../node_modules/svg4everybody/dist/svg4everybody.js", "../../../node_modules/modujs/dist/main.esm.js", "../../../assets/scripts/modules.js", "../../../node_modules/modularload/dist/main.esm.js", "../../../assets/scripts/modules/Load.js", "../../../node_modules/locomotive-scroll/dist/locomotive-scroll.esm.js", "../../../assets/scripts/modules/Scroll.js", "../../../assets/scripts/globals.js", "../../../assets/scripts/utils/environment.js", "../../../assets/scripts/app.js"], - "sourcesContent": ["!function(root, factory) {\n \"function\" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function() {\n return root.svg4everybody = factory();\n }) : \"object\" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */\n function embed(parent, svg, target) {\n // if the target exists\n if (target) {\n // create a document fragment to hold the contents of the target\n var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute(\"viewBox\") && target.getAttribute(\"viewBox\");\n // conditionally set the viewBox on the svg\n viewBox && svg.setAttribute(\"viewBox\", viewBox);\n // copy the contents of the clone into the fragment\n for (// clone the target\n var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n fragment.appendChild(clone.firstChild);\n }\n // append the fragment into the svg\n parent.appendChild(fragment);\n }\n }\n function loadreadystatechange(xhr) {\n // listen to changes in the request\n xhr.onreadystatechange = function() {\n // if the request is ready\n if (4 === xhr.readyState) {\n // get the cached html document\n var cachedDocument = xhr._cachedDocument;\n // ensure the cached html document based on the xhr response\n cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(\"\"), \n cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n xhr._embeds.splice(0).map(function(item) {\n // get the cached target\n var target = xhr._cachedTarget[item.id];\n // ensure the cached target\n target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n // embed the target into the svg\n embed(item.parent, item.svg, target);\n });\n }\n }, // test the ready state change immediately\n xhr.onreadystatechange();\n }\n function svg4everybody(rawopts) {\n function oninterval() {\n // while the index exists in the live collection\n for (// get the cached index\n var index = 0; index < uses.length; ) {\n // get the current \n var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute(\"xlink:href\") || use.getAttribute(\"href\");\n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n svg && src) {\n if (polyfill) {\n if (!opts.validate || opts.validate(src, svg, use)) {\n // remove the element\n parent.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n parent: parent,\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(parent, svg, document.getElementById(id));\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index, ++numberOfSvgUseElementsToBypass;\n }\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index;\n }\n }\n // continue the interval\n (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\"), numberOfSvgUseElementsToBypass = 0;\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n function getSVGAncestor(node) {\n for (var svg = node; \"svg\" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n return svg;\n }\n return svg4everybody;\n});", "function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\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 _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 _default = /*#__PURE__*/function () {\n function _default(options) {\n _classCallCheck(this, _default);\n\n this.mAttr = 'data-' + options.dataName;\n this.mCaptureEvents = ['mouseenter', 'mouseleave'];\n this.el = options.el;\n }\n\n _createClass(_default, [{\n key: \"mInit\",\n value: function mInit(modules) {\n var _this = this;\n\n this.modules = modules;\n this.mCheckEventTarget = this.mCheckEventTarget.bind(this);\n\n if (this.events) {\n Object.keys(this.events).forEach(function (event) {\n return _this.mAddEvent(event);\n });\n }\n }\n }, {\n key: \"mUpdate\",\n value: function mUpdate(modules) {\n this.modules = modules;\n }\n }, {\n key: \"mDestroy\",\n value: function mDestroy() {\n var _this2 = this;\n\n if (this.events) {\n Object.keys(this.events).forEach(function (event) {\n return _this2.mRemoveEvent(event);\n });\n }\n }\n }, {\n key: \"mAddEvent\",\n value: function mAddEvent(event) {\n var capture = this.mCaptureEvents.includes(event) ? true : false;\n this.el.addEventListener(event, this.mCheckEventTarget, capture);\n }\n }, {\n key: \"mRemoveEvent\",\n value: function mRemoveEvent(event) {\n var capture = this.mCaptureEvents.includes(event) ? true : false;\n this.el.removeEventListener(event, this.mCheckEventTarget, capture);\n }\n }, {\n key: \"mCheckEventTarget\",\n value: function mCheckEventTarget(e) {\n var event = this.events[e.type];\n\n if (typeof event === \"string\") {\n this[event](e);\n } else {\n var data = '[' + this.mAttr + ']';\n var target = e.target;\n\n if (this.mCaptureEvents.includes(e.type)) {\n if (target.matches(data)) {\n this.mCallEventMethod(e, event, target);\n }\n } else {\n while (target && target !== document) {\n if (target.matches(data)) {\n if (this.mCallEventMethod(e, event, target) != 'undefined') {\n break;\n }\n }\n\n target = target.parentNode;\n }\n }\n }\n }\n }, {\n key: \"mCallEventMethod\",\n value: function mCallEventMethod(e, event, target) {\n var name = target.getAttribute(this.mAttr);\n\n if (event.hasOwnProperty(name)) {\n var method = event[name];\n\n if (!e.hasOwnProperty('currentTarget')) {\n Object.defineProperty(e, 'currentTarget', {\n value: target\n });\n }\n\n if (!e.hasOwnProperty('curTarget')) {\n Object.defineProperty(e, 'curTarget', {\n value: target\n }); // For IE 11\n }\n\n this[method](e);\n }\n }\n }, {\n key: \"$\",\n value: function $(query, context) {\n var classIndex = query.indexOf('.');\n var idIndex = query.indexOf('#');\n var attrIndex = query.indexOf('[');\n var indexes = [classIndex, idIndex, attrIndex].filter(function (index) {\n return index != -1;\n });\n var index = false;\n var name = query;\n var more = '';\n var parent = this.el;\n\n if (indexes.length) {\n index = Math.min.apply(Math, _toConsumableArray(indexes));\n name = query.slice(0, index);\n more = query.slice(index);\n }\n\n if (_typeof(context) == 'object') {\n parent = context;\n }\n\n return parent.querySelectorAll('[' + this.mAttr + '=' + name + ']' + more);\n }\n }, {\n key: \"parent\",\n value: function parent(query, context) {\n var data = '[' + this.mAttr + '=' + query + ']';\n var parent = context.parentNode;\n\n while (parent && parent !== document) {\n if (parent.matches(data)) {\n return parent;\n }\n\n parent = parent.parentNode;\n }\n }\n }, {\n key: \"getData\",\n value: function getData(name, context) {\n var target = context || this.el;\n return target.getAttribute(this.mAttr + '-' + name);\n }\n }, {\n key: \"setData\",\n value: function setData(name, value, context) {\n var target = context || this.el;\n return target.setAttribute(this.mAttr + '-' + name, value);\n }\n }, {\n key: \"call\",\n value: function call(func, args, mod, id) {\n var _this3 = this;\n\n if (args && !mod) {\n mod = args;\n args = false;\n }\n\n if (this.modules[mod]) {\n if (id) {\n if (this.modules[mod][id]) {\n this.modules[mod][id][func](args);\n }\n } else {\n Object.keys(this.modules[mod]).forEach(function (id) {\n _this3.modules[mod][id][func](args);\n });\n }\n }\n }\n }, {\n key: \"on\",\n value: function on(e, mod, func, id) {\n var _this4 = this;\n\n if (this.modules[mod]) {\n if (id) {\n this.modules[mod][id].el.addEventListener(e, function (o) {\n return func(o);\n });\n } else {\n Object.keys(this.modules[mod]).forEach(function (i) {\n _this4.modules[mod][i].el.addEventListener(e, function (o) {\n return func(o);\n });\n });\n }\n }\n }\n }, {\n key: \"init\",\n value: function init() {}\n }, {\n key: \"destroy\",\n value: function destroy() {}\n }]);\n\n return _default;\n}();\n\nvar _default$1 = /*#__PURE__*/function () {\n function _default(options) {\n _classCallCheck(this, _default);\n\n this.app;\n this.modules = options.modules;\n this.currentModules = {};\n this.activeModules = {};\n this.newModules = {};\n this.moduleId = 0;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init(app, scope) {\n var _this = this;\n\n var container = scope || document;\n var elements = container.querySelectorAll('*');\n\n if (app && !this.app) {\n this.app = app;\n }\n\n this.activeModules['app'] = {\n 'app': this.app\n };\n elements.forEach(function (el) {\n Array.from(el.attributes).forEach(function (i) {\n if (i.name.startsWith('data-module')) {\n var moduleExists = false;\n var dataName = i.name.split('-').splice(2);\n\n var moduleName = _this.toCamel(dataName);\n\n if (_this.modules[moduleName]) {\n moduleExists = true;\n } else if (_this.modules[_this.toUpper(moduleName)]) {\n moduleName = _this.toUpper(moduleName);\n moduleExists = true;\n }\n\n if (moduleExists) {\n var options = {\n el: el,\n name: moduleName,\n dataName: dataName.join('-')\n };\n var module = new _this.modules[moduleName](options);\n var id = i.value;\n\n if (!id) {\n _this.moduleId++;\n id = 'm' + _this.moduleId;\n el.setAttribute(i.name, id);\n }\n\n _this.addActiveModule(moduleName, id, module);\n\n var moduleId = moduleName + '-' + id;\n\n if (scope) {\n _this.newModules[moduleId] = module;\n } else {\n _this.currentModules[moduleId] = module;\n }\n }\n }\n });\n });\n Object.entries(this.currentModules).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n id = _ref2[0],\n module = _ref2[1];\n\n if (scope) {\n var split = id.split('-');\n var moduleName = split.shift();\n var moduleId = split.pop();\n\n _this.addActiveModule(moduleName, moduleId, module);\n } else {\n _this.initModule(module);\n }\n });\n }\n }, {\n key: \"initModule\",\n value: function initModule(module) {\n module.mInit(this.activeModules);\n module.init();\n }\n }, {\n key: \"addActiveModule\",\n value: function addActiveModule(name, id, module) {\n if (this.activeModules[name]) {\n Object.assign(this.activeModules[name], _defineProperty({}, id, module));\n } else {\n this.activeModules[name] = _defineProperty({}, id, module);\n }\n }\n }, {\n key: \"update\",\n value: function update(scope) {\n var _this2 = this;\n\n this.init(this.app, scope);\n Object.entries(this.currentModules).forEach(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n id = _ref4[0],\n module = _ref4[1];\n\n module.mUpdate(_this2.activeModules);\n });\n Object.entries(this.newModules).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n id = _ref6[0],\n module = _ref6[1];\n\n _this2.initModule(module);\n });\n Object.assign(this.currentModules, this.newModules);\n }\n }, {\n key: \"destroy\",\n value: function destroy(scope) {\n if (scope) {\n this.destroyScope(scope);\n } else {\n this.destroyModules();\n }\n }\n }, {\n key: \"destroyScope\",\n value: function destroyScope(scope) {\n var _this3 = this;\n\n var elements = scope.querySelectorAll('*');\n elements.forEach(function (el) {\n Array.from(el.attributes).forEach(function (i) {\n if (i.name.startsWith('data-module')) {\n var id = i.value;\n var dataName = i.name.split('-').splice(2);\n var moduleName = _this3.toCamel(dataName) + '-' + id;\n var moduleExists = false;\n\n if (_this3.currentModules[moduleName]) {\n moduleExists = true;\n } else if (_this3.currentModules[_this3.toUpper(moduleName)]) {\n moduleName = _this3.toUpper(moduleName);\n moduleExists = true;\n }\n\n if (moduleExists) {\n _this3.destroyModule(_this3.currentModules[moduleName]);\n\n delete _this3.currentModules[moduleName];\n }\n }\n });\n });\n this.activeModules = {};\n this.newModules = {};\n }\n }, {\n key: \"destroyModules\",\n value: function destroyModules() {\n var _this4 = this;\n\n Object.entries(this.currentModules).forEach(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n id = _ref8[0],\n module = _ref8[1];\n\n _this4.destroyModule(module);\n });\n this.currentModules = [];\n }\n }, {\n key: \"destroyModule\",\n value: function destroyModule(module) {\n module.mDestroy();\n module.destroy();\n }\n }, {\n key: \"toCamel\",\n value: function toCamel(arr) {\n var _this5 = this;\n\n return arr.reduce(function (a, b) {\n return a + _this5.toUpper(b);\n });\n }\n }, {\n key: \"toUpper\",\n value: function toUpper(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n }]);\n\n return _default;\n}();\n\nexport default _default$1;\nexport { _default as module };\n", "export {default as Load} from './modules/Load';\nexport {default as Scroll} from './modules/Scroll';\n", "function _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 _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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 _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 _default = /*#__PURE__*/function () {\n function _default(options) {\n _classCallCheck(this, _default);\n\n this.defaults = {\n name: 'load',\n loadingClass: 'is-loading',\n loadedClass: 'is-loaded',\n readyClass: 'is-ready',\n transitionsPrefix: 'is-',\n transitionsHistory: true,\n enterDelay: 0,\n exitDelay: 0,\n loadedDelay: 0,\n isLoaded: false,\n isEntered: false,\n isUrl: false,\n transitionContainer: null,\n popstateIgnore: false\n };\n Object.assign(this, this.defaults, options);\n this.options = options;\n this.namespace = 'modular';\n this.html = document.documentElement;\n this.href = window.location.href;\n this.container = 'data-' + this.name + '-container';\n this.subContainer = false;\n this.prevTransition = null;\n this.loadAttributes = ['src', 'srcset', 'style', 'href'];\n this.isInserted = false;\n this.isLoading = false;\n this.enterTimeout = false;\n this.controller = new AbortController();\n this.classContainer = this.html;\n this.isChrome = navigator.userAgent.indexOf(\"Chrome\") != -1 ? true : false;\n this.init();\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n\n window.addEventListener('popstate', function (e) {\n return _this.checkState(e);\n }, false);\n this.html.addEventListener('click', function (e) {\n return _this.checkClick(e);\n }, false);\n this.loadEls(document);\n }\n }, {\n key: \"checkClick\",\n value: function checkClick(e) {\n if (!e.ctrlKey && !e.metaKey) {\n var target = e.target;\n\n while (target && target !== document) {\n if (target.matches('a') && target.getAttribute('download') == null) {\n var href = target.getAttribute('href');\n\n if (!href.startsWith('#') && !href.startsWith('mailto:') && !href.startsWith('tel:')) {\n e.preventDefault();\n this.reset();\n this.getClickOptions(target);\n }\n\n break;\n }\n\n target = target.parentNode;\n }\n }\n }\n }, {\n key: \"checkState\",\n value: function checkState() {\n if (typeof this.popstateIgnore === 'string' && window.location.href.indexOf(this.popstateIgnore) > -1) {\n return;\n }\n\n this.reset();\n this.getStateOptions();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.isLoading) {\n this.controller.abort();\n this.isLoading = false;\n this.controller = new AbortController();\n }\n\n window.clearTimeout(this.enterTimeout);\n\n if (this.isInserted) {\n this.removeContainer();\n }\n\n this.classContainer = this.html;\n Object.assign(this, this.defaults, this.options);\n }\n }, {\n key: \"getClickOptions\",\n value: function getClickOptions(link) {\n this.transition = link.getAttribute('data-' + this.name);\n this.isUrl = link.getAttribute('data-' + this.name + '-url');\n var href = link.getAttribute('href');\n var target = link.getAttribute('target');\n\n if (target == '_blank') {\n window.open(href, '_blank');\n return;\n }\n\n if (this.transition == 'false') {\n window.location = href;\n return;\n }\n\n this.setOptions(href, true);\n }\n }, {\n key: \"getStateOptions\",\n value: function getStateOptions() {\n if (this.transitionsHistory) {\n this.transition = history.state;\n } else {\n this.transition = false;\n }\n\n var href = window.location.href;\n this.setOptions(href);\n }\n }, {\n key: \"goTo\",\n value: function goTo(href, transition, isUrl) {\n this.reset();\n this.transition = transition;\n this.isUrl = isUrl;\n this.setOptions(href, true);\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(href, push) {\n var container = '[' + this.container + ']';\n var oldContainer;\n\n if (this.transition && this.transition != 'true') {\n this.transitionContainer = '[' + this.container + '=\"' + this.transition + '\"]';\n this.loadingClass = this.transitions[this.transition].loadingClass || this.loadingClass;\n this.loadedClass = this.transitions[this.transition].loadedClass || this.loadedClass;\n this.readyClass = this.transitions[this.transition].readyClass || this.readyClass;\n this.transitionsPrefix = this.transitions[this.transition].transitionsPrefix || this.transitionsPrefix;\n this.enterDelay = this.transitions[this.transition].enterDelay || this.enterDelay;\n this.exitDelay = this.transitions[this.transition].exitDelay || this.exitDelay;\n this.loadedDelay = this.transitions[this.transition].loadedDelay || this.loadedDelay;\n oldContainer = document.querySelector(this.transitionContainer);\n }\n\n if (oldContainer) {\n container = this.transitionContainer;\n this.oldContainer = oldContainer;\n this.classContainer = this.oldContainer.parentNode;\n\n if (!this.subContainer) {\n history.replaceState(this.transition, null, this.href);\n }\n\n this.subContainer = true;\n } else {\n this.oldContainer = document.querySelector(container);\n\n if (this.subContainer) {\n history.replaceState(this.prevTransition, null, this.href);\n }\n\n this.subContainer = false;\n }\n\n this.href = href;\n this.parentContainer = this.oldContainer.parentNode;\n\n if (this.isUrl === '' || this.isUrl != null && this.isUrl != 'false' && this.isUrl != false) {\n history.pushState(this.transition, null, href);\n } else {\n this.oldContainer.classList.add('is-old');\n this.setLoading();\n this.startEnterDelay();\n this.loadHref(href, container, push);\n }\n }\n }, {\n key: \"setLoading\",\n value: function setLoading() {\n this.classContainer.classList.remove(this.loadedClass, this.readyClass);\n this.classContainer.classList.add(this.loadingClass);\n this.classContainer.classList.remove(this.transitionsPrefix + this.prevTransition);\n\n if (this.transition) {\n this.classContainer.classList.add(this.transitionsPrefix + this.transition);\n }\n\n if (!this.subContainer) {\n this.prevTransition = this.transition;\n }\n\n var loadingEvent = new Event(this.namespace + 'loading');\n window.dispatchEvent(loadingEvent);\n }\n }, {\n key: \"startEnterDelay\",\n value: function startEnterDelay() {\n var _this2 = this;\n\n this.enterTimeout = window.setTimeout(function () {\n _this2.isEntered = true;\n\n if (_this2.isLoaded) {\n _this2.transitionContainers();\n }\n }, this.enterDelay);\n }\n }, {\n key: \"loadHref\",\n value: function loadHref(href, container, push) {\n var _this3 = this;\n\n this.isLoading = true;\n var signal = this.controller.signal;\n fetch(href, {\n signal: signal\n }).then(function (response) {\n return response.text();\n }).then(function (data) {\n if (push) {\n history.pushState(_this3.transition, null, href);\n }\n\n var parser = new DOMParser();\n _this3.data = parser.parseFromString(data, 'text/html');\n _this3.newContainer = _this3.data.querySelector(container);\n\n _this3.newContainer.classList.add('is-new');\n\n _this3.parentNewContainer = _this3.newContainer.parentNode;\n\n _this3.hideContainer();\n\n _this3.parentContainer.insertBefore(_this3.newContainer, _this3.oldContainer);\n\n _this3.isInserted = true;\n\n _this3.setSvgs();\n\n _this3.isLoaded = true;\n\n if (_this3.isEntered) {\n _this3.transitionContainers();\n }\n\n _this3.loadEls(_this3.newContainer);\n\n _this3.isLoading = false;\n })[\"catch\"](function (err) {\n window.location = href;\n });\n }\n }, {\n key: \"transitionContainers\",\n value: function transitionContainers() {\n var _this4 = this;\n\n this.setAttributes();\n this.showContainer();\n this.setLoaded();\n setTimeout(function () {\n _this4.removeContainer();\n\n _this4.setReady();\n }, this.exitDelay);\n }\n }, {\n key: \"setSvgs\",\n value: function setSvgs() {\n if (this.isChrome) {\n var svgs = this.newContainer.querySelectorAll('use');\n\n if (svgs.length) {\n svgs.forEach(function (svg) {\n var xhref = svg.getAttribute('xlink:href');\n\n if (xhref) {\n svg.parentNode.innerHTML = '';\n } else {\n var href = svg.getAttribute('href');\n if (href) svg.parentNode.innerHTML = '';\n }\n });\n }\n }\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes() {\n var _this5 = this;\n\n var title = this.data.getElementsByTagName('title')[0];\n var newDesc = this.data.head.querySelector('meta[name=\"description\"]');\n var oldDesc = document.head.querySelector('meta[name=\"description\"]');\n var container;\n var newContainer;\n\n if (this.subContainer) {\n newContainer = this.parentNewContainer;\n container = document.querySelector(this.transitionContainer).parentNode;\n } else {\n newContainer = this.data.querySelector('html');\n container = document.querySelector('html');\n }\n\n var datas = Object.assign({}, newContainer.dataset);\n if (title) document.title = title.innerText;\n if (oldDesc && newDesc) oldDesc.setAttribute('content', newDesc.getAttribute('content'));\n\n if (datas) {\n Object.entries(datas).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n val = _ref2[1];\n\n container.setAttribute('data-' + _this5.toDash(key), val);\n });\n }\n }\n }, {\n key: \"toDash\",\n value: function toDash(str) {\n return str.split(/(?=[A-Z])/).join('-').toLowerCase();\n }\n }, {\n key: \"hideContainer\",\n value: function hideContainer() {\n this.newContainer.style.visibility = 'hidden';\n this.newContainer.style.height = 0;\n this.newContainer.style.overflow = 'hidden';\n }\n }, {\n key: \"showContainer\",\n value: function showContainer() {\n this.newContainer.style.visibility = '';\n this.newContainer.style.height = '';\n this.newContainer.style.overflow = '';\n }\n }, {\n key: \"loadEls\",\n value: function loadEls(container) {\n var _this6 = this;\n\n var promises = [];\n this.loadAttributes.forEach(function (attr) {\n var data = 'data-' + _this6.name + '-' + attr;\n var els = container.querySelectorAll('[' + data + ']');\n\n if (els.length) {\n els.forEach(function (el) {\n var elData = el.getAttribute(data);\n el.setAttribute(attr, elData);\n\n if (attr == 'src' || attr == 'srcset') {\n var promise = new Promise(function (resolve) {\n el.onload = function () {\n return resolve(el);\n };\n });\n promises.push(promise);\n }\n });\n }\n });\n Promise.all(promises).then(function (val) {\n var imagesEvent = new Event(_this6.namespace + 'images');\n window.dispatchEvent(imagesEvent);\n });\n }\n }, {\n key: \"setLoaded\",\n value: function setLoaded() {\n var _this7 = this;\n\n this.classContainer.classList.remove(this.loadingClass);\n setTimeout(function () {\n _this7.classContainer.classList.add(_this7.loadedClass);\n }, this.loadedDelay);\n var loadedEvent = new Event(this.namespace + 'loaded');\n window.dispatchEvent(loadedEvent);\n }\n }, {\n key: \"removeContainer\",\n value: function removeContainer() {\n this.parentContainer.removeChild(this.oldContainer);\n this.newContainer.classList.remove('is-new');\n this.isInserted = false;\n }\n }, {\n key: \"setReady\",\n value: function setReady() {\n this.classContainer.classList.add(this.readyClass);\n var readyEvent = new Event(this.namespace + 'ready');\n window.dispatchEvent(readyEvent);\n }\n }, {\n key: \"on\",\n value: function on(event, func) {\n var _this8 = this;\n\n window.addEventListener(this.namespace + event, function () {\n switch (event) {\n case 'loading':\n return func(_this8.transition, _this8.oldContainer);\n\n case 'loaded':\n return func(_this8.transition, _this8.oldContainer, _this8.newContainer);\n\n case 'ready':\n return func(_this8.transition, _this8.newContainer);\n\n default:\n return func();\n }\n }, false);\n }\n }]);\n\n return _default;\n}();\n\nexport default _default;\n", "import { module } from 'modujs';\nimport modularLoad from 'modularload';\n\nexport default class extends module {\n constructor(m) {\n super(m);\n }\n\n init() {\n const load = new modularLoad({\n enterDelay: 0,\n transitions: {\n customTransition: {}\n }\n });\n\n load.on('loaded', (transition, oldContainer, newContainer) => {\n this.call('destroy', oldContainer, 'app');\n this.call('update', newContainer, 'app');\n });\n }\n}\n", "/* locomotive-scroll v4.1.1 | 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: '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\u00EBtan Renaudeau 2014 - 2015 \u2013 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\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 this.instance.delta[this.directionAxis] -= 240;\n break;\n\n case keyCodes$1.DOWN:\n this.instance.delta[this.directionAxis] += 240;\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 (!(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement)) {\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: \"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 this.html.classList.add(this.scrollingClass);\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('\uD83D\uDEA8 `smooth:false` & `horizontal` direction are not yet compatible');\n if (!this.tablet.smooth && this.tablet.direction == 'horizontal') console.warn('\uD83D\uDEA8 `smooth:false` & `horizontal` direction are not yet compatible (tablet)');\n if (!this.smartphone.smooth && this.smartphone.direction == 'horizontal') console.warn('\uD83D\uDEA8 `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 { module } from 'modujs';\nimport LocomotiveScroll from 'locomotive-scroll';\n\nexport default class extends module {\n constructor(m) {\n super(m);\n }\n\n init() {\n this.scroll = new LocomotiveScroll({\n el: this.el,\n smooth: true\n });\n\n this.scroll.on('call', (func, way, obj, id) => {\n // Using modularJS\n this.call(func[0], { way, obj }, func[1], func[2]);\n });\n\n this.scroll.on('scroll', (args) => {\n // console.log(args.scroll);\n })\n }\n\n toggleLazy(args) {\n let src = this.getData('lazy', args.obj.el)\n if (src.length) {\n if (args.obj.el.tagName === 'IMG') {\n args.obj.el.src = src\n } else {\n args.obj.el.style.backgroundImage = `url('${src}')`\n }\n this.setData('lazy', '', args.obj.el)\n }\n }\n\n destroy() {\n this.scroll.destroy();\n }\n}\n", "import svg4everybody from 'svg4everybody';\n\nexport default function() {\n svg4everybody();\n}\n", "const APP_NAME = 'Boilerplate';\nconst DATA_API_KEY = '.data-api';\n\nconst html = document.documentElement;\nconst body = document.body;\nconst isDebug = html.hasAttribute('data-debug');\n\nexport { APP_NAME, DATA_API_KEY, html, body, isDebug };\n", "import modular from 'modujs';\nimport * as modules from './modules';\nimport globals from './globals';\nimport { html } from './utils/environment';\n\nconst app = new modular({\n modules: modules\n});\n\nwindow.onload = (event) => {\n const $style = document.getElementById('main-css');\n\n if ($style) {\n if ($style.isLoaded) {\n init();\n } else {\n $style.addEventListener('load', (event) => {\n init();\n });\n }\n } else {\n console.warn('The \"main-css\" stylesheet not found');\n }\n};\n\nfunction init() {\n globals();\n\n app.init(app);\n\n html.classList.add('is-loaded');\n html.classList.add('is-ready');\n html.classList.remove('is-loading');\n}\n\n"], - "mappings": "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", + "sources": ["../../../node_modules/svg4everybody/dist/svg4everybody.js", "../../../node_modules/modujs/dist/main.esm.js", "../../../assets/scripts/modules.js", "../../../node_modules/modularload/dist/main.esm.js", "../../../assets/scripts/modules/Load.js", "../../../assets/scripts/utils/html.js", "../../../assets/scripts/utils/image.js", "../../../node_modules/locomotive-scroll/dist/locomotive-scroll.esm.js", "../../../assets/scripts/modules/Scroll.js", "../../../assets/scripts/globals.js", "../../../assets/scripts/utils/environment.js", "../../../assets/scripts/app.js"], + "sourcesContent": ["!function(root, factory) {\n \"function\" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function() {\n return root.svg4everybody = factory();\n }) : \"object\" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */\n function embed(parent, svg, target) {\n // if the target exists\n if (target) {\n // create a document fragment to hold the contents of the target\n var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute(\"viewBox\") && target.getAttribute(\"viewBox\");\n // conditionally set the viewBox on the svg\n viewBox && svg.setAttribute(\"viewBox\", viewBox);\n // copy the contents of the clone into the fragment\n for (// clone the target\n var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n fragment.appendChild(clone.firstChild);\n }\n // append the fragment into the svg\n parent.appendChild(fragment);\n }\n }\n function loadreadystatechange(xhr) {\n // listen to changes in the request\n xhr.onreadystatechange = function() {\n // if the request is ready\n if (4 === xhr.readyState) {\n // get the cached html document\n var cachedDocument = xhr._cachedDocument;\n // ensure the cached html document based on the xhr response\n cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(\"\"), \n cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n xhr._embeds.splice(0).map(function(item) {\n // get the cached target\n var target = xhr._cachedTarget[item.id];\n // ensure the cached target\n target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n // embed the target into the svg\n embed(item.parent, item.svg, target);\n });\n }\n }, // test the ready state change immediately\n xhr.onreadystatechange();\n }\n function svg4everybody(rawopts) {\n function oninterval() {\n // while the index exists in the live collection\n for (// get the cached index\n var index = 0; index < uses.length; ) {\n // get the current \n var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute(\"xlink:href\") || use.getAttribute(\"href\");\n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n svg && src) {\n if (polyfill) {\n if (!opts.validate || opts.validate(src, svg, use)) {\n // remove the element\n parent.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n parent: parent,\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(parent, svg, document.getElementById(id));\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index, ++numberOfSvgUseElementsToBypass;\n }\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index;\n }\n }\n // continue the interval\n (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\"), numberOfSvgUseElementsToBypass = 0;\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n function getSVGAncestor(node) {\n for (var svg = node; \"svg\" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n return svg;\n }\n return svg4everybody;\n});", "function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\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 _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 _default = /*#__PURE__*/function () {\n function _default(options) {\n _classCallCheck(this, _default);\n\n this.mAttr = 'data-' + options.dataName;\n this.mCaptureEvents = ['mouseenter', 'mouseleave'];\n this.el = options.el;\n }\n\n _createClass(_default, [{\n key: \"mInit\",\n value: function mInit(modules) {\n var _this = this;\n\n this.modules = modules;\n this.mCheckEventTarget = this.mCheckEventTarget.bind(this);\n\n if (this.events) {\n Object.keys(this.events).forEach(function (event) {\n return _this.mAddEvent(event);\n });\n }\n }\n }, {\n key: \"mUpdate\",\n value: function mUpdate(modules) {\n this.modules = modules;\n }\n }, {\n key: \"mDestroy\",\n value: function mDestroy() {\n var _this2 = this;\n\n if (this.events) {\n Object.keys(this.events).forEach(function (event) {\n return _this2.mRemoveEvent(event);\n });\n }\n }\n }, {\n key: \"mAddEvent\",\n value: function mAddEvent(event) {\n var capture = this.mCaptureEvents.includes(event) ? true : false;\n this.el.addEventListener(event, this.mCheckEventTarget, capture);\n }\n }, {\n key: \"mRemoveEvent\",\n value: function mRemoveEvent(event) {\n var capture = this.mCaptureEvents.includes(event) ? true : false;\n this.el.removeEventListener(event, this.mCheckEventTarget, capture);\n }\n }, {\n key: \"mCheckEventTarget\",\n value: function mCheckEventTarget(e) {\n var event = this.events[e.type];\n\n if (typeof event === \"string\") {\n this[event](e);\n } else {\n var data = '[' + this.mAttr + ']';\n var target = e.target;\n\n if (this.mCaptureEvents.includes(e.type)) {\n if (target.matches(data)) {\n this.mCallEventMethod(e, event, target);\n }\n } else {\n while (target && target !== document) {\n if (target.matches(data)) {\n if (this.mCallEventMethod(e, event, target) != 'undefined') {\n break;\n }\n }\n\n target = target.parentNode;\n }\n }\n }\n }\n }, {\n key: \"mCallEventMethod\",\n value: function mCallEventMethod(e, event, target) {\n var name = target.getAttribute(this.mAttr);\n\n if (event.hasOwnProperty(name)) {\n var method = event[name];\n\n if (!e.hasOwnProperty('currentTarget')) {\n Object.defineProperty(e, 'currentTarget', {\n value: target\n });\n }\n\n if (!e.hasOwnProperty('curTarget')) {\n Object.defineProperty(e, 'curTarget', {\n value: target\n }); // For IE 11\n }\n\n this[method](e);\n }\n }\n }, {\n key: \"$\",\n value: function $(query, context) {\n var classIndex = query.indexOf('.');\n var idIndex = query.indexOf('#');\n var attrIndex = query.indexOf('[');\n var indexes = [classIndex, idIndex, attrIndex].filter(function (index) {\n return index != -1;\n });\n var index = false;\n var name = query;\n var more = '';\n var parent = this.el;\n\n if (indexes.length) {\n index = Math.min.apply(Math, _toConsumableArray(indexes));\n name = query.slice(0, index);\n more = query.slice(index);\n }\n\n if (_typeof(context) == 'object') {\n parent = context;\n }\n\n return parent.querySelectorAll('[' + this.mAttr + '=' + name + ']' + more);\n }\n }, {\n key: \"parent\",\n value: function parent(query, context) {\n var data = '[' + this.mAttr + '=' + query + ']';\n var parent = context.parentNode;\n\n while (parent && parent !== document) {\n if (parent.matches(data)) {\n return parent;\n }\n\n parent = parent.parentNode;\n }\n }\n }, {\n key: \"getData\",\n value: function getData(name, context) {\n var target = context || this.el;\n return target.getAttribute(this.mAttr + '-' + name);\n }\n }, {\n key: \"setData\",\n value: function setData(name, value, context) {\n var target = context || this.el;\n return target.setAttribute(this.mAttr + '-' + name, value);\n }\n }, {\n key: \"call\",\n value: function call(func, args, mod, id) {\n var _this3 = this;\n\n if (args && !mod) {\n mod = args;\n args = false;\n }\n\n if (this.modules[mod]) {\n if (id) {\n if (this.modules[mod][id]) {\n this.modules[mod][id][func](args);\n }\n } else {\n Object.keys(this.modules[mod]).forEach(function (id) {\n _this3.modules[mod][id][func](args);\n });\n }\n }\n }\n }, {\n key: \"on\",\n value: function on(e, mod, func, id) {\n var _this4 = this;\n\n if (this.modules[mod]) {\n if (id) {\n this.modules[mod][id].el.addEventListener(e, function (o) {\n return func(o);\n });\n } else {\n Object.keys(this.modules[mod]).forEach(function (i) {\n _this4.modules[mod][i].el.addEventListener(e, function (o) {\n return func(o);\n });\n });\n }\n }\n }\n }, {\n key: \"init\",\n value: function init() {}\n }, {\n key: \"destroy\",\n value: function destroy() {}\n }]);\n\n return _default;\n}();\n\nvar _default$1 = /*#__PURE__*/function () {\n function _default(options) {\n _classCallCheck(this, _default);\n\n this.app;\n this.modules = options.modules;\n this.currentModules = {};\n this.activeModules = {};\n this.newModules = {};\n this.moduleId = 0;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init(app, scope) {\n var _this = this;\n\n var container = scope || document;\n var elements = container.querySelectorAll('*');\n\n if (app && !this.app) {\n this.app = app;\n }\n\n this.activeModules['app'] = {\n 'app': this.app\n };\n elements.forEach(function (el) {\n Array.from(el.attributes).forEach(function (i) {\n if (i.name.startsWith('data-module')) {\n var moduleExists = false;\n var dataName = i.name.split('-').splice(2);\n\n var moduleName = _this.toCamel(dataName);\n\n if (_this.modules[moduleName]) {\n moduleExists = true;\n } else if (_this.modules[_this.toUpper(moduleName)]) {\n moduleName = _this.toUpper(moduleName);\n moduleExists = true;\n }\n\n if (moduleExists) {\n var options = {\n el: el,\n name: moduleName,\n dataName: dataName.join('-')\n };\n var module = new _this.modules[moduleName](options);\n var id = i.value;\n\n if (!id) {\n _this.moduleId++;\n id = 'm' + _this.moduleId;\n el.setAttribute(i.name, id);\n }\n\n _this.addActiveModule(moduleName, id, module);\n\n var moduleId = moduleName + '-' + id;\n\n if (scope) {\n _this.newModules[moduleId] = module;\n } else {\n _this.currentModules[moduleId] = module;\n }\n }\n }\n });\n });\n Object.entries(this.currentModules).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n id = _ref2[0],\n module = _ref2[1];\n\n if (scope) {\n var split = id.split('-');\n var moduleName = split.shift();\n var moduleId = split.pop();\n\n _this.addActiveModule(moduleName, moduleId, module);\n } else {\n _this.initModule(module);\n }\n });\n }\n }, {\n key: \"initModule\",\n value: function initModule(module) {\n module.mInit(this.activeModules);\n module.init();\n }\n }, {\n key: \"addActiveModule\",\n value: function addActiveModule(name, id, module) {\n if (this.activeModules[name]) {\n Object.assign(this.activeModules[name], _defineProperty({}, id, module));\n } else {\n this.activeModules[name] = _defineProperty({}, id, module);\n }\n }\n }, {\n key: \"update\",\n value: function update(scope) {\n var _this2 = this;\n\n this.init(this.app, scope);\n Object.entries(this.currentModules).forEach(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n id = _ref4[0],\n module = _ref4[1];\n\n module.mUpdate(_this2.activeModules);\n });\n Object.entries(this.newModules).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n id = _ref6[0],\n module = _ref6[1];\n\n _this2.initModule(module);\n });\n Object.assign(this.currentModules, this.newModules);\n }\n }, {\n key: \"destroy\",\n value: function destroy(scope) {\n if (scope) {\n this.destroyScope(scope);\n } else {\n this.destroyModules();\n }\n }\n }, {\n key: \"destroyScope\",\n value: function destroyScope(scope) {\n var _this3 = this;\n\n var elements = scope.querySelectorAll('*');\n elements.forEach(function (el) {\n Array.from(el.attributes).forEach(function (i) {\n if (i.name.startsWith('data-module')) {\n var id = i.value;\n var dataName = i.name.split('-').splice(2);\n var moduleName = _this3.toCamel(dataName) + '-' + id;\n var moduleExists = false;\n\n if (_this3.currentModules[moduleName]) {\n moduleExists = true;\n } else if (_this3.currentModules[_this3.toUpper(moduleName)]) {\n moduleName = _this3.toUpper(moduleName);\n moduleExists = true;\n }\n\n if (moduleExists) {\n _this3.destroyModule(_this3.currentModules[moduleName]);\n\n delete _this3.currentModules[moduleName];\n }\n }\n });\n });\n this.activeModules = {};\n this.newModules = {};\n }\n }, {\n key: \"destroyModules\",\n value: function destroyModules() {\n var _this4 = this;\n\n Object.entries(this.currentModules).forEach(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n id = _ref8[0],\n module = _ref8[1];\n\n _this4.destroyModule(module);\n });\n this.currentModules = [];\n }\n }, {\n key: \"destroyModule\",\n value: function destroyModule(module) {\n module.mDestroy();\n module.destroy();\n }\n }, {\n key: \"toCamel\",\n value: function toCamel(arr) {\n var _this5 = this;\n\n return arr.reduce(function (a, b) {\n return a + _this5.toUpper(b);\n });\n }\n }, {\n key: \"toUpper\",\n value: function toUpper(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n }]);\n\n return _default;\n}();\n\nexport default _default$1;\nexport { _default as module };\n", "export {default as Load} from './modules/Load';\nexport {default as Scroll} from './modules/Scroll';\n", "function _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 _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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 _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 _default = /*#__PURE__*/function () {\n function _default(options) {\n _classCallCheck(this, _default);\n\n this.defaults = {\n name: 'load',\n loadingClass: 'is-loading',\n loadedClass: 'is-loaded',\n readyClass: 'is-ready',\n transitionsPrefix: 'is-',\n transitionsHistory: true,\n enterDelay: 0,\n exitDelay: 0,\n loadedDelay: 0,\n isLoaded: false,\n isEntered: false,\n isUrl: false,\n transitionContainer: null,\n popstateIgnore: false\n };\n Object.assign(this, this.defaults, options);\n this.options = options;\n this.namespace = 'modular';\n this.html = document.documentElement;\n this.href = window.location.href;\n this.container = 'data-' + this.name + '-container';\n this.subContainer = false;\n this.prevTransition = null;\n this.loadAttributes = ['src', 'srcset', 'style', 'href'];\n this.isInserted = false;\n this.isLoading = false;\n this.enterTimeout = false;\n this.controller = new AbortController();\n this.classContainer = this.html;\n this.isChrome = navigator.userAgent.indexOf(\"Chrome\") != -1 ? true : false;\n this.init();\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n\n window.addEventListener('popstate', function (e) {\n return _this.checkState(e);\n }, false);\n this.html.addEventListener('click', function (e) {\n return _this.checkClick(e);\n }, false);\n this.loadEls(document);\n }\n }, {\n key: \"checkClick\",\n value: function checkClick(e) {\n if (!e.ctrlKey && !e.metaKey) {\n var target = e.target;\n\n while (target && target !== document) {\n if (target.matches('a') && target.getAttribute('download') == null) {\n var href = target.getAttribute('href');\n\n if (!href.startsWith('#') && !href.startsWith('mailto:') && !href.startsWith('tel:')) {\n e.preventDefault();\n this.reset();\n this.getClickOptions(target);\n }\n\n break;\n }\n\n target = target.parentNode;\n }\n }\n }\n }, {\n key: \"checkState\",\n value: function checkState() {\n if (typeof this.popstateIgnore === 'string' && window.location.href.indexOf(this.popstateIgnore) > -1) {\n return;\n }\n\n this.reset();\n this.getStateOptions();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.isLoading) {\n this.controller.abort();\n this.isLoading = false;\n this.controller = new AbortController();\n }\n\n window.clearTimeout(this.enterTimeout);\n\n if (this.isInserted) {\n this.removeContainer();\n }\n\n this.classContainer = this.html;\n Object.assign(this, this.defaults, this.options);\n }\n }, {\n key: \"getClickOptions\",\n value: function getClickOptions(link) {\n this.transition = link.getAttribute('data-' + this.name);\n this.isUrl = link.getAttribute('data-' + this.name + '-url');\n var href = link.getAttribute('href');\n var target = link.getAttribute('target');\n\n if (target == '_blank') {\n window.open(href, '_blank');\n return;\n }\n\n if (this.transition == 'false') {\n window.location = href;\n return;\n }\n\n this.setOptions(href, true);\n }\n }, {\n key: \"getStateOptions\",\n value: function getStateOptions() {\n if (this.transitionsHistory) {\n this.transition = history.state;\n } else {\n this.transition = false;\n }\n\n var href = window.location.href;\n this.setOptions(href);\n }\n }, {\n key: \"goTo\",\n value: function goTo(href, transition, isUrl) {\n this.reset();\n this.transition = transition;\n this.isUrl = isUrl;\n this.setOptions(href, true);\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(href, push) {\n var container = '[' + this.container + ']';\n var oldContainer;\n\n if (this.transition && this.transition != 'true') {\n this.transitionContainer = '[' + this.container + '=\"' + this.transition + '\"]';\n this.loadingClass = this.transitions[this.transition].loadingClass || this.loadingClass;\n this.loadedClass = this.transitions[this.transition].loadedClass || this.loadedClass;\n this.readyClass = this.transitions[this.transition].readyClass || this.readyClass;\n this.transitionsPrefix = this.transitions[this.transition].transitionsPrefix || this.transitionsPrefix;\n this.enterDelay = this.transitions[this.transition].enterDelay || this.enterDelay;\n this.exitDelay = this.transitions[this.transition].exitDelay || this.exitDelay;\n this.loadedDelay = this.transitions[this.transition].loadedDelay || this.loadedDelay;\n oldContainer = document.querySelector(this.transitionContainer);\n }\n\n if (oldContainer) {\n container = this.transitionContainer;\n this.oldContainer = oldContainer;\n this.classContainer = this.oldContainer.parentNode;\n\n if (!this.subContainer) {\n history.replaceState(this.transition, null, this.href);\n }\n\n this.subContainer = true;\n } else {\n this.oldContainer = document.querySelector(container);\n\n if (this.subContainer) {\n history.replaceState(this.prevTransition, null, this.href);\n }\n\n this.subContainer = false;\n }\n\n this.href = href;\n this.parentContainer = this.oldContainer.parentNode;\n\n if (this.isUrl === '' || this.isUrl != null && this.isUrl != 'false' && this.isUrl != false) {\n history.pushState(this.transition, null, href);\n } else {\n this.oldContainer.classList.add('is-old');\n this.setLoading();\n this.startEnterDelay();\n this.loadHref(href, container, push);\n }\n }\n }, {\n key: \"setLoading\",\n value: function setLoading() {\n this.classContainer.classList.remove(this.loadedClass, this.readyClass);\n this.classContainer.classList.add(this.loadingClass);\n this.classContainer.classList.remove(this.transitionsPrefix + this.prevTransition);\n\n if (this.transition) {\n this.classContainer.classList.add(this.transitionsPrefix + this.transition);\n }\n\n if (!this.subContainer) {\n this.prevTransition = this.transition;\n }\n\n var loadingEvent = new Event(this.namespace + 'loading');\n window.dispatchEvent(loadingEvent);\n }\n }, {\n key: \"startEnterDelay\",\n value: function startEnterDelay() {\n var _this2 = this;\n\n this.enterTimeout = window.setTimeout(function () {\n _this2.isEntered = true;\n\n if (_this2.isLoaded) {\n _this2.transitionContainers();\n }\n }, this.enterDelay);\n }\n }, {\n key: \"loadHref\",\n value: function loadHref(href, container, push) {\n var _this3 = this;\n\n this.isLoading = true;\n var signal = this.controller.signal;\n fetch(href, {\n signal: signal\n }).then(function (response) {\n return response.text();\n }).then(function (data) {\n if (push) {\n history.pushState(_this3.transition, null, href);\n }\n\n var parser = new DOMParser();\n _this3.data = parser.parseFromString(data, 'text/html');\n _this3.newContainer = _this3.data.querySelector(container);\n\n _this3.newContainer.classList.add('is-new');\n\n _this3.parentNewContainer = _this3.newContainer.parentNode;\n\n _this3.hideContainer();\n\n _this3.parentContainer.insertBefore(_this3.newContainer, _this3.oldContainer);\n\n _this3.isInserted = true;\n\n _this3.setSvgs();\n\n _this3.isLoaded = true;\n\n if (_this3.isEntered) {\n _this3.transitionContainers();\n }\n\n _this3.loadEls(_this3.newContainer);\n\n _this3.isLoading = false;\n })[\"catch\"](function (err) {\n window.location = href;\n });\n }\n }, {\n key: \"transitionContainers\",\n value: function transitionContainers() {\n var _this4 = this;\n\n this.setAttributes();\n this.showContainer();\n this.setLoaded();\n setTimeout(function () {\n _this4.removeContainer();\n\n _this4.setReady();\n }, this.exitDelay);\n }\n }, {\n key: \"setSvgs\",\n value: function setSvgs() {\n if (this.isChrome) {\n var svgs = this.newContainer.querySelectorAll('use');\n\n if (svgs.length) {\n svgs.forEach(function (svg) {\n var xhref = svg.getAttribute('xlink:href');\n\n if (xhref) {\n svg.parentNode.innerHTML = '';\n } else {\n var href = svg.getAttribute('href');\n if (href) svg.parentNode.innerHTML = '';\n }\n });\n }\n }\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes() {\n var _this5 = this;\n\n var title = this.data.getElementsByTagName('title')[0];\n var newDesc = this.data.head.querySelector('meta[name=\"description\"]');\n var oldDesc = document.head.querySelector('meta[name=\"description\"]');\n var container;\n var newContainer;\n\n if (this.subContainer) {\n newContainer = this.parentNewContainer;\n container = document.querySelector(this.transitionContainer).parentNode;\n } else {\n newContainer = this.data.querySelector('html');\n container = document.querySelector('html');\n }\n\n var datas = Object.assign({}, newContainer.dataset);\n if (title) document.title = title.innerText;\n if (oldDesc && newDesc) oldDesc.setAttribute('content', newDesc.getAttribute('content'));\n\n if (datas) {\n Object.entries(datas).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n val = _ref2[1];\n\n container.setAttribute('data-' + _this5.toDash(key), val);\n });\n }\n }\n }, {\n key: \"toDash\",\n value: function toDash(str) {\n return str.split(/(?=[A-Z])/).join('-').toLowerCase();\n }\n }, {\n key: \"hideContainer\",\n value: function hideContainer() {\n this.newContainer.style.visibility = 'hidden';\n this.newContainer.style.height = 0;\n this.newContainer.style.overflow = 'hidden';\n }\n }, {\n key: \"showContainer\",\n value: function showContainer() {\n this.newContainer.style.visibility = '';\n this.newContainer.style.height = '';\n this.newContainer.style.overflow = '';\n }\n }, {\n key: \"loadEls\",\n value: function loadEls(container) {\n var _this6 = this;\n\n var promises = [];\n this.loadAttributes.forEach(function (attr) {\n var data = 'data-' + _this6.name + '-' + attr;\n var els = container.querySelectorAll('[' + data + ']');\n\n if (els.length) {\n els.forEach(function (el) {\n var elData = el.getAttribute(data);\n el.setAttribute(attr, elData);\n\n if (attr == 'src' || attr == 'srcset') {\n var promise = new Promise(function (resolve) {\n el.onload = function () {\n return resolve(el);\n };\n });\n promises.push(promise);\n }\n });\n }\n });\n Promise.all(promises).then(function (val) {\n var imagesEvent = new Event(_this6.namespace + 'images');\n window.dispatchEvent(imagesEvent);\n });\n }\n }, {\n key: \"setLoaded\",\n value: function setLoaded() {\n var _this7 = this;\n\n this.classContainer.classList.remove(this.loadingClass);\n setTimeout(function () {\n _this7.classContainer.classList.add(_this7.loadedClass);\n }, this.loadedDelay);\n var loadedEvent = new Event(this.namespace + 'loaded');\n window.dispatchEvent(loadedEvent);\n }\n }, {\n key: \"removeContainer\",\n value: function removeContainer() {\n this.parentContainer.removeChild(this.oldContainer);\n this.newContainer.classList.remove('is-new');\n this.isInserted = false;\n }\n }, {\n key: \"setReady\",\n value: function setReady() {\n this.classContainer.classList.add(this.readyClass);\n var readyEvent = new Event(this.namespace + 'ready');\n window.dispatchEvent(readyEvent);\n }\n }, {\n key: \"on\",\n value: function on(event, func) {\n var _this8 = this;\n\n window.addEventListener(this.namespace + event, function () {\n switch (event) {\n case 'loading':\n return func(_this8.transition, _this8.oldContainer);\n\n case 'loaded':\n return func(_this8.transition, _this8.oldContainer, _this8.newContainer);\n\n case 'ready':\n return func(_this8.transition, _this8.newContainer);\n\n default:\n return func();\n }\n }, false);\n }\n }]);\n\n return _default;\n}();\n\nexport default _default;\n", "import { module } from 'modujs';\nimport modularLoad from 'modularload';\n\nexport default class extends module {\n constructor(m) {\n super(m);\n }\n\n init() {\n const load = new modularLoad({\n enterDelay: 0,\n transitions: {\n customTransition: {}\n }\n });\n\n load.on('loaded', (transition, oldContainer, newContainer) => {\n this.call('destroy', oldContainer, 'app');\n this.call('update', newContainer, 'app');\n });\n }\n}\n", "/**\n * @see https://github.com/ractivejs/ractive/blob/dev/src/utils/html.js\n */\nexport function escapeHtml(str) {\n return str\n .replace(/&/g, '&')\n .replace(//g, '>');\n}\n\n/**\n * Prepare HTML content that contains mustache characters for use with Ractive\n * @param {string} str\n * @return {string}\n */\nexport function unescapeHtml(str) {\n return str\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&');\n}\n\n/**\n * Get element data attributes\n * @param {DOMElement} node\n * @return {Array} data\n */\nexport function getNodeData(node) {\n // All attributes\n const attributes = node.attributes;\n\n // Regex Pattern\n const pattern = /^data\\-(.+)$/;\n\n // Output\n const data = {};\n\n for (let i in attributes) {\n if (!attributes[i]) {\n continue;\n }\n\n // Attributes name (ex: data-module)\n let name = attributes[i].name;\n\n // This happens.\n if (!name) {\n continue;\n }\n\n let match = name.match(pattern);\n if (!match) {\n continue;\n }\n\n // If this throws an error, you have some\n // serious problems in your HTML.\n data[match[1]] = getData(node.getAttribute(name));\n }\n\n return data;\n}\n\nconst rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/;\n\n/**\n * Parse value to data type.\n *\n * @link https://github.com/jquery/jquery/blob/3.1.1/src/data.js\n * @param {string} data - A value to convert.\n * @return {mixed} Returns the value in its natural data type.\n */\nexport function getData(data) {\n if (data === 'true') {\n return true;\n }\n\n if (data === 'false') {\n return false;\n }\n\n if (data === 'null') {\n return null;\n }\n\n // Only convert to a number if it doesn't change the string\n if (data === +data+'') {\n return +data;\n }\n\n if (rbrace.test( data )) {\n return JSON.parse( data );\n }\n\n return data;\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 */\nexport function getParents(elem) {\n // Set up a parent array\n let parents = [];\n\n // Push each parent element to the array\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\n parents.push(elem);\n }\n\n // Return our parent array\n return parents;\n}\n\n// https://gomakethings.com/how-to-get-the-closest-parent-element-with-a-matching-selector-using-vanilla-javascript/\nexport function queryClosestParent(elem, selector) {\n\n // Element.matches() polyfill\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.matchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.oMatchesSelector ||\n Element.prototype.webkitMatchesSelector ||\n function(s) {\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\n i = matches.length;\n while (--i >= 0 && matches.item(i) !== this) {}\n return i > -1;\n };\n }\n\n // Get the closest matching element\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\n if ( elem.matches( selector ) ) return elem;\n }\n return null;\n\n};\n", "import { queryClosestParent } from './html';\n\nconst LAZY_LOADED_IMAGES = []\n\nexport function loadImage(url, options = {}) {\n return new Promise((resolve, reject) => {\n const $img = new Image();\n if (options.crossOrigin) $img.crossOrigin = options.crossOrigin;\n\n const loadCallback = () => {\n resolve({\n element: $img,\n ...getImageMetadata($img),\n });\n }\n\n if($img.decode) {\n $img.src = url\n $img.decode().then(loadCallback).catch(e => {\n reject(e)\n })\n } else {\n $img.onload = loadCallback\n $img.onerror = (e) => {\n reject(e);\n };\n $img.src = url\n }\n });\n}\n\nexport function getImageMetadata($img) {\n return {\n url: $img.src,\n width: $img.naturalWidth,\n height: $img.naturalHeight,\n ratio: $img.naturalWidth / $img.naturalHeight,\n };\n}\n\n/**\n * Lazy load images\n *\n * @param {node} | $el\n * @param {string} | url\n * @param {function} | callback\n */\nexport async function lazyLoadImage($el, url, callback = () => {}) {\n let src = url ? url : $el.dataset.src\n\n let loadedImage = LAZY_LOADED_IMAGES.find(image => image.url === src)\n\n if (!loadedImage) {\n loadedImage = await loadImage(src)\n if (!loadedImage.url) return;\n LAZY_LOADED_IMAGES.push(loadedImage)\n }\n\n if($el.src === src) {\n return\n }\n\n if ($el.tagName == \"IMG\") {\n $el.src = loadedImage.url;\n } else {\n $el.style.backgroundImage = `url(${loadedImage.url})`;\n }\n\n requestAnimationFrame(() => {\n let lazyParent = queryClosestParent($el, '.c-lazy')\n if(lazyParent) {\n lazyParent.classList.add('-lazy-loaded')\n lazyParent.style.backgroundImage = ''\n }\n $el.classList.add('-lazy-loaded')\n\n callback?.()\n })\n}\n", "/* locomotive-scroll v4.1.1 | 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: '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\u00EBtan Renaudeau 2014 - 2015 \u2013 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\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 this.instance.delta[this.directionAxis] -= 240;\n break;\n\n case keyCodes$1.DOWN:\n this.instance.delta[this.directionAxis] += 240;\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 (!(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement)) {\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: \"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 this.html.classList.add(this.scrollingClass);\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('\uD83D\uDEA8 `smooth:false` & `horizontal` direction are not yet compatible');\n if (!this.tablet.smooth && this.tablet.direction == 'horizontal') console.warn('\uD83D\uDEA8 `smooth:false` & `horizontal` direction are not yet compatible (tablet)');\n if (!this.smartphone.smooth && this.smartphone.direction == 'horizontal') console.warn('\uD83D\uDEA8 `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 { module } from 'modujs';\nimport { lazyLoadImage } from '../utils/image';\nimport LocomotiveScroll from 'locomotive-scroll';\n\nexport default class extends module {\n constructor(m) {\n super(m);\n }\n\n init() {\n this.scroll = new LocomotiveScroll({\n el: this.el,\n smooth: true\n });\n\n this.scroll.on('call', (func, way, obj, id) => {\n // Using modularJS\n this.call(func[0], { way, obj }, func[1], func[2]);\n });\n\n this.scroll.on('scroll', (args) => {\n // console.log(args.scroll);\n })\n }\n\n /**\n * Lazy load\n * See '../utils/image'\n * Recommended to wrap your image in `.c-lazy`. `-lazy-loaded` modifier will be applied on both parent and children\n *\n * @param {obj} | Locomotive Scroll object\n */\n lazyLoad(args) {\n lazyLoadImage(args.obj.target, null, () => {\n //callback\n })\n }\n\n destroy() {\n this.scroll.destroy();\n }\n}\n", "import svg4everybody from 'svg4everybody';\n\nexport default function() {\n svg4everybody();\n}\n", "const APP_NAME = 'Boilerplate';\nconst DATA_API_KEY = '.data-api';\n\nconst html = document.documentElement;\nconst body = document.body;\nconst isDebug = html.hasAttribute('data-debug');\n\nexport { APP_NAME, DATA_API_KEY, html, body, isDebug };\n", "import modular from 'modujs';\nimport * as modules from './modules';\nimport globals from './globals';\nimport { html } from './utils/environment';\n\nconst app = new modular({\n modules: modules\n});\n\nwindow.onload = (event) => {\n const $style = document.getElementById('main-css');\n\n if ($style) {\n if ($style.isLoaded) {\n init();\n } else {\n $style.addEventListener('load', (event) => {\n init();\n });\n }\n } else {\n console.warn('The \"main-css\" stylesheet not found');\n }\n};\n\nfunction init() {\n globals();\n\n app.init(app);\n\n html.classList.add('is-loaded');\n html.classList.add('is-ready');\n html.classList.remove('is-loading');\n}\n\n"], + "mappings": "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", "names": [] }