From ce0788bdc97963c69570df58b2174ddc88a03151 Mon Sep 17 00:00:00 2001 From: Lucas Vallenet Date: Fri, 20 May 2022 14:19:35 +0200 Subject: [PATCH 1/4] Add Barba --- assets/scripts/app.js | 9 +- assets/scripts/config.js | 20 + assets/scripts/modules/Load.js | 27 +- assets/scripts/utils/dom.js | 4 + assets/scripts/utils/environment.js | 8 - assets/scripts/utils/visibility.js | 3 +- package-lock.json | 50 +- package.json | 2 +- www/assets/scripts/app.js | 1632 ++++++++++++++++++--------- www/assets/scripts/app.js.map | 6 +- www/form.html | 4 +- www/images.html | 4 +- www/index.html | 4 +- 13 files changed, 1192 insertions(+), 581 deletions(-) create mode 100644 assets/scripts/config.js create mode 100644 assets/scripts/utils/dom.js delete mode 100644 assets/scripts/utils/environment.js diff --git a/assets/scripts/app.js b/assets/scripts/app.js index 7aa6643a..d9684656 100644 --- a/assets/scripts/app.js +++ b/assets/scripts/app.js @@ -1,7 +1,8 @@ import modular from 'modujs'; import * as modules from './modules'; import globals from './globals'; -import { html } from './utils/environment'; +import { $html } from './utils/dom'; +import config from './config'; const app = new modular({ modules: modules @@ -28,8 +29,8 @@ function init() { app.init(app); - html.classList.add('is-loaded'); - html.classList.add('is-ready'); - html.classList.remove('is-loading'); + $html.classList.add(config.CLASS.LOADED); + $html.classList.add(config.CLASS.READY); + $html.classList.remove(config.CLASS.LOADING); } diff --git a/assets/scripts/config.js b/assets/scripts/config.js new file mode 100644 index 00000000..c4f472f1 --- /dev/null +++ b/assets/scripts/config.js @@ -0,0 +1,20 @@ +const env = process.env.NODE_ENV + +export default config = { + + // App + APP_NAME: 'Boilerplate', + DATA_API_KEY: '.data-api'; , + + // Env + ENV: env, + IS_PROD: env === 'production', + IS_DEV: env === 'development', + + // Classnames + CLASS: { + LOADING: 'is-loading', + READY: 'is-ready', + LOADED: 'is-loaded' + } +} diff --git a/assets/scripts/modules/Load.js b/assets/scripts/modules/Load.js index 8ff708ef..58910428 100644 --- a/assets/scripts/modules/Load.js +++ b/assets/scripts/modules/Load.js @@ -1,5 +1,6 @@ import { module } from 'modujs'; -import modularLoad from 'modularload'; +import barba from '@barba/core'; +import config from '../config' export default class extends module { constructor(m) { @@ -7,16 +8,20 @@ export default class extends module { } init() { - const load = new modularLoad({ - enterDelay: 0, - transitions: { - customTransition: {} - } - }); - - load.on('loaded', (transition, oldContainer, newContainer) => { - this.call('destroy', oldContainer, 'app'); - this.call('update', newContainer, 'app'); + barba.init({ + debug: config.IS_DEV, + schema: { + prefix: 'data-load', + }, + transitions: [{ + name: 'default-transition', + leave: (data) => { + this.call('destroy', data.current.container, 'app'); + }, + enter: (data) => { + this.call('update', data.next.container, 'app'); + } + }] }); } } diff --git a/assets/scripts/utils/dom.js b/assets/scripts/utils/dom.js new file mode 100644 index 00000000..ed173bd7 --- /dev/null +++ b/assets/scripts/utils/dom.js @@ -0,0 +1,4 @@ +const $html = document.documentElement; +const $body = document.body; + +export { $html, $body }; diff --git a/assets/scripts/utils/environment.js b/assets/scripts/utils/environment.js deleted file mode 100644 index 0a179b0e..00000000 --- a/assets/scripts/utils/environment.js +++ /dev/null @@ -1,8 +0,0 @@ -const APP_NAME = 'Boilerplate'; -const DATA_API_KEY = '.data-api'; - -const html = document.documentElement; -const body = document.body; -const isDebug = html.hasAttribute('data-debug'); - -export { APP_NAME, DATA_API_KEY, html, body, isDebug }; diff --git a/assets/scripts/utils/visibility.js b/assets/scripts/utils/visibility.js index 63805033..1a870b70 100644 --- a/assets/scripts/utils/visibility.js +++ b/assets/scripts/utils/visibility.js @@ -1,6 +1,5 @@ import { isFunction } from './is'; import { arrayContains, findByKeyValue, removeFromArray } from './array'; -import { $document, $window, $html, $body } from './environment'; const CALLBACKS = { hidden: [], @@ -22,7 +21,7 @@ const PREFIX = 'v-'; let UUID = 0; // Main event -$document.on('visibilitychange', function(event) { +document.addEventListener('visibilitychange', function(event) { if (document.hidden) { onDocumentChange('hidden'); } else { diff --git a/package-lock.json b/package-lock.json index 75c7f7eb..84b03c18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,9 @@ "name": "@locomotivemtl/boilerplate", "version": "1.0.0", "dependencies": { + "@barba/core": "^2.9.7", "locomotive-scroll": "^4.1.4", "modujs": "^1.4.2", - "modularload": "^1.2.6", "normalize.css": "^8.0.1", "svg4everybody": "^2.1.9" }, @@ -66,6 +66,15 @@ "node": ">=6.9.0" } }, + "node_modules/@barba/core": { + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/@barba/core/-/core-2.9.7.tgz", + "integrity": "sha512-GLtpty1fzWnd500AoUHd+hJoSCVElqth20P4W8Bf0IAA9nd1K5e8NbPnCegXC4KzOwV+JHk5DVofAZcoc+I54Q==", + "dependencies": { + "is-promise": "^2.1.0", + "path-to-regexp": "^3.0.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", @@ -3467,6 +3476,11 @@ "node": ">=0.10.0" } }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -4267,11 +4281,6 @@ "resolved": "https://registry.npmjs.org/modujs/-/modujs-1.4.2.tgz", "integrity": "sha512-avRHEER9hblxPSDEqX3Z05rmjp8pAcbZL4BjLqxfpL8jDxyCJUEO71fLC8raSLnfg7C3GRTwsN/nAPGiKDO3dA==" }, - "node_modules/modularload": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/modularload/-/modularload-1.2.8.tgz", - "integrity": "sha512-UKYB5nXTcv4DVkXJzwdp9vPw7QFfphkLc3Ka3MeFu9kw27SE/9MZivoHIvrtyUqa4Pt7Ss81h4siSI3dt+5xCQ==" - }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -4851,6 +4860,11 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -7135,6 +7149,15 @@ "js-tokens": "^4.0.0" } }, + "@barba/core": { + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/@barba/core/-/core-2.9.7.tgz", + "integrity": "sha512-GLtpty1fzWnd500AoUHd+hJoSCVElqth20P4W8Bf0IAA9nd1K5e8NbPnCegXC4KzOwV+JHk5DVofAZcoc+I54Q==", + "requires": { + "is-promise": "^2.1.0", + "path-to-regexp": "^3.0.0" + } + }, "@gar/promisify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", @@ -9728,6 +9751,11 @@ "isobject": "^3.0.1" } }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -10368,11 +10396,6 @@ "resolved": "https://registry.npmjs.org/modujs/-/modujs-1.4.2.tgz", "integrity": "sha512-avRHEER9hblxPSDEqX3Z05rmjp8pAcbZL4BjLqxfpL8jDxyCJUEO71fLC8raSLnfg7C3GRTwsN/nAPGiKDO3dA==" }, - "modularload": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/modularload/-/modularload-1.2.8.tgz", - "integrity": "sha512-UKYB5nXTcv4DVkXJzwdp9vPw7QFfphkLc3Ka3MeFu9kw27SE/9MZivoHIvrtyUqa4Pt7Ss81h4siSI3dt+5xCQ==" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -10818,6 +10841,11 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", diff --git a/package.json b/package.json index af5db4a7..77b3eec2 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,9 @@ "build": "node --experimental-json-modules --no-warnings build/build.js" }, "dependencies": { + "@barba/core": "^2.9.7", "locomotive-scroll": "^4.1.4", "modujs": "^1.4.2", - "modularload": "^1.2.6", "normalize.css": "^8.0.1", "svg4everybody": "^2.1.9" }, diff --git a/www/assets/scripts/app.js b/www/assets/scripts/app.js index 7dbbe650..6bbb3d71 100644 --- a/www/assets/scripts/app.js +++ b/www/assets/scripts/app.js @@ -56,6 +56,1004 @@ }); }; + // node_modules/@barba/core/dist/barba.umd.js + var require_barba_umd = __commonJS({ + "node_modules/@barba/core/dist/barba.umd.js"(exports, module) { + !function(t, n) { + typeof exports == "object" && typeof module != "undefined" ? module.exports = n() : typeof define == "function" && define.amd ? define(n) : (t = t || self).barba = n(); + }(exports, function() { + function t(t2, n2) { + for (var r2 = 0; r2 < n2.length; r2++) { + var e2 = n2[r2]; + e2.enumerable = e2.enumerable || false, e2.configurable = true, "value" in e2 && (e2.writable = true), Object.defineProperty(t2, e2.key, e2); + } + } + function n(n2, r2, e2) { + return r2 && t(n2.prototype, r2), e2 && t(n2, e2), n2; + } + function r() { + return (r = Object.assign || function(t2) { + for (var n2 = 1; n2 < arguments.length; n2++) { + var r2 = arguments[n2]; + for (var e2 in r2) + Object.prototype.hasOwnProperty.call(r2, e2) && (t2[e2] = r2[e2]); + } + return t2; + }).apply(this, arguments); + } + function e(t2, n2) { + t2.prototype = Object.create(n2.prototype), t2.prototype.constructor = t2, t2.__proto__ = n2; + } + function i(t2) { + return (i = Object.setPrototypeOf ? Object.getPrototypeOf : function(t3) { + return t3.__proto__ || Object.getPrototypeOf(t3); + })(t2); + } + function o(t2, n2) { + return (o = Object.setPrototypeOf || function(t3, n3) { + return t3.__proto__ = n3, t3; + })(t2, n2); + } + function u(t2, n2, r2) { + return (u = function() { + if (typeof Reflect == "undefined" || !Reflect.construct) + return false; + if (Reflect.construct.sham) + return false; + if (typeof Proxy == "function") + return true; + try { + return Date.prototype.toString.call(Reflect.construct(Date, [], function() { + })), true; + } catch (t3) { + return false; + } + }() ? Reflect.construct : function(t3, n3, r3) { + var e2 = [null]; + e2.push.apply(e2, n3); + var i2 = new (Function.bind.apply(t3, e2))(); + return r3 && o(i2, r3.prototype), i2; + }).apply(null, arguments); + } + function f(t2) { + var n2 = typeof Map == "function" ? /* @__PURE__ */ new Map() : void 0; + return (f = function(t3) { + if (t3 === null || Function.toString.call(t3).indexOf("[native code]") === -1) + return t3; + if (typeof t3 != "function") + throw new TypeError("Super expression must either be null or a function"); + if (n2 !== void 0) { + if (n2.has(t3)) + return n2.get(t3); + n2.set(t3, r2); + } + function r2() { + return u(t3, arguments, i(this).constructor); + } + return r2.prototype = Object.create(t3.prototype, { constructor: { value: r2, enumerable: false, writable: true, configurable: true } }), o(r2, t3); + })(t2); + } + function s(t2, n2) { + try { + var r2 = t2(); + } catch (t3) { + return n2(t3); + } + return r2 && r2.then ? r2.then(void 0, n2) : r2; + } + typeof Symbol != "undefined" && (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))), typeof Symbol != "undefined" && (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol("Symbol.asyncIterator"))); + var c, a = "2.9.7", h = function() { + }; + !function(t2) { + t2[t2.off = 0] = "off", t2[t2.error = 1] = "error", t2[t2.warning = 2] = "warning", t2[t2.info = 3] = "info", t2[t2.debug = 4] = "debug"; + }(c || (c = {})); + var v = c.off, l = function() { + function t2(t3) { + this.t = t3; + } + t2.getLevel = function() { + return v; + }, t2.setLevel = function(t3) { + return v = c[t3]; + }; + var n2 = t2.prototype; + return n2.error = function() { + for (var t3 = arguments.length, n3 = new Array(t3), r2 = 0; r2 < t3; r2++) + n3[r2] = arguments[r2]; + this.i(console.error, c.error, n3); + }, n2.warn = function() { + for (var t3 = arguments.length, n3 = new Array(t3), r2 = 0; r2 < t3; r2++) + n3[r2] = arguments[r2]; + this.i(console.warn, c.warning, n3); + }, n2.info = function() { + for (var t3 = arguments.length, n3 = new Array(t3), r2 = 0; r2 < t3; r2++) + n3[r2] = arguments[r2]; + this.i(console.info, c.info, n3); + }, n2.debug = function() { + for (var t3 = arguments.length, n3 = new Array(t3), r2 = 0; r2 < t3; r2++) + n3[r2] = arguments[r2]; + this.i(console.log, c.debug, n3); + }, n2.i = function(n3, r2, e2) { + r2 <= t2.getLevel() && n3.apply(console, ["[" + this.t + "] "].concat(e2)); + }, t2; + }(), d = O, m = E2, p = g, w = x, b = T, y = "/", P = new RegExp(["(\\\\.)", "(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"), "g"); + function g(t2, n2) { + for (var r2, e2 = [], i2 = 0, o2 = 0, u2 = "", f2 = n2 && n2.delimiter || y, s2 = n2 && n2.whitelist || void 0, c2 = false; (r2 = P.exec(t2)) !== null; ) { + var a2 = r2[0], h2 = r2[1], v2 = r2.index; + if (u2 += t2.slice(o2, v2), o2 = v2 + a2.length, h2) + u2 += h2[1], c2 = true; + else { + var l2 = "", d2 = r2[2], m2 = r2[3], p2 = r2[4], w2 = r2[5]; + if (!c2 && u2.length) { + var b2 = u2.length - 1, g2 = u2[b2]; + (!s2 || s2.indexOf(g2) > -1) && (l2 = g2, u2 = u2.slice(0, b2)); + } + u2 && (e2.push(u2), u2 = "", c2 = false); + var E3 = m2 || p2, x2 = l2 || f2; + e2.push({ name: d2 || i2++, prefix: l2, delimiter: x2, optional: w2 === "?" || w2 === "*", repeat: w2 === "+" || w2 === "*", pattern: E3 ? A2(E3) : "[^" + k(x2 === f2 ? x2 : x2 + f2) + "]+?" }); + } + } + return (u2 || o2 < t2.length) && e2.push(u2 + t2.substr(o2)), e2; + } + function E2(t2, n2) { + return function(r2, e2) { + var i2 = t2.exec(r2); + if (!i2) + return false; + for (var o2 = i2[0], u2 = i2.index, f2 = {}, s2 = e2 && e2.decode || decodeURIComponent, c2 = 1; c2 < i2.length; c2++) + if (i2[c2] !== void 0) { + var a2 = n2[c2 - 1]; + f2[a2.name] = a2.repeat ? i2[c2].split(a2.delimiter).map(function(t3) { + return s2(t3, a2); + }) : s2(i2[c2], a2); + } + return { path: o2, index: u2, params: f2 }; + }; + } + function x(t2, n2) { + for (var r2 = new Array(t2.length), e2 = 0; e2 < t2.length; e2++) + typeof t2[e2] == "object" && (r2[e2] = new RegExp("^(?:" + t2[e2].pattern + ")$", R(n2))); + return function(n3, e3) { + for (var i2 = "", o2 = e3 && e3.encode || encodeURIComponent, u2 = !e3 || e3.validate !== false, f2 = 0; f2 < t2.length; f2++) { + var s2 = t2[f2]; + if (typeof s2 != "string") { + var c2, a2 = n3 ? n3[s2.name] : void 0; + if (Array.isArray(a2)) { + if (!s2.repeat) + throw new TypeError('Expected "' + s2.name + '" to not repeat, but got array'); + if (a2.length === 0) { + if (s2.optional) + continue; + throw new TypeError('Expected "' + s2.name + '" to not be empty'); + } + for (var h2 = 0; h2 < a2.length; h2++) { + if (c2 = o2(a2[h2], s2), u2 && !r2[f2].test(c2)) + throw new TypeError('Expected all "' + s2.name + '" to match "' + s2.pattern + '"'); + i2 += (h2 === 0 ? s2.prefix : s2.delimiter) + c2; + } + } else if (typeof a2 != "string" && typeof a2 != "number" && typeof a2 != "boolean") { + if (!s2.optional) + throw new TypeError('Expected "' + s2.name + '" to be ' + (s2.repeat ? "an array" : "a string")); + } else { + if (c2 = o2(String(a2), s2), u2 && !r2[f2].test(c2)) + throw new TypeError('Expected "' + s2.name + '" to match "' + s2.pattern + '", but got "' + c2 + '"'); + i2 += s2.prefix + c2; + } + } else + i2 += s2; + } + return i2; + }; + } + function k(t2) { + return t2.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"); + } + function A2(t2) { + return t2.replace(/([=!:$/()])/g, "\\$1"); + } + function R(t2) { + return t2 && t2.sensitive ? "" : "i"; + } + function T(t2, n2, r2) { + for (var e2 = (r2 = r2 || {}).strict, i2 = r2.start !== false, o2 = r2.end !== false, u2 = r2.delimiter || y, f2 = [].concat(r2.endsWith || []).map(k).concat("$").join("|"), s2 = i2 ? "^" : "", c2 = 0; c2 < t2.length; c2++) { + var a2 = t2[c2]; + if (typeof a2 == "string") + s2 += k(a2); + else { + var h2 = a2.repeat ? "(?:" + a2.pattern + ")(?:" + k(a2.delimiter) + "(?:" + a2.pattern + "))*" : a2.pattern; + n2 && n2.push(a2), s2 += a2.optional ? a2.prefix ? "(?:" + k(a2.prefix) + "(" + h2 + "))?" : "(" + h2 + ")?" : k(a2.prefix) + "(" + h2 + ")"; + } + } + if (o2) + e2 || (s2 += "(?:" + k(u2) + ")?"), s2 += f2 === "$" ? "$" : "(?=" + f2 + ")"; + else { + var v2 = t2[t2.length - 1], l2 = typeof v2 == "string" ? v2[v2.length - 1] === u2 : v2 === void 0; + e2 || (s2 += "(?:" + k(u2) + "(?=" + f2 + "))?"), l2 || (s2 += "(?=" + k(u2) + "|" + f2 + ")"); + } + return new RegExp(s2, R(r2)); + } + function O(t2, n2, r2) { + return t2 instanceof RegExp ? function(t3, n3) { + if (!n3) + return t3; + var r3 = t3.source.match(/\((?!\?)/g); + if (r3) + for (var e2 = 0; e2 < r3.length; e2++) + n3.push({ name: e2, prefix: null, delimiter: null, optional: false, repeat: false, pattern: null }); + return t3; + }(t2, n2) : Array.isArray(t2) ? function(t3, n3, r3) { + for (var e2 = [], i2 = 0; i2 < t3.length; i2++) + e2.push(O(t3[i2], n3, r3).source); + return new RegExp("(?:" + e2.join("|") + ")", R(r3)); + }(t2, n2, r2) : function(t3, n3, r3) { + return T(g(t3, r3), n3, r3); + }(t2, n2, r2); + } + d.match = function(t2, n2) { + var r2 = []; + return E2(O(t2, r2, n2), r2); + }, d.regexpToFunction = m, d.parse = p, d.compile = function(t2, n2) { + return x(g(t2, n2), n2); + }, d.tokensToFunction = w, d.tokensToRegExp = b; + var S = { container: "container", history: "history", namespace: "namespace", prefix: "data-barba", prevent: "prevent", wrapper: "wrapper" }, j = new (function() { + function t2() { + this.o = S, this.u = new DOMParser(); + } + var n2 = t2.prototype; + return n2.toString = function(t3) { + return t3.outerHTML; + }, n2.toDocument = function(t3) { + return this.u.parseFromString(t3, "text/html"); + }, n2.toElement = function(t3) { + var n3 = document.createElement("div"); + return n3.innerHTML = t3, n3; + }, n2.getHtml = function(t3) { + return t3 === void 0 && (t3 = document), this.toString(t3.documentElement); + }, n2.getWrapper = function(t3) { + return t3 === void 0 && (t3 = document), t3.querySelector("[" + this.o.prefix + '="' + this.o.wrapper + '"]'); + }, n2.getContainer = function(t3) { + return t3 === void 0 && (t3 = document), t3.querySelector("[" + this.o.prefix + '="' + this.o.container + '"]'); + }, n2.removeContainer = function(t3) { + document.body.contains(t3) && t3.parentNode.removeChild(t3); + }, n2.addContainer = function(t3, n3) { + var r2 = this.getContainer(); + r2 ? this.s(t3, r2) : n3.appendChild(t3); + }, n2.getNamespace = function(t3) { + t3 === void 0 && (t3 = document); + var n3 = t3.querySelector("[" + this.o.prefix + "-" + this.o.namespace + "]"); + return n3 ? n3.getAttribute(this.o.prefix + "-" + this.o.namespace) : null; + }, n2.getHref = function(t3) { + if (t3.tagName && t3.tagName.toLowerCase() === "a") { + if (typeof t3.href == "string") + return t3.href; + var n3 = t3.getAttribute("href") || t3.getAttribute("xlink:href"); + if (n3) + return this.resolveUrl(n3.baseVal || n3); + } + return null; + }, n2.resolveUrl = function() { + for (var t3 = arguments.length, n3 = new Array(t3), r2 = 0; r2 < t3; r2++) + n3[r2] = arguments[r2]; + var e2 = n3.length; + if (e2 === 0) + throw new Error("resolveUrl requires at least one argument; got none."); + var i2 = document.createElement("base"); + if (i2.href = arguments[0], e2 === 1) + return i2.href; + var o2 = document.getElementsByTagName("head")[0]; + o2.insertBefore(i2, o2.firstChild); + for (var u2, f2 = document.createElement("a"), s2 = 1; s2 < e2; s2++) + f2.href = arguments[s2], i2.href = u2 = f2.href; + return o2.removeChild(i2), u2; + }, n2.s = function(t3, n3) { + n3.parentNode.insertBefore(t3, n3.nextSibling); + }, t2; + }())(), M = new (function() { + function t2() { + this.h = [], this.v = -1; + } + var e2 = t2.prototype; + return e2.init = function(t3, n2) { + this.l = "barba"; + var r2 = { ns: n2, scroll: { x: window.scrollX, y: window.scrollY }, url: t3 }; + this.h.push(r2), this.v = 0; + var e3 = { from: this.l, index: 0, states: [].concat(this.h) }; + window.history && window.history.replaceState(e3, "", t3); + }, e2.change = function(t3, n2, r2) { + if (r2 && r2.state) { + var e3 = r2.state, i2 = e3.index; + n2 = this.m(this.v - i2), this.replace(e3.states), this.v = i2; + } else + this.add(t3, n2); + return n2; + }, e2.add = function(t3, n2) { + var r2 = this.size, e3 = this.p(n2), i2 = { ns: "tmp", scroll: { x: window.scrollX, y: window.scrollY }, url: t3 }; + this.h.push(i2), this.v = r2; + var o2 = { from: this.l, index: r2, states: [].concat(this.h) }; + switch (e3) { + case "push": + window.history && window.history.pushState(o2, "", t3); + break; + case "replace": + window.history && window.history.replaceState(o2, "", t3); + } + }, e2.update = function(t3, n2) { + var e3 = n2 || this.v, i2 = r({}, this.get(e3), {}, t3); + this.set(e3, i2); + }, e2.remove = function(t3) { + t3 ? this.h.splice(t3, 1) : this.h.pop(), this.v--; + }, e2.clear = function() { + this.h = [], this.v = -1; + }, e2.replace = function(t3) { + this.h = t3; + }, e2.get = function(t3) { + return this.h[t3]; + }, e2.set = function(t3, n2) { + return this.h[t3] = n2; + }, e2.p = function(t3) { + var n2 = "push", r2 = t3, e3 = S.prefix + "-" + S.history; + return r2.hasAttribute && r2.hasAttribute(e3) && (n2 = r2.getAttribute(e3)), n2; + }, e2.m = function(t3) { + return Math.abs(t3) > 1 ? t3 > 0 ? "forward" : "back" : t3 === 0 ? "popstate" : t3 > 0 ? "back" : "forward"; + }, n(t2, [{ key: "current", get: function() { + return this.h[this.v]; + } }, { key: "state", get: function() { + return this.h[this.h.length - 1]; + } }, { key: "previous", get: function() { + return this.v < 1 ? null : this.h[this.v - 1]; + } }, { key: "size", get: function() { + return this.h.length; + } }]), t2; + }())(), L = function(t2, n2) { + try { + var r2 = function() { + if (!n2.next.html) + return Promise.resolve(t2).then(function(t3) { + var r3 = n2.next; + if (t3) { + var e2 = j.toElement(t3); + r3.namespace = j.getNamespace(e2), r3.container = j.getContainer(e2), r3.html = t3, M.update({ ns: r3.namespace }); + var i2 = j.toDocument(t3); + document.title = i2.title; + } + }); + }(); + return Promise.resolve(r2 && r2.then ? r2.then(function() { + }) : void 0); + } catch (t3) { + return Promise.reject(t3); + } + }, $ = d, _ = { __proto__: null, update: L, nextTick: function() { + return new Promise(function(t2) { + window.requestAnimationFrame(t2); + }); + }, pathToRegexp: $ }, q = function() { + return window.location.origin; + }, B2 = function(t2) { + return t2 === void 0 && (t2 = window.location.href), U(t2).port; + }, U = function(t2) { + var n2, r2 = t2.match(/:\d+/); + if (r2 === null) + /^http/.test(t2) && (n2 = 80), /^https/.test(t2) && (n2 = 443); + else { + var e2 = r2[0].substring(1); + n2 = parseInt(e2, 10); + } + var i2, o2 = t2.replace(q(), ""), u2 = {}, f2 = o2.indexOf("#"); + f2 >= 0 && (i2 = o2.slice(f2 + 1), o2 = o2.slice(0, f2)); + var s2 = o2.indexOf("?"); + return s2 >= 0 && (u2 = D(o2.slice(s2 + 1)), o2 = o2.slice(0, s2)), { hash: i2, path: o2, port: n2, query: u2 }; + }, D = function(t2) { + return t2.split("&").reduce(function(t3, n2) { + var r2 = n2.split("="); + return t3[r2[0]] = r2[1], t3; + }, {}); + }, F = function(t2) { + return t2 === void 0 && (t2 = window.location.href), t2.replace(/(\/#.*|\/|#.*)$/, ""); + }, H = { __proto__: null, getHref: function() { + return window.location.href; + }, getOrigin: q, getPort: B2, getPath: function(t2) { + return t2 === void 0 && (t2 = window.location.href), U(t2).path; + }, parse: U, parseQuery: D, clean: F }; + function I(t2, n2, r2) { + return n2 === void 0 && (n2 = 2e3), new Promise(function(e2, i2) { + var o2 = new XMLHttpRequest(); + o2.onreadystatechange = function() { + if (o2.readyState === XMLHttpRequest.DONE) { + if (o2.status === 200) + e2(o2.responseText); + else if (o2.status) { + var n3 = { status: o2.status, statusText: o2.statusText }; + r2(t2, n3), i2(n3); + } + } + }, o2.ontimeout = function() { + var e3 = new Error("Timeout error [" + n2 + "]"); + r2(t2, e3), i2(e3); + }, o2.onerror = function() { + var n3 = new Error("Fetch error"); + r2(t2, n3), i2(n3); + }, o2.open("GET", t2), o2.timeout = n2, o2.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml"), o2.setRequestHeader("x-barba", "yes"), o2.send(); + }); + } + var C2 = function(t2) { + return !!t2 && (typeof t2 == "object" || typeof t2 == "function") && typeof t2.then == "function"; + }; + function N(t2, n2) { + return n2 === void 0 && (n2 = {}), function() { + for (var r2 = arguments.length, e2 = new Array(r2), i2 = 0; i2 < r2; i2++) + e2[i2] = arguments[i2]; + var o2 = false, u2 = new Promise(function(r3, i3) { + n2.async = function() { + return o2 = true, function(t3, n3) { + t3 ? i3(t3) : r3(n3); + }; + }; + var u3 = t2.apply(n2, e2); + o2 || (C2(u3) ? u3.then(r3, i3) : r3(u3)); + }); + return u2; + }; + } + var X = new (function(t2) { + function n2() { + var n3; + return (n3 = t2.call(this) || this).logger = new l("@barba/core"), n3.all = ["ready", "page", "reset", "currentAdded", "currentRemoved", "nextAdded", "nextRemoved", "beforeOnce", "once", "afterOnce", "before", "beforeLeave", "leave", "afterLeave", "beforeEnter", "enter", "afterEnter", "after"], n3.registered = /* @__PURE__ */ new Map(), n3.init(), n3; + } + e(n2, t2); + var r2 = n2.prototype; + return r2.init = function() { + var t3 = this; + this.registered.clear(), this.all.forEach(function(n3) { + t3[n3] || (t3[n3] = function(r3, e2) { + t3.registered.has(n3) || t3.registered.set(n3, /* @__PURE__ */ new Set()), t3.registered.get(n3).add({ ctx: e2 || {}, fn: r3 }); + }); + }); + }, r2.do = function(t3) { + for (var n3 = this, r3 = arguments.length, e2 = new Array(r3 > 1 ? r3 - 1 : 0), i2 = 1; i2 < r3; i2++) + e2[i2 - 1] = arguments[i2]; + if (this.registered.has(t3)) { + var o2 = Promise.resolve(); + return this.registered.get(t3).forEach(function(t4) { + o2 = o2.then(function() { + return N(t4.fn, t4.ctx).apply(void 0, e2); + }); + }), o2.catch(function(r4) { + n3.logger.debug("Hook error [" + t3 + "]"), n3.logger.error(r4); + }); + } + return Promise.resolve(); + }, r2.clear = function() { + var t3 = this; + this.all.forEach(function(n3) { + delete t3[n3]; + }), this.init(); + }, r2.help = function() { + this.logger.info("Available hooks: " + this.all.join(",")); + var t3 = []; + this.registered.forEach(function(n3, r3) { + return t3.push(r3); + }), this.logger.info("Registered hooks: " + t3.join(",")); + }, n2; + }(h))(), z = function() { + function t2(t3) { + if (this.P = [], typeof t3 == "boolean") + this.g = t3; + else { + var n2 = Array.isArray(t3) ? t3 : [t3]; + this.P = n2.map(function(t4) { + return $(t4); + }); + } + } + return t2.prototype.checkHref = function(t3) { + if (typeof this.g == "boolean") + return this.g; + var n2 = U(t3).path; + return this.P.some(function(t4) { + return t4.exec(n2) !== null; + }); + }, t2; + }(), G = function(t2) { + function n2(n3) { + var r2; + return (r2 = t2.call(this, n3) || this).k = /* @__PURE__ */ new Map(), r2; + } + e(n2, t2); + var i2 = n2.prototype; + return i2.set = function(t3, n3, r2) { + return this.k.set(t3, { action: r2, request: n3 }), { action: r2, request: n3 }; + }, i2.get = function(t3) { + return this.k.get(t3); + }, i2.getRequest = function(t3) { + return this.k.get(t3).request; + }, i2.getAction = function(t3) { + return this.k.get(t3).action; + }, i2.has = function(t3) { + return !this.checkHref(t3) && this.k.has(t3); + }, i2.delete = function(t3) { + return this.k.delete(t3); + }, i2.update = function(t3, n3) { + var e2 = r({}, this.k.get(t3), {}, n3); + return this.k.set(t3, e2), e2; + }, n2; + }(z), Q = function() { + return !window.history.pushState; + }, W = function(t2) { + return !t2.el || !t2.href; + }, J = function(t2) { + var n2 = t2.event; + return n2.which > 1 || n2.metaKey || n2.ctrlKey || n2.shiftKey || n2.altKey; + }, K = function(t2) { + var n2 = t2.el; + return n2.hasAttribute("target") && n2.target === "_blank"; + }, V = function(t2) { + var n2 = t2.el; + return n2.protocol !== void 0 && window.location.protocol !== n2.protocol || n2.hostname !== void 0 && window.location.hostname !== n2.hostname; + }, Y = function(t2) { + var n2 = t2.el; + return n2.port !== void 0 && B2() !== B2(n2.href); + }, Z = function(t2) { + var n2 = t2.el; + return n2.getAttribute && typeof n2.getAttribute("download") == "string"; + }, tt = function(t2) { + return t2.el.hasAttribute(S.prefix + "-" + S.prevent); + }, nt = function(t2) { + return Boolean(t2.el.closest("[" + S.prefix + "-" + S.prevent + '="all"]')); + }, rt = function(t2) { + var n2 = t2.href; + return F(n2) === F() && B2(n2) === B2(); + }, et = function(t2) { + function n2(n3) { + var r3; + return (r3 = t2.call(this, n3) || this).suite = [], r3.tests = /* @__PURE__ */ new Map(), r3.init(), r3; + } + e(n2, t2); + var r2 = n2.prototype; + return r2.init = function() { + this.add("pushState", Q), this.add("exists", W), this.add("newTab", J), this.add("blank", K), this.add("corsDomain", V), this.add("corsPort", Y), this.add("download", Z), this.add("preventSelf", tt), this.add("preventAll", nt), this.add("sameUrl", rt, false); + }, r2.add = function(t3, n3, r3) { + r3 === void 0 && (r3 = true), this.tests.set(t3, n3), r3 && this.suite.push(t3); + }, r2.run = function(t3, n3, r3, e2) { + return this.tests.get(t3)({ el: n3, event: r3, href: e2 }); + }, r2.checkLink = function(t3, n3, r3) { + var e2 = this; + return this.suite.some(function(i2) { + return e2.run(i2, t3, n3, r3); + }); + }, n2; + }(z), it = function(t2) { + function n2(r2, e2) { + var i2; + e2 === void 0 && (e2 = "Barba error"); + for (var o2 = arguments.length, u2 = new Array(o2 > 2 ? o2 - 2 : 0), f2 = 2; f2 < o2; f2++) + u2[f2 - 2] = arguments[f2]; + return (i2 = t2.call.apply(t2, [this].concat(u2)) || this).error = r2, i2.label = e2, Error.captureStackTrace && Error.captureStackTrace(function(t3) { + if (t3 === void 0) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return t3; + }(i2), n2), i2.name = "BarbaError", i2; + } + return e(n2, t2), n2; + }(f(Error)), ot = function() { + function t2(t3) { + t3 === void 0 && (t3 = []), this.logger = new l("@barba/core"), this.all = [], this.page = [], this.once = [], this.A = [{ name: "namespace", type: "strings" }, { name: "custom", type: "function" }], t3 && (this.all = this.all.concat(t3)), this.update(); + } + var n2 = t2.prototype; + return n2.add = function(t3, n3) { + switch (t3) { + case "rule": + this.A.splice(n3.position || 0, 0, n3.value); + break; + case "transition": + default: + this.all.push(n3); + } + this.update(); + }, n2.resolve = function(t3, n3) { + var r2 = this; + n3 === void 0 && (n3 = {}); + var e2 = n3.once ? this.once : this.page; + e2 = e2.filter(n3.self ? function(t4) { + return t4.name && t4.name === "self"; + } : function(t4) { + return !t4.name || t4.name !== "self"; + }); + var i2 = /* @__PURE__ */ new Map(), o2 = e2.find(function(e3) { + var o3 = true, u3 = {}; + return !(!n3.self || e3.name !== "self") || (r2.A.reverse().forEach(function(n4) { + o3 && (o3 = r2.R(e3, n4, t3, u3), e3.from && e3.to && (o3 = r2.R(e3, n4, t3, u3, "from") && r2.R(e3, n4, t3, u3, "to")), e3.from && !e3.to && (o3 = r2.R(e3, n4, t3, u3, "from")), !e3.from && e3.to && (o3 = r2.R(e3, n4, t3, u3, "to"))); + }), i2.set(e3, u3), o3); + }), u2 = i2.get(o2), f2 = []; + if (f2.push(n3.once ? "once" : "page"), n3.self && f2.push("self"), u2) { + var s2, c2 = [o2]; + Object.keys(u2).length > 0 && c2.push(u2), (s2 = this.logger).info.apply(s2, ["Transition found [" + f2.join(",") + "]"].concat(c2)); + } else + this.logger.info("No transition found [" + f2.join(",") + "]"); + return o2; + }, n2.update = function() { + var t3 = this; + this.all = this.all.map(function(n3) { + return t3.T(n3); + }).sort(function(t4, n3) { + return t4.priority - n3.priority; + }).reverse().map(function(t4) { + return delete t4.priority, t4; + }), this.page = this.all.filter(function(t4) { + return t4.leave !== void 0 || t4.enter !== void 0; + }), this.once = this.all.filter(function(t4) { + return t4.once !== void 0; + }); + }, n2.R = function(t3, n3, r2, e2, i2) { + var o2 = true, u2 = false, f2 = t3, s2 = n3.name, c2 = s2, a2 = s2, h2 = s2, v2 = i2 ? f2[i2] : f2, l2 = i2 === "to" ? r2.next : r2.current; + if (i2 ? v2 && v2[s2] : v2[s2]) { + switch (n3.type) { + case "strings": + default: + var d2 = Array.isArray(v2[c2]) ? v2[c2] : [v2[c2]]; + l2[c2] && d2.indexOf(l2[c2]) !== -1 && (u2 = true), d2.indexOf(l2[c2]) === -1 && (o2 = false); + break; + case "object": + var m2 = Array.isArray(v2[a2]) ? v2[a2] : [v2[a2]]; + l2[a2] ? (l2[a2].name && m2.indexOf(l2[a2].name) !== -1 && (u2 = true), m2.indexOf(l2[a2].name) === -1 && (o2 = false)) : o2 = false; + break; + case "function": + v2[h2](r2) ? u2 = true : o2 = false; + } + u2 && (i2 ? (e2[i2] = e2[i2] || {}, e2[i2][s2] = f2[i2][s2]) : e2[s2] = f2[s2]); + } + return o2; + }, n2.O = function(t3, n3, r2) { + var e2 = 0; + return (t3[n3] || t3.from && t3.from[n3] || t3.to && t3.to[n3]) && (e2 += Math.pow(10, r2), t3.from && t3.from[n3] && (e2 += 1), t3.to && t3.to[n3] && (e2 += 2)), e2; + }, n2.T = function(t3) { + var n3 = this; + t3.priority = 0; + var r2 = 0; + return this.A.forEach(function(e2, i2) { + r2 += n3.O(t3, e2.name, i2 + 1); + }), t3.priority = r2, t3; + }, t2; + }(), ut = function() { + function t2(t3) { + t3 === void 0 && (t3 = []), this.logger = new l("@barba/core"), this.S = false, this.store = new ot(t3); + } + var r2 = t2.prototype; + return r2.get = function(t3, n2) { + return this.store.resolve(t3, n2); + }, r2.doOnce = function(t3) { + var n2 = t3.data, r3 = t3.transition; + try { + var e2 = function() { + i2.S = false; + }, i2 = this, o2 = r3 || {}; + i2.S = true; + var u2 = s(function() { + return Promise.resolve(i2.j("beforeOnce", n2, o2)).then(function() { + return Promise.resolve(i2.once(n2, o2)).then(function() { + return Promise.resolve(i2.j("afterOnce", n2, o2)).then(function() { + }); + }); + }); + }, function(t4) { + i2.S = false, i2.logger.debug("Transition error [before/after/once]"), i2.logger.error(t4); + }); + return Promise.resolve(u2 && u2.then ? u2.then(e2) : e2()); + } catch (t4) { + return Promise.reject(t4); + } + }, r2.doPage = function(t3) { + var n2 = t3.data, r3 = t3.transition, e2 = t3.page, i2 = t3.wrapper; + try { + var o2 = function(t4) { + if (u2) + return t4; + f2.S = false; + }, u2 = false, f2 = this, c2 = r3 || {}, a2 = c2.sync === true || false; + f2.S = true; + var h2 = s(function() { + function t4() { + return Promise.resolve(f2.j("before", n2, c2)).then(function() { + var t5 = false; + function r5(r6) { + return t5 ? r6 : Promise.resolve(f2.remove(n2)).then(function() { + return Promise.resolve(f2.j("after", n2, c2)).then(function() { + }); + }); + } + var o3 = function() { + if (a2) + return s(function() { + return Promise.resolve(f2.add(n2, i2)).then(function() { + return Promise.resolve(f2.j("beforeLeave", n2, c2)).then(function() { + return Promise.resolve(f2.j("beforeEnter", n2, c2)).then(function() { + return Promise.resolve(Promise.all([f2.leave(n2, c2), f2.enter(n2, c2)])).then(function() { + return Promise.resolve(f2.j("afterLeave", n2, c2)).then(function() { + return Promise.resolve(f2.j("afterEnter", n2, c2)).then(function() { + }); + }); + }); + }); + }); + }); + }, function(t6) { + if (f2.M(t6)) + throw new it(t6, "Transition error [sync]"); + }); + var r6 = function(r7) { + return t5 ? r7 : s(function() { + var t6 = function() { + if (o4 !== false) + return Promise.resolve(f2.add(n2, i2)).then(function() { + return Promise.resolve(f2.j("beforeEnter", n2, c2)).then(function() { + return Promise.resolve(f2.enter(n2, c2, o4)).then(function() { + return Promise.resolve(f2.j("afterEnter", n2, c2)).then(function() { + }); + }); + }); + }); + }(); + if (t6 && t6.then) + return t6.then(function() { + }); + }, function(t6) { + if (f2.M(t6)) + throw new it(t6, "Transition error [before/after/enter]"); + }); + }, o4 = false, u3 = s(function() { + return Promise.resolve(f2.j("beforeLeave", n2, c2)).then(function() { + return Promise.resolve(Promise.all([f2.leave(n2, c2), L(e2, n2)]).then(function(t6) { + return t6[0]; + })).then(function(t6) { + return o4 = t6, Promise.resolve(f2.j("afterLeave", n2, c2)).then(function() { + }); + }); + }); + }, function(t6) { + if (f2.M(t6)) + throw new it(t6, "Transition error [before/after/leave]"); + }); + return u3 && u3.then ? u3.then(r6) : r6(u3); + }(); + return o3 && o3.then ? o3.then(r5) : r5(o3); + }); + } + var r4 = function() { + if (a2) + return Promise.resolve(L(e2, n2)).then(function() { + }); + }(); + return r4 && r4.then ? r4.then(t4) : t4(); + }, function(t4) { + if (f2.S = false, t4.name && t4.name === "BarbaError") + throw f2.logger.debug(t4.label), f2.logger.error(t4.error), t4; + throw f2.logger.debug("Transition error [page]"), f2.logger.error(t4), t4; + }); + return Promise.resolve(h2 && h2.then ? h2.then(o2) : o2(h2)); + } catch (t4) { + return Promise.reject(t4); + } + }, r2.once = function(t3, n2) { + try { + return Promise.resolve(X.do("once", t3, n2)).then(function() { + return n2.once ? N(n2.once, n2)(t3) : Promise.resolve(); + }); + } catch (t4) { + return Promise.reject(t4); + } + }, r2.leave = function(t3, n2) { + try { + return Promise.resolve(X.do("leave", t3, n2)).then(function() { + return n2.leave ? N(n2.leave, n2)(t3) : Promise.resolve(); + }); + } catch (t4) { + return Promise.reject(t4); + } + }, r2.enter = function(t3, n2, r3) { + try { + return Promise.resolve(X.do("enter", t3, n2)).then(function() { + return n2.enter ? N(n2.enter, n2)(t3, r3) : Promise.resolve(); + }); + } catch (t4) { + return Promise.reject(t4); + } + }, r2.add = function(t3, n2) { + try { + return j.addContainer(t3.next.container, n2), X.do("nextAdded", t3), Promise.resolve(); + } catch (t4) { + return Promise.reject(t4); + } + }, r2.remove = function(t3) { + try { + return j.removeContainer(t3.current.container), X.do("currentRemoved", t3), Promise.resolve(); + } catch (t4) { + return Promise.reject(t4); + } + }, r2.M = function(t3) { + return t3.message ? !/Timeout error|Fetch error/.test(t3.message) : !t3.status; + }, r2.j = function(t3, n2, r3) { + try { + return Promise.resolve(X.do(t3, n2, r3)).then(function() { + return r3[t3] ? N(r3[t3], r3)(n2) : Promise.resolve(); + }); + } catch (t4) { + return Promise.reject(t4); + } + }, n(t2, [{ key: "isRunning", get: function() { + return this.S; + }, set: function(t3) { + this.S = t3; + } }, { key: "hasOnce", get: function() { + return this.store.once.length > 0; + } }, { key: "hasSelf", get: function() { + return this.store.all.some(function(t3) { + return t3.name === "self"; + }); + } }, { key: "shouldWait", get: function() { + return this.store.all.some(function(t3) { + return t3.to && !t3.to.route || t3.sync; + }); + } }]), t2; + }(), ft = function() { + function t2(t3) { + var n2 = this; + this.names = ["beforeLeave", "afterLeave", "beforeEnter", "afterEnter"], this.byNamespace = /* @__PURE__ */ new Map(), t3.length !== 0 && (t3.forEach(function(t4) { + n2.byNamespace.set(t4.namespace, t4); + }), this.names.forEach(function(t4) { + X[t4](n2.L(t4)); + })); + } + return t2.prototype.L = function(t3) { + var n2 = this; + return function(r2) { + var e2 = t3.match(/enter/i) ? r2.next : r2.current, i2 = n2.byNamespace.get(e2.namespace); + return i2 && i2[t3] ? N(i2[t3], i2)(r2) : Promise.resolve(); + }; + }, t2; + }(); + Element.prototype.matches || (Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector), Element.prototype.closest || (Element.prototype.closest = function(t2) { + var n2 = this; + do { + if (n2.matches(t2)) + return n2; + n2 = n2.parentElement || n2.parentNode; + } while (n2 !== null && n2.nodeType === 1); + return null; + }); + var st = { container: null, html: "", namespace: "", url: { hash: "", href: "", path: "", port: null, query: {} } }; + return new (function() { + function t2() { + this.version = a, this.schemaPage = st, this.Logger = l, this.logger = new l("@barba/core"), this.plugins = [], this.hooks = X, this.dom = j, this.helpers = _, this.history = M, this.request = I, this.url = H; + } + var e2 = t2.prototype; + return e2.use = function(t3, n2) { + var r2 = this.plugins; + r2.indexOf(t3) > -1 ? this.logger.warn("Plugin [" + t3.name + "] already installed.") : typeof t3.install == "function" ? (t3.install(this, n2), r2.push(t3)) : this.logger.warn("Plugin [" + t3.name + '] has no "install" method.'); + }, e2.init = function(t3) { + var n2 = t3 === void 0 ? {} : t3, e3 = n2.transitions, i2 = e3 === void 0 ? [] : e3, o2 = n2.views, u2 = o2 === void 0 ? [] : o2, f2 = n2.schema, s2 = f2 === void 0 ? S : f2, c2 = n2.requestError, a2 = n2.timeout, h2 = a2 === void 0 ? 2e3 : a2, v2 = n2.cacheIgnore, d2 = v2 !== void 0 && v2, m2 = n2.prefetchIgnore, p2 = m2 !== void 0 && m2, w2 = n2.preventRunning, b2 = w2 !== void 0 && w2, y2 = n2.prevent, P2 = y2 === void 0 ? null : y2, g2 = n2.debug, E3 = n2.logLevel; + if (l.setLevel((g2 !== void 0 && g2) === true ? "debug" : E3 === void 0 ? "off" : E3), this.logger.info(this.version), Object.keys(s2).forEach(function(t4) { + S[t4] && (S[t4] = s2[t4]); + }), this.$ = c2, this.timeout = h2, this.cacheIgnore = d2, this.prefetchIgnore = p2, this.preventRunning = b2, this._ = this.dom.getWrapper(), !this._) + throw new Error("[@barba/core] No Barba wrapper found"); + this._.setAttribute("aria-live", "polite"), this.q(); + var x2 = this.data.current; + if (!x2.container) + throw new Error("[@barba/core] No Barba container found"); + if (this.cache = new G(d2), this.prevent = new et(p2), this.transitions = new ut(i2), this.views = new ft(u2), P2 !== null) { + if (typeof P2 != "function") + throw new Error("[@barba/core] Prevent should be a function"); + this.prevent.add("preventCustom", P2); + } + this.history.init(x2.url.href, x2.namespace), this.B = this.B.bind(this), this.U = this.U.bind(this), this.D = this.D.bind(this), this.F(), this.plugins.forEach(function(t4) { + return t4.init(); + }); + var k2 = this.data; + k2.trigger = "barba", k2.next = k2.current, k2.current = r({}, this.schemaPage), this.hooks.do("ready", k2), this.once(k2), this.q(); + }, e2.destroy = function() { + this.q(), this.H(), this.history.clear(), this.hooks.clear(), this.plugins = []; + }, e2.force = function(t3) { + window.location.assign(t3); + }, e2.go = function(t3, n2, r2) { + var e3; + if (n2 === void 0 && (n2 = "barba"), this.transitions.isRunning) + this.force(t3); + else if (!(e3 = n2 === "popstate" ? this.history.current && this.url.getPath(this.history.current.url) === this.url.getPath(t3) : this.prevent.run("sameUrl", null, null, t3)) || this.transitions.hasSelf) + return n2 = this.history.change(t3, n2, r2), r2 && (r2.stopPropagation(), r2.preventDefault()), this.page(t3, n2, e3); + }, e2.once = function(t3) { + try { + var n2 = this; + return Promise.resolve(n2.hooks.do("beforeEnter", t3)).then(function() { + function r2() { + return Promise.resolve(n2.hooks.do("afterEnter", t3)).then(function() { + }); + } + var e3 = function() { + if (n2.transitions.hasOnce) { + var r3 = n2.transitions.get(t3, { once: true }); + return Promise.resolve(n2.transitions.doOnce({ transition: r3, data: t3 })).then(function() { + }); + } + }(); + return e3 && e3.then ? e3.then(r2) : r2(); + }); + } catch (t4) { + return Promise.reject(t4); + } + }, e2.page = function(t3, n2, e3) { + try { + var i2 = function() { + var t4 = o2.data; + return Promise.resolve(o2.hooks.do("page", t4)).then(function() { + var n3 = s(function() { + var n4 = o2.transitions.get(t4, { once: false, self: e3 }); + return Promise.resolve(o2.transitions.doPage({ data: t4, page: u2, transition: n4, wrapper: o2._ })).then(function() { + o2.q(); + }); + }, function() { + l.getLevel() === 0 && o2.force(t4.current.url.href); + }); + if (n3 && n3.then) + return n3.then(function() { + }); + }); + }, o2 = this; + o2.data.next.url = r({ href: t3 }, o2.url.parse(t3)), o2.data.trigger = n2; + var u2 = o2.cache.has(t3) ? o2.cache.update(t3, { action: "click" }).request : o2.cache.set(t3, o2.request(t3, o2.timeout, o2.onRequestError.bind(o2, n2)), "click").request, f2 = function() { + if (o2.transitions.shouldWait) + return Promise.resolve(L(u2, o2.data)).then(function() { + }); + }(); + return Promise.resolve(f2 && f2.then ? f2.then(i2) : i2()); + } catch (t4) { + return Promise.reject(t4); + } + }, e2.onRequestError = function(t3) { + this.transitions.isRunning = false; + for (var n2 = arguments.length, r2 = new Array(n2 > 1 ? n2 - 1 : 0), e3 = 1; e3 < n2; e3++) + r2[e3 - 1] = arguments[e3]; + var i2 = r2[0], o2 = r2[1], u2 = this.cache.getAction(i2); + return this.cache.delete(i2), !(this.$ && this.$(t3, u2, i2, o2) === false || (u2 === "click" && this.force(i2), 1)); + }, e2.prefetch = function(t3) { + var n2 = this; + this.cache.has(t3) || this.cache.set(t3, this.request(t3, this.timeout, this.onRequestError.bind(this, "barba")).catch(function(t4) { + n2.logger.error(t4); + }), "prefetch"); + }, e2.F = function() { + this.prefetchIgnore !== true && (document.addEventListener("mouseover", this.B), document.addEventListener("touchstart", this.B)), document.addEventListener("click", this.U), window.addEventListener("popstate", this.D); + }, e2.H = function() { + this.prefetchIgnore !== true && (document.removeEventListener("mouseover", this.B), document.removeEventListener("touchstart", this.B)), document.removeEventListener("click", this.U), window.removeEventListener("popstate", this.D); + }, e2.B = function(t3) { + var n2 = this, r2 = this.I(t3); + if (r2) { + var e3 = this.dom.getHref(r2); + this.prevent.checkHref(e3) || this.cache.has(e3) || this.cache.set(e3, this.request(e3, this.timeout, this.onRequestError.bind(this, r2)).catch(function(t4) { + n2.logger.error(t4); + }), "enter"); + } + }, e2.U = function(t3) { + var n2 = this.I(t3); + if (n2) + return this.transitions.isRunning && this.preventRunning ? (t3.preventDefault(), void t3.stopPropagation()) : void this.go(this.dom.getHref(n2), n2, t3); + }, e2.D = function(t3) { + this.go(this.url.getHref(), "popstate", t3); + }, e2.I = function(t3) { + for (var n2 = t3.target; n2 && !this.dom.getHref(n2); ) + n2 = n2.parentNode; + if (n2 && !this.prevent.checkLink(n2, t3, this.dom.getHref(n2))) + return n2; + }, e2.q = function() { + var t3 = this.url.getHref(), n2 = { container: this.dom.getContainer(), html: this.dom.getHtml(), namespace: this.dom.getNamespace(), url: r({ href: t3 }, this.url.parse(t3)) }; + this.C = { current: n2, next: r({}, this.schemaPage), trigger: void 0 }, this.hooks.do("reset", this.data); + }, n(t2, [{ key: "data", get: function() { + return this.C; + } }, { key: "wrapper", get: function() { + return this._; + } }]), t2; + }())(); + }); + } + }); + // node_modules/svg4everybody/dist/svg4everybody.js var require_svg4everybody = __commonJS({ "node_modules/svg4everybody/dist/svg4everybody.js"(exports, module) { @@ -250,13 +1248,13 @@ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var _default = /* @__PURE__ */ function() { - function _default4(options) { - _classCallCheck(this, _default4); + function _default3(options) { + _classCallCheck(this, _default3); this.mAttr = "data-" + options.dataName; this.mCaptureEvents = ["mouseenter", "mouseleave"]; this.el = options.el; } - _createClass(_default4, [{ + _createClass(_default3, [{ key: "mInit", value: function mInit(modules) { var _this = this; @@ -433,11 +1431,11 @@ value: function destroy() { } }]); - return _default4; + return _default3; }(); var _default$1 = /* @__PURE__ */ function() { - function _default4(options) { - _classCallCheck(this, _default4); + function _default3(options) { + _classCallCheck(this, _default3); this.app; this.modules = options.modules; this.currentModules = {}; @@ -445,7 +1443,7 @@ this.newModules = {}; this.moduleId = 0; } - _createClass(_default4, [{ + _createClass(_default3, [{ key: "init", value: function init2(app2, scope) { var _this = this; @@ -602,7 +1600,7 @@ return str.charAt(0).toUpperCase() + str.slice(1); } }]); - return _default4; + return _default3; }(); var main_esm_default = _default$1; @@ -613,467 +1611,21 @@ Scroll: () => Scroll_default }); - // node_modules/modularload/dist/main.esm.js - function _classCallCheck2(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties2(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass2(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties2(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties2(Constructor, staticProps); - return Constructor; - } - function _slicedToArray2(arr, i) { - return _arrayWithHoles2(arr) || _iterableToArrayLimit2(arr, i) || _unsupportedIterableToArray2(arr, i) || _nonIterableRest2(); - } - function _arrayWithHoles2(arr) { - if (Array.isArray(arr)) - return arr; - } - function _iterableToArrayLimit2(arr, i) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) - return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) - break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) - _i["return"](); - } finally { - if (_d) - throw _e; - } - } - return _arr; - } - function _unsupportedIterableToArray2(o, minLen) { - if (!o) - return; - if (typeof o === "string") - return _arrayLikeToArray2(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) - n = o.constructor.name; - if (n === "Map" || n === "Set") - return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) - return _arrayLikeToArray2(o, minLen); - } - function _arrayLikeToArray2(arr, len) { - if (len == null || len > arr.length) - len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) - arr2[i] = arr[i]; - return arr2; - } - function _nonIterableRest2() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var _default2 = /* @__PURE__ */ function() { - function _default4(options) { - _classCallCheck2(this, _default4); - this.defaults = { - name: "load", - loadingClass: "is-loading", - loadedClass: "is-loaded", - readyClass: "is-ready", - transitionsPrefix: "is-", - transitionsHistory: true, - enterDelay: 0, - exitDelay: 0, - loadedDelay: 0, - isLoaded: false, - isEntered: false, - isUrl: false, - transitionContainer: null, - popstateIgnore: false - }; - Object.assign(this, this.defaults, options); - this.options = options; - this.namespace = "modular"; - this.html = document.documentElement; - this.href = window.location.href; - this.container = "data-" + this.name + "-container"; - this.subContainer = false; - this.prevTransition = null; - this.loadAttributes = ["src", "srcset", "style", "href"]; - this.isInserted = false; - this.isLoading = false; - this.enterTimeout = false; - this.controller = new AbortController(); - this.classContainer = this.html; - this.isChrome = navigator.userAgent.indexOf("Chrome") != -1 ? true : false; - this.init(); + // assets/scripts/modules/Load.js + var import_core = __toESM(require_barba_umd(), 1); + + // assets/scripts/config.js + var env = "development"; + var config_default = config = { + ENV: env, + IS_PROD: env === "production", + IS_DEV: env === "development", + CLASS: { + LOADING: "is-loading", + READY: "is-ready", + LOADED: "is-loaded" } - _createClass2(_default4, [{ - key: "init", - value: function init2() { - var _this = this; - window.addEventListener("popstate", function(e) { - return _this.checkState(e); - }, false); - this.html.addEventListener("click", function(e) { - return _this.checkClick(e); - }, false); - this.loadEls(document); - } - }, { - key: "checkClick", - value: function checkClick(e) { - if (!e.ctrlKey && !e.metaKey) { - var target = e.target; - while (target && target !== document) { - if (target.matches("a") && target.getAttribute("download") == null) { - var href = target.getAttribute("href"); - if (!href.startsWith("#") && !href.startsWith("mailto:") && !href.startsWith("tel:")) { - e.preventDefault(); - this.reset(); - this.getClickOptions(target); - } - break; - } - target = target.parentNode; - } - } - } - }, { - key: "checkState", - value: function checkState() { - if (typeof this.popstateIgnore === "string" && window.location.href.indexOf(this.popstateIgnore) > -1) { - return; - } - this.reset(); - this.getStateOptions(); - } - }, { - key: "reset", - value: function reset() { - if (this.isLoading) { - this.controller.abort(); - this.isLoading = false; - this.controller = new AbortController(); - } - window.clearTimeout(this.enterTimeout); - if (this.isInserted) { - this.removeContainer(); - } - this.classContainer = this.html; - Object.assign(this, this.defaults, this.options); - } - }, { - key: "getClickOptions", - value: function getClickOptions(link) { - this.transition = link.getAttribute("data-" + this.name); - this.isUrl = link.getAttribute("data-" + this.name + "-url"); - var href = link.getAttribute("href"); - var target = link.getAttribute("target"); - if (target == "_blank") { - window.open(href, "_blank"); - return; - } - if (this.transition == "false") { - window.location = href; - return; - } - this.setOptions(href, true); - } - }, { - key: "getStateOptions", - value: function getStateOptions() { - if (this.transitionsHistory) { - this.transition = history.state; - } else { - this.transition = false; - } - var href = window.location.href; - this.setOptions(href); - } - }, { - key: "goTo", - value: function goTo(href, transition, isUrl) { - this.reset(); - this.transition = transition; - this.isUrl = isUrl; - this.setOptions(href, true); - } - }, { - key: "setOptions", - value: function setOptions(href, push) { - var container = "[" + this.container + "]"; - var oldContainer; - if (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; - oldContainer = document.querySelector(this.transitionContainer); - } - if (oldContainer) { - container = this.transitionContainer; - this.oldContainer = oldContainer; - this.classContainer = this.oldContainer.parentNode; - if (!this.subContainer) { - history.replaceState(this.transition, null, this.href); - } - this.subContainer = true; - } else { - this.oldContainer = document.querySelector(container); - if (this.subContainer) { - history.replaceState(this.prevTransition, null, this.href); - } - this.subContainer = false; - } - this.href = href; - this.parentContainer = this.oldContainer.parentNode; - if (this.isUrl === "" || this.isUrl != null && this.isUrl != "false" && this.isUrl != false) { - history.pushState(this.transition, null, href); - } else { - this.oldContainer.classList.add("is-old"); - this.setLoading(); - this.startEnterDelay(); - this.loadHref(href, container, push); - } - } - }, { - key: "setLoading", - value: function setLoading() { - this.classContainer.classList.remove(this.loadedClass, this.readyClass); - this.classContainer.classList.add(this.loadingClass); - this.classContainer.classList.remove(this.transitionsPrefix + this.prevTransition); - if (this.transition) { - this.classContainer.classList.add(this.transitionsPrefix + this.transition); - } - if (!this.subContainer) { - this.prevTransition = this.transition; - } - var loadingEvent = new Event(this.namespace + "loading"); - window.dispatchEvent(loadingEvent); - } - }, { - key: "startEnterDelay", - value: function startEnterDelay() { - var _this2 = this; - this.enterTimeout = window.setTimeout(function() { - _this2.isEntered = true; - if (_this2.isLoaded) { - _this2.transitionContainers(); - } - }, this.enterDelay); - } - }, { - key: "loadHref", - value: function loadHref(href, container, push) { - var _this3 = this; - this.isLoading = true; - var signal = this.controller.signal; - fetch(href, { - signal - }).then(function(response) { - return response.text(); - }).then(function(data) { - if (push) { - history.pushState(_this3.transition, null, href); - } - var parser = new DOMParser(); - _this3.data = parser.parseFromString(data, "text/html"); - _this3.newContainer = _this3.data.querySelector(container); - _this3.newContainer.classList.add("is-new"); - _this3.parentNewContainer = _this3.newContainer.parentNode; - _this3.hideContainer(); - _this3.parentContainer.insertBefore(_this3.newContainer, _this3.oldContainer); - _this3.isInserted = true; - _this3.setSvgs(); - _this3.isLoaded = true; - if (_this3.isEntered) { - _this3.transitionContainers(); - } - _this3.loadEls(_this3.newContainer); - _this3.isLoading = false; - })["catch"](function(err) { - window.location = href; - }); - } - }, { - key: "transitionContainers", - value: function transitionContainers() { - var _this4 = this; - this.setAttributes(); - this.showContainer(); - this.setLoaded(); - setTimeout(function() { - _this4.removeContainer(); - _this4.setReady(); - }, this.exitDelay); - } - }, { - key: "setSvgs", - value: function setSvgs() { - if (this.isChrome) { - var svgs = this.newContainer.querySelectorAll("use"); - if (svgs.length) { - svgs.forEach(function(svg) { - var xhref = svg.getAttribute("xlink:href"); - if (xhref) { - svg.parentNode.innerHTML = ''; - } else { - var href = svg.getAttribute("href"); - if (href) - svg.parentNode.innerHTML = ''; - } - }); - } - } - } - }, { - key: "setAttributes", - value: function setAttributes() { - var _this5 = this; - var title = this.data.getElementsByTagName("title")[0]; - var newDesc = this.data.head.querySelector('meta[name="description"]'); - var oldDesc = document.head.querySelector('meta[name="description"]'); - var container; - var newContainer; - if (this.subContainer) { - newContainer = this.parentNewContainer; - container = document.querySelector(this.transitionContainer).parentNode; - } else { - newContainer = this.data.querySelector("html"); - container = document.querySelector("html"); - } - var datas = Object.assign({}, newContainer.dataset); - if (title) - document.title = title.innerText; - if (oldDesc && newDesc) - oldDesc.setAttribute("content", newDesc.getAttribute("content")); - if (datas) { - Object.entries(datas).forEach(function(_ref) { - var _ref2 = _slicedToArray2(_ref, 2), key = _ref2[0], val = _ref2[1]; - container.setAttribute("data-" + _this5.toDash(key), val); - }); - } - } - }, { - key: "toDash", - value: function toDash(str) { - return str.split(/(?=[A-Z])/).join("-").toLowerCase(); - } - }, { - key: "hideContainer", - value: function hideContainer() { - this.newContainer.style.visibility = "hidden"; - this.newContainer.style.height = 0; - this.newContainer.style.overflow = "hidden"; - } - }, { - key: "showContainer", - value: function showContainer() { - this.newContainer.style.visibility = ""; - this.newContainer.style.height = ""; - this.newContainer.style.overflow = ""; - } - }, { - key: "loadEls", - value: function loadEls(container) { - var _this6 = this; - var promises = []; - this.loadAttributes.forEach(function(attr) { - var data = "data-" + _this6.name + "-" + attr; - var els = container.querySelectorAll("[" + data + "]"); - if (els.length) { - els.forEach(function(el) { - var elData = el.getAttribute(data); - el.setAttribute(attr, elData); - if (attr == "src" || attr == "srcset") { - var promise = new Promise(function(resolve) { - el.onload = function() { - return resolve(el); - }; - }); - promises.push(promise); - } - }); - } - }); - Promise.all(promises).then(function(val) { - var imagesEvent = new Event(_this6.namespace + "images"); - window.dispatchEvent(imagesEvent); - }); - } - }, { - key: "setLoaded", - value: function setLoaded() { - var _this7 = this; - this.classContainer.classList.remove(this.loadingClass); - setTimeout(function() { - _this7.classContainer.classList.add(_this7.loadedClass); - }, this.loadedDelay); - var loadedEvent = new Event(this.namespace + "loaded"); - window.dispatchEvent(loadedEvent); - } - }, { - key: "removeContainer", - value: function removeContainer() { - this.parentContainer.removeChild(this.oldContainer); - this.newContainer.classList.remove("is-new"); - this.isInserted = false; - } - }, { - key: "setReady", - value: function setReady() { - this.classContainer.classList.add(this.readyClass); - var readyEvent = new Event(this.namespace + "ready"); - window.dispatchEvent(readyEvent); - } - }, { - key: "on", - value: function on(event, func) { - var _this8 = this; - window.addEventListener(this.namespace + event, function() { - switch (event) { - case "loading": - return func(_this8.transition, _this8.oldContainer); - case "loaded": - return func(_this8.transition, _this8.oldContainer, _this8.newContainer); - case "ready": - return func(_this8.transition, _this8.newContainer); - default: - return func(); - } - }, false); - } - }]); - return _default4; - }(); - var main_esm_default2 = _default2; + }; // assets/scripts/modules/Load.js var Load_default = class extends _default { @@ -1081,16 +1633,26 @@ super(m); } init() { - const load = new main_esm_default2({ - enterDelay: 0, - transitions: { - customTransition: {} - } - }); - load.on("loaded", (transition, oldContainer, newContainer) => { - this.call("destroy", oldContainer, "app"); - this.call("update", newContainer, "app"); + this.barba = import_core.default.init({ + debug: config_default.IS_DEV, + schema: { + prefix: "data-load" + }, + transitions: [{ + name: "default-transition", + beforeLeave: () => { + }, + leave: (data) => { + this.call("destroy", data.current.container, "app"); + }, + beforeEnter: () => { + }, + enter: (data) => { + this.call("update", data.next.container, "app"); + } + }] }); + console.log("init", this.barba, import_core.default); } }; @@ -1161,12 +1723,12 @@ } // node_modules/locomotive-scroll/dist/locomotive-scroll.esm.js - function _classCallCheck3(instance, Constructor) { + function _classCallCheck2(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - function _defineProperties3(target, props) { + function _defineProperties2(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; @@ -1176,11 +1738,11 @@ Object.defineProperty(target, descriptor.key, descriptor); } } - function _createClass3(Constructor, protoProps, staticProps) { + function _createClass2(Constructor, protoProps, staticProps) { if (protoProps) - _defineProperties3(Constructor.prototype, protoProps); + _defineProperties2(Constructor.prototype, protoProps); if (staticProps) - _defineProperties3(Constructor, staticProps); + _defineProperties2(Constructor, staticProps); return Constructor; } function _defineProperty2(obj, key, value) { @@ -1317,17 +1879,17 @@ } return _get(target, property, receiver || target); } - function _slicedToArray3(arr, i) { - return _arrayWithHoles3(arr) || _iterableToArrayLimit3(arr, i) || _unsupportedIterableToArray3(arr, i) || _nonIterableRest3(); + function _slicedToArray2(arr, i) { + return _arrayWithHoles2(arr) || _iterableToArrayLimit2(arr, i) || _unsupportedIterableToArray2(arr, i) || _nonIterableRest2(); } function _toConsumableArray2(arr) { - return _arrayWithoutHoles2(arr) || _iterableToArray2(arr) || _unsupportedIterableToArray3(arr) || _nonIterableSpread2(); + return _arrayWithoutHoles2(arr) || _iterableToArray2(arr) || _unsupportedIterableToArray2(arr) || _nonIterableSpread2(); } function _arrayWithoutHoles2(arr) { if (Array.isArray(arr)) - return _arrayLikeToArray3(arr); + return _arrayLikeToArray2(arr); } - function _arrayWithHoles3(arr) { + function _arrayWithHoles2(arr) { if (Array.isArray(arr)) return arr; } @@ -1335,7 +1897,7 @@ if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } - function _iterableToArrayLimit3(arr, i) { + function _iterableToArrayLimit2(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; @@ -1362,20 +1924,20 @@ } return _arr; } - function _unsupportedIterableToArray3(o, minLen) { + function _unsupportedIterableToArray2(o, minLen) { if (!o) return; if (typeof o === "string") - return _arrayLikeToArray3(o, minLen); + return _arrayLikeToArray2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) - return _arrayLikeToArray3(o, minLen); + return _arrayLikeToArray2(o, minLen); } - function _arrayLikeToArray3(arr, len) { + function _arrayLikeToArray2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) @@ -1385,7 +1947,7 @@ function _nonIterableSpread2() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - function _nonIterableRest3() { + function _nonIterableRest2() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var defaults = { @@ -1428,10 +1990,10 @@ gestureDirection: "vertical" } }; - var _default3 = /* @__PURE__ */ function() { - function _default4() { + var _default2 = /* @__PURE__ */ function() { + function _default3() { var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - _classCallCheck3(this, _default4); + _classCallCheck2(this, _default3); Object.assign(this, defaults, options); this.smartphone = defaults.smartphone; if (options.smartphone) @@ -1491,7 +2053,7 @@ this.html.classList.add(this.initClass); window.addEventListener("resize", this.checkResize, false); } - _createClass3(_default4, [{ + _createClass2(_default3, [{ key: "init", value: function init2() { this.initEvents(); @@ -1572,7 +2134,7 @@ var scrollLeft = this.instance.scroll.x; var scrollRight = scrollLeft + this.windowWidth; Object.entries(this.els).forEach(function(_ref) { - var _ref2 = _slicedToArray3(_ref, 2), i = _ref2[0], el = _ref2[1]; + var _ref2 = _slicedToArray2(_ref, 2), i = _ref2[0], el = _ref2[1]; if (el && (!el.inView || hasCallEventSet)) { if (_this3.direction === "horizontal") { if (scrollRight >= el.left && scrollLeft < el.right) { @@ -1729,7 +2291,7 @@ this.html.classList.remove(this.initClass); } }]); - return _default4; + return _default3; }(); var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; function createCommonjsModule(fn, module) { @@ -1743,13 +2305,13 @@ if ("scrollBehavior" in d.documentElement.style && w.__forceSmoothScrollPolyfill__ !== true) { return; } - var Element = w.HTMLElement || w.Element; + var Element2 = w.HTMLElement || w.Element; var SCROLL_TIME = 468; var original = { scroll: w.scroll || w.scrollTo, scrollBy: w.scrollBy, - elementScroll: Element.prototype.scroll || scrollElement, - scrollIntoView: Element.prototype.scrollIntoView + elementScroll: Element2.prototype.scroll || scrollElement, + scrollIntoView: Element2.prototype.scrollIntoView }; var now = w.performance && w.performance.now ? w.performance.now.bind(w.performance) : Date.now; function isMicrosoftBrowser(userAgent) { @@ -1858,7 +2420,7 @@ } smoothScroll.call(w, d.body, ~~arguments[0].left + (w.scrollX || w.pageXOffset), ~~arguments[0].top + (w.scrollY || w.pageYOffset)); }; - Element.prototype.scroll = Element.prototype.scrollTo = function() { + Element2.prototype.scroll = Element2.prototype.scrollTo = function() { if (arguments[0] === void 0) { return; } @@ -1873,7 +2435,7 @@ var top = arguments[0].top; smoothScroll.call(this, this, typeof left === "undefined" ? this.scrollLeft : ~~left, typeof top === "undefined" ? this.scrollTop : ~~top); }; - Element.prototype.scrollBy = function() { + Element2.prototype.scrollBy = function() { if (arguments[0] === void 0) { return; } @@ -1887,7 +2449,7 @@ behavior: arguments[0].behavior }); }; - Element.prototype.scrollIntoView = function() { + Element2.prototype.scrollIntoView = function() { if (shouldBailOut(arguments[0]) === true) { original.scrollIntoView.call(this, arguments[0] === void 0 ? true : arguments[0]); return; @@ -1920,12 +2482,12 @@ }); var smoothscroll_1 = smoothscroll.polyfill; var _default$12 = /* @__PURE__ */ function(_Core) { - _inherits(_default4, _Core); - var _super = _createSuper(_default4); - function _default4() { + _inherits(_default3, _Core); + var _super = _createSuper(_default3); + function _default3() { var _this; var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - _classCallCheck3(this, _default4); + _classCallCheck2(this, _default3); _this = _super.call(this, options); if (_this.resetNativeScroll) { if (history.scrollRestoration) { @@ -1940,19 +2502,19 @@ } return _this; } - _createClass3(_default4, [{ + _createClass2(_default3, [{ key: "init", value: function init2() { this.instance.scroll.y = window.pageYOffset; this.addElements(); this.detectElements(); - _get(_getPrototypeOf(_default4.prototype), "init", this).call(this); + _get(_getPrototypeOf(_default3.prototype), "init", this).call(this); } }, { key: "checkScroll", value: function checkScroll() { var _this2 = this; - _get(_getPrototypeOf(_default4.prototype), "checkScroll", this).call(this); + _get(_getPrototypeOf(_default3.prototype), "checkScroll", this).call(this); if (this.getDirection) { this.addDirection(); } @@ -2063,7 +2625,7 @@ value: function updateElements() { var _this4 = this; Object.entries(this.els).forEach(function(_ref) { - var _ref2 = _slicedToArray3(_ref, 2), i = _ref2[0], el = _ref2[1]; + var _ref2 = _slicedToArray2(_ref, 2), i = _ref2[0], el = _ref2[1]; var top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y; var bottom = top + el.targetEl.offsetHeight; var relativeOffset = _this4.getRelativeOffset(el.offset); @@ -2152,12 +2714,12 @@ }, { key: "destroy", value: function destroy() { - _get(_getPrototypeOf(_default4.prototype), "destroy", this).call(this); + _get(_getPrototypeOf(_default3.prototype), "destroy", this).call(this); window.removeEventListener("scroll", this.checkScroll, false); } }]); - return _default4; - }(_default3); + return _default3; + }(_default2); var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; @@ -2700,12 +3262,12 @@ END: 35 }; var _default$2 = /* @__PURE__ */ function(_Core) { - _inherits(_default4, _Core); - var _super = _createSuper(_default4); - function _default4() { + _inherits(_default3, _Core); + var _super = _createSuper(_default3); + function _default3() { var _this; var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - _classCallCheck3(this, _default4); + _classCallCheck2(this, _default3); if (history.scrollRestoration) { history.scrollRestoration = "manual"; } @@ -2724,7 +3286,7 @@ window.addEventListener("keydown", _this.checkKey, false); return _this; } - _createClass3(_default4, [{ + _createClass2(_default3, [{ key: "init", value: function init2() { var _this2 = this; @@ -2766,7 +3328,7 @@ this.addElements(); this.checkScroll(true); this.transformElements(true, true); - _get(_getPrototypeOf(_default4.prototype), "init", this).call(this); + _get(_getPrototypeOf(_default3.prototype), "init", this).call(this); } }, { key: "setScrollLimit", @@ -2896,7 +3458,7 @@ this.stopScrolling(); } Object.entries(this.sections).forEach(function(_ref) { - var _ref2 = _slicedToArray3(_ref, 2), i = _ref2[0], section = _ref2[1]; + var _ref2 = _slicedToArray2(_ref, 2), i = _ref2[0], section = _ref2[1]; if (section.persistent || _this4.instance.scroll[_this4.directionAxis] > section.offset[_this4.directionAxis] && _this4.instance.scroll[_this4.directionAxis] < section.limit[_this4.directionAxis]) { if (_this4.direction === "horizontal") { _this4.transform(section.el, -_this4.instance.scroll[_this4.directionAxis], 0); @@ -2936,7 +3498,7 @@ this.transform(this.scrollbarThumb, 0, scrollBarTranslation); } } - _get(_getPrototypeOf(_default4.prototype), "checkScroll", this).call(this); + _get(_getPrototypeOf(_default3.prototype), "checkScroll", this).call(this); this.hasScrollTicking = false; } } @@ -3142,7 +3704,7 @@ els.forEach(function(el, index) { var targetParents = getParents(el); var section = Object.entries(_this6.sections).map(function(_ref3) { - var _ref4 = _slicedToArray3(_ref3, 2), key = _ref4[0], section2 = _ref4[1]; + var _ref4 = _slicedToArray2(_ref3, 2), key = _ref4[0], section2 = _ref4[1]; return section2; }).find(function(section2) { return targetParents.includes(section2.el); @@ -3333,7 +3895,7 @@ y: this.instance.scroll.y + this.windowMiddle.y }; Object.entries(this.parallaxElements).forEach(function(_ref5) { - var _ref6 = _slicedToArray3(_ref5, 2), i = _ref6[0], current = _ref6[1]; + var _ref6 = _slicedToArray2(_ref5, 2), i = _ref6[0], current = _ref6[1]; var transformDistance = false; if (isForced) { transformDistance = 0; @@ -3444,7 +4006,7 @@ var targetParents = getParents(target); var parentSection = targetParents.find(function(candidate) { return Object.entries(_this9.sections).map(function(_ref7) { - var _ref8 = _slicedToArray3(_ref7, 2), key = _ref8[0], section = _ref8[1]; + var _ref8 = _slicedToArray2(_ref7, 2), key = _ref8[0], section = _ref8[1]; return section; }).find(function(section) { return section.el == candidate; @@ -3538,7 +4100,7 @@ }, { key: "destroy", value: function destroy() { - _get(_getPrototypeOf(_default4.prototype), "destroy", this).call(this); + _get(_getPrototypeOf(_default3.prototype), "destroy", this).call(this); this.stopScrolling(); this.html.classList.remove(this.smoothClass); this.vs.destroy(); @@ -3546,12 +4108,12 @@ window.removeEventListener("keydown", this.checkKey, false); } }]); - return _default4; - }(_default3); + return _default3; + }(_default2); var Smooth = /* @__PURE__ */ function() { function Smooth2() { var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - _classCallCheck3(this, Smooth2); + _classCallCheck2(this, Smooth2); this.options = options; Object.assign(this, defaults, options); this.smartphone = defaults.smartphone; @@ -3568,7 +4130,7 @@ console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible (smartphone)"); this.init(); } - _createClass3(Smooth2, [{ + _createClass2(Smooth2, [{ key: "init", value: function init2() { 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; @@ -3688,9 +4250,9 @@ function init() { globals_default(); app.init(app); - html.classList.add("is-loaded"); - html.classList.add("is-ready"); - html.classList.remove("is-loading"); + html.classList.add(config_default.CLASS.LOADED); + html.classList.add(config_default.CLASS.READY); + html.classList.remove(config_default.CLASS.LOADING); } })(); /* diff --git a/www/assets/scripts/app.js.map b/www/assets/scripts/app.js.map index c5254735..202c0117 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", "../../../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", "const LAZY_LOADED_IMAGES = []\n\nexport function loadImage(url, options = {}) {\n return new Promise((resolve, reject) => {\n const $img = new Image();\n\n if (options.crossOrigin) {\n $img.crossOrigin = options.crossOrigin;\n }\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 the given image.\n *\n * @param {HTMLImageElement} $el - The image element.\n * @param {?string} url - The URI to lazy load into $el.\n * If falsey, the value of the `data-src` attribute on $el will be used as the URI.\n * @param {?function} callback - A function to call when the image is loaded.\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\n if (!loadedImage.url) {\n return;\n }\n\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 = $el.closest('.c-lazy');\n\n if(lazyParent) {\n lazyParent.classList.add('-lazy-loaded')\n lazyParent.style.backgroundImage = ''\n }\n\n $el.classList.add('-lazy-loaded')\n\n callback?.()\n })\n}\n", "/* locomotive-scroll v4.1.3 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar defaults = {\n el: document,\n name: 'scroll',\n offset: [0, 0],\n repeat: false,\n smooth: false,\n initPosition: {\n x: 0,\n y: 0\n },\n direction: 'vertical',\n gestureDirection: 'vertical',\n reloadOnContextChange: false,\n lerp: 0.1,\n \"class\": 'is-inview',\n scrollbarContainer: false,\n scrollbarClass: 'c-scrollbar',\n scrollingClass: 'has-scroll-scrolling',\n draggingClass: 'has-scroll-dragging',\n smoothClass: 'has-scroll-smooth',\n initClass: 'has-scroll-init',\n getSpeed: false,\n getDirection: false,\n scrollFromAnywhere: false,\n multiplier: 1,\n firefoxMultiplier: 50,\n touchMultiplier: 2,\n resetNativeScroll: true,\n tablet: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical',\n breakpoint: 1024\n },\n smartphone: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical'\n }\n};\n\nvar _default = /*#__PURE__*/function () {\n function _default() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n this.namespace = 'locomotive';\n this.html = document.documentElement;\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.els = {};\n this.currentElements = {};\n this.listeners = {};\n this.hasScrollTicking = false;\n this.hasCallEventSet = false;\n this.checkScroll = this.checkScroll.bind(this);\n this.checkResize = this.checkResize.bind(this);\n this.checkEvent = this.checkEvent.bind(this);\n this.instance = {\n scroll: {\n x: 0,\n y: 0\n },\n limit: {\n x: this.html.offsetWidth,\n y: this.html.offsetHeight\n },\n currentElements: this.currentElements\n };\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (this.isMobile) this.direction = this[this.context].direction;\n\n if (this.direction === 'horizontal') {\n this.directionAxis = 'x';\n } else {\n this.directionAxis = 'y';\n }\n\n if (this.getDirection) {\n this.instance.direction = null;\n }\n\n if (this.getDirection) {\n this.instance.speed = 0;\n }\n\n this.html.classList.add(this.initClass);\n window.addEventListener('resize', this.checkResize, false);\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.initEvents();\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n this.dispatchScroll();\n }\n }, {\n key: \"checkResize\",\n value: function checkResize() {\n var _this = this;\n\n if (!this.resizeTick) {\n this.resizeTick = true;\n requestAnimationFrame(function () {\n _this.resize();\n\n _this.resizeTick = false;\n });\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {}\n }, {\n key: \"checkContext\",\n value: function checkContext() {\n if (!this.reloadOnContextChange) return;\n this.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || this.windowWidth < this.tablet.breakpoint;\n this.isTablet = this.isMobile && this.windowWidth >= this.tablet.breakpoint;\n var oldContext = this.context;\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (oldContext != this.context) {\n var oldSmooth = oldContext == 'desktop' ? this.smooth : this[oldContext].smooth;\n var newSmooth = this.context == 'desktop' ? this.smooth : this[this.context].smooth;\n if (oldSmooth != newSmooth) window.location.reload();\n }\n }\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this2 = this;\n\n this.scrollToEls = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-to]\"));\n this.setScrollTo = this.setScrollTo.bind(this);\n this.scrollToEls.forEach(function (el) {\n el.addEventListener('click', _this2.setScrollTo, false);\n });\n }\n }, {\n key: \"setScrollTo\",\n value: function setScrollTo(event) {\n event.preventDefault();\n this.scrollTo(event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-href\")) || event.currentTarget.getAttribute('href'), {\n offset: event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-offset\"))\n });\n }\n }, {\n key: \"addElements\",\n value: function addElements() {}\n }, {\n key: \"detectElements\",\n value: function detectElements(hasCallEventSet) {\n var _this3 = this;\n\n var scrollTop = this.instance.scroll.y;\n var scrollBottom = scrollTop + this.windowHeight;\n var scrollLeft = this.instance.scroll.x;\n var scrollRight = scrollLeft + this.windowWidth;\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n if (el && (!el.inView || hasCallEventSet)) {\n if (_this3.direction === 'horizontal') {\n if (scrollRight >= el.left && scrollLeft < el.right) {\n _this3.setInView(el, i);\n }\n } else {\n if (scrollBottom >= el.top && scrollTop < el.bottom) {\n _this3.setInView(el, i);\n }\n }\n }\n\n if (el && el.inView) {\n if (_this3.direction === 'horizontal') {\n var width = el.right - el.left;\n el.progress = (_this3.instance.scroll.x - (el.left - _this3.windowWidth)) / (width + _this3.windowWidth);\n\n if (scrollRight < el.left || scrollLeft > el.right) {\n _this3.setOutOfView(el, i);\n }\n } else {\n var height = el.bottom - el.top;\n el.progress = (_this3.instance.scroll.y - (el.top - _this3.windowHeight)) / (height + _this3.windowHeight);\n\n if (scrollBottom < el.top || scrollTop > el.bottom) {\n _this3.setOutOfView(el, i);\n }\n }\n }\n }); // this.els = this.els.filter((current, i) => {\n // return current !== null;\n // });\n\n this.hasScrollTicking = false;\n }\n }, {\n key: \"setInView\",\n value: function setInView(current, i) {\n this.els[i].inView = true;\n current.el.classList.add(current[\"class\"]);\n this.currentElements[i] = current;\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'enter');\n\n if (!current.repeat) {\n this.els[i].call = false;\n }\n } // if (!current.repeat && !current.speed && !current.sticky) {\n // if (!current.call || current.call && this.hasCallEventSet) {\n // this.els[i] = null\n // }\n // }\n\n }\n }, {\n key: \"setOutOfView\",\n value: function setOutOfView(current, i) {\n var _this4 = this;\n\n // if (current.repeat || current.speed !== undefined) {\n this.els[i].inView = false; // }\n\n Object.keys(this.currentElements).forEach(function (el) {\n el === i && delete _this4.currentElements[el];\n });\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'exit');\n }\n\n if (current.repeat) {\n current.el.classList.remove(current[\"class\"]);\n }\n }\n }, {\n key: \"dispatchCall\",\n value: function dispatchCall(current, way) {\n this.callWay = way;\n this.callValue = current.call.split(',').map(function (item) {\n return item.trim();\n });\n this.callObj = current;\n if (this.callValue.length == 1) this.callValue = this.callValue[0];\n var callEvent = new Event(this.namespace + 'call');\n this.el.dispatchEvent(callEvent);\n }\n }, {\n key: \"dispatchScroll\",\n value: function dispatchScroll() {\n var scrollEvent = new Event(this.namespace + 'scroll');\n this.el.dispatchEvent(scrollEvent);\n }\n }, {\n key: \"setEvents\",\n value: function setEvents(event, func) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n\n var list = this.listeners[event];\n list.push(func);\n\n if (list.length === 1) {\n this.el.addEventListener(this.namespace + event, this.checkEvent, false);\n }\n\n if (event === 'call') {\n this.hasCallEventSet = true;\n this.detectElements(true);\n }\n }\n }, {\n key: \"unsetEvents\",\n value: function unsetEvents(event, func) {\n if (!this.listeners[event]) return;\n var list = this.listeners[event];\n var index = list.indexOf(func);\n if (index < 0) return;\n list.splice(index, 1);\n\n if (list.index === 0) {\n this.el.removeEventListener(this.namespace + event, this.checkEvent, false);\n }\n }\n }, {\n key: \"checkEvent\",\n value: function checkEvent(event) {\n var _this5 = this;\n\n var name = event.type.replace(this.namespace, '');\n var list = this.listeners[name];\n if (!list || list.length === 0) return;\n list.forEach(function (func) {\n switch (name) {\n case 'scroll':\n return func(_this5.instance);\n\n case 'call':\n return func(_this5.callValue, _this5.callWay, _this5.callObj);\n\n default:\n return func();\n }\n });\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {}\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {}\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance.scroll = {\n x: 0,\n y: 0\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n\n window.removeEventListener('resize', this.checkResize, false);\n Object.keys(this.listeners).forEach(function (event) {\n _this6.el.removeEventListener(_this6.namespace + event, _this6.checkEvent, false);\n });\n this.listeners = {};\n this.scrollToEls.forEach(function (el) {\n el.removeEventListener('click', _this6.setScrollTo, false);\n });\n this.html.classList.remove(this.initClass);\n }\n }]);\n\n return _default;\n}();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar smoothscroll = createCommonjsModule(function (module, exports) {\n/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n {\n // commonjs\n module.exports = { polyfill: polyfill };\n }\n\n}());\n});\nvar smoothscroll_1 = smoothscroll.polyfill;\n\nvar _default$1 = /*#__PURE__*/function (_Core) {\n _inherits(_default, _Core);\n\n var _super = _createSuper(_default);\n\n function _default() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n _this = _super.call(this, options);\n\n if (_this.resetNativeScroll) {\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual';\n }\n\n window.scrollTo(0, 0);\n }\n\n window.addEventListener('scroll', _this.checkScroll, false);\n\n if (window.smoothscrollPolyfill === undefined) {\n window.smoothscrollPolyfill = smoothscroll;\n window.smoothscrollPolyfill.polyfill();\n }\n\n return _this;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.instance.scroll.y = window.pageYOffset;\n this.addElements();\n this.detectElements();\n\n _get(_getPrototypeOf(_default.prototype), \"init\", this).call(this);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this2 = this;\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.instance.scroll.y = window.pageYOffset;\n\n if (Object.entries(this.els).length) {\n if (!this.hasScrollTicking) {\n requestAnimationFrame(function () {\n _this2.detectElements();\n });\n this.hasScrollTicking = true;\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (window.pageYOffset > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (window.pageYOffset < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (window.pageYOffset != this.instance.scroll.y) {\n this.instance.speed = (window.pageYOffset - this.instance.scroll.y) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n if (Object.entries(this.els).length) {\n this.windowHeight = window.innerHeight;\n this.updateElements();\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this3 = this;\n\n this.els = {};\n var els = this.el.querySelectorAll('[data-' + this.name + ']');\n els.forEach(function (el, index) {\n var BCR = el.getBoundingClientRect();\n var cl = el.dataset[_this3.name + 'Class'] || _this3[\"class\"];\n var id = typeof el.dataset[_this3.name + 'Id'] === 'string' ? el.dataset[_this3.name + 'Id'] : index;\n var top;\n var left;\n var offset = typeof el.dataset[_this3.name + 'Offset'] === 'string' ? el.dataset[_this3.name + 'Offset'].split(',') : _this3.offset;\n var repeat = el.dataset[_this3.name + 'Repeat'];\n var call = el.dataset[_this3.name + 'Call'];\n var target = el.dataset[_this3.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n top = targetElBCR.top + _this3.instance.scroll.y;\n left = targetElBCR.left + _this3.instance.scroll.x;\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this3.repeat;\n }\n\n var relativeOffset = _this3.getRelativeOffset(offset);\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n var mappedEl = {\n el: el,\n targetEl: targetEl,\n id: id,\n \"class\": cl,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call\n };\n _this3.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this3.setInView(_this3.els[id], id);\n }\n });\n }\n }, {\n key: \"updateElements\",\n value: function updateElements() {\n var _this4 = this;\n\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n var top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y;\n\n var bottom = top + el.targetEl.offsetHeight;\n\n var relativeOffset = _this4.getRelativeOffset(el.offset);\n\n _this4.els[i].top = top + relativeOffset[0];\n _this4.els[i].bottom = bottom - relativeOffset[1];\n });\n this.hasScrollTicking = false;\n }\n }, {\n key: \"getRelativeOffset\",\n value: function getRelativeOffset(offset) {\n var relativeOffset = [0, 0];\n\n if (offset) {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * this.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n }\n\n return relativeOffset;\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = this.html;\n } else if (target === 'bottom') {\n target = this.html.offsetHeight - window.innerHeight;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n offset = target.getBoundingClientRect().top + offset + this.instance.scroll.y;\n } else {\n offset = target + offset;\n }\n\n var isTargetReached = function isTargetReached() {\n return parseInt(window.pageYOffset) === parseInt(offset);\n };\n\n if (callback) {\n if (isTargetReached()) {\n callback();\n return;\n } else {\n var onScroll = function onScroll() {\n if (isTargetReached()) {\n window.removeEventListener('scroll', onScroll);\n callback();\n }\n };\n\n window.addEventListener('scroll', onScroll);\n }\n }\n\n window.scrollTo({\n top: offset,\n behavior: options.duration === 0 ? 'auto' : 'smooth'\n });\n }\n }, {\n key: \"update\",\n value: function update() {\n this.addElements();\n this.detectElements();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n window.removeEventListener('scroll', this.checkScroll, false);\n }\n }]);\n\n return _default;\n}(_default);\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nvar tinyEmitter = E;\n\nvar lethargy = createCommonjsModule(function (module, exports) {\n// Generated by CoffeeScript 1.9.2\n(function() {\n var root;\n\n root = exports !== null ? exports : this;\n\n root.Lethargy = (function() {\n function Lethargy(stability, sensitivity, tolerance, delay) {\n this.stability = stability != null ? Math.abs(stability) : 8;\n this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100;\n this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1;\n this.delay = delay != null ? delay : 150;\n this.lastUpDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.lastDownDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.deltasTimestamp = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n }\n\n Lethargy.prototype.check = function(e) {\n var lastDelta;\n e = e.originalEvent || e;\n if (e.wheelDelta != null) {\n lastDelta = e.wheelDelta;\n } else if (e.deltaY != null) {\n lastDelta = e.deltaY * -40;\n } else if ((e.detail != null) || e.detail === 0) {\n lastDelta = e.detail * -40;\n }\n this.deltasTimestamp.push(Date.now());\n this.deltasTimestamp.shift();\n if (lastDelta > 0) {\n this.lastUpDeltas.push(lastDelta);\n this.lastUpDeltas.shift();\n return this.isInertia(1);\n } else {\n this.lastDownDeltas.push(lastDelta);\n this.lastDownDeltas.shift();\n return this.isInertia(-1);\n }\n };\n\n Lethargy.prototype.isInertia = function(direction) {\n var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum;\n lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas;\n if (lastDeltas[0] === null) {\n return direction;\n }\n if (this.deltasTimestamp[(this.stability * 2) - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[(this.stability * 2) - 1]) {\n return false;\n }\n lastDeltasOld = lastDeltas.slice(0, this.stability);\n lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2);\n oldSum = lastDeltasOld.reduce(function(t, s) {\n return t + s;\n });\n newSum = lastDeltasNew.reduce(function(t, s) {\n return t + s;\n });\n oldAverage = oldSum / lastDeltasOld.length;\n newAverage = newSum / lastDeltasNew.length;\n if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && (this.sensitivity < Math.abs(newAverage))) {\n return direction;\n } else {\n return false;\n }\n };\n\n Lethargy.prototype.showLastUpDeltas = function() {\n return this.lastUpDeltas;\n };\n\n Lethargy.prototype.showLastDownDeltas = function() {\n return this.lastDownDeltas;\n };\n\n return Lethargy;\n\n })();\n\n}).call(commonjsGlobal);\n});\n\nvar support = (function getSupport() {\n return {\n hasWheelEvent: 'onwheel' in document,\n hasMouseWheelEvent: 'onmousewheel' in document,\n hasTouch: ('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,\n hasTouchWin: navigator.msMaxTouchPoints && navigator.msMaxTouchPoints > 1,\n hasPointer: !!window.navigator.msPointerEnabled,\n hasKeyDown: 'onkeydown' in document,\n isFirefox: navigator.userAgent.indexOf('Firefox') > -1\n };\n})();\n\nvar toString = Object.prototype.toString,\n hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\nvar bindallStandalone = function(object) {\n if(!object) return console.warn('bindAll requires at least one argument.');\n\n var functions = Array.prototype.slice.call(arguments, 1);\n\n if (functions.length === 0) {\n\n for (var method in object) {\n if(hasOwnProperty$1.call(object, method)) {\n if(typeof object[method] == 'function' && toString.call(object[method]) == \"[object Function]\") {\n functions.push(method);\n }\n }\n }\n }\n\n for(var i = 0; i < functions.length; i++) {\n var f = functions[i];\n object[f] = bind(object[f], object);\n }\n};\n\n/*\n Faster bind without specific-case checking. (see https://coderwall.com/p/oi3j3w).\n bindAll is only needed for events binding so no need to make slow fixes for constructor\n or partial application.\n*/\nfunction bind(func, context) {\n return function() {\n return func.apply(context, arguments);\n };\n}\n\nvar Lethargy = lethargy.Lethargy;\n\n\n\nvar EVT_ID = 'virtualscroll';\n\nvar src = VirtualScroll;\n\nvar keyCodes = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SPACE: 32\n};\n\nfunction VirtualScroll(options) {\n bindallStandalone(this, '_onWheel', '_onMouseWheel', '_onTouchStart', '_onTouchMove', '_onKeyDown');\n\n this.el = window;\n if (options && options.el) {\n this.el = options.el;\n delete options.el;\n }\n this.options = objectAssign({\n mouseMultiplier: 1,\n touchMultiplier: 2,\n firefoxMultiplier: 15,\n keyStep: 120,\n preventTouch: false,\n unpreventTouchClass: 'vs-touchmove-allowed',\n limitInertia: false,\n useKeyboard: true,\n useTouch: true\n }, options);\n\n if (this.options.limitInertia) this._lethargy = new Lethargy();\n\n this._emitter = new tinyEmitter();\n this._event = {\n y: 0,\n x: 0,\n deltaX: 0,\n deltaY: 0\n };\n this.touchStartX = null;\n this.touchStartY = null;\n this.bodyTouchAction = null;\n\n if (this.options.passive !== undefined) {\n this.listenerOptions = {passive: this.options.passive};\n }\n}\n\nVirtualScroll.prototype._notify = function(e) {\n var evt = this._event;\n evt.x += evt.deltaX;\n evt.y += evt.deltaY;\n\n this._emitter.emit(EVT_ID, {\n x: evt.x,\n y: evt.y,\n deltaX: evt.deltaX,\n deltaY: evt.deltaY,\n originalEvent: e\n });\n};\n\nVirtualScroll.prototype._onWheel = function(e) {\n var options = this.options;\n if (this._lethargy && this._lethargy.check(e) === false) return;\n var evt = this._event;\n\n // In Chrome and in Firefox (at least the new one)\n evt.deltaX = e.wheelDeltaX || e.deltaX * -1;\n evt.deltaY = e.wheelDeltaY || e.deltaY * -1;\n\n // for our purpose deltamode = 1 means user is on a wheel mouse, not touch pad\n // real meaning: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent#Delta_modes\n if(support.isFirefox && e.deltaMode == 1) {\n evt.deltaX *= options.firefoxMultiplier;\n evt.deltaY *= options.firefoxMultiplier;\n }\n\n evt.deltaX *= options.mouseMultiplier;\n evt.deltaY *= options.mouseMultiplier;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onMouseWheel = function(e) {\n if (this.options.limitInertia && this._lethargy.check(e) === false) return;\n\n var evt = this._event;\n\n // In Safari, IE and in Chrome if 'wheel' isn't defined\n evt.deltaX = (e.wheelDeltaX) ? e.wheelDeltaX : 0;\n evt.deltaY = (e.wheelDeltaY) ? e.wheelDeltaY : e.wheelDelta;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onTouchStart = function(e) {\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n};\n\nVirtualScroll.prototype._onTouchMove = function(e) {\n var options = this.options;\n if(options.preventTouch\n && !e.target.classList.contains(options.unpreventTouchClass)) {\n e.preventDefault();\n }\n\n var evt = this._event;\n\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n\n evt.deltaX = (t.pageX - this.touchStartX) * options.touchMultiplier;\n evt.deltaY = (t.pageY - this.touchStartY) * options.touchMultiplier;\n\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onKeyDown = function(e) {\n var evt = this._event;\n evt.deltaX = evt.deltaY = 0;\n var windowHeight = window.innerHeight - 40;\n\n switch(e.keyCode) {\n case keyCodes.LEFT:\n case keyCodes.UP:\n evt.deltaY = this.options.keyStep;\n break;\n\n case keyCodes.RIGHT:\n case keyCodes.DOWN:\n evt.deltaY = - this.options.keyStep;\n break;\n case e.shiftKey:\n evt.deltaY = windowHeight;\n break;\n case keyCodes.SPACE:\n evt.deltaY = - windowHeight;\n break;\n default:\n return;\n }\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._bind = function() {\n if(support.hasWheelEvent) this.el.addEventListener('wheel', this._onWheel, this.listenerOptions);\n if(support.hasMouseWheelEvent) this.el.addEventListener('mousewheel', this._onMouseWheel, this.listenerOptions);\n\n if(support.hasTouch && this.options.useTouch) {\n this.el.addEventListener('touchstart', this._onTouchStart, this.listenerOptions);\n this.el.addEventListener('touchmove', this._onTouchMove, this.listenerOptions);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n this.bodyTouchAction = document.body.style.msTouchAction;\n document.body.style.msTouchAction = 'none';\n this.el.addEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.addEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.addEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype._unbind = function() {\n if(support.hasWheelEvent) this.el.removeEventListener('wheel', this._onWheel);\n if(support.hasMouseWheelEvent) this.el.removeEventListener('mousewheel', this._onMouseWheel);\n\n if(support.hasTouch) {\n this.el.removeEventListener('touchstart', this._onTouchStart);\n this.el.removeEventListener('touchmove', this._onTouchMove);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n document.body.style.msTouchAction = this.bodyTouchAction;\n this.el.removeEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.removeEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.removeEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype.on = function(cb, ctx) {\n this._emitter.on(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (events && events[EVT_ID] && events[EVT_ID].length === 1) this._bind();\n};\n\nVirtualScroll.prototype.off = function(cb, ctx) {\n this._emitter.off(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (!events[EVT_ID] || events[EVT_ID].length <= 0) this._unbind();\n};\n\nVirtualScroll.prototype.reset = function() {\n var evt = this._event;\n evt.x = 0;\n evt.y = 0;\n};\n\nVirtualScroll.prototype.destroy = function() {\n this._emitter.off();\n this._unbind();\n};\n\nfunction lerp(start, end, amt) {\n return (1 - amt) * start + amt * end;\n}\n\nfunction getTranslate(el) {\n var translate = {};\n if (!window.getComputedStyle) return;\n var style = getComputedStyle(el);\n var transform = style.transform || style.webkitTransform || style.mozTransform;\n var mat = transform.match(/^matrix3d\\((.+)\\)$/);\n\n if (mat) {\n translate.x = mat ? parseFloat(mat[1].split(', ')[12]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[13]) : 0;\n } else {\n mat = transform.match(/^matrix\\((.+)\\)$/);\n translate.x = mat ? parseFloat(mat[1].split(', ')[4]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[5]) : 0;\n }\n\n return translate;\n}\n\n/**\n * Returns an array containing all the parent nodes of the given node\n * @param {object} node\n * @return {array} parent nodes\n */\nfunction getParents(elem) {\n // Set up a parent array\n var parents = []; // Push each parent element to the array\n\n for (; elem && elem !== document; elem = elem.parentNode) {\n parents.push(elem);\n } // Return our parent array\n\n\n return parents;\n} // https://gomakethings.com/how-to-get-the-closest-parent-element-with-a-matching-selector-using-vanilla-javascript/\n\n/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Ga\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 //Pevent scrollbar glitch/locking\n\n this.startScrollTs = undefined;\n\n if (this.scrollToRaf) {\n cancelAnimationFrame(this.scrollToRaf);\n this.scrollToRaf = null;\n }\n\n this.isScrolling = false;\n this.instance.scroll.y = Math.round(this.instance.scroll.y);\n this.html.classList.remove(this.scrollingClass);\n }\n }, {\n key: \"checkKey\",\n value: function checkKey(e) {\n var _this3 = this;\n\n if (this.stop) {\n // If we are stopped, we don't want any scroll to occur because of a keypress\n // Prevent tab to scroll to activeElement\n if (e.keyCode == keyCodes$1.TAB) {\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0;\n });\n }\n\n return;\n }\n\n switch (e.keyCode) {\n case keyCodes$1.TAB:\n // Do not remove the RAF\n // It allows to override the browser's native scrollTo, which is essential\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0; // Request scrollTo on the focusedElement, putting it at the center of the screen\n\n _this3.scrollTo(document.activeElement, {\n offset: -window.innerHeight / 2\n });\n });\n break;\n\n case keyCodes$1.UP:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] -= 240;\n }\n\n break;\n\n case keyCodes$1.DOWN:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] += 240;\n }\n\n break;\n\n case keyCodes$1.PAGEUP:\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n break;\n\n case keyCodes$1.PAGEDOWN:\n this.instance.delta[this.directionAxis] += window.innerHeight;\n break;\n\n case keyCodes$1.HOME:\n this.instance.delta[this.directionAxis] -= this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.END:\n this.instance.delta[this.directionAxis] += this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.SPACE:\n if (this.isActiveElementScrollSensitive()) {\n if (e.shiftKey) {\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n } else {\n this.instance.delta[this.directionAxis] += window.innerHeight;\n }\n }\n\n break;\n\n default:\n return;\n }\n\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.isScrolling = true;\n this.checkScroll();\n this.html.classList.add(this.scrollingClass);\n }\n }, {\n key: \"isActiveElementScrollSensitive\",\n value: function isActiveElementScrollSensitive() {\n return !(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement) && !(document.activeElement instanceof HTMLButtonElement) && !(document.activeElement instanceof HTMLSelectElement);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this4 = this;\n\n var forced = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (forced || this.isScrolling || this.isDraggingScrollbar) {\n if (!this.hasScrollTicking) {\n this.checkScrollRaf = requestAnimationFrame(function () {\n return _this4.checkScroll();\n });\n this.hasScrollTicking = true;\n }\n\n this.updateScroll();\n var distance = Math.abs(this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]);\n var timeSinceStart = Date.now() - this.startScrollTs; // Get the time since the scroll was started: the scroll can be stopped again only past 100ms\n\n if (!this.animatingScroll && timeSinceStart > 100 && (distance < 0.5 && this.instance.delta[this.directionAxis] != 0 || distance < 0.5 && this.instance.delta[this.directionAxis] == 0)) {\n this.stopScrolling();\n }\n\n Object.entries(this.sections).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n section = _ref2[1];\n\n if (section.persistent || _this4.instance.scroll[_this4.directionAxis] > section.offset[_this4.directionAxis] && _this4.instance.scroll[_this4.directionAxis] < section.limit[_this4.directionAxis]) {\n if (_this4.direction === 'horizontal') {\n _this4.transform(section.el, -_this4.instance.scroll[_this4.directionAxis], 0);\n } else {\n _this4.transform(section.el, 0, -_this4.instance.scroll[_this4.directionAxis]);\n }\n\n if (!section.inView) {\n section.inView = true;\n section.el.style.opacity = 1;\n section.el.style.pointerEvents = 'all';\n section.el.setAttribute(\"data-\".concat(_this4.name, \"-section-inview\"), '');\n }\n } else {\n if (section.inView || forced) {\n section.inView = false;\n section.el.style.opacity = 0;\n section.el.style.pointerEvents = 'none';\n section.el.removeAttribute(\"data-\".concat(_this4.name, \"-section-inview\"));\n }\n\n _this4.transform(section.el, 0, 0);\n }\n });\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.detectElements();\n this.transformElements();\n\n if (this.hasScrollbar) {\n var scrollBarTranslation = this.instance.scroll[this.directionAxis] / this.instance.limit[this.directionAxis] * this.scrollBarLimit[this.directionAxis];\n\n if (this.direction === 'horizontal') {\n this.transform(this.scrollbarThumb, scrollBarTranslation, 0);\n } else {\n this.transform(this.scrollbarThumb, 0, scrollBarTranslation);\n }\n }\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n this.hasScrollTicking = false;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.checkContext();\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.update();\n }\n }, {\n key: \"updateDelta\",\n value: function updateDelta(e) {\n var delta;\n var gestureDirection = this[this.context] && this[this.context].gestureDirection ? this[this.context].gestureDirection : this.gestureDirection;\n\n if (gestureDirection === 'both') {\n delta = e.deltaX + e.deltaY;\n } else if (gestureDirection === 'vertical') {\n delta = e.deltaY;\n } else if (gestureDirection === 'horizontal') {\n delta = e.deltaX;\n } else {\n delta = e.deltaY;\n }\n\n this.instance.delta[this.directionAxis] -= delta * this.multiplier;\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n }\n }, {\n key: \"updateScroll\",\n value: function updateScroll(e) {\n if (this.isScrolling || this.isDraggingScrollbar) {\n this.instance.scroll[this.directionAxis] = lerp(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis], this.lerp);\n } else {\n if (this.instance.scroll[this.directionAxis] > this.instance.limit[this.directionAxis]) {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.limit[this.directionAxis]);\n } else if (this.instance.scroll.y < 0) {\n this.setScroll(this.instance.scroll[this.directionAxis], 0);\n } else {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis]);\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (this.instance.delta.y > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (this.instance.delta.y < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n\n if (this.instance.delta.x > this.instance.scroll.x) {\n if (this.instance.direction !== 'right') {\n this.instance.direction = 'right';\n }\n } else if (this.instance.delta.x < this.instance.scroll.x) {\n if (this.instance.direction !== 'left') {\n this.instance.direction = 'left';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (this.instance.delta[this.directionAxis] != this.instance.scroll[this.directionAxis]) {\n this.instance.speed = (this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"initScrollBar\",\n value: function initScrollBar() {\n this.scrollbar = document.createElement('span');\n this.scrollbarThumb = document.createElement('span');\n this.scrollbar.classList.add(\"\".concat(this.scrollbarClass));\n this.scrollbarThumb.classList.add(\"\".concat(this.scrollbarClass, \"_thumb\"));\n this.scrollbar.append(this.scrollbarThumb);\n\n if (this.scrollbarContainer) {\n this.scrollbarContainer.append(this.scrollbar);\n } else {\n document.body.append(this.scrollbar);\n } // Scrollbar Events\n\n\n this.getScrollBar = this.getScrollBar.bind(this);\n this.releaseScrollBar = this.releaseScrollBar.bind(this);\n this.moveScrollBar = this.moveScrollBar.bind(this);\n this.scrollbarThumb.addEventListener('mousedown', this.getScrollBar);\n window.addEventListener('mouseup', this.releaseScrollBar);\n window.addEventListener('mousemove', this.moveScrollBar); // Set scrollbar values\n\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"reinitScrollBar\",\n value: function reinitScrollBar() {\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"destroyScrollBar\",\n value: function destroyScrollBar() {\n this.scrollbarThumb.removeEventListener('mousedown', this.getScrollBar);\n window.removeEventListener('mouseup', this.releaseScrollBar);\n window.removeEventListener('mousemove', this.moveScrollBar);\n this.scrollbar.remove();\n }\n }, {\n key: \"getScrollBar\",\n value: function getScrollBar(e) {\n this.isDraggingScrollbar = true;\n this.checkScroll();\n this.html.classList.remove(this.scrollingClass);\n this.html.classList.add(this.draggingClass);\n }\n }, {\n key: \"releaseScrollBar\",\n value: function releaseScrollBar(e) {\n this.isDraggingScrollbar = false;\n\n if (this.isScrolling) {\n this.html.classList.add(this.scrollingClass);\n }\n\n this.html.classList.remove(this.draggingClass);\n }\n }, {\n key: \"moveScrollBar\",\n value: function moveScrollBar(e) {\n var _this5 = this;\n\n if (this.isDraggingScrollbar) {\n requestAnimationFrame(function () {\n var x = (e.clientX - _this5.scrollbarBCR.left) * 100 / _this5.scrollbarWidth * _this5.instance.limit.x / 100;\n var y = (e.clientY - _this5.scrollbarBCR.top) * 100 / _this5.scrollbarHeight * _this5.instance.limit.y / 100;\n\n if (y > 0 && y < _this5.instance.limit.y) {\n _this5.instance.delta.y = y;\n }\n\n if (x > 0 && x < _this5.instance.limit.x) {\n _this5.instance.delta.x = x;\n }\n });\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this6 = this;\n\n this.els = {};\n this.parallaxElements = {}; // this.sections.forEach((section, y) => {\n\n var els = this.el.querySelectorAll(\"[data-\".concat(this.name, \"]\"));\n els.forEach(function (el, index) {\n // Try and find the target's parent section\n var targetParents = getParents(el);\n var section = Object.entries(_this6.sections).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n section = _ref4[1];\n\n return section;\n }).find(function (section) {\n return targetParents.includes(section.el);\n });\n var cl = el.dataset[_this6.name + 'Class'] || _this6[\"class\"];\n var id = typeof el.dataset[_this6.name + 'Id'] === 'string' ? el.dataset[_this6.name + 'Id'] : 'el' + index;\n var top;\n var left;\n var repeat = el.dataset[_this6.name + 'Repeat'];\n var call = el.dataset[_this6.name + 'Call'];\n var position = el.dataset[_this6.name + 'Position'];\n var delay = el.dataset[_this6.name + 'Delay'];\n var direction = el.dataset[_this6.name + 'Direction'];\n var sticky = typeof el.dataset[_this6.name + 'Sticky'] === 'string';\n var speed = el.dataset[_this6.name + 'Speed'] ? parseFloat(el.dataset[_this6.name + 'Speed']) / 10 : false;\n var offset = typeof el.dataset[_this6.name + 'Offset'] === 'string' ? el.dataset[_this6.name + 'Offset'].split(',') : _this6.offset;\n var target = el.dataset[_this6.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n\n if (section === null) {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n } else {\n if (!section.inView) {\n top = targetElBCR.top - getTranslate(section.el).y - getTranslate(targetEl).y;\n left = targetElBCR.left - getTranslate(section.el).x - getTranslate(targetEl).x;\n } else {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n }\n }\n\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n var middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n\n if (sticky) {\n var elBCR = el.getBoundingClientRect();\n var elTop = elBCR.top;\n var elLeft = elBCR.left;\n var elDistance = {\n x: elLeft - left,\n y: elTop - top\n };\n top += window.innerHeight;\n left += window.innerWidth;\n bottom = elTop + targetEl.offsetHeight - el.offsetHeight - elDistance[_this6.directionAxis];\n right = elLeft + targetEl.offsetWidth - el.offsetWidth - elDistance[_this6.directionAxis];\n middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n }\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this6.repeat;\n }\n\n var relativeOffset = [0, 0];\n\n if (offset) {\n if (_this6.direction === 'horizontal') {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowWidth / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n left = left + relativeOffset[0];\n right = right - relativeOffset[1];\n } else {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n }\n }\n\n var mappedEl = {\n el: el,\n id: id,\n \"class\": cl,\n section: section,\n top: top,\n middle: middle,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call,\n speed: speed,\n delay: delay,\n position: position,\n target: targetEl,\n direction: direction,\n sticky: sticky\n };\n _this6.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this6.setInView(_this6.els[id], id);\n }\n\n if (speed !== false || sticky) {\n _this6.parallaxElements[id] = mappedEl;\n }\n }); // });\n }\n }, {\n key: \"addSections\",\n value: function addSections() {\n var _this7 = this;\n\n this.sections = {};\n var sections = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-section]\"));\n\n if (sections.length === 0) {\n sections = [this.el];\n }\n\n sections.forEach(function (section, index) {\n var id = typeof section.dataset[_this7.name + 'Id'] === 'string' ? section.dataset[_this7.name + 'Id'] : 'section' + index;\n var sectionBCR = section.getBoundingClientRect();\n var offset = {\n x: sectionBCR.left - window.innerWidth * 1.5 - getTranslate(section).x,\n y: sectionBCR.top - window.innerHeight * 1.5 - getTranslate(section).y\n };\n var limit = {\n x: offset.x + sectionBCR.width + window.innerWidth * 2,\n y: offset.y + sectionBCR.height + window.innerHeight * 2\n };\n var persistent = typeof section.dataset[_this7.name + 'Persistent'] === 'string';\n section.setAttribute('data-scroll-section-id', id);\n var mappedSection = {\n el: section,\n offset: offset,\n limit: limit,\n inView: false,\n persistent: persistent,\n id: id\n };\n _this7.sections[id] = mappedSection;\n });\n }\n }, {\n key: \"transform\",\n value: function transform(element, x, y, delay) {\n var transform;\n\n if (!delay) {\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(x, \",\").concat(y, \",0,1)\");\n } else {\n var start = getTranslate(element);\n var lerpX = lerp(start.x, x, delay);\n var lerpY = lerp(start.y, y, delay);\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(lerpX, \",\").concat(lerpY, \",0,1)\");\n }\n\n element.style.webkitTransform = transform;\n element.style.msTransform = transform;\n element.style.transform = transform;\n }\n }, {\n key: \"transformElements\",\n value: function transformElements(isForced) {\n var _this8 = this;\n\n var setAllElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var scrollRight = this.instance.scroll.x + this.windowWidth;\n var scrollBottom = this.instance.scroll.y + this.windowHeight;\n var scrollMiddle = {\n x: this.instance.scroll.x + this.windowMiddle.x,\n y: this.instance.scroll.y + this.windowMiddle.y\n };\n Object.entries(this.parallaxElements).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n i = _ref6[0],\n current = _ref6[1];\n\n var transformDistance = false;\n\n if (isForced) {\n transformDistance = 0;\n }\n\n if (current.inView || setAllElements) {\n switch (current.position) {\n case 'top':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementTop':\n transformDistance = (scrollBottom - current.top) * -current.speed;\n break;\n\n case 'bottom':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollBottom + _this8.windowHeight) * current.speed;\n break;\n\n case 'left':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementLeft':\n transformDistance = (scrollRight - current.left) * -current.speed;\n break;\n\n case 'right':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollRight + _this8.windowHeight) * current.speed;\n break;\n\n default:\n transformDistance = (scrollMiddle[_this8.directionAxis] - current.middle[_this8.directionAxis]) * -current.speed;\n break;\n }\n }\n\n if (current.sticky) {\n if (current.inView) {\n if (_this8.direction === 'horizontal') {\n transformDistance = _this8.instance.scroll.x - current.left + window.innerWidth;\n } else {\n transformDistance = _this8.instance.scroll.y - current.top + window.innerHeight;\n }\n } else {\n if (_this8.direction === 'horizontal') {\n if (_this8.instance.scroll.x < current.left - window.innerWidth && _this8.instance.scroll.x < current.left - window.innerWidth / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.x > current.right && _this8.instance.scroll.x > current.right + 100) {\n transformDistance = current.right - current.left + window.innerWidth;\n } else {\n transformDistance = false;\n }\n } else {\n if (_this8.instance.scroll.y < current.top - window.innerHeight && _this8.instance.scroll.y < current.top - window.innerHeight / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.y > current.bottom && _this8.instance.scroll.y > current.bottom + 100) {\n transformDistance = current.bottom - current.top + window.innerHeight;\n } else {\n transformDistance = false;\n }\n }\n }\n }\n\n if (transformDistance !== false) {\n if (current.direction === 'horizontal' || _this8.direction === 'horizontal' && current.direction !== 'vertical') {\n _this8.transform(current.el, transformDistance, 0, isForced ? false : current.delay);\n } else {\n _this8.transform(current.el, 0, transformDistance, isForced ? false : current.delay);\n }\n }\n });\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var _this9 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var duration = !isNaN(parseInt(options.duration)) ? parseInt(options.duration) : 1000; // Duration of the scroll animation in milliseconds\n\n var easing = options.easing || [0.25, 0.0, 0.35, 1.0]; // An array of 4 floats between 0 and 1 defining the bezier curve for the animation's easing. See http://greweb.me/bezier-easing-editor/example/\n\n var disableLerp = options.disableLerp ? true : false; // Lerp effect won't be applied if set to true\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n easing = src$1.apply(void 0, _toConsumableArray(easing));\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = 0;\n } else if (target === 'bottom') {\n target = this.instance.limit.y;\n } else if (target === 'left') {\n target = 0;\n } else if (target === 'right') {\n target = this.instance.limit.x;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n // Verify the given target belongs to this scroll scope\n var targetInScope = getParents(target).includes(this.el);\n\n if (!targetInScope) {\n // If the target isn't inside our main element, abort any action\n return;\n } // Get target offset from top\n\n\n var targetBCR = target.getBoundingClientRect();\n var offsetTop = targetBCR.top;\n var offsetLeft = targetBCR.left; // Try and find the target's parent section\n\n var targetParents = getParents(target);\n var parentSection = targetParents.find(function (candidate) {\n return Object.entries(_this9.sections) // Get sections associative array as a regular array\n .map(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n key = _ref8[0],\n section = _ref8[1];\n\n return section;\n }) // map to section only (we dont need the key here)\n .find(function (section) {\n return section.el == candidate;\n }); // finally find the section that matches the candidate\n });\n var parentSectionOffset = 0;\n\n if (parentSection) {\n parentSectionOffset = getTranslate(parentSection)[this.directionAxis]; // We got a parent section, store it's current offset to remove it later\n } else {\n // if no parent section is found we need to use instance scroll directly\n parentSectionOffset = -this.instance.scroll[this.directionAxis];\n } // Final value of scroll destination : offsetTop + (optional offset given in options) - (parent's section translate)\n\n\n if (this.direction === 'horizontal') {\n offset = offsetLeft + offset - parentSectionOffset;\n } else {\n offset = offsetTop + offset - parentSectionOffset;\n }\n } else {\n offset = target + offset;\n } // Actual scrollto\n // ==========================================================================\n // Setup\n\n\n var scrollStart = parseFloat(this.instance.delta[this.directionAxis]);\n var scrollTarget = Math.max(0, Math.min(offset, this.instance.limit[this.directionAxis])); // Make sure our target is in the scroll boundaries\n\n var scrollDiff = scrollTarget - scrollStart;\n\n var render = function render(p) {\n if (disableLerp) {\n if (_this9.direction === 'horizontal') {\n _this9.setScroll(scrollStart + scrollDiff * p, _this9.instance.delta.y);\n } else {\n _this9.setScroll(_this9.instance.delta.x, scrollStart + scrollDiff * p);\n }\n } else {\n _this9.instance.delta[_this9.directionAxis] = scrollStart + scrollDiff * p;\n }\n }; // Prepare the scroll\n\n\n this.animatingScroll = true; // This boolean allows to prevent `checkScroll()` from calling `stopScrolling` when the animation is slow (i.e. at the beginning of an EaseIn)\n\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.startScrolling(); // Restart the scroll\n // Start the animation loop\n\n var start = Date.now();\n\n var loop = function loop() {\n var p = (Date.now() - start) / duration; // Animation progress\n\n if (p > 1) {\n // Animation ends\n render(1);\n _this9.animatingScroll = false;\n if (duration == 0) _this9.update();\n if (callback) callback();\n } else {\n _this9.scrollToRaf = requestAnimationFrame(loop);\n render(easing(p));\n }\n };\n\n loop();\n }\n }, {\n key: \"update\",\n value: function update() {\n this.setScrollLimit();\n this.addSections();\n this.addElements();\n this.detectElements();\n this.updateScroll();\n this.transformElements(true);\n this.reinitScrollBar();\n this.checkScroll(true);\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {\n this.stop = false;\n }\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {\n this.stop = true;\n }\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance = _objectSpread2(_objectSpread2({}, this.instance), {}, {\n scroll: {\n x: x,\n y: y\n },\n delta: {\n x: x,\n y: y\n },\n speed: 0\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n this.stopScrolling();\n this.html.classList.remove(this.smoothClass);\n this.vs.destroy();\n this.destroyScrollBar();\n window.removeEventListener('keydown', this.checkKey, false);\n }\n }]);\n\n return _default;\n}(_default);\n\nvar Smooth = /*#__PURE__*/function () {\n function Smooth() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Smooth);\n\n this.options = options; // Override default options with given ones\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n if (!this.smooth && this.direction == 'horizontal') console.warn('\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 the related image.\n *\n * @see ../utils/image.js\n *\n * It is recommended to wrap your `` into an element with the\n * CSS class name `.c-lazy`. The CSS class name modifier `.-lazy-loaded`\n * will be applied on both the image and the parent wrapper.\n *\n * ```html\n *
\n * \"\"\n *
\n * ```\n *\n * @param {LocomotiveScroll} args - The Locomotive Scroll instance.\n */\n lazyLoad(args) {\n lazyLoadImage(args.obj.el, 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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", + "sources": ["../../../node_modules/node_modules/babel-plugin-transform-async-to-promises/helpers.js", "../../../node_modules/@barba/core/src/modules/Logger.ts", "../../../node_modules/@barba/core/src/defs/hooks.ts", "../../../node_modules/node_modules/path-to-regexp/index.js", "../../../node_modules/@barba/core/src/schemas/attribute.ts", "../../../node_modules/@barba/core/src/utils/dom.ts", "../../../node_modules/@barba/core/src/utils/history.ts", "../../../node_modules/@barba/core/src/utils/helpers.ts", "../../../node_modules/@barba/core/src/utils/url.ts", "../../../node_modules/@barba/core/src/utils/request.ts", "../../../node_modules/node_modules/is-promise/index.js", "../../../node_modules/@barba/core/src/utils/run-async.ts", "../../../node_modules/@barba/core/src/hooks.ts", "../../../node_modules/@barba/core/src/modules/Ignore.ts", "../../../node_modules/@barba/core/src/modules/Cache.ts", "../../../node_modules/@barba/core/src/modules/Prevent.ts", "../../../node_modules/@barba/core/src/modules/Error.ts", "../../../node_modules/@barba/core/src/modules/Store.ts", "../../../node_modules/@barba/core/src/modules/Transitions.ts", "../../../node_modules/@barba/core/src/modules/Views.ts", "../../../node_modules/@barba/core/src/polyfills/index.ts", "../../../node_modules/@barba/core/src/schemas/page.ts", "../../../node_modules/@barba/core/src/core.ts", "../../../node_modules/svg4everybody/dist/svg4everybody.js", "../../../node_modules/modujs/dist/main.esm.js", "../../../assets/scripts/modules.js", "../../../assets/scripts/modules/Load.js", "../../../assets/scripts/config.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": ["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n", "/**\n * @barba/core/modules/Logger\n *

\n * ## Logger.\n *\n * - Display informations via the console\n *\n * @module core/modules/Logger\n * @preferred\n */\n\n/***/\n\n/**\n * Log levels, all lower level messages are printed\n *\n * 0. mute\n * 1. error = `console.error()`\n * 2. warning= `console.warn()`\n * 3. info = `console.info()`\n * 4. debug = `console.log()`\n */\nexport enum LogLevels {\n off = 0,\n error = 1,\n warning = 2,\n info = 3,\n debug = 4,\n}\n\n/**\n * Global log level\n */\nlet _level: number = LogLevels.off;\n\nexport class Logger {\n /**\n * Get global log level.\n */\n public static getLevel(): number {\n return _level;\n }\n\n /**\n * Set global log level.\n */\n public static setLevel(name: keyof typeof LogLevels): number {\n _level = LogLevels[name];\n\n return _level;\n }\n\n /**\n * Log \"prefix\".\n */\n private _source: string;\n\n /**\n * Creates an instance of Logger.\n */\n constructor(source: string) {\n this._source = source;\n }\n\n /**\n * Permanent, unremovable log.\n */\n // public print(...objects: any[]): void {\n // this._log(console.info, LogLevels.off, objects);\n // }\n\n /**\n * Error log.\n */\n public error(...objects: any[]): void {\n this._log(console.error, LogLevels.error, objects);\n }\n\n /**\n * Warn log.\n */\n public warn(...objects: any[]): void {\n this._log(console.warn, LogLevels.warning, objects);\n }\n\n /**\n * Info log.\n */\n public info(...objects: any[]): void {\n this._log(console.info, LogLevels.info, objects);\n }\n\n /**\n * Debug log.\n */\n public debug(...objects: any[]): void {\n this._log(console.log, LogLevels.debug, objects);\n }\n\n /**\n * Internal logger.\n */\n private _log(fn: () => void, level: number, objects: any[]): void {\n if (level <= Logger.getLevel()) {\n fn.apply(console, ([`[${this._source}] `].concat(objects) as unknown) as [\n\n ]);\n }\n }\n}\n", "/**\n * @module typings/core\n */\nimport { ITransitionData, ITransitionPage, IViewData } from './index';\n\nexport type HooksBarba =\n | 'ready'\n | 'page'\n | 'reset'\n | 'currentAdded'\n | 'currentRemoved'\n | 'nextAdded'\n | 'nextRemoved';\n\nexport type HooksOnce = 'beforeOnce' | 'once' | 'afterOnce';\n\nexport type HooksPage =\n | 'before'\n | 'beforeLeave'\n | 'leave'\n | 'afterLeave'\n | 'beforeEnter'\n | 'enter'\n | 'afterEnter'\n | 'after';\n\nexport type HooksBefore = 'beforeOnce' | 'beforeLeave' | 'beforeEnter';\nexport type HooksAfter = 'afterOnce' | 'afterLeave' | 'afterEnter';\n\nexport type HooksTransition = HooksOnce | HooksPage;\nexport type HooksView = HooksBefore | HooksAfter;\nexport type HooksAll = HooksBarba | HooksTransition;\n\n// Allow optional \"dynamically created\" hooks\nexport type HooksTransitionMap = { [key in HooksTransition]?: any };\n\nexport type HookFunction = (\n data?: ITransitionData | IViewData,\n t?: ITransitionPage\n) => Promise | void;\n\nexport class HookMethods {\n public before: (fn: HookFunction, ctx?: any) => void;\n public beforeLeave: (fn: HookFunction, ctx?: any) => void;\n public leave: (fn: HookFunction, ctx?: any) => void;\n public afterLeave: (fn: HookFunction, ctx?: any) => void;\n public beforeEnter: (fn: HookFunction, ctx?: any) => void;\n public enter: (fn: HookFunction, ctx?: any) => void;\n public afterEnter: (fn: HookFunction, ctx?: any) => void;\n public after: (fn: HookFunction, ctx?: any) => void;\n}\n", "/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.match = match\nmodule.exports.regexpToFunction = regexpToFunction\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match (str, options) {\n var keys = []\n var re = pathToRegexp(str, keys, options)\n return regexpToFunction(re, keys)\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction (re, keys) {\n return function (pathname, options) {\n var m = re.exec(pathname)\n if (!m) return false\n\n var path = m[0]\n var index = m.index\n var params = {}\n var decode = (options && options.decode) || decodeURIComponent\n\n for (var i = 1; i < m.length; i++) {\n if (m[i] === undefined) continue\n\n var key = keys[i - 1]\n\n if (key.repeat) {\n params[key.name] = m[i].split(key.delimiter).map(function (value) {\n return decode(value, key)\n })\n } else {\n params[key.name] = decode(m[i], key)\n }\n }\n\n return { path: path, index: index, params: params }\n }\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n var validate = options ? options.validate !== false : true\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n", "/**\n * @barba/core/schemas\n *

\n * ## Schemas description.\n *\n * @module core/schemas\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { ISchemaAttribute } from '../defs';\n\n/**\n * See [[ISchemaAttribute]]\n */\nexport const schemaAttribute: ISchemaAttribute = {\n container: 'container',\n history: 'history',\n namespace: 'namespace',\n prefix: 'data-barba',\n prevent: 'prevent',\n wrapper: 'wrapper',\n};\n", "/**\n * @barba/core/utils/dom\n *

\n * ## Dom utils\n *\n * - Access DOM contents\n * - DOM vs string conversions\n *\n * @module core/utils/dom\n * @preferred\n */\n\n/***/\n\nimport path from 'path';\n\n// Definitions\nimport { ISchemaAttribute, Link, Scope, Wrapper } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\nexport class Dom {\n private _attr: ISchemaAttribute = schemaAttribute;\n private _parser: DOMParser = new DOMParser();\n\n /**\n * Convert HTMLDocument to string.\n */\n public toString(el: HTMLElement): string {\n return el.outerHTML;\n }\n\n /**\n * Parse HTML string to HTMLDocument.\n */\n // see https://github.com/barbajs/barba/issues/362\n // Seems that using DOMParser.parseFromString causes this issue.\n public toDocument(htmlString: string): HTMLDocument {\n return this._parser.parseFromString(htmlString, 'text/html');\n }\n\n /**\n * Parse HTML string to DIVElement.\n *\n * DOMParser.parseFromString fails with img[srcset] on iOS.\n * see https://github.com/barbajs/barba/issues/362\n */\n public toElement(htmlString: string): HTMLDivElement {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString;\n return div;\n }\n\n /**\n * Get HTML content.\n */\n public getHtml(doc: HTMLDocument = document): string {\n return this.toString(doc.documentElement);\n }\n\n /**\n * Get full document content.\n */\n // getDocument(el = document.documentElement) {\n // return this.toStr(el);\n // },\n\n /**\n * Get `[data-barba=\"wrapper\"]`.\n */\n public getWrapper(scope: Scope = document): Wrapper {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.wrapper}\"]`\n );\n }\n\n /**\n * Get `[data-barba=\"container\"]`.\n */\n public getContainer(scope: Scope = document): HTMLElement | null {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.container}\"]`\n );\n }\n\n /**\n * Remove container and store next sibling (if applicable).\n */\n public removeContainer(container: HTMLElement) {\n if (document.body.contains(container)) {\n container.parentNode.removeChild(container);\n }\n }\n\n /**\n * Add container before next sibling or at the end of the wrapper.\n */\n public addContainer(container: HTMLElement, wrapper: HTMLElement) {\n const existingContainer = this.getContainer();\n\n if (existingContainer) {\n this._insertAfter(container, existingContainer);\n } else {\n wrapper.appendChild(container);\n }\n }\n\n /**\n * Get `[data-barba-namespace]`.\n */\n public getNamespace(scope: Scope = document): string | null {\n const ns = scope.querySelector(\n `[${this._attr.prefix}-${this._attr.namespace}]`\n );\n\n return ns\n ? ns.getAttribute(`${this._attr.prefix}-${this._attr.namespace}`)\n : null;\n }\n\n /**\n * Get URL from `href` value.\n */\n public getHref(el: Link): string | null {\n // HTML tagName is UPPERCASE, xhtml tagName keeps existing case.\n if (el.tagName && el.tagName.toLowerCase() === 'a') {\n // HTMLAnchorElement, full URL available\n if (typeof el.href === 'string') {\n return el.href;\n }\n\n // Probably a SVGAElement\u2026\n const href = el.getAttribute('href') || el.getAttribute('xlink:href');\n\n /* istanbul ignore else */\n if (href) {\n // When link comes from SVG, `href` returns an object, not a string.\n const attr: string =\n ((href as unknown) as SVGAnimatedString).baseVal || href;\n\n return this.resolveUrl(attr);\n }\n }\n return null;\n }\n\n // Copyright 2014 Simon Lydell\n // X11 (\u201CMIT\u201D) Licensed. (See LICENSE\n // https://github.com/lydell/resolve-url/blob/master/resolve-url.js\n /* istanbul ignore next */\n public resolveUrl(...urls: string[]) {\n const numUrls = urls.length;\n\n if (numUrls === 0) {\n throw new Error('resolveUrl requires at least one argument; got none.');\n }\n\n const base = document.createElement('base');\n base.href = arguments[0];\n\n if (numUrls === 1) {\n return base.href;\n }\n\n const head = document.getElementsByTagName('head')[0];\n head.insertBefore(base, head.firstChild);\n\n const a = document.createElement('a');\n let resolved;\n\n for (let index = 1; index < numUrls; index++) {\n a.href = arguments[index];\n resolved = a.href;\n base.href = resolved;\n }\n\n head.removeChild(base);\n\n return resolved;\n }\n\n /**\n * Insert node after another node.\n */\n private _insertAfter(newNode: Node, referenceNode: Node) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n }\n}\n\nconst dom = new Dom();\n\nexport { dom };\n", "import { HistoryAction, LinkEvent, Trigger } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\n/**\n * @barba/core/utils/history\n *

\n * ## History manager.\n *\n * - Keep track of the navigation history\n *\n * @module core/utils/history\n * @preferred\n */\n\n/**\n * State item.\n *\n * @property from\n * @property index\n */\ninterface IHistoryItem {\n /** origin */\n from: string;\n /** index */\n index: number;\n /** states */\n states: IStateItem[];\n}\n\n/***/\ninterface ICoords {\n x: number;\n y: number;\n}\n\n/**\n * History item.\n *\n * @property namespace\n * @property scroll\n * @property URL\n */\ninterface IStateItem {\n /** namespace */\n ns: string | undefined;\n /** Scroll position */\n scroll: ICoords;\n /** URL */\n url: string;\n}\n\nexport class History {\n private _session: string;\n private _states: IStateItem[] = [];\n private _pointer = -1;\n\n /**\n * Init with first state.\n */\n public init(url: string, ns: string): void {\n this._session = 'barba';\n const index = 0;\n\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n window.history && window.history.replaceState(item, '', url);\n }\n\n public change(\n url: string,\n trigger: Trigger,\n e?: LinkEvent | PopStateEvent\n ): Trigger {\n if (e && (e as PopStateEvent).state) {\n // If popstate, move to existing state\n // and get back/forward direction.\n const { state }: { state: IHistoryItem } = e as PopStateEvent;\n const { index } = state;\n const diff = this._pointer - index;\n\n trigger = this._getDirection(diff);\n\n // Work with previous states\n this.replace(state.states);\n this._pointer = index;\n } else {\n // Add new state\n this.add(url, trigger);\n }\n\n return trigger;\n }\n\n /**\n * Add a new state.\n */\n public add(url: string, trigger: Trigger): void {\n // If no state, it will be updated later.\n const ns = 'tmp';\n const index = this.size;\n const action = this._getAction(trigger);\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n switch (action) {\n case 'push':\n window.history && window.history.pushState(item, '', url);\n break;\n case 'replace':\n window.history && window.history.replaceState(item, '', url);\n break;\n /* istanbul ignore next */\n default:\n }\n }\n\n /**\n * Update state.\n */\n public update(data: any, i?: number): void {\n const index = i || this._pointer;\n const existing = this.get(index);\n const state: IStateItem = {\n ...existing,\n ...data,\n };\n\n this.set(index, state);\n }\n\n /**\n * Remove last state.\n */\n public remove(i?: number): void {\n if (i) {\n this._states.splice(i, 1);\n } else {\n this._states.pop();\n }\n\n this._pointer--;\n }\n\n /**\n * Delete all states.\n */\n public clear(): void {\n this._states = [];\n this._pointer = -1;\n }\n\n /**\n * Replace all states.\n */\n public replace(newStates: IStateItem[]): void {\n this._states = newStates;\n }\n\n /**\n * Get state by index.\n */\n public get(index: number) {\n return this._states[index];\n }\n\n /**\n * Set state by index.\n */\n public set(i: number, state: IStateItem) {\n return (this._states[i] = state);\n }\n\n /**\n * Get the current state.\n */\n get current(): IStateItem {\n return this._states[this._pointer];\n }\n\n /**\n * Get the last state (top of the history stack).\n */\n get state(): IStateItem {\n return this._states[this._states.length - 1];\n }\n\n /**\n * Get the previous state.\n */\n get previous(): IStateItem | null {\n return this._pointer < 1 ? null : this._states[this._pointer - 1];\n }\n\n /**\n * Get the state size.\n */\n get size(): number {\n return this._states.length;\n }\n\n /**\n * Get the history action: push vs replace\n */\n private _getAction(trigger: Trigger): HistoryAction {\n let action: HistoryAction = 'push';\n\n // Manage `data-barba-history` attribute\n // to get the right action (push vs replace).\n const el = trigger as HTMLAnchorElement;\n const attr = `${schemaAttribute.prefix}-${schemaAttribute.history}`;\n\n if (el.hasAttribute && el.hasAttribute(attr)) {\n action = el.getAttribute(attr) as HistoryAction;\n }\n\n return action;\n }\n\n /**\n * Get the direction of popstate change\n */\n private _getDirection(diff: number): Trigger {\n // Check if \"session switch\"\n if (Math.abs(diff) > 1) {\n // Ex 6-0 > 0 -> forward, 0-6 < 0 -> back\n return diff > 0 ? 'forward' : 'back';\n } else {\n if (diff === 0) {\n return 'popstate';\n } else {\n // Ex 6-5 > 0 -> back, 5-6 < 0 -> forward\n return diff > 0 ? 'back' : 'forward';\n }\n }\n }\n}\n\nconst history = new History();\n\nexport { history };\n", "/**\n * @barba/core/utils/helpers\n *

\n * ## Helpers\n *\n * - Update next page data\n *\n * @module core/utils/helpers\n * @preferred\n */\n\n/***/\n\n// Third-party\nimport ptr from 'path-to-regexp';\n// Definitions\nimport { ITransitionData } from '../defs';\n// Utils\nimport { dom } from './dom';\nimport { history } from './history';\n\n/**\n * Update `data.next`, the title and the history\n */\nexport const update = async (\n page: Promise,\n data: ITransitionData\n): Promise => {\n // If not already updated\n if (!data.next.html) {\n const html = await page;\n const { next } = data;\n\n if (html) {\n // see: https://github.com/barbajs/barba/issues/362\n // const nextDocument = dom.toDocument(html);\n const nextDocument = dom.toElement(html);\n\n next.namespace = dom.getNamespace(nextDocument);\n next.container = dom.getContainer(nextDocument);\n // see https://github.com/barbajs/barba/issues/362\n // next.html = dom.getHtml(nextDocument);\n // next.html = nextDocument.innerHTML;\n next.html = html;\n\n // Update history namespace (not available when initially set)\n history.update({ ns: next.namespace });\n\n // Update title.\n const { title } = dom.toDocument(html);\n\n document.title = title;\n }\n }\n};\n\n/**\n * Next tick\n */\nexport const nextTick = () =>\n new Promise(resolve => {\n window.requestAnimationFrame(resolve);\n // DEV: same result?\n // setTimeout(resolve, 0);\n });\n\n/**\n * Turn a route string such as `/user/:name` into a regular expression.\n *\n * Used for:\n *\n * - routes to ignore\n * - route transition resolution\n *\n * @see https://www.npmjs.com/package/path-to-regexp\n */\nconst pathToRegexp = ptr;\n\nexport { pathToRegexp };\n", "/**\n * @barba/core/utils/url\n *

\n * ## URL utils.\n *\n * - Collect and structure informations from URLs\n *\n * @module core/utils/url\n */\n\n/***/\n\n// Definitions\nimport { IGenericObject, IUrlBase } from '../defs';\n\n/**\n * Get location href.\n */\nexport const getHref = () => window.location.href;\n\n/**\n * Get location origin.\n */\nexport const getOrigin = () => window.location.origin;\n\n/**\n * Get port based on URL or location.\n */\nexport const getPort = (url: string = window.location.href) => parse(url).port;\n\n/**\n * Get path from URL.\n */\nexport const getPath = (url: string = window.location.href) => parse(url).path;\n\n/**\n * Get query object from URL.\n */\n// export const getQuery = (url: string): IGenericObject => parse(url).query;\n\n/**\n * Get hash from URL.\n */\n// export const getHash = (url: string): string => parse(url).hash;\n\n/**\n * Parse URL for path, query and hash and more.\n */\nexport const parse = (url: string): IUrlBase => {\n // Port\n let port;\n const matches = url.match(/:\\d+/);\n\n if (matches === null) {\n if (/^http/.test(url)) {\n port = 80;\n }\n\n if (/^https/.test(url)) {\n port = 443;\n }\n } else {\n const portString = matches[0].substring(1);\n\n port = parseInt(portString, 10);\n }\n\n // Path\n let path = url.replace(getOrigin(), '');\n let hash;\n let query = {};\n\n // Hash\n const hashIndex = path.indexOf('#');\n\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex + 1);\n path = path.slice(0, hashIndex);\n }\n\n // Query\n const queryIndex = path.indexOf('?');\n\n if (queryIndex >= 0) {\n query = parseQuery(path.slice(queryIndex + 1));\n path = path.slice(0, queryIndex);\n }\n\n return {\n hash,\n path,\n port,\n query,\n };\n};\n\n/**\n * Parse a query string to object.\n */\nexport const parseQuery = (str: string) =>\n str.split('&').reduce((acc: IGenericObject, el: string) => {\n const [key, value] = el.split('=');\n\n acc[key] = value;\n\n return acc;\n }, {});\n\n/**\n * Clean URL, remove \"hash\" and/or \"trailing slash\".\n */\nexport const clean = (url: string = window.location.href) =>\n url.replace(/(\\/#.*|\\/|#.*)$/, '');\n", "/**\n * @barba/core/utils/request\n *

\n * ## Fetch pages for transitions.\n *\n * - Includes timeout\n * - Uses Fetch API\n * - Handles errors\n *\n * @module core/utils/request\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { RequestError } from '../defs';\n\n/**\n * Init a page request.\n * Fetch the page and returns a promise with the text content.\n */\nfunction request(\n url: string,\n ttl: number = 2e3,\n requestError: RequestError\n): Promise {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n resolve(xhr.responseText);\n } else if (xhr.status) {\n // HTTP code is not 200, reject with response.\n const res = {\n status: xhr.status,\n statusText: xhr.statusText,\n };\n requestError(url, res);\n reject(res);\n }\n }\n };\n xhr.ontimeout = () => {\n const err = new Error(`Timeout error [${ttl}]`);\n requestError(url, err);\n reject(err);\n };\n xhr.onerror = () => {\n const err = new Error(`Fetch error`);\n requestError(url, err);\n reject(err);\n };\n\n xhr.open('GET', url);\n xhr.timeout = ttl;\n xhr.setRequestHeader(\n 'Accept',\n 'text/html,application/xhtml+xml,application/xml'\n );\n xhr.setRequestHeader('x-barba', 'yes');\n xhr.send();\n });\n}\n\nexport { request };\n", "module.exports = isPromise;\n\nfunction isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n", "import isPromise from 'is-promise';\n\n// https://github.com/SBoudrias/run-async\n/* istanbul ignore next */\nexport function runAsync(\n func: (...args: any[]) => void | Promise,\n ctx: any = {}\n): (...args: any[]) => Promise {\n return (...args: any[]) => {\n let async = false;\n\n const promise = new Promise((resolve, reject) => {\n // Add async to context\n ctx.async = () => {\n async = true;\n\n return (err: any, value: any) => {\n if (err) {\n reject(err);\n } else {\n resolve(value);\n }\n };\n };\n\n const answer = func.apply(ctx, args as []);\n\n if (!async) {\n if (isPromise(answer)) {\n (answer as Promise).then(resolve, reject);\n } else {\n resolve(answer);\n }\n }\n });\n\n return promise;\n };\n}\n", "/**\n * @barba/core/modules/hooks\n *

\n * ## Hooks manager.\n *\n * - Register and trigger hooks\n *\n * Hooks can be easily registered:\n *\n * ```js\n * hooks.leave(callback, context);\n * ```\n *\n * @module core/modules/hooks\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HookFunction, HookMethods, HooksAll } from './defs';\n// Modules\nimport { Logger } from './modules/Logger';\n// Utils\nimport { runAsync } from './utils';\n// Types\ninterface IHookInfos {\n ctx: any;\n fn: HookFunction;\n}\n\nexport class Hooks extends HookMethods {\n /**\n * Allow the use of `hooks[name](cb, ctx)`.\n */\n [key: string]: any;\n // [key in HooksAll]?: any;\n public logger: Logger = new Logger('@barba/core');\n /**\n * All available hooks.\n *\n * See [[HooksAll]]\n */\n // TODO: get hooks from defs (DRY)?\n public all: HooksAll[] = [\n 'ready',\n 'page',\n 'reset',\n 'currentAdded',\n 'currentRemoved',\n 'nextAdded',\n 'nextRemoved',\n 'beforeOnce',\n 'once',\n 'afterOnce',\n 'before',\n 'beforeLeave',\n 'leave',\n 'afterLeave',\n 'beforeEnter',\n 'enter',\n 'afterEnter',\n 'after',\n ];\n /**\n * Registered hooks.\n *\n * - Unique hook name\n * - Associated data set(s) (callback + context)\n */\n public registered: Map> = new Map();\n\n constructor() {\n super();\n this.init();\n }\n\n public init() {\n this.registered.clear();\n this.all.forEach(hook => {\n if (!this[hook]) {\n this[hook] = (fn: HookFunction, ctx?: any) => {\n if (!this.registered.has(hook)) {\n this.registered.set(hook, new Set());\n }\n const set = this.registered.get(hook);\n\n set.add({\n ctx: ctx || {},\n fn,\n });\n };\n }\n });\n }\n\n /**\n * Do hook.\n *\n * Trigger registered hooks.\n */\n public do(name: HooksAll, ...args: any): Promise {\n if (this.registered.has(name)) {\n // Let's start a chain of promises\n let chain = Promise.resolve();\n\n this.registered.get(name).forEach(hook => {\n // Chain async hooks promisified\n chain = chain.then(() => runAsync(hook.fn, hook.ctx)(...args));\n });\n\n return chain.catch(error => {\n this.logger.debug(`Hook error [${name}]`);\n this.logger.error(error);\n });\n }\n\n return Promise.resolve();\n }\n\n public clear(): void {\n this.all.forEach(hook => {\n delete this[hook];\n });\n\n this.init();\n }\n\n /**\n * Help, print available and registered hooks.\n */\n public help(): void {\n this.logger.info(`Available hooks: ${this.all.join(',')}`);\n const registered: string[] = [];\n this.registered.forEach((value, key) => registered.push(key));\n this.logger.info(`Registered hooks: ${registered.join(',')}`);\n }\n}\n\nconst hooks = new Hooks();\n\nexport { hooks };\n", "/**\n * @barba/core/modules/ignore\n *

\n * ## Manage ignore options.\n *\n * - cache\n * - prefetch\n *\n * @module core/modules/ignore\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption } from '../defs';\n// Utils\nimport { pathToRegexp } from '../utils/helpers';\nimport { parse } from '../utils/url';\n\nexport class Ignore {\n private _ignoreAll: boolean;\n private _ignoreRegexes: RegExp[] = [];\n\n constructor(ignore: IgnoreOption) {\n if (typeof ignore === 'boolean') {\n this._ignoreAll = ignore;\n } else {\n const paths = Array.isArray(ignore) ? ignore : [ignore];\n\n this._ignoreRegexes = paths.map(p => pathToRegexp(p));\n }\n }\n\n public checkHref(href: string): boolean {\n if (typeof this._ignoreAll === 'boolean') {\n return this._ignoreAll;\n }\n\n const { path } = parse(href);\n\n return this._ignoreRegexes.some(regex => regex.exec(path) !== null);\n }\n}\n", "/**\n * @barba/core/modules/cache\n *

\n * ## Cache for storing URL / HTML.\n *\n * @module core/modules/cache\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { CacheAction, CacheRequest, ICacheData, IgnoreOption } from '../defs';\n// Modules\nimport { Ignore } from './Ignore';\n\nexport class Cache extends Ignore {\n private _state: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n }\n\n /**\n * Set value to cache\n */\n public set(\n href: string,\n request: CacheRequest,\n action: CacheAction\n ): ICacheData {\n this._state.set(href, {\n action,\n request,\n });\n\n return {\n action,\n request,\n };\n }\n\n /**\n * Get data from cache\n */\n public get(href: string): ICacheData {\n return this._state.get(href);\n }\n\n /**\n * Get request from cache\n */\n public getRequest(href: string): CacheRequest {\n return this._state.get(href).request;\n }\n\n /**\n * Get action from cache\n */\n public getAction(href: string): CacheAction {\n return this._state.get(href).action;\n }\n\n /**\n * Check if value exists into cache\n */\n public has(href: string): boolean {\n /* istanbul ignore else */\n if (this.checkHref(href)) {\n return false;\n }\n return this._state.has(href);\n }\n\n /**\n * Delete value from cache\n */\n public delete(href: string): boolean {\n return this._state.delete(href);\n }\n\n /**\n * Update cache value\n */\n public update(href: string, data: ICacheData): ICacheData {\n const state = {\n ...this._state.get(href),\n ...data,\n };\n this._state.set(href, state);\n\n return state;\n }\n}\n", "/**\n * @barba/core/modules/prevent\n *

\n * ## Prevent checks.\n *\n * - Gathers all the tests that allow Barba to work and play transitions\n *\n * @module core/modules/prevent\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption, Link, PreventCheck } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n// Utils\nimport { url } from '../utils';\n// Modules\nimport { Ignore } from './Ignore';\n\n/**\n * Make sure the browser supports `history.pushState`.\n */\nconst pushState: PreventCheck = () => !window.history.pushState;\n\n/**\n * Make sure there is an `el` and `href`.\n */\nconst exists: PreventCheck = ({ el, href }) => !el || !href;\n\n/**\n * If the user is pressing ctrl + click, the browser will open a new tab.\n */\nconst newTab: PreventCheck = ({ event }) =>\n (event as KeyboardEvent).which > 1 ||\n (event as KeyboardEvent).metaKey ||\n (event as KeyboardEvent).ctrlKey ||\n (event as KeyboardEvent).shiftKey ||\n (event as KeyboardEvent).altKey;\n\n/**\n * If the link has `_blank` target.\n */\nconst blank: PreventCheck = ({ el }) =>\n el.hasAttribute('target') && (el as Link).target === '_blank';\n\n/**\n * If the domain is the same (in order to avoid pushState cross origin security problem).\n * Note: SVGAElement do not have `protocol` neither `hostname` properties.\n */\nconst corsDomain: PreventCheck = ({ el }) =>\n ((el as HTMLAnchorElement).protocol !== undefined &&\n window.location.protocol !== (el as HTMLAnchorElement).protocol) ||\n ((el as HTMLAnchorElement).hostname !== undefined &&\n window.location.hostname !== (el as HTMLAnchorElement).hostname);\n\n/**\n * If the port is the same.\n * Note: SVGAElement do not have `port` property.\n */\nconst corsPort: PreventCheck = ({ el }) =>\n (el as HTMLAnchorElement).port !== undefined &&\n url.getPort() !== url.getPort((el as HTMLAnchorElement).href);\n\n/**\n * If the link has download attribute.\n */\nconst download: PreventCheck = ({ el }) =>\n el.getAttribute && typeof el.getAttribute('download') === 'string';\n\n/**\n * If the links contains [data-barba-prevent] or [data-barba-prevent=\"self\"].\n */\nconst preventSelf: PreventCheck = ({ el }) =>\n el.hasAttribute(`${schemaAttribute.prefix}-${schemaAttribute.prevent}`);\n\n/**\n * If some link ancestor contains [data-barba-prevent=\"all\"].\n */\nconst preventAll: PreventCheck = ({ el }) =>\n Boolean(\n el.closest(`[${schemaAttribute.prefix}-${schemaAttribute.prevent}=\"all\"]`)\n );\n\n/**\n * If the link is the current URL.\n *\n * > Not in the test suite.\n */\nconst sameUrl: PreventCheck = ({ href }) =>\n url.clean(href) === url.clean() && url.getPort(href) === url.getPort();\n\nexport class Prevent extends Ignore {\n public suite: string[] = [];\n public tests: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n this.init();\n }\n\n public init(): void {\n // Add defaults\n this.add('pushState', pushState);\n this.add('exists', exists);\n this.add('newTab', newTab);\n this.add('blank', blank);\n this.add('corsDomain', corsDomain);\n this.add('corsPort', corsPort);\n this.add('download', download);\n this.add('preventSelf', preventSelf);\n this.add('preventAll', preventAll);\n\n // Outside of the test suite\n this.add('sameUrl', sameUrl, false);\n }\n\n public add(name: string, check: PreventCheck, suite: boolean = true): void {\n this.tests.set(name, check);\n suite && this.suite.push(name);\n }\n\n /**\n * Run individual test\n */\n public run(name: string, el: Link, event: Event, href: string): boolean {\n return this.tests.get(name)({\n el,\n event,\n href,\n });\n }\n\n /**\n * Run test suite\n */\n public checkLink(el: Link, event: Event, href: string): boolean {\n return this.suite.some(name => this.run(name, el, event, href));\n }\n}\n", "// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\nexport class BarbaError extends Error {\n /* istanbul ignore next */\n constructor(\n public error: Error,\n public label = 'Barba error',\n ...params: any[]\n ) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(...params);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BarbaError);\n }\n\n this.name = 'BarbaError';\n }\n}\n", "/**\n * @barba/core/modules/store\n *

\n * ## Transitions store.\n *\n * - Resolve transition\n * - Manage rules\n *\n * @module core/modules/store\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n IRule,\n IRules,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n RuleName,\n} from '../defs';\n\n// Modules\nimport { Logger } from './Logger';\n\nexport class Store {\n public logger: Logger = new Logger('@barba/core');\n /**\n * All registered transitions.\n */\n public all: ITransitionPage[] = [];\n /**\n * \"Page only\" registered transitions.\n */\n public page: ITransitionPage[] = [];\n /**\n * \"Once only\" registered transitions.\n */\n public once: ITransitionOnce[] = [];\n /**\n * Rules for transition resolution.\n *\n * Defaults:\n *\n * - namespace\n * - custom\n */\n private _rules: IRule[] = [\n {\n name: 'namespace',\n type: 'strings',\n },\n {\n name: 'custom',\n type: 'function',\n },\n ];\n\n /**\n * Init store.\n */\n constructor(transitions: ITransitionPage[] = []) {\n /* istanbul ignore else */\n if (transitions) {\n // TODO: add check for valid transitions? criteria? (once || enter && leave)\n this.all = this.all.concat(transitions);\n }\n this.update();\n }\n\n /**\n * Add rule or transition.\n */\n public add(type: 'rule' | 'transition', data: any): void {\n switch (type) {\n case 'rule':\n // TODO: check for valid rule\n this._rules.splice(data.position || 0, 0, data.value);\n break;\n case 'transition':\n default:\n // TODO: check for valid transition\n this.all.push(data);\n break;\n }\n\n this.update();\n }\n\n /**\n * Resolve transition.\n */\n public resolve(\n data: ITransitionData,\n filters: ITransitionFilters = {}\n ): ITransitionOnce | ITransitionPage {\n // Filter on \"once\"\n let transitions = filters.once ? this.once : this.page;\n\n // Filter on \"self\"\n if (filters.self) {\n transitions = transitions.filter(t => t.name && t.name === 'self');\n } else {\n transitions = transitions.filter(t => !t.name || t.name !== 'self');\n }\n\n // All matching transition infos\n const matching = new Map();\n\n // Active = first of valid transitions\n // sorted by directions (from/to, from || to, \u2026)\n const active = transitions.find(t => {\n let valid = true;\n const match = {};\n\n if (filters.self && t.name === 'self') {\n return true;\n }\n\n // Check rules\n this._rules.reverse().forEach(rule => {\n if (valid) {\n valid = this._check(t, rule, data, match);\n // From/to check\n if (t.from && t.to) {\n valid =\n this._check(t, rule, data, match, 'from') &&\n this._check(t, rule, data, match, 'to');\n }\n if (t.from && !t.to) {\n valid = this._check(t, rule, data, match, 'from');\n }\n if (!t.from && t.to) {\n valid = this._check(t, rule, data, match, 'to');\n }\n }\n });\n\n matching.set(t, match);\n\n return valid;\n });\n\n const activeMatch = matching.get(active);\n const transitionType = [];\n if (filters.once) {\n transitionType.push('once');\n } else {\n transitionType.push('page');\n }\n if (filters.self) {\n transitionType.push('self');\n }\n\n if (activeMatch) {\n // Log resolved transition\n const infos: any[] = [active];\n // Log if matching criteria\n Object.keys(activeMatch).length > 0 && infos.push(activeMatch);\n\n this.logger.info(\n `Transition found [${transitionType.join(',')}]`,\n ...infos\n );\n } else {\n this.logger.info(`No transition found [${transitionType.join(',')}]`);\n }\n\n return active;\n }\n\n /**\n * ### Update store.\n *\n * - Reorder transition by priorities\n * - Get wait indicator\n * - Get once transitions\n */\n public update(): void {\n // Reorder by priorities\n this.all = this.all\n .map(t => this._addPriority(t))\n .sort((a, b) => a.priority - b.priority)\n .reverse()\n .map(t => {\n delete t.priority;\n\n return t;\n });\n this.page = this.all.filter(\n t => t.leave !== undefined || t.enter !== undefined\n ) as ITransitionPage[];\n this.once = this.all.filter(t => t.once !== undefined) as ITransitionOnce[];\n }\n\n /**\n * ### Check if transition apply.\n *\n * Based on rule, page data and optional direction:\n *\n * 1. transition has no rule \"property\":\n * - always returns true\n * 2. transition has rule \"property\":\n * - \"strings\" should be present on both side (transition + page) and match\n * - \"function\" should return true\n */\n private _check(\n transition: ITransitionPage,\n rule: IRule,\n data: ITransitionData,\n match: any,\n direction?: 'from' | 'to'\n ): boolean {\n let isValid = true;\n let hasMatch = false;\n const t = transition;\n const { name, type } = rule;\n const strRule = name as IRules['strings'];\n const objRule = name as IRules['object'];\n const fnName = name as IRules['function'];\n const base = direction ? t[direction] : t; // = t || t.from || t.to\n const page = direction === 'to' ? data.next : data.current; // = current || next\n const exist = direction ? base && base[name] : base[name];\n\n // If transition rule exists\n if (exist) {\n switch (type) {\n case 'strings':\n default: {\n // Array support\n const names: string[] = Array.isArray(base[strRule])\n ? (base[strRule] as string[])\n : [base[strRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[strRule] && names.indexOf(page[strRule]) !== -1) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[strRule]) === -1) {\n isValid = false;\n }\n break;\n }\n\n case 'object': {\n // Array support\n const names: string[] = Array.isArray(base[objRule])\n ? (base[objRule] as string[])\n : [base[objRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[objRule]) {\n if (\n page[objRule].name &&\n names.indexOf(page[objRule].name) !== -1\n ) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[objRule].name) === -1) {\n isValid = false;\n }\n } else {\n isValid = false;\n }\n break;\n }\n\n case 'function':\n if (base[fnName](data)) {\n hasMatch = true;\n } else {\n isValid = false;\n }\n break;\n }\n\n if (hasMatch) {\n if (direction) {\n match[direction] = match[direction] || {};\n match[direction][name] = t[direction][name];\n } else {\n match[name] = t[name];\n }\n }\n }\n\n return isValid;\n }\n\n /**\n * ### Calculate transition priority.\n *\n * Based on:\n *\n * - rule \"position\" (index) give tens, hundreds, thousands, \u2026\n * - from/to properties give units (0, 1 or 2)\n */\n private _calculatePriority(\n t: ITransitionPage,\n ruleName: RuleName,\n ruleIndex: number\n ): number {\n let priority = 0;\n\n if (\n t[ruleName] ||\n (t.from && t.from[ruleName]) ||\n (t.to && t.to[ruleName])\n ) {\n priority += Math.pow(10, ruleIndex);\n\n if (t.from && t.from[ruleName]) {\n priority += 1;\n }\n if (t.to && t.to[ruleName]) {\n priority += 2;\n }\n }\n\n return priority;\n }\n\n private _addPriority(t: ITransitionPage): ITransitionPage {\n t.priority = 0;\n let priority = 0;\n\n this._rules.forEach((rule, i) => {\n const { name } = rule;\n const index = i + 1;\n\n priority += this._calculatePriority(t, name, index);\n });\n\n t.priority = priority;\n\n return t;\n }\n}\n", "/**\n * @barba/core/modules/transitions\n *

\n * ## Transitions manager.\n *\n * - Handle hooks and transition lifecycle\n *\n * @module core/modules/transitions\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n HooksTransition,\n HooksTransitionMap,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n Wrapper,\n} from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { dom, helpers, runAsync } from '../utils';\n// Modules\nimport { BarbaError } from './Error';\nimport { Logger } from './Logger';\nimport { Store } from './Store';\n\nexport class Transitions {\n public logger: Logger = new Logger('@barba/core');\n public store: Store;\n private _running: boolean = false;\n\n constructor(transitions: ITransitionPage[] = []) {\n this.store = new Store(transitions);\n }\n\n /**\n * Get resolved transition\n *\n * - based on data\n */\n public get(\n data: ITransitionData,\n filters?: ITransitionFilters\n ): ITransitionOnce | ITransitionPage {\n return this.store.resolve(data, filters);\n }\n\n /**\n * Animation running status.\n */\n get isRunning(): boolean {\n return this._running;\n }\n set isRunning(status: boolean) {\n this._running = status;\n }\n\n /**\n * Check for registered once transition(s).\n */\n get hasOnce(): boolean {\n return this.store.once.length > 0;\n }\n\n /**\n * Check for registered self transition.\n */\n get hasSelf(): boolean {\n return this.store.all.some(t => t.name === 'self');\n }\n\n /**\n * ### Wait indicator.\n *\n * Tells Barba to get next page data
\n * before starting the resolution
\n * because some registered transitions need
\n * next page data to be resolved (eg: `sync: true`, `to: { namespace }`, \u2026)\n */\n get shouldWait(): boolean {\n return this.store.all.some(t => (t.to && !t.to.route) || t.sync);\n }\n\n /**\n * ### Do \"once\" transition.\n *\n * Hooks: see [[HooksOnce]].\n */\n public async doOnce({\n data,\n transition,\n }: {\n data: ITransitionData;\n transition: ITransitionOnce;\n }) {\n const t = transition || {};\n this._running = true;\n\n try {\n await this._doAsyncHook('beforeOnce', data, t);\n await this.once(data, t);\n await this._doAsyncHook('afterOnce', data, t);\n } catch (error) {\n this._running = false;\n\n this.logger.debug('Transition error [before/after/once]');\n this.logger.error(error);\n }\n\n this._running = false;\n }\n\n /**\n * ### Do \"page\" transition.\n *\n * Hooks: see [[HooksPage]].\n *\n * `sync: false` (default) order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. leave\n * 4. afterLeave\n * 5. beforeEnter\n * 6. enter\n * 7. afterEnter\n * 8. after\n *\n * `sync: true` order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. beforeEnter\n * 4. leave & enter\n * 5. afterLeave\n * 6. afterEnter\n * 7. after\n */\n public async doPage({\n data,\n transition,\n page,\n wrapper,\n }: {\n data: ITransitionData;\n transition: ITransitionPage;\n page: Promise;\n wrapper: Wrapper;\n }) {\n const t = transition || {};\n const sync = t.sync === true || false;\n\n this._running = true;\n\n try {\n // Check sync mode, wait for next content\n if (sync) {\n await helpers.update(page, data);\n }\n\n await this._doAsyncHook('before', data, t);\n\n if (sync) {\n try {\n await this.add(data, wrapper);\n // Before actions\n await this._doAsyncHook('beforeLeave', data, t);\n await this._doAsyncHook('beforeEnter', data, t);\n\n // Actions\n await Promise.all([this.leave(data, t), this.enter(data, t)]);\n\n // After actions\n await this._doAsyncHook('afterLeave', data, t);\n await this._doAsyncHook('afterEnter', data, t);\n } catch (error) {\n // this.logger.debug('Transition error [sync]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(error, 'Transition error [sync]');\n }\n }\n } else {\n let leaveResult: any = false;\n\n try {\n // Leave\n await this._doAsyncHook('beforeLeave', data, t);\n\n leaveResult = await Promise.all([\n this.leave(data, t),\n helpers.update(page, data),\n ]).then(values => values[0]);\n\n await this._doAsyncHook('afterLeave', data, t);\n\n // TODO: check here \"valid\" page result\n // before going further\n } catch (error) {\n // this.logger.debug('Transition error [before/after/leave]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/leave]'\n );\n }\n }\n\n try {\n // Enter\n /* istanbul ignore else */\n if (leaveResult !== false) {\n await this.add(data, wrapper);\n\n await this._doAsyncHook('beforeEnter', data, t);\n await this.enter(data, t, leaveResult);\n await this._doAsyncHook('afterEnter', data, t);\n }\n } catch (error) {\n // this.logger.debug('Transition error [before/after/enter]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/enter]'\n );\n }\n }\n }\n\n // Remove current contaienr\n await this.remove(data);\n\n await this._doAsyncHook('after', data, t);\n } catch (error) {\n this._running = false;\n\n // If \"custom/specific\" barba error.\n /* istanbul ignore else */\n if (error.name && error.name === 'BarbaError') {\n this.logger.debug(error.label);\n this.logger.error(error.error);\n\n throw error;\n }\n\n this.logger.debug('Transition error [page]');\n this.logger.error(error);\n\n throw error;\n }\n\n this._running = false;\n }\n\n /**\n * Once hook + async \"once\" transition.\n */\n public async once(data: ITransitionData, t: ITransitionOnce): Promise {\n await hooks.do('once', data, t);\n\n return t.once ? runAsync(t.once, t)(data) : Promise.resolve();\n }\n\n /**\n * Leave hook + async \"leave\" transition.\n */\n public async leave(data: ITransitionData, t: ITransitionPage): Promise {\n await hooks.do('leave', data, t);\n\n return t.leave ? runAsync(t.leave, t)(data) : Promise.resolve();\n }\n\n /**\n * Enter hook + async \"enter\" transition.\n */\n public async enter(\n data: ITransitionData,\n t: ITransitionPage,\n leaveResult?: any\n ): Promise {\n await hooks.do('enter', data, t);\n\n return t.enter\n ? runAsync(t.enter, t)(data, leaveResult)\n : Promise.resolve();\n }\n\n /**\n * Add next container.\n */\n public async add(data: ITransitionData, wrapper: Wrapper): Promise {\n dom.addContainer(data.next.container, wrapper);\n hooks.do('nextAdded', data);\n }\n\n /**\n * Remove current container.\n */\n public async remove(data: ITransitionData): Promise {\n dom.removeContainer(data.current.container);\n hooks.do('currentRemoved', data);\n }\n\n private _isTransitionError(error: any) {\n if (error.message) {\n // Errors from request\n return !/Timeout error|Fetch error/.test(error.message);\n }\n\n if (error.status) {\n // Errors from request\n return false;\n }\n\n return true;\n }\n\n /**\n * Do hooks + async transition methods.\n */\n private async _doAsyncHook(\n hook: HooksTransition,\n data: ITransitionData,\n t: HooksTransitionMap\n ): Promise {\n await hooks.do(hook, data, t);\n\n return t[hook] ? runAsync(t[hook], t)(data) : Promise.resolve();\n }\n}\n", "/**\n * @barba/core/modules/views\n *

\n * ## Views manager.\n *\n * @module core/modules/views\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HooksView, IView, IViewData } from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { runAsync } from '../utils';\n// Types\ntype Hook = (data: IViewData) => Promise;\n\nexport class Views {\n /**\n * Available hook names for views.\n */\n public names: HooksView[] = [\n 'beforeLeave',\n 'afterLeave',\n 'beforeEnter',\n 'afterEnter',\n ];\n /**\n * Registered views by namespace.\n */\n public byNamespace: Map = new Map();\n\n /**\n * Init views.\n */\n constructor(views: IView[]) {\n if (views.length === 0) {\n return;\n }\n\n // TODO: add check\n // for valid views? criteria? (namespace property, string ?)\n // or duplicate\n views.forEach(view => {\n this.byNamespace.set(view.namespace, view);\n });\n\n this.names.forEach(name => {\n hooks[name](this._createHook(name));\n });\n }\n\n /**\n * Create the hook method.\n *\n * - get view based on namespace\n * - execute callback with transition data\n */\n private _createHook(name: HooksView): Hook {\n return data => {\n const { namespace } = name.match(/enter/i) ? data.next : data.current;\n const view = this.byNamespace.get(namespace);\n\n // TODO: manage self\u2026\n // if (view && data.trigger !== 'self') {\n if (view && view[name]) {\n return runAsync(view[name], view)(data);\n }\n\n return Promise.resolve();\n };\n }\n}\n", "// Element.prototype.matches polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\nif (!Element.prototype.matches) {\n Element.prototype.matches =\n (Element as any).prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n\n// Element.prototype.closest polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\nif (!Element.prototype.closest) {\n Element.prototype.closest = function closest(s: string) {\n let el = this;\n\n do {\n if (el.matches(s)) {\n return el;\n }\n\n el = (el.parentElement || el.parentNode) as Element;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n };\n}\n", "/**\n * @module core/schemas\n */\n\n// Definitions\nimport { ISchemaPage } from '../defs';\n\n/**\n * See [[ISchemaPage]]\n */\nexport const schemaPage: ISchemaPage = {\n container: null,\n html: '',\n namespace: '',\n url: {\n hash: '',\n href: '',\n path: '',\n port: null,\n query: {},\n },\n};\n", "/**\n * @barba/core\n *

\n * ## Barba core object\n *\n * Main methods:\n *\n * - `.init()` for initialization with options\n * - `.use()` for plugins\n *\n * @module core\n */\n\n/***/\n\nimport { version } from '../package.json';\n// Definitions\nimport {\n IBarbaOptions,\n IBarbaPlugin,\n IgnoreOption,\n ISchemaPage,\n ITransitionData,\n ITransitionOnce,\n ITransitionPage,\n Link,\n LinkEvent,\n RequestCustomError,\n RequestErrorOrResponse,\n SchemaAttributeValues,\n Trigger,\n Wrapper,\n} from './defs';\n// Hooks\nimport { hooks } from './hooks';\n// Modules\nimport { Cache } from './modules/Cache';\nimport { Logger } from './modules/Logger';\nimport { Prevent } from './modules/Prevent';\nimport { Transitions } from './modules/Transitions';\nimport { Views } from './modules/Views';\n// Polyfills\nimport './polyfills';\n// Schemas\nimport { schemaAttribute } from './schemas/attribute';\nimport { schemaPage } from './schemas/page';\n// Utils\nimport { dom, helpers, history, request, url } from './utils';\n\nexport class Core {\n /**\n * Version.\n */\n public version: string = version;\n /**\n * Schemas.\n */\n public schemaPage: ISchemaPage = schemaPage;\n /**\n * Logger class, allows plugins to create Logger.\n */\n public Logger: typeof Logger = Logger;\n /**\n * Barba logger.\n */\n public logger: Logger = new Logger('@barba/core');\n /**\n * Plugins.\n */\n public plugins: Array> = [];\n /**\n * Options\n */\n public timeout: number;\n public cacheIgnore: IgnoreOption;\n public prefetchIgnore: IgnoreOption;\n public preventRunning: boolean;\n /**\n * Hooks\n */\n public hooks = hooks;\n /**\n * Modules.\n */\n // public history: History;\n public cache: Cache;\n public prevent: Prevent;\n public transitions: Transitions;\n public views: Views;\n /**\n * Utils.\n */\n public dom = dom;\n public helpers = helpers;\n public history = history;\n public request = request;\n public url = url;\n\n private _data: ITransitionData;\n private _requestCustomError: RequestCustomError;\n private _wrapper: Wrapper;\n\n /**\n * ### Init plugin with options.\n *\n * See [[IBarbaPlugin]] for more details.\n */\n public use(plugin: IBarbaPlugin, options?: T): void {\n const installedPlugins = this.plugins;\n\n // Plugin installation\n if (installedPlugins.indexOf(plugin) > -1) {\n this.logger.warn(`Plugin [${plugin.name}] already installed.`);\n\n return;\n }\n\n if (typeof plugin.install !== 'function') {\n this.logger.warn(`Plugin [${plugin.name}] has no \"install\" method.`);\n\n return;\n }\n\n plugin.install(this, options);\n installedPlugins.push(plugin);\n }\n\n /**\n * ### Init barba with options.\n *\n * See [[IBarbaOptions]] for more details.\n *\n * Default values are:\n *\n * - transitions: `[]`\n * - views: `[]`\n * - schema: [[SchemaAttribute]]\n * - timeout: `2e3`\n * - cacheIgnore: `false`\n * - prefetchIgnore: `false`\n * - preventRunning: `false`\n * - prevent: `null`,\n * - debug: `false`\n * - logLevel: `'debug'`\n */\n public init(\n /** @ignore */ {\n transitions = [],\n views = [],\n schema = schemaAttribute,\n requestError,\n timeout = 2e3,\n cacheIgnore = false,\n prefetchIgnore = false,\n /* istanbul ignore next */\n preventRunning = false,\n prevent: preventCustom = null,\n debug = false,\n logLevel = 'off',\n }: IBarbaOptions = {}\n ) {\n // 0. Set logger level and print version\n Logger.setLevel(debug === true ? 'debug' : logLevel);\n this.logger.info(this.version);\n\n // 1. Manage options\n Object.keys(schema).forEach(k => {\n const attr = k as SchemaAttributeValues;\n\n /* istanbul ignore else */\n if (schemaAttribute[attr]) {\n schemaAttribute[attr] = schema[attr];\n }\n });\n this._requestCustomError = requestError;\n this.timeout = timeout;\n this.cacheIgnore = cacheIgnore;\n this.prefetchIgnore = prefetchIgnore;\n this.preventRunning = preventRunning;\n\n // 2. Get and check wrapper\n this._wrapper = this.dom.getWrapper();\n if (!this._wrapper) {\n throw new Error('[@barba/core] No Barba wrapper found');\n }\n this._wrapper.setAttribute('aria-live', 'polite'); // A11y\n\n // 3. Init pages (get \"current\" data)\n this._resetData();\n\n const { current } = this.data;\n\n if (!current.container) {\n throw new Error('[@barba/core] No Barba container found');\n }\n\n // 4. Init other modules\n this.cache = new Cache(cacheIgnore);\n this.prevent = new Prevent(prefetchIgnore);\n this.transitions = new Transitions(transitions);\n this.views = new Views(views);\n\n // Add prevent custom\n if (preventCustom !== null) {\n if (typeof preventCustom !== 'function') {\n throw new Error('[@barba/core] Prevent should be a function');\n }\n\n this.prevent.add('preventCustom', preventCustom);\n }\n\n // 5. Use \"current\" data\n // Init history\n this.history.init(current.url.href, current.namespace);\n // Add to cache\n // TODO: do not cache renderer HTML, only request results\u2026\n // this.cache.set(current.url.href, Promise.resolve(current.html), 'init');\n\n // 6. Bind context\n this._onLinkEnter = this._onLinkEnter.bind(this);\n this._onLinkClick = this._onLinkClick.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._bind();\n\n // 7. Init plugins\n this.plugins.forEach(plugin => plugin.init());\n\n // 8. Barba ready\n // Set next + trigger for once and `beforeEnter`/`afterEnter` view on page load.\n const onceData = this.data;\n\n onceData.trigger = 'barba';\n onceData.next = onceData.current;\n onceData.current = { ...this.schemaPage };\n this.hooks.do('ready', onceData);\n\n // 9. Finally, do once\u2026\n this.once(onceData);\n\n // Clean data for first barba transition\u2026\n this._resetData();\n }\n\n public destroy(): void {\n this._resetData();\n this._unbind();\n this.history.clear();\n this.hooks.clear();\n this.plugins = [];\n }\n\n get data(): ITransitionData {\n return this._data;\n }\n\n get wrapper(): HTMLElement {\n return this._wrapper;\n }\n\n /**\n * ### Force a page change without Barba transition.\n */\n public force(href: string): void {\n // DEV\n // Can be used waiting animation cancellation management\u2026\n window.location.assign(href);\n }\n\n /**\n * ### Go for a Barba transition.\n *\n * Manage \"self page\" href:\n *\n * - if same url and no self transition, keep default behavior\n * - link: reload the page\n * - anchor: scroll to\n * - if same url with self transition, use it\n * - then start a page transition.\n */\n public go(\n href: string,\n trigger: Trigger = 'barba',\n e?: LinkEvent | PopStateEvent\n ): Promise {\n // If animation running, force reload\n if (this.transitions.isRunning) {\n this.force(href);\n\n return;\n }\n\n let self = false;\n\n // Check prevent sameURL against current history\n // + state check\n // + update trigger with direction\n if (trigger === 'popstate') {\n self =\n this.history.current &&\n this.url.getPath(this.history.current.url) === this.url.getPath(href);\n } else {\n self = this.prevent.run('sameUrl', null, null, href);\n }\n\n if (self && !this.transitions.hasSelf) {\n return;\n }\n\n trigger = this.history.change(href, trigger, e);\n\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n return this.page(href, trigger, self);\n }\n\n /**\n * ### Start an \"once\" transition.\n *\n * If some registered \"once\" transition,\n * get the \"resolved\" transition from the store and start it.\n */\n public async once(readyData: ITransitionData): Promise {\n await this.hooks.do('beforeEnter', readyData);\n\n // Check if once transition\n if (this.transitions.hasOnce) {\n const transition = this.transitions.get(readyData, {\n once: true,\n }) as ITransitionOnce;\n\n await this.transitions.doOnce({ transition, data: readyData });\n }\n\n await this.hooks.do('afterEnter', readyData);\n }\n\n /**\n * ### Start a \"page\" transition.\n *\n * 1. If no running transition, updates data with full URL properties and trigger.\n * 2. Get page from cache or init request.\n * 3. Wait if some transitions need \"next\" data (`sync: true`, `to: \u2026`).\n * 4. Manage the history, depending on trigger.\n * 5. Get \"data\" and trigger \"go\" hook.\n * 6. Get the \"resolved\" transition from the store and start it.\n * 7. Update title and reset data (current, next = undefined).\n *\n * > If \"self\", use the \"self\" transition\n */\n public async page(\n href: string,\n trigger: Trigger,\n self: boolean\n ): Promise {\n this.data.next.url = {\n href,\n ...this.url.parse(href),\n };\n this.data.trigger = trigger;\n\n const page = this.cache.has(href)\n ? this.cache.update(href, { action: 'click' }).request\n : this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, trigger)\n ),\n 'click'\n ).request;\n\n // Need to wait before getting the right transition\n if (this.transitions.shouldWait) {\n await helpers.update(page, this.data);\n }\n\n const data = this.data;\n\n // Hook: between trigger and transition\n // Can be used to resolve \"route\"\u2026\n await this.hooks.do('page', data);\n\n try {\n const transition = this.transitions.get(data, {\n once: false,\n self,\n }) as ITransitionPage;\n\n await this.transitions.doPage({\n data,\n page,\n transition,\n wrapper: this._wrapper,\n });\n\n this._resetData();\n } catch (error) {\n // Something went wrong (rejected promise, error, 404, 505, other\u2026)\n // TODO: manage / use cases for cancellation\n // this.logger.debug('Transition cancelled');\n\n // If transition error and no debug mode, force reload page.\n /* istanbul ignore else */\n if (Logger.getLevel() === 0) {\n this.force(data.current.url.href);\n }\n }\n }\n\n /**\n * When a request error occurs.\n *\n * Allow the user to manage request error. (E.g: 404)\n */\n public onRequestError(trigger: Trigger, ...args: any): boolean {\n // Cancel transition status\n this.transitions.isRunning = false;\n\n const [href, response]: [string, RequestErrorOrResponse] = args;\n const action = this.cache.getAction(href);\n this.cache.delete(href);\n\n // Custom requestError returning false will return here.\n if (\n this._requestCustomError &&\n this._requestCustomError(trigger, action, href, response) === false\n ) {\n return false;\n }\n\n // Force page change\n if (action === 'click') {\n this.force(href);\n }\n return false;\n }\n\n /**\n * Programmatically prefetch\n */\n public prefetch(href: string) {\n // Already in cache\n /* istanbul ignore next */\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, 'barba')\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'prefetch'\n );\n }\n\n /**\n * Bind event listeners.\n */\n private _bind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.addEventListener('mouseover', this._onLinkEnter);\n document.addEventListener('touchstart', this._onLinkEnter);\n }\n document.addEventListener('click', this._onLinkClick);\n window.addEventListener('popstate', this._onStateChange);\n }\n\n /**\n * Bind event listeners.\n */\n private _unbind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.removeEventListener('mouseover', this._onLinkEnter);\n document.removeEventListener('touchstart', this._onLinkEnter);\n }\n document.removeEventListener('click', this._onLinkClick);\n window.removeEventListener('popstate', this._onStateChange);\n }\n\n /**\n * When a element is entered.\n *\n * Get valid link element.\n * Cache URL if needed.\n */\n private _onLinkEnter(e: LinkEvent): void {\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n const href = this.dom.getHref(link);\n\n if (this.prevent.checkHref(href)) {\n return;\n }\n\n // Already in cache\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, link)\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'enter'\n );\n }\n\n /**\n * When an element is clicked.\n *\n * Get valid link element.\n * Prevent same URL.\n * Go for a Barba transition.\n */\n private _onLinkClick(e: LinkEvent): void {\n // This use `prevent.checkLink` under the hood to get eligible link.\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n if (this.transitions.isRunning && this.preventRunning) {\n e.preventDefault();\n e.stopPropagation();\n\n return;\n }\n\n this.go(this.dom.getHref(link), link, e);\n }\n\n /**\n * When History state changes.\n *\n * Get \"href\" from URL\n * Go for a Barba transition.\n */\n private _onStateChange(e: PopStateEvent): void {\n this.go(this.url.getHref(), 'popstate', e);\n }\n\n /**\n * Get a valid link ancestor.\n *\n * Check for a \"href\" attribute.\n * Then check if eligible for Barba.\n */\n private _getLinkElement(e: LinkEvent): Link {\n let el = e.target as Link;\n\n while (el && !this.dom.getHref(el)) {\n el = (el as HTMLElement).parentNode as Link;\n }\n\n // Check prevent\n if (!el || this.prevent.checkLink(el, e, this.dom.getHref(el))) {\n return;\n }\n\n return el;\n }\n\n /**\n * Reset pages data.\n *\n * Set \"current\" and unset \"next\".\n */\n private _resetData() {\n const href = this.url.getHref();\n const current = {\n container: this.dom.getContainer(),\n html: this.dom.getHtml(),\n namespace: this.dom.getNamespace(),\n url: {\n href,\n ...this.url.parse(href),\n },\n };\n\n this._data = {\n current,\n next: { ...this.schemaPage },\n trigger: undefined,\n };\n\n this.hooks.do('reset', this.data);\n }\n}\n\nconst core = new Core();\n\nexport default core;\n", "!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", "import { module } from 'modujs';\nimport barba from '@barba/core';\nimport config from '../config'\n\nexport default class extends module {\n constructor(m) {\n super(m);\n }\n\n init() {\n this.barba = barba.init({\n debug: config.IS_DEV,\n schema: {\n prefix: 'data-load',\n },\n transitions: [{\n name: 'default-transition',\n beforeLeave: () => {\n },\n leave: (data) => {\n this.call('destroy', data.current.container, 'app');\n },\n beforeEnter: () => {\n },\n enter: (data) => {\n this.call('update', data.next.container, 'app');\n }\n }]\n });\n\n console.log('init', this.barba, barba)\n\n }\n}\n", "const env = process.env.NODE_ENV\n\nexport default config = {\n\n // Env\n ENV: env,\n IS_PROD: env === 'production',\n IS_DEV: env === 'development',\n\n // Classnames\n CLASS: {\n LOADING: 'is-loading',\n READY: 'is-ready',\n LOADED: 'is-loaded'\n }\n}\n", "const LAZY_LOADED_IMAGES = []\n\nexport function loadImage(url, options = {}) {\n return new Promise((resolve, reject) => {\n const $img = new Image();\n\n if (options.crossOrigin) {\n $img.crossOrigin = options.crossOrigin;\n }\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 the given image.\n *\n * @param {HTMLImageElement} $el - The image element.\n * @param {?string} url - The URI to lazy load into $el.\n * If falsey, the value of the `data-src` attribute on $el will be used as the URI.\n * @param {?function} callback - A function to call when the image is loaded.\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\n if (!loadedImage.url) {\n return;\n }\n\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 = $el.closest('.c-lazy');\n\n if(lazyParent) {\n lazyParent.classList.add('-lazy-loaded')\n lazyParent.style.backgroundImage = ''\n }\n\n $el.classList.add('-lazy-loaded')\n\n callback?.()\n })\n}\n", "/* locomotive-scroll v4.1.3 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar defaults = {\n el: document,\n name: 'scroll',\n offset: [0, 0],\n repeat: false,\n smooth: false,\n initPosition: {\n x: 0,\n y: 0\n },\n direction: 'vertical',\n gestureDirection: 'vertical',\n reloadOnContextChange: false,\n lerp: 0.1,\n \"class\": 'is-inview',\n scrollbarContainer: false,\n scrollbarClass: 'c-scrollbar',\n scrollingClass: 'has-scroll-scrolling',\n draggingClass: 'has-scroll-dragging',\n smoothClass: 'has-scroll-smooth',\n initClass: 'has-scroll-init',\n getSpeed: false,\n getDirection: false,\n scrollFromAnywhere: false,\n multiplier: 1,\n firefoxMultiplier: 50,\n touchMultiplier: 2,\n resetNativeScroll: true,\n tablet: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical',\n breakpoint: 1024\n },\n smartphone: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical'\n }\n};\n\nvar _default = /*#__PURE__*/function () {\n function _default() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n this.namespace = 'locomotive';\n this.html = document.documentElement;\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.els = {};\n this.currentElements = {};\n this.listeners = {};\n this.hasScrollTicking = false;\n this.hasCallEventSet = false;\n this.checkScroll = this.checkScroll.bind(this);\n this.checkResize = this.checkResize.bind(this);\n this.checkEvent = this.checkEvent.bind(this);\n this.instance = {\n scroll: {\n x: 0,\n y: 0\n },\n limit: {\n x: this.html.offsetWidth,\n y: this.html.offsetHeight\n },\n currentElements: this.currentElements\n };\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (this.isMobile) this.direction = this[this.context].direction;\n\n if (this.direction === 'horizontal') {\n this.directionAxis = 'x';\n } else {\n this.directionAxis = 'y';\n }\n\n if (this.getDirection) {\n this.instance.direction = null;\n }\n\n if (this.getDirection) {\n this.instance.speed = 0;\n }\n\n this.html.classList.add(this.initClass);\n window.addEventListener('resize', this.checkResize, false);\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.initEvents();\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n this.dispatchScroll();\n }\n }, {\n key: \"checkResize\",\n value: function checkResize() {\n var _this = this;\n\n if (!this.resizeTick) {\n this.resizeTick = true;\n requestAnimationFrame(function () {\n _this.resize();\n\n _this.resizeTick = false;\n });\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {}\n }, {\n key: \"checkContext\",\n value: function checkContext() {\n if (!this.reloadOnContextChange) return;\n this.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || this.windowWidth < this.tablet.breakpoint;\n this.isTablet = this.isMobile && this.windowWidth >= this.tablet.breakpoint;\n var oldContext = this.context;\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (oldContext != this.context) {\n var oldSmooth = oldContext == 'desktop' ? this.smooth : this[oldContext].smooth;\n var newSmooth = this.context == 'desktop' ? this.smooth : this[this.context].smooth;\n if (oldSmooth != newSmooth) window.location.reload();\n }\n }\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this2 = this;\n\n this.scrollToEls = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-to]\"));\n this.setScrollTo = this.setScrollTo.bind(this);\n this.scrollToEls.forEach(function (el) {\n el.addEventListener('click', _this2.setScrollTo, false);\n });\n }\n }, {\n key: \"setScrollTo\",\n value: function setScrollTo(event) {\n event.preventDefault();\n this.scrollTo(event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-href\")) || event.currentTarget.getAttribute('href'), {\n offset: event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-offset\"))\n });\n }\n }, {\n key: \"addElements\",\n value: function addElements() {}\n }, {\n key: \"detectElements\",\n value: function detectElements(hasCallEventSet) {\n var _this3 = this;\n\n var scrollTop = this.instance.scroll.y;\n var scrollBottom = scrollTop + this.windowHeight;\n var scrollLeft = this.instance.scroll.x;\n var scrollRight = scrollLeft + this.windowWidth;\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n if (el && (!el.inView || hasCallEventSet)) {\n if (_this3.direction === 'horizontal') {\n if (scrollRight >= el.left && scrollLeft < el.right) {\n _this3.setInView(el, i);\n }\n } else {\n if (scrollBottom >= el.top && scrollTop < el.bottom) {\n _this3.setInView(el, i);\n }\n }\n }\n\n if (el && el.inView) {\n if (_this3.direction === 'horizontal') {\n var width = el.right - el.left;\n el.progress = (_this3.instance.scroll.x - (el.left - _this3.windowWidth)) / (width + _this3.windowWidth);\n\n if (scrollRight < el.left || scrollLeft > el.right) {\n _this3.setOutOfView(el, i);\n }\n } else {\n var height = el.bottom - el.top;\n el.progress = (_this3.instance.scroll.y - (el.top - _this3.windowHeight)) / (height + _this3.windowHeight);\n\n if (scrollBottom < el.top || scrollTop > el.bottom) {\n _this3.setOutOfView(el, i);\n }\n }\n }\n }); // this.els = this.els.filter((current, i) => {\n // return current !== null;\n // });\n\n this.hasScrollTicking = false;\n }\n }, {\n key: \"setInView\",\n value: function setInView(current, i) {\n this.els[i].inView = true;\n current.el.classList.add(current[\"class\"]);\n this.currentElements[i] = current;\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'enter');\n\n if (!current.repeat) {\n this.els[i].call = false;\n }\n } // if (!current.repeat && !current.speed && !current.sticky) {\n // if (!current.call || current.call && this.hasCallEventSet) {\n // this.els[i] = null\n // }\n // }\n\n }\n }, {\n key: \"setOutOfView\",\n value: function setOutOfView(current, i) {\n var _this4 = this;\n\n // if (current.repeat || current.speed !== undefined) {\n this.els[i].inView = false; // }\n\n Object.keys(this.currentElements).forEach(function (el) {\n el === i && delete _this4.currentElements[el];\n });\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'exit');\n }\n\n if (current.repeat) {\n current.el.classList.remove(current[\"class\"]);\n }\n }\n }, {\n key: \"dispatchCall\",\n value: function dispatchCall(current, way) {\n this.callWay = way;\n this.callValue = current.call.split(',').map(function (item) {\n return item.trim();\n });\n this.callObj = current;\n if (this.callValue.length == 1) this.callValue = this.callValue[0];\n var callEvent = new Event(this.namespace + 'call');\n this.el.dispatchEvent(callEvent);\n }\n }, {\n key: \"dispatchScroll\",\n value: function dispatchScroll() {\n var scrollEvent = new Event(this.namespace + 'scroll');\n this.el.dispatchEvent(scrollEvent);\n }\n }, {\n key: \"setEvents\",\n value: function setEvents(event, func) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n\n var list = this.listeners[event];\n list.push(func);\n\n if (list.length === 1) {\n this.el.addEventListener(this.namespace + event, this.checkEvent, false);\n }\n\n if (event === 'call') {\n this.hasCallEventSet = true;\n this.detectElements(true);\n }\n }\n }, {\n key: \"unsetEvents\",\n value: function unsetEvents(event, func) {\n if (!this.listeners[event]) return;\n var list = this.listeners[event];\n var index = list.indexOf(func);\n if (index < 0) return;\n list.splice(index, 1);\n\n if (list.index === 0) {\n this.el.removeEventListener(this.namespace + event, this.checkEvent, false);\n }\n }\n }, {\n key: \"checkEvent\",\n value: function checkEvent(event) {\n var _this5 = this;\n\n var name = event.type.replace(this.namespace, '');\n var list = this.listeners[name];\n if (!list || list.length === 0) return;\n list.forEach(function (func) {\n switch (name) {\n case 'scroll':\n return func(_this5.instance);\n\n case 'call':\n return func(_this5.callValue, _this5.callWay, _this5.callObj);\n\n default:\n return func();\n }\n });\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {}\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {}\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance.scroll = {\n x: 0,\n y: 0\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n\n window.removeEventListener('resize', this.checkResize, false);\n Object.keys(this.listeners).forEach(function (event) {\n _this6.el.removeEventListener(_this6.namespace + event, _this6.checkEvent, false);\n });\n this.listeners = {};\n this.scrollToEls.forEach(function (el) {\n el.removeEventListener('click', _this6.setScrollTo, false);\n });\n this.html.classList.remove(this.initClass);\n }\n }]);\n\n return _default;\n}();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar smoothscroll = createCommonjsModule(function (module, exports) {\n/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n {\n // commonjs\n module.exports = { polyfill: polyfill };\n }\n\n}());\n});\nvar smoothscroll_1 = smoothscroll.polyfill;\n\nvar _default$1 = /*#__PURE__*/function (_Core) {\n _inherits(_default, _Core);\n\n var _super = _createSuper(_default);\n\n function _default() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n _this = _super.call(this, options);\n\n if (_this.resetNativeScroll) {\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual';\n }\n\n window.scrollTo(0, 0);\n }\n\n window.addEventListener('scroll', _this.checkScroll, false);\n\n if (window.smoothscrollPolyfill === undefined) {\n window.smoothscrollPolyfill = smoothscroll;\n window.smoothscrollPolyfill.polyfill();\n }\n\n return _this;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.instance.scroll.y = window.pageYOffset;\n this.addElements();\n this.detectElements();\n\n _get(_getPrototypeOf(_default.prototype), \"init\", this).call(this);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this2 = this;\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.instance.scroll.y = window.pageYOffset;\n\n if (Object.entries(this.els).length) {\n if (!this.hasScrollTicking) {\n requestAnimationFrame(function () {\n _this2.detectElements();\n });\n this.hasScrollTicking = true;\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (window.pageYOffset > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (window.pageYOffset < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (window.pageYOffset != this.instance.scroll.y) {\n this.instance.speed = (window.pageYOffset - this.instance.scroll.y) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n if (Object.entries(this.els).length) {\n this.windowHeight = window.innerHeight;\n this.updateElements();\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this3 = this;\n\n this.els = {};\n var els = this.el.querySelectorAll('[data-' + this.name + ']');\n els.forEach(function (el, index) {\n var BCR = el.getBoundingClientRect();\n var cl = el.dataset[_this3.name + 'Class'] || _this3[\"class\"];\n var id = typeof el.dataset[_this3.name + 'Id'] === 'string' ? el.dataset[_this3.name + 'Id'] : index;\n var top;\n var left;\n var offset = typeof el.dataset[_this3.name + 'Offset'] === 'string' ? el.dataset[_this3.name + 'Offset'].split(',') : _this3.offset;\n var repeat = el.dataset[_this3.name + 'Repeat'];\n var call = el.dataset[_this3.name + 'Call'];\n var target = el.dataset[_this3.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n top = targetElBCR.top + _this3.instance.scroll.y;\n left = targetElBCR.left + _this3.instance.scroll.x;\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this3.repeat;\n }\n\n var relativeOffset = _this3.getRelativeOffset(offset);\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n var mappedEl = {\n el: el,\n targetEl: targetEl,\n id: id,\n \"class\": cl,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call\n };\n _this3.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this3.setInView(_this3.els[id], id);\n }\n });\n }\n }, {\n key: \"updateElements\",\n value: function updateElements() {\n var _this4 = this;\n\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n var top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y;\n\n var bottom = top + el.targetEl.offsetHeight;\n\n var relativeOffset = _this4.getRelativeOffset(el.offset);\n\n _this4.els[i].top = top + relativeOffset[0];\n _this4.els[i].bottom = bottom - relativeOffset[1];\n });\n this.hasScrollTicking = false;\n }\n }, {\n key: \"getRelativeOffset\",\n value: function getRelativeOffset(offset) {\n var relativeOffset = [0, 0];\n\n if (offset) {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * this.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n }\n\n return relativeOffset;\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = this.html;\n } else if (target === 'bottom') {\n target = this.html.offsetHeight - window.innerHeight;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n offset = target.getBoundingClientRect().top + offset + this.instance.scroll.y;\n } else {\n offset = target + offset;\n }\n\n var isTargetReached = function isTargetReached() {\n return parseInt(window.pageYOffset) === parseInt(offset);\n };\n\n if (callback) {\n if (isTargetReached()) {\n callback();\n return;\n } else {\n var onScroll = function onScroll() {\n if (isTargetReached()) {\n window.removeEventListener('scroll', onScroll);\n callback();\n }\n };\n\n window.addEventListener('scroll', onScroll);\n }\n }\n\n window.scrollTo({\n top: offset,\n behavior: options.duration === 0 ? 'auto' : 'smooth'\n });\n }\n }, {\n key: \"update\",\n value: function update() {\n this.addElements();\n this.detectElements();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n window.removeEventListener('scroll', this.checkScroll, false);\n }\n }]);\n\n return _default;\n}(_default);\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nvar tinyEmitter = E;\n\nvar lethargy = createCommonjsModule(function (module, exports) {\n// Generated by CoffeeScript 1.9.2\n(function() {\n var root;\n\n root = exports !== null ? exports : this;\n\n root.Lethargy = (function() {\n function Lethargy(stability, sensitivity, tolerance, delay) {\n this.stability = stability != null ? Math.abs(stability) : 8;\n this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100;\n this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1;\n this.delay = delay != null ? delay : 150;\n this.lastUpDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.lastDownDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.deltasTimestamp = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n }\n\n Lethargy.prototype.check = function(e) {\n var lastDelta;\n e = e.originalEvent || e;\n if (e.wheelDelta != null) {\n lastDelta = e.wheelDelta;\n } else if (e.deltaY != null) {\n lastDelta = e.deltaY * -40;\n } else if ((e.detail != null) || e.detail === 0) {\n lastDelta = e.detail * -40;\n }\n this.deltasTimestamp.push(Date.now());\n this.deltasTimestamp.shift();\n if (lastDelta > 0) {\n this.lastUpDeltas.push(lastDelta);\n this.lastUpDeltas.shift();\n return this.isInertia(1);\n } else {\n this.lastDownDeltas.push(lastDelta);\n this.lastDownDeltas.shift();\n return this.isInertia(-1);\n }\n };\n\n Lethargy.prototype.isInertia = function(direction) {\n var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum;\n lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas;\n if (lastDeltas[0] === null) {\n return direction;\n }\n if (this.deltasTimestamp[(this.stability * 2) - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[(this.stability * 2) - 1]) {\n return false;\n }\n lastDeltasOld = lastDeltas.slice(0, this.stability);\n lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2);\n oldSum = lastDeltasOld.reduce(function(t, s) {\n return t + s;\n });\n newSum = lastDeltasNew.reduce(function(t, s) {\n return t + s;\n });\n oldAverage = oldSum / lastDeltasOld.length;\n newAverage = newSum / lastDeltasNew.length;\n if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && (this.sensitivity < Math.abs(newAverage))) {\n return direction;\n } else {\n return false;\n }\n };\n\n Lethargy.prototype.showLastUpDeltas = function() {\n return this.lastUpDeltas;\n };\n\n Lethargy.prototype.showLastDownDeltas = function() {\n return this.lastDownDeltas;\n };\n\n return Lethargy;\n\n })();\n\n}).call(commonjsGlobal);\n});\n\nvar support = (function getSupport() {\n return {\n hasWheelEvent: 'onwheel' in document,\n hasMouseWheelEvent: 'onmousewheel' in document,\n hasTouch: ('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,\n hasTouchWin: navigator.msMaxTouchPoints && navigator.msMaxTouchPoints > 1,\n hasPointer: !!window.navigator.msPointerEnabled,\n hasKeyDown: 'onkeydown' in document,\n isFirefox: navigator.userAgent.indexOf('Firefox') > -1\n };\n})();\n\nvar toString = Object.prototype.toString,\n hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\nvar bindallStandalone = function(object) {\n if(!object) return console.warn('bindAll requires at least one argument.');\n\n var functions = Array.prototype.slice.call(arguments, 1);\n\n if (functions.length === 0) {\n\n for (var method in object) {\n if(hasOwnProperty$1.call(object, method)) {\n if(typeof object[method] == 'function' && toString.call(object[method]) == \"[object Function]\") {\n functions.push(method);\n }\n }\n }\n }\n\n for(var i = 0; i < functions.length; i++) {\n var f = functions[i];\n object[f] = bind(object[f], object);\n }\n};\n\n/*\n Faster bind without specific-case checking. (see https://coderwall.com/p/oi3j3w).\n bindAll is only needed for events binding so no need to make slow fixes for constructor\n or partial application.\n*/\nfunction bind(func, context) {\n return function() {\n return func.apply(context, arguments);\n };\n}\n\nvar Lethargy = lethargy.Lethargy;\n\n\n\nvar EVT_ID = 'virtualscroll';\n\nvar src = VirtualScroll;\n\nvar keyCodes = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SPACE: 32\n};\n\nfunction VirtualScroll(options) {\n bindallStandalone(this, '_onWheel', '_onMouseWheel', '_onTouchStart', '_onTouchMove', '_onKeyDown');\n\n this.el = window;\n if (options && options.el) {\n this.el = options.el;\n delete options.el;\n }\n this.options = objectAssign({\n mouseMultiplier: 1,\n touchMultiplier: 2,\n firefoxMultiplier: 15,\n keyStep: 120,\n preventTouch: false,\n unpreventTouchClass: 'vs-touchmove-allowed',\n limitInertia: false,\n useKeyboard: true,\n useTouch: true\n }, options);\n\n if (this.options.limitInertia) this._lethargy = new Lethargy();\n\n this._emitter = new tinyEmitter();\n this._event = {\n y: 0,\n x: 0,\n deltaX: 0,\n deltaY: 0\n };\n this.touchStartX = null;\n this.touchStartY = null;\n this.bodyTouchAction = null;\n\n if (this.options.passive !== undefined) {\n this.listenerOptions = {passive: this.options.passive};\n }\n}\n\nVirtualScroll.prototype._notify = function(e) {\n var evt = this._event;\n evt.x += evt.deltaX;\n evt.y += evt.deltaY;\n\n this._emitter.emit(EVT_ID, {\n x: evt.x,\n y: evt.y,\n deltaX: evt.deltaX,\n deltaY: evt.deltaY,\n originalEvent: e\n });\n};\n\nVirtualScroll.prototype._onWheel = function(e) {\n var options = this.options;\n if (this._lethargy && this._lethargy.check(e) === false) return;\n var evt = this._event;\n\n // In Chrome and in Firefox (at least the new one)\n evt.deltaX = e.wheelDeltaX || e.deltaX * -1;\n evt.deltaY = e.wheelDeltaY || e.deltaY * -1;\n\n // for our purpose deltamode = 1 means user is on a wheel mouse, not touch pad\n // real meaning: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent#Delta_modes\n if(support.isFirefox && e.deltaMode == 1) {\n evt.deltaX *= options.firefoxMultiplier;\n evt.deltaY *= options.firefoxMultiplier;\n }\n\n evt.deltaX *= options.mouseMultiplier;\n evt.deltaY *= options.mouseMultiplier;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onMouseWheel = function(e) {\n if (this.options.limitInertia && this._lethargy.check(e) === false) return;\n\n var evt = this._event;\n\n // In Safari, IE and in Chrome if 'wheel' isn't defined\n evt.deltaX = (e.wheelDeltaX) ? e.wheelDeltaX : 0;\n evt.deltaY = (e.wheelDeltaY) ? e.wheelDeltaY : e.wheelDelta;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onTouchStart = function(e) {\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n};\n\nVirtualScroll.prototype._onTouchMove = function(e) {\n var options = this.options;\n if(options.preventTouch\n && !e.target.classList.contains(options.unpreventTouchClass)) {\n e.preventDefault();\n }\n\n var evt = this._event;\n\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n\n evt.deltaX = (t.pageX - this.touchStartX) * options.touchMultiplier;\n evt.deltaY = (t.pageY - this.touchStartY) * options.touchMultiplier;\n\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onKeyDown = function(e) {\n var evt = this._event;\n evt.deltaX = evt.deltaY = 0;\n var windowHeight = window.innerHeight - 40;\n\n switch(e.keyCode) {\n case keyCodes.LEFT:\n case keyCodes.UP:\n evt.deltaY = this.options.keyStep;\n break;\n\n case keyCodes.RIGHT:\n case keyCodes.DOWN:\n evt.deltaY = - this.options.keyStep;\n break;\n case e.shiftKey:\n evt.deltaY = windowHeight;\n break;\n case keyCodes.SPACE:\n evt.deltaY = - windowHeight;\n break;\n default:\n return;\n }\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._bind = function() {\n if(support.hasWheelEvent) this.el.addEventListener('wheel', this._onWheel, this.listenerOptions);\n if(support.hasMouseWheelEvent) this.el.addEventListener('mousewheel', this._onMouseWheel, this.listenerOptions);\n\n if(support.hasTouch && this.options.useTouch) {\n this.el.addEventListener('touchstart', this._onTouchStart, this.listenerOptions);\n this.el.addEventListener('touchmove', this._onTouchMove, this.listenerOptions);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n this.bodyTouchAction = document.body.style.msTouchAction;\n document.body.style.msTouchAction = 'none';\n this.el.addEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.addEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.addEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype._unbind = function() {\n if(support.hasWheelEvent) this.el.removeEventListener('wheel', this._onWheel);\n if(support.hasMouseWheelEvent) this.el.removeEventListener('mousewheel', this._onMouseWheel);\n\n if(support.hasTouch) {\n this.el.removeEventListener('touchstart', this._onTouchStart);\n this.el.removeEventListener('touchmove', this._onTouchMove);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n document.body.style.msTouchAction = this.bodyTouchAction;\n this.el.removeEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.removeEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.removeEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype.on = function(cb, ctx) {\n this._emitter.on(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (events && events[EVT_ID] && events[EVT_ID].length === 1) this._bind();\n};\n\nVirtualScroll.prototype.off = function(cb, ctx) {\n this._emitter.off(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (!events[EVT_ID] || events[EVT_ID].length <= 0) this._unbind();\n};\n\nVirtualScroll.prototype.reset = function() {\n var evt = this._event;\n evt.x = 0;\n evt.y = 0;\n};\n\nVirtualScroll.prototype.destroy = function() {\n this._emitter.off();\n this._unbind();\n};\n\nfunction lerp(start, end, amt) {\n return (1 - amt) * start + amt * end;\n}\n\nfunction getTranslate(el) {\n var translate = {};\n if (!window.getComputedStyle) return;\n var style = getComputedStyle(el);\n var transform = style.transform || style.webkitTransform || style.mozTransform;\n var mat = transform.match(/^matrix3d\\((.+)\\)$/);\n\n if (mat) {\n translate.x = mat ? parseFloat(mat[1].split(', ')[12]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[13]) : 0;\n } else {\n mat = transform.match(/^matrix\\((.+)\\)$/);\n translate.x = mat ? parseFloat(mat[1].split(', ')[4]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[5]) : 0;\n }\n\n return translate;\n}\n\n/**\n * Returns an array containing all the parent nodes of the given node\n * @param {object} node\n * @return {array} parent nodes\n */\nfunction getParents(elem) {\n // Set up a parent array\n var parents = []; // Push each parent element to the array\n\n for (; elem && elem !== document; elem = elem.parentNode) {\n parents.push(elem);\n } // Return our parent array\n\n\n return parents;\n} // https://gomakethings.com/how-to-get-the-closest-parent-element-with-a-matching-selector-using-vanilla-javascript/\n\n/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Ga\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 //Pevent scrollbar glitch/locking\n\n this.startScrollTs = undefined;\n\n if (this.scrollToRaf) {\n cancelAnimationFrame(this.scrollToRaf);\n this.scrollToRaf = null;\n }\n\n this.isScrolling = false;\n this.instance.scroll.y = Math.round(this.instance.scroll.y);\n this.html.classList.remove(this.scrollingClass);\n }\n }, {\n key: \"checkKey\",\n value: function checkKey(e) {\n var _this3 = this;\n\n if (this.stop) {\n // If we are stopped, we don't want any scroll to occur because of a keypress\n // Prevent tab to scroll to activeElement\n if (e.keyCode == keyCodes$1.TAB) {\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0;\n });\n }\n\n return;\n }\n\n switch (e.keyCode) {\n case keyCodes$1.TAB:\n // Do not remove the RAF\n // It allows to override the browser's native scrollTo, which is essential\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0; // Request scrollTo on the focusedElement, putting it at the center of the screen\n\n _this3.scrollTo(document.activeElement, {\n offset: -window.innerHeight / 2\n });\n });\n break;\n\n case keyCodes$1.UP:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] -= 240;\n }\n\n break;\n\n case keyCodes$1.DOWN:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] += 240;\n }\n\n break;\n\n case keyCodes$1.PAGEUP:\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n break;\n\n case keyCodes$1.PAGEDOWN:\n this.instance.delta[this.directionAxis] += window.innerHeight;\n break;\n\n case keyCodes$1.HOME:\n this.instance.delta[this.directionAxis] -= this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.END:\n this.instance.delta[this.directionAxis] += this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.SPACE:\n if (this.isActiveElementScrollSensitive()) {\n if (e.shiftKey) {\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n } else {\n this.instance.delta[this.directionAxis] += window.innerHeight;\n }\n }\n\n break;\n\n default:\n return;\n }\n\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.isScrolling = true;\n this.checkScroll();\n this.html.classList.add(this.scrollingClass);\n }\n }, {\n key: \"isActiveElementScrollSensitive\",\n value: function isActiveElementScrollSensitive() {\n return !(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement) && !(document.activeElement instanceof HTMLButtonElement) && !(document.activeElement instanceof HTMLSelectElement);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this4 = this;\n\n var forced = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (forced || this.isScrolling || this.isDraggingScrollbar) {\n if (!this.hasScrollTicking) {\n this.checkScrollRaf = requestAnimationFrame(function () {\n return _this4.checkScroll();\n });\n this.hasScrollTicking = true;\n }\n\n this.updateScroll();\n var distance = Math.abs(this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]);\n var timeSinceStart = Date.now() - this.startScrollTs; // Get the time since the scroll was started: the scroll can be stopped again only past 100ms\n\n if (!this.animatingScroll && timeSinceStart > 100 && (distance < 0.5 && this.instance.delta[this.directionAxis] != 0 || distance < 0.5 && this.instance.delta[this.directionAxis] == 0)) {\n this.stopScrolling();\n }\n\n Object.entries(this.sections).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n section = _ref2[1];\n\n if (section.persistent || _this4.instance.scroll[_this4.directionAxis] > section.offset[_this4.directionAxis] && _this4.instance.scroll[_this4.directionAxis] < section.limit[_this4.directionAxis]) {\n if (_this4.direction === 'horizontal') {\n _this4.transform(section.el, -_this4.instance.scroll[_this4.directionAxis], 0);\n } else {\n _this4.transform(section.el, 0, -_this4.instance.scroll[_this4.directionAxis]);\n }\n\n if (!section.inView) {\n section.inView = true;\n section.el.style.opacity = 1;\n section.el.style.pointerEvents = 'all';\n section.el.setAttribute(\"data-\".concat(_this4.name, \"-section-inview\"), '');\n }\n } else {\n if (section.inView || forced) {\n section.inView = false;\n section.el.style.opacity = 0;\n section.el.style.pointerEvents = 'none';\n section.el.removeAttribute(\"data-\".concat(_this4.name, \"-section-inview\"));\n }\n\n _this4.transform(section.el, 0, 0);\n }\n });\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.detectElements();\n this.transformElements();\n\n if (this.hasScrollbar) {\n var scrollBarTranslation = this.instance.scroll[this.directionAxis] / this.instance.limit[this.directionAxis] * this.scrollBarLimit[this.directionAxis];\n\n if (this.direction === 'horizontal') {\n this.transform(this.scrollbarThumb, scrollBarTranslation, 0);\n } else {\n this.transform(this.scrollbarThumb, 0, scrollBarTranslation);\n }\n }\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n this.hasScrollTicking = false;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.checkContext();\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.update();\n }\n }, {\n key: \"updateDelta\",\n value: function updateDelta(e) {\n var delta;\n var gestureDirection = this[this.context] && this[this.context].gestureDirection ? this[this.context].gestureDirection : this.gestureDirection;\n\n if (gestureDirection === 'both') {\n delta = e.deltaX + e.deltaY;\n } else if (gestureDirection === 'vertical') {\n delta = e.deltaY;\n } else if (gestureDirection === 'horizontal') {\n delta = e.deltaX;\n } else {\n delta = e.deltaY;\n }\n\n this.instance.delta[this.directionAxis] -= delta * this.multiplier;\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n }\n }, {\n key: \"updateScroll\",\n value: function updateScroll(e) {\n if (this.isScrolling || this.isDraggingScrollbar) {\n this.instance.scroll[this.directionAxis] = lerp(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis], this.lerp);\n } else {\n if (this.instance.scroll[this.directionAxis] > this.instance.limit[this.directionAxis]) {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.limit[this.directionAxis]);\n } else if (this.instance.scroll.y < 0) {\n this.setScroll(this.instance.scroll[this.directionAxis], 0);\n } else {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis]);\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (this.instance.delta.y > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (this.instance.delta.y < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n\n if (this.instance.delta.x > this.instance.scroll.x) {\n if (this.instance.direction !== 'right') {\n this.instance.direction = 'right';\n }\n } else if (this.instance.delta.x < this.instance.scroll.x) {\n if (this.instance.direction !== 'left') {\n this.instance.direction = 'left';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (this.instance.delta[this.directionAxis] != this.instance.scroll[this.directionAxis]) {\n this.instance.speed = (this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"initScrollBar\",\n value: function initScrollBar() {\n this.scrollbar = document.createElement('span');\n this.scrollbarThumb = document.createElement('span');\n this.scrollbar.classList.add(\"\".concat(this.scrollbarClass));\n this.scrollbarThumb.classList.add(\"\".concat(this.scrollbarClass, \"_thumb\"));\n this.scrollbar.append(this.scrollbarThumb);\n\n if (this.scrollbarContainer) {\n this.scrollbarContainer.append(this.scrollbar);\n } else {\n document.body.append(this.scrollbar);\n } // Scrollbar Events\n\n\n this.getScrollBar = this.getScrollBar.bind(this);\n this.releaseScrollBar = this.releaseScrollBar.bind(this);\n this.moveScrollBar = this.moveScrollBar.bind(this);\n this.scrollbarThumb.addEventListener('mousedown', this.getScrollBar);\n window.addEventListener('mouseup', this.releaseScrollBar);\n window.addEventListener('mousemove', this.moveScrollBar); // Set scrollbar values\n\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"reinitScrollBar\",\n value: function reinitScrollBar() {\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"destroyScrollBar\",\n value: function destroyScrollBar() {\n this.scrollbarThumb.removeEventListener('mousedown', this.getScrollBar);\n window.removeEventListener('mouseup', this.releaseScrollBar);\n window.removeEventListener('mousemove', this.moveScrollBar);\n this.scrollbar.remove();\n }\n }, {\n key: \"getScrollBar\",\n value: function getScrollBar(e) {\n this.isDraggingScrollbar = true;\n this.checkScroll();\n this.html.classList.remove(this.scrollingClass);\n this.html.classList.add(this.draggingClass);\n }\n }, {\n key: \"releaseScrollBar\",\n value: function releaseScrollBar(e) {\n this.isDraggingScrollbar = false;\n\n if (this.isScrolling) {\n this.html.classList.add(this.scrollingClass);\n }\n\n this.html.classList.remove(this.draggingClass);\n }\n }, {\n key: \"moveScrollBar\",\n value: function moveScrollBar(e) {\n var _this5 = this;\n\n if (this.isDraggingScrollbar) {\n requestAnimationFrame(function () {\n var x = (e.clientX - _this5.scrollbarBCR.left) * 100 / _this5.scrollbarWidth * _this5.instance.limit.x / 100;\n var y = (e.clientY - _this5.scrollbarBCR.top) * 100 / _this5.scrollbarHeight * _this5.instance.limit.y / 100;\n\n if (y > 0 && y < _this5.instance.limit.y) {\n _this5.instance.delta.y = y;\n }\n\n if (x > 0 && x < _this5.instance.limit.x) {\n _this5.instance.delta.x = x;\n }\n });\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this6 = this;\n\n this.els = {};\n this.parallaxElements = {}; // this.sections.forEach((section, y) => {\n\n var els = this.el.querySelectorAll(\"[data-\".concat(this.name, \"]\"));\n els.forEach(function (el, index) {\n // Try and find the target's parent section\n var targetParents = getParents(el);\n var section = Object.entries(_this6.sections).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n section = _ref4[1];\n\n return section;\n }).find(function (section) {\n return targetParents.includes(section.el);\n });\n var cl = el.dataset[_this6.name + 'Class'] || _this6[\"class\"];\n var id = typeof el.dataset[_this6.name + 'Id'] === 'string' ? el.dataset[_this6.name + 'Id'] : 'el' + index;\n var top;\n var left;\n var repeat = el.dataset[_this6.name + 'Repeat'];\n var call = el.dataset[_this6.name + 'Call'];\n var position = el.dataset[_this6.name + 'Position'];\n var delay = el.dataset[_this6.name + 'Delay'];\n var direction = el.dataset[_this6.name + 'Direction'];\n var sticky = typeof el.dataset[_this6.name + 'Sticky'] === 'string';\n var speed = el.dataset[_this6.name + 'Speed'] ? parseFloat(el.dataset[_this6.name + 'Speed']) / 10 : false;\n var offset = typeof el.dataset[_this6.name + 'Offset'] === 'string' ? el.dataset[_this6.name + 'Offset'].split(',') : _this6.offset;\n var target = el.dataset[_this6.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n\n if (section === null) {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n } else {\n if (!section.inView) {\n top = targetElBCR.top - getTranslate(section.el).y - getTranslate(targetEl).y;\n left = targetElBCR.left - getTranslate(section.el).x - getTranslate(targetEl).x;\n } else {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n }\n }\n\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n var middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n\n if (sticky) {\n var elBCR = el.getBoundingClientRect();\n var elTop = elBCR.top;\n var elLeft = elBCR.left;\n var elDistance = {\n x: elLeft - left,\n y: elTop - top\n };\n top += window.innerHeight;\n left += window.innerWidth;\n bottom = elTop + targetEl.offsetHeight - el.offsetHeight - elDistance[_this6.directionAxis];\n right = elLeft + targetEl.offsetWidth - el.offsetWidth - elDistance[_this6.directionAxis];\n middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n }\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this6.repeat;\n }\n\n var relativeOffset = [0, 0];\n\n if (offset) {\n if (_this6.direction === 'horizontal') {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowWidth / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n left = left + relativeOffset[0];\n right = right - relativeOffset[1];\n } else {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n }\n }\n\n var mappedEl = {\n el: el,\n id: id,\n \"class\": cl,\n section: section,\n top: top,\n middle: middle,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call,\n speed: speed,\n delay: delay,\n position: position,\n target: targetEl,\n direction: direction,\n sticky: sticky\n };\n _this6.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this6.setInView(_this6.els[id], id);\n }\n\n if (speed !== false || sticky) {\n _this6.parallaxElements[id] = mappedEl;\n }\n }); // });\n }\n }, {\n key: \"addSections\",\n value: function addSections() {\n var _this7 = this;\n\n this.sections = {};\n var sections = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-section]\"));\n\n if (sections.length === 0) {\n sections = [this.el];\n }\n\n sections.forEach(function (section, index) {\n var id = typeof section.dataset[_this7.name + 'Id'] === 'string' ? section.dataset[_this7.name + 'Id'] : 'section' + index;\n var sectionBCR = section.getBoundingClientRect();\n var offset = {\n x: sectionBCR.left - window.innerWidth * 1.5 - getTranslate(section).x,\n y: sectionBCR.top - window.innerHeight * 1.5 - getTranslate(section).y\n };\n var limit = {\n x: offset.x + sectionBCR.width + window.innerWidth * 2,\n y: offset.y + sectionBCR.height + window.innerHeight * 2\n };\n var persistent = typeof section.dataset[_this7.name + 'Persistent'] === 'string';\n section.setAttribute('data-scroll-section-id', id);\n var mappedSection = {\n el: section,\n offset: offset,\n limit: limit,\n inView: false,\n persistent: persistent,\n id: id\n };\n _this7.sections[id] = mappedSection;\n });\n }\n }, {\n key: \"transform\",\n value: function transform(element, x, y, delay) {\n var transform;\n\n if (!delay) {\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(x, \",\").concat(y, \",0,1)\");\n } else {\n var start = getTranslate(element);\n var lerpX = lerp(start.x, x, delay);\n var lerpY = lerp(start.y, y, delay);\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(lerpX, \",\").concat(lerpY, \",0,1)\");\n }\n\n element.style.webkitTransform = transform;\n element.style.msTransform = transform;\n element.style.transform = transform;\n }\n }, {\n key: \"transformElements\",\n value: function transformElements(isForced) {\n var _this8 = this;\n\n var setAllElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var scrollRight = this.instance.scroll.x + this.windowWidth;\n var scrollBottom = this.instance.scroll.y + this.windowHeight;\n var scrollMiddle = {\n x: this.instance.scroll.x + this.windowMiddle.x,\n y: this.instance.scroll.y + this.windowMiddle.y\n };\n Object.entries(this.parallaxElements).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n i = _ref6[0],\n current = _ref6[1];\n\n var transformDistance = false;\n\n if (isForced) {\n transformDistance = 0;\n }\n\n if (current.inView || setAllElements) {\n switch (current.position) {\n case 'top':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementTop':\n transformDistance = (scrollBottom - current.top) * -current.speed;\n break;\n\n case 'bottom':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollBottom + _this8.windowHeight) * current.speed;\n break;\n\n case 'left':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementLeft':\n transformDistance = (scrollRight - current.left) * -current.speed;\n break;\n\n case 'right':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollRight + _this8.windowHeight) * current.speed;\n break;\n\n default:\n transformDistance = (scrollMiddle[_this8.directionAxis] - current.middle[_this8.directionAxis]) * -current.speed;\n break;\n }\n }\n\n if (current.sticky) {\n if (current.inView) {\n if (_this8.direction === 'horizontal') {\n transformDistance = _this8.instance.scroll.x - current.left + window.innerWidth;\n } else {\n transformDistance = _this8.instance.scroll.y - current.top + window.innerHeight;\n }\n } else {\n if (_this8.direction === 'horizontal') {\n if (_this8.instance.scroll.x < current.left - window.innerWidth && _this8.instance.scroll.x < current.left - window.innerWidth / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.x > current.right && _this8.instance.scroll.x > current.right + 100) {\n transformDistance = current.right - current.left + window.innerWidth;\n } else {\n transformDistance = false;\n }\n } else {\n if (_this8.instance.scroll.y < current.top - window.innerHeight && _this8.instance.scroll.y < current.top - window.innerHeight / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.y > current.bottom && _this8.instance.scroll.y > current.bottom + 100) {\n transformDistance = current.bottom - current.top + window.innerHeight;\n } else {\n transformDistance = false;\n }\n }\n }\n }\n\n if (transformDistance !== false) {\n if (current.direction === 'horizontal' || _this8.direction === 'horizontal' && current.direction !== 'vertical') {\n _this8.transform(current.el, transformDistance, 0, isForced ? false : current.delay);\n } else {\n _this8.transform(current.el, 0, transformDistance, isForced ? false : current.delay);\n }\n }\n });\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var _this9 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var duration = !isNaN(parseInt(options.duration)) ? parseInt(options.duration) : 1000; // Duration of the scroll animation in milliseconds\n\n var easing = options.easing || [0.25, 0.0, 0.35, 1.0]; // An array of 4 floats between 0 and 1 defining the bezier curve for the animation's easing. See http://greweb.me/bezier-easing-editor/example/\n\n var disableLerp = options.disableLerp ? true : false; // Lerp effect won't be applied if set to true\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n easing = src$1.apply(void 0, _toConsumableArray(easing));\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = 0;\n } else if (target === 'bottom') {\n target = this.instance.limit.y;\n } else if (target === 'left') {\n target = 0;\n } else if (target === 'right') {\n target = this.instance.limit.x;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n // Verify the given target belongs to this scroll scope\n var targetInScope = getParents(target).includes(this.el);\n\n if (!targetInScope) {\n // If the target isn't inside our main element, abort any action\n return;\n } // Get target offset from top\n\n\n var targetBCR = target.getBoundingClientRect();\n var offsetTop = targetBCR.top;\n var offsetLeft = targetBCR.left; // Try and find the target's parent section\n\n var targetParents = getParents(target);\n var parentSection = targetParents.find(function (candidate) {\n return Object.entries(_this9.sections) // Get sections associative array as a regular array\n .map(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n key = _ref8[0],\n section = _ref8[1];\n\n return section;\n }) // map to section only (we dont need the key here)\n .find(function (section) {\n return section.el == candidate;\n }); // finally find the section that matches the candidate\n });\n var parentSectionOffset = 0;\n\n if (parentSection) {\n parentSectionOffset = getTranslate(parentSection)[this.directionAxis]; // We got a parent section, store it's current offset to remove it later\n } else {\n // if no parent section is found we need to use instance scroll directly\n parentSectionOffset = -this.instance.scroll[this.directionAxis];\n } // Final value of scroll destination : offsetTop + (optional offset given in options) - (parent's section translate)\n\n\n if (this.direction === 'horizontal') {\n offset = offsetLeft + offset - parentSectionOffset;\n } else {\n offset = offsetTop + offset - parentSectionOffset;\n }\n } else {\n offset = target + offset;\n } // Actual scrollto\n // ==========================================================================\n // Setup\n\n\n var scrollStart = parseFloat(this.instance.delta[this.directionAxis]);\n var scrollTarget = Math.max(0, Math.min(offset, this.instance.limit[this.directionAxis])); // Make sure our target is in the scroll boundaries\n\n var scrollDiff = scrollTarget - scrollStart;\n\n var render = function render(p) {\n if (disableLerp) {\n if (_this9.direction === 'horizontal') {\n _this9.setScroll(scrollStart + scrollDiff * p, _this9.instance.delta.y);\n } else {\n _this9.setScroll(_this9.instance.delta.x, scrollStart + scrollDiff * p);\n }\n } else {\n _this9.instance.delta[_this9.directionAxis] = scrollStart + scrollDiff * p;\n }\n }; // Prepare the scroll\n\n\n this.animatingScroll = true; // This boolean allows to prevent `checkScroll()` from calling `stopScrolling` when the animation is slow (i.e. at the beginning of an EaseIn)\n\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.startScrolling(); // Restart the scroll\n // Start the animation loop\n\n var start = Date.now();\n\n var loop = function loop() {\n var p = (Date.now() - start) / duration; // Animation progress\n\n if (p > 1) {\n // Animation ends\n render(1);\n _this9.animatingScroll = false;\n if (duration == 0) _this9.update();\n if (callback) callback();\n } else {\n _this9.scrollToRaf = requestAnimationFrame(loop);\n render(easing(p));\n }\n };\n\n loop();\n }\n }, {\n key: \"update\",\n value: function update() {\n this.setScrollLimit();\n this.addSections();\n this.addElements();\n this.detectElements();\n this.updateScroll();\n this.transformElements(true);\n this.reinitScrollBar();\n this.checkScroll(true);\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {\n this.stop = false;\n }\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {\n this.stop = true;\n }\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance = _objectSpread2(_objectSpread2({}, this.instance), {}, {\n scroll: {\n x: x,\n y: y\n },\n delta: {\n x: x,\n y: y\n },\n speed: 0\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n this.stopScrolling();\n this.html.classList.remove(this.smoothClass);\n this.vs.destroy();\n this.destroyScrollBar();\n window.removeEventListener('keydown', this.checkKey, false);\n }\n }]);\n\n return _default;\n}(_default);\n\nvar Smooth = /*#__PURE__*/function () {\n function Smooth() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Smooth);\n\n this.options = options; // Override default options with given ones\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n if (!this.smooth && this.direction == 'horizontal') console.warn('\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 the related image.\n *\n * @see ../utils/image.js\n *\n * It is recommended to wrap your `` into an element with the\n * CSS class name `.c-lazy`. The CSS class name modifier `.-lazy-loaded`\n * will be applied on both the image and the parent wrapper.\n *\n * ```html\n *
\n * \"\"\n *
\n * ```\n *\n * @param {LocomotiveScroll} args - The Locomotive Scroll instance.\n */\n lazyLoad(args) {\n lazyLoadImage(args.obj.el, 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';\nimport config from './config';\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(config.CLASS.LOADED);\n html.classList.add(config.CLASS.READY);\n html.classList.remove(config.CLASS.LOADING);\n}\n\n"], + "mappings": "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", "names": [] } diff --git a/www/form.html b/www/form.html index b46382f3..1ce2fd27 100644 --- a/www/form.html +++ b/www/form.html @@ -16,8 +16,8 @@ - -
+ +

Locomotive Boilerplate

diff --git a/www/images.html b/www/images.html index 4f50adc0..5c5242c8 100644 --- a/www/images.html +++ b/www/images.html @@ -16,8 +16,8 @@ - -
+ +

Locomotive Boilerplate

diff --git a/www/index.html b/www/index.html index 81199d8b..f118a30c 100644 --- a/www/index.html +++ b/www/index.html @@ -33,8 +33,8 @@ onload="this.media='all'; this.onload=null; this.isLoaded=true"> - -
+ +
From 26f261ce47b56af65374c78916bbe1cba866f6cb Mon Sep 17 00:00:00 2001 From: Lucas Vallenet Date: Fri, 20 May 2022 14:25:22 +0200 Subject: [PATCH 2/4] Remove js error --- assets/scripts/config.js | 6 +++--- www/assets/scripts/app.js | 22 +++++++++------------- www/assets/scripts/app.js.map | 6 +++--- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/assets/scripts/config.js b/assets/scripts/config.js index c4f472f1..fbfb0cef 100644 --- a/assets/scripts/config.js +++ b/assets/scripts/config.js @@ -4,7 +4,7 @@ export default config = { // App APP_NAME: 'Boilerplate', - DATA_API_KEY: '.data-api'; , + DATA_API_KEY: '.data-api', // Env ENV: env, @@ -15,6 +15,6 @@ export default config = { CLASS: { LOADING: 'is-loading', READY: 'is-ready', - LOADED: 'is-loaded' - } + LOADED: 'is-loaded', + }, } diff --git a/www/assets/scripts/app.js b/www/assets/scripts/app.js index 6bbb3d71..d6f47162 100644 --- a/www/assets/scripts/app.js +++ b/www/assets/scripts/app.js @@ -1617,6 +1617,8 @@ // assets/scripts/config.js var env = "development"; var config_default = config = { + APP_NAME: "Boilerplate", + DATA_API_KEY: ".data-api", ENV: env, IS_PROD: env === "production", IS_DEV: env === "development", @@ -1633,26 +1635,21 @@ super(m); } init() { - this.barba = import_core.default.init({ + import_core.default.init({ debug: config_default.IS_DEV, schema: { prefix: "data-load" }, transitions: [{ name: "default-transition", - beforeLeave: () => { - }, leave: (data) => { this.call("destroy", data.current.container, "app"); }, - beforeEnter: () => { - }, enter: (data) => { this.call("update", data.next.container, "app"); } }] }); - console.log("init", this.barba, import_core.default); } }; @@ -4224,10 +4221,9 @@ (0, import_svg4everybody.default)(); } - // assets/scripts/utils/environment.js - var html = document.documentElement; - var body = document.body; - var isDebug = html.hasAttribute("data-debug"); + // assets/scripts/utils/dom.js + var $html = document.documentElement; + var $body = document.body; // assets/scripts/app.js var app = new main_esm_default({ @@ -4250,9 +4246,9 @@ function init() { globals_default(); app.init(app); - html.classList.add(config_default.CLASS.LOADED); - html.classList.add(config_default.CLASS.READY); - html.classList.remove(config_default.CLASS.LOADING); + $html.classList.add(config_default.CLASS.LOADED); + $html.classList.add(config_default.CLASS.READY); + $html.classList.remove(config_default.CLASS.LOADING); } })(); /* diff --git a/www/assets/scripts/app.js.map b/www/assets/scripts/app.js.map index 202c0117..effa44a1 100644 --- a/www/assets/scripts/app.js.map +++ b/www/assets/scripts/app.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../../node_modules/node_modules/babel-plugin-transform-async-to-promises/helpers.js", "../../../node_modules/@barba/core/src/modules/Logger.ts", "../../../node_modules/@barba/core/src/defs/hooks.ts", "../../../node_modules/node_modules/path-to-regexp/index.js", "../../../node_modules/@barba/core/src/schemas/attribute.ts", "../../../node_modules/@barba/core/src/utils/dom.ts", "../../../node_modules/@barba/core/src/utils/history.ts", "../../../node_modules/@barba/core/src/utils/helpers.ts", "../../../node_modules/@barba/core/src/utils/url.ts", "../../../node_modules/@barba/core/src/utils/request.ts", "../../../node_modules/node_modules/is-promise/index.js", "../../../node_modules/@barba/core/src/utils/run-async.ts", "../../../node_modules/@barba/core/src/hooks.ts", "../../../node_modules/@barba/core/src/modules/Ignore.ts", "../../../node_modules/@barba/core/src/modules/Cache.ts", "../../../node_modules/@barba/core/src/modules/Prevent.ts", "../../../node_modules/@barba/core/src/modules/Error.ts", "../../../node_modules/@barba/core/src/modules/Store.ts", "../../../node_modules/@barba/core/src/modules/Transitions.ts", "../../../node_modules/@barba/core/src/modules/Views.ts", "../../../node_modules/@barba/core/src/polyfills/index.ts", "../../../node_modules/@barba/core/src/schemas/page.ts", "../../../node_modules/@barba/core/src/core.ts", "../../../node_modules/svg4everybody/dist/svg4everybody.js", "../../../node_modules/modujs/dist/main.esm.js", "../../../assets/scripts/modules.js", "../../../assets/scripts/modules/Load.js", "../../../assets/scripts/config.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": ["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n", "/**\n * @barba/core/modules/Logger\n *

\n * ## Logger.\n *\n * - Display informations via the console\n *\n * @module core/modules/Logger\n * @preferred\n */\n\n/***/\n\n/**\n * Log levels, all lower level messages are printed\n *\n * 0. mute\n * 1. error = `console.error()`\n * 2. warning= `console.warn()`\n * 3. info = `console.info()`\n * 4. debug = `console.log()`\n */\nexport enum LogLevels {\n off = 0,\n error = 1,\n warning = 2,\n info = 3,\n debug = 4,\n}\n\n/**\n * Global log level\n */\nlet _level: number = LogLevels.off;\n\nexport class Logger {\n /**\n * Get global log level.\n */\n public static getLevel(): number {\n return _level;\n }\n\n /**\n * Set global log level.\n */\n public static setLevel(name: keyof typeof LogLevels): number {\n _level = LogLevels[name];\n\n return _level;\n }\n\n /**\n * Log \"prefix\".\n */\n private _source: string;\n\n /**\n * Creates an instance of Logger.\n */\n constructor(source: string) {\n this._source = source;\n }\n\n /**\n * Permanent, unremovable log.\n */\n // public print(...objects: any[]): void {\n // this._log(console.info, LogLevels.off, objects);\n // }\n\n /**\n * Error log.\n */\n public error(...objects: any[]): void {\n this._log(console.error, LogLevels.error, objects);\n }\n\n /**\n * Warn log.\n */\n public warn(...objects: any[]): void {\n this._log(console.warn, LogLevels.warning, objects);\n }\n\n /**\n * Info log.\n */\n public info(...objects: any[]): void {\n this._log(console.info, LogLevels.info, objects);\n }\n\n /**\n * Debug log.\n */\n public debug(...objects: any[]): void {\n this._log(console.log, LogLevels.debug, objects);\n }\n\n /**\n * Internal logger.\n */\n private _log(fn: () => void, level: number, objects: any[]): void {\n if (level <= Logger.getLevel()) {\n fn.apply(console, ([`[${this._source}] `].concat(objects) as unknown) as [\n\n ]);\n }\n }\n}\n", "/**\n * @module typings/core\n */\nimport { ITransitionData, ITransitionPage, IViewData } from './index';\n\nexport type HooksBarba =\n | 'ready'\n | 'page'\n | 'reset'\n | 'currentAdded'\n | 'currentRemoved'\n | 'nextAdded'\n | 'nextRemoved';\n\nexport type HooksOnce = 'beforeOnce' | 'once' | 'afterOnce';\n\nexport type HooksPage =\n | 'before'\n | 'beforeLeave'\n | 'leave'\n | 'afterLeave'\n | 'beforeEnter'\n | 'enter'\n | 'afterEnter'\n | 'after';\n\nexport type HooksBefore = 'beforeOnce' | 'beforeLeave' | 'beforeEnter';\nexport type HooksAfter = 'afterOnce' | 'afterLeave' | 'afterEnter';\n\nexport type HooksTransition = HooksOnce | HooksPage;\nexport type HooksView = HooksBefore | HooksAfter;\nexport type HooksAll = HooksBarba | HooksTransition;\n\n// Allow optional \"dynamically created\" hooks\nexport type HooksTransitionMap = { [key in HooksTransition]?: any };\n\nexport type HookFunction = (\n data?: ITransitionData | IViewData,\n t?: ITransitionPage\n) => Promise | void;\n\nexport class HookMethods {\n public before: (fn: HookFunction, ctx?: any) => void;\n public beforeLeave: (fn: HookFunction, ctx?: any) => void;\n public leave: (fn: HookFunction, ctx?: any) => void;\n public afterLeave: (fn: HookFunction, ctx?: any) => void;\n public beforeEnter: (fn: HookFunction, ctx?: any) => void;\n public enter: (fn: HookFunction, ctx?: any) => void;\n public afterEnter: (fn: HookFunction, ctx?: any) => void;\n public after: (fn: HookFunction, ctx?: any) => void;\n}\n", "/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.match = match\nmodule.exports.regexpToFunction = regexpToFunction\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match (str, options) {\n var keys = []\n var re = pathToRegexp(str, keys, options)\n return regexpToFunction(re, keys)\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction (re, keys) {\n return function (pathname, options) {\n var m = re.exec(pathname)\n if (!m) return false\n\n var path = m[0]\n var index = m.index\n var params = {}\n var decode = (options && options.decode) || decodeURIComponent\n\n for (var i = 1; i < m.length; i++) {\n if (m[i] === undefined) continue\n\n var key = keys[i - 1]\n\n if (key.repeat) {\n params[key.name] = m[i].split(key.delimiter).map(function (value) {\n return decode(value, key)\n })\n } else {\n params[key.name] = decode(m[i], key)\n }\n }\n\n return { path: path, index: index, params: params }\n }\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n var validate = options ? options.validate !== false : true\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n", "/**\n * @barba/core/schemas\n *

\n * ## Schemas description.\n *\n * @module core/schemas\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { ISchemaAttribute } from '../defs';\n\n/**\n * See [[ISchemaAttribute]]\n */\nexport const schemaAttribute: ISchemaAttribute = {\n container: 'container',\n history: 'history',\n namespace: 'namespace',\n prefix: 'data-barba',\n prevent: 'prevent',\n wrapper: 'wrapper',\n};\n", "/**\n * @barba/core/utils/dom\n *

\n * ## Dom utils\n *\n * - Access DOM contents\n * - DOM vs string conversions\n *\n * @module core/utils/dom\n * @preferred\n */\n\n/***/\n\nimport path from 'path';\n\n// Definitions\nimport { ISchemaAttribute, Link, Scope, Wrapper } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\nexport class Dom {\n private _attr: ISchemaAttribute = schemaAttribute;\n private _parser: DOMParser = new DOMParser();\n\n /**\n * Convert HTMLDocument to string.\n */\n public toString(el: HTMLElement): string {\n return el.outerHTML;\n }\n\n /**\n * Parse HTML string to HTMLDocument.\n */\n // see https://github.com/barbajs/barba/issues/362\n // Seems that using DOMParser.parseFromString causes this issue.\n public toDocument(htmlString: string): HTMLDocument {\n return this._parser.parseFromString(htmlString, 'text/html');\n }\n\n /**\n * Parse HTML string to DIVElement.\n *\n * DOMParser.parseFromString fails with img[srcset] on iOS.\n * see https://github.com/barbajs/barba/issues/362\n */\n public toElement(htmlString: string): HTMLDivElement {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString;\n return div;\n }\n\n /**\n * Get HTML content.\n */\n public getHtml(doc: HTMLDocument = document): string {\n return this.toString(doc.documentElement);\n }\n\n /**\n * Get full document content.\n */\n // getDocument(el = document.documentElement) {\n // return this.toStr(el);\n // },\n\n /**\n * Get `[data-barba=\"wrapper\"]`.\n */\n public getWrapper(scope: Scope = document): Wrapper {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.wrapper}\"]`\n );\n }\n\n /**\n * Get `[data-barba=\"container\"]`.\n */\n public getContainer(scope: Scope = document): HTMLElement | null {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.container}\"]`\n );\n }\n\n /**\n * Remove container and store next sibling (if applicable).\n */\n public removeContainer(container: HTMLElement) {\n if (document.body.contains(container)) {\n container.parentNode.removeChild(container);\n }\n }\n\n /**\n * Add container before next sibling or at the end of the wrapper.\n */\n public addContainer(container: HTMLElement, wrapper: HTMLElement) {\n const existingContainer = this.getContainer();\n\n if (existingContainer) {\n this._insertAfter(container, existingContainer);\n } else {\n wrapper.appendChild(container);\n }\n }\n\n /**\n * Get `[data-barba-namespace]`.\n */\n public getNamespace(scope: Scope = document): string | null {\n const ns = scope.querySelector(\n `[${this._attr.prefix}-${this._attr.namespace}]`\n );\n\n return ns\n ? ns.getAttribute(`${this._attr.prefix}-${this._attr.namespace}`)\n : null;\n }\n\n /**\n * Get URL from `href` value.\n */\n public getHref(el: Link): string | null {\n // HTML tagName is UPPERCASE, xhtml tagName keeps existing case.\n if (el.tagName && el.tagName.toLowerCase() === 'a') {\n // HTMLAnchorElement, full URL available\n if (typeof el.href === 'string') {\n return el.href;\n }\n\n // Probably a SVGAElement\u2026\n const href = el.getAttribute('href') || el.getAttribute('xlink:href');\n\n /* istanbul ignore else */\n if (href) {\n // When link comes from SVG, `href` returns an object, not a string.\n const attr: string =\n ((href as unknown) as SVGAnimatedString).baseVal || href;\n\n return this.resolveUrl(attr);\n }\n }\n return null;\n }\n\n // Copyright 2014 Simon Lydell\n // X11 (\u201CMIT\u201D) Licensed. (See LICENSE\n // https://github.com/lydell/resolve-url/blob/master/resolve-url.js\n /* istanbul ignore next */\n public resolveUrl(...urls: string[]) {\n const numUrls = urls.length;\n\n if (numUrls === 0) {\n throw new Error('resolveUrl requires at least one argument; got none.');\n }\n\n const base = document.createElement('base');\n base.href = arguments[0];\n\n if (numUrls === 1) {\n return base.href;\n }\n\n const head = document.getElementsByTagName('head')[0];\n head.insertBefore(base, head.firstChild);\n\n const a = document.createElement('a');\n let resolved;\n\n for (let index = 1; index < numUrls; index++) {\n a.href = arguments[index];\n resolved = a.href;\n base.href = resolved;\n }\n\n head.removeChild(base);\n\n return resolved;\n }\n\n /**\n * Insert node after another node.\n */\n private _insertAfter(newNode: Node, referenceNode: Node) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n }\n}\n\nconst dom = new Dom();\n\nexport { dom };\n", "import { HistoryAction, LinkEvent, Trigger } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\n/**\n * @barba/core/utils/history\n *

\n * ## History manager.\n *\n * - Keep track of the navigation history\n *\n * @module core/utils/history\n * @preferred\n */\n\n/**\n * State item.\n *\n * @property from\n * @property index\n */\ninterface IHistoryItem {\n /** origin */\n from: string;\n /** index */\n index: number;\n /** states */\n states: IStateItem[];\n}\n\n/***/\ninterface ICoords {\n x: number;\n y: number;\n}\n\n/**\n * History item.\n *\n * @property namespace\n * @property scroll\n * @property URL\n */\ninterface IStateItem {\n /** namespace */\n ns: string | undefined;\n /** Scroll position */\n scroll: ICoords;\n /** URL */\n url: string;\n}\n\nexport class History {\n private _session: string;\n private _states: IStateItem[] = [];\n private _pointer = -1;\n\n /**\n * Init with first state.\n */\n public init(url: string, ns: string): void {\n this._session = 'barba';\n const index = 0;\n\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n window.history && window.history.replaceState(item, '', url);\n }\n\n public change(\n url: string,\n trigger: Trigger,\n e?: LinkEvent | PopStateEvent\n ): Trigger {\n if (e && (e as PopStateEvent).state) {\n // If popstate, move to existing state\n // and get back/forward direction.\n const { state }: { state: IHistoryItem } = e as PopStateEvent;\n const { index } = state;\n const diff = this._pointer - index;\n\n trigger = this._getDirection(diff);\n\n // Work with previous states\n this.replace(state.states);\n this._pointer = index;\n } else {\n // Add new state\n this.add(url, trigger);\n }\n\n return trigger;\n }\n\n /**\n * Add a new state.\n */\n public add(url: string, trigger: Trigger): void {\n // If no state, it will be updated later.\n const ns = 'tmp';\n const index = this.size;\n const action = this._getAction(trigger);\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n switch (action) {\n case 'push':\n window.history && window.history.pushState(item, '', url);\n break;\n case 'replace':\n window.history && window.history.replaceState(item, '', url);\n break;\n /* istanbul ignore next */\n default:\n }\n }\n\n /**\n * Update state.\n */\n public update(data: any, i?: number): void {\n const index = i || this._pointer;\n const existing = this.get(index);\n const state: IStateItem = {\n ...existing,\n ...data,\n };\n\n this.set(index, state);\n }\n\n /**\n * Remove last state.\n */\n public remove(i?: number): void {\n if (i) {\n this._states.splice(i, 1);\n } else {\n this._states.pop();\n }\n\n this._pointer--;\n }\n\n /**\n * Delete all states.\n */\n public clear(): void {\n this._states = [];\n this._pointer = -1;\n }\n\n /**\n * Replace all states.\n */\n public replace(newStates: IStateItem[]): void {\n this._states = newStates;\n }\n\n /**\n * Get state by index.\n */\n public get(index: number) {\n return this._states[index];\n }\n\n /**\n * Set state by index.\n */\n public set(i: number, state: IStateItem) {\n return (this._states[i] = state);\n }\n\n /**\n * Get the current state.\n */\n get current(): IStateItem {\n return this._states[this._pointer];\n }\n\n /**\n * Get the last state (top of the history stack).\n */\n get state(): IStateItem {\n return this._states[this._states.length - 1];\n }\n\n /**\n * Get the previous state.\n */\n get previous(): IStateItem | null {\n return this._pointer < 1 ? null : this._states[this._pointer - 1];\n }\n\n /**\n * Get the state size.\n */\n get size(): number {\n return this._states.length;\n }\n\n /**\n * Get the history action: push vs replace\n */\n private _getAction(trigger: Trigger): HistoryAction {\n let action: HistoryAction = 'push';\n\n // Manage `data-barba-history` attribute\n // to get the right action (push vs replace).\n const el = trigger as HTMLAnchorElement;\n const attr = `${schemaAttribute.prefix}-${schemaAttribute.history}`;\n\n if (el.hasAttribute && el.hasAttribute(attr)) {\n action = el.getAttribute(attr) as HistoryAction;\n }\n\n return action;\n }\n\n /**\n * Get the direction of popstate change\n */\n private _getDirection(diff: number): Trigger {\n // Check if \"session switch\"\n if (Math.abs(diff) > 1) {\n // Ex 6-0 > 0 -> forward, 0-6 < 0 -> back\n return diff > 0 ? 'forward' : 'back';\n } else {\n if (diff === 0) {\n return 'popstate';\n } else {\n // Ex 6-5 > 0 -> back, 5-6 < 0 -> forward\n return diff > 0 ? 'back' : 'forward';\n }\n }\n }\n}\n\nconst history = new History();\n\nexport { history };\n", "/**\n * @barba/core/utils/helpers\n *

\n * ## Helpers\n *\n * - Update next page data\n *\n * @module core/utils/helpers\n * @preferred\n */\n\n/***/\n\n// Third-party\nimport ptr from 'path-to-regexp';\n// Definitions\nimport { ITransitionData } from '../defs';\n// Utils\nimport { dom } from './dom';\nimport { history } from './history';\n\n/**\n * Update `data.next`, the title and the history\n */\nexport const update = async (\n page: Promise,\n data: ITransitionData\n): Promise => {\n // If not already updated\n if (!data.next.html) {\n const html = await page;\n const { next } = data;\n\n if (html) {\n // see: https://github.com/barbajs/barba/issues/362\n // const nextDocument = dom.toDocument(html);\n const nextDocument = dom.toElement(html);\n\n next.namespace = dom.getNamespace(nextDocument);\n next.container = dom.getContainer(nextDocument);\n // see https://github.com/barbajs/barba/issues/362\n // next.html = dom.getHtml(nextDocument);\n // next.html = nextDocument.innerHTML;\n next.html = html;\n\n // Update history namespace (not available when initially set)\n history.update({ ns: next.namespace });\n\n // Update title.\n const { title } = dom.toDocument(html);\n\n document.title = title;\n }\n }\n};\n\n/**\n * Next tick\n */\nexport const nextTick = () =>\n new Promise(resolve => {\n window.requestAnimationFrame(resolve);\n // DEV: same result?\n // setTimeout(resolve, 0);\n });\n\n/**\n * Turn a route string such as `/user/:name` into a regular expression.\n *\n * Used for:\n *\n * - routes to ignore\n * - route transition resolution\n *\n * @see https://www.npmjs.com/package/path-to-regexp\n */\nconst pathToRegexp = ptr;\n\nexport { pathToRegexp };\n", "/**\n * @barba/core/utils/url\n *

\n * ## URL utils.\n *\n * - Collect and structure informations from URLs\n *\n * @module core/utils/url\n */\n\n/***/\n\n// Definitions\nimport { IGenericObject, IUrlBase } from '../defs';\n\n/**\n * Get location href.\n */\nexport const getHref = () => window.location.href;\n\n/**\n * Get location origin.\n */\nexport const getOrigin = () => window.location.origin;\n\n/**\n * Get port based on URL or location.\n */\nexport const getPort = (url: string = window.location.href) => parse(url).port;\n\n/**\n * Get path from URL.\n */\nexport const getPath = (url: string = window.location.href) => parse(url).path;\n\n/**\n * Get query object from URL.\n */\n// export const getQuery = (url: string): IGenericObject => parse(url).query;\n\n/**\n * Get hash from URL.\n */\n// export const getHash = (url: string): string => parse(url).hash;\n\n/**\n * Parse URL for path, query and hash and more.\n */\nexport const parse = (url: string): IUrlBase => {\n // Port\n let port;\n const matches = url.match(/:\\d+/);\n\n if (matches === null) {\n if (/^http/.test(url)) {\n port = 80;\n }\n\n if (/^https/.test(url)) {\n port = 443;\n }\n } else {\n const portString = matches[0].substring(1);\n\n port = parseInt(portString, 10);\n }\n\n // Path\n let path = url.replace(getOrigin(), '');\n let hash;\n let query = {};\n\n // Hash\n const hashIndex = path.indexOf('#');\n\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex + 1);\n path = path.slice(0, hashIndex);\n }\n\n // Query\n const queryIndex = path.indexOf('?');\n\n if (queryIndex >= 0) {\n query = parseQuery(path.slice(queryIndex + 1));\n path = path.slice(0, queryIndex);\n }\n\n return {\n hash,\n path,\n port,\n query,\n };\n};\n\n/**\n * Parse a query string to object.\n */\nexport const parseQuery = (str: string) =>\n str.split('&').reduce((acc: IGenericObject, el: string) => {\n const [key, value] = el.split('=');\n\n acc[key] = value;\n\n return acc;\n }, {});\n\n/**\n * Clean URL, remove \"hash\" and/or \"trailing slash\".\n */\nexport const clean = (url: string = window.location.href) =>\n url.replace(/(\\/#.*|\\/|#.*)$/, '');\n", "/**\n * @barba/core/utils/request\n *

\n * ## Fetch pages for transitions.\n *\n * - Includes timeout\n * - Uses Fetch API\n * - Handles errors\n *\n * @module core/utils/request\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { RequestError } from '../defs';\n\n/**\n * Init a page request.\n * Fetch the page and returns a promise with the text content.\n */\nfunction request(\n url: string,\n ttl: number = 2e3,\n requestError: RequestError\n): Promise {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n resolve(xhr.responseText);\n } else if (xhr.status) {\n // HTTP code is not 200, reject with response.\n const res = {\n status: xhr.status,\n statusText: xhr.statusText,\n };\n requestError(url, res);\n reject(res);\n }\n }\n };\n xhr.ontimeout = () => {\n const err = new Error(`Timeout error [${ttl}]`);\n requestError(url, err);\n reject(err);\n };\n xhr.onerror = () => {\n const err = new Error(`Fetch error`);\n requestError(url, err);\n reject(err);\n };\n\n xhr.open('GET', url);\n xhr.timeout = ttl;\n xhr.setRequestHeader(\n 'Accept',\n 'text/html,application/xhtml+xml,application/xml'\n );\n xhr.setRequestHeader('x-barba', 'yes');\n xhr.send();\n });\n}\n\nexport { request };\n", "module.exports = isPromise;\n\nfunction isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n", "import isPromise from 'is-promise';\n\n// https://github.com/SBoudrias/run-async\n/* istanbul ignore next */\nexport function runAsync(\n func: (...args: any[]) => void | Promise,\n ctx: any = {}\n): (...args: any[]) => Promise {\n return (...args: any[]) => {\n let async = false;\n\n const promise = new Promise((resolve, reject) => {\n // Add async to context\n ctx.async = () => {\n async = true;\n\n return (err: any, value: any) => {\n if (err) {\n reject(err);\n } else {\n resolve(value);\n }\n };\n };\n\n const answer = func.apply(ctx, args as []);\n\n if (!async) {\n if (isPromise(answer)) {\n (answer as Promise).then(resolve, reject);\n } else {\n resolve(answer);\n }\n }\n });\n\n return promise;\n };\n}\n", "/**\n * @barba/core/modules/hooks\n *

\n * ## Hooks manager.\n *\n * - Register and trigger hooks\n *\n * Hooks can be easily registered:\n *\n * ```js\n * hooks.leave(callback, context);\n * ```\n *\n * @module core/modules/hooks\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HookFunction, HookMethods, HooksAll } from './defs';\n// Modules\nimport { Logger } from './modules/Logger';\n// Utils\nimport { runAsync } from './utils';\n// Types\ninterface IHookInfos {\n ctx: any;\n fn: HookFunction;\n}\n\nexport class Hooks extends HookMethods {\n /**\n * Allow the use of `hooks[name](cb, ctx)`.\n */\n [key: string]: any;\n // [key in HooksAll]?: any;\n public logger: Logger = new Logger('@barba/core');\n /**\n * All available hooks.\n *\n * See [[HooksAll]]\n */\n // TODO: get hooks from defs (DRY)?\n public all: HooksAll[] = [\n 'ready',\n 'page',\n 'reset',\n 'currentAdded',\n 'currentRemoved',\n 'nextAdded',\n 'nextRemoved',\n 'beforeOnce',\n 'once',\n 'afterOnce',\n 'before',\n 'beforeLeave',\n 'leave',\n 'afterLeave',\n 'beforeEnter',\n 'enter',\n 'afterEnter',\n 'after',\n ];\n /**\n * Registered hooks.\n *\n * - Unique hook name\n * - Associated data set(s) (callback + context)\n */\n public registered: Map> = new Map();\n\n constructor() {\n super();\n this.init();\n }\n\n public init() {\n this.registered.clear();\n this.all.forEach(hook => {\n if (!this[hook]) {\n this[hook] = (fn: HookFunction, ctx?: any) => {\n if (!this.registered.has(hook)) {\n this.registered.set(hook, new Set());\n }\n const set = this.registered.get(hook);\n\n set.add({\n ctx: ctx || {},\n fn,\n });\n };\n }\n });\n }\n\n /**\n * Do hook.\n *\n * Trigger registered hooks.\n */\n public do(name: HooksAll, ...args: any): Promise {\n if (this.registered.has(name)) {\n // Let's start a chain of promises\n let chain = Promise.resolve();\n\n this.registered.get(name).forEach(hook => {\n // Chain async hooks promisified\n chain = chain.then(() => runAsync(hook.fn, hook.ctx)(...args));\n });\n\n return chain.catch(error => {\n this.logger.debug(`Hook error [${name}]`);\n this.logger.error(error);\n });\n }\n\n return Promise.resolve();\n }\n\n public clear(): void {\n this.all.forEach(hook => {\n delete this[hook];\n });\n\n this.init();\n }\n\n /**\n * Help, print available and registered hooks.\n */\n public help(): void {\n this.logger.info(`Available hooks: ${this.all.join(',')}`);\n const registered: string[] = [];\n this.registered.forEach((value, key) => registered.push(key));\n this.logger.info(`Registered hooks: ${registered.join(',')}`);\n }\n}\n\nconst hooks = new Hooks();\n\nexport { hooks };\n", "/**\n * @barba/core/modules/ignore\n *

\n * ## Manage ignore options.\n *\n * - cache\n * - prefetch\n *\n * @module core/modules/ignore\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption } from '../defs';\n// Utils\nimport { pathToRegexp } from '../utils/helpers';\nimport { parse } from '../utils/url';\n\nexport class Ignore {\n private _ignoreAll: boolean;\n private _ignoreRegexes: RegExp[] = [];\n\n constructor(ignore: IgnoreOption) {\n if (typeof ignore === 'boolean') {\n this._ignoreAll = ignore;\n } else {\n const paths = Array.isArray(ignore) ? ignore : [ignore];\n\n this._ignoreRegexes = paths.map(p => pathToRegexp(p));\n }\n }\n\n public checkHref(href: string): boolean {\n if (typeof this._ignoreAll === 'boolean') {\n return this._ignoreAll;\n }\n\n const { path } = parse(href);\n\n return this._ignoreRegexes.some(regex => regex.exec(path) !== null);\n }\n}\n", "/**\n * @barba/core/modules/cache\n *

\n * ## Cache for storing URL / HTML.\n *\n * @module core/modules/cache\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { CacheAction, CacheRequest, ICacheData, IgnoreOption } from '../defs';\n// Modules\nimport { Ignore } from './Ignore';\n\nexport class Cache extends Ignore {\n private _state: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n }\n\n /**\n * Set value to cache\n */\n public set(\n href: string,\n request: CacheRequest,\n action: CacheAction\n ): ICacheData {\n this._state.set(href, {\n action,\n request,\n });\n\n return {\n action,\n request,\n };\n }\n\n /**\n * Get data from cache\n */\n public get(href: string): ICacheData {\n return this._state.get(href);\n }\n\n /**\n * Get request from cache\n */\n public getRequest(href: string): CacheRequest {\n return this._state.get(href).request;\n }\n\n /**\n * Get action from cache\n */\n public getAction(href: string): CacheAction {\n return this._state.get(href).action;\n }\n\n /**\n * Check if value exists into cache\n */\n public has(href: string): boolean {\n /* istanbul ignore else */\n if (this.checkHref(href)) {\n return false;\n }\n return this._state.has(href);\n }\n\n /**\n * Delete value from cache\n */\n public delete(href: string): boolean {\n return this._state.delete(href);\n }\n\n /**\n * Update cache value\n */\n public update(href: string, data: ICacheData): ICacheData {\n const state = {\n ...this._state.get(href),\n ...data,\n };\n this._state.set(href, state);\n\n return state;\n }\n}\n", "/**\n * @barba/core/modules/prevent\n *

\n * ## Prevent checks.\n *\n * - Gathers all the tests that allow Barba to work and play transitions\n *\n * @module core/modules/prevent\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption, Link, PreventCheck } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n// Utils\nimport { url } from '../utils';\n// Modules\nimport { Ignore } from './Ignore';\n\n/**\n * Make sure the browser supports `history.pushState`.\n */\nconst pushState: PreventCheck = () => !window.history.pushState;\n\n/**\n * Make sure there is an `el` and `href`.\n */\nconst exists: PreventCheck = ({ el, href }) => !el || !href;\n\n/**\n * If the user is pressing ctrl + click, the browser will open a new tab.\n */\nconst newTab: PreventCheck = ({ event }) =>\n (event as KeyboardEvent).which > 1 ||\n (event as KeyboardEvent).metaKey ||\n (event as KeyboardEvent).ctrlKey ||\n (event as KeyboardEvent).shiftKey ||\n (event as KeyboardEvent).altKey;\n\n/**\n * If the link has `_blank` target.\n */\nconst blank: PreventCheck = ({ el }) =>\n el.hasAttribute('target') && (el as Link).target === '_blank';\n\n/**\n * If the domain is the same (in order to avoid pushState cross origin security problem).\n * Note: SVGAElement do not have `protocol` neither `hostname` properties.\n */\nconst corsDomain: PreventCheck = ({ el }) =>\n ((el as HTMLAnchorElement).protocol !== undefined &&\n window.location.protocol !== (el as HTMLAnchorElement).protocol) ||\n ((el as HTMLAnchorElement).hostname !== undefined &&\n window.location.hostname !== (el as HTMLAnchorElement).hostname);\n\n/**\n * If the port is the same.\n * Note: SVGAElement do not have `port` property.\n */\nconst corsPort: PreventCheck = ({ el }) =>\n (el as HTMLAnchorElement).port !== undefined &&\n url.getPort() !== url.getPort((el as HTMLAnchorElement).href);\n\n/**\n * If the link has download attribute.\n */\nconst download: PreventCheck = ({ el }) =>\n el.getAttribute && typeof el.getAttribute('download') === 'string';\n\n/**\n * If the links contains [data-barba-prevent] or [data-barba-prevent=\"self\"].\n */\nconst preventSelf: PreventCheck = ({ el }) =>\n el.hasAttribute(`${schemaAttribute.prefix}-${schemaAttribute.prevent}`);\n\n/**\n * If some link ancestor contains [data-barba-prevent=\"all\"].\n */\nconst preventAll: PreventCheck = ({ el }) =>\n Boolean(\n el.closest(`[${schemaAttribute.prefix}-${schemaAttribute.prevent}=\"all\"]`)\n );\n\n/**\n * If the link is the current URL.\n *\n * > Not in the test suite.\n */\nconst sameUrl: PreventCheck = ({ href }) =>\n url.clean(href) === url.clean() && url.getPort(href) === url.getPort();\n\nexport class Prevent extends Ignore {\n public suite: string[] = [];\n public tests: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n this.init();\n }\n\n public init(): void {\n // Add defaults\n this.add('pushState', pushState);\n this.add('exists', exists);\n this.add('newTab', newTab);\n this.add('blank', blank);\n this.add('corsDomain', corsDomain);\n this.add('corsPort', corsPort);\n this.add('download', download);\n this.add('preventSelf', preventSelf);\n this.add('preventAll', preventAll);\n\n // Outside of the test suite\n this.add('sameUrl', sameUrl, false);\n }\n\n public add(name: string, check: PreventCheck, suite: boolean = true): void {\n this.tests.set(name, check);\n suite && this.suite.push(name);\n }\n\n /**\n * Run individual test\n */\n public run(name: string, el: Link, event: Event, href: string): boolean {\n return this.tests.get(name)({\n el,\n event,\n href,\n });\n }\n\n /**\n * Run test suite\n */\n public checkLink(el: Link, event: Event, href: string): boolean {\n return this.suite.some(name => this.run(name, el, event, href));\n }\n}\n", "// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\nexport class BarbaError extends Error {\n /* istanbul ignore next */\n constructor(\n public error: Error,\n public label = 'Barba error',\n ...params: any[]\n ) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(...params);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BarbaError);\n }\n\n this.name = 'BarbaError';\n }\n}\n", "/**\n * @barba/core/modules/store\n *

\n * ## Transitions store.\n *\n * - Resolve transition\n * - Manage rules\n *\n * @module core/modules/store\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n IRule,\n IRules,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n RuleName,\n} from '../defs';\n\n// Modules\nimport { Logger } from './Logger';\n\nexport class Store {\n public logger: Logger = new Logger('@barba/core');\n /**\n * All registered transitions.\n */\n public all: ITransitionPage[] = [];\n /**\n * \"Page only\" registered transitions.\n */\n public page: ITransitionPage[] = [];\n /**\n * \"Once only\" registered transitions.\n */\n public once: ITransitionOnce[] = [];\n /**\n * Rules for transition resolution.\n *\n * Defaults:\n *\n * - namespace\n * - custom\n */\n private _rules: IRule[] = [\n {\n name: 'namespace',\n type: 'strings',\n },\n {\n name: 'custom',\n type: 'function',\n },\n ];\n\n /**\n * Init store.\n */\n constructor(transitions: ITransitionPage[] = []) {\n /* istanbul ignore else */\n if (transitions) {\n // TODO: add check for valid transitions? criteria? (once || enter && leave)\n this.all = this.all.concat(transitions);\n }\n this.update();\n }\n\n /**\n * Add rule or transition.\n */\n public add(type: 'rule' | 'transition', data: any): void {\n switch (type) {\n case 'rule':\n // TODO: check for valid rule\n this._rules.splice(data.position || 0, 0, data.value);\n break;\n case 'transition':\n default:\n // TODO: check for valid transition\n this.all.push(data);\n break;\n }\n\n this.update();\n }\n\n /**\n * Resolve transition.\n */\n public resolve(\n data: ITransitionData,\n filters: ITransitionFilters = {}\n ): ITransitionOnce | ITransitionPage {\n // Filter on \"once\"\n let transitions = filters.once ? this.once : this.page;\n\n // Filter on \"self\"\n if (filters.self) {\n transitions = transitions.filter(t => t.name && t.name === 'self');\n } else {\n transitions = transitions.filter(t => !t.name || t.name !== 'self');\n }\n\n // All matching transition infos\n const matching = new Map();\n\n // Active = first of valid transitions\n // sorted by directions (from/to, from || to, \u2026)\n const active = transitions.find(t => {\n let valid = true;\n const match = {};\n\n if (filters.self && t.name === 'self') {\n return true;\n }\n\n // Check rules\n this._rules.reverse().forEach(rule => {\n if (valid) {\n valid = this._check(t, rule, data, match);\n // From/to check\n if (t.from && t.to) {\n valid =\n this._check(t, rule, data, match, 'from') &&\n this._check(t, rule, data, match, 'to');\n }\n if (t.from && !t.to) {\n valid = this._check(t, rule, data, match, 'from');\n }\n if (!t.from && t.to) {\n valid = this._check(t, rule, data, match, 'to');\n }\n }\n });\n\n matching.set(t, match);\n\n return valid;\n });\n\n const activeMatch = matching.get(active);\n const transitionType = [];\n if (filters.once) {\n transitionType.push('once');\n } else {\n transitionType.push('page');\n }\n if (filters.self) {\n transitionType.push('self');\n }\n\n if (activeMatch) {\n // Log resolved transition\n const infos: any[] = [active];\n // Log if matching criteria\n Object.keys(activeMatch).length > 0 && infos.push(activeMatch);\n\n this.logger.info(\n `Transition found [${transitionType.join(',')}]`,\n ...infos\n );\n } else {\n this.logger.info(`No transition found [${transitionType.join(',')}]`);\n }\n\n return active;\n }\n\n /**\n * ### Update store.\n *\n * - Reorder transition by priorities\n * - Get wait indicator\n * - Get once transitions\n */\n public update(): void {\n // Reorder by priorities\n this.all = this.all\n .map(t => this._addPriority(t))\n .sort((a, b) => a.priority - b.priority)\n .reverse()\n .map(t => {\n delete t.priority;\n\n return t;\n });\n this.page = this.all.filter(\n t => t.leave !== undefined || t.enter !== undefined\n ) as ITransitionPage[];\n this.once = this.all.filter(t => t.once !== undefined) as ITransitionOnce[];\n }\n\n /**\n * ### Check if transition apply.\n *\n * Based on rule, page data and optional direction:\n *\n * 1. transition has no rule \"property\":\n * - always returns true\n * 2. transition has rule \"property\":\n * - \"strings\" should be present on both side (transition + page) and match\n * - \"function\" should return true\n */\n private _check(\n transition: ITransitionPage,\n rule: IRule,\n data: ITransitionData,\n match: any,\n direction?: 'from' | 'to'\n ): boolean {\n let isValid = true;\n let hasMatch = false;\n const t = transition;\n const { name, type } = rule;\n const strRule = name as IRules['strings'];\n const objRule = name as IRules['object'];\n const fnName = name as IRules['function'];\n const base = direction ? t[direction] : t; // = t || t.from || t.to\n const page = direction === 'to' ? data.next : data.current; // = current || next\n const exist = direction ? base && base[name] : base[name];\n\n // If transition rule exists\n if (exist) {\n switch (type) {\n case 'strings':\n default: {\n // Array support\n const names: string[] = Array.isArray(base[strRule])\n ? (base[strRule] as string[])\n : [base[strRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[strRule] && names.indexOf(page[strRule]) !== -1) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[strRule]) === -1) {\n isValid = false;\n }\n break;\n }\n\n case 'object': {\n // Array support\n const names: string[] = Array.isArray(base[objRule])\n ? (base[objRule] as string[])\n : [base[objRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[objRule]) {\n if (\n page[objRule].name &&\n names.indexOf(page[objRule].name) !== -1\n ) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[objRule].name) === -1) {\n isValid = false;\n }\n } else {\n isValid = false;\n }\n break;\n }\n\n case 'function':\n if (base[fnName](data)) {\n hasMatch = true;\n } else {\n isValid = false;\n }\n break;\n }\n\n if (hasMatch) {\n if (direction) {\n match[direction] = match[direction] || {};\n match[direction][name] = t[direction][name];\n } else {\n match[name] = t[name];\n }\n }\n }\n\n return isValid;\n }\n\n /**\n * ### Calculate transition priority.\n *\n * Based on:\n *\n * - rule \"position\" (index) give tens, hundreds, thousands, \u2026\n * - from/to properties give units (0, 1 or 2)\n */\n private _calculatePriority(\n t: ITransitionPage,\n ruleName: RuleName,\n ruleIndex: number\n ): number {\n let priority = 0;\n\n if (\n t[ruleName] ||\n (t.from && t.from[ruleName]) ||\n (t.to && t.to[ruleName])\n ) {\n priority += Math.pow(10, ruleIndex);\n\n if (t.from && t.from[ruleName]) {\n priority += 1;\n }\n if (t.to && t.to[ruleName]) {\n priority += 2;\n }\n }\n\n return priority;\n }\n\n private _addPriority(t: ITransitionPage): ITransitionPage {\n t.priority = 0;\n let priority = 0;\n\n this._rules.forEach((rule, i) => {\n const { name } = rule;\n const index = i + 1;\n\n priority += this._calculatePriority(t, name, index);\n });\n\n t.priority = priority;\n\n return t;\n }\n}\n", "/**\n * @barba/core/modules/transitions\n *

\n * ## Transitions manager.\n *\n * - Handle hooks and transition lifecycle\n *\n * @module core/modules/transitions\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n HooksTransition,\n HooksTransitionMap,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n Wrapper,\n} from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { dom, helpers, runAsync } from '../utils';\n// Modules\nimport { BarbaError } from './Error';\nimport { Logger } from './Logger';\nimport { Store } from './Store';\n\nexport class Transitions {\n public logger: Logger = new Logger('@barba/core');\n public store: Store;\n private _running: boolean = false;\n\n constructor(transitions: ITransitionPage[] = []) {\n this.store = new Store(transitions);\n }\n\n /**\n * Get resolved transition\n *\n * - based on data\n */\n public get(\n data: ITransitionData,\n filters?: ITransitionFilters\n ): ITransitionOnce | ITransitionPage {\n return this.store.resolve(data, filters);\n }\n\n /**\n * Animation running status.\n */\n get isRunning(): boolean {\n return this._running;\n }\n set isRunning(status: boolean) {\n this._running = status;\n }\n\n /**\n * Check for registered once transition(s).\n */\n get hasOnce(): boolean {\n return this.store.once.length > 0;\n }\n\n /**\n * Check for registered self transition.\n */\n get hasSelf(): boolean {\n return this.store.all.some(t => t.name === 'self');\n }\n\n /**\n * ### Wait indicator.\n *\n * Tells Barba to get next page data
\n * before starting the resolution
\n * because some registered transitions need
\n * next page data to be resolved (eg: `sync: true`, `to: { namespace }`, \u2026)\n */\n get shouldWait(): boolean {\n return this.store.all.some(t => (t.to && !t.to.route) || t.sync);\n }\n\n /**\n * ### Do \"once\" transition.\n *\n * Hooks: see [[HooksOnce]].\n */\n public async doOnce({\n data,\n transition,\n }: {\n data: ITransitionData;\n transition: ITransitionOnce;\n }) {\n const t = transition || {};\n this._running = true;\n\n try {\n await this._doAsyncHook('beforeOnce', data, t);\n await this.once(data, t);\n await this._doAsyncHook('afterOnce', data, t);\n } catch (error) {\n this._running = false;\n\n this.logger.debug('Transition error [before/after/once]');\n this.logger.error(error);\n }\n\n this._running = false;\n }\n\n /**\n * ### Do \"page\" transition.\n *\n * Hooks: see [[HooksPage]].\n *\n * `sync: false` (default) order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. leave\n * 4. afterLeave\n * 5. beforeEnter\n * 6. enter\n * 7. afterEnter\n * 8. after\n *\n * `sync: true` order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. beforeEnter\n * 4. leave & enter\n * 5. afterLeave\n * 6. afterEnter\n * 7. after\n */\n public async doPage({\n data,\n transition,\n page,\n wrapper,\n }: {\n data: ITransitionData;\n transition: ITransitionPage;\n page: Promise;\n wrapper: Wrapper;\n }) {\n const t = transition || {};\n const sync = t.sync === true || false;\n\n this._running = true;\n\n try {\n // Check sync mode, wait for next content\n if (sync) {\n await helpers.update(page, data);\n }\n\n await this._doAsyncHook('before', data, t);\n\n if (sync) {\n try {\n await this.add(data, wrapper);\n // Before actions\n await this._doAsyncHook('beforeLeave', data, t);\n await this._doAsyncHook('beforeEnter', data, t);\n\n // Actions\n await Promise.all([this.leave(data, t), this.enter(data, t)]);\n\n // After actions\n await this._doAsyncHook('afterLeave', data, t);\n await this._doAsyncHook('afterEnter', data, t);\n } catch (error) {\n // this.logger.debug('Transition error [sync]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(error, 'Transition error [sync]');\n }\n }\n } else {\n let leaveResult: any = false;\n\n try {\n // Leave\n await this._doAsyncHook('beforeLeave', data, t);\n\n leaveResult = await Promise.all([\n this.leave(data, t),\n helpers.update(page, data),\n ]).then(values => values[0]);\n\n await this._doAsyncHook('afterLeave', data, t);\n\n // TODO: check here \"valid\" page result\n // before going further\n } catch (error) {\n // this.logger.debug('Transition error [before/after/leave]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/leave]'\n );\n }\n }\n\n try {\n // Enter\n /* istanbul ignore else */\n if (leaveResult !== false) {\n await this.add(data, wrapper);\n\n await this._doAsyncHook('beforeEnter', data, t);\n await this.enter(data, t, leaveResult);\n await this._doAsyncHook('afterEnter', data, t);\n }\n } catch (error) {\n // this.logger.debug('Transition error [before/after/enter]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/enter]'\n );\n }\n }\n }\n\n // Remove current contaienr\n await this.remove(data);\n\n await this._doAsyncHook('after', data, t);\n } catch (error) {\n this._running = false;\n\n // If \"custom/specific\" barba error.\n /* istanbul ignore else */\n if (error.name && error.name === 'BarbaError') {\n this.logger.debug(error.label);\n this.logger.error(error.error);\n\n throw error;\n }\n\n this.logger.debug('Transition error [page]');\n this.logger.error(error);\n\n throw error;\n }\n\n this._running = false;\n }\n\n /**\n * Once hook + async \"once\" transition.\n */\n public async once(data: ITransitionData, t: ITransitionOnce): Promise {\n await hooks.do('once', data, t);\n\n return t.once ? runAsync(t.once, t)(data) : Promise.resolve();\n }\n\n /**\n * Leave hook + async \"leave\" transition.\n */\n public async leave(data: ITransitionData, t: ITransitionPage): Promise {\n await hooks.do('leave', data, t);\n\n return t.leave ? runAsync(t.leave, t)(data) : Promise.resolve();\n }\n\n /**\n * Enter hook + async \"enter\" transition.\n */\n public async enter(\n data: ITransitionData,\n t: ITransitionPage,\n leaveResult?: any\n ): Promise {\n await hooks.do('enter', data, t);\n\n return t.enter\n ? runAsync(t.enter, t)(data, leaveResult)\n : Promise.resolve();\n }\n\n /**\n * Add next container.\n */\n public async add(data: ITransitionData, wrapper: Wrapper): Promise {\n dom.addContainer(data.next.container, wrapper);\n hooks.do('nextAdded', data);\n }\n\n /**\n * Remove current container.\n */\n public async remove(data: ITransitionData): Promise {\n dom.removeContainer(data.current.container);\n hooks.do('currentRemoved', data);\n }\n\n private _isTransitionError(error: any) {\n if (error.message) {\n // Errors from request\n return !/Timeout error|Fetch error/.test(error.message);\n }\n\n if (error.status) {\n // Errors from request\n return false;\n }\n\n return true;\n }\n\n /**\n * Do hooks + async transition methods.\n */\n private async _doAsyncHook(\n hook: HooksTransition,\n data: ITransitionData,\n t: HooksTransitionMap\n ): Promise {\n await hooks.do(hook, data, t);\n\n return t[hook] ? runAsync(t[hook], t)(data) : Promise.resolve();\n }\n}\n", "/**\n * @barba/core/modules/views\n *

\n * ## Views manager.\n *\n * @module core/modules/views\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HooksView, IView, IViewData } from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { runAsync } from '../utils';\n// Types\ntype Hook = (data: IViewData) => Promise;\n\nexport class Views {\n /**\n * Available hook names for views.\n */\n public names: HooksView[] = [\n 'beforeLeave',\n 'afterLeave',\n 'beforeEnter',\n 'afterEnter',\n ];\n /**\n * Registered views by namespace.\n */\n public byNamespace: Map = new Map();\n\n /**\n * Init views.\n */\n constructor(views: IView[]) {\n if (views.length === 0) {\n return;\n }\n\n // TODO: add check\n // for valid views? criteria? (namespace property, string ?)\n // or duplicate\n views.forEach(view => {\n this.byNamespace.set(view.namespace, view);\n });\n\n this.names.forEach(name => {\n hooks[name](this._createHook(name));\n });\n }\n\n /**\n * Create the hook method.\n *\n * - get view based on namespace\n * - execute callback with transition data\n */\n private _createHook(name: HooksView): Hook {\n return data => {\n const { namespace } = name.match(/enter/i) ? data.next : data.current;\n const view = this.byNamespace.get(namespace);\n\n // TODO: manage self\u2026\n // if (view && data.trigger !== 'self') {\n if (view && view[name]) {\n return runAsync(view[name], view)(data);\n }\n\n return Promise.resolve();\n };\n }\n}\n", "// Element.prototype.matches polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\nif (!Element.prototype.matches) {\n Element.prototype.matches =\n (Element as any).prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n\n// Element.prototype.closest polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\nif (!Element.prototype.closest) {\n Element.prototype.closest = function closest(s: string) {\n let el = this;\n\n do {\n if (el.matches(s)) {\n return el;\n }\n\n el = (el.parentElement || el.parentNode) as Element;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n };\n}\n", "/**\n * @module core/schemas\n */\n\n// Definitions\nimport { ISchemaPage } from '../defs';\n\n/**\n * See [[ISchemaPage]]\n */\nexport const schemaPage: ISchemaPage = {\n container: null,\n html: '',\n namespace: '',\n url: {\n hash: '',\n href: '',\n path: '',\n port: null,\n query: {},\n },\n};\n", "/**\n * @barba/core\n *

\n * ## Barba core object\n *\n * Main methods:\n *\n * - `.init()` for initialization with options\n * - `.use()` for plugins\n *\n * @module core\n */\n\n/***/\n\nimport { version } from '../package.json';\n// Definitions\nimport {\n IBarbaOptions,\n IBarbaPlugin,\n IgnoreOption,\n ISchemaPage,\n ITransitionData,\n ITransitionOnce,\n ITransitionPage,\n Link,\n LinkEvent,\n RequestCustomError,\n RequestErrorOrResponse,\n SchemaAttributeValues,\n Trigger,\n Wrapper,\n} from './defs';\n// Hooks\nimport { hooks } from './hooks';\n// Modules\nimport { Cache } from './modules/Cache';\nimport { Logger } from './modules/Logger';\nimport { Prevent } from './modules/Prevent';\nimport { Transitions } from './modules/Transitions';\nimport { Views } from './modules/Views';\n// Polyfills\nimport './polyfills';\n// Schemas\nimport { schemaAttribute } from './schemas/attribute';\nimport { schemaPage } from './schemas/page';\n// Utils\nimport { dom, helpers, history, request, url } from './utils';\n\nexport class Core {\n /**\n * Version.\n */\n public version: string = version;\n /**\n * Schemas.\n */\n public schemaPage: ISchemaPage = schemaPage;\n /**\n * Logger class, allows plugins to create Logger.\n */\n public Logger: typeof Logger = Logger;\n /**\n * Barba logger.\n */\n public logger: Logger = new Logger('@barba/core');\n /**\n * Plugins.\n */\n public plugins: Array> = [];\n /**\n * Options\n */\n public timeout: number;\n public cacheIgnore: IgnoreOption;\n public prefetchIgnore: IgnoreOption;\n public preventRunning: boolean;\n /**\n * Hooks\n */\n public hooks = hooks;\n /**\n * Modules.\n */\n // public history: History;\n public cache: Cache;\n public prevent: Prevent;\n public transitions: Transitions;\n public views: Views;\n /**\n * Utils.\n */\n public dom = dom;\n public helpers = helpers;\n public history = history;\n public request = request;\n public url = url;\n\n private _data: ITransitionData;\n private _requestCustomError: RequestCustomError;\n private _wrapper: Wrapper;\n\n /**\n * ### Init plugin with options.\n *\n * See [[IBarbaPlugin]] for more details.\n */\n public use(plugin: IBarbaPlugin, options?: T): void {\n const installedPlugins = this.plugins;\n\n // Plugin installation\n if (installedPlugins.indexOf(plugin) > -1) {\n this.logger.warn(`Plugin [${plugin.name}] already installed.`);\n\n return;\n }\n\n if (typeof plugin.install !== 'function') {\n this.logger.warn(`Plugin [${plugin.name}] has no \"install\" method.`);\n\n return;\n }\n\n plugin.install(this, options);\n installedPlugins.push(plugin);\n }\n\n /**\n * ### Init barba with options.\n *\n * See [[IBarbaOptions]] for more details.\n *\n * Default values are:\n *\n * - transitions: `[]`\n * - views: `[]`\n * - schema: [[SchemaAttribute]]\n * - timeout: `2e3`\n * - cacheIgnore: `false`\n * - prefetchIgnore: `false`\n * - preventRunning: `false`\n * - prevent: `null`,\n * - debug: `false`\n * - logLevel: `'debug'`\n */\n public init(\n /** @ignore */ {\n transitions = [],\n views = [],\n schema = schemaAttribute,\n requestError,\n timeout = 2e3,\n cacheIgnore = false,\n prefetchIgnore = false,\n /* istanbul ignore next */\n preventRunning = false,\n prevent: preventCustom = null,\n debug = false,\n logLevel = 'off',\n }: IBarbaOptions = {}\n ) {\n // 0. Set logger level and print version\n Logger.setLevel(debug === true ? 'debug' : logLevel);\n this.logger.info(this.version);\n\n // 1. Manage options\n Object.keys(schema).forEach(k => {\n const attr = k as SchemaAttributeValues;\n\n /* istanbul ignore else */\n if (schemaAttribute[attr]) {\n schemaAttribute[attr] = schema[attr];\n }\n });\n this._requestCustomError = requestError;\n this.timeout = timeout;\n this.cacheIgnore = cacheIgnore;\n this.prefetchIgnore = prefetchIgnore;\n this.preventRunning = preventRunning;\n\n // 2. Get and check wrapper\n this._wrapper = this.dom.getWrapper();\n if (!this._wrapper) {\n throw new Error('[@barba/core] No Barba wrapper found');\n }\n this._wrapper.setAttribute('aria-live', 'polite'); // A11y\n\n // 3. Init pages (get \"current\" data)\n this._resetData();\n\n const { current } = this.data;\n\n if (!current.container) {\n throw new Error('[@barba/core] No Barba container found');\n }\n\n // 4. Init other modules\n this.cache = new Cache(cacheIgnore);\n this.prevent = new Prevent(prefetchIgnore);\n this.transitions = new Transitions(transitions);\n this.views = new Views(views);\n\n // Add prevent custom\n if (preventCustom !== null) {\n if (typeof preventCustom !== 'function') {\n throw new Error('[@barba/core] Prevent should be a function');\n }\n\n this.prevent.add('preventCustom', preventCustom);\n }\n\n // 5. Use \"current\" data\n // Init history\n this.history.init(current.url.href, current.namespace);\n // Add to cache\n // TODO: do not cache renderer HTML, only request results\u2026\n // this.cache.set(current.url.href, Promise.resolve(current.html), 'init');\n\n // 6. Bind context\n this._onLinkEnter = this._onLinkEnter.bind(this);\n this._onLinkClick = this._onLinkClick.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._bind();\n\n // 7. Init plugins\n this.plugins.forEach(plugin => plugin.init());\n\n // 8. Barba ready\n // Set next + trigger for once and `beforeEnter`/`afterEnter` view on page load.\n const onceData = this.data;\n\n onceData.trigger = 'barba';\n onceData.next = onceData.current;\n onceData.current = { ...this.schemaPage };\n this.hooks.do('ready', onceData);\n\n // 9. Finally, do once\u2026\n this.once(onceData);\n\n // Clean data for first barba transition\u2026\n this._resetData();\n }\n\n public destroy(): void {\n this._resetData();\n this._unbind();\n this.history.clear();\n this.hooks.clear();\n this.plugins = [];\n }\n\n get data(): ITransitionData {\n return this._data;\n }\n\n get wrapper(): HTMLElement {\n return this._wrapper;\n }\n\n /**\n * ### Force a page change without Barba transition.\n */\n public force(href: string): void {\n // DEV\n // Can be used waiting animation cancellation management\u2026\n window.location.assign(href);\n }\n\n /**\n * ### Go for a Barba transition.\n *\n * Manage \"self page\" href:\n *\n * - if same url and no self transition, keep default behavior\n * - link: reload the page\n * - anchor: scroll to\n * - if same url with self transition, use it\n * - then start a page transition.\n */\n public go(\n href: string,\n trigger: Trigger = 'barba',\n e?: LinkEvent | PopStateEvent\n ): Promise {\n // If animation running, force reload\n if (this.transitions.isRunning) {\n this.force(href);\n\n return;\n }\n\n let self = false;\n\n // Check prevent sameURL against current history\n // + state check\n // + update trigger with direction\n if (trigger === 'popstate') {\n self =\n this.history.current &&\n this.url.getPath(this.history.current.url) === this.url.getPath(href);\n } else {\n self = this.prevent.run('sameUrl', null, null, href);\n }\n\n if (self && !this.transitions.hasSelf) {\n return;\n }\n\n trigger = this.history.change(href, trigger, e);\n\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n return this.page(href, trigger, self);\n }\n\n /**\n * ### Start an \"once\" transition.\n *\n * If some registered \"once\" transition,\n * get the \"resolved\" transition from the store and start it.\n */\n public async once(readyData: ITransitionData): Promise {\n await this.hooks.do('beforeEnter', readyData);\n\n // Check if once transition\n if (this.transitions.hasOnce) {\n const transition = this.transitions.get(readyData, {\n once: true,\n }) as ITransitionOnce;\n\n await this.transitions.doOnce({ transition, data: readyData });\n }\n\n await this.hooks.do('afterEnter', readyData);\n }\n\n /**\n * ### Start a \"page\" transition.\n *\n * 1. If no running transition, updates data with full URL properties and trigger.\n * 2. Get page from cache or init request.\n * 3. Wait if some transitions need \"next\" data (`sync: true`, `to: \u2026`).\n * 4. Manage the history, depending on trigger.\n * 5. Get \"data\" and trigger \"go\" hook.\n * 6. Get the \"resolved\" transition from the store and start it.\n * 7. Update title and reset data (current, next = undefined).\n *\n * > If \"self\", use the \"self\" transition\n */\n public async page(\n href: string,\n trigger: Trigger,\n self: boolean\n ): Promise {\n this.data.next.url = {\n href,\n ...this.url.parse(href),\n };\n this.data.trigger = trigger;\n\n const page = this.cache.has(href)\n ? this.cache.update(href, { action: 'click' }).request\n : this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, trigger)\n ),\n 'click'\n ).request;\n\n // Need to wait before getting the right transition\n if (this.transitions.shouldWait) {\n await helpers.update(page, this.data);\n }\n\n const data = this.data;\n\n // Hook: between trigger and transition\n // Can be used to resolve \"route\"\u2026\n await this.hooks.do('page', data);\n\n try {\n const transition = this.transitions.get(data, {\n once: false,\n self,\n }) as ITransitionPage;\n\n await this.transitions.doPage({\n data,\n page,\n transition,\n wrapper: this._wrapper,\n });\n\n this._resetData();\n } catch (error) {\n // Something went wrong (rejected promise, error, 404, 505, other\u2026)\n // TODO: manage / use cases for cancellation\n // this.logger.debug('Transition cancelled');\n\n // If transition error and no debug mode, force reload page.\n /* istanbul ignore else */\n if (Logger.getLevel() === 0) {\n this.force(data.current.url.href);\n }\n }\n }\n\n /**\n * When a request error occurs.\n *\n * Allow the user to manage request error. (E.g: 404)\n */\n public onRequestError(trigger: Trigger, ...args: any): boolean {\n // Cancel transition status\n this.transitions.isRunning = false;\n\n const [href, response]: [string, RequestErrorOrResponse] = args;\n const action = this.cache.getAction(href);\n this.cache.delete(href);\n\n // Custom requestError returning false will return here.\n if (\n this._requestCustomError &&\n this._requestCustomError(trigger, action, href, response) === false\n ) {\n return false;\n }\n\n // Force page change\n if (action === 'click') {\n this.force(href);\n }\n return false;\n }\n\n /**\n * Programmatically prefetch\n */\n public prefetch(href: string) {\n // Already in cache\n /* istanbul ignore next */\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, 'barba')\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'prefetch'\n );\n }\n\n /**\n * Bind event listeners.\n */\n private _bind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.addEventListener('mouseover', this._onLinkEnter);\n document.addEventListener('touchstart', this._onLinkEnter);\n }\n document.addEventListener('click', this._onLinkClick);\n window.addEventListener('popstate', this._onStateChange);\n }\n\n /**\n * Bind event listeners.\n */\n private _unbind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.removeEventListener('mouseover', this._onLinkEnter);\n document.removeEventListener('touchstart', this._onLinkEnter);\n }\n document.removeEventListener('click', this._onLinkClick);\n window.removeEventListener('popstate', this._onStateChange);\n }\n\n /**\n * When a element is entered.\n *\n * Get valid link element.\n * Cache URL if needed.\n */\n private _onLinkEnter(e: LinkEvent): void {\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n const href = this.dom.getHref(link);\n\n if (this.prevent.checkHref(href)) {\n return;\n }\n\n // Already in cache\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, link)\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'enter'\n );\n }\n\n /**\n * When an element is clicked.\n *\n * Get valid link element.\n * Prevent same URL.\n * Go for a Barba transition.\n */\n private _onLinkClick(e: LinkEvent): void {\n // This use `prevent.checkLink` under the hood to get eligible link.\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n if (this.transitions.isRunning && this.preventRunning) {\n e.preventDefault();\n e.stopPropagation();\n\n return;\n }\n\n this.go(this.dom.getHref(link), link, e);\n }\n\n /**\n * When History state changes.\n *\n * Get \"href\" from URL\n * Go for a Barba transition.\n */\n private _onStateChange(e: PopStateEvent): void {\n this.go(this.url.getHref(), 'popstate', e);\n }\n\n /**\n * Get a valid link ancestor.\n *\n * Check for a \"href\" attribute.\n * Then check if eligible for Barba.\n */\n private _getLinkElement(e: LinkEvent): Link {\n let el = e.target as Link;\n\n while (el && !this.dom.getHref(el)) {\n el = (el as HTMLElement).parentNode as Link;\n }\n\n // Check prevent\n if (!el || this.prevent.checkLink(el, e, this.dom.getHref(el))) {\n return;\n }\n\n return el;\n }\n\n /**\n * Reset pages data.\n *\n * Set \"current\" and unset \"next\".\n */\n private _resetData() {\n const href = this.url.getHref();\n const current = {\n container: this.dom.getContainer(),\n html: this.dom.getHtml(),\n namespace: this.dom.getNamespace(),\n url: {\n href,\n ...this.url.parse(href),\n },\n };\n\n this._data = {\n current,\n next: { ...this.schemaPage },\n trigger: undefined,\n };\n\n this.hooks.do('reset', this.data);\n }\n}\n\nconst core = new Core();\n\nexport default core;\n", "!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", "import { module } from 'modujs';\nimport barba from '@barba/core';\nimport config from '../config'\n\nexport default class extends module {\n constructor(m) {\n super(m);\n }\n\n init() {\n this.barba = barba.init({\n debug: config.IS_DEV,\n schema: {\n prefix: 'data-load',\n },\n transitions: [{\n name: 'default-transition',\n beforeLeave: () => {\n },\n leave: (data) => {\n this.call('destroy', data.current.container, 'app');\n },\n beforeEnter: () => {\n },\n enter: (data) => {\n this.call('update', data.next.container, 'app');\n }\n }]\n });\n\n console.log('init', this.barba, barba)\n\n }\n}\n", "const env = process.env.NODE_ENV\n\nexport default config = {\n\n // Env\n ENV: env,\n IS_PROD: env === 'production',\n IS_DEV: env === 'development',\n\n // Classnames\n CLASS: {\n LOADING: 'is-loading',\n READY: 'is-ready',\n LOADED: 'is-loaded'\n }\n}\n", "const LAZY_LOADED_IMAGES = []\n\nexport function loadImage(url, options = {}) {\n return new Promise((resolve, reject) => {\n const $img = new Image();\n\n if (options.crossOrigin) {\n $img.crossOrigin = options.crossOrigin;\n }\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 the given image.\n *\n * @param {HTMLImageElement} $el - The image element.\n * @param {?string} url - The URI to lazy load into $el.\n * If falsey, the value of the `data-src` attribute on $el will be used as the URI.\n * @param {?function} callback - A function to call when the image is loaded.\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\n if (!loadedImage.url) {\n return;\n }\n\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 = $el.closest('.c-lazy');\n\n if(lazyParent) {\n lazyParent.classList.add('-lazy-loaded')\n lazyParent.style.backgroundImage = ''\n }\n\n $el.classList.add('-lazy-loaded')\n\n callback?.()\n })\n}\n", "/* locomotive-scroll v4.1.3 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar defaults = {\n el: document,\n name: 'scroll',\n offset: [0, 0],\n repeat: false,\n smooth: false,\n initPosition: {\n x: 0,\n y: 0\n },\n direction: 'vertical',\n gestureDirection: 'vertical',\n reloadOnContextChange: false,\n lerp: 0.1,\n \"class\": 'is-inview',\n scrollbarContainer: false,\n scrollbarClass: 'c-scrollbar',\n scrollingClass: 'has-scroll-scrolling',\n draggingClass: 'has-scroll-dragging',\n smoothClass: 'has-scroll-smooth',\n initClass: 'has-scroll-init',\n getSpeed: false,\n getDirection: false,\n scrollFromAnywhere: false,\n multiplier: 1,\n firefoxMultiplier: 50,\n touchMultiplier: 2,\n resetNativeScroll: true,\n tablet: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical',\n breakpoint: 1024\n },\n smartphone: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical'\n }\n};\n\nvar _default = /*#__PURE__*/function () {\n function _default() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n this.namespace = 'locomotive';\n this.html = document.documentElement;\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.els = {};\n this.currentElements = {};\n this.listeners = {};\n this.hasScrollTicking = false;\n this.hasCallEventSet = false;\n this.checkScroll = this.checkScroll.bind(this);\n this.checkResize = this.checkResize.bind(this);\n this.checkEvent = this.checkEvent.bind(this);\n this.instance = {\n scroll: {\n x: 0,\n y: 0\n },\n limit: {\n x: this.html.offsetWidth,\n y: this.html.offsetHeight\n },\n currentElements: this.currentElements\n };\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (this.isMobile) this.direction = this[this.context].direction;\n\n if (this.direction === 'horizontal') {\n this.directionAxis = 'x';\n } else {\n this.directionAxis = 'y';\n }\n\n if (this.getDirection) {\n this.instance.direction = null;\n }\n\n if (this.getDirection) {\n this.instance.speed = 0;\n }\n\n this.html.classList.add(this.initClass);\n window.addEventListener('resize', this.checkResize, false);\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.initEvents();\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n this.dispatchScroll();\n }\n }, {\n key: \"checkResize\",\n value: function checkResize() {\n var _this = this;\n\n if (!this.resizeTick) {\n this.resizeTick = true;\n requestAnimationFrame(function () {\n _this.resize();\n\n _this.resizeTick = false;\n });\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {}\n }, {\n key: \"checkContext\",\n value: function checkContext() {\n if (!this.reloadOnContextChange) return;\n this.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || this.windowWidth < this.tablet.breakpoint;\n this.isTablet = this.isMobile && this.windowWidth >= this.tablet.breakpoint;\n var oldContext = this.context;\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (oldContext != this.context) {\n var oldSmooth = oldContext == 'desktop' ? this.smooth : this[oldContext].smooth;\n var newSmooth = this.context == 'desktop' ? this.smooth : this[this.context].smooth;\n if (oldSmooth != newSmooth) window.location.reload();\n }\n }\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this2 = this;\n\n this.scrollToEls = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-to]\"));\n this.setScrollTo = this.setScrollTo.bind(this);\n this.scrollToEls.forEach(function (el) {\n el.addEventListener('click', _this2.setScrollTo, false);\n });\n }\n }, {\n key: \"setScrollTo\",\n value: function setScrollTo(event) {\n event.preventDefault();\n this.scrollTo(event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-href\")) || event.currentTarget.getAttribute('href'), {\n offset: event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-offset\"))\n });\n }\n }, {\n key: \"addElements\",\n value: function addElements() {}\n }, {\n key: \"detectElements\",\n value: function detectElements(hasCallEventSet) {\n var _this3 = this;\n\n var scrollTop = this.instance.scroll.y;\n var scrollBottom = scrollTop + this.windowHeight;\n var scrollLeft = this.instance.scroll.x;\n var scrollRight = scrollLeft + this.windowWidth;\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n if (el && (!el.inView || hasCallEventSet)) {\n if (_this3.direction === 'horizontal') {\n if (scrollRight >= el.left && scrollLeft < el.right) {\n _this3.setInView(el, i);\n }\n } else {\n if (scrollBottom >= el.top && scrollTop < el.bottom) {\n _this3.setInView(el, i);\n }\n }\n }\n\n if (el && el.inView) {\n if (_this3.direction === 'horizontal') {\n var width = el.right - el.left;\n el.progress = (_this3.instance.scroll.x - (el.left - _this3.windowWidth)) / (width + _this3.windowWidth);\n\n if (scrollRight < el.left || scrollLeft > el.right) {\n _this3.setOutOfView(el, i);\n }\n } else {\n var height = el.bottom - el.top;\n el.progress = (_this3.instance.scroll.y - (el.top - _this3.windowHeight)) / (height + _this3.windowHeight);\n\n if (scrollBottom < el.top || scrollTop > el.bottom) {\n _this3.setOutOfView(el, i);\n }\n }\n }\n }); // this.els = this.els.filter((current, i) => {\n // return current !== null;\n // });\n\n this.hasScrollTicking = false;\n }\n }, {\n key: \"setInView\",\n value: function setInView(current, i) {\n this.els[i].inView = true;\n current.el.classList.add(current[\"class\"]);\n this.currentElements[i] = current;\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'enter');\n\n if (!current.repeat) {\n this.els[i].call = false;\n }\n } // if (!current.repeat && !current.speed && !current.sticky) {\n // if (!current.call || current.call && this.hasCallEventSet) {\n // this.els[i] = null\n // }\n // }\n\n }\n }, {\n key: \"setOutOfView\",\n value: function setOutOfView(current, i) {\n var _this4 = this;\n\n // if (current.repeat || current.speed !== undefined) {\n this.els[i].inView = false; // }\n\n Object.keys(this.currentElements).forEach(function (el) {\n el === i && delete _this4.currentElements[el];\n });\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'exit');\n }\n\n if (current.repeat) {\n current.el.classList.remove(current[\"class\"]);\n }\n }\n }, {\n key: \"dispatchCall\",\n value: function dispatchCall(current, way) {\n this.callWay = way;\n this.callValue = current.call.split(',').map(function (item) {\n return item.trim();\n });\n this.callObj = current;\n if (this.callValue.length == 1) this.callValue = this.callValue[0];\n var callEvent = new Event(this.namespace + 'call');\n this.el.dispatchEvent(callEvent);\n }\n }, {\n key: \"dispatchScroll\",\n value: function dispatchScroll() {\n var scrollEvent = new Event(this.namespace + 'scroll');\n this.el.dispatchEvent(scrollEvent);\n }\n }, {\n key: \"setEvents\",\n value: function setEvents(event, func) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n\n var list = this.listeners[event];\n list.push(func);\n\n if (list.length === 1) {\n this.el.addEventListener(this.namespace + event, this.checkEvent, false);\n }\n\n if (event === 'call') {\n this.hasCallEventSet = true;\n this.detectElements(true);\n }\n }\n }, {\n key: \"unsetEvents\",\n value: function unsetEvents(event, func) {\n if (!this.listeners[event]) return;\n var list = this.listeners[event];\n var index = list.indexOf(func);\n if (index < 0) return;\n list.splice(index, 1);\n\n if (list.index === 0) {\n this.el.removeEventListener(this.namespace + event, this.checkEvent, false);\n }\n }\n }, {\n key: \"checkEvent\",\n value: function checkEvent(event) {\n var _this5 = this;\n\n var name = event.type.replace(this.namespace, '');\n var list = this.listeners[name];\n if (!list || list.length === 0) return;\n list.forEach(function (func) {\n switch (name) {\n case 'scroll':\n return func(_this5.instance);\n\n case 'call':\n return func(_this5.callValue, _this5.callWay, _this5.callObj);\n\n default:\n return func();\n }\n });\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {}\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {}\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance.scroll = {\n x: 0,\n y: 0\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n\n window.removeEventListener('resize', this.checkResize, false);\n Object.keys(this.listeners).forEach(function (event) {\n _this6.el.removeEventListener(_this6.namespace + event, _this6.checkEvent, false);\n });\n this.listeners = {};\n this.scrollToEls.forEach(function (el) {\n el.removeEventListener('click', _this6.setScrollTo, false);\n });\n this.html.classList.remove(this.initClass);\n }\n }]);\n\n return _default;\n}();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar smoothscroll = createCommonjsModule(function (module, exports) {\n/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n {\n // commonjs\n module.exports = { polyfill: polyfill };\n }\n\n}());\n});\nvar smoothscroll_1 = smoothscroll.polyfill;\n\nvar _default$1 = /*#__PURE__*/function (_Core) {\n _inherits(_default, _Core);\n\n var _super = _createSuper(_default);\n\n function _default() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n _this = _super.call(this, options);\n\n if (_this.resetNativeScroll) {\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual';\n }\n\n window.scrollTo(0, 0);\n }\n\n window.addEventListener('scroll', _this.checkScroll, false);\n\n if (window.smoothscrollPolyfill === undefined) {\n window.smoothscrollPolyfill = smoothscroll;\n window.smoothscrollPolyfill.polyfill();\n }\n\n return _this;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.instance.scroll.y = window.pageYOffset;\n this.addElements();\n this.detectElements();\n\n _get(_getPrototypeOf(_default.prototype), \"init\", this).call(this);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this2 = this;\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.instance.scroll.y = window.pageYOffset;\n\n if (Object.entries(this.els).length) {\n if (!this.hasScrollTicking) {\n requestAnimationFrame(function () {\n _this2.detectElements();\n });\n this.hasScrollTicking = true;\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (window.pageYOffset > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (window.pageYOffset < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (window.pageYOffset != this.instance.scroll.y) {\n this.instance.speed = (window.pageYOffset - this.instance.scroll.y) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n if (Object.entries(this.els).length) {\n this.windowHeight = window.innerHeight;\n this.updateElements();\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this3 = this;\n\n this.els = {};\n var els = this.el.querySelectorAll('[data-' + this.name + ']');\n els.forEach(function (el, index) {\n var BCR = el.getBoundingClientRect();\n var cl = el.dataset[_this3.name + 'Class'] || _this3[\"class\"];\n var id = typeof el.dataset[_this3.name + 'Id'] === 'string' ? el.dataset[_this3.name + 'Id'] : index;\n var top;\n var left;\n var offset = typeof el.dataset[_this3.name + 'Offset'] === 'string' ? el.dataset[_this3.name + 'Offset'].split(',') : _this3.offset;\n var repeat = el.dataset[_this3.name + 'Repeat'];\n var call = el.dataset[_this3.name + 'Call'];\n var target = el.dataset[_this3.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n top = targetElBCR.top + _this3.instance.scroll.y;\n left = targetElBCR.left + _this3.instance.scroll.x;\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this3.repeat;\n }\n\n var relativeOffset = _this3.getRelativeOffset(offset);\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n var mappedEl = {\n el: el,\n targetEl: targetEl,\n id: id,\n \"class\": cl,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call\n };\n _this3.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this3.setInView(_this3.els[id], id);\n }\n });\n }\n }, {\n key: \"updateElements\",\n value: function updateElements() {\n var _this4 = this;\n\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n var top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y;\n\n var bottom = top + el.targetEl.offsetHeight;\n\n var relativeOffset = _this4.getRelativeOffset(el.offset);\n\n _this4.els[i].top = top + relativeOffset[0];\n _this4.els[i].bottom = bottom - relativeOffset[1];\n });\n this.hasScrollTicking = false;\n }\n }, {\n key: \"getRelativeOffset\",\n value: function getRelativeOffset(offset) {\n var relativeOffset = [0, 0];\n\n if (offset) {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * this.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n }\n\n return relativeOffset;\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = this.html;\n } else if (target === 'bottom') {\n target = this.html.offsetHeight - window.innerHeight;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n offset = target.getBoundingClientRect().top + offset + this.instance.scroll.y;\n } else {\n offset = target + offset;\n }\n\n var isTargetReached = function isTargetReached() {\n return parseInt(window.pageYOffset) === parseInt(offset);\n };\n\n if (callback) {\n if (isTargetReached()) {\n callback();\n return;\n } else {\n var onScroll = function onScroll() {\n if (isTargetReached()) {\n window.removeEventListener('scroll', onScroll);\n callback();\n }\n };\n\n window.addEventListener('scroll', onScroll);\n }\n }\n\n window.scrollTo({\n top: offset,\n behavior: options.duration === 0 ? 'auto' : 'smooth'\n });\n }\n }, {\n key: \"update\",\n value: function update() {\n this.addElements();\n this.detectElements();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n window.removeEventListener('scroll', this.checkScroll, false);\n }\n }]);\n\n return _default;\n}(_default);\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nvar tinyEmitter = E;\n\nvar lethargy = createCommonjsModule(function (module, exports) {\n// Generated by CoffeeScript 1.9.2\n(function() {\n var root;\n\n root = exports !== null ? exports : this;\n\n root.Lethargy = (function() {\n function Lethargy(stability, sensitivity, tolerance, delay) {\n this.stability = stability != null ? Math.abs(stability) : 8;\n this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100;\n this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1;\n this.delay = delay != null ? delay : 150;\n this.lastUpDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.lastDownDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.deltasTimestamp = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n }\n\n Lethargy.prototype.check = function(e) {\n var lastDelta;\n e = e.originalEvent || e;\n if (e.wheelDelta != null) {\n lastDelta = e.wheelDelta;\n } else if (e.deltaY != null) {\n lastDelta = e.deltaY * -40;\n } else if ((e.detail != null) || e.detail === 0) {\n lastDelta = e.detail * -40;\n }\n this.deltasTimestamp.push(Date.now());\n this.deltasTimestamp.shift();\n if (lastDelta > 0) {\n this.lastUpDeltas.push(lastDelta);\n this.lastUpDeltas.shift();\n return this.isInertia(1);\n } else {\n this.lastDownDeltas.push(lastDelta);\n this.lastDownDeltas.shift();\n return this.isInertia(-1);\n }\n };\n\n Lethargy.prototype.isInertia = function(direction) {\n var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum;\n lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas;\n if (lastDeltas[0] === null) {\n return direction;\n }\n if (this.deltasTimestamp[(this.stability * 2) - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[(this.stability * 2) - 1]) {\n return false;\n }\n lastDeltasOld = lastDeltas.slice(0, this.stability);\n lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2);\n oldSum = lastDeltasOld.reduce(function(t, s) {\n return t + s;\n });\n newSum = lastDeltasNew.reduce(function(t, s) {\n return t + s;\n });\n oldAverage = oldSum / lastDeltasOld.length;\n newAverage = newSum / lastDeltasNew.length;\n if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && (this.sensitivity < Math.abs(newAverage))) {\n return direction;\n } else {\n return false;\n }\n };\n\n Lethargy.prototype.showLastUpDeltas = function() {\n return this.lastUpDeltas;\n };\n\n Lethargy.prototype.showLastDownDeltas = function() {\n return this.lastDownDeltas;\n };\n\n return Lethargy;\n\n })();\n\n}).call(commonjsGlobal);\n});\n\nvar support = (function getSupport() {\n return {\n hasWheelEvent: 'onwheel' in document,\n hasMouseWheelEvent: 'onmousewheel' in document,\n hasTouch: ('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,\n hasTouchWin: navigator.msMaxTouchPoints && navigator.msMaxTouchPoints > 1,\n hasPointer: !!window.navigator.msPointerEnabled,\n hasKeyDown: 'onkeydown' in document,\n isFirefox: navigator.userAgent.indexOf('Firefox') > -1\n };\n})();\n\nvar toString = Object.prototype.toString,\n hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\nvar bindallStandalone = function(object) {\n if(!object) return console.warn('bindAll requires at least one argument.');\n\n var functions = Array.prototype.slice.call(arguments, 1);\n\n if (functions.length === 0) {\n\n for (var method in object) {\n if(hasOwnProperty$1.call(object, method)) {\n if(typeof object[method] == 'function' && toString.call(object[method]) == \"[object Function]\") {\n functions.push(method);\n }\n }\n }\n }\n\n for(var i = 0; i < functions.length; i++) {\n var f = functions[i];\n object[f] = bind(object[f], object);\n }\n};\n\n/*\n Faster bind without specific-case checking. (see https://coderwall.com/p/oi3j3w).\n bindAll is only needed for events binding so no need to make slow fixes for constructor\n or partial application.\n*/\nfunction bind(func, context) {\n return function() {\n return func.apply(context, arguments);\n };\n}\n\nvar Lethargy = lethargy.Lethargy;\n\n\n\nvar EVT_ID = 'virtualscroll';\n\nvar src = VirtualScroll;\n\nvar keyCodes = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SPACE: 32\n};\n\nfunction VirtualScroll(options) {\n bindallStandalone(this, '_onWheel', '_onMouseWheel', '_onTouchStart', '_onTouchMove', '_onKeyDown');\n\n this.el = window;\n if (options && options.el) {\n this.el = options.el;\n delete options.el;\n }\n this.options = objectAssign({\n mouseMultiplier: 1,\n touchMultiplier: 2,\n firefoxMultiplier: 15,\n keyStep: 120,\n preventTouch: false,\n unpreventTouchClass: 'vs-touchmove-allowed',\n limitInertia: false,\n useKeyboard: true,\n useTouch: true\n }, options);\n\n if (this.options.limitInertia) this._lethargy = new Lethargy();\n\n this._emitter = new tinyEmitter();\n this._event = {\n y: 0,\n x: 0,\n deltaX: 0,\n deltaY: 0\n };\n this.touchStartX = null;\n this.touchStartY = null;\n this.bodyTouchAction = null;\n\n if (this.options.passive !== undefined) {\n this.listenerOptions = {passive: this.options.passive};\n }\n}\n\nVirtualScroll.prototype._notify = function(e) {\n var evt = this._event;\n evt.x += evt.deltaX;\n evt.y += evt.deltaY;\n\n this._emitter.emit(EVT_ID, {\n x: evt.x,\n y: evt.y,\n deltaX: evt.deltaX,\n deltaY: evt.deltaY,\n originalEvent: e\n });\n};\n\nVirtualScroll.prototype._onWheel = function(e) {\n var options = this.options;\n if (this._lethargy && this._lethargy.check(e) === false) return;\n var evt = this._event;\n\n // In Chrome and in Firefox (at least the new one)\n evt.deltaX = e.wheelDeltaX || e.deltaX * -1;\n evt.deltaY = e.wheelDeltaY || e.deltaY * -1;\n\n // for our purpose deltamode = 1 means user is on a wheel mouse, not touch pad\n // real meaning: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent#Delta_modes\n if(support.isFirefox && e.deltaMode == 1) {\n evt.deltaX *= options.firefoxMultiplier;\n evt.deltaY *= options.firefoxMultiplier;\n }\n\n evt.deltaX *= options.mouseMultiplier;\n evt.deltaY *= options.mouseMultiplier;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onMouseWheel = function(e) {\n if (this.options.limitInertia && this._lethargy.check(e) === false) return;\n\n var evt = this._event;\n\n // In Safari, IE and in Chrome if 'wheel' isn't defined\n evt.deltaX = (e.wheelDeltaX) ? e.wheelDeltaX : 0;\n evt.deltaY = (e.wheelDeltaY) ? e.wheelDeltaY : e.wheelDelta;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onTouchStart = function(e) {\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n};\n\nVirtualScroll.prototype._onTouchMove = function(e) {\n var options = this.options;\n if(options.preventTouch\n && !e.target.classList.contains(options.unpreventTouchClass)) {\n e.preventDefault();\n }\n\n var evt = this._event;\n\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n\n evt.deltaX = (t.pageX - this.touchStartX) * options.touchMultiplier;\n evt.deltaY = (t.pageY - this.touchStartY) * options.touchMultiplier;\n\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onKeyDown = function(e) {\n var evt = this._event;\n evt.deltaX = evt.deltaY = 0;\n var windowHeight = window.innerHeight - 40;\n\n switch(e.keyCode) {\n case keyCodes.LEFT:\n case keyCodes.UP:\n evt.deltaY = this.options.keyStep;\n break;\n\n case keyCodes.RIGHT:\n case keyCodes.DOWN:\n evt.deltaY = - this.options.keyStep;\n break;\n case e.shiftKey:\n evt.deltaY = windowHeight;\n break;\n case keyCodes.SPACE:\n evt.deltaY = - windowHeight;\n break;\n default:\n return;\n }\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._bind = function() {\n if(support.hasWheelEvent) this.el.addEventListener('wheel', this._onWheel, this.listenerOptions);\n if(support.hasMouseWheelEvent) this.el.addEventListener('mousewheel', this._onMouseWheel, this.listenerOptions);\n\n if(support.hasTouch && this.options.useTouch) {\n this.el.addEventListener('touchstart', this._onTouchStart, this.listenerOptions);\n this.el.addEventListener('touchmove', this._onTouchMove, this.listenerOptions);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n this.bodyTouchAction = document.body.style.msTouchAction;\n document.body.style.msTouchAction = 'none';\n this.el.addEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.addEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.addEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype._unbind = function() {\n if(support.hasWheelEvent) this.el.removeEventListener('wheel', this._onWheel);\n if(support.hasMouseWheelEvent) this.el.removeEventListener('mousewheel', this._onMouseWheel);\n\n if(support.hasTouch) {\n this.el.removeEventListener('touchstart', this._onTouchStart);\n this.el.removeEventListener('touchmove', this._onTouchMove);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n document.body.style.msTouchAction = this.bodyTouchAction;\n this.el.removeEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.removeEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.removeEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype.on = function(cb, ctx) {\n this._emitter.on(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (events && events[EVT_ID] && events[EVT_ID].length === 1) this._bind();\n};\n\nVirtualScroll.prototype.off = function(cb, ctx) {\n this._emitter.off(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (!events[EVT_ID] || events[EVT_ID].length <= 0) this._unbind();\n};\n\nVirtualScroll.prototype.reset = function() {\n var evt = this._event;\n evt.x = 0;\n evt.y = 0;\n};\n\nVirtualScroll.prototype.destroy = function() {\n this._emitter.off();\n this._unbind();\n};\n\nfunction lerp(start, end, amt) {\n return (1 - amt) * start + amt * end;\n}\n\nfunction getTranslate(el) {\n var translate = {};\n if (!window.getComputedStyle) return;\n var style = getComputedStyle(el);\n var transform = style.transform || style.webkitTransform || style.mozTransform;\n var mat = transform.match(/^matrix3d\\((.+)\\)$/);\n\n if (mat) {\n translate.x = mat ? parseFloat(mat[1].split(', ')[12]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[13]) : 0;\n } else {\n mat = transform.match(/^matrix\\((.+)\\)$/);\n translate.x = mat ? parseFloat(mat[1].split(', ')[4]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[5]) : 0;\n }\n\n return translate;\n}\n\n/**\n * Returns an array containing all the parent nodes of the given node\n * @param {object} node\n * @return {array} parent nodes\n */\nfunction getParents(elem) {\n // Set up a parent array\n var parents = []; // Push each parent element to the array\n\n for (; elem && elem !== document; elem = elem.parentNode) {\n parents.push(elem);\n } // Return our parent array\n\n\n return parents;\n} // https://gomakethings.com/how-to-get-the-closest-parent-element-with-a-matching-selector-using-vanilla-javascript/\n\n/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Ga\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 //Pevent scrollbar glitch/locking\n\n this.startScrollTs = undefined;\n\n if (this.scrollToRaf) {\n cancelAnimationFrame(this.scrollToRaf);\n this.scrollToRaf = null;\n }\n\n this.isScrolling = false;\n this.instance.scroll.y = Math.round(this.instance.scroll.y);\n this.html.classList.remove(this.scrollingClass);\n }\n }, {\n key: \"checkKey\",\n value: function checkKey(e) {\n var _this3 = this;\n\n if (this.stop) {\n // If we are stopped, we don't want any scroll to occur because of a keypress\n // Prevent tab to scroll to activeElement\n if (e.keyCode == keyCodes$1.TAB) {\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0;\n });\n }\n\n return;\n }\n\n switch (e.keyCode) {\n case keyCodes$1.TAB:\n // Do not remove the RAF\n // It allows to override the browser's native scrollTo, which is essential\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0; // Request scrollTo on the focusedElement, putting it at the center of the screen\n\n _this3.scrollTo(document.activeElement, {\n offset: -window.innerHeight / 2\n });\n });\n break;\n\n case keyCodes$1.UP:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] -= 240;\n }\n\n break;\n\n case keyCodes$1.DOWN:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] += 240;\n }\n\n break;\n\n case keyCodes$1.PAGEUP:\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n break;\n\n case keyCodes$1.PAGEDOWN:\n this.instance.delta[this.directionAxis] += window.innerHeight;\n break;\n\n case keyCodes$1.HOME:\n this.instance.delta[this.directionAxis] -= this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.END:\n this.instance.delta[this.directionAxis] += this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.SPACE:\n if (this.isActiveElementScrollSensitive()) {\n if (e.shiftKey) {\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n } else {\n this.instance.delta[this.directionAxis] += window.innerHeight;\n }\n }\n\n break;\n\n default:\n return;\n }\n\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.isScrolling = true;\n this.checkScroll();\n this.html.classList.add(this.scrollingClass);\n }\n }, {\n key: \"isActiveElementScrollSensitive\",\n value: function isActiveElementScrollSensitive() {\n return !(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement) && !(document.activeElement instanceof HTMLButtonElement) && !(document.activeElement instanceof HTMLSelectElement);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this4 = this;\n\n var forced = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (forced || this.isScrolling || this.isDraggingScrollbar) {\n if (!this.hasScrollTicking) {\n this.checkScrollRaf = requestAnimationFrame(function () {\n return _this4.checkScroll();\n });\n this.hasScrollTicking = true;\n }\n\n this.updateScroll();\n var distance = Math.abs(this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]);\n var timeSinceStart = Date.now() - this.startScrollTs; // Get the time since the scroll was started: the scroll can be stopped again only past 100ms\n\n if (!this.animatingScroll && timeSinceStart > 100 && (distance < 0.5 && this.instance.delta[this.directionAxis] != 0 || distance < 0.5 && this.instance.delta[this.directionAxis] == 0)) {\n this.stopScrolling();\n }\n\n Object.entries(this.sections).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n section = _ref2[1];\n\n if (section.persistent || _this4.instance.scroll[_this4.directionAxis] > section.offset[_this4.directionAxis] && _this4.instance.scroll[_this4.directionAxis] < section.limit[_this4.directionAxis]) {\n if (_this4.direction === 'horizontal') {\n _this4.transform(section.el, -_this4.instance.scroll[_this4.directionAxis], 0);\n } else {\n _this4.transform(section.el, 0, -_this4.instance.scroll[_this4.directionAxis]);\n }\n\n if (!section.inView) {\n section.inView = true;\n section.el.style.opacity = 1;\n section.el.style.pointerEvents = 'all';\n section.el.setAttribute(\"data-\".concat(_this4.name, \"-section-inview\"), '');\n }\n } else {\n if (section.inView || forced) {\n section.inView = false;\n section.el.style.opacity = 0;\n section.el.style.pointerEvents = 'none';\n section.el.removeAttribute(\"data-\".concat(_this4.name, \"-section-inview\"));\n }\n\n _this4.transform(section.el, 0, 0);\n }\n });\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.detectElements();\n this.transformElements();\n\n if (this.hasScrollbar) {\n var scrollBarTranslation = this.instance.scroll[this.directionAxis] / this.instance.limit[this.directionAxis] * this.scrollBarLimit[this.directionAxis];\n\n if (this.direction === 'horizontal') {\n this.transform(this.scrollbarThumb, scrollBarTranslation, 0);\n } else {\n this.transform(this.scrollbarThumb, 0, scrollBarTranslation);\n }\n }\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n this.hasScrollTicking = false;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.checkContext();\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.update();\n }\n }, {\n key: \"updateDelta\",\n value: function updateDelta(e) {\n var delta;\n var gestureDirection = this[this.context] && this[this.context].gestureDirection ? this[this.context].gestureDirection : this.gestureDirection;\n\n if (gestureDirection === 'both') {\n delta = e.deltaX + e.deltaY;\n } else if (gestureDirection === 'vertical') {\n delta = e.deltaY;\n } else if (gestureDirection === 'horizontal') {\n delta = e.deltaX;\n } else {\n delta = e.deltaY;\n }\n\n this.instance.delta[this.directionAxis] -= delta * this.multiplier;\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n }\n }, {\n key: \"updateScroll\",\n value: function updateScroll(e) {\n if (this.isScrolling || this.isDraggingScrollbar) {\n this.instance.scroll[this.directionAxis] = lerp(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis], this.lerp);\n } else {\n if (this.instance.scroll[this.directionAxis] > this.instance.limit[this.directionAxis]) {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.limit[this.directionAxis]);\n } else if (this.instance.scroll.y < 0) {\n this.setScroll(this.instance.scroll[this.directionAxis], 0);\n } else {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis]);\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (this.instance.delta.y > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (this.instance.delta.y < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n\n if (this.instance.delta.x > this.instance.scroll.x) {\n if (this.instance.direction !== 'right') {\n this.instance.direction = 'right';\n }\n } else if (this.instance.delta.x < this.instance.scroll.x) {\n if (this.instance.direction !== 'left') {\n this.instance.direction = 'left';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (this.instance.delta[this.directionAxis] != this.instance.scroll[this.directionAxis]) {\n this.instance.speed = (this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"initScrollBar\",\n value: function initScrollBar() {\n this.scrollbar = document.createElement('span');\n this.scrollbarThumb = document.createElement('span');\n this.scrollbar.classList.add(\"\".concat(this.scrollbarClass));\n this.scrollbarThumb.classList.add(\"\".concat(this.scrollbarClass, \"_thumb\"));\n this.scrollbar.append(this.scrollbarThumb);\n\n if (this.scrollbarContainer) {\n this.scrollbarContainer.append(this.scrollbar);\n } else {\n document.body.append(this.scrollbar);\n } // Scrollbar Events\n\n\n this.getScrollBar = this.getScrollBar.bind(this);\n this.releaseScrollBar = this.releaseScrollBar.bind(this);\n this.moveScrollBar = this.moveScrollBar.bind(this);\n this.scrollbarThumb.addEventListener('mousedown', this.getScrollBar);\n window.addEventListener('mouseup', this.releaseScrollBar);\n window.addEventListener('mousemove', this.moveScrollBar); // Set scrollbar values\n\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"reinitScrollBar\",\n value: function reinitScrollBar() {\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"destroyScrollBar\",\n value: function destroyScrollBar() {\n this.scrollbarThumb.removeEventListener('mousedown', this.getScrollBar);\n window.removeEventListener('mouseup', this.releaseScrollBar);\n window.removeEventListener('mousemove', this.moveScrollBar);\n this.scrollbar.remove();\n }\n }, {\n key: \"getScrollBar\",\n value: function getScrollBar(e) {\n this.isDraggingScrollbar = true;\n this.checkScroll();\n this.html.classList.remove(this.scrollingClass);\n this.html.classList.add(this.draggingClass);\n }\n }, {\n key: \"releaseScrollBar\",\n value: function releaseScrollBar(e) {\n this.isDraggingScrollbar = false;\n\n if (this.isScrolling) {\n this.html.classList.add(this.scrollingClass);\n }\n\n this.html.classList.remove(this.draggingClass);\n }\n }, {\n key: \"moveScrollBar\",\n value: function moveScrollBar(e) {\n var _this5 = this;\n\n if (this.isDraggingScrollbar) {\n requestAnimationFrame(function () {\n var x = (e.clientX - _this5.scrollbarBCR.left) * 100 / _this5.scrollbarWidth * _this5.instance.limit.x / 100;\n var y = (e.clientY - _this5.scrollbarBCR.top) * 100 / _this5.scrollbarHeight * _this5.instance.limit.y / 100;\n\n if (y > 0 && y < _this5.instance.limit.y) {\n _this5.instance.delta.y = y;\n }\n\n if (x > 0 && x < _this5.instance.limit.x) {\n _this5.instance.delta.x = x;\n }\n });\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this6 = this;\n\n this.els = {};\n this.parallaxElements = {}; // this.sections.forEach((section, y) => {\n\n var els = this.el.querySelectorAll(\"[data-\".concat(this.name, \"]\"));\n els.forEach(function (el, index) {\n // Try and find the target's parent section\n var targetParents = getParents(el);\n var section = Object.entries(_this6.sections).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n section = _ref4[1];\n\n return section;\n }).find(function (section) {\n return targetParents.includes(section.el);\n });\n var cl = el.dataset[_this6.name + 'Class'] || _this6[\"class\"];\n var id = typeof el.dataset[_this6.name + 'Id'] === 'string' ? el.dataset[_this6.name + 'Id'] : 'el' + index;\n var top;\n var left;\n var repeat = el.dataset[_this6.name + 'Repeat'];\n var call = el.dataset[_this6.name + 'Call'];\n var position = el.dataset[_this6.name + 'Position'];\n var delay = el.dataset[_this6.name + 'Delay'];\n var direction = el.dataset[_this6.name + 'Direction'];\n var sticky = typeof el.dataset[_this6.name + 'Sticky'] === 'string';\n var speed = el.dataset[_this6.name + 'Speed'] ? parseFloat(el.dataset[_this6.name + 'Speed']) / 10 : false;\n var offset = typeof el.dataset[_this6.name + 'Offset'] === 'string' ? el.dataset[_this6.name + 'Offset'].split(',') : _this6.offset;\n var target = el.dataset[_this6.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n\n if (section === null) {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n } else {\n if (!section.inView) {\n top = targetElBCR.top - getTranslate(section.el).y - getTranslate(targetEl).y;\n left = targetElBCR.left - getTranslate(section.el).x - getTranslate(targetEl).x;\n } else {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n }\n }\n\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n var middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n\n if (sticky) {\n var elBCR = el.getBoundingClientRect();\n var elTop = elBCR.top;\n var elLeft = elBCR.left;\n var elDistance = {\n x: elLeft - left,\n y: elTop - top\n };\n top += window.innerHeight;\n left += window.innerWidth;\n bottom = elTop + targetEl.offsetHeight - el.offsetHeight - elDistance[_this6.directionAxis];\n right = elLeft + targetEl.offsetWidth - el.offsetWidth - elDistance[_this6.directionAxis];\n middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n }\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this6.repeat;\n }\n\n var relativeOffset = [0, 0];\n\n if (offset) {\n if (_this6.direction === 'horizontal') {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowWidth / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n left = left + relativeOffset[0];\n right = right - relativeOffset[1];\n } else {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n }\n }\n\n var mappedEl = {\n el: el,\n id: id,\n \"class\": cl,\n section: section,\n top: top,\n middle: middle,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call,\n speed: speed,\n delay: delay,\n position: position,\n target: targetEl,\n direction: direction,\n sticky: sticky\n };\n _this6.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this6.setInView(_this6.els[id], id);\n }\n\n if (speed !== false || sticky) {\n _this6.parallaxElements[id] = mappedEl;\n }\n }); // });\n }\n }, {\n key: \"addSections\",\n value: function addSections() {\n var _this7 = this;\n\n this.sections = {};\n var sections = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-section]\"));\n\n if (sections.length === 0) {\n sections = [this.el];\n }\n\n sections.forEach(function (section, index) {\n var id = typeof section.dataset[_this7.name + 'Id'] === 'string' ? section.dataset[_this7.name + 'Id'] : 'section' + index;\n var sectionBCR = section.getBoundingClientRect();\n var offset = {\n x: sectionBCR.left - window.innerWidth * 1.5 - getTranslate(section).x,\n y: sectionBCR.top - window.innerHeight * 1.5 - getTranslate(section).y\n };\n var limit = {\n x: offset.x + sectionBCR.width + window.innerWidth * 2,\n y: offset.y + sectionBCR.height + window.innerHeight * 2\n };\n var persistent = typeof section.dataset[_this7.name + 'Persistent'] === 'string';\n section.setAttribute('data-scroll-section-id', id);\n var mappedSection = {\n el: section,\n offset: offset,\n limit: limit,\n inView: false,\n persistent: persistent,\n id: id\n };\n _this7.sections[id] = mappedSection;\n });\n }\n }, {\n key: \"transform\",\n value: function transform(element, x, y, delay) {\n var transform;\n\n if (!delay) {\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(x, \",\").concat(y, \",0,1)\");\n } else {\n var start = getTranslate(element);\n var lerpX = lerp(start.x, x, delay);\n var lerpY = lerp(start.y, y, delay);\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(lerpX, \",\").concat(lerpY, \",0,1)\");\n }\n\n element.style.webkitTransform = transform;\n element.style.msTransform = transform;\n element.style.transform = transform;\n }\n }, {\n key: \"transformElements\",\n value: function transformElements(isForced) {\n var _this8 = this;\n\n var setAllElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var scrollRight = this.instance.scroll.x + this.windowWidth;\n var scrollBottom = this.instance.scroll.y + this.windowHeight;\n var scrollMiddle = {\n x: this.instance.scroll.x + this.windowMiddle.x,\n y: this.instance.scroll.y + this.windowMiddle.y\n };\n Object.entries(this.parallaxElements).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n i = _ref6[0],\n current = _ref6[1];\n\n var transformDistance = false;\n\n if (isForced) {\n transformDistance = 0;\n }\n\n if (current.inView || setAllElements) {\n switch (current.position) {\n case 'top':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementTop':\n transformDistance = (scrollBottom - current.top) * -current.speed;\n break;\n\n case 'bottom':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollBottom + _this8.windowHeight) * current.speed;\n break;\n\n case 'left':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementLeft':\n transformDistance = (scrollRight - current.left) * -current.speed;\n break;\n\n case 'right':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollRight + _this8.windowHeight) * current.speed;\n break;\n\n default:\n transformDistance = (scrollMiddle[_this8.directionAxis] - current.middle[_this8.directionAxis]) * -current.speed;\n break;\n }\n }\n\n if (current.sticky) {\n if (current.inView) {\n if (_this8.direction === 'horizontal') {\n transformDistance = _this8.instance.scroll.x - current.left + window.innerWidth;\n } else {\n transformDistance = _this8.instance.scroll.y - current.top + window.innerHeight;\n }\n } else {\n if (_this8.direction === 'horizontal') {\n if (_this8.instance.scroll.x < current.left - window.innerWidth && _this8.instance.scroll.x < current.left - window.innerWidth / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.x > current.right && _this8.instance.scroll.x > current.right + 100) {\n transformDistance = current.right - current.left + window.innerWidth;\n } else {\n transformDistance = false;\n }\n } else {\n if (_this8.instance.scroll.y < current.top - window.innerHeight && _this8.instance.scroll.y < current.top - window.innerHeight / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.y > current.bottom && _this8.instance.scroll.y > current.bottom + 100) {\n transformDistance = current.bottom - current.top + window.innerHeight;\n } else {\n transformDistance = false;\n }\n }\n }\n }\n\n if (transformDistance !== false) {\n if (current.direction === 'horizontal' || _this8.direction === 'horizontal' && current.direction !== 'vertical') {\n _this8.transform(current.el, transformDistance, 0, isForced ? false : current.delay);\n } else {\n _this8.transform(current.el, 0, transformDistance, isForced ? false : current.delay);\n }\n }\n });\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var _this9 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var duration = !isNaN(parseInt(options.duration)) ? parseInt(options.duration) : 1000; // Duration of the scroll animation in milliseconds\n\n var easing = options.easing || [0.25, 0.0, 0.35, 1.0]; // An array of 4 floats between 0 and 1 defining the bezier curve for the animation's easing. See http://greweb.me/bezier-easing-editor/example/\n\n var disableLerp = options.disableLerp ? true : false; // Lerp effect won't be applied if set to true\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n easing = src$1.apply(void 0, _toConsumableArray(easing));\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = 0;\n } else if (target === 'bottom') {\n target = this.instance.limit.y;\n } else if (target === 'left') {\n target = 0;\n } else if (target === 'right') {\n target = this.instance.limit.x;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n // Verify the given target belongs to this scroll scope\n var targetInScope = getParents(target).includes(this.el);\n\n if (!targetInScope) {\n // If the target isn't inside our main element, abort any action\n return;\n } // Get target offset from top\n\n\n var targetBCR = target.getBoundingClientRect();\n var offsetTop = targetBCR.top;\n var offsetLeft = targetBCR.left; // Try and find the target's parent section\n\n var targetParents = getParents(target);\n var parentSection = targetParents.find(function (candidate) {\n return Object.entries(_this9.sections) // Get sections associative array as a regular array\n .map(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n key = _ref8[0],\n section = _ref8[1];\n\n return section;\n }) // map to section only (we dont need the key here)\n .find(function (section) {\n return section.el == candidate;\n }); // finally find the section that matches the candidate\n });\n var parentSectionOffset = 0;\n\n if (parentSection) {\n parentSectionOffset = getTranslate(parentSection)[this.directionAxis]; // We got a parent section, store it's current offset to remove it later\n } else {\n // if no parent section is found we need to use instance scroll directly\n parentSectionOffset = -this.instance.scroll[this.directionAxis];\n } // Final value of scroll destination : offsetTop + (optional offset given in options) - (parent's section translate)\n\n\n if (this.direction === 'horizontal') {\n offset = offsetLeft + offset - parentSectionOffset;\n } else {\n offset = offsetTop + offset - parentSectionOffset;\n }\n } else {\n offset = target + offset;\n } // Actual scrollto\n // ==========================================================================\n // Setup\n\n\n var scrollStart = parseFloat(this.instance.delta[this.directionAxis]);\n var scrollTarget = Math.max(0, Math.min(offset, this.instance.limit[this.directionAxis])); // Make sure our target is in the scroll boundaries\n\n var scrollDiff = scrollTarget - scrollStart;\n\n var render = function render(p) {\n if (disableLerp) {\n if (_this9.direction === 'horizontal') {\n _this9.setScroll(scrollStart + scrollDiff * p, _this9.instance.delta.y);\n } else {\n _this9.setScroll(_this9.instance.delta.x, scrollStart + scrollDiff * p);\n }\n } else {\n _this9.instance.delta[_this9.directionAxis] = scrollStart + scrollDiff * p;\n }\n }; // Prepare the scroll\n\n\n this.animatingScroll = true; // This boolean allows to prevent `checkScroll()` from calling `stopScrolling` when the animation is slow (i.e. at the beginning of an EaseIn)\n\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.startScrolling(); // Restart the scroll\n // Start the animation loop\n\n var start = Date.now();\n\n var loop = function loop() {\n var p = (Date.now() - start) / duration; // Animation progress\n\n if (p > 1) {\n // Animation ends\n render(1);\n _this9.animatingScroll = false;\n if (duration == 0) _this9.update();\n if (callback) callback();\n } else {\n _this9.scrollToRaf = requestAnimationFrame(loop);\n render(easing(p));\n }\n };\n\n loop();\n }\n }, {\n key: \"update\",\n value: function update() {\n this.setScrollLimit();\n this.addSections();\n this.addElements();\n this.detectElements();\n this.updateScroll();\n this.transformElements(true);\n this.reinitScrollBar();\n this.checkScroll(true);\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {\n this.stop = false;\n }\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {\n this.stop = true;\n }\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance = _objectSpread2(_objectSpread2({}, this.instance), {}, {\n scroll: {\n x: x,\n y: y\n },\n delta: {\n x: x,\n y: y\n },\n speed: 0\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n this.stopScrolling();\n this.html.classList.remove(this.smoothClass);\n this.vs.destroy();\n this.destroyScrollBar();\n window.removeEventListener('keydown', this.checkKey, false);\n }\n }]);\n\n return _default;\n}(_default);\n\nvar Smooth = /*#__PURE__*/function () {\n function Smooth() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Smooth);\n\n this.options = options; // Override default options with given ones\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n if (!this.smooth && this.direction == 'horizontal') console.warn('\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 the related image.\n *\n * @see ../utils/image.js\n *\n * It is recommended to wrap your `` into an element with the\n * CSS class name `.c-lazy`. The CSS class name modifier `.-lazy-loaded`\n * will be applied on both the image and the parent wrapper.\n *\n * ```html\n *
\n * \"\"\n *
\n * ```\n *\n * @param {LocomotiveScroll} args - The Locomotive Scroll instance.\n */\n lazyLoad(args) {\n lazyLoadImage(args.obj.el, 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';\nimport config from './config';\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(config.CLASS.LOADED);\n html.classList.add(config.CLASS.READY);\n html.classList.remove(config.CLASS.LOADING);\n}\n\n"], - "mappings": "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", + "sources": ["../../../node_modules/node_modules/babel-plugin-transform-async-to-promises/helpers.js", "../../../node_modules/@barba/core/src/modules/Logger.ts", "../../../node_modules/@barba/core/src/defs/hooks.ts", "../../../node_modules/node_modules/path-to-regexp/index.js", "../../../node_modules/@barba/core/src/schemas/attribute.ts", "../../../node_modules/@barba/core/src/utils/dom.ts", "../../../node_modules/@barba/core/src/utils/history.ts", "../../../node_modules/@barba/core/src/utils/helpers.ts", "../../../node_modules/@barba/core/src/utils/url.ts", "../../../node_modules/@barba/core/src/utils/request.ts", "../../../node_modules/node_modules/is-promise/index.js", "../../../node_modules/@barba/core/src/utils/run-async.ts", "../../../node_modules/@barba/core/src/hooks.ts", "../../../node_modules/@barba/core/src/modules/Ignore.ts", "../../../node_modules/@barba/core/src/modules/Cache.ts", "../../../node_modules/@barba/core/src/modules/Prevent.ts", "../../../node_modules/@barba/core/src/modules/Error.ts", "../../../node_modules/@barba/core/src/modules/Store.ts", "../../../node_modules/@barba/core/src/modules/Transitions.ts", "../../../node_modules/@barba/core/src/modules/Views.ts", "../../../node_modules/@barba/core/src/polyfills/index.ts", "../../../node_modules/@barba/core/src/schemas/page.ts", "../../../node_modules/@barba/core/src/core.ts", "../../../node_modules/svg4everybody/dist/svg4everybody.js", "../../../node_modules/modujs/dist/main.esm.js", "../../../assets/scripts/modules.js", "../../../assets/scripts/modules/Load.js", "../../../assets/scripts/config.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/dom.js", "../../../assets/scripts/app.js"], + "sourcesContent": ["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n", "/**\n * @barba/core/modules/Logger\n *

\n * ## Logger.\n *\n * - Display informations via the console\n *\n * @module core/modules/Logger\n * @preferred\n */\n\n/***/\n\n/**\n * Log levels, all lower level messages are printed\n *\n * 0. mute\n * 1. error = `console.error()`\n * 2. warning= `console.warn()`\n * 3. info = `console.info()`\n * 4. debug = `console.log()`\n */\nexport enum LogLevels {\n off = 0,\n error = 1,\n warning = 2,\n info = 3,\n debug = 4,\n}\n\n/**\n * Global log level\n */\nlet _level: number = LogLevels.off;\n\nexport class Logger {\n /**\n * Get global log level.\n */\n public static getLevel(): number {\n return _level;\n }\n\n /**\n * Set global log level.\n */\n public static setLevel(name: keyof typeof LogLevels): number {\n _level = LogLevels[name];\n\n return _level;\n }\n\n /**\n * Log \"prefix\".\n */\n private _source: string;\n\n /**\n * Creates an instance of Logger.\n */\n constructor(source: string) {\n this._source = source;\n }\n\n /**\n * Permanent, unremovable log.\n */\n // public print(...objects: any[]): void {\n // this._log(console.info, LogLevels.off, objects);\n // }\n\n /**\n * Error log.\n */\n public error(...objects: any[]): void {\n this._log(console.error, LogLevels.error, objects);\n }\n\n /**\n * Warn log.\n */\n public warn(...objects: any[]): void {\n this._log(console.warn, LogLevels.warning, objects);\n }\n\n /**\n * Info log.\n */\n public info(...objects: any[]): void {\n this._log(console.info, LogLevels.info, objects);\n }\n\n /**\n * Debug log.\n */\n public debug(...objects: any[]): void {\n this._log(console.log, LogLevels.debug, objects);\n }\n\n /**\n * Internal logger.\n */\n private _log(fn: () => void, level: number, objects: any[]): void {\n if (level <= Logger.getLevel()) {\n fn.apply(console, ([`[${this._source}] `].concat(objects) as unknown) as [\n\n ]);\n }\n }\n}\n", "/**\n * @module typings/core\n */\nimport { ITransitionData, ITransitionPage, IViewData } from './index';\n\nexport type HooksBarba =\n | 'ready'\n | 'page'\n | 'reset'\n | 'currentAdded'\n | 'currentRemoved'\n | 'nextAdded'\n | 'nextRemoved';\n\nexport type HooksOnce = 'beforeOnce' | 'once' | 'afterOnce';\n\nexport type HooksPage =\n | 'before'\n | 'beforeLeave'\n | 'leave'\n | 'afterLeave'\n | 'beforeEnter'\n | 'enter'\n | 'afterEnter'\n | 'after';\n\nexport type HooksBefore = 'beforeOnce' | 'beforeLeave' | 'beforeEnter';\nexport type HooksAfter = 'afterOnce' | 'afterLeave' | 'afterEnter';\n\nexport type HooksTransition = HooksOnce | HooksPage;\nexport type HooksView = HooksBefore | HooksAfter;\nexport type HooksAll = HooksBarba | HooksTransition;\n\n// Allow optional \"dynamically created\" hooks\nexport type HooksTransitionMap = { [key in HooksTransition]?: any };\n\nexport type HookFunction = (\n data?: ITransitionData | IViewData,\n t?: ITransitionPage\n) => Promise | void;\n\nexport class HookMethods {\n public before: (fn: HookFunction, ctx?: any) => void;\n public beforeLeave: (fn: HookFunction, ctx?: any) => void;\n public leave: (fn: HookFunction, ctx?: any) => void;\n public afterLeave: (fn: HookFunction, ctx?: any) => void;\n public beforeEnter: (fn: HookFunction, ctx?: any) => void;\n public enter: (fn: HookFunction, ctx?: any) => void;\n public afterEnter: (fn: HookFunction, ctx?: any) => void;\n public after: (fn: HookFunction, ctx?: any) => void;\n}\n", "/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.match = match\nmodule.exports.regexpToFunction = regexpToFunction\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match (str, options) {\n var keys = []\n var re = pathToRegexp(str, keys, options)\n return regexpToFunction(re, keys)\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction (re, keys) {\n return function (pathname, options) {\n var m = re.exec(pathname)\n if (!m) return false\n\n var path = m[0]\n var index = m.index\n var params = {}\n var decode = (options && options.decode) || decodeURIComponent\n\n for (var i = 1; i < m.length; i++) {\n if (m[i] === undefined) continue\n\n var key = keys[i - 1]\n\n if (key.repeat) {\n params[key.name] = m[i].split(key.delimiter).map(function (value) {\n return decode(value, key)\n })\n } else {\n params[key.name] = decode(m[i], key)\n }\n }\n\n return { path: path, index: index, params: params }\n }\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n var validate = options ? options.validate !== false : true\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n", "/**\n * @barba/core/schemas\n *

\n * ## Schemas description.\n *\n * @module core/schemas\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { ISchemaAttribute } from '../defs';\n\n/**\n * See [[ISchemaAttribute]]\n */\nexport const schemaAttribute: ISchemaAttribute = {\n container: 'container',\n history: 'history',\n namespace: 'namespace',\n prefix: 'data-barba',\n prevent: 'prevent',\n wrapper: 'wrapper',\n};\n", "/**\n * @barba/core/utils/dom\n *

\n * ## Dom utils\n *\n * - Access DOM contents\n * - DOM vs string conversions\n *\n * @module core/utils/dom\n * @preferred\n */\n\n/***/\n\nimport path from 'path';\n\n// Definitions\nimport { ISchemaAttribute, Link, Scope, Wrapper } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\nexport class Dom {\n private _attr: ISchemaAttribute = schemaAttribute;\n private _parser: DOMParser = new DOMParser();\n\n /**\n * Convert HTMLDocument to string.\n */\n public toString(el: HTMLElement): string {\n return el.outerHTML;\n }\n\n /**\n * Parse HTML string to HTMLDocument.\n */\n // see https://github.com/barbajs/barba/issues/362\n // Seems that using DOMParser.parseFromString causes this issue.\n public toDocument(htmlString: string): HTMLDocument {\n return this._parser.parseFromString(htmlString, 'text/html');\n }\n\n /**\n * Parse HTML string to DIVElement.\n *\n * DOMParser.parseFromString fails with img[srcset] on iOS.\n * see https://github.com/barbajs/barba/issues/362\n */\n public toElement(htmlString: string): HTMLDivElement {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString;\n return div;\n }\n\n /**\n * Get HTML content.\n */\n public getHtml(doc: HTMLDocument = document): string {\n return this.toString(doc.documentElement);\n }\n\n /**\n * Get full document content.\n */\n // getDocument(el = document.documentElement) {\n // return this.toStr(el);\n // },\n\n /**\n * Get `[data-barba=\"wrapper\"]`.\n */\n public getWrapper(scope: Scope = document): Wrapper {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.wrapper}\"]`\n );\n }\n\n /**\n * Get `[data-barba=\"container\"]`.\n */\n public getContainer(scope: Scope = document): HTMLElement | null {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.container}\"]`\n );\n }\n\n /**\n * Remove container and store next sibling (if applicable).\n */\n public removeContainer(container: HTMLElement) {\n if (document.body.contains(container)) {\n container.parentNode.removeChild(container);\n }\n }\n\n /**\n * Add container before next sibling or at the end of the wrapper.\n */\n public addContainer(container: HTMLElement, wrapper: HTMLElement) {\n const existingContainer = this.getContainer();\n\n if (existingContainer) {\n this._insertAfter(container, existingContainer);\n } else {\n wrapper.appendChild(container);\n }\n }\n\n /**\n * Get `[data-barba-namespace]`.\n */\n public getNamespace(scope: Scope = document): string | null {\n const ns = scope.querySelector(\n `[${this._attr.prefix}-${this._attr.namespace}]`\n );\n\n return ns\n ? ns.getAttribute(`${this._attr.prefix}-${this._attr.namespace}`)\n : null;\n }\n\n /**\n * Get URL from `href` value.\n */\n public getHref(el: Link): string | null {\n // HTML tagName is UPPERCASE, xhtml tagName keeps existing case.\n if (el.tagName && el.tagName.toLowerCase() === 'a') {\n // HTMLAnchorElement, full URL available\n if (typeof el.href === 'string') {\n return el.href;\n }\n\n // Probably a SVGAElement\u2026\n const href = el.getAttribute('href') || el.getAttribute('xlink:href');\n\n /* istanbul ignore else */\n if (href) {\n // When link comes from SVG, `href` returns an object, not a string.\n const attr: string =\n ((href as unknown) as SVGAnimatedString).baseVal || href;\n\n return this.resolveUrl(attr);\n }\n }\n return null;\n }\n\n // Copyright 2014 Simon Lydell\n // X11 (\u201CMIT\u201D) Licensed. (See LICENSE\n // https://github.com/lydell/resolve-url/blob/master/resolve-url.js\n /* istanbul ignore next */\n public resolveUrl(...urls: string[]) {\n const numUrls = urls.length;\n\n if (numUrls === 0) {\n throw new Error('resolveUrl requires at least one argument; got none.');\n }\n\n const base = document.createElement('base');\n base.href = arguments[0];\n\n if (numUrls === 1) {\n return base.href;\n }\n\n const head = document.getElementsByTagName('head')[0];\n head.insertBefore(base, head.firstChild);\n\n const a = document.createElement('a');\n let resolved;\n\n for (let index = 1; index < numUrls; index++) {\n a.href = arguments[index];\n resolved = a.href;\n base.href = resolved;\n }\n\n head.removeChild(base);\n\n return resolved;\n }\n\n /**\n * Insert node after another node.\n */\n private _insertAfter(newNode: Node, referenceNode: Node) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n }\n}\n\nconst dom = new Dom();\n\nexport { dom };\n", "import { HistoryAction, LinkEvent, Trigger } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\n/**\n * @barba/core/utils/history\n *

\n * ## History manager.\n *\n * - Keep track of the navigation history\n *\n * @module core/utils/history\n * @preferred\n */\n\n/**\n * State item.\n *\n * @property from\n * @property index\n */\ninterface IHistoryItem {\n /** origin */\n from: string;\n /** index */\n index: number;\n /** states */\n states: IStateItem[];\n}\n\n/***/\ninterface ICoords {\n x: number;\n y: number;\n}\n\n/**\n * History item.\n *\n * @property namespace\n * @property scroll\n * @property URL\n */\ninterface IStateItem {\n /** namespace */\n ns: string | undefined;\n /** Scroll position */\n scroll: ICoords;\n /** URL */\n url: string;\n}\n\nexport class History {\n private _session: string;\n private _states: IStateItem[] = [];\n private _pointer = -1;\n\n /**\n * Init with first state.\n */\n public init(url: string, ns: string): void {\n this._session = 'barba';\n const index = 0;\n\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n window.history && window.history.replaceState(item, '', url);\n }\n\n public change(\n url: string,\n trigger: Trigger,\n e?: LinkEvent | PopStateEvent\n ): Trigger {\n if (e && (e as PopStateEvent).state) {\n // If popstate, move to existing state\n // and get back/forward direction.\n const { state }: { state: IHistoryItem } = e as PopStateEvent;\n const { index } = state;\n const diff = this._pointer - index;\n\n trigger = this._getDirection(diff);\n\n // Work with previous states\n this.replace(state.states);\n this._pointer = index;\n } else {\n // Add new state\n this.add(url, trigger);\n }\n\n return trigger;\n }\n\n /**\n * Add a new state.\n */\n public add(url: string, trigger: Trigger): void {\n // If no state, it will be updated later.\n const ns = 'tmp';\n const index = this.size;\n const action = this._getAction(trigger);\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n switch (action) {\n case 'push':\n window.history && window.history.pushState(item, '', url);\n break;\n case 'replace':\n window.history && window.history.replaceState(item, '', url);\n break;\n /* istanbul ignore next */\n default:\n }\n }\n\n /**\n * Update state.\n */\n public update(data: any, i?: number): void {\n const index = i || this._pointer;\n const existing = this.get(index);\n const state: IStateItem = {\n ...existing,\n ...data,\n };\n\n this.set(index, state);\n }\n\n /**\n * Remove last state.\n */\n public remove(i?: number): void {\n if (i) {\n this._states.splice(i, 1);\n } else {\n this._states.pop();\n }\n\n this._pointer--;\n }\n\n /**\n * Delete all states.\n */\n public clear(): void {\n this._states = [];\n this._pointer = -1;\n }\n\n /**\n * Replace all states.\n */\n public replace(newStates: IStateItem[]): void {\n this._states = newStates;\n }\n\n /**\n * Get state by index.\n */\n public get(index: number) {\n return this._states[index];\n }\n\n /**\n * Set state by index.\n */\n public set(i: number, state: IStateItem) {\n return (this._states[i] = state);\n }\n\n /**\n * Get the current state.\n */\n get current(): IStateItem {\n return this._states[this._pointer];\n }\n\n /**\n * Get the last state (top of the history stack).\n */\n get state(): IStateItem {\n return this._states[this._states.length - 1];\n }\n\n /**\n * Get the previous state.\n */\n get previous(): IStateItem | null {\n return this._pointer < 1 ? null : this._states[this._pointer - 1];\n }\n\n /**\n * Get the state size.\n */\n get size(): number {\n return this._states.length;\n }\n\n /**\n * Get the history action: push vs replace\n */\n private _getAction(trigger: Trigger): HistoryAction {\n let action: HistoryAction = 'push';\n\n // Manage `data-barba-history` attribute\n // to get the right action (push vs replace).\n const el = trigger as HTMLAnchorElement;\n const attr = `${schemaAttribute.prefix}-${schemaAttribute.history}`;\n\n if (el.hasAttribute && el.hasAttribute(attr)) {\n action = el.getAttribute(attr) as HistoryAction;\n }\n\n return action;\n }\n\n /**\n * Get the direction of popstate change\n */\n private _getDirection(diff: number): Trigger {\n // Check if \"session switch\"\n if (Math.abs(diff) > 1) {\n // Ex 6-0 > 0 -> forward, 0-6 < 0 -> back\n return diff > 0 ? 'forward' : 'back';\n } else {\n if (diff === 0) {\n return 'popstate';\n } else {\n // Ex 6-5 > 0 -> back, 5-6 < 0 -> forward\n return diff > 0 ? 'back' : 'forward';\n }\n }\n }\n}\n\nconst history = new History();\n\nexport { history };\n", "/**\n * @barba/core/utils/helpers\n *

\n * ## Helpers\n *\n * - Update next page data\n *\n * @module core/utils/helpers\n * @preferred\n */\n\n/***/\n\n// Third-party\nimport ptr from 'path-to-regexp';\n// Definitions\nimport { ITransitionData } from '../defs';\n// Utils\nimport { dom } from './dom';\nimport { history } from './history';\n\n/**\n * Update `data.next`, the title and the history\n */\nexport const update = async (\n page: Promise,\n data: ITransitionData\n): Promise => {\n // If not already updated\n if (!data.next.html) {\n const html = await page;\n const { next } = data;\n\n if (html) {\n // see: https://github.com/barbajs/barba/issues/362\n // const nextDocument = dom.toDocument(html);\n const nextDocument = dom.toElement(html);\n\n next.namespace = dom.getNamespace(nextDocument);\n next.container = dom.getContainer(nextDocument);\n // see https://github.com/barbajs/barba/issues/362\n // next.html = dom.getHtml(nextDocument);\n // next.html = nextDocument.innerHTML;\n next.html = html;\n\n // Update history namespace (not available when initially set)\n history.update({ ns: next.namespace });\n\n // Update title.\n const { title } = dom.toDocument(html);\n\n document.title = title;\n }\n }\n};\n\n/**\n * Next tick\n */\nexport const nextTick = () =>\n new Promise(resolve => {\n window.requestAnimationFrame(resolve);\n // DEV: same result?\n // setTimeout(resolve, 0);\n });\n\n/**\n * Turn a route string such as `/user/:name` into a regular expression.\n *\n * Used for:\n *\n * - routes to ignore\n * - route transition resolution\n *\n * @see https://www.npmjs.com/package/path-to-regexp\n */\nconst pathToRegexp = ptr;\n\nexport { pathToRegexp };\n", "/**\n * @barba/core/utils/url\n *

\n * ## URL utils.\n *\n * - Collect and structure informations from URLs\n *\n * @module core/utils/url\n */\n\n/***/\n\n// Definitions\nimport { IGenericObject, IUrlBase } from '../defs';\n\n/**\n * Get location href.\n */\nexport const getHref = () => window.location.href;\n\n/**\n * Get location origin.\n */\nexport const getOrigin = () => window.location.origin;\n\n/**\n * Get port based on URL or location.\n */\nexport const getPort = (url: string = window.location.href) => parse(url).port;\n\n/**\n * Get path from URL.\n */\nexport const getPath = (url: string = window.location.href) => parse(url).path;\n\n/**\n * Get query object from URL.\n */\n// export const getQuery = (url: string): IGenericObject => parse(url).query;\n\n/**\n * Get hash from URL.\n */\n// export const getHash = (url: string): string => parse(url).hash;\n\n/**\n * Parse URL for path, query and hash and more.\n */\nexport const parse = (url: string): IUrlBase => {\n // Port\n let port;\n const matches = url.match(/:\\d+/);\n\n if (matches === null) {\n if (/^http/.test(url)) {\n port = 80;\n }\n\n if (/^https/.test(url)) {\n port = 443;\n }\n } else {\n const portString = matches[0].substring(1);\n\n port = parseInt(portString, 10);\n }\n\n // Path\n let path = url.replace(getOrigin(), '');\n let hash;\n let query = {};\n\n // Hash\n const hashIndex = path.indexOf('#');\n\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex + 1);\n path = path.slice(0, hashIndex);\n }\n\n // Query\n const queryIndex = path.indexOf('?');\n\n if (queryIndex >= 0) {\n query = parseQuery(path.slice(queryIndex + 1));\n path = path.slice(0, queryIndex);\n }\n\n return {\n hash,\n path,\n port,\n query,\n };\n};\n\n/**\n * Parse a query string to object.\n */\nexport const parseQuery = (str: string) =>\n str.split('&').reduce((acc: IGenericObject, el: string) => {\n const [key, value] = el.split('=');\n\n acc[key] = value;\n\n return acc;\n }, {});\n\n/**\n * Clean URL, remove \"hash\" and/or \"trailing slash\".\n */\nexport const clean = (url: string = window.location.href) =>\n url.replace(/(\\/#.*|\\/|#.*)$/, '');\n", "/**\n * @barba/core/utils/request\n *

\n * ## Fetch pages for transitions.\n *\n * - Includes timeout\n * - Uses Fetch API\n * - Handles errors\n *\n * @module core/utils/request\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { RequestError } from '../defs';\n\n/**\n * Init a page request.\n * Fetch the page and returns a promise with the text content.\n */\nfunction request(\n url: string,\n ttl: number = 2e3,\n requestError: RequestError\n): Promise {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n resolve(xhr.responseText);\n } else if (xhr.status) {\n // HTTP code is not 200, reject with response.\n const res = {\n status: xhr.status,\n statusText: xhr.statusText,\n };\n requestError(url, res);\n reject(res);\n }\n }\n };\n xhr.ontimeout = () => {\n const err = new Error(`Timeout error [${ttl}]`);\n requestError(url, err);\n reject(err);\n };\n xhr.onerror = () => {\n const err = new Error(`Fetch error`);\n requestError(url, err);\n reject(err);\n };\n\n xhr.open('GET', url);\n xhr.timeout = ttl;\n xhr.setRequestHeader(\n 'Accept',\n 'text/html,application/xhtml+xml,application/xml'\n );\n xhr.setRequestHeader('x-barba', 'yes');\n xhr.send();\n });\n}\n\nexport { request };\n", "module.exports = isPromise;\n\nfunction isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n", "import isPromise from 'is-promise';\n\n// https://github.com/SBoudrias/run-async\n/* istanbul ignore next */\nexport function runAsync(\n func: (...args: any[]) => void | Promise,\n ctx: any = {}\n): (...args: any[]) => Promise {\n return (...args: any[]) => {\n let async = false;\n\n const promise = new Promise((resolve, reject) => {\n // Add async to context\n ctx.async = () => {\n async = true;\n\n return (err: any, value: any) => {\n if (err) {\n reject(err);\n } else {\n resolve(value);\n }\n };\n };\n\n const answer = func.apply(ctx, args as []);\n\n if (!async) {\n if (isPromise(answer)) {\n (answer as Promise).then(resolve, reject);\n } else {\n resolve(answer);\n }\n }\n });\n\n return promise;\n };\n}\n", "/**\n * @barba/core/modules/hooks\n *

\n * ## Hooks manager.\n *\n * - Register and trigger hooks\n *\n * Hooks can be easily registered:\n *\n * ```js\n * hooks.leave(callback, context);\n * ```\n *\n * @module core/modules/hooks\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HookFunction, HookMethods, HooksAll } from './defs';\n// Modules\nimport { Logger } from './modules/Logger';\n// Utils\nimport { runAsync } from './utils';\n// Types\ninterface IHookInfos {\n ctx: any;\n fn: HookFunction;\n}\n\nexport class Hooks extends HookMethods {\n /**\n * Allow the use of `hooks[name](cb, ctx)`.\n */\n [key: string]: any;\n // [key in HooksAll]?: any;\n public logger: Logger = new Logger('@barba/core');\n /**\n * All available hooks.\n *\n * See [[HooksAll]]\n */\n // TODO: get hooks from defs (DRY)?\n public all: HooksAll[] = [\n 'ready',\n 'page',\n 'reset',\n 'currentAdded',\n 'currentRemoved',\n 'nextAdded',\n 'nextRemoved',\n 'beforeOnce',\n 'once',\n 'afterOnce',\n 'before',\n 'beforeLeave',\n 'leave',\n 'afterLeave',\n 'beforeEnter',\n 'enter',\n 'afterEnter',\n 'after',\n ];\n /**\n * Registered hooks.\n *\n * - Unique hook name\n * - Associated data set(s) (callback + context)\n */\n public registered: Map> = new Map();\n\n constructor() {\n super();\n this.init();\n }\n\n public init() {\n this.registered.clear();\n this.all.forEach(hook => {\n if (!this[hook]) {\n this[hook] = (fn: HookFunction, ctx?: any) => {\n if (!this.registered.has(hook)) {\n this.registered.set(hook, new Set());\n }\n const set = this.registered.get(hook);\n\n set.add({\n ctx: ctx || {},\n fn,\n });\n };\n }\n });\n }\n\n /**\n * Do hook.\n *\n * Trigger registered hooks.\n */\n public do(name: HooksAll, ...args: any): Promise {\n if (this.registered.has(name)) {\n // Let's start a chain of promises\n let chain = Promise.resolve();\n\n this.registered.get(name).forEach(hook => {\n // Chain async hooks promisified\n chain = chain.then(() => runAsync(hook.fn, hook.ctx)(...args));\n });\n\n return chain.catch(error => {\n this.logger.debug(`Hook error [${name}]`);\n this.logger.error(error);\n });\n }\n\n return Promise.resolve();\n }\n\n public clear(): void {\n this.all.forEach(hook => {\n delete this[hook];\n });\n\n this.init();\n }\n\n /**\n * Help, print available and registered hooks.\n */\n public help(): void {\n this.logger.info(`Available hooks: ${this.all.join(',')}`);\n const registered: string[] = [];\n this.registered.forEach((value, key) => registered.push(key));\n this.logger.info(`Registered hooks: ${registered.join(',')}`);\n }\n}\n\nconst hooks = new Hooks();\n\nexport { hooks };\n", "/**\n * @barba/core/modules/ignore\n *

\n * ## Manage ignore options.\n *\n * - cache\n * - prefetch\n *\n * @module core/modules/ignore\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption } from '../defs';\n// Utils\nimport { pathToRegexp } from '../utils/helpers';\nimport { parse } from '../utils/url';\n\nexport class Ignore {\n private _ignoreAll: boolean;\n private _ignoreRegexes: RegExp[] = [];\n\n constructor(ignore: IgnoreOption) {\n if (typeof ignore === 'boolean') {\n this._ignoreAll = ignore;\n } else {\n const paths = Array.isArray(ignore) ? ignore : [ignore];\n\n this._ignoreRegexes = paths.map(p => pathToRegexp(p));\n }\n }\n\n public checkHref(href: string): boolean {\n if (typeof this._ignoreAll === 'boolean') {\n return this._ignoreAll;\n }\n\n const { path } = parse(href);\n\n return this._ignoreRegexes.some(regex => regex.exec(path) !== null);\n }\n}\n", "/**\n * @barba/core/modules/cache\n *

\n * ## Cache for storing URL / HTML.\n *\n * @module core/modules/cache\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { CacheAction, CacheRequest, ICacheData, IgnoreOption } from '../defs';\n// Modules\nimport { Ignore } from './Ignore';\n\nexport class Cache extends Ignore {\n private _state: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n }\n\n /**\n * Set value to cache\n */\n public set(\n href: string,\n request: CacheRequest,\n action: CacheAction\n ): ICacheData {\n this._state.set(href, {\n action,\n request,\n });\n\n return {\n action,\n request,\n };\n }\n\n /**\n * Get data from cache\n */\n public get(href: string): ICacheData {\n return this._state.get(href);\n }\n\n /**\n * Get request from cache\n */\n public getRequest(href: string): CacheRequest {\n return this._state.get(href).request;\n }\n\n /**\n * Get action from cache\n */\n public getAction(href: string): CacheAction {\n return this._state.get(href).action;\n }\n\n /**\n * Check if value exists into cache\n */\n public has(href: string): boolean {\n /* istanbul ignore else */\n if (this.checkHref(href)) {\n return false;\n }\n return this._state.has(href);\n }\n\n /**\n * Delete value from cache\n */\n public delete(href: string): boolean {\n return this._state.delete(href);\n }\n\n /**\n * Update cache value\n */\n public update(href: string, data: ICacheData): ICacheData {\n const state = {\n ...this._state.get(href),\n ...data,\n };\n this._state.set(href, state);\n\n return state;\n }\n}\n", "/**\n * @barba/core/modules/prevent\n *

\n * ## Prevent checks.\n *\n * - Gathers all the tests that allow Barba to work and play transitions\n *\n * @module core/modules/prevent\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption, Link, PreventCheck } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n// Utils\nimport { url } from '../utils';\n// Modules\nimport { Ignore } from './Ignore';\n\n/**\n * Make sure the browser supports `history.pushState`.\n */\nconst pushState: PreventCheck = () => !window.history.pushState;\n\n/**\n * Make sure there is an `el` and `href`.\n */\nconst exists: PreventCheck = ({ el, href }) => !el || !href;\n\n/**\n * If the user is pressing ctrl + click, the browser will open a new tab.\n */\nconst newTab: PreventCheck = ({ event }) =>\n (event as KeyboardEvent).which > 1 ||\n (event as KeyboardEvent).metaKey ||\n (event as KeyboardEvent).ctrlKey ||\n (event as KeyboardEvent).shiftKey ||\n (event as KeyboardEvent).altKey;\n\n/**\n * If the link has `_blank` target.\n */\nconst blank: PreventCheck = ({ el }) =>\n el.hasAttribute('target') && (el as Link).target === '_blank';\n\n/**\n * If the domain is the same (in order to avoid pushState cross origin security problem).\n * Note: SVGAElement do not have `protocol` neither `hostname` properties.\n */\nconst corsDomain: PreventCheck = ({ el }) =>\n ((el as HTMLAnchorElement).protocol !== undefined &&\n window.location.protocol !== (el as HTMLAnchorElement).protocol) ||\n ((el as HTMLAnchorElement).hostname !== undefined &&\n window.location.hostname !== (el as HTMLAnchorElement).hostname);\n\n/**\n * If the port is the same.\n * Note: SVGAElement do not have `port` property.\n */\nconst corsPort: PreventCheck = ({ el }) =>\n (el as HTMLAnchorElement).port !== undefined &&\n url.getPort() !== url.getPort((el as HTMLAnchorElement).href);\n\n/**\n * If the link has download attribute.\n */\nconst download: PreventCheck = ({ el }) =>\n el.getAttribute && typeof el.getAttribute('download') === 'string';\n\n/**\n * If the links contains [data-barba-prevent] or [data-barba-prevent=\"self\"].\n */\nconst preventSelf: PreventCheck = ({ el }) =>\n el.hasAttribute(`${schemaAttribute.prefix}-${schemaAttribute.prevent}`);\n\n/**\n * If some link ancestor contains [data-barba-prevent=\"all\"].\n */\nconst preventAll: PreventCheck = ({ el }) =>\n Boolean(\n el.closest(`[${schemaAttribute.prefix}-${schemaAttribute.prevent}=\"all\"]`)\n );\n\n/**\n * If the link is the current URL.\n *\n * > Not in the test suite.\n */\nconst sameUrl: PreventCheck = ({ href }) =>\n url.clean(href) === url.clean() && url.getPort(href) === url.getPort();\n\nexport class Prevent extends Ignore {\n public suite: string[] = [];\n public tests: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n this.init();\n }\n\n public init(): void {\n // Add defaults\n this.add('pushState', pushState);\n this.add('exists', exists);\n this.add('newTab', newTab);\n this.add('blank', blank);\n this.add('corsDomain', corsDomain);\n this.add('corsPort', corsPort);\n this.add('download', download);\n this.add('preventSelf', preventSelf);\n this.add('preventAll', preventAll);\n\n // Outside of the test suite\n this.add('sameUrl', sameUrl, false);\n }\n\n public add(name: string, check: PreventCheck, suite: boolean = true): void {\n this.tests.set(name, check);\n suite && this.suite.push(name);\n }\n\n /**\n * Run individual test\n */\n public run(name: string, el: Link, event: Event, href: string): boolean {\n return this.tests.get(name)({\n el,\n event,\n href,\n });\n }\n\n /**\n * Run test suite\n */\n public checkLink(el: Link, event: Event, href: string): boolean {\n return this.suite.some(name => this.run(name, el, event, href));\n }\n}\n", "// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\nexport class BarbaError extends Error {\n /* istanbul ignore next */\n constructor(\n public error: Error,\n public label = 'Barba error',\n ...params: any[]\n ) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(...params);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BarbaError);\n }\n\n this.name = 'BarbaError';\n }\n}\n", "/**\n * @barba/core/modules/store\n *

\n * ## Transitions store.\n *\n * - Resolve transition\n * - Manage rules\n *\n * @module core/modules/store\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n IRule,\n IRules,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n RuleName,\n} from '../defs';\n\n// Modules\nimport { Logger } from './Logger';\n\nexport class Store {\n public logger: Logger = new Logger('@barba/core');\n /**\n * All registered transitions.\n */\n public all: ITransitionPage[] = [];\n /**\n * \"Page only\" registered transitions.\n */\n public page: ITransitionPage[] = [];\n /**\n * \"Once only\" registered transitions.\n */\n public once: ITransitionOnce[] = [];\n /**\n * Rules for transition resolution.\n *\n * Defaults:\n *\n * - namespace\n * - custom\n */\n private _rules: IRule[] = [\n {\n name: 'namespace',\n type: 'strings',\n },\n {\n name: 'custom',\n type: 'function',\n },\n ];\n\n /**\n * Init store.\n */\n constructor(transitions: ITransitionPage[] = []) {\n /* istanbul ignore else */\n if (transitions) {\n // TODO: add check for valid transitions? criteria? (once || enter && leave)\n this.all = this.all.concat(transitions);\n }\n this.update();\n }\n\n /**\n * Add rule or transition.\n */\n public add(type: 'rule' | 'transition', data: any): void {\n switch (type) {\n case 'rule':\n // TODO: check for valid rule\n this._rules.splice(data.position || 0, 0, data.value);\n break;\n case 'transition':\n default:\n // TODO: check for valid transition\n this.all.push(data);\n break;\n }\n\n this.update();\n }\n\n /**\n * Resolve transition.\n */\n public resolve(\n data: ITransitionData,\n filters: ITransitionFilters = {}\n ): ITransitionOnce | ITransitionPage {\n // Filter on \"once\"\n let transitions = filters.once ? this.once : this.page;\n\n // Filter on \"self\"\n if (filters.self) {\n transitions = transitions.filter(t => t.name && t.name === 'self');\n } else {\n transitions = transitions.filter(t => !t.name || t.name !== 'self');\n }\n\n // All matching transition infos\n const matching = new Map();\n\n // Active = first of valid transitions\n // sorted by directions (from/to, from || to, \u2026)\n const active = transitions.find(t => {\n let valid = true;\n const match = {};\n\n if (filters.self && t.name === 'self') {\n return true;\n }\n\n // Check rules\n this._rules.reverse().forEach(rule => {\n if (valid) {\n valid = this._check(t, rule, data, match);\n // From/to check\n if (t.from && t.to) {\n valid =\n this._check(t, rule, data, match, 'from') &&\n this._check(t, rule, data, match, 'to');\n }\n if (t.from && !t.to) {\n valid = this._check(t, rule, data, match, 'from');\n }\n if (!t.from && t.to) {\n valid = this._check(t, rule, data, match, 'to');\n }\n }\n });\n\n matching.set(t, match);\n\n return valid;\n });\n\n const activeMatch = matching.get(active);\n const transitionType = [];\n if (filters.once) {\n transitionType.push('once');\n } else {\n transitionType.push('page');\n }\n if (filters.self) {\n transitionType.push('self');\n }\n\n if (activeMatch) {\n // Log resolved transition\n const infos: any[] = [active];\n // Log if matching criteria\n Object.keys(activeMatch).length > 0 && infos.push(activeMatch);\n\n this.logger.info(\n `Transition found [${transitionType.join(',')}]`,\n ...infos\n );\n } else {\n this.logger.info(`No transition found [${transitionType.join(',')}]`);\n }\n\n return active;\n }\n\n /**\n * ### Update store.\n *\n * - Reorder transition by priorities\n * - Get wait indicator\n * - Get once transitions\n */\n public update(): void {\n // Reorder by priorities\n this.all = this.all\n .map(t => this._addPriority(t))\n .sort((a, b) => a.priority - b.priority)\n .reverse()\n .map(t => {\n delete t.priority;\n\n return t;\n });\n this.page = this.all.filter(\n t => t.leave !== undefined || t.enter !== undefined\n ) as ITransitionPage[];\n this.once = this.all.filter(t => t.once !== undefined) as ITransitionOnce[];\n }\n\n /**\n * ### Check if transition apply.\n *\n * Based on rule, page data and optional direction:\n *\n * 1. transition has no rule \"property\":\n * - always returns true\n * 2. transition has rule \"property\":\n * - \"strings\" should be present on both side (transition + page) and match\n * - \"function\" should return true\n */\n private _check(\n transition: ITransitionPage,\n rule: IRule,\n data: ITransitionData,\n match: any,\n direction?: 'from' | 'to'\n ): boolean {\n let isValid = true;\n let hasMatch = false;\n const t = transition;\n const { name, type } = rule;\n const strRule = name as IRules['strings'];\n const objRule = name as IRules['object'];\n const fnName = name as IRules['function'];\n const base = direction ? t[direction] : t; // = t || t.from || t.to\n const page = direction === 'to' ? data.next : data.current; // = current || next\n const exist = direction ? base && base[name] : base[name];\n\n // If transition rule exists\n if (exist) {\n switch (type) {\n case 'strings':\n default: {\n // Array support\n const names: string[] = Array.isArray(base[strRule])\n ? (base[strRule] as string[])\n : [base[strRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[strRule] && names.indexOf(page[strRule]) !== -1) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[strRule]) === -1) {\n isValid = false;\n }\n break;\n }\n\n case 'object': {\n // Array support\n const names: string[] = Array.isArray(base[objRule])\n ? (base[objRule] as string[])\n : [base[objRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[objRule]) {\n if (\n page[objRule].name &&\n names.indexOf(page[objRule].name) !== -1\n ) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[objRule].name) === -1) {\n isValid = false;\n }\n } else {\n isValid = false;\n }\n break;\n }\n\n case 'function':\n if (base[fnName](data)) {\n hasMatch = true;\n } else {\n isValid = false;\n }\n break;\n }\n\n if (hasMatch) {\n if (direction) {\n match[direction] = match[direction] || {};\n match[direction][name] = t[direction][name];\n } else {\n match[name] = t[name];\n }\n }\n }\n\n return isValid;\n }\n\n /**\n * ### Calculate transition priority.\n *\n * Based on:\n *\n * - rule \"position\" (index) give tens, hundreds, thousands, \u2026\n * - from/to properties give units (0, 1 or 2)\n */\n private _calculatePriority(\n t: ITransitionPage,\n ruleName: RuleName,\n ruleIndex: number\n ): number {\n let priority = 0;\n\n if (\n t[ruleName] ||\n (t.from && t.from[ruleName]) ||\n (t.to && t.to[ruleName])\n ) {\n priority += Math.pow(10, ruleIndex);\n\n if (t.from && t.from[ruleName]) {\n priority += 1;\n }\n if (t.to && t.to[ruleName]) {\n priority += 2;\n }\n }\n\n return priority;\n }\n\n private _addPriority(t: ITransitionPage): ITransitionPage {\n t.priority = 0;\n let priority = 0;\n\n this._rules.forEach((rule, i) => {\n const { name } = rule;\n const index = i + 1;\n\n priority += this._calculatePriority(t, name, index);\n });\n\n t.priority = priority;\n\n return t;\n }\n}\n", "/**\n * @barba/core/modules/transitions\n *

\n * ## Transitions manager.\n *\n * - Handle hooks and transition lifecycle\n *\n * @module core/modules/transitions\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n HooksTransition,\n HooksTransitionMap,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n Wrapper,\n} from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { dom, helpers, runAsync } from '../utils';\n// Modules\nimport { BarbaError } from './Error';\nimport { Logger } from './Logger';\nimport { Store } from './Store';\n\nexport class Transitions {\n public logger: Logger = new Logger('@barba/core');\n public store: Store;\n private _running: boolean = false;\n\n constructor(transitions: ITransitionPage[] = []) {\n this.store = new Store(transitions);\n }\n\n /**\n * Get resolved transition\n *\n * - based on data\n */\n public get(\n data: ITransitionData,\n filters?: ITransitionFilters\n ): ITransitionOnce | ITransitionPage {\n return this.store.resolve(data, filters);\n }\n\n /**\n * Animation running status.\n */\n get isRunning(): boolean {\n return this._running;\n }\n set isRunning(status: boolean) {\n this._running = status;\n }\n\n /**\n * Check for registered once transition(s).\n */\n get hasOnce(): boolean {\n return this.store.once.length > 0;\n }\n\n /**\n * Check for registered self transition.\n */\n get hasSelf(): boolean {\n return this.store.all.some(t => t.name === 'self');\n }\n\n /**\n * ### Wait indicator.\n *\n * Tells Barba to get next page data
\n * before starting the resolution
\n * because some registered transitions need
\n * next page data to be resolved (eg: `sync: true`, `to: { namespace }`, \u2026)\n */\n get shouldWait(): boolean {\n return this.store.all.some(t => (t.to && !t.to.route) || t.sync);\n }\n\n /**\n * ### Do \"once\" transition.\n *\n * Hooks: see [[HooksOnce]].\n */\n public async doOnce({\n data,\n transition,\n }: {\n data: ITransitionData;\n transition: ITransitionOnce;\n }) {\n const t = transition || {};\n this._running = true;\n\n try {\n await this._doAsyncHook('beforeOnce', data, t);\n await this.once(data, t);\n await this._doAsyncHook('afterOnce', data, t);\n } catch (error) {\n this._running = false;\n\n this.logger.debug('Transition error [before/after/once]');\n this.logger.error(error);\n }\n\n this._running = false;\n }\n\n /**\n * ### Do \"page\" transition.\n *\n * Hooks: see [[HooksPage]].\n *\n * `sync: false` (default) order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. leave\n * 4. afterLeave\n * 5. beforeEnter\n * 6. enter\n * 7. afterEnter\n * 8. after\n *\n * `sync: true` order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. beforeEnter\n * 4. leave & enter\n * 5. afterLeave\n * 6. afterEnter\n * 7. after\n */\n public async doPage({\n data,\n transition,\n page,\n wrapper,\n }: {\n data: ITransitionData;\n transition: ITransitionPage;\n page: Promise;\n wrapper: Wrapper;\n }) {\n const t = transition || {};\n const sync = t.sync === true || false;\n\n this._running = true;\n\n try {\n // Check sync mode, wait for next content\n if (sync) {\n await helpers.update(page, data);\n }\n\n await this._doAsyncHook('before', data, t);\n\n if (sync) {\n try {\n await this.add(data, wrapper);\n // Before actions\n await this._doAsyncHook('beforeLeave', data, t);\n await this._doAsyncHook('beforeEnter', data, t);\n\n // Actions\n await Promise.all([this.leave(data, t), this.enter(data, t)]);\n\n // After actions\n await this._doAsyncHook('afterLeave', data, t);\n await this._doAsyncHook('afterEnter', data, t);\n } catch (error) {\n // this.logger.debug('Transition error [sync]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(error, 'Transition error [sync]');\n }\n }\n } else {\n let leaveResult: any = false;\n\n try {\n // Leave\n await this._doAsyncHook('beforeLeave', data, t);\n\n leaveResult = await Promise.all([\n this.leave(data, t),\n helpers.update(page, data),\n ]).then(values => values[0]);\n\n await this._doAsyncHook('afterLeave', data, t);\n\n // TODO: check here \"valid\" page result\n // before going further\n } catch (error) {\n // this.logger.debug('Transition error [before/after/leave]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/leave]'\n );\n }\n }\n\n try {\n // Enter\n /* istanbul ignore else */\n if (leaveResult !== false) {\n await this.add(data, wrapper);\n\n await this._doAsyncHook('beforeEnter', data, t);\n await this.enter(data, t, leaveResult);\n await this._doAsyncHook('afterEnter', data, t);\n }\n } catch (error) {\n // this.logger.debug('Transition error [before/after/enter]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/enter]'\n );\n }\n }\n }\n\n // Remove current contaienr\n await this.remove(data);\n\n await this._doAsyncHook('after', data, t);\n } catch (error) {\n this._running = false;\n\n // If \"custom/specific\" barba error.\n /* istanbul ignore else */\n if (error.name && error.name === 'BarbaError') {\n this.logger.debug(error.label);\n this.logger.error(error.error);\n\n throw error;\n }\n\n this.logger.debug('Transition error [page]');\n this.logger.error(error);\n\n throw error;\n }\n\n this._running = false;\n }\n\n /**\n * Once hook + async \"once\" transition.\n */\n public async once(data: ITransitionData, t: ITransitionOnce): Promise {\n await hooks.do('once', data, t);\n\n return t.once ? runAsync(t.once, t)(data) : Promise.resolve();\n }\n\n /**\n * Leave hook + async \"leave\" transition.\n */\n public async leave(data: ITransitionData, t: ITransitionPage): Promise {\n await hooks.do('leave', data, t);\n\n return t.leave ? runAsync(t.leave, t)(data) : Promise.resolve();\n }\n\n /**\n * Enter hook + async \"enter\" transition.\n */\n public async enter(\n data: ITransitionData,\n t: ITransitionPage,\n leaveResult?: any\n ): Promise {\n await hooks.do('enter', data, t);\n\n return t.enter\n ? runAsync(t.enter, t)(data, leaveResult)\n : Promise.resolve();\n }\n\n /**\n * Add next container.\n */\n public async add(data: ITransitionData, wrapper: Wrapper): Promise {\n dom.addContainer(data.next.container, wrapper);\n hooks.do('nextAdded', data);\n }\n\n /**\n * Remove current container.\n */\n public async remove(data: ITransitionData): Promise {\n dom.removeContainer(data.current.container);\n hooks.do('currentRemoved', data);\n }\n\n private _isTransitionError(error: any) {\n if (error.message) {\n // Errors from request\n return !/Timeout error|Fetch error/.test(error.message);\n }\n\n if (error.status) {\n // Errors from request\n return false;\n }\n\n return true;\n }\n\n /**\n * Do hooks + async transition methods.\n */\n private async _doAsyncHook(\n hook: HooksTransition,\n data: ITransitionData,\n t: HooksTransitionMap\n ): Promise {\n await hooks.do(hook, data, t);\n\n return t[hook] ? runAsync(t[hook], t)(data) : Promise.resolve();\n }\n}\n", "/**\n * @barba/core/modules/views\n *

\n * ## Views manager.\n *\n * @module core/modules/views\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HooksView, IView, IViewData } from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { runAsync } from '../utils';\n// Types\ntype Hook = (data: IViewData) => Promise;\n\nexport class Views {\n /**\n * Available hook names for views.\n */\n public names: HooksView[] = [\n 'beforeLeave',\n 'afterLeave',\n 'beforeEnter',\n 'afterEnter',\n ];\n /**\n * Registered views by namespace.\n */\n public byNamespace: Map = new Map();\n\n /**\n * Init views.\n */\n constructor(views: IView[]) {\n if (views.length === 0) {\n return;\n }\n\n // TODO: add check\n // for valid views? criteria? (namespace property, string ?)\n // or duplicate\n views.forEach(view => {\n this.byNamespace.set(view.namespace, view);\n });\n\n this.names.forEach(name => {\n hooks[name](this._createHook(name));\n });\n }\n\n /**\n * Create the hook method.\n *\n * - get view based on namespace\n * - execute callback with transition data\n */\n private _createHook(name: HooksView): Hook {\n return data => {\n const { namespace } = name.match(/enter/i) ? data.next : data.current;\n const view = this.byNamespace.get(namespace);\n\n // TODO: manage self\u2026\n // if (view && data.trigger !== 'self') {\n if (view && view[name]) {\n return runAsync(view[name], view)(data);\n }\n\n return Promise.resolve();\n };\n }\n}\n", "// Element.prototype.matches polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\nif (!Element.prototype.matches) {\n Element.prototype.matches =\n (Element as any).prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n\n// Element.prototype.closest polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\nif (!Element.prototype.closest) {\n Element.prototype.closest = function closest(s: string) {\n let el = this;\n\n do {\n if (el.matches(s)) {\n return el;\n }\n\n el = (el.parentElement || el.parentNode) as Element;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n };\n}\n", "/**\n * @module core/schemas\n */\n\n// Definitions\nimport { ISchemaPage } from '../defs';\n\n/**\n * See [[ISchemaPage]]\n */\nexport const schemaPage: ISchemaPage = {\n container: null,\n html: '',\n namespace: '',\n url: {\n hash: '',\n href: '',\n path: '',\n port: null,\n query: {},\n },\n};\n", "/**\n * @barba/core\n *

\n * ## Barba core object\n *\n * Main methods:\n *\n * - `.init()` for initialization with options\n * - `.use()` for plugins\n *\n * @module core\n */\n\n/***/\n\nimport { version } from '../package.json';\n// Definitions\nimport {\n IBarbaOptions,\n IBarbaPlugin,\n IgnoreOption,\n ISchemaPage,\n ITransitionData,\n ITransitionOnce,\n ITransitionPage,\n Link,\n LinkEvent,\n RequestCustomError,\n RequestErrorOrResponse,\n SchemaAttributeValues,\n Trigger,\n Wrapper,\n} from './defs';\n// Hooks\nimport { hooks } from './hooks';\n// Modules\nimport { Cache } from './modules/Cache';\nimport { Logger } from './modules/Logger';\nimport { Prevent } from './modules/Prevent';\nimport { Transitions } from './modules/Transitions';\nimport { Views } from './modules/Views';\n// Polyfills\nimport './polyfills';\n// Schemas\nimport { schemaAttribute } from './schemas/attribute';\nimport { schemaPage } from './schemas/page';\n// Utils\nimport { dom, helpers, history, request, url } from './utils';\n\nexport class Core {\n /**\n * Version.\n */\n public version: string = version;\n /**\n * Schemas.\n */\n public schemaPage: ISchemaPage = schemaPage;\n /**\n * Logger class, allows plugins to create Logger.\n */\n public Logger: typeof Logger = Logger;\n /**\n * Barba logger.\n */\n public logger: Logger = new Logger('@barba/core');\n /**\n * Plugins.\n */\n public plugins: Array> = [];\n /**\n * Options\n */\n public timeout: number;\n public cacheIgnore: IgnoreOption;\n public prefetchIgnore: IgnoreOption;\n public preventRunning: boolean;\n /**\n * Hooks\n */\n public hooks = hooks;\n /**\n * Modules.\n */\n // public history: History;\n public cache: Cache;\n public prevent: Prevent;\n public transitions: Transitions;\n public views: Views;\n /**\n * Utils.\n */\n public dom = dom;\n public helpers = helpers;\n public history = history;\n public request = request;\n public url = url;\n\n private _data: ITransitionData;\n private _requestCustomError: RequestCustomError;\n private _wrapper: Wrapper;\n\n /**\n * ### Init plugin with options.\n *\n * See [[IBarbaPlugin]] for more details.\n */\n public use(plugin: IBarbaPlugin, options?: T): void {\n const installedPlugins = this.plugins;\n\n // Plugin installation\n if (installedPlugins.indexOf(plugin) > -1) {\n this.logger.warn(`Plugin [${plugin.name}] already installed.`);\n\n return;\n }\n\n if (typeof plugin.install !== 'function') {\n this.logger.warn(`Plugin [${plugin.name}] has no \"install\" method.`);\n\n return;\n }\n\n plugin.install(this, options);\n installedPlugins.push(plugin);\n }\n\n /**\n * ### Init barba with options.\n *\n * See [[IBarbaOptions]] for more details.\n *\n * Default values are:\n *\n * - transitions: `[]`\n * - views: `[]`\n * - schema: [[SchemaAttribute]]\n * - timeout: `2e3`\n * - cacheIgnore: `false`\n * - prefetchIgnore: `false`\n * - preventRunning: `false`\n * - prevent: `null`,\n * - debug: `false`\n * - logLevel: `'debug'`\n */\n public init(\n /** @ignore */ {\n transitions = [],\n views = [],\n schema = schemaAttribute,\n requestError,\n timeout = 2e3,\n cacheIgnore = false,\n prefetchIgnore = false,\n /* istanbul ignore next */\n preventRunning = false,\n prevent: preventCustom = null,\n debug = false,\n logLevel = 'off',\n }: IBarbaOptions = {}\n ) {\n // 0. Set logger level and print version\n Logger.setLevel(debug === true ? 'debug' : logLevel);\n this.logger.info(this.version);\n\n // 1. Manage options\n Object.keys(schema).forEach(k => {\n const attr = k as SchemaAttributeValues;\n\n /* istanbul ignore else */\n if (schemaAttribute[attr]) {\n schemaAttribute[attr] = schema[attr];\n }\n });\n this._requestCustomError = requestError;\n this.timeout = timeout;\n this.cacheIgnore = cacheIgnore;\n this.prefetchIgnore = prefetchIgnore;\n this.preventRunning = preventRunning;\n\n // 2. Get and check wrapper\n this._wrapper = this.dom.getWrapper();\n if (!this._wrapper) {\n throw new Error('[@barba/core] No Barba wrapper found');\n }\n this._wrapper.setAttribute('aria-live', 'polite'); // A11y\n\n // 3. Init pages (get \"current\" data)\n this._resetData();\n\n const { current } = this.data;\n\n if (!current.container) {\n throw new Error('[@barba/core] No Barba container found');\n }\n\n // 4. Init other modules\n this.cache = new Cache(cacheIgnore);\n this.prevent = new Prevent(prefetchIgnore);\n this.transitions = new Transitions(transitions);\n this.views = new Views(views);\n\n // Add prevent custom\n if (preventCustom !== null) {\n if (typeof preventCustom !== 'function') {\n throw new Error('[@barba/core] Prevent should be a function');\n }\n\n this.prevent.add('preventCustom', preventCustom);\n }\n\n // 5. Use \"current\" data\n // Init history\n this.history.init(current.url.href, current.namespace);\n // Add to cache\n // TODO: do not cache renderer HTML, only request results\u2026\n // this.cache.set(current.url.href, Promise.resolve(current.html), 'init');\n\n // 6. Bind context\n this._onLinkEnter = this._onLinkEnter.bind(this);\n this._onLinkClick = this._onLinkClick.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._bind();\n\n // 7. Init plugins\n this.plugins.forEach(plugin => plugin.init());\n\n // 8. Barba ready\n // Set next + trigger for once and `beforeEnter`/`afterEnter` view on page load.\n const onceData = this.data;\n\n onceData.trigger = 'barba';\n onceData.next = onceData.current;\n onceData.current = { ...this.schemaPage };\n this.hooks.do('ready', onceData);\n\n // 9. Finally, do once\u2026\n this.once(onceData);\n\n // Clean data for first barba transition\u2026\n this._resetData();\n }\n\n public destroy(): void {\n this._resetData();\n this._unbind();\n this.history.clear();\n this.hooks.clear();\n this.plugins = [];\n }\n\n get data(): ITransitionData {\n return this._data;\n }\n\n get wrapper(): HTMLElement {\n return this._wrapper;\n }\n\n /**\n * ### Force a page change without Barba transition.\n */\n public force(href: string): void {\n // DEV\n // Can be used waiting animation cancellation management\u2026\n window.location.assign(href);\n }\n\n /**\n * ### Go for a Barba transition.\n *\n * Manage \"self page\" href:\n *\n * - if same url and no self transition, keep default behavior\n * - link: reload the page\n * - anchor: scroll to\n * - if same url with self transition, use it\n * - then start a page transition.\n */\n public go(\n href: string,\n trigger: Trigger = 'barba',\n e?: LinkEvent | PopStateEvent\n ): Promise {\n // If animation running, force reload\n if (this.transitions.isRunning) {\n this.force(href);\n\n return;\n }\n\n let self = false;\n\n // Check prevent sameURL against current history\n // + state check\n // + update trigger with direction\n if (trigger === 'popstate') {\n self =\n this.history.current &&\n this.url.getPath(this.history.current.url) === this.url.getPath(href);\n } else {\n self = this.prevent.run('sameUrl', null, null, href);\n }\n\n if (self && !this.transitions.hasSelf) {\n return;\n }\n\n trigger = this.history.change(href, trigger, e);\n\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n return this.page(href, trigger, self);\n }\n\n /**\n * ### Start an \"once\" transition.\n *\n * If some registered \"once\" transition,\n * get the \"resolved\" transition from the store and start it.\n */\n public async once(readyData: ITransitionData): Promise {\n await this.hooks.do('beforeEnter', readyData);\n\n // Check if once transition\n if (this.transitions.hasOnce) {\n const transition = this.transitions.get(readyData, {\n once: true,\n }) as ITransitionOnce;\n\n await this.transitions.doOnce({ transition, data: readyData });\n }\n\n await this.hooks.do('afterEnter', readyData);\n }\n\n /**\n * ### Start a \"page\" transition.\n *\n * 1. If no running transition, updates data with full URL properties and trigger.\n * 2. Get page from cache or init request.\n * 3. Wait if some transitions need \"next\" data (`sync: true`, `to: \u2026`).\n * 4. Manage the history, depending on trigger.\n * 5. Get \"data\" and trigger \"go\" hook.\n * 6. Get the \"resolved\" transition from the store and start it.\n * 7. Update title and reset data (current, next = undefined).\n *\n * > If \"self\", use the \"self\" transition\n */\n public async page(\n href: string,\n trigger: Trigger,\n self: boolean\n ): Promise {\n this.data.next.url = {\n href,\n ...this.url.parse(href),\n };\n this.data.trigger = trigger;\n\n const page = this.cache.has(href)\n ? this.cache.update(href, { action: 'click' }).request\n : this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, trigger)\n ),\n 'click'\n ).request;\n\n // Need to wait before getting the right transition\n if (this.transitions.shouldWait) {\n await helpers.update(page, this.data);\n }\n\n const data = this.data;\n\n // Hook: between trigger and transition\n // Can be used to resolve \"route\"\u2026\n await this.hooks.do('page', data);\n\n try {\n const transition = this.transitions.get(data, {\n once: false,\n self,\n }) as ITransitionPage;\n\n await this.transitions.doPage({\n data,\n page,\n transition,\n wrapper: this._wrapper,\n });\n\n this._resetData();\n } catch (error) {\n // Something went wrong (rejected promise, error, 404, 505, other\u2026)\n // TODO: manage / use cases for cancellation\n // this.logger.debug('Transition cancelled');\n\n // If transition error and no debug mode, force reload page.\n /* istanbul ignore else */\n if (Logger.getLevel() === 0) {\n this.force(data.current.url.href);\n }\n }\n }\n\n /**\n * When a request error occurs.\n *\n * Allow the user to manage request error. (E.g: 404)\n */\n public onRequestError(trigger: Trigger, ...args: any): boolean {\n // Cancel transition status\n this.transitions.isRunning = false;\n\n const [href, response]: [string, RequestErrorOrResponse] = args;\n const action = this.cache.getAction(href);\n this.cache.delete(href);\n\n // Custom requestError returning false will return here.\n if (\n this._requestCustomError &&\n this._requestCustomError(trigger, action, href, response) === false\n ) {\n return false;\n }\n\n // Force page change\n if (action === 'click') {\n this.force(href);\n }\n return false;\n }\n\n /**\n * Programmatically prefetch\n */\n public prefetch(href: string) {\n // Already in cache\n /* istanbul ignore next */\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, 'barba')\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'prefetch'\n );\n }\n\n /**\n * Bind event listeners.\n */\n private _bind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.addEventListener('mouseover', this._onLinkEnter);\n document.addEventListener('touchstart', this._onLinkEnter);\n }\n document.addEventListener('click', this._onLinkClick);\n window.addEventListener('popstate', this._onStateChange);\n }\n\n /**\n * Bind event listeners.\n */\n private _unbind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.removeEventListener('mouseover', this._onLinkEnter);\n document.removeEventListener('touchstart', this._onLinkEnter);\n }\n document.removeEventListener('click', this._onLinkClick);\n window.removeEventListener('popstate', this._onStateChange);\n }\n\n /**\n * When a element is entered.\n *\n * Get valid link element.\n * Cache URL if needed.\n */\n private _onLinkEnter(e: LinkEvent): void {\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n const href = this.dom.getHref(link);\n\n if (this.prevent.checkHref(href)) {\n return;\n }\n\n // Already in cache\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, link)\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'enter'\n );\n }\n\n /**\n * When an element is clicked.\n *\n * Get valid link element.\n * Prevent same URL.\n * Go for a Barba transition.\n */\n private _onLinkClick(e: LinkEvent): void {\n // This use `prevent.checkLink` under the hood to get eligible link.\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n if (this.transitions.isRunning && this.preventRunning) {\n e.preventDefault();\n e.stopPropagation();\n\n return;\n }\n\n this.go(this.dom.getHref(link), link, e);\n }\n\n /**\n * When History state changes.\n *\n * Get \"href\" from URL\n * Go for a Barba transition.\n */\n private _onStateChange(e: PopStateEvent): void {\n this.go(this.url.getHref(), 'popstate', e);\n }\n\n /**\n * Get a valid link ancestor.\n *\n * Check for a \"href\" attribute.\n * Then check if eligible for Barba.\n */\n private _getLinkElement(e: LinkEvent): Link {\n let el = e.target as Link;\n\n while (el && !this.dom.getHref(el)) {\n el = (el as HTMLElement).parentNode as Link;\n }\n\n // Check prevent\n if (!el || this.prevent.checkLink(el, e, this.dom.getHref(el))) {\n return;\n }\n\n return el;\n }\n\n /**\n * Reset pages data.\n *\n * Set \"current\" and unset \"next\".\n */\n private _resetData() {\n const href = this.url.getHref();\n const current = {\n container: this.dom.getContainer(),\n html: this.dom.getHtml(),\n namespace: this.dom.getNamespace(),\n url: {\n href,\n ...this.url.parse(href),\n },\n };\n\n this._data = {\n current,\n next: { ...this.schemaPage },\n trigger: undefined,\n };\n\n this.hooks.do('reset', this.data);\n }\n}\n\nconst core = new Core();\n\nexport default core;\n", "!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", "import { module } from 'modujs';\nimport barba from '@barba/core';\nimport config from '../config'\n\nexport default class extends module {\n constructor(m) {\n super(m);\n }\n\n init() {\n barba.init({\n debug: config.IS_DEV,\n schema: {\n prefix: 'data-load',\n },\n transitions: [{\n name: 'default-transition',\n leave: (data) => {\n this.call('destroy', data.current.container, 'app');\n },\n enter: (data) => {\n this.call('update', data.next.container, 'app');\n }\n }]\n });\n }\n}\n", "const env = process.env.NODE_ENV\n\nexport default config = {\n\n // App\n APP_NAME: 'Boilerplate',\n DATA_API_KEY: '.data-api',\n\n // Env\n ENV: env,\n IS_PROD: env === 'production',\n IS_DEV: env === 'development',\n\n // Classnames\n CLASS: {\n LOADING: 'is-loading',\n READY: 'is-ready',\n LOADED: 'is-loaded',\n },\n}\n", "const LAZY_LOADED_IMAGES = []\n\nexport function loadImage(url, options = {}) {\n return new Promise((resolve, reject) => {\n const $img = new Image();\n\n if (options.crossOrigin) {\n $img.crossOrigin = options.crossOrigin;\n }\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 the given image.\n *\n * @param {HTMLImageElement} $el - The image element.\n * @param {?string} url - The URI to lazy load into $el.\n * If falsey, the value of the `data-src` attribute on $el will be used as the URI.\n * @param {?function} callback - A function to call when the image is loaded.\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\n if (!loadedImage.url) {\n return;\n }\n\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 = $el.closest('.c-lazy');\n\n if(lazyParent) {\n lazyParent.classList.add('-lazy-loaded')\n lazyParent.style.backgroundImage = ''\n }\n\n $el.classList.add('-lazy-loaded')\n\n callback?.()\n })\n}\n", "/* locomotive-scroll v4.1.3 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar defaults = {\n el: document,\n name: 'scroll',\n offset: [0, 0],\n repeat: false,\n smooth: false,\n initPosition: {\n x: 0,\n y: 0\n },\n direction: 'vertical',\n gestureDirection: 'vertical',\n reloadOnContextChange: false,\n lerp: 0.1,\n \"class\": 'is-inview',\n scrollbarContainer: false,\n scrollbarClass: 'c-scrollbar',\n scrollingClass: 'has-scroll-scrolling',\n draggingClass: 'has-scroll-dragging',\n smoothClass: 'has-scroll-smooth',\n initClass: 'has-scroll-init',\n getSpeed: false,\n getDirection: false,\n scrollFromAnywhere: false,\n multiplier: 1,\n firefoxMultiplier: 50,\n touchMultiplier: 2,\n resetNativeScroll: true,\n tablet: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical',\n breakpoint: 1024\n },\n smartphone: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical'\n }\n};\n\nvar _default = /*#__PURE__*/function () {\n function _default() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n this.namespace = 'locomotive';\n this.html = document.documentElement;\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.els = {};\n this.currentElements = {};\n this.listeners = {};\n this.hasScrollTicking = false;\n this.hasCallEventSet = false;\n this.checkScroll = this.checkScroll.bind(this);\n this.checkResize = this.checkResize.bind(this);\n this.checkEvent = this.checkEvent.bind(this);\n this.instance = {\n scroll: {\n x: 0,\n y: 0\n },\n limit: {\n x: this.html.offsetWidth,\n y: this.html.offsetHeight\n },\n currentElements: this.currentElements\n };\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (this.isMobile) this.direction = this[this.context].direction;\n\n if (this.direction === 'horizontal') {\n this.directionAxis = 'x';\n } else {\n this.directionAxis = 'y';\n }\n\n if (this.getDirection) {\n this.instance.direction = null;\n }\n\n if (this.getDirection) {\n this.instance.speed = 0;\n }\n\n this.html.classList.add(this.initClass);\n window.addEventListener('resize', this.checkResize, false);\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.initEvents();\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n this.dispatchScroll();\n }\n }, {\n key: \"checkResize\",\n value: function checkResize() {\n var _this = this;\n\n if (!this.resizeTick) {\n this.resizeTick = true;\n requestAnimationFrame(function () {\n _this.resize();\n\n _this.resizeTick = false;\n });\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {}\n }, {\n key: \"checkContext\",\n value: function checkContext() {\n if (!this.reloadOnContextChange) return;\n this.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || this.windowWidth < this.tablet.breakpoint;\n this.isTablet = this.isMobile && this.windowWidth >= this.tablet.breakpoint;\n var oldContext = this.context;\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (oldContext != this.context) {\n var oldSmooth = oldContext == 'desktop' ? this.smooth : this[oldContext].smooth;\n var newSmooth = this.context == 'desktop' ? this.smooth : this[this.context].smooth;\n if (oldSmooth != newSmooth) window.location.reload();\n }\n }\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this2 = this;\n\n this.scrollToEls = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-to]\"));\n this.setScrollTo = this.setScrollTo.bind(this);\n this.scrollToEls.forEach(function (el) {\n el.addEventListener('click', _this2.setScrollTo, false);\n });\n }\n }, {\n key: \"setScrollTo\",\n value: function setScrollTo(event) {\n event.preventDefault();\n this.scrollTo(event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-href\")) || event.currentTarget.getAttribute('href'), {\n offset: event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-offset\"))\n });\n }\n }, {\n key: \"addElements\",\n value: function addElements() {}\n }, {\n key: \"detectElements\",\n value: function detectElements(hasCallEventSet) {\n var _this3 = this;\n\n var scrollTop = this.instance.scroll.y;\n var scrollBottom = scrollTop + this.windowHeight;\n var scrollLeft = this.instance.scroll.x;\n var scrollRight = scrollLeft + this.windowWidth;\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n if (el && (!el.inView || hasCallEventSet)) {\n if (_this3.direction === 'horizontal') {\n if (scrollRight >= el.left && scrollLeft < el.right) {\n _this3.setInView(el, i);\n }\n } else {\n if (scrollBottom >= el.top && scrollTop < el.bottom) {\n _this3.setInView(el, i);\n }\n }\n }\n\n if (el && el.inView) {\n if (_this3.direction === 'horizontal') {\n var width = el.right - el.left;\n el.progress = (_this3.instance.scroll.x - (el.left - _this3.windowWidth)) / (width + _this3.windowWidth);\n\n if (scrollRight < el.left || scrollLeft > el.right) {\n _this3.setOutOfView(el, i);\n }\n } else {\n var height = el.bottom - el.top;\n el.progress = (_this3.instance.scroll.y - (el.top - _this3.windowHeight)) / (height + _this3.windowHeight);\n\n if (scrollBottom < el.top || scrollTop > el.bottom) {\n _this3.setOutOfView(el, i);\n }\n }\n }\n }); // this.els = this.els.filter((current, i) => {\n // return current !== null;\n // });\n\n this.hasScrollTicking = false;\n }\n }, {\n key: \"setInView\",\n value: function setInView(current, i) {\n this.els[i].inView = true;\n current.el.classList.add(current[\"class\"]);\n this.currentElements[i] = current;\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'enter');\n\n if (!current.repeat) {\n this.els[i].call = false;\n }\n } // if (!current.repeat && !current.speed && !current.sticky) {\n // if (!current.call || current.call && this.hasCallEventSet) {\n // this.els[i] = null\n // }\n // }\n\n }\n }, {\n key: \"setOutOfView\",\n value: function setOutOfView(current, i) {\n var _this4 = this;\n\n // if (current.repeat || current.speed !== undefined) {\n this.els[i].inView = false; // }\n\n Object.keys(this.currentElements).forEach(function (el) {\n el === i && delete _this4.currentElements[el];\n });\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'exit');\n }\n\n if (current.repeat) {\n current.el.classList.remove(current[\"class\"]);\n }\n }\n }, {\n key: \"dispatchCall\",\n value: function dispatchCall(current, way) {\n this.callWay = way;\n this.callValue = current.call.split(',').map(function (item) {\n return item.trim();\n });\n this.callObj = current;\n if (this.callValue.length == 1) this.callValue = this.callValue[0];\n var callEvent = new Event(this.namespace + 'call');\n this.el.dispatchEvent(callEvent);\n }\n }, {\n key: \"dispatchScroll\",\n value: function dispatchScroll() {\n var scrollEvent = new Event(this.namespace + 'scroll');\n this.el.dispatchEvent(scrollEvent);\n }\n }, {\n key: \"setEvents\",\n value: function setEvents(event, func) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n\n var list = this.listeners[event];\n list.push(func);\n\n if (list.length === 1) {\n this.el.addEventListener(this.namespace + event, this.checkEvent, false);\n }\n\n if (event === 'call') {\n this.hasCallEventSet = true;\n this.detectElements(true);\n }\n }\n }, {\n key: \"unsetEvents\",\n value: function unsetEvents(event, func) {\n if (!this.listeners[event]) return;\n var list = this.listeners[event];\n var index = list.indexOf(func);\n if (index < 0) return;\n list.splice(index, 1);\n\n if (list.index === 0) {\n this.el.removeEventListener(this.namespace + event, this.checkEvent, false);\n }\n }\n }, {\n key: \"checkEvent\",\n value: function checkEvent(event) {\n var _this5 = this;\n\n var name = event.type.replace(this.namespace, '');\n var list = this.listeners[name];\n if (!list || list.length === 0) return;\n list.forEach(function (func) {\n switch (name) {\n case 'scroll':\n return func(_this5.instance);\n\n case 'call':\n return func(_this5.callValue, _this5.callWay, _this5.callObj);\n\n default:\n return func();\n }\n });\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {}\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {}\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance.scroll = {\n x: 0,\n y: 0\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n\n window.removeEventListener('resize', this.checkResize, false);\n Object.keys(this.listeners).forEach(function (event) {\n _this6.el.removeEventListener(_this6.namespace + event, _this6.checkEvent, false);\n });\n this.listeners = {};\n this.scrollToEls.forEach(function (el) {\n el.removeEventListener('click', _this6.setScrollTo, false);\n });\n this.html.classList.remove(this.initClass);\n }\n }]);\n\n return _default;\n}();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar smoothscroll = createCommonjsModule(function (module, exports) {\n/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n {\n // commonjs\n module.exports = { polyfill: polyfill };\n }\n\n}());\n});\nvar smoothscroll_1 = smoothscroll.polyfill;\n\nvar _default$1 = /*#__PURE__*/function (_Core) {\n _inherits(_default, _Core);\n\n var _super = _createSuper(_default);\n\n function _default() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n _this = _super.call(this, options);\n\n if (_this.resetNativeScroll) {\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual';\n }\n\n window.scrollTo(0, 0);\n }\n\n window.addEventListener('scroll', _this.checkScroll, false);\n\n if (window.smoothscrollPolyfill === undefined) {\n window.smoothscrollPolyfill = smoothscroll;\n window.smoothscrollPolyfill.polyfill();\n }\n\n return _this;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.instance.scroll.y = window.pageYOffset;\n this.addElements();\n this.detectElements();\n\n _get(_getPrototypeOf(_default.prototype), \"init\", this).call(this);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this2 = this;\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.instance.scroll.y = window.pageYOffset;\n\n if (Object.entries(this.els).length) {\n if (!this.hasScrollTicking) {\n requestAnimationFrame(function () {\n _this2.detectElements();\n });\n this.hasScrollTicking = true;\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (window.pageYOffset > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (window.pageYOffset < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (window.pageYOffset != this.instance.scroll.y) {\n this.instance.speed = (window.pageYOffset - this.instance.scroll.y) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n if (Object.entries(this.els).length) {\n this.windowHeight = window.innerHeight;\n this.updateElements();\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this3 = this;\n\n this.els = {};\n var els = this.el.querySelectorAll('[data-' + this.name + ']');\n els.forEach(function (el, index) {\n var BCR = el.getBoundingClientRect();\n var cl = el.dataset[_this3.name + 'Class'] || _this3[\"class\"];\n var id = typeof el.dataset[_this3.name + 'Id'] === 'string' ? el.dataset[_this3.name + 'Id'] : index;\n var top;\n var left;\n var offset = typeof el.dataset[_this3.name + 'Offset'] === 'string' ? el.dataset[_this3.name + 'Offset'].split(',') : _this3.offset;\n var repeat = el.dataset[_this3.name + 'Repeat'];\n var call = el.dataset[_this3.name + 'Call'];\n var target = el.dataset[_this3.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n top = targetElBCR.top + _this3.instance.scroll.y;\n left = targetElBCR.left + _this3.instance.scroll.x;\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this3.repeat;\n }\n\n var relativeOffset = _this3.getRelativeOffset(offset);\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n var mappedEl = {\n el: el,\n targetEl: targetEl,\n id: id,\n \"class\": cl,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call\n };\n _this3.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this3.setInView(_this3.els[id], id);\n }\n });\n }\n }, {\n key: \"updateElements\",\n value: function updateElements() {\n var _this4 = this;\n\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n var top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y;\n\n var bottom = top + el.targetEl.offsetHeight;\n\n var relativeOffset = _this4.getRelativeOffset(el.offset);\n\n _this4.els[i].top = top + relativeOffset[0];\n _this4.els[i].bottom = bottom - relativeOffset[1];\n });\n this.hasScrollTicking = false;\n }\n }, {\n key: \"getRelativeOffset\",\n value: function getRelativeOffset(offset) {\n var relativeOffset = [0, 0];\n\n if (offset) {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * this.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n }\n\n return relativeOffset;\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = this.html;\n } else if (target === 'bottom') {\n target = this.html.offsetHeight - window.innerHeight;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n offset = target.getBoundingClientRect().top + offset + this.instance.scroll.y;\n } else {\n offset = target + offset;\n }\n\n var isTargetReached = function isTargetReached() {\n return parseInt(window.pageYOffset) === parseInt(offset);\n };\n\n if (callback) {\n if (isTargetReached()) {\n callback();\n return;\n } else {\n var onScroll = function onScroll() {\n if (isTargetReached()) {\n window.removeEventListener('scroll', onScroll);\n callback();\n }\n };\n\n window.addEventListener('scroll', onScroll);\n }\n }\n\n window.scrollTo({\n top: offset,\n behavior: options.duration === 0 ? 'auto' : 'smooth'\n });\n }\n }, {\n key: \"update\",\n value: function update() {\n this.addElements();\n this.detectElements();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n window.removeEventListener('scroll', this.checkScroll, false);\n }\n }]);\n\n return _default;\n}(_default);\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nvar tinyEmitter = E;\n\nvar lethargy = createCommonjsModule(function (module, exports) {\n// Generated by CoffeeScript 1.9.2\n(function() {\n var root;\n\n root = exports !== null ? exports : this;\n\n root.Lethargy = (function() {\n function Lethargy(stability, sensitivity, tolerance, delay) {\n this.stability = stability != null ? Math.abs(stability) : 8;\n this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100;\n this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1;\n this.delay = delay != null ? delay : 150;\n this.lastUpDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.lastDownDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.deltasTimestamp = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n }\n\n Lethargy.prototype.check = function(e) {\n var lastDelta;\n e = e.originalEvent || e;\n if (e.wheelDelta != null) {\n lastDelta = e.wheelDelta;\n } else if (e.deltaY != null) {\n lastDelta = e.deltaY * -40;\n } else if ((e.detail != null) || e.detail === 0) {\n lastDelta = e.detail * -40;\n }\n this.deltasTimestamp.push(Date.now());\n this.deltasTimestamp.shift();\n if (lastDelta > 0) {\n this.lastUpDeltas.push(lastDelta);\n this.lastUpDeltas.shift();\n return this.isInertia(1);\n } else {\n this.lastDownDeltas.push(lastDelta);\n this.lastDownDeltas.shift();\n return this.isInertia(-1);\n }\n };\n\n Lethargy.prototype.isInertia = function(direction) {\n var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum;\n lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas;\n if (lastDeltas[0] === null) {\n return direction;\n }\n if (this.deltasTimestamp[(this.stability * 2) - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[(this.stability * 2) - 1]) {\n return false;\n }\n lastDeltasOld = lastDeltas.slice(0, this.stability);\n lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2);\n oldSum = lastDeltasOld.reduce(function(t, s) {\n return t + s;\n });\n newSum = lastDeltasNew.reduce(function(t, s) {\n return t + s;\n });\n oldAverage = oldSum / lastDeltasOld.length;\n newAverage = newSum / lastDeltasNew.length;\n if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && (this.sensitivity < Math.abs(newAverage))) {\n return direction;\n } else {\n return false;\n }\n };\n\n Lethargy.prototype.showLastUpDeltas = function() {\n return this.lastUpDeltas;\n };\n\n Lethargy.prototype.showLastDownDeltas = function() {\n return this.lastDownDeltas;\n };\n\n return Lethargy;\n\n })();\n\n}).call(commonjsGlobal);\n});\n\nvar support = (function getSupport() {\n return {\n hasWheelEvent: 'onwheel' in document,\n hasMouseWheelEvent: 'onmousewheel' in document,\n hasTouch: ('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,\n hasTouchWin: navigator.msMaxTouchPoints && navigator.msMaxTouchPoints > 1,\n hasPointer: !!window.navigator.msPointerEnabled,\n hasKeyDown: 'onkeydown' in document,\n isFirefox: navigator.userAgent.indexOf('Firefox') > -1\n };\n})();\n\nvar toString = Object.prototype.toString,\n hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\nvar bindallStandalone = function(object) {\n if(!object) return console.warn('bindAll requires at least one argument.');\n\n var functions = Array.prototype.slice.call(arguments, 1);\n\n if (functions.length === 0) {\n\n for (var method in object) {\n if(hasOwnProperty$1.call(object, method)) {\n if(typeof object[method] == 'function' && toString.call(object[method]) == \"[object Function]\") {\n functions.push(method);\n }\n }\n }\n }\n\n for(var i = 0; i < functions.length; i++) {\n var f = functions[i];\n object[f] = bind(object[f], object);\n }\n};\n\n/*\n Faster bind without specific-case checking. (see https://coderwall.com/p/oi3j3w).\n bindAll is only needed for events binding so no need to make slow fixes for constructor\n or partial application.\n*/\nfunction bind(func, context) {\n return function() {\n return func.apply(context, arguments);\n };\n}\n\nvar Lethargy = lethargy.Lethargy;\n\n\n\nvar EVT_ID = 'virtualscroll';\n\nvar src = VirtualScroll;\n\nvar keyCodes = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SPACE: 32\n};\n\nfunction VirtualScroll(options) {\n bindallStandalone(this, '_onWheel', '_onMouseWheel', '_onTouchStart', '_onTouchMove', '_onKeyDown');\n\n this.el = window;\n if (options && options.el) {\n this.el = options.el;\n delete options.el;\n }\n this.options = objectAssign({\n mouseMultiplier: 1,\n touchMultiplier: 2,\n firefoxMultiplier: 15,\n keyStep: 120,\n preventTouch: false,\n unpreventTouchClass: 'vs-touchmove-allowed',\n limitInertia: false,\n useKeyboard: true,\n useTouch: true\n }, options);\n\n if (this.options.limitInertia) this._lethargy = new Lethargy();\n\n this._emitter = new tinyEmitter();\n this._event = {\n y: 0,\n x: 0,\n deltaX: 0,\n deltaY: 0\n };\n this.touchStartX = null;\n this.touchStartY = null;\n this.bodyTouchAction = null;\n\n if (this.options.passive !== undefined) {\n this.listenerOptions = {passive: this.options.passive};\n }\n}\n\nVirtualScroll.prototype._notify = function(e) {\n var evt = this._event;\n evt.x += evt.deltaX;\n evt.y += evt.deltaY;\n\n this._emitter.emit(EVT_ID, {\n x: evt.x,\n y: evt.y,\n deltaX: evt.deltaX,\n deltaY: evt.deltaY,\n originalEvent: e\n });\n};\n\nVirtualScroll.prototype._onWheel = function(e) {\n var options = this.options;\n if (this._lethargy && this._lethargy.check(e) === false) return;\n var evt = this._event;\n\n // In Chrome and in Firefox (at least the new one)\n evt.deltaX = e.wheelDeltaX || e.deltaX * -1;\n evt.deltaY = e.wheelDeltaY || e.deltaY * -1;\n\n // for our purpose deltamode = 1 means user is on a wheel mouse, not touch pad\n // real meaning: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent#Delta_modes\n if(support.isFirefox && e.deltaMode == 1) {\n evt.deltaX *= options.firefoxMultiplier;\n evt.deltaY *= options.firefoxMultiplier;\n }\n\n evt.deltaX *= options.mouseMultiplier;\n evt.deltaY *= options.mouseMultiplier;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onMouseWheel = function(e) {\n if (this.options.limitInertia && this._lethargy.check(e) === false) return;\n\n var evt = this._event;\n\n // In Safari, IE and in Chrome if 'wheel' isn't defined\n evt.deltaX = (e.wheelDeltaX) ? e.wheelDeltaX : 0;\n evt.deltaY = (e.wheelDeltaY) ? e.wheelDeltaY : e.wheelDelta;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onTouchStart = function(e) {\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n};\n\nVirtualScroll.prototype._onTouchMove = function(e) {\n var options = this.options;\n if(options.preventTouch\n && !e.target.classList.contains(options.unpreventTouchClass)) {\n e.preventDefault();\n }\n\n var evt = this._event;\n\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n\n evt.deltaX = (t.pageX - this.touchStartX) * options.touchMultiplier;\n evt.deltaY = (t.pageY - this.touchStartY) * options.touchMultiplier;\n\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onKeyDown = function(e) {\n var evt = this._event;\n evt.deltaX = evt.deltaY = 0;\n var windowHeight = window.innerHeight - 40;\n\n switch(e.keyCode) {\n case keyCodes.LEFT:\n case keyCodes.UP:\n evt.deltaY = this.options.keyStep;\n break;\n\n case keyCodes.RIGHT:\n case keyCodes.DOWN:\n evt.deltaY = - this.options.keyStep;\n break;\n case e.shiftKey:\n evt.deltaY = windowHeight;\n break;\n case keyCodes.SPACE:\n evt.deltaY = - windowHeight;\n break;\n default:\n return;\n }\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._bind = function() {\n if(support.hasWheelEvent) this.el.addEventListener('wheel', this._onWheel, this.listenerOptions);\n if(support.hasMouseWheelEvent) this.el.addEventListener('mousewheel', this._onMouseWheel, this.listenerOptions);\n\n if(support.hasTouch && this.options.useTouch) {\n this.el.addEventListener('touchstart', this._onTouchStart, this.listenerOptions);\n this.el.addEventListener('touchmove', this._onTouchMove, this.listenerOptions);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n this.bodyTouchAction = document.body.style.msTouchAction;\n document.body.style.msTouchAction = 'none';\n this.el.addEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.addEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.addEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype._unbind = function() {\n if(support.hasWheelEvent) this.el.removeEventListener('wheel', this._onWheel);\n if(support.hasMouseWheelEvent) this.el.removeEventListener('mousewheel', this._onMouseWheel);\n\n if(support.hasTouch) {\n this.el.removeEventListener('touchstart', this._onTouchStart);\n this.el.removeEventListener('touchmove', this._onTouchMove);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n document.body.style.msTouchAction = this.bodyTouchAction;\n this.el.removeEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.removeEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.removeEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype.on = function(cb, ctx) {\n this._emitter.on(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (events && events[EVT_ID] && events[EVT_ID].length === 1) this._bind();\n};\n\nVirtualScroll.prototype.off = function(cb, ctx) {\n this._emitter.off(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (!events[EVT_ID] || events[EVT_ID].length <= 0) this._unbind();\n};\n\nVirtualScroll.prototype.reset = function() {\n var evt = this._event;\n evt.x = 0;\n evt.y = 0;\n};\n\nVirtualScroll.prototype.destroy = function() {\n this._emitter.off();\n this._unbind();\n};\n\nfunction lerp(start, end, amt) {\n return (1 - amt) * start + amt * end;\n}\n\nfunction getTranslate(el) {\n var translate = {};\n if (!window.getComputedStyle) return;\n var style = getComputedStyle(el);\n var transform = style.transform || style.webkitTransform || style.mozTransform;\n var mat = transform.match(/^matrix3d\\((.+)\\)$/);\n\n if (mat) {\n translate.x = mat ? parseFloat(mat[1].split(', ')[12]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[13]) : 0;\n } else {\n mat = transform.match(/^matrix\\((.+)\\)$/);\n translate.x = mat ? parseFloat(mat[1].split(', ')[4]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[5]) : 0;\n }\n\n return translate;\n}\n\n/**\n * Returns an array containing all the parent nodes of the given node\n * @param {object} node\n * @return {array} parent nodes\n */\nfunction getParents(elem) {\n // Set up a parent array\n var parents = []; // Push each parent element to the array\n\n for (; elem && elem !== document; elem = elem.parentNode) {\n parents.push(elem);\n } // Return our parent array\n\n\n return parents;\n} // https://gomakethings.com/how-to-get-the-closest-parent-element-with-a-matching-selector-using-vanilla-javascript/\n\n/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Ga\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 //Pevent scrollbar glitch/locking\n\n this.startScrollTs = undefined;\n\n if (this.scrollToRaf) {\n cancelAnimationFrame(this.scrollToRaf);\n this.scrollToRaf = null;\n }\n\n this.isScrolling = false;\n this.instance.scroll.y = Math.round(this.instance.scroll.y);\n this.html.classList.remove(this.scrollingClass);\n }\n }, {\n key: \"checkKey\",\n value: function checkKey(e) {\n var _this3 = this;\n\n if (this.stop) {\n // If we are stopped, we don't want any scroll to occur because of a keypress\n // Prevent tab to scroll to activeElement\n if (e.keyCode == keyCodes$1.TAB) {\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0;\n });\n }\n\n return;\n }\n\n switch (e.keyCode) {\n case keyCodes$1.TAB:\n // Do not remove the RAF\n // It allows to override the browser's native scrollTo, which is essential\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0; // Request scrollTo on the focusedElement, putting it at the center of the screen\n\n _this3.scrollTo(document.activeElement, {\n offset: -window.innerHeight / 2\n });\n });\n break;\n\n case keyCodes$1.UP:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] -= 240;\n }\n\n break;\n\n case keyCodes$1.DOWN:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] += 240;\n }\n\n break;\n\n case keyCodes$1.PAGEUP:\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n break;\n\n case keyCodes$1.PAGEDOWN:\n this.instance.delta[this.directionAxis] += window.innerHeight;\n break;\n\n case keyCodes$1.HOME:\n this.instance.delta[this.directionAxis] -= this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.END:\n this.instance.delta[this.directionAxis] += this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.SPACE:\n if (this.isActiveElementScrollSensitive()) {\n if (e.shiftKey) {\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n } else {\n this.instance.delta[this.directionAxis] += window.innerHeight;\n }\n }\n\n break;\n\n default:\n return;\n }\n\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.isScrolling = true;\n this.checkScroll();\n this.html.classList.add(this.scrollingClass);\n }\n }, {\n key: \"isActiveElementScrollSensitive\",\n value: function isActiveElementScrollSensitive() {\n return !(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement) && !(document.activeElement instanceof HTMLButtonElement) && !(document.activeElement instanceof HTMLSelectElement);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this4 = this;\n\n var forced = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (forced || this.isScrolling || this.isDraggingScrollbar) {\n if (!this.hasScrollTicking) {\n this.checkScrollRaf = requestAnimationFrame(function () {\n return _this4.checkScroll();\n });\n this.hasScrollTicking = true;\n }\n\n this.updateScroll();\n var distance = Math.abs(this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]);\n var timeSinceStart = Date.now() - this.startScrollTs; // Get the time since the scroll was started: the scroll can be stopped again only past 100ms\n\n if (!this.animatingScroll && timeSinceStart > 100 && (distance < 0.5 && this.instance.delta[this.directionAxis] != 0 || distance < 0.5 && this.instance.delta[this.directionAxis] == 0)) {\n this.stopScrolling();\n }\n\n Object.entries(this.sections).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n section = _ref2[1];\n\n if (section.persistent || _this4.instance.scroll[_this4.directionAxis] > section.offset[_this4.directionAxis] && _this4.instance.scroll[_this4.directionAxis] < section.limit[_this4.directionAxis]) {\n if (_this4.direction === 'horizontal') {\n _this4.transform(section.el, -_this4.instance.scroll[_this4.directionAxis], 0);\n } else {\n _this4.transform(section.el, 0, -_this4.instance.scroll[_this4.directionAxis]);\n }\n\n if (!section.inView) {\n section.inView = true;\n section.el.style.opacity = 1;\n section.el.style.pointerEvents = 'all';\n section.el.setAttribute(\"data-\".concat(_this4.name, \"-section-inview\"), '');\n }\n } else {\n if (section.inView || forced) {\n section.inView = false;\n section.el.style.opacity = 0;\n section.el.style.pointerEvents = 'none';\n section.el.removeAttribute(\"data-\".concat(_this4.name, \"-section-inview\"));\n }\n\n _this4.transform(section.el, 0, 0);\n }\n });\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.detectElements();\n this.transformElements();\n\n if (this.hasScrollbar) {\n var scrollBarTranslation = this.instance.scroll[this.directionAxis] / this.instance.limit[this.directionAxis] * this.scrollBarLimit[this.directionAxis];\n\n if (this.direction === 'horizontal') {\n this.transform(this.scrollbarThumb, scrollBarTranslation, 0);\n } else {\n this.transform(this.scrollbarThumb, 0, scrollBarTranslation);\n }\n }\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n this.hasScrollTicking = false;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.checkContext();\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.update();\n }\n }, {\n key: \"updateDelta\",\n value: function updateDelta(e) {\n var delta;\n var gestureDirection = this[this.context] && this[this.context].gestureDirection ? this[this.context].gestureDirection : this.gestureDirection;\n\n if (gestureDirection === 'both') {\n delta = e.deltaX + e.deltaY;\n } else if (gestureDirection === 'vertical') {\n delta = e.deltaY;\n } else if (gestureDirection === 'horizontal') {\n delta = e.deltaX;\n } else {\n delta = e.deltaY;\n }\n\n this.instance.delta[this.directionAxis] -= delta * this.multiplier;\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n }\n }, {\n key: \"updateScroll\",\n value: function updateScroll(e) {\n if (this.isScrolling || this.isDraggingScrollbar) {\n this.instance.scroll[this.directionAxis] = lerp(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis], this.lerp);\n } else {\n if (this.instance.scroll[this.directionAxis] > this.instance.limit[this.directionAxis]) {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.limit[this.directionAxis]);\n } else if (this.instance.scroll.y < 0) {\n this.setScroll(this.instance.scroll[this.directionAxis], 0);\n } else {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis]);\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (this.instance.delta.y > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (this.instance.delta.y < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n\n if (this.instance.delta.x > this.instance.scroll.x) {\n if (this.instance.direction !== 'right') {\n this.instance.direction = 'right';\n }\n } else if (this.instance.delta.x < this.instance.scroll.x) {\n if (this.instance.direction !== 'left') {\n this.instance.direction = 'left';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (this.instance.delta[this.directionAxis] != this.instance.scroll[this.directionAxis]) {\n this.instance.speed = (this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"initScrollBar\",\n value: function initScrollBar() {\n this.scrollbar = document.createElement('span');\n this.scrollbarThumb = document.createElement('span');\n this.scrollbar.classList.add(\"\".concat(this.scrollbarClass));\n this.scrollbarThumb.classList.add(\"\".concat(this.scrollbarClass, \"_thumb\"));\n this.scrollbar.append(this.scrollbarThumb);\n\n if (this.scrollbarContainer) {\n this.scrollbarContainer.append(this.scrollbar);\n } else {\n document.body.append(this.scrollbar);\n } // Scrollbar Events\n\n\n this.getScrollBar = this.getScrollBar.bind(this);\n this.releaseScrollBar = this.releaseScrollBar.bind(this);\n this.moveScrollBar = this.moveScrollBar.bind(this);\n this.scrollbarThumb.addEventListener('mousedown', this.getScrollBar);\n window.addEventListener('mouseup', this.releaseScrollBar);\n window.addEventListener('mousemove', this.moveScrollBar); // Set scrollbar values\n\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"reinitScrollBar\",\n value: function reinitScrollBar() {\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"destroyScrollBar\",\n value: function destroyScrollBar() {\n this.scrollbarThumb.removeEventListener('mousedown', this.getScrollBar);\n window.removeEventListener('mouseup', this.releaseScrollBar);\n window.removeEventListener('mousemove', this.moveScrollBar);\n this.scrollbar.remove();\n }\n }, {\n key: \"getScrollBar\",\n value: function getScrollBar(e) {\n this.isDraggingScrollbar = true;\n this.checkScroll();\n this.html.classList.remove(this.scrollingClass);\n this.html.classList.add(this.draggingClass);\n }\n }, {\n key: \"releaseScrollBar\",\n value: function releaseScrollBar(e) {\n this.isDraggingScrollbar = false;\n\n if (this.isScrolling) {\n this.html.classList.add(this.scrollingClass);\n }\n\n this.html.classList.remove(this.draggingClass);\n }\n }, {\n key: \"moveScrollBar\",\n value: function moveScrollBar(e) {\n var _this5 = this;\n\n if (this.isDraggingScrollbar) {\n requestAnimationFrame(function () {\n var x = (e.clientX - _this5.scrollbarBCR.left) * 100 / _this5.scrollbarWidth * _this5.instance.limit.x / 100;\n var y = (e.clientY - _this5.scrollbarBCR.top) * 100 / _this5.scrollbarHeight * _this5.instance.limit.y / 100;\n\n if (y > 0 && y < _this5.instance.limit.y) {\n _this5.instance.delta.y = y;\n }\n\n if (x > 0 && x < _this5.instance.limit.x) {\n _this5.instance.delta.x = x;\n }\n });\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this6 = this;\n\n this.els = {};\n this.parallaxElements = {}; // this.sections.forEach((section, y) => {\n\n var els = this.el.querySelectorAll(\"[data-\".concat(this.name, \"]\"));\n els.forEach(function (el, index) {\n // Try and find the target's parent section\n var targetParents = getParents(el);\n var section = Object.entries(_this6.sections).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n section = _ref4[1];\n\n return section;\n }).find(function (section) {\n return targetParents.includes(section.el);\n });\n var cl = el.dataset[_this6.name + 'Class'] || _this6[\"class\"];\n var id = typeof el.dataset[_this6.name + 'Id'] === 'string' ? el.dataset[_this6.name + 'Id'] : 'el' + index;\n var top;\n var left;\n var repeat = el.dataset[_this6.name + 'Repeat'];\n var call = el.dataset[_this6.name + 'Call'];\n var position = el.dataset[_this6.name + 'Position'];\n var delay = el.dataset[_this6.name + 'Delay'];\n var direction = el.dataset[_this6.name + 'Direction'];\n var sticky = typeof el.dataset[_this6.name + 'Sticky'] === 'string';\n var speed = el.dataset[_this6.name + 'Speed'] ? parseFloat(el.dataset[_this6.name + 'Speed']) / 10 : false;\n var offset = typeof el.dataset[_this6.name + 'Offset'] === 'string' ? el.dataset[_this6.name + 'Offset'].split(',') : _this6.offset;\n var target = el.dataset[_this6.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n\n if (section === null) {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n } else {\n if (!section.inView) {\n top = targetElBCR.top - getTranslate(section.el).y - getTranslate(targetEl).y;\n left = targetElBCR.left - getTranslate(section.el).x - getTranslate(targetEl).x;\n } else {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n }\n }\n\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n var middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n\n if (sticky) {\n var elBCR = el.getBoundingClientRect();\n var elTop = elBCR.top;\n var elLeft = elBCR.left;\n var elDistance = {\n x: elLeft - left,\n y: elTop - top\n };\n top += window.innerHeight;\n left += window.innerWidth;\n bottom = elTop + targetEl.offsetHeight - el.offsetHeight - elDistance[_this6.directionAxis];\n right = elLeft + targetEl.offsetWidth - el.offsetWidth - elDistance[_this6.directionAxis];\n middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n }\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this6.repeat;\n }\n\n var relativeOffset = [0, 0];\n\n if (offset) {\n if (_this6.direction === 'horizontal') {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowWidth / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n left = left + relativeOffset[0];\n right = right - relativeOffset[1];\n } else {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n }\n }\n\n var mappedEl = {\n el: el,\n id: id,\n \"class\": cl,\n section: section,\n top: top,\n middle: middle,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call,\n speed: speed,\n delay: delay,\n position: position,\n target: targetEl,\n direction: direction,\n sticky: sticky\n };\n _this6.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this6.setInView(_this6.els[id], id);\n }\n\n if (speed !== false || sticky) {\n _this6.parallaxElements[id] = mappedEl;\n }\n }); // });\n }\n }, {\n key: \"addSections\",\n value: function addSections() {\n var _this7 = this;\n\n this.sections = {};\n var sections = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-section]\"));\n\n if (sections.length === 0) {\n sections = [this.el];\n }\n\n sections.forEach(function (section, index) {\n var id = typeof section.dataset[_this7.name + 'Id'] === 'string' ? section.dataset[_this7.name + 'Id'] : 'section' + index;\n var sectionBCR = section.getBoundingClientRect();\n var offset = {\n x: sectionBCR.left - window.innerWidth * 1.5 - getTranslate(section).x,\n y: sectionBCR.top - window.innerHeight * 1.5 - getTranslate(section).y\n };\n var limit = {\n x: offset.x + sectionBCR.width + window.innerWidth * 2,\n y: offset.y + sectionBCR.height + window.innerHeight * 2\n };\n var persistent = typeof section.dataset[_this7.name + 'Persistent'] === 'string';\n section.setAttribute('data-scroll-section-id', id);\n var mappedSection = {\n el: section,\n offset: offset,\n limit: limit,\n inView: false,\n persistent: persistent,\n id: id\n };\n _this7.sections[id] = mappedSection;\n });\n }\n }, {\n key: \"transform\",\n value: function transform(element, x, y, delay) {\n var transform;\n\n if (!delay) {\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(x, \",\").concat(y, \",0,1)\");\n } else {\n var start = getTranslate(element);\n var lerpX = lerp(start.x, x, delay);\n var lerpY = lerp(start.y, y, delay);\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(lerpX, \",\").concat(lerpY, \",0,1)\");\n }\n\n element.style.webkitTransform = transform;\n element.style.msTransform = transform;\n element.style.transform = transform;\n }\n }, {\n key: \"transformElements\",\n value: function transformElements(isForced) {\n var _this8 = this;\n\n var setAllElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var scrollRight = this.instance.scroll.x + this.windowWidth;\n var scrollBottom = this.instance.scroll.y + this.windowHeight;\n var scrollMiddle = {\n x: this.instance.scroll.x + this.windowMiddle.x,\n y: this.instance.scroll.y + this.windowMiddle.y\n };\n Object.entries(this.parallaxElements).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n i = _ref6[0],\n current = _ref6[1];\n\n var transformDistance = false;\n\n if (isForced) {\n transformDistance = 0;\n }\n\n if (current.inView || setAllElements) {\n switch (current.position) {\n case 'top':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementTop':\n transformDistance = (scrollBottom - current.top) * -current.speed;\n break;\n\n case 'bottom':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollBottom + _this8.windowHeight) * current.speed;\n break;\n\n case 'left':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementLeft':\n transformDistance = (scrollRight - current.left) * -current.speed;\n break;\n\n case 'right':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollRight + _this8.windowHeight) * current.speed;\n break;\n\n default:\n transformDistance = (scrollMiddle[_this8.directionAxis] - current.middle[_this8.directionAxis]) * -current.speed;\n break;\n }\n }\n\n if (current.sticky) {\n if (current.inView) {\n if (_this8.direction === 'horizontal') {\n transformDistance = _this8.instance.scroll.x - current.left + window.innerWidth;\n } else {\n transformDistance = _this8.instance.scroll.y - current.top + window.innerHeight;\n }\n } else {\n if (_this8.direction === 'horizontal') {\n if (_this8.instance.scroll.x < current.left - window.innerWidth && _this8.instance.scroll.x < current.left - window.innerWidth / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.x > current.right && _this8.instance.scroll.x > current.right + 100) {\n transformDistance = current.right - current.left + window.innerWidth;\n } else {\n transformDistance = false;\n }\n } else {\n if (_this8.instance.scroll.y < current.top - window.innerHeight && _this8.instance.scroll.y < current.top - window.innerHeight / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.y > current.bottom && _this8.instance.scroll.y > current.bottom + 100) {\n transformDistance = current.bottom - current.top + window.innerHeight;\n } else {\n transformDistance = false;\n }\n }\n }\n }\n\n if (transformDistance !== false) {\n if (current.direction === 'horizontal' || _this8.direction === 'horizontal' && current.direction !== 'vertical') {\n _this8.transform(current.el, transformDistance, 0, isForced ? false : current.delay);\n } else {\n _this8.transform(current.el, 0, transformDistance, isForced ? false : current.delay);\n }\n }\n });\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var _this9 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var duration = !isNaN(parseInt(options.duration)) ? parseInt(options.duration) : 1000; // Duration of the scroll animation in milliseconds\n\n var easing = options.easing || [0.25, 0.0, 0.35, 1.0]; // An array of 4 floats between 0 and 1 defining the bezier curve for the animation's easing. See http://greweb.me/bezier-easing-editor/example/\n\n var disableLerp = options.disableLerp ? true : false; // Lerp effect won't be applied if set to true\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n easing = src$1.apply(void 0, _toConsumableArray(easing));\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = 0;\n } else if (target === 'bottom') {\n target = this.instance.limit.y;\n } else if (target === 'left') {\n target = 0;\n } else if (target === 'right') {\n target = this.instance.limit.x;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n // Verify the given target belongs to this scroll scope\n var targetInScope = getParents(target).includes(this.el);\n\n if (!targetInScope) {\n // If the target isn't inside our main element, abort any action\n return;\n } // Get target offset from top\n\n\n var targetBCR = target.getBoundingClientRect();\n var offsetTop = targetBCR.top;\n var offsetLeft = targetBCR.left; // Try and find the target's parent section\n\n var targetParents = getParents(target);\n var parentSection = targetParents.find(function (candidate) {\n return Object.entries(_this9.sections) // Get sections associative array as a regular array\n .map(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n key = _ref8[0],\n section = _ref8[1];\n\n return section;\n }) // map to section only (we dont need the key here)\n .find(function (section) {\n return section.el == candidate;\n }); // finally find the section that matches the candidate\n });\n var parentSectionOffset = 0;\n\n if (parentSection) {\n parentSectionOffset = getTranslate(parentSection)[this.directionAxis]; // We got a parent section, store it's current offset to remove it later\n } else {\n // if no parent section is found we need to use instance scroll directly\n parentSectionOffset = -this.instance.scroll[this.directionAxis];\n } // Final value of scroll destination : offsetTop + (optional offset given in options) - (parent's section translate)\n\n\n if (this.direction === 'horizontal') {\n offset = offsetLeft + offset - parentSectionOffset;\n } else {\n offset = offsetTop + offset - parentSectionOffset;\n }\n } else {\n offset = target + offset;\n } // Actual scrollto\n // ==========================================================================\n // Setup\n\n\n var scrollStart = parseFloat(this.instance.delta[this.directionAxis]);\n var scrollTarget = Math.max(0, Math.min(offset, this.instance.limit[this.directionAxis])); // Make sure our target is in the scroll boundaries\n\n var scrollDiff = scrollTarget - scrollStart;\n\n var render = function render(p) {\n if (disableLerp) {\n if (_this9.direction === 'horizontal') {\n _this9.setScroll(scrollStart + scrollDiff * p, _this9.instance.delta.y);\n } else {\n _this9.setScroll(_this9.instance.delta.x, scrollStart + scrollDiff * p);\n }\n } else {\n _this9.instance.delta[_this9.directionAxis] = scrollStart + scrollDiff * p;\n }\n }; // Prepare the scroll\n\n\n this.animatingScroll = true; // This boolean allows to prevent `checkScroll()` from calling `stopScrolling` when the animation is slow (i.e. at the beginning of an EaseIn)\n\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.startScrolling(); // Restart the scroll\n // Start the animation loop\n\n var start = Date.now();\n\n var loop = function loop() {\n var p = (Date.now() - start) / duration; // Animation progress\n\n if (p > 1) {\n // Animation ends\n render(1);\n _this9.animatingScroll = false;\n if (duration == 0) _this9.update();\n if (callback) callback();\n } else {\n _this9.scrollToRaf = requestAnimationFrame(loop);\n render(easing(p));\n }\n };\n\n loop();\n }\n }, {\n key: \"update\",\n value: function update() {\n this.setScrollLimit();\n this.addSections();\n this.addElements();\n this.detectElements();\n this.updateScroll();\n this.transformElements(true);\n this.reinitScrollBar();\n this.checkScroll(true);\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {\n this.stop = false;\n }\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {\n this.stop = true;\n }\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance = _objectSpread2(_objectSpread2({}, this.instance), {}, {\n scroll: {\n x: x,\n y: y\n },\n delta: {\n x: x,\n y: y\n },\n speed: 0\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n this.stopScrolling();\n this.html.classList.remove(this.smoothClass);\n this.vs.destroy();\n this.destroyScrollBar();\n window.removeEventListener('keydown', this.checkKey, false);\n }\n }]);\n\n return _default;\n}(_default);\n\nvar Smooth = /*#__PURE__*/function () {\n function Smooth() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Smooth);\n\n this.options = options; // Override default options with given ones\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n if (!this.smooth && this.direction == 'horizontal') console.warn('\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 the related image.\n *\n * @see ../utils/image.js\n *\n * It is recommended to wrap your `` into an element with the\n * CSS class name `.c-lazy`. The CSS class name modifier `.-lazy-loaded`\n * will be applied on both the image and the parent wrapper.\n *\n * ```html\n *
\n * \"\"\n *
\n * ```\n *\n * @param {LocomotiveScroll} args - The Locomotive Scroll instance.\n */\n lazyLoad(args) {\n lazyLoadImage(args.obj.el, 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 $html = document.documentElement;\nconst $body = document.body;\n\nexport { $html, $body };\n", "import modular from 'modujs';\nimport * as modules from './modules';\nimport globals from './globals';\nimport { $html } from './utils/dom';\nimport config from './config';\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(config.CLASS.LOADED);\n $html.classList.add(config.CLASS.READY);\n $html.classList.remove(config.CLASS.LOADING);\n}\n\n"], + "mappings": "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", "names": [] } From f1544d24f9e5c40e3a652740c944413107b45447 Mon Sep 17 00:00:00 2001 From: Lucas Vallenet Date: Tue, 24 May 2022 14:23:38 +0200 Subject: [PATCH 3/4] Update config.js vars and export --- assets/scripts/app.js | 6 +++--- assets/scripts/config.js | 15 +++++---------- www/assets/scripts/app.js | 14 ++++++-------- www/assets/scripts/app.js.map | 4 ++-- 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/assets/scripts/app.js b/assets/scripts/app.js index d9684656..0f01ff30 100644 --- a/assets/scripts/app.js +++ b/assets/scripts/app.js @@ -29,8 +29,8 @@ function init() { app.init(app); - $html.classList.add(config.CLASS.LOADED); - $html.classList.add(config.CLASS.READY); - $html.classList.remove(config.CLASS.LOADING); + $html.classList.add(config.CLASS_NAME.LOADED); + $html.classList.add(config.CLASS_NAME.READY); + $html.classList.remove(config.CLASS_NAME.LOADING); } diff --git a/assets/scripts/config.js b/assets/scripts/config.js index fbfb0cef..fff2fefc 100644 --- a/assets/scripts/config.js +++ b/assets/scripts/config.js @@ -1,20 +1,15 @@ const env = process.env.NODE_ENV -export default config = { - - // App - APP_NAME: 'Boilerplate', - DATA_API_KEY: '.data-api', - - // Env +export default config = Object.freeze({ + // Environments ENV: env, IS_PROD: env === 'production', IS_DEV: env === 'development', - // Classnames - CLASS: { + // CSS class names + CLASS_NAME: { LOADING: 'is-loading', READY: 'is-ready', LOADED: 'is-loaded', }, -} +}) diff --git a/www/assets/scripts/app.js b/www/assets/scripts/app.js index d6f47162..40bd8338 100644 --- a/www/assets/scripts/app.js +++ b/www/assets/scripts/app.js @@ -1616,18 +1616,16 @@ // assets/scripts/config.js var env = "development"; - var config_default = config = { - APP_NAME: "Boilerplate", - DATA_API_KEY: ".data-api", + var config_default = config = Object.freeze({ ENV: env, IS_PROD: env === "production", IS_DEV: env === "development", - CLASS: { + CLASS_NAME: { LOADING: "is-loading", READY: "is-ready", LOADED: "is-loaded" } - }; + }); // assets/scripts/modules/Load.js var Load_default = class extends _default { @@ -4246,9 +4244,9 @@ function init() { globals_default(); app.init(app); - $html.classList.add(config_default.CLASS.LOADED); - $html.classList.add(config_default.CLASS.READY); - $html.classList.remove(config_default.CLASS.LOADING); + $html.classList.add(config_default.CLASS_NAME.LOADED); + $html.classList.add(config_default.CLASS_NAME.READY); + $html.classList.remove(config_default.CLASS_NAME.LOADING); } })(); /* diff --git a/www/assets/scripts/app.js.map b/www/assets/scripts/app.js.map index effa44a1..bc75144e 100644 --- a/www/assets/scripts/app.js.map +++ b/www/assets/scripts/app.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../node_modules/node_modules/babel-plugin-transform-async-to-promises/helpers.js", "../../../node_modules/@barba/core/src/modules/Logger.ts", "../../../node_modules/@barba/core/src/defs/hooks.ts", "../../../node_modules/node_modules/path-to-regexp/index.js", "../../../node_modules/@barba/core/src/schemas/attribute.ts", "../../../node_modules/@barba/core/src/utils/dom.ts", "../../../node_modules/@barba/core/src/utils/history.ts", "../../../node_modules/@barba/core/src/utils/helpers.ts", "../../../node_modules/@barba/core/src/utils/url.ts", "../../../node_modules/@barba/core/src/utils/request.ts", "../../../node_modules/node_modules/is-promise/index.js", "../../../node_modules/@barba/core/src/utils/run-async.ts", "../../../node_modules/@barba/core/src/hooks.ts", "../../../node_modules/@barba/core/src/modules/Ignore.ts", "../../../node_modules/@barba/core/src/modules/Cache.ts", "../../../node_modules/@barba/core/src/modules/Prevent.ts", "../../../node_modules/@barba/core/src/modules/Error.ts", "../../../node_modules/@barba/core/src/modules/Store.ts", "../../../node_modules/@barba/core/src/modules/Transitions.ts", "../../../node_modules/@barba/core/src/modules/Views.ts", "../../../node_modules/@barba/core/src/polyfills/index.ts", "../../../node_modules/@barba/core/src/schemas/page.ts", "../../../node_modules/@barba/core/src/core.ts", "../../../node_modules/svg4everybody/dist/svg4everybody.js", "../../../node_modules/modujs/dist/main.esm.js", "../../../assets/scripts/modules.js", "../../../assets/scripts/modules/Load.js", "../../../assets/scripts/config.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/dom.js", "../../../assets/scripts/app.js"], - "sourcesContent": ["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n", "/**\n * @barba/core/modules/Logger\n *

\n * ## Logger.\n *\n * - Display informations via the console\n *\n * @module core/modules/Logger\n * @preferred\n */\n\n/***/\n\n/**\n * Log levels, all lower level messages are printed\n *\n * 0. mute\n * 1. error = `console.error()`\n * 2. warning= `console.warn()`\n * 3. info = `console.info()`\n * 4. debug = `console.log()`\n */\nexport enum LogLevels {\n off = 0,\n error = 1,\n warning = 2,\n info = 3,\n debug = 4,\n}\n\n/**\n * Global log level\n */\nlet _level: number = LogLevels.off;\n\nexport class Logger {\n /**\n * Get global log level.\n */\n public static getLevel(): number {\n return _level;\n }\n\n /**\n * Set global log level.\n */\n public static setLevel(name: keyof typeof LogLevels): number {\n _level = LogLevels[name];\n\n return _level;\n }\n\n /**\n * Log \"prefix\".\n */\n private _source: string;\n\n /**\n * Creates an instance of Logger.\n */\n constructor(source: string) {\n this._source = source;\n }\n\n /**\n * Permanent, unremovable log.\n */\n // public print(...objects: any[]): void {\n // this._log(console.info, LogLevels.off, objects);\n // }\n\n /**\n * Error log.\n */\n public error(...objects: any[]): void {\n this._log(console.error, LogLevels.error, objects);\n }\n\n /**\n * Warn log.\n */\n public warn(...objects: any[]): void {\n this._log(console.warn, LogLevels.warning, objects);\n }\n\n /**\n * Info log.\n */\n public info(...objects: any[]): void {\n this._log(console.info, LogLevels.info, objects);\n }\n\n /**\n * Debug log.\n */\n public debug(...objects: any[]): void {\n this._log(console.log, LogLevels.debug, objects);\n }\n\n /**\n * Internal logger.\n */\n private _log(fn: () => void, level: number, objects: any[]): void {\n if (level <= Logger.getLevel()) {\n fn.apply(console, ([`[${this._source}] `].concat(objects) as unknown) as [\n\n ]);\n }\n }\n}\n", "/**\n * @module typings/core\n */\nimport { ITransitionData, ITransitionPage, IViewData } from './index';\n\nexport type HooksBarba =\n | 'ready'\n | 'page'\n | 'reset'\n | 'currentAdded'\n | 'currentRemoved'\n | 'nextAdded'\n | 'nextRemoved';\n\nexport type HooksOnce = 'beforeOnce' | 'once' | 'afterOnce';\n\nexport type HooksPage =\n | 'before'\n | 'beforeLeave'\n | 'leave'\n | 'afterLeave'\n | 'beforeEnter'\n | 'enter'\n | 'afterEnter'\n | 'after';\n\nexport type HooksBefore = 'beforeOnce' | 'beforeLeave' | 'beforeEnter';\nexport type HooksAfter = 'afterOnce' | 'afterLeave' | 'afterEnter';\n\nexport type HooksTransition = HooksOnce | HooksPage;\nexport type HooksView = HooksBefore | HooksAfter;\nexport type HooksAll = HooksBarba | HooksTransition;\n\n// Allow optional \"dynamically created\" hooks\nexport type HooksTransitionMap = { [key in HooksTransition]?: any };\n\nexport type HookFunction = (\n data?: ITransitionData | IViewData,\n t?: ITransitionPage\n) => Promise | void;\n\nexport class HookMethods {\n public before: (fn: HookFunction, ctx?: any) => void;\n public beforeLeave: (fn: HookFunction, ctx?: any) => void;\n public leave: (fn: HookFunction, ctx?: any) => void;\n public afterLeave: (fn: HookFunction, ctx?: any) => void;\n public beforeEnter: (fn: HookFunction, ctx?: any) => void;\n public enter: (fn: HookFunction, ctx?: any) => void;\n public afterEnter: (fn: HookFunction, ctx?: any) => void;\n public after: (fn: HookFunction, ctx?: any) => void;\n}\n", "/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.match = match\nmodule.exports.regexpToFunction = regexpToFunction\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match (str, options) {\n var keys = []\n var re = pathToRegexp(str, keys, options)\n return regexpToFunction(re, keys)\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction (re, keys) {\n return function (pathname, options) {\n var m = re.exec(pathname)\n if (!m) return false\n\n var path = m[0]\n var index = m.index\n var params = {}\n var decode = (options && options.decode) || decodeURIComponent\n\n for (var i = 1; i < m.length; i++) {\n if (m[i] === undefined) continue\n\n var key = keys[i - 1]\n\n if (key.repeat) {\n params[key.name] = m[i].split(key.delimiter).map(function (value) {\n return decode(value, key)\n })\n } else {\n params[key.name] = decode(m[i], key)\n }\n }\n\n return { path: path, index: index, params: params }\n }\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n var validate = options ? options.validate !== false : true\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n", "/**\n * @barba/core/schemas\n *

\n * ## Schemas description.\n *\n * @module core/schemas\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { ISchemaAttribute } from '../defs';\n\n/**\n * See [[ISchemaAttribute]]\n */\nexport const schemaAttribute: ISchemaAttribute = {\n container: 'container',\n history: 'history',\n namespace: 'namespace',\n prefix: 'data-barba',\n prevent: 'prevent',\n wrapper: 'wrapper',\n};\n", "/**\n * @barba/core/utils/dom\n *

\n * ## Dom utils\n *\n * - Access DOM contents\n * - DOM vs string conversions\n *\n * @module core/utils/dom\n * @preferred\n */\n\n/***/\n\nimport path from 'path';\n\n// Definitions\nimport { ISchemaAttribute, Link, Scope, Wrapper } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\nexport class Dom {\n private _attr: ISchemaAttribute = schemaAttribute;\n private _parser: DOMParser = new DOMParser();\n\n /**\n * Convert HTMLDocument to string.\n */\n public toString(el: HTMLElement): string {\n return el.outerHTML;\n }\n\n /**\n * Parse HTML string to HTMLDocument.\n */\n // see https://github.com/barbajs/barba/issues/362\n // Seems that using DOMParser.parseFromString causes this issue.\n public toDocument(htmlString: string): HTMLDocument {\n return this._parser.parseFromString(htmlString, 'text/html');\n }\n\n /**\n * Parse HTML string to DIVElement.\n *\n * DOMParser.parseFromString fails with img[srcset] on iOS.\n * see https://github.com/barbajs/barba/issues/362\n */\n public toElement(htmlString: string): HTMLDivElement {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString;\n return div;\n }\n\n /**\n * Get HTML content.\n */\n public getHtml(doc: HTMLDocument = document): string {\n return this.toString(doc.documentElement);\n }\n\n /**\n * Get full document content.\n */\n // getDocument(el = document.documentElement) {\n // return this.toStr(el);\n // },\n\n /**\n * Get `[data-barba=\"wrapper\"]`.\n */\n public getWrapper(scope: Scope = document): Wrapper {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.wrapper}\"]`\n );\n }\n\n /**\n * Get `[data-barba=\"container\"]`.\n */\n public getContainer(scope: Scope = document): HTMLElement | null {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.container}\"]`\n );\n }\n\n /**\n * Remove container and store next sibling (if applicable).\n */\n public removeContainer(container: HTMLElement) {\n if (document.body.contains(container)) {\n container.parentNode.removeChild(container);\n }\n }\n\n /**\n * Add container before next sibling or at the end of the wrapper.\n */\n public addContainer(container: HTMLElement, wrapper: HTMLElement) {\n const existingContainer = this.getContainer();\n\n if (existingContainer) {\n this._insertAfter(container, existingContainer);\n } else {\n wrapper.appendChild(container);\n }\n }\n\n /**\n * Get `[data-barba-namespace]`.\n */\n public getNamespace(scope: Scope = document): string | null {\n const ns = scope.querySelector(\n `[${this._attr.prefix}-${this._attr.namespace}]`\n );\n\n return ns\n ? ns.getAttribute(`${this._attr.prefix}-${this._attr.namespace}`)\n : null;\n }\n\n /**\n * Get URL from `href` value.\n */\n public getHref(el: Link): string | null {\n // HTML tagName is UPPERCASE, xhtml tagName keeps existing case.\n if (el.tagName && el.tagName.toLowerCase() === 'a') {\n // HTMLAnchorElement, full URL available\n if (typeof el.href === 'string') {\n return el.href;\n }\n\n // Probably a SVGAElement\u2026\n const href = el.getAttribute('href') || el.getAttribute('xlink:href');\n\n /* istanbul ignore else */\n if (href) {\n // When link comes from SVG, `href` returns an object, not a string.\n const attr: string =\n ((href as unknown) as SVGAnimatedString).baseVal || href;\n\n return this.resolveUrl(attr);\n }\n }\n return null;\n }\n\n // Copyright 2014 Simon Lydell\n // X11 (\u201CMIT\u201D) Licensed. (See LICENSE\n // https://github.com/lydell/resolve-url/blob/master/resolve-url.js\n /* istanbul ignore next */\n public resolveUrl(...urls: string[]) {\n const numUrls = urls.length;\n\n if (numUrls === 0) {\n throw new Error('resolveUrl requires at least one argument; got none.');\n }\n\n const base = document.createElement('base');\n base.href = arguments[0];\n\n if (numUrls === 1) {\n return base.href;\n }\n\n const head = document.getElementsByTagName('head')[0];\n head.insertBefore(base, head.firstChild);\n\n const a = document.createElement('a');\n let resolved;\n\n for (let index = 1; index < numUrls; index++) {\n a.href = arguments[index];\n resolved = a.href;\n base.href = resolved;\n }\n\n head.removeChild(base);\n\n return resolved;\n }\n\n /**\n * Insert node after another node.\n */\n private _insertAfter(newNode: Node, referenceNode: Node) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n }\n}\n\nconst dom = new Dom();\n\nexport { dom };\n", "import { HistoryAction, LinkEvent, Trigger } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\n/**\n * @barba/core/utils/history\n *

\n * ## History manager.\n *\n * - Keep track of the navigation history\n *\n * @module core/utils/history\n * @preferred\n */\n\n/**\n * State item.\n *\n * @property from\n * @property index\n */\ninterface IHistoryItem {\n /** origin */\n from: string;\n /** index */\n index: number;\n /** states */\n states: IStateItem[];\n}\n\n/***/\ninterface ICoords {\n x: number;\n y: number;\n}\n\n/**\n * History item.\n *\n * @property namespace\n * @property scroll\n * @property URL\n */\ninterface IStateItem {\n /** namespace */\n ns: string | undefined;\n /** Scroll position */\n scroll: ICoords;\n /** URL */\n url: string;\n}\n\nexport class History {\n private _session: string;\n private _states: IStateItem[] = [];\n private _pointer = -1;\n\n /**\n * Init with first state.\n */\n public init(url: string, ns: string): void {\n this._session = 'barba';\n const index = 0;\n\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n window.history && window.history.replaceState(item, '', url);\n }\n\n public change(\n url: string,\n trigger: Trigger,\n e?: LinkEvent | PopStateEvent\n ): Trigger {\n if (e && (e as PopStateEvent).state) {\n // If popstate, move to existing state\n // and get back/forward direction.\n const { state }: { state: IHistoryItem } = e as PopStateEvent;\n const { index } = state;\n const diff = this._pointer - index;\n\n trigger = this._getDirection(diff);\n\n // Work with previous states\n this.replace(state.states);\n this._pointer = index;\n } else {\n // Add new state\n this.add(url, trigger);\n }\n\n return trigger;\n }\n\n /**\n * Add a new state.\n */\n public add(url: string, trigger: Trigger): void {\n // If no state, it will be updated later.\n const ns = 'tmp';\n const index = this.size;\n const action = this._getAction(trigger);\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n switch (action) {\n case 'push':\n window.history && window.history.pushState(item, '', url);\n break;\n case 'replace':\n window.history && window.history.replaceState(item, '', url);\n break;\n /* istanbul ignore next */\n default:\n }\n }\n\n /**\n * Update state.\n */\n public update(data: any, i?: number): void {\n const index = i || this._pointer;\n const existing = this.get(index);\n const state: IStateItem = {\n ...existing,\n ...data,\n };\n\n this.set(index, state);\n }\n\n /**\n * Remove last state.\n */\n public remove(i?: number): void {\n if (i) {\n this._states.splice(i, 1);\n } else {\n this._states.pop();\n }\n\n this._pointer--;\n }\n\n /**\n * Delete all states.\n */\n public clear(): void {\n this._states = [];\n this._pointer = -1;\n }\n\n /**\n * Replace all states.\n */\n public replace(newStates: IStateItem[]): void {\n this._states = newStates;\n }\n\n /**\n * Get state by index.\n */\n public get(index: number) {\n return this._states[index];\n }\n\n /**\n * Set state by index.\n */\n public set(i: number, state: IStateItem) {\n return (this._states[i] = state);\n }\n\n /**\n * Get the current state.\n */\n get current(): IStateItem {\n return this._states[this._pointer];\n }\n\n /**\n * Get the last state (top of the history stack).\n */\n get state(): IStateItem {\n return this._states[this._states.length - 1];\n }\n\n /**\n * Get the previous state.\n */\n get previous(): IStateItem | null {\n return this._pointer < 1 ? null : this._states[this._pointer - 1];\n }\n\n /**\n * Get the state size.\n */\n get size(): number {\n return this._states.length;\n }\n\n /**\n * Get the history action: push vs replace\n */\n private _getAction(trigger: Trigger): HistoryAction {\n let action: HistoryAction = 'push';\n\n // Manage `data-barba-history` attribute\n // to get the right action (push vs replace).\n const el = trigger as HTMLAnchorElement;\n const attr = `${schemaAttribute.prefix}-${schemaAttribute.history}`;\n\n if (el.hasAttribute && el.hasAttribute(attr)) {\n action = el.getAttribute(attr) as HistoryAction;\n }\n\n return action;\n }\n\n /**\n * Get the direction of popstate change\n */\n private _getDirection(diff: number): Trigger {\n // Check if \"session switch\"\n if (Math.abs(diff) > 1) {\n // Ex 6-0 > 0 -> forward, 0-6 < 0 -> back\n return diff > 0 ? 'forward' : 'back';\n } else {\n if (diff === 0) {\n return 'popstate';\n } else {\n // Ex 6-5 > 0 -> back, 5-6 < 0 -> forward\n return diff > 0 ? 'back' : 'forward';\n }\n }\n }\n}\n\nconst history = new History();\n\nexport { history };\n", "/**\n * @barba/core/utils/helpers\n *

\n * ## Helpers\n *\n * - Update next page data\n *\n * @module core/utils/helpers\n * @preferred\n */\n\n/***/\n\n// Third-party\nimport ptr from 'path-to-regexp';\n// Definitions\nimport { ITransitionData } from '../defs';\n// Utils\nimport { dom } from './dom';\nimport { history } from './history';\n\n/**\n * Update `data.next`, the title and the history\n */\nexport const update = async (\n page: Promise,\n data: ITransitionData\n): Promise => {\n // If not already updated\n if (!data.next.html) {\n const html = await page;\n const { next } = data;\n\n if (html) {\n // see: https://github.com/barbajs/barba/issues/362\n // const nextDocument = dom.toDocument(html);\n const nextDocument = dom.toElement(html);\n\n next.namespace = dom.getNamespace(nextDocument);\n next.container = dom.getContainer(nextDocument);\n // see https://github.com/barbajs/barba/issues/362\n // next.html = dom.getHtml(nextDocument);\n // next.html = nextDocument.innerHTML;\n next.html = html;\n\n // Update history namespace (not available when initially set)\n history.update({ ns: next.namespace });\n\n // Update title.\n const { title } = dom.toDocument(html);\n\n document.title = title;\n }\n }\n};\n\n/**\n * Next tick\n */\nexport const nextTick = () =>\n new Promise(resolve => {\n window.requestAnimationFrame(resolve);\n // DEV: same result?\n // setTimeout(resolve, 0);\n });\n\n/**\n * Turn a route string such as `/user/:name` into a regular expression.\n *\n * Used for:\n *\n * - routes to ignore\n * - route transition resolution\n *\n * @see https://www.npmjs.com/package/path-to-regexp\n */\nconst pathToRegexp = ptr;\n\nexport { pathToRegexp };\n", "/**\n * @barba/core/utils/url\n *

\n * ## URL utils.\n *\n * - Collect and structure informations from URLs\n *\n * @module core/utils/url\n */\n\n/***/\n\n// Definitions\nimport { IGenericObject, IUrlBase } from '../defs';\n\n/**\n * Get location href.\n */\nexport const getHref = () => window.location.href;\n\n/**\n * Get location origin.\n */\nexport const getOrigin = () => window.location.origin;\n\n/**\n * Get port based on URL or location.\n */\nexport const getPort = (url: string = window.location.href) => parse(url).port;\n\n/**\n * Get path from URL.\n */\nexport const getPath = (url: string = window.location.href) => parse(url).path;\n\n/**\n * Get query object from URL.\n */\n// export const getQuery = (url: string): IGenericObject => parse(url).query;\n\n/**\n * Get hash from URL.\n */\n// export const getHash = (url: string): string => parse(url).hash;\n\n/**\n * Parse URL for path, query and hash and more.\n */\nexport const parse = (url: string): IUrlBase => {\n // Port\n let port;\n const matches = url.match(/:\\d+/);\n\n if (matches === null) {\n if (/^http/.test(url)) {\n port = 80;\n }\n\n if (/^https/.test(url)) {\n port = 443;\n }\n } else {\n const portString = matches[0].substring(1);\n\n port = parseInt(portString, 10);\n }\n\n // Path\n let path = url.replace(getOrigin(), '');\n let hash;\n let query = {};\n\n // Hash\n const hashIndex = path.indexOf('#');\n\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex + 1);\n path = path.slice(0, hashIndex);\n }\n\n // Query\n const queryIndex = path.indexOf('?');\n\n if (queryIndex >= 0) {\n query = parseQuery(path.slice(queryIndex + 1));\n path = path.slice(0, queryIndex);\n }\n\n return {\n hash,\n path,\n port,\n query,\n };\n};\n\n/**\n * Parse a query string to object.\n */\nexport const parseQuery = (str: string) =>\n str.split('&').reduce((acc: IGenericObject, el: string) => {\n const [key, value] = el.split('=');\n\n acc[key] = value;\n\n return acc;\n }, {});\n\n/**\n * Clean URL, remove \"hash\" and/or \"trailing slash\".\n */\nexport const clean = (url: string = window.location.href) =>\n url.replace(/(\\/#.*|\\/|#.*)$/, '');\n", "/**\n * @barba/core/utils/request\n *

\n * ## Fetch pages for transitions.\n *\n * - Includes timeout\n * - Uses Fetch API\n * - Handles errors\n *\n * @module core/utils/request\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { RequestError } from '../defs';\n\n/**\n * Init a page request.\n * Fetch the page and returns a promise with the text content.\n */\nfunction request(\n url: string,\n ttl: number = 2e3,\n requestError: RequestError\n): Promise {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n resolve(xhr.responseText);\n } else if (xhr.status) {\n // HTTP code is not 200, reject with response.\n const res = {\n status: xhr.status,\n statusText: xhr.statusText,\n };\n requestError(url, res);\n reject(res);\n }\n }\n };\n xhr.ontimeout = () => {\n const err = new Error(`Timeout error [${ttl}]`);\n requestError(url, err);\n reject(err);\n };\n xhr.onerror = () => {\n const err = new Error(`Fetch error`);\n requestError(url, err);\n reject(err);\n };\n\n xhr.open('GET', url);\n xhr.timeout = ttl;\n xhr.setRequestHeader(\n 'Accept',\n 'text/html,application/xhtml+xml,application/xml'\n );\n xhr.setRequestHeader('x-barba', 'yes');\n xhr.send();\n });\n}\n\nexport { request };\n", "module.exports = isPromise;\n\nfunction isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n", "import isPromise from 'is-promise';\n\n// https://github.com/SBoudrias/run-async\n/* istanbul ignore next */\nexport function runAsync(\n func: (...args: any[]) => void | Promise,\n ctx: any = {}\n): (...args: any[]) => Promise {\n return (...args: any[]) => {\n let async = false;\n\n const promise = new Promise((resolve, reject) => {\n // Add async to context\n ctx.async = () => {\n async = true;\n\n return (err: any, value: any) => {\n if (err) {\n reject(err);\n } else {\n resolve(value);\n }\n };\n };\n\n const answer = func.apply(ctx, args as []);\n\n if (!async) {\n if (isPromise(answer)) {\n (answer as Promise).then(resolve, reject);\n } else {\n resolve(answer);\n }\n }\n });\n\n return promise;\n };\n}\n", "/**\n * @barba/core/modules/hooks\n *

\n * ## Hooks manager.\n *\n * - Register and trigger hooks\n *\n * Hooks can be easily registered:\n *\n * ```js\n * hooks.leave(callback, context);\n * ```\n *\n * @module core/modules/hooks\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HookFunction, HookMethods, HooksAll } from './defs';\n// Modules\nimport { Logger } from './modules/Logger';\n// Utils\nimport { runAsync } from './utils';\n// Types\ninterface IHookInfos {\n ctx: any;\n fn: HookFunction;\n}\n\nexport class Hooks extends HookMethods {\n /**\n * Allow the use of `hooks[name](cb, ctx)`.\n */\n [key: string]: any;\n // [key in HooksAll]?: any;\n public logger: Logger = new Logger('@barba/core');\n /**\n * All available hooks.\n *\n * See [[HooksAll]]\n */\n // TODO: get hooks from defs (DRY)?\n public all: HooksAll[] = [\n 'ready',\n 'page',\n 'reset',\n 'currentAdded',\n 'currentRemoved',\n 'nextAdded',\n 'nextRemoved',\n 'beforeOnce',\n 'once',\n 'afterOnce',\n 'before',\n 'beforeLeave',\n 'leave',\n 'afterLeave',\n 'beforeEnter',\n 'enter',\n 'afterEnter',\n 'after',\n ];\n /**\n * Registered hooks.\n *\n * - Unique hook name\n * - Associated data set(s) (callback + context)\n */\n public registered: Map> = new Map();\n\n constructor() {\n super();\n this.init();\n }\n\n public init() {\n this.registered.clear();\n this.all.forEach(hook => {\n if (!this[hook]) {\n this[hook] = (fn: HookFunction, ctx?: any) => {\n if (!this.registered.has(hook)) {\n this.registered.set(hook, new Set());\n }\n const set = this.registered.get(hook);\n\n set.add({\n ctx: ctx || {},\n fn,\n });\n };\n }\n });\n }\n\n /**\n * Do hook.\n *\n * Trigger registered hooks.\n */\n public do(name: HooksAll, ...args: any): Promise {\n if (this.registered.has(name)) {\n // Let's start a chain of promises\n let chain = Promise.resolve();\n\n this.registered.get(name).forEach(hook => {\n // Chain async hooks promisified\n chain = chain.then(() => runAsync(hook.fn, hook.ctx)(...args));\n });\n\n return chain.catch(error => {\n this.logger.debug(`Hook error [${name}]`);\n this.logger.error(error);\n });\n }\n\n return Promise.resolve();\n }\n\n public clear(): void {\n this.all.forEach(hook => {\n delete this[hook];\n });\n\n this.init();\n }\n\n /**\n * Help, print available and registered hooks.\n */\n public help(): void {\n this.logger.info(`Available hooks: ${this.all.join(',')}`);\n const registered: string[] = [];\n this.registered.forEach((value, key) => registered.push(key));\n this.logger.info(`Registered hooks: ${registered.join(',')}`);\n }\n}\n\nconst hooks = new Hooks();\n\nexport { hooks };\n", "/**\n * @barba/core/modules/ignore\n *

\n * ## Manage ignore options.\n *\n * - cache\n * - prefetch\n *\n * @module core/modules/ignore\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption } from '../defs';\n// Utils\nimport { pathToRegexp } from '../utils/helpers';\nimport { parse } from '../utils/url';\n\nexport class Ignore {\n private _ignoreAll: boolean;\n private _ignoreRegexes: RegExp[] = [];\n\n constructor(ignore: IgnoreOption) {\n if (typeof ignore === 'boolean') {\n this._ignoreAll = ignore;\n } else {\n const paths = Array.isArray(ignore) ? ignore : [ignore];\n\n this._ignoreRegexes = paths.map(p => pathToRegexp(p));\n }\n }\n\n public checkHref(href: string): boolean {\n if (typeof this._ignoreAll === 'boolean') {\n return this._ignoreAll;\n }\n\n const { path } = parse(href);\n\n return this._ignoreRegexes.some(regex => regex.exec(path) !== null);\n }\n}\n", "/**\n * @barba/core/modules/cache\n *

\n * ## Cache for storing URL / HTML.\n *\n * @module core/modules/cache\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { CacheAction, CacheRequest, ICacheData, IgnoreOption } from '../defs';\n// Modules\nimport { Ignore } from './Ignore';\n\nexport class Cache extends Ignore {\n private _state: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n }\n\n /**\n * Set value to cache\n */\n public set(\n href: string,\n request: CacheRequest,\n action: CacheAction\n ): ICacheData {\n this._state.set(href, {\n action,\n request,\n });\n\n return {\n action,\n request,\n };\n }\n\n /**\n * Get data from cache\n */\n public get(href: string): ICacheData {\n return this._state.get(href);\n }\n\n /**\n * Get request from cache\n */\n public getRequest(href: string): CacheRequest {\n return this._state.get(href).request;\n }\n\n /**\n * Get action from cache\n */\n public getAction(href: string): CacheAction {\n return this._state.get(href).action;\n }\n\n /**\n * Check if value exists into cache\n */\n public has(href: string): boolean {\n /* istanbul ignore else */\n if (this.checkHref(href)) {\n return false;\n }\n return this._state.has(href);\n }\n\n /**\n * Delete value from cache\n */\n public delete(href: string): boolean {\n return this._state.delete(href);\n }\n\n /**\n * Update cache value\n */\n public update(href: string, data: ICacheData): ICacheData {\n const state = {\n ...this._state.get(href),\n ...data,\n };\n this._state.set(href, state);\n\n return state;\n }\n}\n", "/**\n * @barba/core/modules/prevent\n *

\n * ## Prevent checks.\n *\n * - Gathers all the tests that allow Barba to work and play transitions\n *\n * @module core/modules/prevent\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption, Link, PreventCheck } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n// Utils\nimport { url } from '../utils';\n// Modules\nimport { Ignore } from './Ignore';\n\n/**\n * Make sure the browser supports `history.pushState`.\n */\nconst pushState: PreventCheck = () => !window.history.pushState;\n\n/**\n * Make sure there is an `el` and `href`.\n */\nconst exists: PreventCheck = ({ el, href }) => !el || !href;\n\n/**\n * If the user is pressing ctrl + click, the browser will open a new tab.\n */\nconst newTab: PreventCheck = ({ event }) =>\n (event as KeyboardEvent).which > 1 ||\n (event as KeyboardEvent).metaKey ||\n (event as KeyboardEvent).ctrlKey ||\n (event as KeyboardEvent).shiftKey ||\n (event as KeyboardEvent).altKey;\n\n/**\n * If the link has `_blank` target.\n */\nconst blank: PreventCheck = ({ el }) =>\n el.hasAttribute('target') && (el as Link).target === '_blank';\n\n/**\n * If the domain is the same (in order to avoid pushState cross origin security problem).\n * Note: SVGAElement do not have `protocol` neither `hostname` properties.\n */\nconst corsDomain: PreventCheck = ({ el }) =>\n ((el as HTMLAnchorElement).protocol !== undefined &&\n window.location.protocol !== (el as HTMLAnchorElement).protocol) ||\n ((el as HTMLAnchorElement).hostname !== undefined &&\n window.location.hostname !== (el as HTMLAnchorElement).hostname);\n\n/**\n * If the port is the same.\n * Note: SVGAElement do not have `port` property.\n */\nconst corsPort: PreventCheck = ({ el }) =>\n (el as HTMLAnchorElement).port !== undefined &&\n url.getPort() !== url.getPort((el as HTMLAnchorElement).href);\n\n/**\n * If the link has download attribute.\n */\nconst download: PreventCheck = ({ el }) =>\n el.getAttribute && typeof el.getAttribute('download') === 'string';\n\n/**\n * If the links contains [data-barba-prevent] or [data-barba-prevent=\"self\"].\n */\nconst preventSelf: PreventCheck = ({ el }) =>\n el.hasAttribute(`${schemaAttribute.prefix}-${schemaAttribute.prevent}`);\n\n/**\n * If some link ancestor contains [data-barba-prevent=\"all\"].\n */\nconst preventAll: PreventCheck = ({ el }) =>\n Boolean(\n el.closest(`[${schemaAttribute.prefix}-${schemaAttribute.prevent}=\"all\"]`)\n );\n\n/**\n * If the link is the current URL.\n *\n * > Not in the test suite.\n */\nconst sameUrl: PreventCheck = ({ href }) =>\n url.clean(href) === url.clean() && url.getPort(href) === url.getPort();\n\nexport class Prevent extends Ignore {\n public suite: string[] = [];\n public tests: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n this.init();\n }\n\n public init(): void {\n // Add defaults\n this.add('pushState', pushState);\n this.add('exists', exists);\n this.add('newTab', newTab);\n this.add('blank', blank);\n this.add('corsDomain', corsDomain);\n this.add('corsPort', corsPort);\n this.add('download', download);\n this.add('preventSelf', preventSelf);\n this.add('preventAll', preventAll);\n\n // Outside of the test suite\n this.add('sameUrl', sameUrl, false);\n }\n\n public add(name: string, check: PreventCheck, suite: boolean = true): void {\n this.tests.set(name, check);\n suite && this.suite.push(name);\n }\n\n /**\n * Run individual test\n */\n public run(name: string, el: Link, event: Event, href: string): boolean {\n return this.tests.get(name)({\n el,\n event,\n href,\n });\n }\n\n /**\n * Run test suite\n */\n public checkLink(el: Link, event: Event, href: string): boolean {\n return this.suite.some(name => this.run(name, el, event, href));\n }\n}\n", "// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\nexport class BarbaError extends Error {\n /* istanbul ignore next */\n constructor(\n public error: Error,\n public label = 'Barba error',\n ...params: any[]\n ) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(...params);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BarbaError);\n }\n\n this.name = 'BarbaError';\n }\n}\n", "/**\n * @barba/core/modules/store\n *

\n * ## Transitions store.\n *\n * - Resolve transition\n * - Manage rules\n *\n * @module core/modules/store\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n IRule,\n IRules,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n RuleName,\n} from '../defs';\n\n// Modules\nimport { Logger } from './Logger';\n\nexport class Store {\n public logger: Logger = new Logger('@barba/core');\n /**\n * All registered transitions.\n */\n public all: ITransitionPage[] = [];\n /**\n * \"Page only\" registered transitions.\n */\n public page: ITransitionPage[] = [];\n /**\n * \"Once only\" registered transitions.\n */\n public once: ITransitionOnce[] = [];\n /**\n * Rules for transition resolution.\n *\n * Defaults:\n *\n * - namespace\n * - custom\n */\n private _rules: IRule[] = [\n {\n name: 'namespace',\n type: 'strings',\n },\n {\n name: 'custom',\n type: 'function',\n },\n ];\n\n /**\n * Init store.\n */\n constructor(transitions: ITransitionPage[] = []) {\n /* istanbul ignore else */\n if (transitions) {\n // TODO: add check for valid transitions? criteria? (once || enter && leave)\n this.all = this.all.concat(transitions);\n }\n this.update();\n }\n\n /**\n * Add rule or transition.\n */\n public add(type: 'rule' | 'transition', data: any): void {\n switch (type) {\n case 'rule':\n // TODO: check for valid rule\n this._rules.splice(data.position || 0, 0, data.value);\n break;\n case 'transition':\n default:\n // TODO: check for valid transition\n this.all.push(data);\n break;\n }\n\n this.update();\n }\n\n /**\n * Resolve transition.\n */\n public resolve(\n data: ITransitionData,\n filters: ITransitionFilters = {}\n ): ITransitionOnce | ITransitionPage {\n // Filter on \"once\"\n let transitions = filters.once ? this.once : this.page;\n\n // Filter on \"self\"\n if (filters.self) {\n transitions = transitions.filter(t => t.name && t.name === 'self');\n } else {\n transitions = transitions.filter(t => !t.name || t.name !== 'self');\n }\n\n // All matching transition infos\n const matching = new Map();\n\n // Active = first of valid transitions\n // sorted by directions (from/to, from || to, \u2026)\n const active = transitions.find(t => {\n let valid = true;\n const match = {};\n\n if (filters.self && t.name === 'self') {\n return true;\n }\n\n // Check rules\n this._rules.reverse().forEach(rule => {\n if (valid) {\n valid = this._check(t, rule, data, match);\n // From/to check\n if (t.from && t.to) {\n valid =\n this._check(t, rule, data, match, 'from') &&\n this._check(t, rule, data, match, 'to');\n }\n if (t.from && !t.to) {\n valid = this._check(t, rule, data, match, 'from');\n }\n if (!t.from && t.to) {\n valid = this._check(t, rule, data, match, 'to');\n }\n }\n });\n\n matching.set(t, match);\n\n return valid;\n });\n\n const activeMatch = matching.get(active);\n const transitionType = [];\n if (filters.once) {\n transitionType.push('once');\n } else {\n transitionType.push('page');\n }\n if (filters.self) {\n transitionType.push('self');\n }\n\n if (activeMatch) {\n // Log resolved transition\n const infos: any[] = [active];\n // Log if matching criteria\n Object.keys(activeMatch).length > 0 && infos.push(activeMatch);\n\n this.logger.info(\n `Transition found [${transitionType.join(',')}]`,\n ...infos\n );\n } else {\n this.logger.info(`No transition found [${transitionType.join(',')}]`);\n }\n\n return active;\n }\n\n /**\n * ### Update store.\n *\n * - Reorder transition by priorities\n * - Get wait indicator\n * - Get once transitions\n */\n public update(): void {\n // Reorder by priorities\n this.all = this.all\n .map(t => this._addPriority(t))\n .sort((a, b) => a.priority - b.priority)\n .reverse()\n .map(t => {\n delete t.priority;\n\n return t;\n });\n this.page = this.all.filter(\n t => t.leave !== undefined || t.enter !== undefined\n ) as ITransitionPage[];\n this.once = this.all.filter(t => t.once !== undefined) as ITransitionOnce[];\n }\n\n /**\n * ### Check if transition apply.\n *\n * Based on rule, page data and optional direction:\n *\n * 1. transition has no rule \"property\":\n * - always returns true\n * 2. transition has rule \"property\":\n * - \"strings\" should be present on both side (transition + page) and match\n * - \"function\" should return true\n */\n private _check(\n transition: ITransitionPage,\n rule: IRule,\n data: ITransitionData,\n match: any,\n direction?: 'from' | 'to'\n ): boolean {\n let isValid = true;\n let hasMatch = false;\n const t = transition;\n const { name, type } = rule;\n const strRule = name as IRules['strings'];\n const objRule = name as IRules['object'];\n const fnName = name as IRules['function'];\n const base = direction ? t[direction] : t; // = t || t.from || t.to\n const page = direction === 'to' ? data.next : data.current; // = current || next\n const exist = direction ? base && base[name] : base[name];\n\n // If transition rule exists\n if (exist) {\n switch (type) {\n case 'strings':\n default: {\n // Array support\n const names: string[] = Array.isArray(base[strRule])\n ? (base[strRule] as string[])\n : [base[strRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[strRule] && names.indexOf(page[strRule]) !== -1) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[strRule]) === -1) {\n isValid = false;\n }\n break;\n }\n\n case 'object': {\n // Array support\n const names: string[] = Array.isArray(base[objRule])\n ? (base[objRule] as string[])\n : [base[objRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[objRule]) {\n if (\n page[objRule].name &&\n names.indexOf(page[objRule].name) !== -1\n ) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[objRule].name) === -1) {\n isValid = false;\n }\n } else {\n isValid = false;\n }\n break;\n }\n\n case 'function':\n if (base[fnName](data)) {\n hasMatch = true;\n } else {\n isValid = false;\n }\n break;\n }\n\n if (hasMatch) {\n if (direction) {\n match[direction] = match[direction] || {};\n match[direction][name] = t[direction][name];\n } else {\n match[name] = t[name];\n }\n }\n }\n\n return isValid;\n }\n\n /**\n * ### Calculate transition priority.\n *\n * Based on:\n *\n * - rule \"position\" (index) give tens, hundreds, thousands, \u2026\n * - from/to properties give units (0, 1 or 2)\n */\n private _calculatePriority(\n t: ITransitionPage,\n ruleName: RuleName,\n ruleIndex: number\n ): number {\n let priority = 0;\n\n if (\n t[ruleName] ||\n (t.from && t.from[ruleName]) ||\n (t.to && t.to[ruleName])\n ) {\n priority += Math.pow(10, ruleIndex);\n\n if (t.from && t.from[ruleName]) {\n priority += 1;\n }\n if (t.to && t.to[ruleName]) {\n priority += 2;\n }\n }\n\n return priority;\n }\n\n private _addPriority(t: ITransitionPage): ITransitionPage {\n t.priority = 0;\n let priority = 0;\n\n this._rules.forEach((rule, i) => {\n const { name } = rule;\n const index = i + 1;\n\n priority += this._calculatePriority(t, name, index);\n });\n\n t.priority = priority;\n\n return t;\n }\n}\n", "/**\n * @barba/core/modules/transitions\n *

\n * ## Transitions manager.\n *\n * - Handle hooks and transition lifecycle\n *\n * @module core/modules/transitions\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n HooksTransition,\n HooksTransitionMap,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n Wrapper,\n} from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { dom, helpers, runAsync } from '../utils';\n// Modules\nimport { BarbaError } from './Error';\nimport { Logger } from './Logger';\nimport { Store } from './Store';\n\nexport class Transitions {\n public logger: Logger = new Logger('@barba/core');\n public store: Store;\n private _running: boolean = false;\n\n constructor(transitions: ITransitionPage[] = []) {\n this.store = new Store(transitions);\n }\n\n /**\n * Get resolved transition\n *\n * - based on data\n */\n public get(\n data: ITransitionData,\n filters?: ITransitionFilters\n ): ITransitionOnce | ITransitionPage {\n return this.store.resolve(data, filters);\n }\n\n /**\n * Animation running status.\n */\n get isRunning(): boolean {\n return this._running;\n }\n set isRunning(status: boolean) {\n this._running = status;\n }\n\n /**\n * Check for registered once transition(s).\n */\n get hasOnce(): boolean {\n return this.store.once.length > 0;\n }\n\n /**\n * Check for registered self transition.\n */\n get hasSelf(): boolean {\n return this.store.all.some(t => t.name === 'self');\n }\n\n /**\n * ### Wait indicator.\n *\n * Tells Barba to get next page data
\n * before starting the resolution
\n * because some registered transitions need
\n * next page data to be resolved (eg: `sync: true`, `to: { namespace }`, \u2026)\n */\n get shouldWait(): boolean {\n return this.store.all.some(t => (t.to && !t.to.route) || t.sync);\n }\n\n /**\n * ### Do \"once\" transition.\n *\n * Hooks: see [[HooksOnce]].\n */\n public async doOnce({\n data,\n transition,\n }: {\n data: ITransitionData;\n transition: ITransitionOnce;\n }) {\n const t = transition || {};\n this._running = true;\n\n try {\n await this._doAsyncHook('beforeOnce', data, t);\n await this.once(data, t);\n await this._doAsyncHook('afterOnce', data, t);\n } catch (error) {\n this._running = false;\n\n this.logger.debug('Transition error [before/after/once]');\n this.logger.error(error);\n }\n\n this._running = false;\n }\n\n /**\n * ### Do \"page\" transition.\n *\n * Hooks: see [[HooksPage]].\n *\n * `sync: false` (default) order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. leave\n * 4. afterLeave\n * 5. beforeEnter\n * 6. enter\n * 7. afterEnter\n * 8. after\n *\n * `sync: true` order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. beforeEnter\n * 4. leave & enter\n * 5. afterLeave\n * 6. afterEnter\n * 7. after\n */\n public async doPage({\n data,\n transition,\n page,\n wrapper,\n }: {\n data: ITransitionData;\n transition: ITransitionPage;\n page: Promise;\n wrapper: Wrapper;\n }) {\n const t = transition || {};\n const sync = t.sync === true || false;\n\n this._running = true;\n\n try {\n // Check sync mode, wait for next content\n if (sync) {\n await helpers.update(page, data);\n }\n\n await this._doAsyncHook('before', data, t);\n\n if (sync) {\n try {\n await this.add(data, wrapper);\n // Before actions\n await this._doAsyncHook('beforeLeave', data, t);\n await this._doAsyncHook('beforeEnter', data, t);\n\n // Actions\n await Promise.all([this.leave(data, t), this.enter(data, t)]);\n\n // After actions\n await this._doAsyncHook('afterLeave', data, t);\n await this._doAsyncHook('afterEnter', data, t);\n } catch (error) {\n // this.logger.debug('Transition error [sync]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(error, 'Transition error [sync]');\n }\n }\n } else {\n let leaveResult: any = false;\n\n try {\n // Leave\n await this._doAsyncHook('beforeLeave', data, t);\n\n leaveResult = await Promise.all([\n this.leave(data, t),\n helpers.update(page, data),\n ]).then(values => values[0]);\n\n await this._doAsyncHook('afterLeave', data, t);\n\n // TODO: check here \"valid\" page result\n // before going further\n } catch (error) {\n // this.logger.debug('Transition error [before/after/leave]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/leave]'\n );\n }\n }\n\n try {\n // Enter\n /* istanbul ignore else */\n if (leaveResult !== false) {\n await this.add(data, wrapper);\n\n await this._doAsyncHook('beforeEnter', data, t);\n await this.enter(data, t, leaveResult);\n await this._doAsyncHook('afterEnter', data, t);\n }\n } catch (error) {\n // this.logger.debug('Transition error [before/after/enter]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/enter]'\n );\n }\n }\n }\n\n // Remove current contaienr\n await this.remove(data);\n\n await this._doAsyncHook('after', data, t);\n } catch (error) {\n this._running = false;\n\n // If \"custom/specific\" barba error.\n /* istanbul ignore else */\n if (error.name && error.name === 'BarbaError') {\n this.logger.debug(error.label);\n this.logger.error(error.error);\n\n throw error;\n }\n\n this.logger.debug('Transition error [page]');\n this.logger.error(error);\n\n throw error;\n }\n\n this._running = false;\n }\n\n /**\n * Once hook + async \"once\" transition.\n */\n public async once(data: ITransitionData, t: ITransitionOnce): Promise {\n await hooks.do('once', data, t);\n\n return t.once ? runAsync(t.once, t)(data) : Promise.resolve();\n }\n\n /**\n * Leave hook + async \"leave\" transition.\n */\n public async leave(data: ITransitionData, t: ITransitionPage): Promise {\n await hooks.do('leave', data, t);\n\n return t.leave ? runAsync(t.leave, t)(data) : Promise.resolve();\n }\n\n /**\n * Enter hook + async \"enter\" transition.\n */\n public async enter(\n data: ITransitionData,\n t: ITransitionPage,\n leaveResult?: any\n ): Promise {\n await hooks.do('enter', data, t);\n\n return t.enter\n ? runAsync(t.enter, t)(data, leaveResult)\n : Promise.resolve();\n }\n\n /**\n * Add next container.\n */\n public async add(data: ITransitionData, wrapper: Wrapper): Promise {\n dom.addContainer(data.next.container, wrapper);\n hooks.do('nextAdded', data);\n }\n\n /**\n * Remove current container.\n */\n public async remove(data: ITransitionData): Promise {\n dom.removeContainer(data.current.container);\n hooks.do('currentRemoved', data);\n }\n\n private _isTransitionError(error: any) {\n if (error.message) {\n // Errors from request\n return !/Timeout error|Fetch error/.test(error.message);\n }\n\n if (error.status) {\n // Errors from request\n return false;\n }\n\n return true;\n }\n\n /**\n * Do hooks + async transition methods.\n */\n private async _doAsyncHook(\n hook: HooksTransition,\n data: ITransitionData,\n t: HooksTransitionMap\n ): Promise {\n await hooks.do(hook, data, t);\n\n return t[hook] ? runAsync(t[hook], t)(data) : Promise.resolve();\n }\n}\n", "/**\n * @barba/core/modules/views\n *

\n * ## Views manager.\n *\n * @module core/modules/views\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HooksView, IView, IViewData } from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { runAsync } from '../utils';\n// Types\ntype Hook = (data: IViewData) => Promise;\n\nexport class Views {\n /**\n * Available hook names for views.\n */\n public names: HooksView[] = [\n 'beforeLeave',\n 'afterLeave',\n 'beforeEnter',\n 'afterEnter',\n ];\n /**\n * Registered views by namespace.\n */\n public byNamespace: Map = new Map();\n\n /**\n * Init views.\n */\n constructor(views: IView[]) {\n if (views.length === 0) {\n return;\n }\n\n // TODO: add check\n // for valid views? criteria? (namespace property, string ?)\n // or duplicate\n views.forEach(view => {\n this.byNamespace.set(view.namespace, view);\n });\n\n this.names.forEach(name => {\n hooks[name](this._createHook(name));\n });\n }\n\n /**\n * Create the hook method.\n *\n * - get view based on namespace\n * - execute callback with transition data\n */\n private _createHook(name: HooksView): Hook {\n return data => {\n const { namespace } = name.match(/enter/i) ? data.next : data.current;\n const view = this.byNamespace.get(namespace);\n\n // TODO: manage self\u2026\n // if (view && data.trigger !== 'self') {\n if (view && view[name]) {\n return runAsync(view[name], view)(data);\n }\n\n return Promise.resolve();\n };\n }\n}\n", "// Element.prototype.matches polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\nif (!Element.prototype.matches) {\n Element.prototype.matches =\n (Element as any).prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n\n// Element.prototype.closest polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\nif (!Element.prototype.closest) {\n Element.prototype.closest = function closest(s: string) {\n let el = this;\n\n do {\n if (el.matches(s)) {\n return el;\n }\n\n el = (el.parentElement || el.parentNode) as Element;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n };\n}\n", "/**\n * @module core/schemas\n */\n\n// Definitions\nimport { ISchemaPage } from '../defs';\n\n/**\n * See [[ISchemaPage]]\n */\nexport const schemaPage: ISchemaPage = {\n container: null,\n html: '',\n namespace: '',\n url: {\n hash: '',\n href: '',\n path: '',\n port: null,\n query: {},\n },\n};\n", "/**\n * @barba/core\n *

\n * ## Barba core object\n *\n * Main methods:\n *\n * - `.init()` for initialization with options\n * - `.use()` for plugins\n *\n * @module core\n */\n\n/***/\n\nimport { version } from '../package.json';\n// Definitions\nimport {\n IBarbaOptions,\n IBarbaPlugin,\n IgnoreOption,\n ISchemaPage,\n ITransitionData,\n ITransitionOnce,\n ITransitionPage,\n Link,\n LinkEvent,\n RequestCustomError,\n RequestErrorOrResponse,\n SchemaAttributeValues,\n Trigger,\n Wrapper,\n} from './defs';\n// Hooks\nimport { hooks } from './hooks';\n// Modules\nimport { Cache } from './modules/Cache';\nimport { Logger } from './modules/Logger';\nimport { Prevent } from './modules/Prevent';\nimport { Transitions } from './modules/Transitions';\nimport { Views } from './modules/Views';\n// Polyfills\nimport './polyfills';\n// Schemas\nimport { schemaAttribute } from './schemas/attribute';\nimport { schemaPage } from './schemas/page';\n// Utils\nimport { dom, helpers, history, request, url } from './utils';\n\nexport class Core {\n /**\n * Version.\n */\n public version: string = version;\n /**\n * Schemas.\n */\n public schemaPage: ISchemaPage = schemaPage;\n /**\n * Logger class, allows plugins to create Logger.\n */\n public Logger: typeof Logger = Logger;\n /**\n * Barba logger.\n */\n public logger: Logger = new Logger('@barba/core');\n /**\n * Plugins.\n */\n public plugins: Array> = [];\n /**\n * Options\n */\n public timeout: number;\n public cacheIgnore: IgnoreOption;\n public prefetchIgnore: IgnoreOption;\n public preventRunning: boolean;\n /**\n * Hooks\n */\n public hooks = hooks;\n /**\n * Modules.\n */\n // public history: History;\n public cache: Cache;\n public prevent: Prevent;\n public transitions: Transitions;\n public views: Views;\n /**\n * Utils.\n */\n public dom = dom;\n public helpers = helpers;\n public history = history;\n public request = request;\n public url = url;\n\n private _data: ITransitionData;\n private _requestCustomError: RequestCustomError;\n private _wrapper: Wrapper;\n\n /**\n * ### Init plugin with options.\n *\n * See [[IBarbaPlugin]] for more details.\n */\n public use(plugin: IBarbaPlugin, options?: T): void {\n const installedPlugins = this.plugins;\n\n // Plugin installation\n if (installedPlugins.indexOf(plugin) > -1) {\n this.logger.warn(`Plugin [${plugin.name}] already installed.`);\n\n return;\n }\n\n if (typeof plugin.install !== 'function') {\n this.logger.warn(`Plugin [${plugin.name}] has no \"install\" method.`);\n\n return;\n }\n\n plugin.install(this, options);\n installedPlugins.push(plugin);\n }\n\n /**\n * ### Init barba with options.\n *\n * See [[IBarbaOptions]] for more details.\n *\n * Default values are:\n *\n * - transitions: `[]`\n * - views: `[]`\n * - schema: [[SchemaAttribute]]\n * - timeout: `2e3`\n * - cacheIgnore: `false`\n * - prefetchIgnore: `false`\n * - preventRunning: `false`\n * - prevent: `null`,\n * - debug: `false`\n * - logLevel: `'debug'`\n */\n public init(\n /** @ignore */ {\n transitions = [],\n views = [],\n schema = schemaAttribute,\n requestError,\n timeout = 2e3,\n cacheIgnore = false,\n prefetchIgnore = false,\n /* istanbul ignore next */\n preventRunning = false,\n prevent: preventCustom = null,\n debug = false,\n logLevel = 'off',\n }: IBarbaOptions = {}\n ) {\n // 0. Set logger level and print version\n Logger.setLevel(debug === true ? 'debug' : logLevel);\n this.logger.info(this.version);\n\n // 1. Manage options\n Object.keys(schema).forEach(k => {\n const attr = k as SchemaAttributeValues;\n\n /* istanbul ignore else */\n if (schemaAttribute[attr]) {\n schemaAttribute[attr] = schema[attr];\n }\n });\n this._requestCustomError = requestError;\n this.timeout = timeout;\n this.cacheIgnore = cacheIgnore;\n this.prefetchIgnore = prefetchIgnore;\n this.preventRunning = preventRunning;\n\n // 2. Get and check wrapper\n this._wrapper = this.dom.getWrapper();\n if (!this._wrapper) {\n throw new Error('[@barba/core] No Barba wrapper found');\n }\n this._wrapper.setAttribute('aria-live', 'polite'); // A11y\n\n // 3. Init pages (get \"current\" data)\n this._resetData();\n\n const { current } = this.data;\n\n if (!current.container) {\n throw new Error('[@barba/core] No Barba container found');\n }\n\n // 4. Init other modules\n this.cache = new Cache(cacheIgnore);\n this.prevent = new Prevent(prefetchIgnore);\n this.transitions = new Transitions(transitions);\n this.views = new Views(views);\n\n // Add prevent custom\n if (preventCustom !== null) {\n if (typeof preventCustom !== 'function') {\n throw new Error('[@barba/core] Prevent should be a function');\n }\n\n this.prevent.add('preventCustom', preventCustom);\n }\n\n // 5. Use \"current\" data\n // Init history\n this.history.init(current.url.href, current.namespace);\n // Add to cache\n // TODO: do not cache renderer HTML, only request results\u2026\n // this.cache.set(current.url.href, Promise.resolve(current.html), 'init');\n\n // 6. Bind context\n this._onLinkEnter = this._onLinkEnter.bind(this);\n this._onLinkClick = this._onLinkClick.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._bind();\n\n // 7. Init plugins\n this.plugins.forEach(plugin => plugin.init());\n\n // 8. Barba ready\n // Set next + trigger for once and `beforeEnter`/`afterEnter` view on page load.\n const onceData = this.data;\n\n onceData.trigger = 'barba';\n onceData.next = onceData.current;\n onceData.current = { ...this.schemaPage };\n this.hooks.do('ready', onceData);\n\n // 9. Finally, do once\u2026\n this.once(onceData);\n\n // Clean data for first barba transition\u2026\n this._resetData();\n }\n\n public destroy(): void {\n this._resetData();\n this._unbind();\n this.history.clear();\n this.hooks.clear();\n this.plugins = [];\n }\n\n get data(): ITransitionData {\n return this._data;\n }\n\n get wrapper(): HTMLElement {\n return this._wrapper;\n }\n\n /**\n * ### Force a page change without Barba transition.\n */\n public force(href: string): void {\n // DEV\n // Can be used waiting animation cancellation management\u2026\n window.location.assign(href);\n }\n\n /**\n * ### Go for a Barba transition.\n *\n * Manage \"self page\" href:\n *\n * - if same url and no self transition, keep default behavior\n * - link: reload the page\n * - anchor: scroll to\n * - if same url with self transition, use it\n * - then start a page transition.\n */\n public go(\n href: string,\n trigger: Trigger = 'barba',\n e?: LinkEvent | PopStateEvent\n ): Promise {\n // If animation running, force reload\n if (this.transitions.isRunning) {\n this.force(href);\n\n return;\n }\n\n let self = false;\n\n // Check prevent sameURL against current history\n // + state check\n // + update trigger with direction\n if (trigger === 'popstate') {\n self =\n this.history.current &&\n this.url.getPath(this.history.current.url) === this.url.getPath(href);\n } else {\n self = this.prevent.run('sameUrl', null, null, href);\n }\n\n if (self && !this.transitions.hasSelf) {\n return;\n }\n\n trigger = this.history.change(href, trigger, e);\n\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n return this.page(href, trigger, self);\n }\n\n /**\n * ### Start an \"once\" transition.\n *\n * If some registered \"once\" transition,\n * get the \"resolved\" transition from the store and start it.\n */\n public async once(readyData: ITransitionData): Promise {\n await this.hooks.do('beforeEnter', readyData);\n\n // Check if once transition\n if (this.transitions.hasOnce) {\n const transition = this.transitions.get(readyData, {\n once: true,\n }) as ITransitionOnce;\n\n await this.transitions.doOnce({ transition, data: readyData });\n }\n\n await this.hooks.do('afterEnter', readyData);\n }\n\n /**\n * ### Start a \"page\" transition.\n *\n * 1. If no running transition, updates data with full URL properties and trigger.\n * 2. Get page from cache or init request.\n * 3. Wait if some transitions need \"next\" data (`sync: true`, `to: \u2026`).\n * 4. Manage the history, depending on trigger.\n * 5. Get \"data\" and trigger \"go\" hook.\n * 6. Get the \"resolved\" transition from the store and start it.\n * 7. Update title and reset data (current, next = undefined).\n *\n * > If \"self\", use the \"self\" transition\n */\n public async page(\n href: string,\n trigger: Trigger,\n self: boolean\n ): Promise {\n this.data.next.url = {\n href,\n ...this.url.parse(href),\n };\n this.data.trigger = trigger;\n\n const page = this.cache.has(href)\n ? this.cache.update(href, { action: 'click' }).request\n : this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, trigger)\n ),\n 'click'\n ).request;\n\n // Need to wait before getting the right transition\n if (this.transitions.shouldWait) {\n await helpers.update(page, this.data);\n }\n\n const data = this.data;\n\n // Hook: between trigger and transition\n // Can be used to resolve \"route\"\u2026\n await this.hooks.do('page', data);\n\n try {\n const transition = this.transitions.get(data, {\n once: false,\n self,\n }) as ITransitionPage;\n\n await this.transitions.doPage({\n data,\n page,\n transition,\n wrapper: this._wrapper,\n });\n\n this._resetData();\n } catch (error) {\n // Something went wrong (rejected promise, error, 404, 505, other\u2026)\n // TODO: manage / use cases for cancellation\n // this.logger.debug('Transition cancelled');\n\n // If transition error and no debug mode, force reload page.\n /* istanbul ignore else */\n if (Logger.getLevel() === 0) {\n this.force(data.current.url.href);\n }\n }\n }\n\n /**\n * When a request error occurs.\n *\n * Allow the user to manage request error. (E.g: 404)\n */\n public onRequestError(trigger: Trigger, ...args: any): boolean {\n // Cancel transition status\n this.transitions.isRunning = false;\n\n const [href, response]: [string, RequestErrorOrResponse] = args;\n const action = this.cache.getAction(href);\n this.cache.delete(href);\n\n // Custom requestError returning false will return here.\n if (\n this._requestCustomError &&\n this._requestCustomError(trigger, action, href, response) === false\n ) {\n return false;\n }\n\n // Force page change\n if (action === 'click') {\n this.force(href);\n }\n return false;\n }\n\n /**\n * Programmatically prefetch\n */\n public prefetch(href: string) {\n // Already in cache\n /* istanbul ignore next */\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, 'barba')\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'prefetch'\n );\n }\n\n /**\n * Bind event listeners.\n */\n private _bind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.addEventListener('mouseover', this._onLinkEnter);\n document.addEventListener('touchstart', this._onLinkEnter);\n }\n document.addEventListener('click', this._onLinkClick);\n window.addEventListener('popstate', this._onStateChange);\n }\n\n /**\n * Bind event listeners.\n */\n private _unbind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.removeEventListener('mouseover', this._onLinkEnter);\n document.removeEventListener('touchstart', this._onLinkEnter);\n }\n document.removeEventListener('click', this._onLinkClick);\n window.removeEventListener('popstate', this._onStateChange);\n }\n\n /**\n * When a element is entered.\n *\n * Get valid link element.\n * Cache URL if needed.\n */\n private _onLinkEnter(e: LinkEvent): void {\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n const href = this.dom.getHref(link);\n\n if (this.prevent.checkHref(href)) {\n return;\n }\n\n // Already in cache\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, link)\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'enter'\n );\n }\n\n /**\n * When an element is clicked.\n *\n * Get valid link element.\n * Prevent same URL.\n * Go for a Barba transition.\n */\n private _onLinkClick(e: LinkEvent): void {\n // This use `prevent.checkLink` under the hood to get eligible link.\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n if (this.transitions.isRunning && this.preventRunning) {\n e.preventDefault();\n e.stopPropagation();\n\n return;\n }\n\n this.go(this.dom.getHref(link), link, e);\n }\n\n /**\n * When History state changes.\n *\n * Get \"href\" from URL\n * Go for a Barba transition.\n */\n private _onStateChange(e: PopStateEvent): void {\n this.go(this.url.getHref(), 'popstate', e);\n }\n\n /**\n * Get a valid link ancestor.\n *\n * Check for a \"href\" attribute.\n * Then check if eligible for Barba.\n */\n private _getLinkElement(e: LinkEvent): Link {\n let el = e.target as Link;\n\n while (el && !this.dom.getHref(el)) {\n el = (el as HTMLElement).parentNode as Link;\n }\n\n // Check prevent\n if (!el || this.prevent.checkLink(el, e, this.dom.getHref(el))) {\n return;\n }\n\n return el;\n }\n\n /**\n * Reset pages data.\n *\n * Set \"current\" and unset \"next\".\n */\n private _resetData() {\n const href = this.url.getHref();\n const current = {\n container: this.dom.getContainer(),\n html: this.dom.getHtml(),\n namespace: this.dom.getNamespace(),\n url: {\n href,\n ...this.url.parse(href),\n },\n };\n\n this._data = {\n current,\n next: { ...this.schemaPage },\n trigger: undefined,\n };\n\n this.hooks.do('reset', this.data);\n }\n}\n\nconst core = new Core();\n\nexport default core;\n", "!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", "import { module } from 'modujs';\nimport barba from '@barba/core';\nimport config from '../config'\n\nexport default class extends module {\n constructor(m) {\n super(m);\n }\n\n init() {\n barba.init({\n debug: config.IS_DEV,\n schema: {\n prefix: 'data-load',\n },\n transitions: [{\n name: 'default-transition',\n leave: (data) => {\n this.call('destroy', data.current.container, 'app');\n },\n enter: (data) => {\n this.call('update', data.next.container, 'app');\n }\n }]\n });\n }\n}\n", "const env = process.env.NODE_ENV\n\nexport default config = {\n\n // App\n APP_NAME: 'Boilerplate',\n DATA_API_KEY: '.data-api',\n\n // Env\n ENV: env,\n IS_PROD: env === 'production',\n IS_DEV: env === 'development',\n\n // Classnames\n CLASS: {\n LOADING: 'is-loading',\n READY: 'is-ready',\n LOADED: 'is-loaded',\n },\n}\n", "const LAZY_LOADED_IMAGES = []\n\nexport function loadImage(url, options = {}) {\n return new Promise((resolve, reject) => {\n const $img = new Image();\n\n if (options.crossOrigin) {\n $img.crossOrigin = options.crossOrigin;\n }\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 the given image.\n *\n * @param {HTMLImageElement} $el - The image element.\n * @param {?string} url - The URI to lazy load into $el.\n * If falsey, the value of the `data-src` attribute on $el will be used as the URI.\n * @param {?function} callback - A function to call when the image is loaded.\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\n if (!loadedImage.url) {\n return;\n }\n\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 = $el.closest('.c-lazy');\n\n if(lazyParent) {\n lazyParent.classList.add('-lazy-loaded')\n lazyParent.style.backgroundImage = ''\n }\n\n $el.classList.add('-lazy-loaded')\n\n callback?.()\n })\n}\n", "/* locomotive-scroll v4.1.3 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar defaults = {\n el: document,\n name: 'scroll',\n offset: [0, 0],\n repeat: false,\n smooth: false,\n initPosition: {\n x: 0,\n y: 0\n },\n direction: 'vertical',\n gestureDirection: 'vertical',\n reloadOnContextChange: false,\n lerp: 0.1,\n \"class\": 'is-inview',\n scrollbarContainer: false,\n scrollbarClass: 'c-scrollbar',\n scrollingClass: 'has-scroll-scrolling',\n draggingClass: 'has-scroll-dragging',\n smoothClass: 'has-scroll-smooth',\n initClass: 'has-scroll-init',\n getSpeed: false,\n getDirection: false,\n scrollFromAnywhere: false,\n multiplier: 1,\n firefoxMultiplier: 50,\n touchMultiplier: 2,\n resetNativeScroll: true,\n tablet: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical',\n breakpoint: 1024\n },\n smartphone: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical'\n }\n};\n\nvar _default = /*#__PURE__*/function () {\n function _default() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n this.namespace = 'locomotive';\n this.html = document.documentElement;\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.els = {};\n this.currentElements = {};\n this.listeners = {};\n this.hasScrollTicking = false;\n this.hasCallEventSet = false;\n this.checkScroll = this.checkScroll.bind(this);\n this.checkResize = this.checkResize.bind(this);\n this.checkEvent = this.checkEvent.bind(this);\n this.instance = {\n scroll: {\n x: 0,\n y: 0\n },\n limit: {\n x: this.html.offsetWidth,\n y: this.html.offsetHeight\n },\n currentElements: this.currentElements\n };\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (this.isMobile) this.direction = this[this.context].direction;\n\n if (this.direction === 'horizontal') {\n this.directionAxis = 'x';\n } else {\n this.directionAxis = 'y';\n }\n\n if (this.getDirection) {\n this.instance.direction = null;\n }\n\n if (this.getDirection) {\n this.instance.speed = 0;\n }\n\n this.html.classList.add(this.initClass);\n window.addEventListener('resize', this.checkResize, false);\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.initEvents();\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n this.dispatchScroll();\n }\n }, {\n key: \"checkResize\",\n value: function checkResize() {\n var _this = this;\n\n if (!this.resizeTick) {\n this.resizeTick = true;\n requestAnimationFrame(function () {\n _this.resize();\n\n _this.resizeTick = false;\n });\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {}\n }, {\n key: \"checkContext\",\n value: function checkContext() {\n if (!this.reloadOnContextChange) return;\n this.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || this.windowWidth < this.tablet.breakpoint;\n this.isTablet = this.isMobile && this.windowWidth >= this.tablet.breakpoint;\n var oldContext = this.context;\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (oldContext != this.context) {\n var oldSmooth = oldContext == 'desktop' ? this.smooth : this[oldContext].smooth;\n var newSmooth = this.context == 'desktop' ? this.smooth : this[this.context].smooth;\n if (oldSmooth != newSmooth) window.location.reload();\n }\n }\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this2 = this;\n\n this.scrollToEls = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-to]\"));\n this.setScrollTo = this.setScrollTo.bind(this);\n this.scrollToEls.forEach(function (el) {\n el.addEventListener('click', _this2.setScrollTo, false);\n });\n }\n }, {\n key: \"setScrollTo\",\n value: function setScrollTo(event) {\n event.preventDefault();\n this.scrollTo(event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-href\")) || event.currentTarget.getAttribute('href'), {\n offset: event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-offset\"))\n });\n }\n }, {\n key: \"addElements\",\n value: function addElements() {}\n }, {\n key: \"detectElements\",\n value: function detectElements(hasCallEventSet) {\n var _this3 = this;\n\n var scrollTop = this.instance.scroll.y;\n var scrollBottom = scrollTop + this.windowHeight;\n var scrollLeft = this.instance.scroll.x;\n var scrollRight = scrollLeft + this.windowWidth;\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n if (el && (!el.inView || hasCallEventSet)) {\n if (_this3.direction === 'horizontal') {\n if (scrollRight >= el.left && scrollLeft < el.right) {\n _this3.setInView(el, i);\n }\n } else {\n if (scrollBottom >= el.top && scrollTop < el.bottom) {\n _this3.setInView(el, i);\n }\n }\n }\n\n if (el && el.inView) {\n if (_this3.direction === 'horizontal') {\n var width = el.right - el.left;\n el.progress = (_this3.instance.scroll.x - (el.left - _this3.windowWidth)) / (width + _this3.windowWidth);\n\n if (scrollRight < el.left || scrollLeft > el.right) {\n _this3.setOutOfView(el, i);\n }\n } else {\n var height = el.bottom - el.top;\n el.progress = (_this3.instance.scroll.y - (el.top - _this3.windowHeight)) / (height + _this3.windowHeight);\n\n if (scrollBottom < el.top || scrollTop > el.bottom) {\n _this3.setOutOfView(el, i);\n }\n }\n }\n }); // this.els = this.els.filter((current, i) => {\n // return current !== null;\n // });\n\n this.hasScrollTicking = false;\n }\n }, {\n key: \"setInView\",\n value: function setInView(current, i) {\n this.els[i].inView = true;\n current.el.classList.add(current[\"class\"]);\n this.currentElements[i] = current;\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'enter');\n\n if (!current.repeat) {\n this.els[i].call = false;\n }\n } // if (!current.repeat && !current.speed && !current.sticky) {\n // if (!current.call || current.call && this.hasCallEventSet) {\n // this.els[i] = null\n // }\n // }\n\n }\n }, {\n key: \"setOutOfView\",\n value: function setOutOfView(current, i) {\n var _this4 = this;\n\n // if (current.repeat || current.speed !== undefined) {\n this.els[i].inView = false; // }\n\n Object.keys(this.currentElements).forEach(function (el) {\n el === i && delete _this4.currentElements[el];\n });\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'exit');\n }\n\n if (current.repeat) {\n current.el.classList.remove(current[\"class\"]);\n }\n }\n }, {\n key: \"dispatchCall\",\n value: function dispatchCall(current, way) {\n this.callWay = way;\n this.callValue = current.call.split(',').map(function (item) {\n return item.trim();\n });\n this.callObj = current;\n if (this.callValue.length == 1) this.callValue = this.callValue[0];\n var callEvent = new Event(this.namespace + 'call');\n this.el.dispatchEvent(callEvent);\n }\n }, {\n key: \"dispatchScroll\",\n value: function dispatchScroll() {\n var scrollEvent = new Event(this.namespace + 'scroll');\n this.el.dispatchEvent(scrollEvent);\n }\n }, {\n key: \"setEvents\",\n value: function setEvents(event, func) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n\n var list = this.listeners[event];\n list.push(func);\n\n if (list.length === 1) {\n this.el.addEventListener(this.namespace + event, this.checkEvent, false);\n }\n\n if (event === 'call') {\n this.hasCallEventSet = true;\n this.detectElements(true);\n }\n }\n }, {\n key: \"unsetEvents\",\n value: function unsetEvents(event, func) {\n if (!this.listeners[event]) return;\n var list = this.listeners[event];\n var index = list.indexOf(func);\n if (index < 0) return;\n list.splice(index, 1);\n\n if (list.index === 0) {\n this.el.removeEventListener(this.namespace + event, this.checkEvent, false);\n }\n }\n }, {\n key: \"checkEvent\",\n value: function checkEvent(event) {\n var _this5 = this;\n\n var name = event.type.replace(this.namespace, '');\n var list = this.listeners[name];\n if (!list || list.length === 0) return;\n list.forEach(function (func) {\n switch (name) {\n case 'scroll':\n return func(_this5.instance);\n\n case 'call':\n return func(_this5.callValue, _this5.callWay, _this5.callObj);\n\n default:\n return func();\n }\n });\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {}\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {}\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance.scroll = {\n x: 0,\n y: 0\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n\n window.removeEventListener('resize', this.checkResize, false);\n Object.keys(this.listeners).forEach(function (event) {\n _this6.el.removeEventListener(_this6.namespace + event, _this6.checkEvent, false);\n });\n this.listeners = {};\n this.scrollToEls.forEach(function (el) {\n el.removeEventListener('click', _this6.setScrollTo, false);\n });\n this.html.classList.remove(this.initClass);\n }\n }]);\n\n return _default;\n}();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar smoothscroll = createCommonjsModule(function (module, exports) {\n/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n {\n // commonjs\n module.exports = { polyfill: polyfill };\n }\n\n}());\n});\nvar smoothscroll_1 = smoothscroll.polyfill;\n\nvar _default$1 = /*#__PURE__*/function (_Core) {\n _inherits(_default, _Core);\n\n var _super = _createSuper(_default);\n\n function _default() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n _this = _super.call(this, options);\n\n if (_this.resetNativeScroll) {\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual';\n }\n\n window.scrollTo(0, 0);\n }\n\n window.addEventListener('scroll', _this.checkScroll, false);\n\n if (window.smoothscrollPolyfill === undefined) {\n window.smoothscrollPolyfill = smoothscroll;\n window.smoothscrollPolyfill.polyfill();\n }\n\n return _this;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.instance.scroll.y = window.pageYOffset;\n this.addElements();\n this.detectElements();\n\n _get(_getPrototypeOf(_default.prototype), \"init\", this).call(this);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this2 = this;\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.instance.scroll.y = window.pageYOffset;\n\n if (Object.entries(this.els).length) {\n if (!this.hasScrollTicking) {\n requestAnimationFrame(function () {\n _this2.detectElements();\n });\n this.hasScrollTicking = true;\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (window.pageYOffset > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (window.pageYOffset < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (window.pageYOffset != this.instance.scroll.y) {\n this.instance.speed = (window.pageYOffset - this.instance.scroll.y) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n if (Object.entries(this.els).length) {\n this.windowHeight = window.innerHeight;\n this.updateElements();\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this3 = this;\n\n this.els = {};\n var els = this.el.querySelectorAll('[data-' + this.name + ']');\n els.forEach(function (el, index) {\n var BCR = el.getBoundingClientRect();\n var cl = el.dataset[_this3.name + 'Class'] || _this3[\"class\"];\n var id = typeof el.dataset[_this3.name + 'Id'] === 'string' ? el.dataset[_this3.name + 'Id'] : index;\n var top;\n var left;\n var offset = typeof el.dataset[_this3.name + 'Offset'] === 'string' ? el.dataset[_this3.name + 'Offset'].split(',') : _this3.offset;\n var repeat = el.dataset[_this3.name + 'Repeat'];\n var call = el.dataset[_this3.name + 'Call'];\n var target = el.dataset[_this3.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n top = targetElBCR.top + _this3.instance.scroll.y;\n left = targetElBCR.left + _this3.instance.scroll.x;\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this3.repeat;\n }\n\n var relativeOffset = _this3.getRelativeOffset(offset);\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n var mappedEl = {\n el: el,\n targetEl: targetEl,\n id: id,\n \"class\": cl,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call\n };\n _this3.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this3.setInView(_this3.els[id], id);\n }\n });\n }\n }, {\n key: \"updateElements\",\n value: function updateElements() {\n var _this4 = this;\n\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n var top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y;\n\n var bottom = top + el.targetEl.offsetHeight;\n\n var relativeOffset = _this4.getRelativeOffset(el.offset);\n\n _this4.els[i].top = top + relativeOffset[0];\n _this4.els[i].bottom = bottom - relativeOffset[1];\n });\n this.hasScrollTicking = false;\n }\n }, {\n key: \"getRelativeOffset\",\n value: function getRelativeOffset(offset) {\n var relativeOffset = [0, 0];\n\n if (offset) {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * this.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n }\n\n return relativeOffset;\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = this.html;\n } else if (target === 'bottom') {\n target = this.html.offsetHeight - window.innerHeight;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n offset = target.getBoundingClientRect().top + offset + this.instance.scroll.y;\n } else {\n offset = target + offset;\n }\n\n var isTargetReached = function isTargetReached() {\n return parseInt(window.pageYOffset) === parseInt(offset);\n };\n\n if (callback) {\n if (isTargetReached()) {\n callback();\n return;\n } else {\n var onScroll = function onScroll() {\n if (isTargetReached()) {\n window.removeEventListener('scroll', onScroll);\n callback();\n }\n };\n\n window.addEventListener('scroll', onScroll);\n }\n }\n\n window.scrollTo({\n top: offset,\n behavior: options.duration === 0 ? 'auto' : 'smooth'\n });\n }\n }, {\n key: \"update\",\n value: function update() {\n this.addElements();\n this.detectElements();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n window.removeEventListener('scroll', this.checkScroll, false);\n }\n }]);\n\n return _default;\n}(_default);\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nvar tinyEmitter = E;\n\nvar lethargy = createCommonjsModule(function (module, exports) {\n// Generated by CoffeeScript 1.9.2\n(function() {\n var root;\n\n root = exports !== null ? exports : this;\n\n root.Lethargy = (function() {\n function Lethargy(stability, sensitivity, tolerance, delay) {\n this.stability = stability != null ? Math.abs(stability) : 8;\n this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100;\n this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1;\n this.delay = delay != null ? delay : 150;\n this.lastUpDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.lastDownDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.deltasTimestamp = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n }\n\n Lethargy.prototype.check = function(e) {\n var lastDelta;\n e = e.originalEvent || e;\n if (e.wheelDelta != null) {\n lastDelta = e.wheelDelta;\n } else if (e.deltaY != null) {\n lastDelta = e.deltaY * -40;\n } else if ((e.detail != null) || e.detail === 0) {\n lastDelta = e.detail * -40;\n }\n this.deltasTimestamp.push(Date.now());\n this.deltasTimestamp.shift();\n if (lastDelta > 0) {\n this.lastUpDeltas.push(lastDelta);\n this.lastUpDeltas.shift();\n return this.isInertia(1);\n } else {\n this.lastDownDeltas.push(lastDelta);\n this.lastDownDeltas.shift();\n return this.isInertia(-1);\n }\n };\n\n Lethargy.prototype.isInertia = function(direction) {\n var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum;\n lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas;\n if (lastDeltas[0] === null) {\n return direction;\n }\n if (this.deltasTimestamp[(this.stability * 2) - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[(this.stability * 2) - 1]) {\n return false;\n }\n lastDeltasOld = lastDeltas.slice(0, this.stability);\n lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2);\n oldSum = lastDeltasOld.reduce(function(t, s) {\n return t + s;\n });\n newSum = lastDeltasNew.reduce(function(t, s) {\n return t + s;\n });\n oldAverage = oldSum / lastDeltasOld.length;\n newAverage = newSum / lastDeltasNew.length;\n if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && (this.sensitivity < Math.abs(newAverage))) {\n return direction;\n } else {\n return false;\n }\n };\n\n Lethargy.prototype.showLastUpDeltas = function() {\n return this.lastUpDeltas;\n };\n\n Lethargy.prototype.showLastDownDeltas = function() {\n return this.lastDownDeltas;\n };\n\n return Lethargy;\n\n })();\n\n}).call(commonjsGlobal);\n});\n\nvar support = (function getSupport() {\n return {\n hasWheelEvent: 'onwheel' in document,\n hasMouseWheelEvent: 'onmousewheel' in document,\n hasTouch: ('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,\n hasTouchWin: navigator.msMaxTouchPoints && navigator.msMaxTouchPoints > 1,\n hasPointer: !!window.navigator.msPointerEnabled,\n hasKeyDown: 'onkeydown' in document,\n isFirefox: navigator.userAgent.indexOf('Firefox') > -1\n };\n})();\n\nvar toString = Object.prototype.toString,\n hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\nvar bindallStandalone = function(object) {\n if(!object) return console.warn('bindAll requires at least one argument.');\n\n var functions = Array.prototype.slice.call(arguments, 1);\n\n if (functions.length === 0) {\n\n for (var method in object) {\n if(hasOwnProperty$1.call(object, method)) {\n if(typeof object[method] == 'function' && toString.call(object[method]) == \"[object Function]\") {\n functions.push(method);\n }\n }\n }\n }\n\n for(var i = 0; i < functions.length; i++) {\n var f = functions[i];\n object[f] = bind(object[f], object);\n }\n};\n\n/*\n Faster bind without specific-case checking. (see https://coderwall.com/p/oi3j3w).\n bindAll is only needed for events binding so no need to make slow fixes for constructor\n or partial application.\n*/\nfunction bind(func, context) {\n return function() {\n return func.apply(context, arguments);\n };\n}\n\nvar Lethargy = lethargy.Lethargy;\n\n\n\nvar EVT_ID = 'virtualscroll';\n\nvar src = VirtualScroll;\n\nvar keyCodes = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SPACE: 32\n};\n\nfunction VirtualScroll(options) {\n bindallStandalone(this, '_onWheel', '_onMouseWheel', '_onTouchStart', '_onTouchMove', '_onKeyDown');\n\n this.el = window;\n if (options && options.el) {\n this.el = options.el;\n delete options.el;\n }\n this.options = objectAssign({\n mouseMultiplier: 1,\n touchMultiplier: 2,\n firefoxMultiplier: 15,\n keyStep: 120,\n preventTouch: false,\n unpreventTouchClass: 'vs-touchmove-allowed',\n limitInertia: false,\n useKeyboard: true,\n useTouch: true\n }, options);\n\n if (this.options.limitInertia) this._lethargy = new Lethargy();\n\n this._emitter = new tinyEmitter();\n this._event = {\n y: 0,\n x: 0,\n deltaX: 0,\n deltaY: 0\n };\n this.touchStartX = null;\n this.touchStartY = null;\n this.bodyTouchAction = null;\n\n if (this.options.passive !== undefined) {\n this.listenerOptions = {passive: this.options.passive};\n }\n}\n\nVirtualScroll.prototype._notify = function(e) {\n var evt = this._event;\n evt.x += evt.deltaX;\n evt.y += evt.deltaY;\n\n this._emitter.emit(EVT_ID, {\n x: evt.x,\n y: evt.y,\n deltaX: evt.deltaX,\n deltaY: evt.deltaY,\n originalEvent: e\n });\n};\n\nVirtualScroll.prototype._onWheel = function(e) {\n var options = this.options;\n if (this._lethargy && this._lethargy.check(e) === false) return;\n var evt = this._event;\n\n // In Chrome and in Firefox (at least the new one)\n evt.deltaX = e.wheelDeltaX || e.deltaX * -1;\n evt.deltaY = e.wheelDeltaY || e.deltaY * -1;\n\n // for our purpose deltamode = 1 means user is on a wheel mouse, not touch pad\n // real meaning: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent#Delta_modes\n if(support.isFirefox && e.deltaMode == 1) {\n evt.deltaX *= options.firefoxMultiplier;\n evt.deltaY *= options.firefoxMultiplier;\n }\n\n evt.deltaX *= options.mouseMultiplier;\n evt.deltaY *= options.mouseMultiplier;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onMouseWheel = function(e) {\n if (this.options.limitInertia && this._lethargy.check(e) === false) return;\n\n var evt = this._event;\n\n // In Safari, IE and in Chrome if 'wheel' isn't defined\n evt.deltaX = (e.wheelDeltaX) ? e.wheelDeltaX : 0;\n evt.deltaY = (e.wheelDeltaY) ? e.wheelDeltaY : e.wheelDelta;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onTouchStart = function(e) {\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n};\n\nVirtualScroll.prototype._onTouchMove = function(e) {\n var options = this.options;\n if(options.preventTouch\n && !e.target.classList.contains(options.unpreventTouchClass)) {\n e.preventDefault();\n }\n\n var evt = this._event;\n\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n\n evt.deltaX = (t.pageX - this.touchStartX) * options.touchMultiplier;\n evt.deltaY = (t.pageY - this.touchStartY) * options.touchMultiplier;\n\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onKeyDown = function(e) {\n var evt = this._event;\n evt.deltaX = evt.deltaY = 0;\n var windowHeight = window.innerHeight - 40;\n\n switch(e.keyCode) {\n case keyCodes.LEFT:\n case keyCodes.UP:\n evt.deltaY = this.options.keyStep;\n break;\n\n case keyCodes.RIGHT:\n case keyCodes.DOWN:\n evt.deltaY = - this.options.keyStep;\n break;\n case e.shiftKey:\n evt.deltaY = windowHeight;\n break;\n case keyCodes.SPACE:\n evt.deltaY = - windowHeight;\n break;\n default:\n return;\n }\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._bind = function() {\n if(support.hasWheelEvent) this.el.addEventListener('wheel', this._onWheel, this.listenerOptions);\n if(support.hasMouseWheelEvent) this.el.addEventListener('mousewheel', this._onMouseWheel, this.listenerOptions);\n\n if(support.hasTouch && this.options.useTouch) {\n this.el.addEventListener('touchstart', this._onTouchStart, this.listenerOptions);\n this.el.addEventListener('touchmove', this._onTouchMove, this.listenerOptions);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n this.bodyTouchAction = document.body.style.msTouchAction;\n document.body.style.msTouchAction = 'none';\n this.el.addEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.addEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.addEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype._unbind = function() {\n if(support.hasWheelEvent) this.el.removeEventListener('wheel', this._onWheel);\n if(support.hasMouseWheelEvent) this.el.removeEventListener('mousewheel', this._onMouseWheel);\n\n if(support.hasTouch) {\n this.el.removeEventListener('touchstart', this._onTouchStart);\n this.el.removeEventListener('touchmove', this._onTouchMove);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n document.body.style.msTouchAction = this.bodyTouchAction;\n this.el.removeEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.removeEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.removeEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype.on = function(cb, ctx) {\n this._emitter.on(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (events && events[EVT_ID] && events[EVT_ID].length === 1) this._bind();\n};\n\nVirtualScroll.prototype.off = function(cb, ctx) {\n this._emitter.off(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (!events[EVT_ID] || events[EVT_ID].length <= 0) this._unbind();\n};\n\nVirtualScroll.prototype.reset = function() {\n var evt = this._event;\n evt.x = 0;\n evt.y = 0;\n};\n\nVirtualScroll.prototype.destroy = function() {\n this._emitter.off();\n this._unbind();\n};\n\nfunction lerp(start, end, amt) {\n return (1 - amt) * start + amt * end;\n}\n\nfunction getTranslate(el) {\n var translate = {};\n if (!window.getComputedStyle) return;\n var style = getComputedStyle(el);\n var transform = style.transform || style.webkitTransform || style.mozTransform;\n var mat = transform.match(/^matrix3d\\((.+)\\)$/);\n\n if (mat) {\n translate.x = mat ? parseFloat(mat[1].split(', ')[12]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[13]) : 0;\n } else {\n mat = transform.match(/^matrix\\((.+)\\)$/);\n translate.x = mat ? parseFloat(mat[1].split(', ')[4]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[5]) : 0;\n }\n\n return translate;\n}\n\n/**\n * Returns an array containing all the parent nodes of the given node\n * @param {object} node\n * @return {array} parent nodes\n */\nfunction getParents(elem) {\n // Set up a parent array\n var parents = []; // Push each parent element to the array\n\n for (; elem && elem !== document; elem = elem.parentNode) {\n parents.push(elem);\n } // Return our parent array\n\n\n return parents;\n} // https://gomakethings.com/how-to-get-the-closest-parent-element-with-a-matching-selector-using-vanilla-javascript/\n\n/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Ga\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 //Pevent scrollbar glitch/locking\n\n this.startScrollTs = undefined;\n\n if (this.scrollToRaf) {\n cancelAnimationFrame(this.scrollToRaf);\n this.scrollToRaf = null;\n }\n\n this.isScrolling = false;\n this.instance.scroll.y = Math.round(this.instance.scroll.y);\n this.html.classList.remove(this.scrollingClass);\n }\n }, {\n key: \"checkKey\",\n value: function checkKey(e) {\n var _this3 = this;\n\n if (this.stop) {\n // If we are stopped, we don't want any scroll to occur because of a keypress\n // Prevent tab to scroll to activeElement\n if (e.keyCode == keyCodes$1.TAB) {\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0;\n });\n }\n\n return;\n }\n\n switch (e.keyCode) {\n case keyCodes$1.TAB:\n // Do not remove the RAF\n // It allows to override the browser's native scrollTo, which is essential\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0; // Request scrollTo on the focusedElement, putting it at the center of the screen\n\n _this3.scrollTo(document.activeElement, {\n offset: -window.innerHeight / 2\n });\n });\n break;\n\n case keyCodes$1.UP:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] -= 240;\n }\n\n break;\n\n case keyCodes$1.DOWN:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] += 240;\n }\n\n break;\n\n case keyCodes$1.PAGEUP:\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n break;\n\n case keyCodes$1.PAGEDOWN:\n this.instance.delta[this.directionAxis] += window.innerHeight;\n break;\n\n case keyCodes$1.HOME:\n this.instance.delta[this.directionAxis] -= this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.END:\n this.instance.delta[this.directionAxis] += this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.SPACE:\n if (this.isActiveElementScrollSensitive()) {\n if (e.shiftKey) {\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n } else {\n this.instance.delta[this.directionAxis] += window.innerHeight;\n }\n }\n\n break;\n\n default:\n return;\n }\n\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.isScrolling = true;\n this.checkScroll();\n this.html.classList.add(this.scrollingClass);\n }\n }, {\n key: \"isActiveElementScrollSensitive\",\n value: function isActiveElementScrollSensitive() {\n return !(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement) && !(document.activeElement instanceof HTMLButtonElement) && !(document.activeElement instanceof HTMLSelectElement);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this4 = this;\n\n var forced = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (forced || this.isScrolling || this.isDraggingScrollbar) {\n if (!this.hasScrollTicking) {\n this.checkScrollRaf = requestAnimationFrame(function () {\n return _this4.checkScroll();\n });\n this.hasScrollTicking = true;\n }\n\n this.updateScroll();\n var distance = Math.abs(this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]);\n var timeSinceStart = Date.now() - this.startScrollTs; // Get the time since the scroll was started: the scroll can be stopped again only past 100ms\n\n if (!this.animatingScroll && timeSinceStart > 100 && (distance < 0.5 && this.instance.delta[this.directionAxis] != 0 || distance < 0.5 && this.instance.delta[this.directionAxis] == 0)) {\n this.stopScrolling();\n }\n\n Object.entries(this.sections).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n section = _ref2[1];\n\n if (section.persistent || _this4.instance.scroll[_this4.directionAxis] > section.offset[_this4.directionAxis] && _this4.instance.scroll[_this4.directionAxis] < section.limit[_this4.directionAxis]) {\n if (_this4.direction === 'horizontal') {\n _this4.transform(section.el, -_this4.instance.scroll[_this4.directionAxis], 0);\n } else {\n _this4.transform(section.el, 0, -_this4.instance.scroll[_this4.directionAxis]);\n }\n\n if (!section.inView) {\n section.inView = true;\n section.el.style.opacity = 1;\n section.el.style.pointerEvents = 'all';\n section.el.setAttribute(\"data-\".concat(_this4.name, \"-section-inview\"), '');\n }\n } else {\n if (section.inView || forced) {\n section.inView = false;\n section.el.style.opacity = 0;\n section.el.style.pointerEvents = 'none';\n section.el.removeAttribute(\"data-\".concat(_this4.name, \"-section-inview\"));\n }\n\n _this4.transform(section.el, 0, 0);\n }\n });\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.detectElements();\n this.transformElements();\n\n if (this.hasScrollbar) {\n var scrollBarTranslation = this.instance.scroll[this.directionAxis] / this.instance.limit[this.directionAxis] * this.scrollBarLimit[this.directionAxis];\n\n if (this.direction === 'horizontal') {\n this.transform(this.scrollbarThumb, scrollBarTranslation, 0);\n } else {\n this.transform(this.scrollbarThumb, 0, scrollBarTranslation);\n }\n }\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n this.hasScrollTicking = false;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.checkContext();\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.update();\n }\n }, {\n key: \"updateDelta\",\n value: function updateDelta(e) {\n var delta;\n var gestureDirection = this[this.context] && this[this.context].gestureDirection ? this[this.context].gestureDirection : this.gestureDirection;\n\n if (gestureDirection === 'both') {\n delta = e.deltaX + e.deltaY;\n } else if (gestureDirection === 'vertical') {\n delta = e.deltaY;\n } else if (gestureDirection === 'horizontal') {\n delta = e.deltaX;\n } else {\n delta = e.deltaY;\n }\n\n this.instance.delta[this.directionAxis] -= delta * this.multiplier;\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n }\n }, {\n key: \"updateScroll\",\n value: function updateScroll(e) {\n if (this.isScrolling || this.isDraggingScrollbar) {\n this.instance.scroll[this.directionAxis] = lerp(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis], this.lerp);\n } else {\n if (this.instance.scroll[this.directionAxis] > this.instance.limit[this.directionAxis]) {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.limit[this.directionAxis]);\n } else if (this.instance.scroll.y < 0) {\n this.setScroll(this.instance.scroll[this.directionAxis], 0);\n } else {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis]);\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (this.instance.delta.y > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (this.instance.delta.y < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n\n if (this.instance.delta.x > this.instance.scroll.x) {\n if (this.instance.direction !== 'right') {\n this.instance.direction = 'right';\n }\n } else if (this.instance.delta.x < this.instance.scroll.x) {\n if (this.instance.direction !== 'left') {\n this.instance.direction = 'left';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (this.instance.delta[this.directionAxis] != this.instance.scroll[this.directionAxis]) {\n this.instance.speed = (this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"initScrollBar\",\n value: function initScrollBar() {\n this.scrollbar = document.createElement('span');\n this.scrollbarThumb = document.createElement('span');\n this.scrollbar.classList.add(\"\".concat(this.scrollbarClass));\n this.scrollbarThumb.classList.add(\"\".concat(this.scrollbarClass, \"_thumb\"));\n this.scrollbar.append(this.scrollbarThumb);\n\n if (this.scrollbarContainer) {\n this.scrollbarContainer.append(this.scrollbar);\n } else {\n document.body.append(this.scrollbar);\n } // Scrollbar Events\n\n\n this.getScrollBar = this.getScrollBar.bind(this);\n this.releaseScrollBar = this.releaseScrollBar.bind(this);\n this.moveScrollBar = this.moveScrollBar.bind(this);\n this.scrollbarThumb.addEventListener('mousedown', this.getScrollBar);\n window.addEventListener('mouseup', this.releaseScrollBar);\n window.addEventListener('mousemove', this.moveScrollBar); // Set scrollbar values\n\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"reinitScrollBar\",\n value: function reinitScrollBar() {\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"destroyScrollBar\",\n value: function destroyScrollBar() {\n this.scrollbarThumb.removeEventListener('mousedown', this.getScrollBar);\n window.removeEventListener('mouseup', this.releaseScrollBar);\n window.removeEventListener('mousemove', this.moveScrollBar);\n this.scrollbar.remove();\n }\n }, {\n key: \"getScrollBar\",\n value: function getScrollBar(e) {\n this.isDraggingScrollbar = true;\n this.checkScroll();\n this.html.classList.remove(this.scrollingClass);\n this.html.classList.add(this.draggingClass);\n }\n }, {\n key: \"releaseScrollBar\",\n value: function releaseScrollBar(e) {\n this.isDraggingScrollbar = false;\n\n if (this.isScrolling) {\n this.html.classList.add(this.scrollingClass);\n }\n\n this.html.classList.remove(this.draggingClass);\n }\n }, {\n key: \"moveScrollBar\",\n value: function moveScrollBar(e) {\n var _this5 = this;\n\n if (this.isDraggingScrollbar) {\n requestAnimationFrame(function () {\n var x = (e.clientX - _this5.scrollbarBCR.left) * 100 / _this5.scrollbarWidth * _this5.instance.limit.x / 100;\n var y = (e.clientY - _this5.scrollbarBCR.top) * 100 / _this5.scrollbarHeight * _this5.instance.limit.y / 100;\n\n if (y > 0 && y < _this5.instance.limit.y) {\n _this5.instance.delta.y = y;\n }\n\n if (x > 0 && x < _this5.instance.limit.x) {\n _this5.instance.delta.x = x;\n }\n });\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this6 = this;\n\n this.els = {};\n this.parallaxElements = {}; // this.sections.forEach((section, y) => {\n\n var els = this.el.querySelectorAll(\"[data-\".concat(this.name, \"]\"));\n els.forEach(function (el, index) {\n // Try and find the target's parent section\n var targetParents = getParents(el);\n var section = Object.entries(_this6.sections).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n section = _ref4[1];\n\n return section;\n }).find(function (section) {\n return targetParents.includes(section.el);\n });\n var cl = el.dataset[_this6.name + 'Class'] || _this6[\"class\"];\n var id = typeof el.dataset[_this6.name + 'Id'] === 'string' ? el.dataset[_this6.name + 'Id'] : 'el' + index;\n var top;\n var left;\n var repeat = el.dataset[_this6.name + 'Repeat'];\n var call = el.dataset[_this6.name + 'Call'];\n var position = el.dataset[_this6.name + 'Position'];\n var delay = el.dataset[_this6.name + 'Delay'];\n var direction = el.dataset[_this6.name + 'Direction'];\n var sticky = typeof el.dataset[_this6.name + 'Sticky'] === 'string';\n var speed = el.dataset[_this6.name + 'Speed'] ? parseFloat(el.dataset[_this6.name + 'Speed']) / 10 : false;\n var offset = typeof el.dataset[_this6.name + 'Offset'] === 'string' ? el.dataset[_this6.name + 'Offset'].split(',') : _this6.offset;\n var target = el.dataset[_this6.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n\n if (section === null) {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n } else {\n if (!section.inView) {\n top = targetElBCR.top - getTranslate(section.el).y - getTranslate(targetEl).y;\n left = targetElBCR.left - getTranslate(section.el).x - getTranslate(targetEl).x;\n } else {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n }\n }\n\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n var middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n\n if (sticky) {\n var elBCR = el.getBoundingClientRect();\n var elTop = elBCR.top;\n var elLeft = elBCR.left;\n var elDistance = {\n x: elLeft - left,\n y: elTop - top\n };\n top += window.innerHeight;\n left += window.innerWidth;\n bottom = elTop + targetEl.offsetHeight - el.offsetHeight - elDistance[_this6.directionAxis];\n right = elLeft + targetEl.offsetWidth - el.offsetWidth - elDistance[_this6.directionAxis];\n middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n }\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this6.repeat;\n }\n\n var relativeOffset = [0, 0];\n\n if (offset) {\n if (_this6.direction === 'horizontal') {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowWidth / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n left = left + relativeOffset[0];\n right = right - relativeOffset[1];\n } else {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n }\n }\n\n var mappedEl = {\n el: el,\n id: id,\n \"class\": cl,\n section: section,\n top: top,\n middle: middle,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call,\n speed: speed,\n delay: delay,\n position: position,\n target: targetEl,\n direction: direction,\n sticky: sticky\n };\n _this6.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this6.setInView(_this6.els[id], id);\n }\n\n if (speed !== false || sticky) {\n _this6.parallaxElements[id] = mappedEl;\n }\n }); // });\n }\n }, {\n key: \"addSections\",\n value: function addSections() {\n var _this7 = this;\n\n this.sections = {};\n var sections = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-section]\"));\n\n if (sections.length === 0) {\n sections = [this.el];\n }\n\n sections.forEach(function (section, index) {\n var id = typeof section.dataset[_this7.name + 'Id'] === 'string' ? section.dataset[_this7.name + 'Id'] : 'section' + index;\n var sectionBCR = section.getBoundingClientRect();\n var offset = {\n x: sectionBCR.left - window.innerWidth * 1.5 - getTranslate(section).x,\n y: sectionBCR.top - window.innerHeight * 1.5 - getTranslate(section).y\n };\n var limit = {\n x: offset.x + sectionBCR.width + window.innerWidth * 2,\n y: offset.y + sectionBCR.height + window.innerHeight * 2\n };\n var persistent = typeof section.dataset[_this7.name + 'Persistent'] === 'string';\n section.setAttribute('data-scroll-section-id', id);\n var mappedSection = {\n el: section,\n offset: offset,\n limit: limit,\n inView: false,\n persistent: persistent,\n id: id\n };\n _this7.sections[id] = mappedSection;\n });\n }\n }, {\n key: \"transform\",\n value: function transform(element, x, y, delay) {\n var transform;\n\n if (!delay) {\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(x, \",\").concat(y, \",0,1)\");\n } else {\n var start = getTranslate(element);\n var lerpX = lerp(start.x, x, delay);\n var lerpY = lerp(start.y, y, delay);\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(lerpX, \",\").concat(lerpY, \",0,1)\");\n }\n\n element.style.webkitTransform = transform;\n element.style.msTransform = transform;\n element.style.transform = transform;\n }\n }, {\n key: \"transformElements\",\n value: function transformElements(isForced) {\n var _this8 = this;\n\n var setAllElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var scrollRight = this.instance.scroll.x + this.windowWidth;\n var scrollBottom = this.instance.scroll.y + this.windowHeight;\n var scrollMiddle = {\n x: this.instance.scroll.x + this.windowMiddle.x,\n y: this.instance.scroll.y + this.windowMiddle.y\n };\n Object.entries(this.parallaxElements).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n i = _ref6[0],\n current = _ref6[1];\n\n var transformDistance = false;\n\n if (isForced) {\n transformDistance = 0;\n }\n\n if (current.inView || setAllElements) {\n switch (current.position) {\n case 'top':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementTop':\n transformDistance = (scrollBottom - current.top) * -current.speed;\n break;\n\n case 'bottom':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollBottom + _this8.windowHeight) * current.speed;\n break;\n\n case 'left':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementLeft':\n transformDistance = (scrollRight - current.left) * -current.speed;\n break;\n\n case 'right':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollRight + _this8.windowHeight) * current.speed;\n break;\n\n default:\n transformDistance = (scrollMiddle[_this8.directionAxis] - current.middle[_this8.directionAxis]) * -current.speed;\n break;\n }\n }\n\n if (current.sticky) {\n if (current.inView) {\n if (_this8.direction === 'horizontal') {\n transformDistance = _this8.instance.scroll.x - current.left + window.innerWidth;\n } else {\n transformDistance = _this8.instance.scroll.y - current.top + window.innerHeight;\n }\n } else {\n if (_this8.direction === 'horizontal') {\n if (_this8.instance.scroll.x < current.left - window.innerWidth && _this8.instance.scroll.x < current.left - window.innerWidth / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.x > current.right && _this8.instance.scroll.x > current.right + 100) {\n transformDistance = current.right - current.left + window.innerWidth;\n } else {\n transformDistance = false;\n }\n } else {\n if (_this8.instance.scroll.y < current.top - window.innerHeight && _this8.instance.scroll.y < current.top - window.innerHeight / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.y > current.bottom && _this8.instance.scroll.y > current.bottom + 100) {\n transformDistance = current.bottom - current.top + window.innerHeight;\n } else {\n transformDistance = false;\n }\n }\n }\n }\n\n if (transformDistance !== false) {\n if (current.direction === 'horizontal' || _this8.direction === 'horizontal' && current.direction !== 'vertical') {\n _this8.transform(current.el, transformDistance, 0, isForced ? false : current.delay);\n } else {\n _this8.transform(current.el, 0, transformDistance, isForced ? false : current.delay);\n }\n }\n });\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var _this9 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var duration = !isNaN(parseInt(options.duration)) ? parseInt(options.duration) : 1000; // Duration of the scroll animation in milliseconds\n\n var easing = options.easing || [0.25, 0.0, 0.35, 1.0]; // An array of 4 floats between 0 and 1 defining the bezier curve for the animation's easing. See http://greweb.me/bezier-easing-editor/example/\n\n var disableLerp = options.disableLerp ? true : false; // Lerp effect won't be applied if set to true\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n easing = src$1.apply(void 0, _toConsumableArray(easing));\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = 0;\n } else if (target === 'bottom') {\n target = this.instance.limit.y;\n } else if (target === 'left') {\n target = 0;\n } else if (target === 'right') {\n target = this.instance.limit.x;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n // Verify the given target belongs to this scroll scope\n var targetInScope = getParents(target).includes(this.el);\n\n if (!targetInScope) {\n // If the target isn't inside our main element, abort any action\n return;\n } // Get target offset from top\n\n\n var targetBCR = target.getBoundingClientRect();\n var offsetTop = targetBCR.top;\n var offsetLeft = targetBCR.left; // Try and find the target's parent section\n\n var targetParents = getParents(target);\n var parentSection = targetParents.find(function (candidate) {\n return Object.entries(_this9.sections) // Get sections associative array as a regular array\n .map(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n key = _ref8[0],\n section = _ref8[1];\n\n return section;\n }) // map to section only (we dont need the key here)\n .find(function (section) {\n return section.el == candidate;\n }); // finally find the section that matches the candidate\n });\n var parentSectionOffset = 0;\n\n if (parentSection) {\n parentSectionOffset = getTranslate(parentSection)[this.directionAxis]; // We got a parent section, store it's current offset to remove it later\n } else {\n // if no parent section is found we need to use instance scroll directly\n parentSectionOffset = -this.instance.scroll[this.directionAxis];\n } // Final value of scroll destination : offsetTop + (optional offset given in options) - (parent's section translate)\n\n\n if (this.direction === 'horizontal') {\n offset = offsetLeft + offset - parentSectionOffset;\n } else {\n offset = offsetTop + offset - parentSectionOffset;\n }\n } else {\n offset = target + offset;\n } // Actual scrollto\n // ==========================================================================\n // Setup\n\n\n var scrollStart = parseFloat(this.instance.delta[this.directionAxis]);\n var scrollTarget = Math.max(0, Math.min(offset, this.instance.limit[this.directionAxis])); // Make sure our target is in the scroll boundaries\n\n var scrollDiff = scrollTarget - scrollStart;\n\n var render = function render(p) {\n if (disableLerp) {\n if (_this9.direction === 'horizontal') {\n _this9.setScroll(scrollStart + scrollDiff * p, _this9.instance.delta.y);\n } else {\n _this9.setScroll(_this9.instance.delta.x, scrollStart + scrollDiff * p);\n }\n } else {\n _this9.instance.delta[_this9.directionAxis] = scrollStart + scrollDiff * p;\n }\n }; // Prepare the scroll\n\n\n this.animatingScroll = true; // This boolean allows to prevent `checkScroll()` from calling `stopScrolling` when the animation is slow (i.e. at the beginning of an EaseIn)\n\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.startScrolling(); // Restart the scroll\n // Start the animation loop\n\n var start = Date.now();\n\n var loop = function loop() {\n var p = (Date.now() - start) / duration; // Animation progress\n\n if (p > 1) {\n // Animation ends\n render(1);\n _this9.animatingScroll = false;\n if (duration == 0) _this9.update();\n if (callback) callback();\n } else {\n _this9.scrollToRaf = requestAnimationFrame(loop);\n render(easing(p));\n }\n };\n\n loop();\n }\n }, {\n key: \"update\",\n value: function update() {\n this.setScrollLimit();\n this.addSections();\n this.addElements();\n this.detectElements();\n this.updateScroll();\n this.transformElements(true);\n this.reinitScrollBar();\n this.checkScroll(true);\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {\n this.stop = false;\n }\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {\n this.stop = true;\n }\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance = _objectSpread2(_objectSpread2({}, this.instance), {}, {\n scroll: {\n x: x,\n y: y\n },\n delta: {\n x: x,\n y: y\n },\n speed: 0\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n this.stopScrolling();\n this.html.classList.remove(this.smoothClass);\n this.vs.destroy();\n this.destroyScrollBar();\n window.removeEventListener('keydown', this.checkKey, false);\n }\n }]);\n\n return _default;\n}(_default);\n\nvar Smooth = /*#__PURE__*/function () {\n function Smooth() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Smooth);\n\n this.options = options; // Override default options with given ones\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n if (!this.smooth && this.direction == 'horizontal') console.warn('\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 the related image.\n *\n * @see ../utils/image.js\n *\n * It is recommended to wrap your `` into an element with the\n * CSS class name `.c-lazy`. The CSS class name modifier `.-lazy-loaded`\n * will be applied on both the image and the parent wrapper.\n *\n * ```html\n *
\n * \"\"\n *
\n * ```\n *\n * @param {LocomotiveScroll} args - The Locomotive Scroll instance.\n */\n lazyLoad(args) {\n lazyLoadImage(args.obj.el, 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 $html = document.documentElement;\nconst $body = document.body;\n\nexport { $html, $body };\n", "import modular from 'modujs';\nimport * as modules from './modules';\nimport globals from './globals';\nimport { $html } from './utils/dom';\nimport config from './config';\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(config.CLASS.LOADED);\n $html.classList.add(config.CLASS.READY);\n $html.classList.remove(config.CLASS.LOADING);\n}\n\n"], - "mappings": "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", + "sourcesContent": ["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n", "/**\n * @barba/core/modules/Logger\n *

\n * ## Logger.\n *\n * - Display informations via the console\n *\n * @module core/modules/Logger\n * @preferred\n */\n\n/***/\n\n/**\n * Log levels, all lower level messages are printed\n *\n * 0. mute\n * 1. error = `console.error()`\n * 2. warning= `console.warn()`\n * 3. info = `console.info()`\n * 4. debug = `console.log()`\n */\nexport enum LogLevels {\n off = 0,\n error = 1,\n warning = 2,\n info = 3,\n debug = 4,\n}\n\n/**\n * Global log level\n */\nlet _level: number = LogLevels.off;\n\nexport class Logger {\n /**\n * Get global log level.\n */\n public static getLevel(): number {\n return _level;\n }\n\n /**\n * Set global log level.\n */\n public static setLevel(name: keyof typeof LogLevels): number {\n _level = LogLevels[name];\n\n return _level;\n }\n\n /**\n * Log \"prefix\".\n */\n private _source: string;\n\n /**\n * Creates an instance of Logger.\n */\n constructor(source: string) {\n this._source = source;\n }\n\n /**\n * Permanent, unremovable log.\n */\n // public print(...objects: any[]): void {\n // this._log(console.info, LogLevels.off, objects);\n // }\n\n /**\n * Error log.\n */\n public error(...objects: any[]): void {\n this._log(console.error, LogLevels.error, objects);\n }\n\n /**\n * Warn log.\n */\n public warn(...objects: any[]): void {\n this._log(console.warn, LogLevels.warning, objects);\n }\n\n /**\n * Info log.\n */\n public info(...objects: any[]): void {\n this._log(console.info, LogLevels.info, objects);\n }\n\n /**\n * Debug log.\n */\n public debug(...objects: any[]): void {\n this._log(console.log, LogLevels.debug, objects);\n }\n\n /**\n * Internal logger.\n */\n private _log(fn: () => void, level: number, objects: any[]): void {\n if (level <= Logger.getLevel()) {\n fn.apply(console, ([`[${this._source}] `].concat(objects) as unknown) as [\n\n ]);\n }\n }\n}\n", "/**\n * @module typings/core\n */\nimport { ITransitionData, ITransitionPage, IViewData } from './index';\n\nexport type HooksBarba =\n | 'ready'\n | 'page'\n | 'reset'\n | 'currentAdded'\n | 'currentRemoved'\n | 'nextAdded'\n | 'nextRemoved';\n\nexport type HooksOnce = 'beforeOnce' | 'once' | 'afterOnce';\n\nexport type HooksPage =\n | 'before'\n | 'beforeLeave'\n | 'leave'\n | 'afterLeave'\n | 'beforeEnter'\n | 'enter'\n | 'afterEnter'\n | 'after';\n\nexport type HooksBefore = 'beforeOnce' | 'beforeLeave' | 'beforeEnter';\nexport type HooksAfter = 'afterOnce' | 'afterLeave' | 'afterEnter';\n\nexport type HooksTransition = HooksOnce | HooksPage;\nexport type HooksView = HooksBefore | HooksAfter;\nexport type HooksAll = HooksBarba | HooksTransition;\n\n// Allow optional \"dynamically created\" hooks\nexport type HooksTransitionMap = { [key in HooksTransition]?: any };\n\nexport type HookFunction = (\n data?: ITransitionData | IViewData,\n t?: ITransitionPage\n) => Promise | void;\n\nexport class HookMethods {\n public before: (fn: HookFunction, ctx?: any) => void;\n public beforeLeave: (fn: HookFunction, ctx?: any) => void;\n public leave: (fn: HookFunction, ctx?: any) => void;\n public afterLeave: (fn: HookFunction, ctx?: any) => void;\n public beforeEnter: (fn: HookFunction, ctx?: any) => void;\n public enter: (fn: HookFunction, ctx?: any) => void;\n public afterEnter: (fn: HookFunction, ctx?: any) => void;\n public after: (fn: HookFunction, ctx?: any) => void;\n}\n", "/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.match = match\nmodule.exports.regexpToFunction = regexpToFunction\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match (str, options) {\n var keys = []\n var re = pathToRegexp(str, keys, options)\n return regexpToFunction(re, keys)\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction (re, keys) {\n return function (pathname, options) {\n var m = re.exec(pathname)\n if (!m) return false\n\n var path = m[0]\n var index = m.index\n var params = {}\n var decode = (options && options.decode) || decodeURIComponent\n\n for (var i = 1; i < m.length; i++) {\n if (m[i] === undefined) continue\n\n var key = keys[i - 1]\n\n if (key.repeat) {\n params[key.name] = m[i].split(key.delimiter).map(function (value) {\n return decode(value, key)\n })\n } else {\n params[key.name] = decode(m[i], key)\n }\n }\n\n return { path: path, index: index, params: params }\n }\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n var validate = options ? options.validate !== false : true\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n", "/**\n * @barba/core/schemas\n *

\n * ## Schemas description.\n *\n * @module core/schemas\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { ISchemaAttribute } from '../defs';\n\n/**\n * See [[ISchemaAttribute]]\n */\nexport const schemaAttribute: ISchemaAttribute = {\n container: 'container',\n history: 'history',\n namespace: 'namespace',\n prefix: 'data-barba',\n prevent: 'prevent',\n wrapper: 'wrapper',\n};\n", "/**\n * @barba/core/utils/dom\n *

\n * ## Dom utils\n *\n * - Access DOM contents\n * - DOM vs string conversions\n *\n * @module core/utils/dom\n * @preferred\n */\n\n/***/\n\nimport path from 'path';\n\n// Definitions\nimport { ISchemaAttribute, Link, Scope, Wrapper } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\nexport class Dom {\n private _attr: ISchemaAttribute = schemaAttribute;\n private _parser: DOMParser = new DOMParser();\n\n /**\n * Convert HTMLDocument to string.\n */\n public toString(el: HTMLElement): string {\n return el.outerHTML;\n }\n\n /**\n * Parse HTML string to HTMLDocument.\n */\n // see https://github.com/barbajs/barba/issues/362\n // Seems that using DOMParser.parseFromString causes this issue.\n public toDocument(htmlString: string): HTMLDocument {\n return this._parser.parseFromString(htmlString, 'text/html');\n }\n\n /**\n * Parse HTML string to DIVElement.\n *\n * DOMParser.parseFromString fails with img[srcset] on iOS.\n * see https://github.com/barbajs/barba/issues/362\n */\n public toElement(htmlString: string): HTMLDivElement {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString;\n return div;\n }\n\n /**\n * Get HTML content.\n */\n public getHtml(doc: HTMLDocument = document): string {\n return this.toString(doc.documentElement);\n }\n\n /**\n * Get full document content.\n */\n // getDocument(el = document.documentElement) {\n // return this.toStr(el);\n // },\n\n /**\n * Get `[data-barba=\"wrapper\"]`.\n */\n public getWrapper(scope: Scope = document): Wrapper {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.wrapper}\"]`\n );\n }\n\n /**\n * Get `[data-barba=\"container\"]`.\n */\n public getContainer(scope: Scope = document): HTMLElement | null {\n return scope.querySelector(\n `[${this._attr.prefix}=\"${this._attr.container}\"]`\n );\n }\n\n /**\n * Remove container and store next sibling (if applicable).\n */\n public removeContainer(container: HTMLElement) {\n if (document.body.contains(container)) {\n container.parentNode.removeChild(container);\n }\n }\n\n /**\n * Add container before next sibling or at the end of the wrapper.\n */\n public addContainer(container: HTMLElement, wrapper: HTMLElement) {\n const existingContainer = this.getContainer();\n\n if (existingContainer) {\n this._insertAfter(container, existingContainer);\n } else {\n wrapper.appendChild(container);\n }\n }\n\n /**\n * Get `[data-barba-namespace]`.\n */\n public getNamespace(scope: Scope = document): string | null {\n const ns = scope.querySelector(\n `[${this._attr.prefix}-${this._attr.namespace}]`\n );\n\n return ns\n ? ns.getAttribute(`${this._attr.prefix}-${this._attr.namespace}`)\n : null;\n }\n\n /**\n * Get URL from `href` value.\n */\n public getHref(el: Link): string | null {\n // HTML tagName is UPPERCASE, xhtml tagName keeps existing case.\n if (el.tagName && el.tagName.toLowerCase() === 'a') {\n // HTMLAnchorElement, full URL available\n if (typeof el.href === 'string') {\n return el.href;\n }\n\n // Probably a SVGAElement\u2026\n const href = el.getAttribute('href') || el.getAttribute('xlink:href');\n\n /* istanbul ignore else */\n if (href) {\n // When link comes from SVG, `href` returns an object, not a string.\n const attr: string =\n ((href as unknown) as SVGAnimatedString).baseVal || href;\n\n return this.resolveUrl(attr);\n }\n }\n return null;\n }\n\n // Copyright 2014 Simon Lydell\n // X11 (\u201CMIT\u201D) Licensed. (See LICENSE\n // https://github.com/lydell/resolve-url/blob/master/resolve-url.js\n /* istanbul ignore next */\n public resolveUrl(...urls: string[]) {\n const numUrls = urls.length;\n\n if (numUrls === 0) {\n throw new Error('resolveUrl requires at least one argument; got none.');\n }\n\n const base = document.createElement('base');\n base.href = arguments[0];\n\n if (numUrls === 1) {\n return base.href;\n }\n\n const head = document.getElementsByTagName('head')[0];\n head.insertBefore(base, head.firstChild);\n\n const a = document.createElement('a');\n let resolved;\n\n for (let index = 1; index < numUrls; index++) {\n a.href = arguments[index];\n resolved = a.href;\n base.href = resolved;\n }\n\n head.removeChild(base);\n\n return resolved;\n }\n\n /**\n * Insert node after another node.\n */\n private _insertAfter(newNode: Node, referenceNode: Node) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n }\n}\n\nconst dom = new Dom();\n\nexport { dom };\n", "import { HistoryAction, LinkEvent, Trigger } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n\n/**\n * @barba/core/utils/history\n *

\n * ## History manager.\n *\n * - Keep track of the navigation history\n *\n * @module core/utils/history\n * @preferred\n */\n\n/**\n * State item.\n *\n * @property from\n * @property index\n */\ninterface IHistoryItem {\n /** origin */\n from: string;\n /** index */\n index: number;\n /** states */\n states: IStateItem[];\n}\n\n/***/\ninterface ICoords {\n x: number;\n y: number;\n}\n\n/**\n * History item.\n *\n * @property namespace\n * @property scroll\n * @property URL\n */\ninterface IStateItem {\n /** namespace */\n ns: string | undefined;\n /** Scroll position */\n scroll: ICoords;\n /** URL */\n url: string;\n}\n\nexport class History {\n private _session: string;\n private _states: IStateItem[] = [];\n private _pointer = -1;\n\n /**\n * Init with first state.\n */\n public init(url: string, ns: string): void {\n this._session = 'barba';\n const index = 0;\n\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n window.history && window.history.replaceState(item, '', url);\n }\n\n public change(\n url: string,\n trigger: Trigger,\n e?: LinkEvent | PopStateEvent\n ): Trigger {\n if (e && (e as PopStateEvent).state) {\n // If popstate, move to existing state\n // and get back/forward direction.\n const { state }: { state: IHistoryItem } = e as PopStateEvent;\n const { index } = state;\n const diff = this._pointer - index;\n\n trigger = this._getDirection(diff);\n\n // Work with previous states\n this.replace(state.states);\n this._pointer = index;\n } else {\n // Add new state\n this.add(url, trigger);\n }\n\n return trigger;\n }\n\n /**\n * Add a new state.\n */\n public add(url: string, trigger: Trigger): void {\n // If no state, it will be updated later.\n const ns = 'tmp';\n const index = this.size;\n const action = this._getAction(trigger);\n const state: IStateItem = {\n ns,\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n url,\n };\n\n this._states.push(state);\n this._pointer = index;\n\n const item: IHistoryItem = {\n from: this._session,\n index,\n states: [...this._states],\n };\n\n switch (action) {\n case 'push':\n window.history && window.history.pushState(item, '', url);\n break;\n case 'replace':\n window.history && window.history.replaceState(item, '', url);\n break;\n /* istanbul ignore next */\n default:\n }\n }\n\n /**\n * Update state.\n */\n public update(data: any, i?: number): void {\n const index = i || this._pointer;\n const existing = this.get(index);\n const state: IStateItem = {\n ...existing,\n ...data,\n };\n\n this.set(index, state);\n }\n\n /**\n * Remove last state.\n */\n public remove(i?: number): void {\n if (i) {\n this._states.splice(i, 1);\n } else {\n this._states.pop();\n }\n\n this._pointer--;\n }\n\n /**\n * Delete all states.\n */\n public clear(): void {\n this._states = [];\n this._pointer = -1;\n }\n\n /**\n * Replace all states.\n */\n public replace(newStates: IStateItem[]): void {\n this._states = newStates;\n }\n\n /**\n * Get state by index.\n */\n public get(index: number) {\n return this._states[index];\n }\n\n /**\n * Set state by index.\n */\n public set(i: number, state: IStateItem) {\n return (this._states[i] = state);\n }\n\n /**\n * Get the current state.\n */\n get current(): IStateItem {\n return this._states[this._pointer];\n }\n\n /**\n * Get the last state (top of the history stack).\n */\n get state(): IStateItem {\n return this._states[this._states.length - 1];\n }\n\n /**\n * Get the previous state.\n */\n get previous(): IStateItem | null {\n return this._pointer < 1 ? null : this._states[this._pointer - 1];\n }\n\n /**\n * Get the state size.\n */\n get size(): number {\n return this._states.length;\n }\n\n /**\n * Get the history action: push vs replace\n */\n private _getAction(trigger: Trigger): HistoryAction {\n let action: HistoryAction = 'push';\n\n // Manage `data-barba-history` attribute\n // to get the right action (push vs replace).\n const el = trigger as HTMLAnchorElement;\n const attr = `${schemaAttribute.prefix}-${schemaAttribute.history}`;\n\n if (el.hasAttribute && el.hasAttribute(attr)) {\n action = el.getAttribute(attr) as HistoryAction;\n }\n\n return action;\n }\n\n /**\n * Get the direction of popstate change\n */\n private _getDirection(diff: number): Trigger {\n // Check if \"session switch\"\n if (Math.abs(diff) > 1) {\n // Ex 6-0 > 0 -> forward, 0-6 < 0 -> back\n return diff > 0 ? 'forward' : 'back';\n } else {\n if (diff === 0) {\n return 'popstate';\n } else {\n // Ex 6-5 > 0 -> back, 5-6 < 0 -> forward\n return diff > 0 ? 'back' : 'forward';\n }\n }\n }\n}\n\nconst history = new History();\n\nexport { history };\n", "/**\n * @barba/core/utils/helpers\n *

\n * ## Helpers\n *\n * - Update next page data\n *\n * @module core/utils/helpers\n * @preferred\n */\n\n/***/\n\n// Third-party\nimport ptr from 'path-to-regexp';\n// Definitions\nimport { ITransitionData } from '../defs';\n// Utils\nimport { dom } from './dom';\nimport { history } from './history';\n\n/**\n * Update `data.next`, the title and the history\n */\nexport const update = async (\n page: Promise,\n data: ITransitionData\n): Promise => {\n // If not already updated\n if (!data.next.html) {\n const html = await page;\n const { next } = data;\n\n if (html) {\n // see: https://github.com/barbajs/barba/issues/362\n // const nextDocument = dom.toDocument(html);\n const nextDocument = dom.toElement(html);\n\n next.namespace = dom.getNamespace(nextDocument);\n next.container = dom.getContainer(nextDocument);\n // see https://github.com/barbajs/barba/issues/362\n // next.html = dom.getHtml(nextDocument);\n // next.html = nextDocument.innerHTML;\n next.html = html;\n\n // Update history namespace (not available when initially set)\n history.update({ ns: next.namespace });\n\n // Update title.\n const { title } = dom.toDocument(html);\n\n document.title = title;\n }\n }\n};\n\n/**\n * Next tick\n */\nexport const nextTick = () =>\n new Promise(resolve => {\n window.requestAnimationFrame(resolve);\n // DEV: same result?\n // setTimeout(resolve, 0);\n });\n\n/**\n * Turn a route string such as `/user/:name` into a regular expression.\n *\n * Used for:\n *\n * - routes to ignore\n * - route transition resolution\n *\n * @see https://www.npmjs.com/package/path-to-regexp\n */\nconst pathToRegexp = ptr;\n\nexport { pathToRegexp };\n", "/**\n * @barba/core/utils/url\n *

\n * ## URL utils.\n *\n * - Collect and structure informations from URLs\n *\n * @module core/utils/url\n */\n\n/***/\n\n// Definitions\nimport { IGenericObject, IUrlBase } from '../defs';\n\n/**\n * Get location href.\n */\nexport const getHref = () => window.location.href;\n\n/**\n * Get location origin.\n */\nexport const getOrigin = () => window.location.origin;\n\n/**\n * Get port based on URL or location.\n */\nexport const getPort = (url: string = window.location.href) => parse(url).port;\n\n/**\n * Get path from URL.\n */\nexport const getPath = (url: string = window.location.href) => parse(url).path;\n\n/**\n * Get query object from URL.\n */\n// export const getQuery = (url: string): IGenericObject => parse(url).query;\n\n/**\n * Get hash from URL.\n */\n// export const getHash = (url: string): string => parse(url).hash;\n\n/**\n * Parse URL for path, query and hash and more.\n */\nexport const parse = (url: string): IUrlBase => {\n // Port\n let port;\n const matches = url.match(/:\\d+/);\n\n if (matches === null) {\n if (/^http/.test(url)) {\n port = 80;\n }\n\n if (/^https/.test(url)) {\n port = 443;\n }\n } else {\n const portString = matches[0].substring(1);\n\n port = parseInt(portString, 10);\n }\n\n // Path\n let path = url.replace(getOrigin(), '');\n let hash;\n let query = {};\n\n // Hash\n const hashIndex = path.indexOf('#');\n\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex + 1);\n path = path.slice(0, hashIndex);\n }\n\n // Query\n const queryIndex = path.indexOf('?');\n\n if (queryIndex >= 0) {\n query = parseQuery(path.slice(queryIndex + 1));\n path = path.slice(0, queryIndex);\n }\n\n return {\n hash,\n path,\n port,\n query,\n };\n};\n\n/**\n * Parse a query string to object.\n */\nexport const parseQuery = (str: string) =>\n str.split('&').reduce((acc: IGenericObject, el: string) => {\n const [key, value] = el.split('=');\n\n acc[key] = value;\n\n return acc;\n }, {});\n\n/**\n * Clean URL, remove \"hash\" and/or \"trailing slash\".\n */\nexport const clean = (url: string = window.location.href) =>\n url.replace(/(\\/#.*|\\/|#.*)$/, '');\n", "/**\n * @barba/core/utils/request\n *

\n * ## Fetch pages for transitions.\n *\n * - Includes timeout\n * - Uses Fetch API\n * - Handles errors\n *\n * @module core/utils/request\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { RequestError } from '../defs';\n\n/**\n * Init a page request.\n * Fetch the page and returns a promise with the text content.\n */\nfunction request(\n url: string,\n ttl: number = 2e3,\n requestError: RequestError\n): Promise {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n resolve(xhr.responseText);\n } else if (xhr.status) {\n // HTTP code is not 200, reject with response.\n const res = {\n status: xhr.status,\n statusText: xhr.statusText,\n };\n requestError(url, res);\n reject(res);\n }\n }\n };\n xhr.ontimeout = () => {\n const err = new Error(`Timeout error [${ttl}]`);\n requestError(url, err);\n reject(err);\n };\n xhr.onerror = () => {\n const err = new Error(`Fetch error`);\n requestError(url, err);\n reject(err);\n };\n\n xhr.open('GET', url);\n xhr.timeout = ttl;\n xhr.setRequestHeader(\n 'Accept',\n 'text/html,application/xhtml+xml,application/xml'\n );\n xhr.setRequestHeader('x-barba', 'yes');\n xhr.send();\n });\n}\n\nexport { request };\n", "module.exports = isPromise;\n\nfunction isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n", "import isPromise from 'is-promise';\n\n// https://github.com/SBoudrias/run-async\n/* istanbul ignore next */\nexport function runAsync(\n func: (...args: any[]) => void | Promise,\n ctx: any = {}\n): (...args: any[]) => Promise {\n return (...args: any[]) => {\n let async = false;\n\n const promise = new Promise((resolve, reject) => {\n // Add async to context\n ctx.async = () => {\n async = true;\n\n return (err: any, value: any) => {\n if (err) {\n reject(err);\n } else {\n resolve(value);\n }\n };\n };\n\n const answer = func.apply(ctx, args as []);\n\n if (!async) {\n if (isPromise(answer)) {\n (answer as Promise).then(resolve, reject);\n } else {\n resolve(answer);\n }\n }\n });\n\n return promise;\n };\n}\n", "/**\n * @barba/core/modules/hooks\n *

\n * ## Hooks manager.\n *\n * - Register and trigger hooks\n *\n * Hooks can be easily registered:\n *\n * ```js\n * hooks.leave(callback, context);\n * ```\n *\n * @module core/modules/hooks\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HookFunction, HookMethods, HooksAll } from './defs';\n// Modules\nimport { Logger } from './modules/Logger';\n// Utils\nimport { runAsync } from './utils';\n// Types\ninterface IHookInfos {\n ctx: any;\n fn: HookFunction;\n}\n\nexport class Hooks extends HookMethods {\n /**\n * Allow the use of `hooks[name](cb, ctx)`.\n */\n [key: string]: any;\n // [key in HooksAll]?: any;\n public logger: Logger = new Logger('@barba/core');\n /**\n * All available hooks.\n *\n * See [[HooksAll]]\n */\n // TODO: get hooks from defs (DRY)?\n public all: HooksAll[] = [\n 'ready',\n 'page',\n 'reset',\n 'currentAdded',\n 'currentRemoved',\n 'nextAdded',\n 'nextRemoved',\n 'beforeOnce',\n 'once',\n 'afterOnce',\n 'before',\n 'beforeLeave',\n 'leave',\n 'afterLeave',\n 'beforeEnter',\n 'enter',\n 'afterEnter',\n 'after',\n ];\n /**\n * Registered hooks.\n *\n * - Unique hook name\n * - Associated data set(s) (callback + context)\n */\n public registered: Map> = new Map();\n\n constructor() {\n super();\n this.init();\n }\n\n public init() {\n this.registered.clear();\n this.all.forEach(hook => {\n if (!this[hook]) {\n this[hook] = (fn: HookFunction, ctx?: any) => {\n if (!this.registered.has(hook)) {\n this.registered.set(hook, new Set());\n }\n const set = this.registered.get(hook);\n\n set.add({\n ctx: ctx || {},\n fn,\n });\n };\n }\n });\n }\n\n /**\n * Do hook.\n *\n * Trigger registered hooks.\n */\n public do(name: HooksAll, ...args: any): Promise {\n if (this.registered.has(name)) {\n // Let's start a chain of promises\n let chain = Promise.resolve();\n\n this.registered.get(name).forEach(hook => {\n // Chain async hooks promisified\n chain = chain.then(() => runAsync(hook.fn, hook.ctx)(...args));\n });\n\n return chain.catch(error => {\n this.logger.debug(`Hook error [${name}]`);\n this.logger.error(error);\n });\n }\n\n return Promise.resolve();\n }\n\n public clear(): void {\n this.all.forEach(hook => {\n delete this[hook];\n });\n\n this.init();\n }\n\n /**\n * Help, print available and registered hooks.\n */\n public help(): void {\n this.logger.info(`Available hooks: ${this.all.join(',')}`);\n const registered: string[] = [];\n this.registered.forEach((value, key) => registered.push(key));\n this.logger.info(`Registered hooks: ${registered.join(',')}`);\n }\n}\n\nconst hooks = new Hooks();\n\nexport { hooks };\n", "/**\n * @barba/core/modules/ignore\n *

\n * ## Manage ignore options.\n *\n * - cache\n * - prefetch\n *\n * @module core/modules/ignore\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption } from '../defs';\n// Utils\nimport { pathToRegexp } from '../utils/helpers';\nimport { parse } from '../utils/url';\n\nexport class Ignore {\n private _ignoreAll: boolean;\n private _ignoreRegexes: RegExp[] = [];\n\n constructor(ignore: IgnoreOption) {\n if (typeof ignore === 'boolean') {\n this._ignoreAll = ignore;\n } else {\n const paths = Array.isArray(ignore) ? ignore : [ignore];\n\n this._ignoreRegexes = paths.map(p => pathToRegexp(p));\n }\n }\n\n public checkHref(href: string): boolean {\n if (typeof this._ignoreAll === 'boolean') {\n return this._ignoreAll;\n }\n\n const { path } = parse(href);\n\n return this._ignoreRegexes.some(regex => regex.exec(path) !== null);\n }\n}\n", "/**\n * @barba/core/modules/cache\n *

\n * ## Cache for storing URL / HTML.\n *\n * @module core/modules/cache\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { CacheAction, CacheRequest, ICacheData, IgnoreOption } from '../defs';\n// Modules\nimport { Ignore } from './Ignore';\n\nexport class Cache extends Ignore {\n private _state: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n }\n\n /**\n * Set value to cache\n */\n public set(\n href: string,\n request: CacheRequest,\n action: CacheAction\n ): ICacheData {\n this._state.set(href, {\n action,\n request,\n });\n\n return {\n action,\n request,\n };\n }\n\n /**\n * Get data from cache\n */\n public get(href: string): ICacheData {\n return this._state.get(href);\n }\n\n /**\n * Get request from cache\n */\n public getRequest(href: string): CacheRequest {\n return this._state.get(href).request;\n }\n\n /**\n * Get action from cache\n */\n public getAction(href: string): CacheAction {\n return this._state.get(href).action;\n }\n\n /**\n * Check if value exists into cache\n */\n public has(href: string): boolean {\n /* istanbul ignore else */\n if (this.checkHref(href)) {\n return false;\n }\n return this._state.has(href);\n }\n\n /**\n * Delete value from cache\n */\n public delete(href: string): boolean {\n return this._state.delete(href);\n }\n\n /**\n * Update cache value\n */\n public update(href: string, data: ICacheData): ICacheData {\n const state = {\n ...this._state.get(href),\n ...data,\n };\n this._state.set(href, state);\n\n return state;\n }\n}\n", "/**\n * @barba/core/modules/prevent\n *

\n * ## Prevent checks.\n *\n * - Gathers all the tests that allow Barba to work and play transitions\n *\n * @module core/modules/prevent\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { IgnoreOption, Link, PreventCheck } from '../defs';\n// Schemas\nimport { schemaAttribute } from '../schemas/attribute';\n// Utils\nimport { url } from '../utils';\n// Modules\nimport { Ignore } from './Ignore';\n\n/**\n * Make sure the browser supports `history.pushState`.\n */\nconst pushState: PreventCheck = () => !window.history.pushState;\n\n/**\n * Make sure there is an `el` and `href`.\n */\nconst exists: PreventCheck = ({ el, href }) => !el || !href;\n\n/**\n * If the user is pressing ctrl + click, the browser will open a new tab.\n */\nconst newTab: PreventCheck = ({ event }) =>\n (event as KeyboardEvent).which > 1 ||\n (event as KeyboardEvent).metaKey ||\n (event as KeyboardEvent).ctrlKey ||\n (event as KeyboardEvent).shiftKey ||\n (event as KeyboardEvent).altKey;\n\n/**\n * If the link has `_blank` target.\n */\nconst blank: PreventCheck = ({ el }) =>\n el.hasAttribute('target') && (el as Link).target === '_blank';\n\n/**\n * If the domain is the same (in order to avoid pushState cross origin security problem).\n * Note: SVGAElement do not have `protocol` neither `hostname` properties.\n */\nconst corsDomain: PreventCheck = ({ el }) =>\n ((el as HTMLAnchorElement).protocol !== undefined &&\n window.location.protocol !== (el as HTMLAnchorElement).protocol) ||\n ((el as HTMLAnchorElement).hostname !== undefined &&\n window.location.hostname !== (el as HTMLAnchorElement).hostname);\n\n/**\n * If the port is the same.\n * Note: SVGAElement do not have `port` property.\n */\nconst corsPort: PreventCheck = ({ el }) =>\n (el as HTMLAnchorElement).port !== undefined &&\n url.getPort() !== url.getPort((el as HTMLAnchorElement).href);\n\n/**\n * If the link has download attribute.\n */\nconst download: PreventCheck = ({ el }) =>\n el.getAttribute && typeof el.getAttribute('download') === 'string';\n\n/**\n * If the links contains [data-barba-prevent] or [data-barba-prevent=\"self\"].\n */\nconst preventSelf: PreventCheck = ({ el }) =>\n el.hasAttribute(`${schemaAttribute.prefix}-${schemaAttribute.prevent}`);\n\n/**\n * If some link ancestor contains [data-barba-prevent=\"all\"].\n */\nconst preventAll: PreventCheck = ({ el }) =>\n Boolean(\n el.closest(`[${schemaAttribute.prefix}-${schemaAttribute.prevent}=\"all\"]`)\n );\n\n/**\n * If the link is the current URL.\n *\n * > Not in the test suite.\n */\nconst sameUrl: PreventCheck = ({ href }) =>\n url.clean(href) === url.clean() && url.getPort(href) === url.getPort();\n\nexport class Prevent extends Ignore {\n public suite: string[] = [];\n public tests: Map = new Map();\n\n constructor(ignore: IgnoreOption) {\n super(ignore);\n this.init();\n }\n\n public init(): void {\n // Add defaults\n this.add('pushState', pushState);\n this.add('exists', exists);\n this.add('newTab', newTab);\n this.add('blank', blank);\n this.add('corsDomain', corsDomain);\n this.add('corsPort', corsPort);\n this.add('download', download);\n this.add('preventSelf', preventSelf);\n this.add('preventAll', preventAll);\n\n // Outside of the test suite\n this.add('sameUrl', sameUrl, false);\n }\n\n public add(name: string, check: PreventCheck, suite: boolean = true): void {\n this.tests.set(name, check);\n suite && this.suite.push(name);\n }\n\n /**\n * Run individual test\n */\n public run(name: string, el: Link, event: Event, href: string): boolean {\n return this.tests.get(name)({\n el,\n event,\n href,\n });\n }\n\n /**\n * Run test suite\n */\n public checkLink(el: Link, event: Event, href: string): boolean {\n return this.suite.some(name => this.run(name, el, event, href));\n }\n}\n", "// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\nexport class BarbaError extends Error {\n /* istanbul ignore next */\n constructor(\n public error: Error,\n public label = 'Barba error',\n ...params: any[]\n ) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(...params);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BarbaError);\n }\n\n this.name = 'BarbaError';\n }\n}\n", "/**\n * @barba/core/modules/store\n *

\n * ## Transitions store.\n *\n * - Resolve transition\n * - Manage rules\n *\n * @module core/modules/store\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n IRule,\n IRules,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n RuleName,\n} from '../defs';\n\n// Modules\nimport { Logger } from './Logger';\n\nexport class Store {\n public logger: Logger = new Logger('@barba/core');\n /**\n * All registered transitions.\n */\n public all: ITransitionPage[] = [];\n /**\n * \"Page only\" registered transitions.\n */\n public page: ITransitionPage[] = [];\n /**\n * \"Once only\" registered transitions.\n */\n public once: ITransitionOnce[] = [];\n /**\n * Rules for transition resolution.\n *\n * Defaults:\n *\n * - namespace\n * - custom\n */\n private _rules: IRule[] = [\n {\n name: 'namespace',\n type: 'strings',\n },\n {\n name: 'custom',\n type: 'function',\n },\n ];\n\n /**\n * Init store.\n */\n constructor(transitions: ITransitionPage[] = []) {\n /* istanbul ignore else */\n if (transitions) {\n // TODO: add check for valid transitions? criteria? (once || enter && leave)\n this.all = this.all.concat(transitions);\n }\n this.update();\n }\n\n /**\n * Add rule or transition.\n */\n public add(type: 'rule' | 'transition', data: any): void {\n switch (type) {\n case 'rule':\n // TODO: check for valid rule\n this._rules.splice(data.position || 0, 0, data.value);\n break;\n case 'transition':\n default:\n // TODO: check for valid transition\n this.all.push(data);\n break;\n }\n\n this.update();\n }\n\n /**\n * Resolve transition.\n */\n public resolve(\n data: ITransitionData,\n filters: ITransitionFilters = {}\n ): ITransitionOnce | ITransitionPage {\n // Filter on \"once\"\n let transitions = filters.once ? this.once : this.page;\n\n // Filter on \"self\"\n if (filters.self) {\n transitions = transitions.filter(t => t.name && t.name === 'self');\n } else {\n transitions = transitions.filter(t => !t.name || t.name !== 'self');\n }\n\n // All matching transition infos\n const matching = new Map();\n\n // Active = first of valid transitions\n // sorted by directions (from/to, from || to, \u2026)\n const active = transitions.find(t => {\n let valid = true;\n const match = {};\n\n if (filters.self && t.name === 'self') {\n return true;\n }\n\n // Check rules\n this._rules.reverse().forEach(rule => {\n if (valid) {\n valid = this._check(t, rule, data, match);\n // From/to check\n if (t.from && t.to) {\n valid =\n this._check(t, rule, data, match, 'from') &&\n this._check(t, rule, data, match, 'to');\n }\n if (t.from && !t.to) {\n valid = this._check(t, rule, data, match, 'from');\n }\n if (!t.from && t.to) {\n valid = this._check(t, rule, data, match, 'to');\n }\n }\n });\n\n matching.set(t, match);\n\n return valid;\n });\n\n const activeMatch = matching.get(active);\n const transitionType = [];\n if (filters.once) {\n transitionType.push('once');\n } else {\n transitionType.push('page');\n }\n if (filters.self) {\n transitionType.push('self');\n }\n\n if (activeMatch) {\n // Log resolved transition\n const infos: any[] = [active];\n // Log if matching criteria\n Object.keys(activeMatch).length > 0 && infos.push(activeMatch);\n\n this.logger.info(\n `Transition found [${transitionType.join(',')}]`,\n ...infos\n );\n } else {\n this.logger.info(`No transition found [${transitionType.join(',')}]`);\n }\n\n return active;\n }\n\n /**\n * ### Update store.\n *\n * - Reorder transition by priorities\n * - Get wait indicator\n * - Get once transitions\n */\n public update(): void {\n // Reorder by priorities\n this.all = this.all\n .map(t => this._addPriority(t))\n .sort((a, b) => a.priority - b.priority)\n .reverse()\n .map(t => {\n delete t.priority;\n\n return t;\n });\n this.page = this.all.filter(\n t => t.leave !== undefined || t.enter !== undefined\n ) as ITransitionPage[];\n this.once = this.all.filter(t => t.once !== undefined) as ITransitionOnce[];\n }\n\n /**\n * ### Check if transition apply.\n *\n * Based on rule, page data and optional direction:\n *\n * 1. transition has no rule \"property\":\n * - always returns true\n * 2. transition has rule \"property\":\n * - \"strings\" should be present on both side (transition + page) and match\n * - \"function\" should return true\n */\n private _check(\n transition: ITransitionPage,\n rule: IRule,\n data: ITransitionData,\n match: any,\n direction?: 'from' | 'to'\n ): boolean {\n let isValid = true;\n let hasMatch = false;\n const t = transition;\n const { name, type } = rule;\n const strRule = name as IRules['strings'];\n const objRule = name as IRules['object'];\n const fnName = name as IRules['function'];\n const base = direction ? t[direction] : t; // = t || t.from || t.to\n const page = direction === 'to' ? data.next : data.current; // = current || next\n const exist = direction ? base && base[name] : base[name];\n\n // If transition rule exists\n if (exist) {\n switch (type) {\n case 'strings':\n default: {\n // Array support\n const names: string[] = Array.isArray(base[strRule])\n ? (base[strRule] as string[])\n : [base[strRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[strRule] && names.indexOf(page[strRule]) !== -1) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[strRule]) === -1) {\n isValid = false;\n }\n break;\n }\n\n case 'object': {\n // Array support\n const names: string[] = Array.isArray(base[objRule])\n ? (base[objRule] as string[])\n : [base[objRule] as string];\n\n // For matching, prop should be present on both sides and match\n if (page[objRule]) {\n if (\n page[objRule].name &&\n names.indexOf(page[objRule].name) !== -1\n ) {\n hasMatch = true;\n }\n // If transition prop is different from current, not valid\n if (names.indexOf(page[objRule].name) === -1) {\n isValid = false;\n }\n } else {\n isValid = false;\n }\n break;\n }\n\n case 'function':\n if (base[fnName](data)) {\n hasMatch = true;\n } else {\n isValid = false;\n }\n break;\n }\n\n if (hasMatch) {\n if (direction) {\n match[direction] = match[direction] || {};\n match[direction][name] = t[direction][name];\n } else {\n match[name] = t[name];\n }\n }\n }\n\n return isValid;\n }\n\n /**\n * ### Calculate transition priority.\n *\n * Based on:\n *\n * - rule \"position\" (index) give tens, hundreds, thousands, \u2026\n * - from/to properties give units (0, 1 or 2)\n */\n private _calculatePriority(\n t: ITransitionPage,\n ruleName: RuleName,\n ruleIndex: number\n ): number {\n let priority = 0;\n\n if (\n t[ruleName] ||\n (t.from && t.from[ruleName]) ||\n (t.to && t.to[ruleName])\n ) {\n priority += Math.pow(10, ruleIndex);\n\n if (t.from && t.from[ruleName]) {\n priority += 1;\n }\n if (t.to && t.to[ruleName]) {\n priority += 2;\n }\n }\n\n return priority;\n }\n\n private _addPriority(t: ITransitionPage): ITransitionPage {\n t.priority = 0;\n let priority = 0;\n\n this._rules.forEach((rule, i) => {\n const { name } = rule;\n const index = i + 1;\n\n priority += this._calculatePriority(t, name, index);\n });\n\n t.priority = priority;\n\n return t;\n }\n}\n", "/**\n * @barba/core/modules/transitions\n *

\n * ## Transitions manager.\n *\n * - Handle hooks and transition lifecycle\n *\n * @module core/modules/transitions\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport {\n HooksTransition,\n HooksTransitionMap,\n ITransitionData,\n ITransitionFilters,\n ITransitionOnce,\n ITransitionPage,\n Wrapper,\n} from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { dom, helpers, runAsync } from '../utils';\n// Modules\nimport { BarbaError } from './Error';\nimport { Logger } from './Logger';\nimport { Store } from './Store';\n\nexport class Transitions {\n public logger: Logger = new Logger('@barba/core');\n public store: Store;\n private _running: boolean = false;\n\n constructor(transitions: ITransitionPage[] = []) {\n this.store = new Store(transitions);\n }\n\n /**\n * Get resolved transition\n *\n * - based on data\n */\n public get(\n data: ITransitionData,\n filters?: ITransitionFilters\n ): ITransitionOnce | ITransitionPage {\n return this.store.resolve(data, filters);\n }\n\n /**\n * Animation running status.\n */\n get isRunning(): boolean {\n return this._running;\n }\n set isRunning(status: boolean) {\n this._running = status;\n }\n\n /**\n * Check for registered once transition(s).\n */\n get hasOnce(): boolean {\n return this.store.once.length > 0;\n }\n\n /**\n * Check for registered self transition.\n */\n get hasSelf(): boolean {\n return this.store.all.some(t => t.name === 'self');\n }\n\n /**\n * ### Wait indicator.\n *\n * Tells Barba to get next page data
\n * before starting the resolution
\n * because some registered transitions need
\n * next page data to be resolved (eg: `sync: true`, `to: { namespace }`, \u2026)\n */\n get shouldWait(): boolean {\n return this.store.all.some(t => (t.to && !t.to.route) || t.sync);\n }\n\n /**\n * ### Do \"once\" transition.\n *\n * Hooks: see [[HooksOnce]].\n */\n public async doOnce({\n data,\n transition,\n }: {\n data: ITransitionData;\n transition: ITransitionOnce;\n }) {\n const t = transition || {};\n this._running = true;\n\n try {\n await this._doAsyncHook('beforeOnce', data, t);\n await this.once(data, t);\n await this._doAsyncHook('afterOnce', data, t);\n } catch (error) {\n this._running = false;\n\n this.logger.debug('Transition error [before/after/once]');\n this.logger.error(error);\n }\n\n this._running = false;\n }\n\n /**\n * ### Do \"page\" transition.\n *\n * Hooks: see [[HooksPage]].\n *\n * `sync: false` (default) order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. leave\n * 4. afterLeave\n * 5. beforeEnter\n * 6. enter\n * 7. afterEnter\n * 8. after\n *\n * `sync: true` order:\n *\n * 1. before\n * 2. beforeLeave\n * 3. beforeEnter\n * 4. leave & enter\n * 5. afterLeave\n * 6. afterEnter\n * 7. after\n */\n public async doPage({\n data,\n transition,\n page,\n wrapper,\n }: {\n data: ITransitionData;\n transition: ITransitionPage;\n page: Promise;\n wrapper: Wrapper;\n }) {\n const t = transition || {};\n const sync = t.sync === true || false;\n\n this._running = true;\n\n try {\n // Check sync mode, wait for next content\n if (sync) {\n await helpers.update(page, data);\n }\n\n await this._doAsyncHook('before', data, t);\n\n if (sync) {\n try {\n await this.add(data, wrapper);\n // Before actions\n await this._doAsyncHook('beforeLeave', data, t);\n await this._doAsyncHook('beforeEnter', data, t);\n\n // Actions\n await Promise.all([this.leave(data, t), this.enter(data, t)]);\n\n // After actions\n await this._doAsyncHook('afterLeave', data, t);\n await this._doAsyncHook('afterEnter', data, t);\n } catch (error) {\n // this.logger.debug('Transition error [sync]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(error, 'Transition error [sync]');\n }\n }\n } else {\n let leaveResult: any = false;\n\n try {\n // Leave\n await this._doAsyncHook('beforeLeave', data, t);\n\n leaveResult = await Promise.all([\n this.leave(data, t),\n helpers.update(page, data),\n ]).then(values => values[0]);\n\n await this._doAsyncHook('afterLeave', data, t);\n\n // TODO: check here \"valid\" page result\n // before going further\n } catch (error) {\n // this.logger.debug('Transition error [before/after/leave]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/leave]'\n );\n }\n }\n\n try {\n // Enter\n /* istanbul ignore else */\n if (leaveResult !== false) {\n await this.add(data, wrapper);\n\n await this._doAsyncHook('beforeEnter', data, t);\n await this.enter(data, t, leaveResult);\n await this._doAsyncHook('afterEnter', data, t);\n }\n } catch (error) {\n // this.logger.debug('Transition error [before/after/enter]');\n // this.logger.error(error);\n if (this._isTransitionError(error)) {\n throw new BarbaError(\n error,\n 'Transition error [before/after/enter]'\n );\n }\n }\n }\n\n // Remove current contaienr\n await this.remove(data);\n\n await this._doAsyncHook('after', data, t);\n } catch (error) {\n this._running = false;\n\n // If \"custom/specific\" barba error.\n /* istanbul ignore else */\n if (error.name && error.name === 'BarbaError') {\n this.logger.debug(error.label);\n this.logger.error(error.error);\n\n throw error;\n }\n\n this.logger.debug('Transition error [page]');\n this.logger.error(error);\n\n throw error;\n }\n\n this._running = false;\n }\n\n /**\n * Once hook + async \"once\" transition.\n */\n public async once(data: ITransitionData, t: ITransitionOnce): Promise {\n await hooks.do('once', data, t);\n\n return t.once ? runAsync(t.once, t)(data) : Promise.resolve();\n }\n\n /**\n * Leave hook + async \"leave\" transition.\n */\n public async leave(data: ITransitionData, t: ITransitionPage): Promise {\n await hooks.do('leave', data, t);\n\n return t.leave ? runAsync(t.leave, t)(data) : Promise.resolve();\n }\n\n /**\n * Enter hook + async \"enter\" transition.\n */\n public async enter(\n data: ITransitionData,\n t: ITransitionPage,\n leaveResult?: any\n ): Promise {\n await hooks.do('enter', data, t);\n\n return t.enter\n ? runAsync(t.enter, t)(data, leaveResult)\n : Promise.resolve();\n }\n\n /**\n * Add next container.\n */\n public async add(data: ITransitionData, wrapper: Wrapper): Promise {\n dom.addContainer(data.next.container, wrapper);\n hooks.do('nextAdded', data);\n }\n\n /**\n * Remove current container.\n */\n public async remove(data: ITransitionData): Promise {\n dom.removeContainer(data.current.container);\n hooks.do('currentRemoved', data);\n }\n\n private _isTransitionError(error: any) {\n if (error.message) {\n // Errors from request\n return !/Timeout error|Fetch error/.test(error.message);\n }\n\n if (error.status) {\n // Errors from request\n return false;\n }\n\n return true;\n }\n\n /**\n * Do hooks + async transition methods.\n */\n private async _doAsyncHook(\n hook: HooksTransition,\n data: ITransitionData,\n t: HooksTransitionMap\n ): Promise {\n await hooks.do(hook, data, t);\n\n return t[hook] ? runAsync(t[hook], t)(data) : Promise.resolve();\n }\n}\n", "/**\n * @barba/core/modules/views\n *

\n * ## Views manager.\n *\n * @module core/modules/views\n * @preferred\n */\n\n/***/\n\n// Definitions\nimport { HooksView, IView, IViewData } from '../defs';\n// Hooks\nimport { hooks } from '../hooks';\n// Utils\nimport { runAsync } from '../utils';\n// Types\ntype Hook = (data: IViewData) => Promise;\n\nexport class Views {\n /**\n * Available hook names for views.\n */\n public names: HooksView[] = [\n 'beforeLeave',\n 'afterLeave',\n 'beforeEnter',\n 'afterEnter',\n ];\n /**\n * Registered views by namespace.\n */\n public byNamespace: Map = new Map();\n\n /**\n * Init views.\n */\n constructor(views: IView[]) {\n if (views.length === 0) {\n return;\n }\n\n // TODO: add check\n // for valid views? criteria? (namespace property, string ?)\n // or duplicate\n views.forEach(view => {\n this.byNamespace.set(view.namespace, view);\n });\n\n this.names.forEach(name => {\n hooks[name](this._createHook(name));\n });\n }\n\n /**\n * Create the hook method.\n *\n * - get view based on namespace\n * - execute callback with transition data\n */\n private _createHook(name: HooksView): Hook {\n return data => {\n const { namespace } = name.match(/enter/i) ? data.next : data.current;\n const view = this.byNamespace.get(namespace);\n\n // TODO: manage self\u2026\n // if (view && data.trigger !== 'self') {\n if (view && view[name]) {\n return runAsync(view[name], view)(data);\n }\n\n return Promise.resolve();\n };\n }\n}\n", "// Element.prototype.matches polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\nif (!Element.prototype.matches) {\n Element.prototype.matches =\n (Element as any).prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n\n// Element.prototype.closest polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\nif (!Element.prototype.closest) {\n Element.prototype.closest = function closest(s: string) {\n let el = this;\n\n do {\n if (el.matches(s)) {\n return el;\n }\n\n el = (el.parentElement || el.parentNode) as Element;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n };\n}\n", "/**\n * @module core/schemas\n */\n\n// Definitions\nimport { ISchemaPage } from '../defs';\n\n/**\n * See [[ISchemaPage]]\n */\nexport const schemaPage: ISchemaPage = {\n container: null,\n html: '',\n namespace: '',\n url: {\n hash: '',\n href: '',\n path: '',\n port: null,\n query: {},\n },\n};\n", "/**\n * @barba/core\n *

\n * ## Barba core object\n *\n * Main methods:\n *\n * - `.init()` for initialization with options\n * - `.use()` for plugins\n *\n * @module core\n */\n\n/***/\n\nimport { version } from '../package.json';\n// Definitions\nimport {\n IBarbaOptions,\n IBarbaPlugin,\n IgnoreOption,\n ISchemaPage,\n ITransitionData,\n ITransitionOnce,\n ITransitionPage,\n Link,\n LinkEvent,\n RequestCustomError,\n RequestErrorOrResponse,\n SchemaAttributeValues,\n Trigger,\n Wrapper,\n} from './defs';\n// Hooks\nimport { hooks } from './hooks';\n// Modules\nimport { Cache } from './modules/Cache';\nimport { Logger } from './modules/Logger';\nimport { Prevent } from './modules/Prevent';\nimport { Transitions } from './modules/Transitions';\nimport { Views } from './modules/Views';\n// Polyfills\nimport './polyfills';\n// Schemas\nimport { schemaAttribute } from './schemas/attribute';\nimport { schemaPage } from './schemas/page';\n// Utils\nimport { dom, helpers, history, request, url } from './utils';\n\nexport class Core {\n /**\n * Version.\n */\n public version: string = version;\n /**\n * Schemas.\n */\n public schemaPage: ISchemaPage = schemaPage;\n /**\n * Logger class, allows plugins to create Logger.\n */\n public Logger: typeof Logger = Logger;\n /**\n * Barba logger.\n */\n public logger: Logger = new Logger('@barba/core');\n /**\n * Plugins.\n */\n public plugins: Array> = [];\n /**\n * Options\n */\n public timeout: number;\n public cacheIgnore: IgnoreOption;\n public prefetchIgnore: IgnoreOption;\n public preventRunning: boolean;\n /**\n * Hooks\n */\n public hooks = hooks;\n /**\n * Modules.\n */\n // public history: History;\n public cache: Cache;\n public prevent: Prevent;\n public transitions: Transitions;\n public views: Views;\n /**\n * Utils.\n */\n public dom = dom;\n public helpers = helpers;\n public history = history;\n public request = request;\n public url = url;\n\n private _data: ITransitionData;\n private _requestCustomError: RequestCustomError;\n private _wrapper: Wrapper;\n\n /**\n * ### Init plugin with options.\n *\n * See [[IBarbaPlugin]] for more details.\n */\n public use(plugin: IBarbaPlugin, options?: T): void {\n const installedPlugins = this.plugins;\n\n // Plugin installation\n if (installedPlugins.indexOf(plugin) > -1) {\n this.logger.warn(`Plugin [${plugin.name}] already installed.`);\n\n return;\n }\n\n if (typeof plugin.install !== 'function') {\n this.logger.warn(`Plugin [${plugin.name}] has no \"install\" method.`);\n\n return;\n }\n\n plugin.install(this, options);\n installedPlugins.push(plugin);\n }\n\n /**\n * ### Init barba with options.\n *\n * See [[IBarbaOptions]] for more details.\n *\n * Default values are:\n *\n * - transitions: `[]`\n * - views: `[]`\n * - schema: [[SchemaAttribute]]\n * - timeout: `2e3`\n * - cacheIgnore: `false`\n * - prefetchIgnore: `false`\n * - preventRunning: `false`\n * - prevent: `null`,\n * - debug: `false`\n * - logLevel: `'debug'`\n */\n public init(\n /** @ignore */ {\n transitions = [],\n views = [],\n schema = schemaAttribute,\n requestError,\n timeout = 2e3,\n cacheIgnore = false,\n prefetchIgnore = false,\n /* istanbul ignore next */\n preventRunning = false,\n prevent: preventCustom = null,\n debug = false,\n logLevel = 'off',\n }: IBarbaOptions = {}\n ) {\n // 0. Set logger level and print version\n Logger.setLevel(debug === true ? 'debug' : logLevel);\n this.logger.info(this.version);\n\n // 1. Manage options\n Object.keys(schema).forEach(k => {\n const attr = k as SchemaAttributeValues;\n\n /* istanbul ignore else */\n if (schemaAttribute[attr]) {\n schemaAttribute[attr] = schema[attr];\n }\n });\n this._requestCustomError = requestError;\n this.timeout = timeout;\n this.cacheIgnore = cacheIgnore;\n this.prefetchIgnore = prefetchIgnore;\n this.preventRunning = preventRunning;\n\n // 2. Get and check wrapper\n this._wrapper = this.dom.getWrapper();\n if (!this._wrapper) {\n throw new Error('[@barba/core] No Barba wrapper found');\n }\n this._wrapper.setAttribute('aria-live', 'polite'); // A11y\n\n // 3. Init pages (get \"current\" data)\n this._resetData();\n\n const { current } = this.data;\n\n if (!current.container) {\n throw new Error('[@barba/core] No Barba container found');\n }\n\n // 4. Init other modules\n this.cache = new Cache(cacheIgnore);\n this.prevent = new Prevent(prefetchIgnore);\n this.transitions = new Transitions(transitions);\n this.views = new Views(views);\n\n // Add prevent custom\n if (preventCustom !== null) {\n if (typeof preventCustom !== 'function') {\n throw new Error('[@barba/core] Prevent should be a function');\n }\n\n this.prevent.add('preventCustom', preventCustom);\n }\n\n // 5. Use \"current\" data\n // Init history\n this.history.init(current.url.href, current.namespace);\n // Add to cache\n // TODO: do not cache renderer HTML, only request results\u2026\n // this.cache.set(current.url.href, Promise.resolve(current.html), 'init');\n\n // 6. Bind context\n this._onLinkEnter = this._onLinkEnter.bind(this);\n this._onLinkClick = this._onLinkClick.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._bind();\n\n // 7. Init plugins\n this.plugins.forEach(plugin => plugin.init());\n\n // 8. Barba ready\n // Set next + trigger for once and `beforeEnter`/`afterEnter` view on page load.\n const onceData = this.data;\n\n onceData.trigger = 'barba';\n onceData.next = onceData.current;\n onceData.current = { ...this.schemaPage };\n this.hooks.do('ready', onceData);\n\n // 9. Finally, do once\u2026\n this.once(onceData);\n\n // Clean data for first barba transition\u2026\n this._resetData();\n }\n\n public destroy(): void {\n this._resetData();\n this._unbind();\n this.history.clear();\n this.hooks.clear();\n this.plugins = [];\n }\n\n get data(): ITransitionData {\n return this._data;\n }\n\n get wrapper(): HTMLElement {\n return this._wrapper;\n }\n\n /**\n * ### Force a page change without Barba transition.\n */\n public force(href: string): void {\n // DEV\n // Can be used waiting animation cancellation management\u2026\n window.location.assign(href);\n }\n\n /**\n * ### Go for a Barba transition.\n *\n * Manage \"self page\" href:\n *\n * - if same url and no self transition, keep default behavior\n * - link: reload the page\n * - anchor: scroll to\n * - if same url with self transition, use it\n * - then start a page transition.\n */\n public go(\n href: string,\n trigger: Trigger = 'barba',\n e?: LinkEvent | PopStateEvent\n ): Promise {\n // If animation running, force reload\n if (this.transitions.isRunning) {\n this.force(href);\n\n return;\n }\n\n let self = false;\n\n // Check prevent sameURL against current history\n // + state check\n // + update trigger with direction\n if (trigger === 'popstate') {\n self =\n this.history.current &&\n this.url.getPath(this.history.current.url) === this.url.getPath(href);\n } else {\n self = this.prevent.run('sameUrl', null, null, href);\n }\n\n if (self && !this.transitions.hasSelf) {\n return;\n }\n\n trigger = this.history.change(href, trigger, e);\n\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n return this.page(href, trigger, self);\n }\n\n /**\n * ### Start an \"once\" transition.\n *\n * If some registered \"once\" transition,\n * get the \"resolved\" transition from the store and start it.\n */\n public async once(readyData: ITransitionData): Promise {\n await this.hooks.do('beforeEnter', readyData);\n\n // Check if once transition\n if (this.transitions.hasOnce) {\n const transition = this.transitions.get(readyData, {\n once: true,\n }) as ITransitionOnce;\n\n await this.transitions.doOnce({ transition, data: readyData });\n }\n\n await this.hooks.do('afterEnter', readyData);\n }\n\n /**\n * ### Start a \"page\" transition.\n *\n * 1. If no running transition, updates data with full URL properties and trigger.\n * 2. Get page from cache or init request.\n * 3. Wait if some transitions need \"next\" data (`sync: true`, `to: \u2026`).\n * 4. Manage the history, depending on trigger.\n * 5. Get \"data\" and trigger \"go\" hook.\n * 6. Get the \"resolved\" transition from the store and start it.\n * 7. Update title and reset data (current, next = undefined).\n *\n * > If \"self\", use the \"self\" transition\n */\n public async page(\n href: string,\n trigger: Trigger,\n self: boolean\n ): Promise {\n this.data.next.url = {\n href,\n ...this.url.parse(href),\n };\n this.data.trigger = trigger;\n\n const page = this.cache.has(href)\n ? this.cache.update(href, { action: 'click' }).request\n : this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, trigger)\n ),\n 'click'\n ).request;\n\n // Need to wait before getting the right transition\n if (this.transitions.shouldWait) {\n await helpers.update(page, this.data);\n }\n\n const data = this.data;\n\n // Hook: between trigger and transition\n // Can be used to resolve \"route\"\u2026\n await this.hooks.do('page', data);\n\n try {\n const transition = this.transitions.get(data, {\n once: false,\n self,\n }) as ITransitionPage;\n\n await this.transitions.doPage({\n data,\n page,\n transition,\n wrapper: this._wrapper,\n });\n\n this._resetData();\n } catch (error) {\n // Something went wrong (rejected promise, error, 404, 505, other\u2026)\n // TODO: manage / use cases for cancellation\n // this.logger.debug('Transition cancelled');\n\n // If transition error and no debug mode, force reload page.\n /* istanbul ignore else */\n if (Logger.getLevel() === 0) {\n this.force(data.current.url.href);\n }\n }\n }\n\n /**\n * When a request error occurs.\n *\n * Allow the user to manage request error. (E.g: 404)\n */\n public onRequestError(trigger: Trigger, ...args: any): boolean {\n // Cancel transition status\n this.transitions.isRunning = false;\n\n const [href, response]: [string, RequestErrorOrResponse] = args;\n const action = this.cache.getAction(href);\n this.cache.delete(href);\n\n // Custom requestError returning false will return here.\n if (\n this._requestCustomError &&\n this._requestCustomError(trigger, action, href, response) === false\n ) {\n return false;\n }\n\n // Force page change\n if (action === 'click') {\n this.force(href);\n }\n return false;\n }\n\n /**\n * Programmatically prefetch\n */\n public prefetch(href: string) {\n // Already in cache\n /* istanbul ignore next */\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, 'barba')\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'prefetch'\n );\n }\n\n /**\n * Bind event listeners.\n */\n private _bind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.addEventListener('mouseover', this._onLinkEnter);\n document.addEventListener('touchstart', this._onLinkEnter);\n }\n document.addEventListener('click', this._onLinkClick);\n window.addEventListener('popstate', this._onStateChange);\n }\n\n /**\n * Bind event listeners.\n */\n private _unbind(): void {\n /* istanbul ignore else */\n if (this.prefetchIgnore !== true) {\n document.removeEventListener('mouseover', this._onLinkEnter);\n document.removeEventListener('touchstart', this._onLinkEnter);\n }\n document.removeEventListener('click', this._onLinkClick);\n window.removeEventListener('popstate', this._onStateChange);\n }\n\n /**\n * When a element is entered.\n *\n * Get valid link element.\n * Cache URL if needed.\n */\n private _onLinkEnter(e: LinkEvent): void {\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n const href = this.dom.getHref(link);\n\n if (this.prevent.checkHref(href)) {\n return;\n }\n\n // Already in cache\n if (this.cache.has(href)) {\n return;\n }\n\n this.cache.set(\n href,\n this.request(\n href,\n this.timeout,\n this.onRequestError.bind(this, link)\n ).catch((error: RequestErrorOrResponse) => {\n this.logger.error(error);\n }),\n 'enter'\n );\n }\n\n /**\n * When an element is clicked.\n *\n * Get valid link element.\n * Prevent same URL.\n * Go for a Barba transition.\n */\n private _onLinkClick(e: LinkEvent): void {\n // This use `prevent.checkLink` under the hood to get eligible link.\n const link = this._getLinkElement(e);\n\n if (!link) {\n return;\n }\n\n if (this.transitions.isRunning && this.preventRunning) {\n e.preventDefault();\n e.stopPropagation();\n\n return;\n }\n\n this.go(this.dom.getHref(link), link, e);\n }\n\n /**\n * When History state changes.\n *\n * Get \"href\" from URL\n * Go for a Barba transition.\n */\n private _onStateChange(e: PopStateEvent): void {\n this.go(this.url.getHref(), 'popstate', e);\n }\n\n /**\n * Get a valid link ancestor.\n *\n * Check for a \"href\" attribute.\n * Then check if eligible for Barba.\n */\n private _getLinkElement(e: LinkEvent): Link {\n let el = e.target as Link;\n\n while (el && !this.dom.getHref(el)) {\n el = (el as HTMLElement).parentNode as Link;\n }\n\n // Check prevent\n if (!el || this.prevent.checkLink(el, e, this.dom.getHref(el))) {\n return;\n }\n\n return el;\n }\n\n /**\n * Reset pages data.\n *\n * Set \"current\" and unset \"next\".\n */\n private _resetData() {\n const href = this.url.getHref();\n const current = {\n container: this.dom.getContainer(),\n html: this.dom.getHtml(),\n namespace: this.dom.getNamespace(),\n url: {\n href,\n ...this.url.parse(href),\n },\n };\n\n this._data = {\n current,\n next: { ...this.schemaPage },\n trigger: undefined,\n };\n\n this.hooks.do('reset', this.data);\n }\n}\n\nconst core = new Core();\n\nexport default core;\n", "!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", "import { module } from 'modujs';\nimport barba from '@barba/core';\nimport config from '../config'\n\nexport default class extends module {\n constructor(m) {\n super(m);\n }\n\n init() {\n barba.init({\n debug: config.IS_DEV,\n schema: {\n prefix: 'data-load',\n },\n transitions: [{\n name: 'default-transition',\n leave: (data) => {\n this.call('destroy', data.current.container, 'app');\n },\n enter: (data) => {\n this.call('update', data.next.container, 'app');\n }\n }]\n });\n }\n}\n", "const env = process.env.NODE_ENV\n\nexport default config = Object.freeze({\n // Environments\n ENV: env,\n IS_PROD: env === 'production',\n IS_DEV: env === 'development',\n\n // CSS class names\n CLASS_NAME: {\n LOADING: 'is-loading',\n READY: 'is-ready',\n LOADED: 'is-loaded',\n },\n})\n", "const LAZY_LOADED_IMAGES = []\n\nexport function loadImage(url, options = {}) {\n return new Promise((resolve, reject) => {\n const $img = new Image();\n\n if (options.crossOrigin) {\n $img.crossOrigin = options.crossOrigin;\n }\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 the given image.\n *\n * @param {HTMLImageElement} $el - The image element.\n * @param {?string} url - The URI to lazy load into $el.\n * If falsey, the value of the `data-src` attribute on $el will be used as the URI.\n * @param {?function} callback - A function to call when the image is loaded.\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\n if (!loadedImage.url) {\n return;\n }\n\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 = $el.closest('.c-lazy');\n\n if(lazyParent) {\n lazyParent.classList.add('-lazy-loaded')\n lazyParent.style.backgroundImage = ''\n }\n\n $el.classList.add('-lazy-loaded')\n\n callback?.()\n })\n}\n", "/* locomotive-scroll v4.1.3 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar defaults = {\n el: document,\n name: 'scroll',\n offset: [0, 0],\n repeat: false,\n smooth: false,\n initPosition: {\n x: 0,\n y: 0\n },\n direction: 'vertical',\n gestureDirection: 'vertical',\n reloadOnContextChange: false,\n lerp: 0.1,\n \"class\": 'is-inview',\n scrollbarContainer: false,\n scrollbarClass: 'c-scrollbar',\n scrollingClass: 'has-scroll-scrolling',\n draggingClass: 'has-scroll-dragging',\n smoothClass: 'has-scroll-smooth',\n initClass: 'has-scroll-init',\n getSpeed: false,\n getDirection: false,\n scrollFromAnywhere: false,\n multiplier: 1,\n firefoxMultiplier: 50,\n touchMultiplier: 2,\n resetNativeScroll: true,\n tablet: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical',\n breakpoint: 1024\n },\n smartphone: {\n smooth: false,\n direction: 'vertical',\n gestureDirection: 'vertical'\n }\n};\n\nvar _default = /*#__PURE__*/function () {\n function _default() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n this.namespace = 'locomotive';\n this.html = document.documentElement;\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.els = {};\n this.currentElements = {};\n this.listeners = {};\n this.hasScrollTicking = false;\n this.hasCallEventSet = false;\n this.checkScroll = this.checkScroll.bind(this);\n this.checkResize = this.checkResize.bind(this);\n this.checkEvent = this.checkEvent.bind(this);\n this.instance = {\n scroll: {\n x: 0,\n y: 0\n },\n limit: {\n x: this.html.offsetWidth,\n y: this.html.offsetHeight\n },\n currentElements: this.currentElements\n };\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (this.isMobile) this.direction = this[this.context].direction;\n\n if (this.direction === 'horizontal') {\n this.directionAxis = 'x';\n } else {\n this.directionAxis = 'y';\n }\n\n if (this.getDirection) {\n this.instance.direction = null;\n }\n\n if (this.getDirection) {\n this.instance.speed = 0;\n }\n\n this.html.classList.add(this.initClass);\n window.addEventListener('resize', this.checkResize, false);\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.initEvents();\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n this.dispatchScroll();\n }\n }, {\n key: \"checkResize\",\n value: function checkResize() {\n var _this = this;\n\n if (!this.resizeTick) {\n this.resizeTick = true;\n requestAnimationFrame(function () {\n _this.resize();\n\n _this.resizeTick = false;\n });\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {}\n }, {\n key: \"checkContext\",\n value: function checkContext() {\n if (!this.reloadOnContextChange) return;\n this.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || this.windowWidth < this.tablet.breakpoint;\n this.isTablet = this.isMobile && this.windowWidth >= this.tablet.breakpoint;\n var oldContext = this.context;\n\n if (this.isMobile) {\n if (this.isTablet) {\n this.context = 'tablet';\n } else {\n this.context = 'smartphone';\n }\n } else {\n this.context = 'desktop';\n }\n\n if (oldContext != this.context) {\n var oldSmooth = oldContext == 'desktop' ? this.smooth : this[oldContext].smooth;\n var newSmooth = this.context == 'desktop' ? this.smooth : this[this.context].smooth;\n if (oldSmooth != newSmooth) window.location.reload();\n }\n }\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this2 = this;\n\n this.scrollToEls = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-to]\"));\n this.setScrollTo = this.setScrollTo.bind(this);\n this.scrollToEls.forEach(function (el) {\n el.addEventListener('click', _this2.setScrollTo, false);\n });\n }\n }, {\n key: \"setScrollTo\",\n value: function setScrollTo(event) {\n event.preventDefault();\n this.scrollTo(event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-href\")) || event.currentTarget.getAttribute('href'), {\n offset: event.currentTarget.getAttribute(\"data-\".concat(this.name, \"-offset\"))\n });\n }\n }, {\n key: \"addElements\",\n value: function addElements() {}\n }, {\n key: \"detectElements\",\n value: function detectElements(hasCallEventSet) {\n var _this3 = this;\n\n var scrollTop = this.instance.scroll.y;\n var scrollBottom = scrollTop + this.windowHeight;\n var scrollLeft = this.instance.scroll.x;\n var scrollRight = scrollLeft + this.windowWidth;\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n if (el && (!el.inView || hasCallEventSet)) {\n if (_this3.direction === 'horizontal') {\n if (scrollRight >= el.left && scrollLeft < el.right) {\n _this3.setInView(el, i);\n }\n } else {\n if (scrollBottom >= el.top && scrollTop < el.bottom) {\n _this3.setInView(el, i);\n }\n }\n }\n\n if (el && el.inView) {\n if (_this3.direction === 'horizontal') {\n var width = el.right - el.left;\n el.progress = (_this3.instance.scroll.x - (el.left - _this3.windowWidth)) / (width + _this3.windowWidth);\n\n if (scrollRight < el.left || scrollLeft > el.right) {\n _this3.setOutOfView(el, i);\n }\n } else {\n var height = el.bottom - el.top;\n el.progress = (_this3.instance.scroll.y - (el.top - _this3.windowHeight)) / (height + _this3.windowHeight);\n\n if (scrollBottom < el.top || scrollTop > el.bottom) {\n _this3.setOutOfView(el, i);\n }\n }\n }\n }); // this.els = this.els.filter((current, i) => {\n // return current !== null;\n // });\n\n this.hasScrollTicking = false;\n }\n }, {\n key: \"setInView\",\n value: function setInView(current, i) {\n this.els[i].inView = true;\n current.el.classList.add(current[\"class\"]);\n this.currentElements[i] = current;\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'enter');\n\n if (!current.repeat) {\n this.els[i].call = false;\n }\n } // if (!current.repeat && !current.speed && !current.sticky) {\n // if (!current.call || current.call && this.hasCallEventSet) {\n // this.els[i] = null\n // }\n // }\n\n }\n }, {\n key: \"setOutOfView\",\n value: function setOutOfView(current, i) {\n var _this4 = this;\n\n // if (current.repeat || current.speed !== undefined) {\n this.els[i].inView = false; // }\n\n Object.keys(this.currentElements).forEach(function (el) {\n el === i && delete _this4.currentElements[el];\n });\n\n if (current.call && this.hasCallEventSet) {\n this.dispatchCall(current, 'exit');\n }\n\n if (current.repeat) {\n current.el.classList.remove(current[\"class\"]);\n }\n }\n }, {\n key: \"dispatchCall\",\n value: function dispatchCall(current, way) {\n this.callWay = way;\n this.callValue = current.call.split(',').map(function (item) {\n return item.trim();\n });\n this.callObj = current;\n if (this.callValue.length == 1) this.callValue = this.callValue[0];\n var callEvent = new Event(this.namespace + 'call');\n this.el.dispatchEvent(callEvent);\n }\n }, {\n key: \"dispatchScroll\",\n value: function dispatchScroll() {\n var scrollEvent = new Event(this.namespace + 'scroll');\n this.el.dispatchEvent(scrollEvent);\n }\n }, {\n key: \"setEvents\",\n value: function setEvents(event, func) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n\n var list = this.listeners[event];\n list.push(func);\n\n if (list.length === 1) {\n this.el.addEventListener(this.namespace + event, this.checkEvent, false);\n }\n\n if (event === 'call') {\n this.hasCallEventSet = true;\n this.detectElements(true);\n }\n }\n }, {\n key: \"unsetEvents\",\n value: function unsetEvents(event, func) {\n if (!this.listeners[event]) return;\n var list = this.listeners[event];\n var index = list.indexOf(func);\n if (index < 0) return;\n list.splice(index, 1);\n\n if (list.index === 0) {\n this.el.removeEventListener(this.namespace + event, this.checkEvent, false);\n }\n }\n }, {\n key: \"checkEvent\",\n value: function checkEvent(event) {\n var _this5 = this;\n\n var name = event.type.replace(this.namespace, '');\n var list = this.listeners[name];\n if (!list || list.length === 0) return;\n list.forEach(function (func) {\n switch (name) {\n case 'scroll':\n return func(_this5.instance);\n\n case 'call':\n return func(_this5.callValue, _this5.callWay, _this5.callObj);\n\n default:\n return func();\n }\n });\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {}\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {}\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance.scroll = {\n x: 0,\n y: 0\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n\n window.removeEventListener('resize', this.checkResize, false);\n Object.keys(this.listeners).forEach(function (event) {\n _this6.el.removeEventListener(_this6.namespace + event, _this6.checkEvent, false);\n });\n this.listeners = {};\n this.scrollToEls.forEach(function (el) {\n el.removeEventListener('click', _this6.setScrollTo, false);\n });\n this.html.classList.remove(this.initClass);\n }\n }]);\n\n return _default;\n}();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar smoothscroll = createCommonjsModule(function (module, exports) {\n/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n {\n // commonjs\n module.exports = { polyfill: polyfill };\n }\n\n}());\n});\nvar smoothscroll_1 = smoothscroll.polyfill;\n\nvar _default$1 = /*#__PURE__*/function (_Core) {\n _inherits(_default, _Core);\n\n var _super = _createSuper(_default);\n\n function _default() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, _default);\n\n _this = _super.call(this, options);\n\n if (_this.resetNativeScroll) {\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual';\n }\n\n window.scrollTo(0, 0);\n }\n\n window.addEventListener('scroll', _this.checkScroll, false);\n\n if (window.smoothscrollPolyfill === undefined) {\n window.smoothscrollPolyfill = smoothscroll;\n window.smoothscrollPolyfill.polyfill();\n }\n\n return _this;\n }\n\n _createClass(_default, [{\n key: \"init\",\n value: function init() {\n this.instance.scroll.y = window.pageYOffset;\n this.addElements();\n this.detectElements();\n\n _get(_getPrototypeOf(_default.prototype), \"init\", this).call(this);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this2 = this;\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.instance.scroll.y = window.pageYOffset;\n\n if (Object.entries(this.els).length) {\n if (!this.hasScrollTicking) {\n requestAnimationFrame(function () {\n _this2.detectElements();\n });\n this.hasScrollTicking = true;\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (window.pageYOffset > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (window.pageYOffset < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (window.pageYOffset != this.instance.scroll.y) {\n this.instance.speed = (window.pageYOffset - this.instance.scroll.y) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n if (Object.entries(this.els).length) {\n this.windowHeight = window.innerHeight;\n this.updateElements();\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this3 = this;\n\n this.els = {};\n var els = this.el.querySelectorAll('[data-' + this.name + ']');\n els.forEach(function (el, index) {\n var BCR = el.getBoundingClientRect();\n var cl = el.dataset[_this3.name + 'Class'] || _this3[\"class\"];\n var id = typeof el.dataset[_this3.name + 'Id'] === 'string' ? el.dataset[_this3.name + 'Id'] : index;\n var top;\n var left;\n var offset = typeof el.dataset[_this3.name + 'Offset'] === 'string' ? el.dataset[_this3.name + 'Offset'].split(',') : _this3.offset;\n var repeat = el.dataset[_this3.name + 'Repeat'];\n var call = el.dataset[_this3.name + 'Call'];\n var target = el.dataset[_this3.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n top = targetElBCR.top + _this3.instance.scroll.y;\n left = targetElBCR.left + _this3.instance.scroll.x;\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this3.repeat;\n }\n\n var relativeOffset = _this3.getRelativeOffset(offset);\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n var mappedEl = {\n el: el,\n targetEl: targetEl,\n id: id,\n \"class\": cl,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call\n };\n _this3.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this3.setInView(_this3.els[id], id);\n }\n });\n }\n }, {\n key: \"updateElements\",\n value: function updateElements() {\n var _this4 = this;\n\n Object.entries(this.els).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n el = _ref2[1];\n\n var top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y;\n\n var bottom = top + el.targetEl.offsetHeight;\n\n var relativeOffset = _this4.getRelativeOffset(el.offset);\n\n _this4.els[i].top = top + relativeOffset[0];\n _this4.els[i].bottom = bottom - relativeOffset[1];\n });\n this.hasScrollTicking = false;\n }\n }, {\n key: \"getRelativeOffset\",\n value: function getRelativeOffset(offset) {\n var relativeOffset = [0, 0];\n\n if (offset) {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * this.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n }\n\n return relativeOffset;\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = this.html;\n } else if (target === 'bottom') {\n target = this.html.offsetHeight - window.innerHeight;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n offset = target.getBoundingClientRect().top + offset + this.instance.scroll.y;\n } else {\n offset = target + offset;\n }\n\n var isTargetReached = function isTargetReached() {\n return parseInt(window.pageYOffset) === parseInt(offset);\n };\n\n if (callback) {\n if (isTargetReached()) {\n callback();\n return;\n } else {\n var onScroll = function onScroll() {\n if (isTargetReached()) {\n window.removeEventListener('scroll', onScroll);\n callback();\n }\n };\n\n window.addEventListener('scroll', onScroll);\n }\n }\n\n window.scrollTo({\n top: offset,\n behavior: options.duration === 0 ? 'auto' : 'smooth'\n });\n }\n }, {\n key: \"update\",\n value: function update() {\n this.addElements();\n this.detectElements();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n window.removeEventListener('scroll', this.checkScroll, false);\n }\n }]);\n\n return _default;\n}(_default);\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nvar tinyEmitter = E;\n\nvar lethargy = createCommonjsModule(function (module, exports) {\n// Generated by CoffeeScript 1.9.2\n(function() {\n var root;\n\n root = exports !== null ? exports : this;\n\n root.Lethargy = (function() {\n function Lethargy(stability, sensitivity, tolerance, delay) {\n this.stability = stability != null ? Math.abs(stability) : 8;\n this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100;\n this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1;\n this.delay = delay != null ? delay : 150;\n this.lastUpDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.lastDownDeltas = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n this.deltasTimestamp = (function() {\n var i, ref, results;\n results = [];\n for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n results.push(null);\n }\n return results;\n }).call(this);\n }\n\n Lethargy.prototype.check = function(e) {\n var lastDelta;\n e = e.originalEvent || e;\n if (e.wheelDelta != null) {\n lastDelta = e.wheelDelta;\n } else if (e.deltaY != null) {\n lastDelta = e.deltaY * -40;\n } else if ((e.detail != null) || e.detail === 0) {\n lastDelta = e.detail * -40;\n }\n this.deltasTimestamp.push(Date.now());\n this.deltasTimestamp.shift();\n if (lastDelta > 0) {\n this.lastUpDeltas.push(lastDelta);\n this.lastUpDeltas.shift();\n return this.isInertia(1);\n } else {\n this.lastDownDeltas.push(lastDelta);\n this.lastDownDeltas.shift();\n return this.isInertia(-1);\n }\n };\n\n Lethargy.prototype.isInertia = function(direction) {\n var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum;\n lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas;\n if (lastDeltas[0] === null) {\n return direction;\n }\n if (this.deltasTimestamp[(this.stability * 2) - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[(this.stability * 2) - 1]) {\n return false;\n }\n lastDeltasOld = lastDeltas.slice(0, this.stability);\n lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2);\n oldSum = lastDeltasOld.reduce(function(t, s) {\n return t + s;\n });\n newSum = lastDeltasNew.reduce(function(t, s) {\n return t + s;\n });\n oldAverage = oldSum / lastDeltasOld.length;\n newAverage = newSum / lastDeltasNew.length;\n if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && (this.sensitivity < Math.abs(newAverage))) {\n return direction;\n } else {\n return false;\n }\n };\n\n Lethargy.prototype.showLastUpDeltas = function() {\n return this.lastUpDeltas;\n };\n\n Lethargy.prototype.showLastDownDeltas = function() {\n return this.lastDownDeltas;\n };\n\n return Lethargy;\n\n })();\n\n}).call(commonjsGlobal);\n});\n\nvar support = (function getSupport() {\n return {\n hasWheelEvent: 'onwheel' in document,\n hasMouseWheelEvent: 'onmousewheel' in document,\n hasTouch: ('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,\n hasTouchWin: navigator.msMaxTouchPoints && navigator.msMaxTouchPoints > 1,\n hasPointer: !!window.navigator.msPointerEnabled,\n hasKeyDown: 'onkeydown' in document,\n isFirefox: navigator.userAgent.indexOf('Firefox') > -1\n };\n})();\n\nvar toString = Object.prototype.toString,\n hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\nvar bindallStandalone = function(object) {\n if(!object) return console.warn('bindAll requires at least one argument.');\n\n var functions = Array.prototype.slice.call(arguments, 1);\n\n if (functions.length === 0) {\n\n for (var method in object) {\n if(hasOwnProperty$1.call(object, method)) {\n if(typeof object[method] == 'function' && toString.call(object[method]) == \"[object Function]\") {\n functions.push(method);\n }\n }\n }\n }\n\n for(var i = 0; i < functions.length; i++) {\n var f = functions[i];\n object[f] = bind(object[f], object);\n }\n};\n\n/*\n Faster bind without specific-case checking. (see https://coderwall.com/p/oi3j3w).\n bindAll is only needed for events binding so no need to make slow fixes for constructor\n or partial application.\n*/\nfunction bind(func, context) {\n return function() {\n return func.apply(context, arguments);\n };\n}\n\nvar Lethargy = lethargy.Lethargy;\n\n\n\nvar EVT_ID = 'virtualscroll';\n\nvar src = VirtualScroll;\n\nvar keyCodes = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SPACE: 32\n};\n\nfunction VirtualScroll(options) {\n bindallStandalone(this, '_onWheel', '_onMouseWheel', '_onTouchStart', '_onTouchMove', '_onKeyDown');\n\n this.el = window;\n if (options && options.el) {\n this.el = options.el;\n delete options.el;\n }\n this.options = objectAssign({\n mouseMultiplier: 1,\n touchMultiplier: 2,\n firefoxMultiplier: 15,\n keyStep: 120,\n preventTouch: false,\n unpreventTouchClass: 'vs-touchmove-allowed',\n limitInertia: false,\n useKeyboard: true,\n useTouch: true\n }, options);\n\n if (this.options.limitInertia) this._lethargy = new Lethargy();\n\n this._emitter = new tinyEmitter();\n this._event = {\n y: 0,\n x: 0,\n deltaX: 0,\n deltaY: 0\n };\n this.touchStartX = null;\n this.touchStartY = null;\n this.bodyTouchAction = null;\n\n if (this.options.passive !== undefined) {\n this.listenerOptions = {passive: this.options.passive};\n }\n}\n\nVirtualScroll.prototype._notify = function(e) {\n var evt = this._event;\n evt.x += evt.deltaX;\n evt.y += evt.deltaY;\n\n this._emitter.emit(EVT_ID, {\n x: evt.x,\n y: evt.y,\n deltaX: evt.deltaX,\n deltaY: evt.deltaY,\n originalEvent: e\n });\n};\n\nVirtualScroll.prototype._onWheel = function(e) {\n var options = this.options;\n if (this._lethargy && this._lethargy.check(e) === false) return;\n var evt = this._event;\n\n // In Chrome and in Firefox (at least the new one)\n evt.deltaX = e.wheelDeltaX || e.deltaX * -1;\n evt.deltaY = e.wheelDeltaY || e.deltaY * -1;\n\n // for our purpose deltamode = 1 means user is on a wheel mouse, not touch pad\n // real meaning: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent#Delta_modes\n if(support.isFirefox && e.deltaMode == 1) {\n evt.deltaX *= options.firefoxMultiplier;\n evt.deltaY *= options.firefoxMultiplier;\n }\n\n evt.deltaX *= options.mouseMultiplier;\n evt.deltaY *= options.mouseMultiplier;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onMouseWheel = function(e) {\n if (this.options.limitInertia && this._lethargy.check(e) === false) return;\n\n var evt = this._event;\n\n // In Safari, IE and in Chrome if 'wheel' isn't defined\n evt.deltaX = (e.wheelDeltaX) ? e.wheelDeltaX : 0;\n evt.deltaY = (e.wheelDeltaY) ? e.wheelDeltaY : e.wheelDelta;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onTouchStart = function(e) {\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n};\n\nVirtualScroll.prototype._onTouchMove = function(e) {\n var options = this.options;\n if(options.preventTouch\n && !e.target.classList.contains(options.unpreventTouchClass)) {\n e.preventDefault();\n }\n\n var evt = this._event;\n\n var t = (e.targetTouches) ? e.targetTouches[0] : e;\n\n evt.deltaX = (t.pageX - this.touchStartX) * options.touchMultiplier;\n evt.deltaY = (t.pageY - this.touchStartY) * options.touchMultiplier;\n\n this.touchStartX = t.pageX;\n this.touchStartY = t.pageY;\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._onKeyDown = function(e) {\n var evt = this._event;\n evt.deltaX = evt.deltaY = 0;\n var windowHeight = window.innerHeight - 40;\n\n switch(e.keyCode) {\n case keyCodes.LEFT:\n case keyCodes.UP:\n evt.deltaY = this.options.keyStep;\n break;\n\n case keyCodes.RIGHT:\n case keyCodes.DOWN:\n evt.deltaY = - this.options.keyStep;\n break;\n case e.shiftKey:\n evt.deltaY = windowHeight;\n break;\n case keyCodes.SPACE:\n evt.deltaY = - windowHeight;\n break;\n default:\n return;\n }\n\n this._notify(e);\n};\n\nVirtualScroll.prototype._bind = function() {\n if(support.hasWheelEvent) this.el.addEventListener('wheel', this._onWheel, this.listenerOptions);\n if(support.hasMouseWheelEvent) this.el.addEventListener('mousewheel', this._onMouseWheel, this.listenerOptions);\n\n if(support.hasTouch && this.options.useTouch) {\n this.el.addEventListener('touchstart', this._onTouchStart, this.listenerOptions);\n this.el.addEventListener('touchmove', this._onTouchMove, this.listenerOptions);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n this.bodyTouchAction = document.body.style.msTouchAction;\n document.body.style.msTouchAction = 'none';\n this.el.addEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.addEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.addEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype._unbind = function() {\n if(support.hasWheelEvent) this.el.removeEventListener('wheel', this._onWheel);\n if(support.hasMouseWheelEvent) this.el.removeEventListener('mousewheel', this._onMouseWheel);\n\n if(support.hasTouch) {\n this.el.removeEventListener('touchstart', this._onTouchStart);\n this.el.removeEventListener('touchmove', this._onTouchMove);\n }\n\n if(support.hasPointer && support.hasTouchWin) {\n document.body.style.msTouchAction = this.bodyTouchAction;\n this.el.removeEventListener('MSPointerDown', this._onTouchStart, true);\n this.el.removeEventListener('MSPointerMove', this._onTouchMove, true);\n }\n\n if(support.hasKeyDown && this.options.useKeyboard) document.removeEventListener('keydown', this._onKeyDown);\n};\n\nVirtualScroll.prototype.on = function(cb, ctx) {\n this._emitter.on(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (events && events[EVT_ID] && events[EVT_ID].length === 1) this._bind();\n};\n\nVirtualScroll.prototype.off = function(cb, ctx) {\n this._emitter.off(EVT_ID, cb, ctx);\n\n var events = this._emitter.e;\n if (!events[EVT_ID] || events[EVT_ID].length <= 0) this._unbind();\n};\n\nVirtualScroll.prototype.reset = function() {\n var evt = this._event;\n evt.x = 0;\n evt.y = 0;\n};\n\nVirtualScroll.prototype.destroy = function() {\n this._emitter.off();\n this._unbind();\n};\n\nfunction lerp(start, end, amt) {\n return (1 - amt) * start + amt * end;\n}\n\nfunction getTranslate(el) {\n var translate = {};\n if (!window.getComputedStyle) return;\n var style = getComputedStyle(el);\n var transform = style.transform || style.webkitTransform || style.mozTransform;\n var mat = transform.match(/^matrix3d\\((.+)\\)$/);\n\n if (mat) {\n translate.x = mat ? parseFloat(mat[1].split(', ')[12]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[13]) : 0;\n } else {\n mat = transform.match(/^matrix\\((.+)\\)$/);\n translate.x = mat ? parseFloat(mat[1].split(', ')[4]) : 0;\n translate.y = mat ? parseFloat(mat[1].split(', ')[5]) : 0;\n }\n\n return translate;\n}\n\n/**\n * Returns an array containing all the parent nodes of the given node\n * @param {object} node\n * @return {array} parent nodes\n */\nfunction getParents(elem) {\n // Set up a parent array\n var parents = []; // Push each parent element to the array\n\n for (; elem && elem !== document; elem = elem.parentNode) {\n parents.push(elem);\n } // Return our parent array\n\n\n return parents;\n} // https://gomakethings.com/how-to-get-the-closest-parent-element-with-a-matching-selector-using-vanilla-javascript/\n\n/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Ga\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 //Pevent scrollbar glitch/locking\n\n this.startScrollTs = undefined;\n\n if (this.scrollToRaf) {\n cancelAnimationFrame(this.scrollToRaf);\n this.scrollToRaf = null;\n }\n\n this.isScrolling = false;\n this.instance.scroll.y = Math.round(this.instance.scroll.y);\n this.html.classList.remove(this.scrollingClass);\n }\n }, {\n key: \"checkKey\",\n value: function checkKey(e) {\n var _this3 = this;\n\n if (this.stop) {\n // If we are stopped, we don't want any scroll to occur because of a keypress\n // Prevent tab to scroll to activeElement\n if (e.keyCode == keyCodes$1.TAB) {\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0;\n });\n }\n\n return;\n }\n\n switch (e.keyCode) {\n case keyCodes$1.TAB:\n // Do not remove the RAF\n // It allows to override the browser's native scrollTo, which is essential\n requestAnimationFrame(function () {\n // Make sure native scroll is always at top of page\n _this3.html.scrollTop = 0;\n document.body.scrollTop = 0;\n _this3.html.scrollLeft = 0;\n document.body.scrollLeft = 0; // Request scrollTo on the focusedElement, putting it at the center of the screen\n\n _this3.scrollTo(document.activeElement, {\n offset: -window.innerHeight / 2\n });\n });\n break;\n\n case keyCodes$1.UP:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] -= 240;\n }\n\n break;\n\n case keyCodes$1.DOWN:\n if (this.isActiveElementScrollSensitive()) {\n this.instance.delta[this.directionAxis] += 240;\n }\n\n break;\n\n case keyCodes$1.PAGEUP:\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n break;\n\n case keyCodes$1.PAGEDOWN:\n this.instance.delta[this.directionAxis] += window.innerHeight;\n break;\n\n case keyCodes$1.HOME:\n this.instance.delta[this.directionAxis] -= this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.END:\n this.instance.delta[this.directionAxis] += this.instance.limit[this.directionAxis];\n break;\n\n case keyCodes$1.SPACE:\n if (this.isActiveElementScrollSensitive()) {\n if (e.shiftKey) {\n this.instance.delta[this.directionAxis] -= window.innerHeight;\n } else {\n this.instance.delta[this.directionAxis] += window.innerHeight;\n }\n }\n\n break;\n\n default:\n return;\n }\n\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.isScrolling = true;\n this.checkScroll();\n this.html.classList.add(this.scrollingClass);\n }\n }, {\n key: \"isActiveElementScrollSensitive\",\n value: function isActiveElementScrollSensitive() {\n return !(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement) && !(document.activeElement instanceof HTMLButtonElement) && !(document.activeElement instanceof HTMLSelectElement);\n }\n }, {\n key: \"checkScroll\",\n value: function checkScroll() {\n var _this4 = this;\n\n var forced = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (forced || this.isScrolling || this.isDraggingScrollbar) {\n if (!this.hasScrollTicking) {\n this.checkScrollRaf = requestAnimationFrame(function () {\n return _this4.checkScroll();\n });\n this.hasScrollTicking = true;\n }\n\n this.updateScroll();\n var distance = Math.abs(this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]);\n var timeSinceStart = Date.now() - this.startScrollTs; // Get the time since the scroll was started: the scroll can be stopped again only past 100ms\n\n if (!this.animatingScroll && timeSinceStart > 100 && (distance < 0.5 && this.instance.delta[this.directionAxis] != 0 || distance < 0.5 && this.instance.delta[this.directionAxis] == 0)) {\n this.stopScrolling();\n }\n\n Object.entries(this.sections).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n i = _ref2[0],\n section = _ref2[1];\n\n if (section.persistent || _this4.instance.scroll[_this4.directionAxis] > section.offset[_this4.directionAxis] && _this4.instance.scroll[_this4.directionAxis] < section.limit[_this4.directionAxis]) {\n if (_this4.direction === 'horizontal') {\n _this4.transform(section.el, -_this4.instance.scroll[_this4.directionAxis], 0);\n } else {\n _this4.transform(section.el, 0, -_this4.instance.scroll[_this4.directionAxis]);\n }\n\n if (!section.inView) {\n section.inView = true;\n section.el.style.opacity = 1;\n section.el.style.pointerEvents = 'all';\n section.el.setAttribute(\"data-\".concat(_this4.name, \"-section-inview\"), '');\n }\n } else {\n if (section.inView || forced) {\n section.inView = false;\n section.el.style.opacity = 0;\n section.el.style.pointerEvents = 'none';\n section.el.removeAttribute(\"data-\".concat(_this4.name, \"-section-inview\"));\n }\n\n _this4.transform(section.el, 0, 0);\n }\n });\n\n if (this.getDirection) {\n this.addDirection();\n }\n\n if (this.getSpeed) {\n this.addSpeed();\n this.speedTs = Date.now();\n }\n\n this.detectElements();\n this.transformElements();\n\n if (this.hasScrollbar) {\n var scrollBarTranslation = this.instance.scroll[this.directionAxis] / this.instance.limit[this.directionAxis] * this.scrollBarLimit[this.directionAxis];\n\n if (this.direction === 'horizontal') {\n this.transform(this.scrollbarThumb, scrollBarTranslation, 0);\n } else {\n this.transform(this.scrollbarThumb, 0, scrollBarTranslation);\n }\n }\n\n _get(_getPrototypeOf(_default.prototype), \"checkScroll\", this).call(this);\n\n this.hasScrollTicking = false;\n }\n }\n }, {\n key: \"resize\",\n value: function resize() {\n this.windowHeight = window.innerHeight;\n this.windowWidth = window.innerWidth;\n this.checkContext();\n this.windowMiddle = {\n x: this.windowWidth / 2,\n y: this.windowHeight / 2\n };\n this.update();\n }\n }, {\n key: \"updateDelta\",\n value: function updateDelta(e) {\n var delta;\n var gestureDirection = this[this.context] && this[this.context].gestureDirection ? this[this.context].gestureDirection : this.gestureDirection;\n\n if (gestureDirection === 'both') {\n delta = e.deltaX + e.deltaY;\n } else if (gestureDirection === 'vertical') {\n delta = e.deltaY;\n } else if (gestureDirection === 'horizontal') {\n delta = e.deltaX;\n } else {\n delta = e.deltaY;\n }\n\n this.instance.delta[this.directionAxis] -= delta * this.multiplier;\n if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;\n if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];\n }\n }, {\n key: \"updateScroll\",\n value: function updateScroll(e) {\n if (this.isScrolling || this.isDraggingScrollbar) {\n this.instance.scroll[this.directionAxis] = lerp(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis], this.lerp);\n } else {\n if (this.instance.scroll[this.directionAxis] > this.instance.limit[this.directionAxis]) {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.limit[this.directionAxis]);\n } else if (this.instance.scroll.y < 0) {\n this.setScroll(this.instance.scroll[this.directionAxis], 0);\n } else {\n this.setScroll(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis]);\n }\n }\n }\n }, {\n key: \"addDirection\",\n value: function addDirection() {\n if (this.instance.delta.y > this.instance.scroll.y) {\n if (this.instance.direction !== 'down') {\n this.instance.direction = 'down';\n }\n } else if (this.instance.delta.y < this.instance.scroll.y) {\n if (this.instance.direction !== 'up') {\n this.instance.direction = 'up';\n }\n }\n\n if (this.instance.delta.x > this.instance.scroll.x) {\n if (this.instance.direction !== 'right') {\n this.instance.direction = 'right';\n }\n } else if (this.instance.delta.x < this.instance.scroll.x) {\n if (this.instance.direction !== 'left') {\n this.instance.direction = 'left';\n }\n }\n }\n }, {\n key: \"addSpeed\",\n value: function addSpeed() {\n if (this.instance.delta[this.directionAxis] != this.instance.scroll[this.directionAxis]) {\n this.instance.speed = (this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]) / Math.max(1, Date.now() - this.speedTs);\n } else {\n this.instance.speed = 0;\n }\n }\n }, {\n key: \"initScrollBar\",\n value: function initScrollBar() {\n this.scrollbar = document.createElement('span');\n this.scrollbarThumb = document.createElement('span');\n this.scrollbar.classList.add(\"\".concat(this.scrollbarClass));\n this.scrollbarThumb.classList.add(\"\".concat(this.scrollbarClass, \"_thumb\"));\n this.scrollbar.append(this.scrollbarThumb);\n\n if (this.scrollbarContainer) {\n this.scrollbarContainer.append(this.scrollbar);\n } else {\n document.body.append(this.scrollbar);\n } // Scrollbar Events\n\n\n this.getScrollBar = this.getScrollBar.bind(this);\n this.releaseScrollBar = this.releaseScrollBar.bind(this);\n this.moveScrollBar = this.moveScrollBar.bind(this);\n this.scrollbarThumb.addEventListener('mousedown', this.getScrollBar);\n window.addEventListener('mouseup', this.releaseScrollBar);\n window.addEventListener('mousemove', this.moveScrollBar); // Set scrollbar values\n\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"reinitScrollBar\",\n value: function reinitScrollBar() {\n this.hasScrollbar = false;\n\n if (this.direction == 'horizontal') {\n if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {\n return;\n }\n } else {\n if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {\n return;\n }\n }\n\n this.hasScrollbar = true;\n this.scrollbarBCR = this.scrollbar.getBoundingClientRect();\n this.scrollbarHeight = this.scrollbarBCR.height;\n this.scrollbarWidth = this.scrollbarBCR.width;\n\n if (this.direction === 'horizontal') {\n this.scrollbarThumb.style.width = \"\".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), \"px\");\n } else {\n this.scrollbarThumb.style.height = \"\".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), \"px\");\n }\n\n this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();\n this.scrollBarLimit = {\n x: this.scrollbarWidth - this.scrollbarThumbBCR.width,\n y: this.scrollbarHeight - this.scrollbarThumbBCR.height\n };\n }\n }, {\n key: \"destroyScrollBar\",\n value: function destroyScrollBar() {\n this.scrollbarThumb.removeEventListener('mousedown', this.getScrollBar);\n window.removeEventListener('mouseup', this.releaseScrollBar);\n window.removeEventListener('mousemove', this.moveScrollBar);\n this.scrollbar.remove();\n }\n }, {\n key: \"getScrollBar\",\n value: function getScrollBar(e) {\n this.isDraggingScrollbar = true;\n this.checkScroll();\n this.html.classList.remove(this.scrollingClass);\n this.html.classList.add(this.draggingClass);\n }\n }, {\n key: \"releaseScrollBar\",\n value: function releaseScrollBar(e) {\n this.isDraggingScrollbar = false;\n\n if (this.isScrolling) {\n this.html.classList.add(this.scrollingClass);\n }\n\n this.html.classList.remove(this.draggingClass);\n }\n }, {\n key: \"moveScrollBar\",\n value: function moveScrollBar(e) {\n var _this5 = this;\n\n if (this.isDraggingScrollbar) {\n requestAnimationFrame(function () {\n var x = (e.clientX - _this5.scrollbarBCR.left) * 100 / _this5.scrollbarWidth * _this5.instance.limit.x / 100;\n var y = (e.clientY - _this5.scrollbarBCR.top) * 100 / _this5.scrollbarHeight * _this5.instance.limit.y / 100;\n\n if (y > 0 && y < _this5.instance.limit.y) {\n _this5.instance.delta.y = y;\n }\n\n if (x > 0 && x < _this5.instance.limit.x) {\n _this5.instance.delta.x = x;\n }\n });\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var _this6 = this;\n\n this.els = {};\n this.parallaxElements = {}; // this.sections.forEach((section, y) => {\n\n var els = this.el.querySelectorAll(\"[data-\".concat(this.name, \"]\"));\n els.forEach(function (el, index) {\n // Try and find the target's parent section\n var targetParents = getParents(el);\n var section = Object.entries(_this6.sections).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n section = _ref4[1];\n\n return section;\n }).find(function (section) {\n return targetParents.includes(section.el);\n });\n var cl = el.dataset[_this6.name + 'Class'] || _this6[\"class\"];\n var id = typeof el.dataset[_this6.name + 'Id'] === 'string' ? el.dataset[_this6.name + 'Id'] : 'el' + index;\n var top;\n var left;\n var repeat = el.dataset[_this6.name + 'Repeat'];\n var call = el.dataset[_this6.name + 'Call'];\n var position = el.dataset[_this6.name + 'Position'];\n var delay = el.dataset[_this6.name + 'Delay'];\n var direction = el.dataset[_this6.name + 'Direction'];\n var sticky = typeof el.dataset[_this6.name + 'Sticky'] === 'string';\n var speed = el.dataset[_this6.name + 'Speed'] ? parseFloat(el.dataset[_this6.name + 'Speed']) / 10 : false;\n var offset = typeof el.dataset[_this6.name + 'Offset'] === 'string' ? el.dataset[_this6.name + 'Offset'].split(',') : _this6.offset;\n var target = el.dataset[_this6.name + 'Target'];\n var targetEl;\n\n if (target !== undefined) {\n targetEl = document.querySelector(\"\".concat(target));\n } else {\n targetEl = el;\n }\n\n var targetElBCR = targetEl.getBoundingClientRect();\n\n if (section === null) {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n } else {\n if (!section.inView) {\n top = targetElBCR.top - getTranslate(section.el).y - getTranslate(targetEl).y;\n left = targetElBCR.left - getTranslate(section.el).x - getTranslate(targetEl).x;\n } else {\n top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;\n left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;\n }\n }\n\n var bottom = top + targetEl.offsetHeight;\n var right = left + targetEl.offsetWidth;\n var middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n\n if (sticky) {\n var elBCR = el.getBoundingClientRect();\n var elTop = elBCR.top;\n var elLeft = elBCR.left;\n var elDistance = {\n x: elLeft - left,\n y: elTop - top\n };\n top += window.innerHeight;\n left += window.innerWidth;\n bottom = elTop + targetEl.offsetHeight - el.offsetHeight - elDistance[_this6.directionAxis];\n right = elLeft + targetEl.offsetWidth - el.offsetWidth - elDistance[_this6.directionAxis];\n middle = {\n x: (right - left) / 2 + left,\n y: (bottom - top) / 2 + top\n };\n }\n\n if (repeat == 'false') {\n repeat = false;\n } else if (repeat != undefined) {\n repeat = true;\n } else {\n repeat = _this6.repeat;\n }\n\n var relativeOffset = [0, 0];\n\n if (offset) {\n if (_this6.direction === 'horizontal') {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowWidth / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n left = left + relativeOffset[0];\n right = right - relativeOffset[1];\n } else {\n for (var i = 0; i < offset.length; i++) {\n if (typeof offset[i] == 'string') {\n if (offset[i].includes('%')) {\n relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowHeight / 100);\n } else {\n relativeOffset[i] = parseInt(offset[i]);\n }\n } else {\n relativeOffset[i] = offset[i];\n }\n }\n\n top = top + relativeOffset[0];\n bottom = bottom - relativeOffset[1];\n }\n }\n\n var mappedEl = {\n el: el,\n id: id,\n \"class\": cl,\n section: section,\n top: top,\n middle: middle,\n bottom: bottom,\n left: left,\n right: right,\n offset: offset,\n progress: 0,\n repeat: repeat,\n inView: false,\n call: call,\n speed: speed,\n delay: delay,\n position: position,\n target: targetEl,\n direction: direction,\n sticky: sticky\n };\n _this6.els[id] = mappedEl;\n\n if (el.classList.contains(cl)) {\n _this6.setInView(_this6.els[id], id);\n }\n\n if (speed !== false || sticky) {\n _this6.parallaxElements[id] = mappedEl;\n }\n }); // });\n }\n }, {\n key: \"addSections\",\n value: function addSections() {\n var _this7 = this;\n\n this.sections = {};\n var sections = this.el.querySelectorAll(\"[data-\".concat(this.name, \"-section]\"));\n\n if (sections.length === 0) {\n sections = [this.el];\n }\n\n sections.forEach(function (section, index) {\n var id = typeof section.dataset[_this7.name + 'Id'] === 'string' ? section.dataset[_this7.name + 'Id'] : 'section' + index;\n var sectionBCR = section.getBoundingClientRect();\n var offset = {\n x: sectionBCR.left - window.innerWidth * 1.5 - getTranslate(section).x,\n y: sectionBCR.top - window.innerHeight * 1.5 - getTranslate(section).y\n };\n var limit = {\n x: offset.x + sectionBCR.width + window.innerWidth * 2,\n y: offset.y + sectionBCR.height + window.innerHeight * 2\n };\n var persistent = typeof section.dataset[_this7.name + 'Persistent'] === 'string';\n section.setAttribute('data-scroll-section-id', id);\n var mappedSection = {\n el: section,\n offset: offset,\n limit: limit,\n inView: false,\n persistent: persistent,\n id: id\n };\n _this7.sections[id] = mappedSection;\n });\n }\n }, {\n key: \"transform\",\n value: function transform(element, x, y, delay) {\n var transform;\n\n if (!delay) {\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(x, \",\").concat(y, \",0,1)\");\n } else {\n var start = getTranslate(element);\n var lerpX = lerp(start.x, x, delay);\n var lerpY = lerp(start.y, y, delay);\n transform = \"matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,\".concat(lerpX, \",\").concat(lerpY, \",0,1)\");\n }\n\n element.style.webkitTransform = transform;\n element.style.msTransform = transform;\n element.style.transform = transform;\n }\n }, {\n key: \"transformElements\",\n value: function transformElements(isForced) {\n var _this8 = this;\n\n var setAllElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var scrollRight = this.instance.scroll.x + this.windowWidth;\n var scrollBottom = this.instance.scroll.y + this.windowHeight;\n var scrollMiddle = {\n x: this.instance.scroll.x + this.windowMiddle.x,\n y: this.instance.scroll.y + this.windowMiddle.y\n };\n Object.entries(this.parallaxElements).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n i = _ref6[0],\n current = _ref6[1];\n\n var transformDistance = false;\n\n if (isForced) {\n transformDistance = 0;\n }\n\n if (current.inView || setAllElements) {\n switch (current.position) {\n case 'top':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementTop':\n transformDistance = (scrollBottom - current.top) * -current.speed;\n break;\n\n case 'bottom':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollBottom + _this8.windowHeight) * current.speed;\n break;\n\n case 'left':\n transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;\n break;\n\n case 'elementLeft':\n transformDistance = (scrollRight - current.left) * -current.speed;\n break;\n\n case 'right':\n transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollRight + _this8.windowHeight) * current.speed;\n break;\n\n default:\n transformDistance = (scrollMiddle[_this8.directionAxis] - current.middle[_this8.directionAxis]) * -current.speed;\n break;\n }\n }\n\n if (current.sticky) {\n if (current.inView) {\n if (_this8.direction === 'horizontal') {\n transformDistance = _this8.instance.scroll.x - current.left + window.innerWidth;\n } else {\n transformDistance = _this8.instance.scroll.y - current.top + window.innerHeight;\n }\n } else {\n if (_this8.direction === 'horizontal') {\n if (_this8.instance.scroll.x < current.left - window.innerWidth && _this8.instance.scroll.x < current.left - window.innerWidth / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.x > current.right && _this8.instance.scroll.x > current.right + 100) {\n transformDistance = current.right - current.left + window.innerWidth;\n } else {\n transformDistance = false;\n }\n } else {\n if (_this8.instance.scroll.y < current.top - window.innerHeight && _this8.instance.scroll.y < current.top - window.innerHeight / 2) {\n transformDistance = 0;\n } else if (_this8.instance.scroll.y > current.bottom && _this8.instance.scroll.y > current.bottom + 100) {\n transformDistance = current.bottom - current.top + window.innerHeight;\n } else {\n transformDistance = false;\n }\n }\n }\n }\n\n if (transformDistance !== false) {\n if (current.direction === 'horizontal' || _this8.direction === 'horizontal' && current.direction !== 'vertical') {\n _this8.transform(current.el, transformDistance, 0, isForced ? false : current.delay);\n } else {\n _this8.transform(current.el, 0, transformDistance, isForced ? false : current.delay);\n }\n }\n });\n }\n /**\n * Scroll to a desired target.\n *\n * @param Available options :\n * target {node, string, \"top\", \"bottom\", int} - The DOM element we want to scroll to\n * options {object} - Options object for additionnal settings.\n * @return {void}\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(target) {\n var _this9 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Parse options\n var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target\n\n var duration = !isNaN(parseInt(options.duration)) ? parseInt(options.duration) : 1000; // Duration of the scroll animation in milliseconds\n\n var easing = options.easing || [0.25, 0.0, 0.35, 1.0]; // An array of 4 floats between 0 and 1 defining the bezier curve for the animation's easing. See http://greweb.me/bezier-easing-editor/example/\n\n var disableLerp = options.disableLerp ? true : false; // Lerp effect won't be applied if set to true\n\n var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)\n\n easing = src$1.apply(void 0, _toConsumableArray(easing));\n\n if (typeof target === 'string') {\n // Selector or boundaries\n if (target === 'top') {\n target = 0;\n } else if (target === 'bottom') {\n target = this.instance.limit.y;\n } else if (target === 'left') {\n target = 0;\n } else if (target === 'right') {\n target = this.instance.limit.x;\n } else {\n target = document.querySelector(target); // If the query fails, abort\n\n if (!target) {\n return;\n }\n }\n } else if (typeof target === 'number') {\n // Absolute coordinate\n target = parseInt(target);\n } else if (target && target.tagName) ; else {\n console.warn('`target` parameter is not valid');\n return;\n } // We have a target that is not a coordinate yet, get it\n\n\n if (typeof target !== 'number') {\n // Verify the given target belongs to this scroll scope\n var targetInScope = getParents(target).includes(this.el);\n\n if (!targetInScope) {\n // If the target isn't inside our main element, abort any action\n return;\n } // Get target offset from top\n\n\n var targetBCR = target.getBoundingClientRect();\n var offsetTop = targetBCR.top;\n var offsetLeft = targetBCR.left; // Try and find the target's parent section\n\n var targetParents = getParents(target);\n var parentSection = targetParents.find(function (candidate) {\n return Object.entries(_this9.sections) // Get sections associative array as a regular array\n .map(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n key = _ref8[0],\n section = _ref8[1];\n\n return section;\n }) // map to section only (we dont need the key here)\n .find(function (section) {\n return section.el == candidate;\n }); // finally find the section that matches the candidate\n });\n var parentSectionOffset = 0;\n\n if (parentSection) {\n parentSectionOffset = getTranslate(parentSection)[this.directionAxis]; // We got a parent section, store it's current offset to remove it later\n } else {\n // if no parent section is found we need to use instance scroll directly\n parentSectionOffset = -this.instance.scroll[this.directionAxis];\n } // Final value of scroll destination : offsetTop + (optional offset given in options) - (parent's section translate)\n\n\n if (this.direction === 'horizontal') {\n offset = offsetLeft + offset - parentSectionOffset;\n } else {\n offset = offsetTop + offset - parentSectionOffset;\n }\n } else {\n offset = target + offset;\n } // Actual scrollto\n // ==========================================================================\n // Setup\n\n\n var scrollStart = parseFloat(this.instance.delta[this.directionAxis]);\n var scrollTarget = Math.max(0, Math.min(offset, this.instance.limit[this.directionAxis])); // Make sure our target is in the scroll boundaries\n\n var scrollDiff = scrollTarget - scrollStart;\n\n var render = function render(p) {\n if (disableLerp) {\n if (_this9.direction === 'horizontal') {\n _this9.setScroll(scrollStart + scrollDiff * p, _this9.instance.delta.y);\n } else {\n _this9.setScroll(_this9.instance.delta.x, scrollStart + scrollDiff * p);\n }\n } else {\n _this9.instance.delta[_this9.directionAxis] = scrollStart + scrollDiff * p;\n }\n }; // Prepare the scroll\n\n\n this.animatingScroll = true; // This boolean allows to prevent `checkScroll()` from calling `stopScrolling` when the animation is slow (i.e. at the beginning of an EaseIn)\n\n this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening\n\n this.startScrolling(); // Restart the scroll\n // Start the animation loop\n\n var start = Date.now();\n\n var loop = function loop() {\n var p = (Date.now() - start) / duration; // Animation progress\n\n if (p > 1) {\n // Animation ends\n render(1);\n _this9.animatingScroll = false;\n if (duration == 0) _this9.update();\n if (callback) callback();\n } else {\n _this9.scrollToRaf = requestAnimationFrame(loop);\n render(easing(p));\n }\n };\n\n loop();\n }\n }, {\n key: \"update\",\n value: function update() {\n this.setScrollLimit();\n this.addSections();\n this.addElements();\n this.detectElements();\n this.updateScroll();\n this.transformElements(true);\n this.reinitScrollBar();\n this.checkScroll(true);\n }\n }, {\n key: \"startScroll\",\n value: function startScroll() {\n this.stop = false;\n }\n }, {\n key: \"stopScroll\",\n value: function stopScroll() {\n this.stop = true;\n }\n }, {\n key: \"setScroll\",\n value: function setScroll(x, y) {\n this.instance = _objectSpread2(_objectSpread2({}, this.instance), {}, {\n scroll: {\n x: x,\n y: y\n },\n delta: {\n x: x,\n y: y\n },\n speed: 0\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(_default.prototype), \"destroy\", this).call(this);\n\n this.stopScrolling();\n this.html.classList.remove(this.smoothClass);\n this.vs.destroy();\n this.destroyScrollBar();\n window.removeEventListener('keydown', this.checkKey, false);\n }\n }]);\n\n return _default;\n}(_default);\n\nvar Smooth = /*#__PURE__*/function () {\n function Smooth() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Smooth);\n\n this.options = options; // Override default options with given ones\n\n Object.assign(this, defaults, options);\n this.smartphone = defaults.smartphone;\n if (options.smartphone) Object.assign(this.smartphone, options.smartphone);\n this.tablet = defaults.tablet;\n if (options.tablet) Object.assign(this.tablet, options.tablet);\n if (!this.smooth && this.direction == 'horizontal') console.warn('\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 the related image.\n *\n * @see ../utils/image.js\n *\n * It is recommended to wrap your `` into an element with the\n * CSS class name `.c-lazy`. The CSS class name modifier `.-lazy-loaded`\n * will be applied on both the image and the parent wrapper.\n *\n * ```html\n *
\n * \"\"\n *
\n * ```\n *\n * @param {LocomotiveScroll} args - The Locomotive Scroll instance.\n */\n lazyLoad(args) {\n lazyLoadImage(args.obj.el, 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 $html = document.documentElement;\nconst $body = document.body;\n\nexport { $html, $body };\n", "import modular from 'modujs';\nimport * as modules from './modules';\nimport globals from './globals';\nimport { $html } from './utils/dom';\nimport config from './config';\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(config.CLASS_NAME.LOADED);\n $html.classList.add(config.CLASS_NAME.READY);\n $html.classList.remove(config.CLASS_NAME.LOADING);\n}\n\n"], + "mappings": "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", "names": [] } From 2c19d14765b1e6fd6442f27c96a9a5acead44f91 Mon Sep 17 00:00:00 2001 From: Lucas Vallenet Date: Wed, 25 May 2022 13:36:51 +0200 Subject: [PATCH 4/4] Rename config css class --- assets/scripts/app.js | 6 +++--- assets/scripts/config.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/scripts/app.js b/assets/scripts/app.js index 0f01ff30..87a76510 100644 --- a/assets/scripts/app.js +++ b/assets/scripts/app.js @@ -29,8 +29,8 @@ function init() { app.init(app); - $html.classList.add(config.CLASS_NAME.LOADED); - $html.classList.add(config.CLASS_NAME.READY); - $html.classList.remove(config.CLASS_NAME.LOADING); + $html.classList.add(config.CSS_CLASS.LOADED); + $html.classList.add(config.CSS_CLASS.READY); + $html.classList.remove(config.CSS_CLASS.LOADING); } diff --git a/assets/scripts/config.js b/assets/scripts/config.js index fff2fefc..b2782039 100644 --- a/assets/scripts/config.js +++ b/assets/scripts/config.js @@ -7,7 +7,7 @@ export default config = Object.freeze({ IS_DEV: env === 'development', // CSS class names - CLASS_NAME: { + CSS_CLASS: { LOADING: 'is-loading', READY: 'is-ready', LOADED: 'is-loaded',