(() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // node_modules/svg4everybody/dist/svg4everybody.js var require_svg4everybody = __commonJS({ "node_modules/svg4everybody/dist/svg4everybody.js"(exports, module) { !function(root, factory) { typeof define == "function" && define.amd ? define([], function() { return root.svg4everybody = factory(); }) : typeof module == "object" && module.exports ? module.exports = factory() : root.svg4everybody = factory(); }(exports, function() { function embed(parent, svg, target) { if (target) { var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute("viewBox") && target.getAttribute("viewBox"); viewBox && svg.setAttribute("viewBox", viewBox); for (var clone = target.cloneNode(true); clone.childNodes.length; ) { fragment.appendChild(clone.firstChild); } parent.appendChild(fragment); } } function loadreadystatechange(xhr) { xhr.onreadystatechange = function() { if (xhr.readyState === 4) { var cachedDocument = xhr._cachedDocument; cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(""), cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), xhr._embeds.splice(0).map(function(item) { var target = xhr._cachedTarget[item.id]; target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), embed(item.parent, item.svg, target); }); } }, xhr.onreadystatechange(); } function svg4everybody2(rawopts) { function oninterval() { for (var index = 0; index < uses.length; ) { var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src2 = use.getAttribute("xlink:href") || use.getAttribute("href"); if (!src2 && opts.attributeName && (src2 = use.getAttribute(opts.attributeName)), svg && src2) { if (polyfill) { if (!opts.validate || opts.validate(src2, svg, use)) { parent.removeChild(use); var srcSplit = src2.split("#"), url = srcSplit.shift(), id = srcSplit.join("#"); if (url.length) { var xhr = requests[url]; xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open("GET", url), xhr.send(), xhr._embeds = []), xhr._embeds.push({ parent, svg, id }), loadreadystatechange(xhr); } else { embed(parent, svg, document.getElementById(id)); } } else { ++index, ++numberOfSvgUseElementsToBypass; } } } else { ++index; } } (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame2(oninterval, 67); } 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; 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; var requests = {}, requestAnimationFrame2 = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName("use"), numberOfSvgUseElementsToBypass = 0; polyfill && oninterval(); } function getSVGAncestor(node) { for (var svg = node; svg.nodeName.toLowerCase() !== "svg" && (svg = svg.parentNode); ) { } return svg; } return svg4everybody2; }); } }); // node_modules/modujs/dist/main.esm.js function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function(obj2) { return typeof obj2; }; } else { _typeof = function(obj2) { return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(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 _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = void 0; try { for (var _i = arr[Symbol.iterator](), _s; !(_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 _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(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 _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(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 _nonIterableSpread() { 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 _nonIterableRest() { 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); this.mAttr = "data-" + options.dataName; this.mCaptureEvents = ["mouseenter", "mouseleave"]; this.el = options.el; } _createClass(_default4, [{ key: "mInit", value: function mInit(modules) { var _this = this; this.modules = modules; this.mCheckEventTarget = this.mCheckEventTarget.bind(this); if (this.events) { Object.keys(this.events).forEach(function(event) { return _this.mAddEvent(event); }); } } }, { key: "mUpdate", value: function mUpdate(modules) { this.modules = modules; } }, { key: "mDestroy", value: function mDestroy() { var _this2 = this; if (this.events) { Object.keys(this.events).forEach(function(event) { return _this2.mRemoveEvent(event); }); } } }, { key: "mAddEvent", value: function mAddEvent(event) { var capture = this.mCaptureEvents.includes(event) ? true : false; this.el.addEventListener(event, this.mCheckEventTarget, capture); } }, { key: "mRemoveEvent", value: function mRemoveEvent(event) { var capture = this.mCaptureEvents.includes(event) ? true : false; this.el.removeEventListener(event, this.mCheckEventTarget, capture); } }, { key: "mCheckEventTarget", value: function mCheckEventTarget(e) { var event = this.events[e.type]; if (typeof event === "string") { this[event](e); } else { var data = "[" + this.mAttr + "]"; var target = e.target; if (this.mCaptureEvents.includes(e.type)) { if (target.matches(data)) { this.mCallEventMethod(e, event, target); } } else { while (target && target !== document) { if (target.matches(data)) { if (this.mCallEventMethod(e, event, target) != "undefined") { break; } } target = target.parentNode; } } } } }, { key: "mCallEventMethod", value: function mCallEventMethod(e, event, target) { var name = target.getAttribute(this.mAttr); if (event.hasOwnProperty(name)) { var method = event[name]; if (!e.hasOwnProperty("currentTarget")) { Object.defineProperty(e, "currentTarget", { value: target }); } if (!e.hasOwnProperty("curTarget")) { Object.defineProperty(e, "curTarget", { value: target }); } this[method](e); } } }, { key: "$", value: function $(query, context) { var classIndex = query.indexOf("."); var idIndex = query.indexOf("#"); var attrIndex = query.indexOf("["); var indexes = [classIndex, idIndex, attrIndex].filter(function(index2) { return index2 != -1; }); var index = false; var name = query; var more = ""; var parent = this.el; if (indexes.length) { index = Math.min.apply(Math, _toConsumableArray(indexes)); name = query.slice(0, index); more = query.slice(index); } if (_typeof(context) == "object") { parent = context; } return parent.querySelectorAll("[" + this.mAttr + "=" + name + "]" + more); } }, { key: "parent", value: function parent(query, context) { var data = "[" + this.mAttr + "=" + query + "]"; var parent2 = context.parentNode; while (parent2 && parent2 !== document) { if (parent2.matches(data)) { return parent2; } parent2 = parent2.parentNode; } } }, { key: "getData", value: function getData(name, context) { var target = context || this.el; return target.getAttribute(this.mAttr + "-" + name); } }, { key: "setData", value: function setData(name, value, context) { var target = context || this.el; return target.setAttribute(this.mAttr + "-" + name, value); } }, { key: "call", value: function call(func, args, mod, id) { var _this3 = this; if (args && !mod) { mod = args; args = false; } if (this.modules[mod]) { if (id) { if (this.modules[mod][id]) { this.modules[mod][id][func](args); } } else { Object.keys(this.modules[mod]).forEach(function(id2) { _this3.modules[mod][id2][func](args); }); } } } }, { key: "on", value: function on(e, mod, func, id) { var _this4 = this; if (this.modules[mod]) { if (id) { this.modules[mod][id].el.addEventListener(e, function(o) { return func(o); }); } else { Object.keys(this.modules[mod]).forEach(function(i) { _this4.modules[mod][i].el.addEventListener(e, function(o) { return func(o); }); }); } } } }, { key: "init", value: function init2() { } }, { key: "destroy", value: function destroy() { } }]); return _default4; }(); var _default$1 = /* @__PURE__ */ function() { function _default4(options) { _classCallCheck(this, _default4); this.app; this.modules = options.modules; this.currentModules = {}; this.activeModules = {}; this.newModules = {}; this.moduleId = 0; } _createClass(_default4, [{ key: "init", value: function init2(app2, scope) { var _this = this; var container = scope || document; var elements = container.querySelectorAll("*"); if (app2 && !this.app) { this.app = app2; } this.activeModules["app"] = { "app": this.app }; elements.forEach(function(el) { Array.from(el.attributes).forEach(function(i) { if (i.name.startsWith("data-module")) { var moduleExists = false; var dataName = i.name.split("-").splice(2); var moduleName = _this.toCamel(dataName); if (_this.modules[moduleName]) { moduleExists = true; } else if (_this.modules[_this.toUpper(moduleName)]) { moduleName = _this.toUpper(moduleName); moduleExists = true; } if (moduleExists) { var options = { el, name: moduleName, dataName: dataName.join("-") }; var module = new _this.modules[moduleName](options); var id = i.value; if (!id) { _this.moduleId++; id = "m" + _this.moduleId; el.setAttribute(i.name, id); } _this.addActiveModule(moduleName, id, module); var moduleId = moduleName + "-" + id; if (scope) { _this.newModules[moduleId] = module; } else { _this.currentModules[moduleId] = module; } } } }); }); Object.entries(this.currentModules).forEach(function(_ref) { var _ref2 = _slicedToArray(_ref, 2), id = _ref2[0], module = _ref2[1]; if (scope) { var split = id.split("-"); var moduleName = split.shift(); var moduleId = split.pop(); _this.addActiveModule(moduleName, moduleId, module); } else { _this.initModule(module); } }); } }, { key: "initModule", value: function initModule(module) { module.mInit(this.activeModules); module.init(); } }, { key: "addActiveModule", value: function addActiveModule(name, id, module) { if (this.activeModules[name]) { Object.assign(this.activeModules[name], _defineProperty({}, id, module)); } else { this.activeModules[name] = _defineProperty({}, id, module); } } }, { key: "update", value: function update(scope) { var _this2 = this; this.init(this.app, scope); Object.entries(this.currentModules).forEach(function(_ref3) { var _ref4 = _slicedToArray(_ref3, 2), id = _ref4[0], module = _ref4[1]; module.mUpdate(_this2.activeModules); }); Object.entries(this.newModules).forEach(function(_ref5) { var _ref6 = _slicedToArray(_ref5, 2), id = _ref6[0], module = _ref6[1]; _this2.initModule(module); }); Object.assign(this.currentModules, this.newModules); } }, { key: "destroy", value: function destroy(scope) { if (scope) { this.destroyScope(scope); } else { this.destroyModules(); } } }, { key: "destroyScope", value: function destroyScope(scope) { var _this3 = this; var elements = scope.querySelectorAll("*"); elements.forEach(function(el) { Array.from(el.attributes).forEach(function(i) { if (i.name.startsWith("data-module")) { var id = i.value; var dataName = i.name.split("-").splice(2); var moduleName = _this3.toCamel(dataName) + "-" + id; var moduleExists = false; if (_this3.currentModules[moduleName]) { moduleExists = true; } else if (_this3.currentModules[_this3.toUpper(moduleName)]) { moduleName = _this3.toUpper(moduleName); moduleExists = true; } if (moduleExists) { _this3.destroyModule(_this3.currentModules[moduleName]); delete _this3.currentModules[moduleName]; } } }); }); this.activeModules = {}; this.newModules = {}; } }, { key: "destroyModules", value: function destroyModules() { var _this4 = this; Object.entries(this.currentModules).forEach(function(_ref7) { var _ref8 = _slicedToArray(_ref7, 2), id = _ref8[0], module = _ref8[1]; _this4.destroyModule(module); }); this.currentModules = []; } }, { key: "destroyModule", value: function destroyModule(module) { module.mDestroy(); module.destroy(); } }, { key: "toCamel", value: function toCamel(arr) { var _this5 = this; return arr.reduce(function(a, b) { return a + _this5.toUpper(b); }); } }, { key: "toUpper", value: function toUpper(str) { return str.charAt(0).toUpperCase() + str.slice(1); } }]); return _default4; }(); var main_esm_default = _default$1; // assets/scripts/modules.js var modules_exports = {}; __export(modules_exports, { Load: () => Load_default, 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(); } _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 { constructor(m) { 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"); }); } }; // assets/scripts/utils/image.js var LAZY_LOADED_IMAGES = []; function loadImage(url, options = {}) { return new Promise((resolve, reject) => { const $img = new Image(); if (options.crossOrigin) { $img.crossOrigin = options.crossOrigin; } const loadCallback = () => { resolve(__spreadValues({ element: $img }, getImageMetadata($img))); }; if ($img.decode) { $img.src = url; $img.decode().then(loadCallback).catch((e) => { reject(e); }); } else { $img.onload = loadCallback; $img.onerror = (e) => { reject(e); }; $img.src = url; } }); } function getImageMetadata($img) { return { url: $img.src, width: $img.naturalWidth, height: $img.naturalHeight, ratio: $img.naturalWidth / $img.naturalHeight }; } function lazyLoadImage($el, url, callback) { return __async(this, null, function* () { let src2 = url ? url : $el.dataset.src; let loadedImage = LAZY_LOADED_IMAGES.find((image) => image.url === src2); if (!loadedImage) { loadedImage = yield loadImage(src2); if (!loadedImage.url) { return; } LAZY_LOADED_IMAGES.push(loadedImage); } if ($el.src === src2) { return; } if ($el.tagName === "IMG") { $el.src = loadedImage.url; } else { $el.style.backgroundImage = `url(${loadedImage.url})`; } requestAnimationFrame(() => { let lazyParent = $el.closest(".c-lazy"); if (lazyParent) { lazyParent.classList.add("-lazy-loaded"); lazyParent.style.backgroundImage = ""; } $el.classList.add("-lazy-loaded"); callback == null ? void 0 : callback(); }); }); } // node_modules/locomotive-scroll/dist/locomotive-scroll.esm.js function _classCallCheck3(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties3(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 _createClass3(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties3(Constructor.prototype, protoProps); if (staticProps) _defineProperties3(Constructor, staticProps); return Constructor; } function _defineProperty2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function(key) { _defineProperty2(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o2) { return o2.__proto__ || Object.getPrototypeOf(o2); }; return _getPrototypeOf(o); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) { o2.__proto__ = p2; return o2; }; return _setPrototypeOf(o, p); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function() { })); return true; } catch (e) { return false; } } function _assertThisInitialized(self2) { if (self2 === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self2; } function _possibleConstructorReturn(self2, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self2); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get2(target2, property2, receiver2) { var base = _superPropBase(target2, property2); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property2); if (desc.get) { return desc.get.call(receiver2); } return desc.value; }; } return _get(target, property, receiver || target); } function _slicedToArray3(arr, i) { return _arrayWithHoles3(arr) || _iterableToArrayLimit3(arr, i) || _unsupportedIterableToArray3(arr, i) || _nonIterableRest3(); } function _toConsumableArray2(arr) { return _arrayWithoutHoles2(arr) || _iterableToArray2(arr) || _unsupportedIterableToArray3(arr) || _nonIterableSpread2(); } function _arrayWithoutHoles2(arr) { if (Array.isArray(arr)) return _arrayLikeToArray3(arr); } function _arrayWithHoles3(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray2(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } function _iterableToArrayLimit3(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = void 0; try { for (var _i = arr[Symbol.iterator](), _s; !(_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 _unsupportedIterableToArray3(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray3(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); } function _arrayLikeToArray3(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 _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() { 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 = { el: document, name: "scroll", offset: [0, 0], repeat: false, smooth: false, initPosition: { x: 0, y: 0 }, direction: "vertical", gestureDirection: "vertical", reloadOnContextChange: false, lerp: 0.1, "class": "is-inview", scrollbarContainer: false, scrollbarClass: "c-scrollbar", scrollingClass: "has-scroll-scrolling", draggingClass: "has-scroll-dragging", smoothClass: "has-scroll-smooth", initClass: "has-scroll-init", getSpeed: false, getDirection: false, scrollFromAnywhere: false, multiplier: 1, firefoxMultiplier: 50, touchMultiplier: 2, resetNativeScroll: true, tablet: { smooth: false, direction: "vertical", gestureDirection: "vertical", breakpoint: 1024 }, smartphone: { smooth: false, direction: "vertical", gestureDirection: "vertical" } }; var _default3 = /* @__PURE__ */ function() { function _default4() { var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; _classCallCheck3(this, _default4); Object.assign(this, defaults, options); this.smartphone = defaults.smartphone; if (options.smartphone) Object.assign(this.smartphone, options.smartphone); this.tablet = defaults.tablet; if (options.tablet) Object.assign(this.tablet, options.tablet); this.namespace = "locomotive"; this.html = document.documentElement; this.windowHeight = window.innerHeight; this.windowWidth = window.innerWidth; this.windowMiddle = { x: this.windowWidth / 2, y: this.windowHeight / 2 }; this.els = {}; this.currentElements = {}; this.listeners = {}; this.hasScrollTicking = false; this.hasCallEventSet = false; this.checkScroll = this.checkScroll.bind(this); this.checkResize = this.checkResize.bind(this); this.checkEvent = this.checkEvent.bind(this); this.instance = { scroll: { x: 0, y: 0 }, limit: { x: this.html.offsetWidth, y: this.html.offsetHeight }, currentElements: this.currentElements }; if (this.isMobile) { if (this.isTablet) { this.context = "tablet"; } else { this.context = "smartphone"; } } else { this.context = "desktop"; } if (this.isMobile) this.direction = this[this.context].direction; if (this.direction === "horizontal") { this.directionAxis = "x"; } else { this.directionAxis = "y"; } if (this.getDirection) { this.instance.direction = null; } if (this.getDirection) { this.instance.speed = 0; } this.html.classList.add(this.initClass); window.addEventListener("resize", this.checkResize, false); } _createClass3(_default4, [{ key: "init", value: function init2() { this.initEvents(); } }, { key: "checkScroll", value: function checkScroll() { this.dispatchScroll(); } }, { key: "checkResize", value: function checkResize() { var _this = this; if (!this.resizeTick) { this.resizeTick = true; requestAnimationFrame(function() { _this.resize(); _this.resizeTick = false; }); } } }, { key: "resize", value: function resize() { } }, { key: "checkContext", value: function checkContext() { if (!this.reloadOnContextChange) return; 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; this.isTablet = this.isMobile && this.windowWidth >= this.tablet.breakpoint; var oldContext = this.context; if (this.isMobile) { if (this.isTablet) { this.context = "tablet"; } else { this.context = "smartphone"; } } else { this.context = "desktop"; } if (oldContext != this.context) { var oldSmooth = oldContext == "desktop" ? this.smooth : this[oldContext].smooth; var newSmooth = this.context == "desktop" ? this.smooth : this[this.context].smooth; if (oldSmooth != newSmooth) window.location.reload(); } } }, { key: "initEvents", value: function initEvents() { var _this2 = this; this.scrollToEls = this.el.querySelectorAll("[data-".concat(this.name, "-to]")); this.setScrollTo = this.setScrollTo.bind(this); this.scrollToEls.forEach(function(el) { el.addEventListener("click", _this2.setScrollTo, false); }); } }, { key: "setScrollTo", value: function setScrollTo(event) { event.preventDefault(); this.scrollTo(event.currentTarget.getAttribute("data-".concat(this.name, "-href")) || event.currentTarget.getAttribute("href"), { offset: event.currentTarget.getAttribute("data-".concat(this.name, "-offset")) }); } }, { key: "addElements", value: function addElements() { } }, { key: "detectElements", value: function detectElements(hasCallEventSet) { var _this3 = this; var scrollTop = this.instance.scroll.y; var scrollBottom = scrollTop + this.windowHeight; 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]; if (el && (!el.inView || hasCallEventSet)) { if (_this3.direction === "horizontal") { if (scrollRight >= el.left && scrollLeft < el.right) { _this3.setInView(el, i); } } else { if (scrollBottom >= el.top && scrollTop < el.bottom) { _this3.setInView(el, i); } } } if (el && el.inView) { if (_this3.direction === "horizontal") { var width = el.right - el.left; el.progress = (_this3.instance.scroll.x - (el.left - _this3.windowWidth)) / (width + _this3.windowWidth); if (scrollRight < el.left || scrollLeft > el.right) { _this3.setOutOfView(el, i); } } else { var height = el.bottom - el.top; el.progress = (_this3.instance.scroll.y - (el.top - _this3.windowHeight)) / (height + _this3.windowHeight); if (scrollBottom < el.top || scrollTop > el.bottom) { _this3.setOutOfView(el, i); } } } }); this.hasScrollTicking = false; } }, { key: "setInView", value: function setInView(current, i) { this.els[i].inView = true; current.el.classList.add(current["class"]); this.currentElements[i] = current; if (current.call && this.hasCallEventSet) { this.dispatchCall(current, "enter"); if (!current.repeat) { this.els[i].call = false; } } } }, { key: "setOutOfView", value: function setOutOfView(current, i) { var _this4 = this; this.els[i].inView = false; Object.keys(this.currentElements).forEach(function(el) { el === i && delete _this4.currentElements[el]; }); if (current.call && this.hasCallEventSet) { this.dispatchCall(current, "exit"); } if (current.repeat) { current.el.classList.remove(current["class"]); } } }, { key: "dispatchCall", value: function dispatchCall(current, way) { this.callWay = way; this.callValue = current.call.split(",").map(function(item) { return item.trim(); }); this.callObj = current; if (this.callValue.length == 1) this.callValue = this.callValue[0]; var callEvent = new Event(this.namespace + "call"); this.el.dispatchEvent(callEvent); } }, { key: "dispatchScroll", value: function dispatchScroll() { var scrollEvent = new Event(this.namespace + "scroll"); this.el.dispatchEvent(scrollEvent); } }, { key: "setEvents", value: function setEvents(event, func) { if (!this.listeners[event]) { this.listeners[event] = []; } var list = this.listeners[event]; list.push(func); if (list.length === 1) { this.el.addEventListener(this.namespace + event, this.checkEvent, false); } if (event === "call") { this.hasCallEventSet = true; this.detectElements(true); } } }, { key: "unsetEvents", value: function unsetEvents(event, func) { if (!this.listeners[event]) return; var list = this.listeners[event]; var index = list.indexOf(func); if (index < 0) return; list.splice(index, 1); if (list.index === 0) { this.el.removeEventListener(this.namespace + event, this.checkEvent, false); } } }, { key: "checkEvent", value: function checkEvent(event) { var _this5 = this; var name = event.type.replace(this.namespace, ""); var list = this.listeners[name]; if (!list || list.length === 0) return; list.forEach(function(func) { switch (name) { case "scroll": return func(_this5.instance); case "call": return func(_this5.callValue, _this5.callWay, _this5.callObj); default: return func(); } }); } }, { key: "startScroll", value: function startScroll() { } }, { key: "stopScroll", value: function stopScroll() { } }, { key: "setScroll", value: function setScroll(x, y) { this.instance.scroll = { x: 0, y: 0 }; } }, { key: "destroy", value: function destroy() { var _this6 = this; window.removeEventListener("resize", this.checkResize, false); Object.keys(this.listeners).forEach(function(event) { _this6.el.removeEventListener(_this6.namespace + event, _this6.checkEvent, false); }); this.listeners = {}; this.scrollToEls.forEach(function(el) { el.removeEventListener("click", _this6.setScrollTo, false); }); this.html.classList.remove(this.initClass); } }]); return _default4; }(); var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } var smoothscroll = createCommonjsModule(function(module, exports) { (function() { function polyfill() { var w = window; var d = document; if ("scrollBehavior" in d.documentElement.style && w.__forceSmoothScrollPolyfill__ !== true) { return; } var Element = 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 }; var now = w.performance && w.performance.now ? w.performance.now.bind(w.performance) : Date.now; function isMicrosoftBrowser(userAgent) { var userAgentPatterns = ["MSIE ", "Trident/", "Edge/"]; return new RegExp(userAgentPatterns.join("|")).test(userAgent); } var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0; function scrollElement(x, y) { this.scrollLeft = x; this.scrollTop = y; } function ease(k) { return 0.5 * (1 - Math.cos(Math.PI * k)); } function shouldBailOut(firstArg) { if (firstArg === null || typeof firstArg !== "object" || firstArg.behavior === void 0 || firstArg.behavior === "auto" || firstArg.behavior === "instant") { return true; } if (typeof firstArg === "object" && firstArg.behavior === "smooth") { return false; } throw new TypeError("behavior member of ScrollOptions " + firstArg.behavior + " is not a valid value for enumeration ScrollBehavior."); } function hasScrollableSpace(el, axis) { if (axis === "Y") { return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight; } if (axis === "X") { return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth; } } function canOverflow(el, axis) { var overflowValue = w.getComputedStyle(el, null)["overflow" + axis]; return overflowValue === "auto" || overflowValue === "scroll"; } function isScrollable(el) { var isScrollableY = hasScrollableSpace(el, "Y") && canOverflow(el, "Y"); var isScrollableX = hasScrollableSpace(el, "X") && canOverflow(el, "X"); return isScrollableY || isScrollableX; } function findScrollableParent(el) { while (el !== d.body && isScrollable(el) === false) { el = el.parentNode || el.host; } return el; } function step(context) { var time = now(); var value; var currentX; var currentY; var elapsed = (time - context.startTime) / SCROLL_TIME; elapsed = elapsed > 1 ? 1 : elapsed; value = ease(elapsed); currentX = context.startX + (context.x - context.startX) * value; currentY = context.startY + (context.y - context.startY) * value; context.method.call(context.scrollable, currentX, currentY); if (currentX !== context.x || currentY !== context.y) { w.requestAnimationFrame(step.bind(w, context)); } } function smoothScroll(el, x, y) { var scrollable; var startX; var startY; var method; var startTime = now(); if (el === d.body) { scrollable = w; startX = w.scrollX || w.pageXOffset; startY = w.scrollY || w.pageYOffset; method = original.scroll; } else { scrollable = el; startX = el.scrollLeft; startY = el.scrollTop; method = scrollElement; } step({ scrollable, method, startTime, startX, startY, x, y }); } w.scroll = w.scrollTo = function() { if (arguments[0] === void 0) { return; } if (shouldBailOut(arguments[0]) === true) { original.scroll.call(w, arguments[0].left !== void 0 ? arguments[0].left : typeof arguments[0] !== "object" ? arguments[0] : w.scrollX || w.pageXOffset, arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : w.scrollY || w.pageYOffset); return; } smoothScroll.call(w, d.body, arguments[0].left !== void 0 ? ~~arguments[0].left : w.scrollX || w.pageXOffset, arguments[0].top !== void 0 ? ~~arguments[0].top : w.scrollY || w.pageYOffset); }; w.scrollBy = function() { if (arguments[0] === void 0) { return; } if (shouldBailOut(arguments[0])) { original.scrollBy.call(w, arguments[0].left !== void 0 ? arguments[0].left : typeof arguments[0] !== "object" ? arguments[0] : 0, arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : 0); return; } 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() { if (arguments[0] === void 0) { return; } if (shouldBailOut(arguments[0]) === true) { if (typeof arguments[0] === "number" && arguments[1] === void 0) { throw new SyntaxError("Value could not be converted"); } original.elementScroll.call(this, arguments[0].left !== void 0 ? ~~arguments[0].left : typeof arguments[0] !== "object" ? ~~arguments[0] : this.scrollLeft, arguments[0].top !== void 0 ? ~~arguments[0].top : arguments[1] !== void 0 ? ~~arguments[1] : this.scrollTop); return; } var left = arguments[0].left; 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() { if (arguments[0] === void 0) { return; } if (shouldBailOut(arguments[0]) === true) { original.elementScroll.call(this, arguments[0].left !== void 0 ? ~~arguments[0].left + this.scrollLeft : ~~arguments[0] + this.scrollLeft, arguments[0].top !== void 0 ? ~~arguments[0].top + this.scrollTop : ~~arguments[1] + this.scrollTop); return; } this.scroll({ left: ~~arguments[0].left + this.scrollLeft, top: ~~arguments[0].top + this.scrollTop, behavior: arguments[0].behavior }); }; Element.prototype.scrollIntoView = function() { if (shouldBailOut(arguments[0]) === true) { original.scrollIntoView.call(this, arguments[0] === void 0 ? true : arguments[0]); return; } var scrollableParent = findScrollableParent(this); var parentRects = scrollableParent.getBoundingClientRect(); var clientRects = this.getBoundingClientRect(); if (scrollableParent !== d.body) { smoothScroll.call(this, scrollableParent, scrollableParent.scrollLeft + clientRects.left - parentRects.left, scrollableParent.scrollTop + clientRects.top - parentRects.top); if (w.getComputedStyle(scrollableParent).position !== "fixed") { w.scrollBy({ left: parentRects.left, top: parentRects.top, behavior: "smooth" }); } } else { w.scrollBy({ left: clientRects.left, top: clientRects.top, behavior: "smooth" }); } }; } { module.exports = { polyfill }; } })(); }); var smoothscroll_1 = smoothscroll.polyfill; var _default$12 = /* @__PURE__ */ function(_Core) { _inherits(_default4, _Core); var _super = _createSuper(_default4); function _default4() { var _this; var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; _classCallCheck3(this, _default4); _this = _super.call(this, options); if (_this.resetNativeScroll) { if (history.scrollRestoration) { history.scrollRestoration = "manual"; } window.scrollTo(0, 0); } window.addEventListener("scroll", _this.checkScroll, false); if (window.smoothscrollPolyfill === void 0) { window.smoothscrollPolyfill = smoothscroll; window.smoothscrollPolyfill.polyfill(); } return _this; } _createClass3(_default4, [{ key: "init", value: function init2() { this.instance.scroll.y = window.pageYOffset; this.addElements(); this.detectElements(); _get(_getPrototypeOf(_default4.prototype), "init", this).call(this); } }, { key: "checkScroll", value: function checkScroll() { var _this2 = this; _get(_getPrototypeOf(_default4.prototype), "checkScroll", this).call(this); if (this.getDirection) { this.addDirection(); } if (this.getSpeed) { this.addSpeed(); this.speedTs = Date.now(); } this.instance.scroll.y = window.pageYOffset; if (Object.entries(this.els).length) { if (!this.hasScrollTicking) { requestAnimationFrame(function() { _this2.detectElements(); }); this.hasScrollTicking = true; } } } }, { key: "addDirection", value: function addDirection() { if (window.pageYOffset > this.instance.scroll.y) { if (this.instance.direction !== "down") { this.instance.direction = "down"; } } else if (window.pageYOffset < this.instance.scroll.y) { if (this.instance.direction !== "up") { this.instance.direction = "up"; } } } }, { key: "addSpeed", value: function addSpeed() { if (window.pageYOffset != this.instance.scroll.y) { this.instance.speed = (window.pageYOffset - this.instance.scroll.y) / Math.max(1, Date.now() - this.speedTs); } else { this.instance.speed = 0; } } }, { key: "resize", value: function resize() { if (Object.entries(this.els).length) { this.windowHeight = window.innerHeight; this.updateElements(); } } }, { key: "addElements", value: function addElements() { var _this3 = this; this.els = {}; var els = this.el.querySelectorAll("[data-" + this.name + "]"); els.forEach(function(el, index) { var BCR = el.getBoundingClientRect(); var cl = el.dataset[_this3.name + "Class"] || _this3["class"]; var id = typeof el.dataset[_this3.name + "Id"] === "string" ? el.dataset[_this3.name + "Id"] : index; var top; var left; var offset = typeof el.dataset[_this3.name + "Offset"] === "string" ? el.dataset[_this3.name + "Offset"].split(",") : _this3.offset; var repeat = el.dataset[_this3.name + "Repeat"]; var call = el.dataset[_this3.name + "Call"]; var target = el.dataset[_this3.name + "Target"]; var targetEl; if (target !== void 0) { targetEl = document.querySelector("".concat(target)); } else { targetEl = el; } var targetElBCR = targetEl.getBoundingClientRect(); top = targetElBCR.top + _this3.instance.scroll.y; left = targetElBCR.left + _this3.instance.scroll.x; var bottom = top + targetEl.offsetHeight; var right = left + targetEl.offsetWidth; if (repeat == "false") { repeat = false; } else if (repeat != void 0) { repeat = true; } else { repeat = _this3.repeat; } var relativeOffset = _this3.getRelativeOffset(offset); top = top + relativeOffset[0]; bottom = bottom - relativeOffset[1]; var mappedEl = { el, targetEl, id, "class": cl, top, bottom, left, right, offset, progress: 0, repeat, inView: false, call }; _this3.els[id] = mappedEl; if (el.classList.contains(cl)) { _this3.setInView(_this3.els[id], id); } }); } }, { key: "updateElements", 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 top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y; var bottom = top + el.targetEl.offsetHeight; var relativeOffset = _this4.getRelativeOffset(el.offset); _this4.els[i].top = top + relativeOffset[0]; _this4.els[i].bottom = bottom - relativeOffset[1]; }); this.hasScrollTicking = false; } }, { key: "getRelativeOffset", value: function getRelativeOffset(offset) { var relativeOffset = [0, 0]; if (offset) { for (var i = 0; i < offset.length; i++) { if (typeof offset[i] == "string") { if (offset[i].includes("%")) { relativeOffset[i] = parseInt(offset[i].replace("%", "") * this.windowHeight / 100); } else { relativeOffset[i] = parseInt(offset[i]); } } else { relativeOffset[i] = offset[i]; } } } return relativeOffset; } }, { key: "scrollTo", value: function scrollTo(target) { var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; var offset = parseInt(options.offset) || 0; var callback = options.callback ? options.callback : false; if (typeof target === "string") { if (target === "top") { target = this.html; } else if (target === "bottom") { target = this.html.offsetHeight - window.innerHeight; } else { target = document.querySelector(target); if (!target) { return; } } } else if (typeof target === "number") { target = parseInt(target); } else if (target && target.tagName) ; else { console.warn("`target` parameter is not valid"); return; } if (typeof target !== "number") { offset = target.getBoundingClientRect().top + offset + this.instance.scroll.y; } else { offset = target + offset; } var isTargetReached = function isTargetReached2() { return parseInt(window.pageYOffset) === parseInt(offset); }; if (callback) { if (isTargetReached()) { callback(); return; } else { var onScroll = function onScroll2() { if (isTargetReached()) { window.removeEventListener("scroll", onScroll2); callback(); } }; window.addEventListener("scroll", onScroll); } } window.scrollTo({ top: offset, behavior: options.duration === 0 ? "auto" : "smooth" }); } }, { key: "update", value: function update() { this.addElements(); this.detectElements(); } }, { key: "destroy", value: function destroy() { _get(_getPrototypeOf(_default4.prototype), "destroy", this).call(this); window.removeEventListener("scroll", this.checkScroll, false); } }]); return _default4; }(_default3); var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(val) { if (val === null || val === void 0) { throw new TypeError("Object.assign cannot be called with null or undefined"); } return Object(val); } function shouldUseNative() { try { if (!Object.assign) { return false; } var test1 = new String("abc"); test1[5] = "de"; if (Object.getOwnPropertyNames(test1)[0] === "5") { return false; } var test2 = {}; for (var i = 0; i < 10; i++) { test2["_" + String.fromCharCode(i)] = i; } var order2 = Object.getOwnPropertyNames(test2).map(function(n) { return test2[n]; }); if (order2.join("") !== "0123456789") { return false; } var test3 = {}; "abcdefghijklmnopqrst".split("").forEach(function(letter) { test3[letter] = letter; }); if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") { return false; } return true; } catch (err) { return false; } } var objectAssign = shouldUseNative() ? Object.assign : function(target, source) { var from; var to = toObject(target); var symbols; for (var s = 1; s < arguments.length; s++) { from = Object(arguments[s]); for (var key in from) { if (hasOwnProperty.call(from, key)) { to[key] = from[key]; } } if (getOwnPropertySymbols) { symbols = getOwnPropertySymbols(from); for (var i = 0; i < symbols.length; i++) { if (propIsEnumerable.call(from, symbols[i])) { to[symbols[i]] = from[symbols[i]]; } } } } return to; }; function E() { } E.prototype = { on: function(name, callback, ctx) { var e = this.e || (this.e = {}); (e[name] || (e[name] = [])).push({ fn: callback, ctx }); return this; }, once: function(name, callback, ctx) { var self2 = this; function listener() { self2.off(name, listener); callback.apply(ctx, arguments); } listener._ = callback; return this.on(name, listener, ctx); }, emit: function(name) { var data = [].slice.call(arguments, 1); var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); var i = 0; var len = evtArr.length; for (i; i < len; i++) { evtArr[i].fn.apply(evtArr[i].ctx, data); } return this; }, off: function(name, callback) { var e = this.e || (this.e = {}); var evts = e[name]; var liveEvents = []; if (evts && callback) { for (var i = 0, len = evts.length; i < len; i++) { if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]); } } liveEvents.length ? e[name] = liveEvents : delete e[name]; return this; } }; var tinyEmitter = E; var lethargy = createCommonjsModule(function(module, exports) { (function() { var root; root = exports !== null ? exports : this; root.Lethargy = function() { function Lethargy2(stability, sensitivity, tolerance, delay) { this.stability = stability != null ? Math.abs(stability) : 8; this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100; this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1; this.delay = delay != null ? delay : 150; this.lastUpDeltas = function() { var i, ref, results; results = []; for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) { results.push(null); } return results; }.call(this); this.lastDownDeltas = function() { var i, ref, results; results = []; for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) { results.push(null); } return results; }.call(this); this.deltasTimestamp = function() { var i, ref, results; results = []; for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) { results.push(null); } return results; }.call(this); } Lethargy2.prototype.check = function(e) { var lastDelta; e = e.originalEvent || e; if (e.wheelDelta != null) { lastDelta = e.wheelDelta; } else if (e.deltaY != null) { lastDelta = e.deltaY * -40; } else if (e.detail != null || e.detail === 0) { lastDelta = e.detail * -40; } this.deltasTimestamp.push(Date.now()); this.deltasTimestamp.shift(); if (lastDelta > 0) { this.lastUpDeltas.push(lastDelta); this.lastUpDeltas.shift(); return this.isInertia(1); } else { this.lastDownDeltas.push(lastDelta); this.lastDownDeltas.shift(); return this.isInertia(-1); } }; Lethargy2.prototype.isInertia = function(direction) { var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum; lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas; if (lastDeltas[0] === null) { return direction; } if (this.deltasTimestamp[this.stability * 2 - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[this.stability * 2 - 1]) { return false; } lastDeltasOld = lastDeltas.slice(0, this.stability); lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2); oldSum = lastDeltasOld.reduce(function(t, s) { return t + s; }); newSum = lastDeltasNew.reduce(function(t, s) { return t + s; }); oldAverage = oldSum / lastDeltasOld.length; newAverage = newSum / lastDeltasNew.length; if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && this.sensitivity < Math.abs(newAverage)) { return direction; } else { return false; } }; Lethargy2.prototype.showLastUpDeltas = function() { return this.lastUpDeltas; }; Lethargy2.prototype.showLastDownDeltas = function() { return this.lastDownDeltas; }; return Lethargy2; }(); }).call(commonjsGlobal); }); var support = function getSupport() { return { hasWheelEvent: "onwheel" in document, hasMouseWheelEvent: "onmousewheel" in document, hasTouch: "ontouchstart" in window || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch, hasTouchWin: navigator.msMaxTouchPoints && navigator.msMaxTouchPoints > 1, hasPointer: !!window.navigator.msPointerEnabled, hasKeyDown: "onkeydown" in document, isFirefox: navigator.userAgent.indexOf("Firefox") > -1 }; }(); var toString = Object.prototype.toString; var hasOwnProperty$1 = Object.prototype.hasOwnProperty; var bindallStandalone = function(object) { if (!object) return console.warn("bindAll requires at least one argument."); var functions = Array.prototype.slice.call(arguments, 1); if (functions.length === 0) { for (var method in object) { if (hasOwnProperty$1.call(object, method)) { if (typeof object[method] == "function" && toString.call(object[method]) == "[object Function]") { functions.push(method); } } } } for (var i = 0; i < functions.length; i++) { var f = functions[i]; object[f] = bind(object[f], object); } }; function bind(func, context) { return function() { return func.apply(context, arguments); }; } var Lethargy = lethargy.Lethargy; var EVT_ID = "virtualscroll"; var src = VirtualScroll; var keyCodes = { LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, SPACE: 32 }; function VirtualScroll(options) { bindallStandalone(this, "_onWheel", "_onMouseWheel", "_onTouchStart", "_onTouchMove", "_onKeyDown"); this.el = window; if (options && options.el) { this.el = options.el; delete options.el; } this.options = objectAssign({ mouseMultiplier: 1, touchMultiplier: 2, firefoxMultiplier: 15, keyStep: 120, preventTouch: false, unpreventTouchClass: "vs-touchmove-allowed", limitInertia: false, useKeyboard: true, useTouch: true }, options); if (this.options.limitInertia) this._lethargy = new Lethargy(); this._emitter = new tinyEmitter(); this._event = { y: 0, x: 0, deltaX: 0, deltaY: 0 }; this.touchStartX = null; this.touchStartY = null; this.bodyTouchAction = null; if (this.options.passive !== void 0) { this.listenerOptions = { passive: this.options.passive }; } } VirtualScroll.prototype._notify = function(e) { var evt = this._event; evt.x += evt.deltaX; evt.y += evt.deltaY; this._emitter.emit(EVT_ID, { x: evt.x, y: evt.y, deltaX: evt.deltaX, deltaY: evt.deltaY, originalEvent: e }); }; VirtualScroll.prototype._onWheel = function(e) { var options = this.options; if (this._lethargy && this._lethargy.check(e) === false) return; var evt = this._event; evt.deltaX = e.wheelDeltaX || e.deltaX * -1; evt.deltaY = e.wheelDeltaY || e.deltaY * -1; if (support.isFirefox && e.deltaMode == 1) { evt.deltaX *= options.firefoxMultiplier; evt.deltaY *= options.firefoxMultiplier; } evt.deltaX *= options.mouseMultiplier; evt.deltaY *= options.mouseMultiplier; this._notify(e); }; VirtualScroll.prototype._onMouseWheel = function(e) { if (this.options.limitInertia && this._lethargy.check(e) === false) return; var evt = this._event; evt.deltaX = e.wheelDeltaX ? e.wheelDeltaX : 0; evt.deltaY = e.wheelDeltaY ? e.wheelDeltaY : e.wheelDelta; this._notify(e); }; VirtualScroll.prototype._onTouchStart = function(e) { var t = e.targetTouches ? e.targetTouches[0] : e; this.touchStartX = t.pageX; this.touchStartY = t.pageY; }; VirtualScroll.prototype._onTouchMove = function(e) { var options = this.options; if (options.preventTouch && !e.target.classList.contains(options.unpreventTouchClass)) { e.preventDefault(); } var evt = this._event; var t = e.targetTouches ? e.targetTouches[0] : e; evt.deltaX = (t.pageX - this.touchStartX) * options.touchMultiplier; evt.deltaY = (t.pageY - this.touchStartY) * options.touchMultiplier; this.touchStartX = t.pageX; this.touchStartY = t.pageY; this._notify(e); }; VirtualScroll.prototype._onKeyDown = function(e) { var evt = this._event; evt.deltaX = evt.deltaY = 0; var windowHeight = window.innerHeight - 40; switch (e.keyCode) { case keyCodes.LEFT: case keyCodes.UP: evt.deltaY = this.options.keyStep; break; case keyCodes.RIGHT: case keyCodes.DOWN: evt.deltaY = -this.options.keyStep; break; case e.shiftKey: evt.deltaY = windowHeight; break; case keyCodes.SPACE: evt.deltaY = -windowHeight; break; default: return; } this._notify(e); }; VirtualScroll.prototype._bind = function() { if (support.hasWheelEvent) this.el.addEventListener("wheel", this._onWheel, this.listenerOptions); if (support.hasMouseWheelEvent) this.el.addEventListener("mousewheel", this._onMouseWheel, this.listenerOptions); if (support.hasTouch && this.options.useTouch) { this.el.addEventListener("touchstart", this._onTouchStart, this.listenerOptions); this.el.addEventListener("touchmove", this._onTouchMove, this.listenerOptions); } if (support.hasPointer && support.hasTouchWin) { this.bodyTouchAction = document.body.style.msTouchAction; document.body.style.msTouchAction = "none"; this.el.addEventListener("MSPointerDown", this._onTouchStart, true); this.el.addEventListener("MSPointerMove", this._onTouchMove, true); } if (support.hasKeyDown && this.options.useKeyboard) document.addEventListener("keydown", this._onKeyDown); }; VirtualScroll.prototype._unbind = function() { if (support.hasWheelEvent) this.el.removeEventListener("wheel", this._onWheel); if (support.hasMouseWheelEvent) this.el.removeEventListener("mousewheel", this._onMouseWheel); if (support.hasTouch) { this.el.removeEventListener("touchstart", this._onTouchStart); this.el.removeEventListener("touchmove", this._onTouchMove); } if (support.hasPointer && support.hasTouchWin) { document.body.style.msTouchAction = this.bodyTouchAction; this.el.removeEventListener("MSPointerDown", this._onTouchStart, true); this.el.removeEventListener("MSPointerMove", this._onTouchMove, true); } if (support.hasKeyDown && this.options.useKeyboard) document.removeEventListener("keydown", this._onKeyDown); }; VirtualScroll.prototype.on = function(cb, ctx) { this._emitter.on(EVT_ID, cb, ctx); var events = this._emitter.e; if (events && events[EVT_ID] && events[EVT_ID].length === 1) this._bind(); }; VirtualScroll.prototype.off = function(cb, ctx) { this._emitter.off(EVT_ID, cb, ctx); var events = this._emitter.e; if (!events[EVT_ID] || events[EVT_ID].length <= 0) this._unbind(); }; VirtualScroll.prototype.reset = function() { var evt = this._event; evt.x = 0; evt.y = 0; }; VirtualScroll.prototype.destroy = function() { this._emitter.off(); this._unbind(); }; function lerp(start, end, amt) { return (1 - amt) * start + amt * end; } function getTranslate(el) { var translate = {}; if (!window.getComputedStyle) return; var style = getComputedStyle(el); var transform = style.transform || style.webkitTransform || style.mozTransform; var mat = transform.match(/^matrix3d\((.+)\)$/); if (mat) { translate.x = mat ? parseFloat(mat[1].split(", ")[12]) : 0; translate.y = mat ? parseFloat(mat[1].split(", ")[13]) : 0; } else { mat = transform.match(/^matrix\((.+)\)$/); translate.x = mat ? parseFloat(mat[1].split(", ")[4]) : 0; translate.y = mat ? parseFloat(mat[1].split(", ")[5]) : 0; } return translate; } function getParents(elem) { var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { parents.push(elem); } return parents; } var NEWTON_ITERATIONS = 4; var NEWTON_MIN_SLOPE = 1e-3; var SUBDIVISION_PRECISION = 1e-7; var SUBDIVISION_MAX_ITERATIONS = 10; var kSplineTableSize = 11; var kSampleStepSize = 1 / (kSplineTableSize - 1); var float32ArraySupported = typeof Float32Array === "function"; function A(aA1, aA2) { return 1 - 3 * aA2 + 3 * aA1; } function B(aA1, aA2) { return 3 * aA2 - 6 * aA1; } function C(aA1) { return 3 * aA1; } function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; } function getSlope(aT, aA1, aA2) { return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1); } function binarySubdivide(aX, aA, aB, mX1, mX2) { var currentX, currentT, i = 0; do { currentT = aA + (aB - aA) / 2; currentX = calcBezier(currentT, mX1, mX2) - aX; if (currentX > 0) { aB = currentT; } else { aA = currentT; } } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); return currentT; } function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) { for (var i = 0; i < NEWTON_ITERATIONS; ++i) { var currentSlope = getSlope(aGuessT, mX1, mX2); if (currentSlope === 0) { return aGuessT; } var currentX = calcBezier(aGuessT, mX1, mX2) - aX; aGuessT -= currentX / currentSlope; } return aGuessT; } function LinearEasing(x) { return x; } var src$1 = function bezier(mX1, mY1, mX2, mY2) { if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { throw new Error("bezier x values must be in [0, 1] range"); } if (mX1 === mY1 && mX2 === mY2) { return LinearEasing; } var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); for (var i = 0; i < kSplineTableSize; ++i) { sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); } function getTForX(aX) { var intervalStart = 0; var currentSample = 1; var lastSample = kSplineTableSize - 1; for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { intervalStart += kSampleStepSize; } --currentSample; var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); var guessForT = intervalStart + dist * kSampleStepSize; var initialSlope = getSlope(guessForT, mX1, mX2); if (initialSlope >= NEWTON_MIN_SLOPE) { return newtonRaphsonIterate(aX, guessForT, mX1, mX2); } else if (initialSlope === 0) { return guessForT; } else { return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); } } return function BezierEasing(x) { if (x === 0) { return 0; } if (x === 1) { return 1; } return calcBezier(getTForX(x), mY1, mY2); }; }; var keyCodes$1 = { LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, SPACE: 32, TAB: 9, PAGEUP: 33, PAGEDOWN: 34, HOME: 36, END: 35 }; var _default$2 = /* @__PURE__ */ function(_Core) { _inherits(_default4, _Core); var _super = _createSuper(_default4); function _default4() { var _this; var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; _classCallCheck3(this, _default4); if (history.scrollRestoration) { history.scrollRestoration = "manual"; } window.scrollTo(0, 0); _this = _super.call(this, options); if (_this.inertia) _this.lerp = _this.inertia * 0.1; _this.isScrolling = false; _this.isDraggingScrollbar = false; _this.isTicking = false; _this.hasScrollTicking = false; _this.parallaxElements = {}; _this.stop = false; _this.scrollbarContainer = options.scrollbarContainer; _this.checkKey = _this.checkKey.bind(_assertThisInitialized(_this)); window.addEventListener("keydown", _this.checkKey, false); return _this; } _createClass3(_default4, [{ key: "init", value: function init2() { var _this2 = this; this.html.classList.add(this.smoothClass); this.html.setAttribute("data-".concat(this.name, "-direction"), this.direction); this.instance = _objectSpread2({ delta: { x: this.initPosition.x, y: this.initPosition.y }, scroll: { x: this.initPosition.x, y: this.initPosition.y } }, this.instance); this.vs = new src({ el: this.scrollFromAnywhere ? document : this.el, mouseMultiplier: navigator.platform.indexOf("Win") > -1 ? 1 : 0.4, firefoxMultiplier: this.firefoxMultiplier, touchMultiplier: this.touchMultiplier, useKeyboard: false, passive: true }); this.vs.on(function(e) { if (_this2.stop) { return; } if (!_this2.isDraggingScrollbar) { requestAnimationFrame(function() { _this2.updateDelta(e); if (!_this2.isScrolling) _this2.startScrolling(); }); } }); this.setScrollLimit(); this.initScrollBar(); this.addSections(); this.addElements(); this.checkScroll(true); this.transformElements(true, true); _get(_getPrototypeOf(_default4.prototype), "init", this).call(this); } }, { key: "setScrollLimit", value: function setScrollLimit() { this.instance.limit.y = this.el.offsetHeight - this.windowHeight; if (this.direction === "horizontal") { var totalWidth = 0; var nodes = this.el.children; for (var i = 0; i < nodes.length; i++) { totalWidth += nodes[i].offsetWidth; } this.instance.limit.x = totalWidth - this.windowWidth; } } }, { key: "startScrolling", value: function startScrolling() { this.startScrollTs = Date.now(); this.isScrolling = true; this.checkScroll(); this.html.classList.add(this.scrollingClass); } }, { key: "stopScrolling", value: function stopScrolling() { cancelAnimationFrame(this.checkScrollRaf); this.startScrollTs = void 0; if (this.scrollToRaf) { cancelAnimationFrame(this.scrollToRaf); this.scrollToRaf = null; } this.isScrolling = false; this.instance.scroll.y = Math.round(this.instance.scroll.y); this.html.classList.remove(this.scrollingClass); } }, { key: "checkKey", value: function checkKey(e) { var _this3 = this; if (this.stop) { if (e.keyCode == keyCodes$1.TAB) { requestAnimationFrame(function() { _this3.html.scrollTop = 0; document.body.scrollTop = 0; _this3.html.scrollLeft = 0; document.body.scrollLeft = 0; }); } return; } switch (e.keyCode) { case keyCodes$1.TAB: requestAnimationFrame(function() { _this3.html.scrollTop = 0; document.body.scrollTop = 0; _this3.html.scrollLeft = 0; document.body.scrollLeft = 0; _this3.scrollTo(document.activeElement, { offset: -window.innerHeight / 2 }); }); break; case keyCodes$1.UP: if (this.isActiveElementScrollSensitive()) { this.instance.delta[this.directionAxis] -= 240; } break; case keyCodes$1.DOWN: if (this.isActiveElementScrollSensitive()) { this.instance.delta[this.directionAxis] += 240; } break; case keyCodes$1.PAGEUP: this.instance.delta[this.directionAxis] -= window.innerHeight; break; case keyCodes$1.PAGEDOWN: this.instance.delta[this.directionAxis] += window.innerHeight; break; case keyCodes$1.HOME: this.instance.delta[this.directionAxis] -= this.instance.limit[this.directionAxis]; break; case keyCodes$1.END: this.instance.delta[this.directionAxis] += this.instance.limit[this.directionAxis]; break; case keyCodes$1.SPACE: if (this.isActiveElementScrollSensitive()) { if (e.shiftKey) { this.instance.delta[this.directionAxis] -= window.innerHeight; } else { this.instance.delta[this.directionAxis] += window.innerHeight; } } break; default: return; } if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0; if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis]; this.stopScrolling(); this.isScrolling = true; this.checkScroll(); this.html.classList.add(this.scrollingClass); } }, { key: "isActiveElementScrollSensitive", value: function isActiveElementScrollSensitive() { return !(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement) && !(document.activeElement instanceof HTMLButtonElement) && !(document.activeElement instanceof HTMLSelectElement); } }, { key: "checkScroll", value: function checkScroll() { var _this4 = this; var forced = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; if (forced || this.isScrolling || this.isDraggingScrollbar) { if (!this.hasScrollTicking) { this.checkScrollRaf = requestAnimationFrame(function() { return _this4.checkScroll(); }); this.hasScrollTicking = true; } this.updateScroll(); var distance = Math.abs(this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]); var timeSinceStart = Date.now() - this.startScrollTs; if (!this.animatingScroll && timeSinceStart > 100 && (distance < 0.5 && this.instance.delta[this.directionAxis] != 0 || distance < 0.5 && this.instance.delta[this.directionAxis] == 0)) { this.stopScrolling(); } Object.entries(this.sections).forEach(function(_ref) { var _ref2 = _slicedToArray3(_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); } else { _this4.transform(section.el, 0, -_this4.instance.scroll[_this4.directionAxis]); } if (!section.inView) { section.inView = true; section.el.style.opacity = 1; section.el.style.pointerEvents = "all"; section.el.setAttribute("data-".concat(_this4.name, "-section-inview"), ""); } } else { if (section.inView || forced) { section.inView = false; section.el.style.opacity = 0; section.el.style.pointerEvents = "none"; section.el.removeAttribute("data-".concat(_this4.name, "-section-inview")); } _this4.transform(section.el, 0, 0); } }); if (this.getDirection) { this.addDirection(); } if (this.getSpeed) { this.addSpeed(); this.speedTs = Date.now(); } this.detectElements(); this.transformElements(); if (this.hasScrollbar) { var scrollBarTranslation = this.instance.scroll[this.directionAxis] / this.instance.limit[this.directionAxis] * this.scrollBarLimit[this.directionAxis]; if (this.direction === "horizontal") { this.transform(this.scrollbarThumb, scrollBarTranslation, 0); } else { this.transform(this.scrollbarThumb, 0, scrollBarTranslation); } } _get(_getPrototypeOf(_default4.prototype), "checkScroll", this).call(this); this.hasScrollTicking = false; } } }, { key: "resize", value: function resize() { this.windowHeight = window.innerHeight; this.windowWidth = window.innerWidth; this.checkContext(); this.windowMiddle = { x: this.windowWidth / 2, y: this.windowHeight / 2 }; this.update(); } }, { key: "updateDelta", value: function updateDelta(e) { var delta; var gestureDirection = this[this.context] && this[this.context].gestureDirection ? this[this.context].gestureDirection : this.gestureDirection; if (gestureDirection === "both") { delta = e.deltaX + e.deltaY; } else if (gestureDirection === "vertical") { delta = e.deltaY; } else if (gestureDirection === "horizontal") { delta = e.deltaX; } else { delta = e.deltaY; } this.instance.delta[this.directionAxis] -= delta * this.multiplier; if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0; if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis]; } }, { key: "updateScroll", value: function updateScroll(e) { if (this.isScrolling || this.isDraggingScrollbar) { this.instance.scroll[this.directionAxis] = lerp(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis], this.lerp); } else { if (this.instance.scroll[this.directionAxis] > this.instance.limit[this.directionAxis]) { this.setScroll(this.instance.scroll[this.directionAxis], this.instance.limit[this.directionAxis]); } else if (this.instance.scroll.y < 0) { this.setScroll(this.instance.scroll[this.directionAxis], 0); } else { this.setScroll(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis]); } } } }, { key: "addDirection", value: function addDirection() { if (this.instance.delta.y > this.instance.scroll.y) { if (this.instance.direction !== "down") { this.instance.direction = "down"; } } else if (this.instance.delta.y < this.instance.scroll.y) { if (this.instance.direction !== "up") { this.instance.direction = "up"; } } if (this.instance.delta.x > this.instance.scroll.x) { if (this.instance.direction !== "right") { this.instance.direction = "right"; } } else if (this.instance.delta.x < this.instance.scroll.x) { if (this.instance.direction !== "left") { this.instance.direction = "left"; } } } }, { key: "addSpeed", value: function addSpeed() { if (this.instance.delta[this.directionAxis] != this.instance.scroll[this.directionAxis]) { this.instance.speed = (this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]) / Math.max(1, Date.now() - this.speedTs); } else { this.instance.speed = 0; } } }, { key: "initScrollBar", value: function initScrollBar() { this.scrollbar = document.createElement("span"); this.scrollbarThumb = document.createElement("span"); this.scrollbar.classList.add("".concat(this.scrollbarClass)); this.scrollbarThumb.classList.add("".concat(this.scrollbarClass, "_thumb")); this.scrollbar.append(this.scrollbarThumb); if (this.scrollbarContainer) { this.scrollbarContainer.append(this.scrollbar); } else { document.body.append(this.scrollbar); } this.getScrollBar = this.getScrollBar.bind(this); this.releaseScrollBar = this.releaseScrollBar.bind(this); this.moveScrollBar = this.moveScrollBar.bind(this); this.scrollbarThumb.addEventListener("mousedown", this.getScrollBar); window.addEventListener("mouseup", this.releaseScrollBar); window.addEventListener("mousemove", this.moveScrollBar); this.hasScrollbar = false; if (this.direction == "horizontal") { if (this.instance.limit.x + this.windowWidth <= this.windowWidth) { return; } } else { if (this.instance.limit.y + this.windowHeight <= this.windowHeight) { return; } } this.hasScrollbar = true; this.scrollbarBCR = this.scrollbar.getBoundingClientRect(); this.scrollbarHeight = this.scrollbarBCR.height; this.scrollbarWidth = this.scrollbarBCR.width; if (this.direction === "horizontal") { this.scrollbarThumb.style.width = "".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), "px"); } else { this.scrollbarThumb.style.height = "".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), "px"); } this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect(); this.scrollBarLimit = { x: this.scrollbarWidth - this.scrollbarThumbBCR.width, y: this.scrollbarHeight - this.scrollbarThumbBCR.height }; } }, { key: "reinitScrollBar", value: function reinitScrollBar() { this.hasScrollbar = false; if (this.direction == "horizontal") { if (this.instance.limit.x + this.windowWidth <= this.windowWidth) { return; } } else { if (this.instance.limit.y + this.windowHeight <= this.windowHeight) { return; } } this.hasScrollbar = true; this.scrollbarBCR = this.scrollbar.getBoundingClientRect(); this.scrollbarHeight = this.scrollbarBCR.height; this.scrollbarWidth = this.scrollbarBCR.width; if (this.direction === "horizontal") { this.scrollbarThumb.style.width = "".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), "px"); } else { this.scrollbarThumb.style.height = "".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), "px"); } this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect(); this.scrollBarLimit = { x: this.scrollbarWidth - this.scrollbarThumbBCR.width, y: this.scrollbarHeight - this.scrollbarThumbBCR.height }; } }, { key: "destroyScrollBar", value: function destroyScrollBar() { this.scrollbarThumb.removeEventListener("mousedown", this.getScrollBar); window.removeEventListener("mouseup", this.releaseScrollBar); window.removeEventListener("mousemove", this.moveScrollBar); this.scrollbar.remove(); } }, { key: "getScrollBar", value: function getScrollBar(e) { this.isDraggingScrollbar = true; this.checkScroll(); this.html.classList.remove(this.scrollingClass); this.html.classList.add(this.draggingClass); } }, { key: "releaseScrollBar", value: function releaseScrollBar(e) { this.isDraggingScrollbar = false; if (this.isScrolling) { this.html.classList.add(this.scrollingClass); } this.html.classList.remove(this.draggingClass); } }, { key: "moveScrollBar", value: function moveScrollBar(e) { var _this5 = this; if (this.isDraggingScrollbar) { requestAnimationFrame(function() { var x = (e.clientX - _this5.scrollbarBCR.left) * 100 / _this5.scrollbarWidth * _this5.instance.limit.x / 100; var y = (e.clientY - _this5.scrollbarBCR.top) * 100 / _this5.scrollbarHeight * _this5.instance.limit.y / 100; if (y > 0 && y < _this5.instance.limit.y) { _this5.instance.delta.y = y; } if (x > 0 && x < _this5.instance.limit.x) { _this5.instance.delta.x = x; } }); } } }, { key: "addElements", value: function addElements() { var _this6 = this; this.els = {}; this.parallaxElements = {}; var els = this.el.querySelectorAll("[data-".concat(this.name, "]")); 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]; return section2; }).find(function(section2) { return targetParents.includes(section2.el); }); var cl = el.dataset[_this6.name + "Class"] || _this6["class"]; var id = typeof el.dataset[_this6.name + "Id"] === "string" ? el.dataset[_this6.name + "Id"] : "el" + index; var top; var left; var repeat = el.dataset[_this6.name + "Repeat"]; var call = el.dataset[_this6.name + "Call"]; var position = el.dataset[_this6.name + "Position"]; var delay = el.dataset[_this6.name + "Delay"]; var direction = el.dataset[_this6.name + "Direction"]; var sticky = typeof el.dataset[_this6.name + "Sticky"] === "string"; var speed = el.dataset[_this6.name + "Speed"] ? parseFloat(el.dataset[_this6.name + "Speed"]) / 10 : false; var offset = typeof el.dataset[_this6.name + "Offset"] === "string" ? el.dataset[_this6.name + "Offset"].split(",") : _this6.offset; var target = el.dataset[_this6.name + "Target"]; var targetEl; if (target !== void 0) { targetEl = document.querySelector("".concat(target)); } else { targetEl = el; } var targetElBCR = targetEl.getBoundingClientRect(); if (section === null) { top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y; left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x; } else { if (!section.inView) { top = targetElBCR.top - getTranslate(section.el).y - getTranslate(targetEl).y; left = targetElBCR.left - getTranslate(section.el).x - getTranslate(targetEl).x; } else { top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y; left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x; } } var bottom = top + targetEl.offsetHeight; var right = left + targetEl.offsetWidth; var middle = { x: (right - left) / 2 + left, y: (bottom - top) / 2 + top }; if (sticky) { var elBCR = el.getBoundingClientRect(); var elTop = elBCR.top; var elLeft = elBCR.left; var elDistance = { x: elLeft - left, y: elTop - top }; top += window.innerHeight; left += window.innerWidth; bottom = elTop + targetEl.offsetHeight - el.offsetHeight - elDistance[_this6.directionAxis]; right = elLeft + targetEl.offsetWidth - el.offsetWidth - elDistance[_this6.directionAxis]; middle = { x: (right - left) / 2 + left, y: (bottom - top) / 2 + top }; } if (repeat == "false") { repeat = false; } else if (repeat != void 0) { repeat = true; } else { repeat = _this6.repeat; } var relativeOffset = [0, 0]; if (offset) { if (_this6.direction === "horizontal") { for (var i = 0; i < offset.length; i++) { if (typeof offset[i] == "string") { if (offset[i].includes("%")) { relativeOffset[i] = parseInt(offset[i].replace("%", "") * _this6.windowWidth / 100); } else { relativeOffset[i] = parseInt(offset[i]); } } else { relativeOffset[i] = offset[i]; } } left = left + relativeOffset[0]; right = right - relativeOffset[1]; } else { for (var i = 0; i < offset.length; i++) { if (typeof offset[i] == "string") { if (offset[i].includes("%")) { relativeOffset[i] = parseInt(offset[i].replace("%", "") * _this6.windowHeight / 100); } else { relativeOffset[i] = parseInt(offset[i]); } } else { relativeOffset[i] = offset[i]; } } top = top + relativeOffset[0]; bottom = bottom - relativeOffset[1]; } } var mappedEl = { el, id, "class": cl, section, top, middle, bottom, left, right, offset, progress: 0, repeat, inView: false, call, speed, delay, position, target: targetEl, direction, sticky }; _this6.els[id] = mappedEl; if (el.classList.contains(cl)) { _this6.setInView(_this6.els[id], id); } if (speed !== false || sticky) { _this6.parallaxElements[id] = mappedEl; } }); } }, { key: "addSections", value: function addSections() { var _this7 = this; this.sections = {}; var sections = this.el.querySelectorAll("[data-".concat(this.name, "-section]")); if (sections.length === 0) { sections = [this.el]; } sections.forEach(function(section, index) { var id = typeof section.dataset[_this7.name + "Id"] === "string" ? section.dataset[_this7.name + "Id"] : "section" + index; var sectionBCR = section.getBoundingClientRect(); var offset = { x: sectionBCR.left - window.innerWidth * 1.5 - getTranslate(section).x, y: sectionBCR.top - window.innerHeight * 1.5 - getTranslate(section).y }; var limit = { x: offset.x + sectionBCR.width + window.innerWidth * 2, y: offset.y + sectionBCR.height + window.innerHeight * 2 }; var persistent = typeof section.dataset[_this7.name + "Persistent"] === "string"; section.setAttribute("data-scroll-section-id", id); var mappedSection = { el: section, offset, limit, inView: false, persistent, id }; _this7.sections[id] = mappedSection; }); } }, { key: "transform", value: function transform(element, x, y, delay) { var transform2; if (!delay) { transform2 = "matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,".concat(x, ",").concat(y, ",0,1)"); } else { var start = getTranslate(element); var lerpX = lerp(start.x, x, delay); var lerpY = lerp(start.y, y, delay); transform2 = "matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,".concat(lerpX, ",").concat(lerpY, ",0,1)"); } element.style.webkitTransform = transform2; element.style.msTransform = transform2; element.style.transform = transform2; } }, { key: "transformElements", value: function transformElements(isForced) { var _this8 = this; var setAllElements = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; var scrollRight = this.instance.scroll.x + this.windowWidth; var scrollBottom = this.instance.scroll.y + this.windowHeight; var scrollMiddle = { x: this.instance.scroll.x + this.windowMiddle.x, 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 transformDistance = false; if (isForced) { transformDistance = 0; } if (current.inView || setAllElements) { switch (current.position) { case "top": transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed; break; case "elementTop": transformDistance = (scrollBottom - current.top) * -current.speed; break; case "bottom": transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollBottom + _this8.windowHeight) * current.speed; break; case "left": transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed; break; case "elementLeft": transformDistance = (scrollRight - current.left) * -current.speed; break; case "right": transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollRight + _this8.windowHeight) * current.speed; break; default: transformDistance = (scrollMiddle[_this8.directionAxis] - current.middle[_this8.directionAxis]) * -current.speed; break; } } if (current.sticky) { if (current.inView) { if (_this8.direction === "horizontal") { transformDistance = _this8.instance.scroll.x - current.left + window.innerWidth; } else { transformDistance = _this8.instance.scroll.y - current.top + window.innerHeight; } } else { if (_this8.direction === "horizontal") { if (_this8.instance.scroll.x < current.left - window.innerWidth && _this8.instance.scroll.x < current.left - window.innerWidth / 2) { transformDistance = 0; } else if (_this8.instance.scroll.x > current.right && _this8.instance.scroll.x > current.right + 100) { transformDistance = current.right - current.left + window.innerWidth; } else { transformDistance = false; } } else { if (_this8.instance.scroll.y < current.top - window.innerHeight && _this8.instance.scroll.y < current.top - window.innerHeight / 2) { transformDistance = 0; } else if (_this8.instance.scroll.y > current.bottom && _this8.instance.scroll.y > current.bottom + 100) { transformDistance = current.bottom - current.top + window.innerHeight; } else { transformDistance = false; } } } } if (transformDistance !== false) { if (current.direction === "horizontal" || _this8.direction === "horizontal" && current.direction !== "vertical") { _this8.transform(current.el, transformDistance, 0, isForced ? false : current.delay); } else { _this8.transform(current.el, 0, transformDistance, isForced ? false : current.delay); } } }); } }, { key: "scrollTo", value: function scrollTo(target) { var _this9 = this; var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; var offset = parseInt(options.offset) || 0; var duration = !isNaN(parseInt(options.duration)) ? parseInt(options.duration) : 1e3; var easing = options.easing || [0.25, 0, 0.35, 1]; var disableLerp = options.disableLerp ? true : false; var callback = options.callback ? options.callback : false; easing = src$1.apply(void 0, _toConsumableArray2(easing)); if (typeof target === "string") { if (target === "top") { target = 0; } else if (target === "bottom") { target = this.instance.limit.y; } else if (target === "left") { target = 0; } else if (target === "right") { target = this.instance.limit.x; } else { target = document.querySelector(target); if (!target) { return; } } } else if (typeof target === "number") { target = parseInt(target); } else if (target && target.tagName) ; else { console.warn("`target` parameter is not valid"); return; } if (typeof target !== "number") { var targetInScope = getParents(target).includes(this.el); if (!targetInScope) { return; } var targetBCR = target.getBoundingClientRect(); var offsetTop = targetBCR.top; var offsetLeft = targetBCR.left; 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]; return section; }).find(function(section) { return section.el == candidate; }); }); var parentSectionOffset = 0; if (parentSection) { parentSectionOffset = getTranslate(parentSection)[this.directionAxis]; } else { parentSectionOffset = -this.instance.scroll[this.directionAxis]; } if (this.direction === "horizontal") { offset = offsetLeft + offset - parentSectionOffset; } else { offset = offsetTop + offset - parentSectionOffset; } } else { offset = target + offset; } var scrollStart = parseFloat(this.instance.delta[this.directionAxis]); var scrollTarget = Math.max(0, Math.min(offset, this.instance.limit[this.directionAxis])); var scrollDiff = scrollTarget - scrollStart; var render = function render2(p) { if (disableLerp) { if (_this9.direction === "horizontal") { _this9.setScroll(scrollStart + scrollDiff * p, _this9.instance.delta.y); } else { _this9.setScroll(_this9.instance.delta.x, scrollStart + scrollDiff * p); } } else { _this9.instance.delta[_this9.directionAxis] = scrollStart + scrollDiff * p; } }; this.animatingScroll = true; this.stopScrolling(); this.startScrolling(); var start = Date.now(); var loop = function loop2() { var p = (Date.now() - start) / duration; if (p > 1) { render(1); _this9.animatingScroll = false; if (duration == 0) _this9.update(); if (callback) callback(); } else { _this9.scrollToRaf = requestAnimationFrame(loop2); render(easing(p)); } }; loop(); } }, { key: "update", value: function update() { this.setScrollLimit(); this.addSections(); this.addElements(); this.detectElements(); this.updateScroll(); this.transformElements(true); this.reinitScrollBar(); this.checkScroll(true); } }, { key: "startScroll", value: function startScroll() { this.stop = false; } }, { key: "stopScroll", value: function stopScroll() { this.stop = true; } }, { key: "setScroll", value: function setScroll(x, y) { this.instance = _objectSpread2(_objectSpread2({}, this.instance), {}, { scroll: { x, y }, delta: { x, y }, speed: 0 }); } }, { key: "destroy", value: function destroy() { _get(_getPrototypeOf(_default4.prototype), "destroy", this).call(this); this.stopScrolling(); this.html.classList.remove(this.smoothClass); this.vs.destroy(); this.destroyScrollBar(); window.removeEventListener("keydown", this.checkKey, false); } }]); return _default4; }(_default3); var Smooth = /* @__PURE__ */ function() { function Smooth2() { var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; _classCallCheck3(this, Smooth2); this.options = options; Object.assign(this, defaults, options); this.smartphone = defaults.smartphone; if (options.smartphone) Object.assign(this.smartphone, options.smartphone); this.tablet = defaults.tablet; if (options.tablet) Object.assign(this.tablet, options.tablet); if (!this.smooth && this.direction == "horizontal") console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible"); if (!this.tablet.smooth && this.tablet.direction == "horizontal") console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible (tablet)"); if (!this.smartphone.smooth && this.smartphone.direction == "horizontal") console.warn("\u{1F6A8} `smooth:false` & `horizontal` direction are not yet compatible (smartphone)"); this.init(); } _createClass3(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; this.options.isTablet = this.options.isMobile && window.innerWidth >= this.tablet.breakpoint; if (this.smooth && !this.options.isMobile || this.tablet.smooth && this.options.isTablet || this.smartphone.smooth && this.options.isMobile && !this.options.isTablet) { this.scroll = new _default$2(this.options); } else { this.scroll = new _default$12(this.options); } this.scroll.init(); if (window.location.hash) { var id = window.location.hash.slice(1, window.location.hash.length); var target = document.getElementById(id); if (target) this.scroll.scrollTo(target); } } }, { key: "update", value: function update() { this.scroll.update(); } }, { key: "start", value: function start() { this.scroll.startScroll(); } }, { key: "stop", value: function stop() { this.scroll.stopScroll(); } }, { key: "scrollTo", value: function scrollTo(target, options) { this.scroll.scrollTo(target, options); } }, { key: "setScroll", value: function setScroll(x, y) { this.scroll.setScroll(x, y); } }, { key: "on", value: function on(event, func) { this.scroll.setEvents(event, func); } }, { key: "off", value: function off(event, func) { this.scroll.unsetEvents(event, func); } }, { key: "destroy", value: function destroy() { this.scroll.destroy(); } }]); return Smooth2; }(); var locomotive_scroll_esm_default = Smooth; // assets/scripts/modules/Scroll.js var Scroll_default = class extends _default { constructor(m) { super(m); } init() { this.scroll = new locomotive_scroll_esm_default({ el: this.el, smooth: true }); this.scroll.on("call", (func, way, obj, id) => { this.call(func[0], { way, obj }, func[1], func[2]); }); this.scroll.on("scroll", (args) => { }); } lazyLoad(args) { lazyLoadImage(args.obj.el, null, () => { }); } destroy() { this.scroll.destroy(); } }; // assets/scripts/globals.js var import_svg4everybody = __toESM(require_svg4everybody(), 1); function globals_default() { (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/app.js var app = new main_esm_default({ modules: modules_exports }); window.onload = (event) => { const $style = document.getElementById("main-css"); if ($style) { if ($style.isLoaded) { init(); } else { $style.addEventListener("load", (event2) => { init(); }); } } else { console.warn('The "main-css" stylesheet not found'); } }; function init() { globals_default(); app.init(app); html.classList.add("is-loaded"); html.classList.add("is-ready"); html.classList.remove("is-loading"); } })(); /* object-assign (c) Sindre Sorhus @license MIT */ /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */ //# sourceMappingURL=app.js.map