1
0
mirror of https://github.com/locomotivemtl/locomotive-boilerplate.git synced 2026-01-15 00:55:08 +08:00
Files
locomotive-boilerplate/www/assets/scripts/app.js

3703 lines
130 KiB
JavaScript

(() => {
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 = '<use xlink:href="' + xhref + '"></use>';
} else {
var href = svg.getAttribute("href");
if (href)
svg.parentNode.innerHTML = '<use href="' + href + '"></use>';
}
});
}
}
}
}, {
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